From ed8121fa9d8c8f0afd7ff533496653505e6a0564 Mon Sep 17 00:00:00 2001 From: Johannes Date: Thu, 12 Mar 2026 19:52:51 +0100 Subject: [PATCH] Format all minified JS/CSS files and add missing assets for service worker - Beautified all minified vendor libs and game bundle with prettier - Added sw.js, zlib-1.2.11.wasm, and missing img/ assets so the service worker can register and cache correctly --- css/bootstrap-select-1.13.18.min.css | 467 +- css/bootstrap-table-1.23.4.min.css | 448 +- css/fontawesome-all-5.13.1.min.css | 4613 ++++++- game.v2025-07-31.bundle.js | 10394 +++++++++++++++- img/logo_192.png | Bin 0 -> 7425 bytes img/logo_512.jpg | Bin 0 -> 34648 bytes img/logo_512.png | Bin 0 -> 12996 bytes img/logo_complete.jpg | Bin 0 -> 3181 bytes img/logo_gamemap.jpg | Bin 0 -> 2975 bytes img/logo_map.jpg | Bin 0 -> 3867 bytes img/logo_mono.png | Bin 0 -> 16314 bytes img/logo_save.jpg | Bin 0 -> 3795 bytes img/logo_task.jpg | Bin 0 -> 3764 bytes img/logo_unix.png | Bin 0 -> 26271 bytes img/roulette.png | Bin 0 -> 243868 bytes img/unknown.jpg | Bin 0 -> 11868 bytes libs/bootstrap-4.6.2.bundle.min.js | 4271 ++++++- libs/bootstrap-select-1.13.18.min.js | 2685 ++++- libs/bootstrap-table-1.23.4.min.js | 10073 +++++++++++++++- libs/jquery-3.7.1.min.js | 5429 ++++++++- libs/kjua-0.9.0.min.js | 2166 +++- libs/moment-2.30.1.min.js | 15840 ++++++++++++++++++++++++- libs/privatebin/zlib-1.2.11.wasm | Bin 0 -> 61388 bytes libs/shepherd-8.0.1.min.js | 3293 ++++- sw.js | 133 + 25 files changed, 59690 insertions(+), 122 deletions(-) create mode 100644 img/logo_192.png create mode 100644 img/logo_512.jpg create mode 100644 img/logo_512.png create mode 100644 img/logo_complete.jpg create mode 100644 img/logo_gamemap.jpg create mode 100644 img/logo_map.jpg create mode 100644 img/logo_mono.png create mode 100644 img/logo_save.jpg create mode 100644 img/logo_task.jpg create mode 100644 img/logo_unix.png create mode 100644 img/roulette.png create mode 100644 img/unknown.jpg create mode 100644 libs/privatebin/zlib-1.2.11.wasm create mode 100644 sw.js diff --git a/css/bootstrap-select-1.13.18.min.css b/css/bootstrap-select-1.13.18.min.css index 8d0f049..63634f6 100644 --- a/css/bootstrap-select-1.13.18.min.css +++ b/css/bootstrap-select-1.13.18.min.css @@ -3,4 +3,469 @@ * * Copyright 2012-2020 SnapAppointments, LLC * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE) - */@-webkit-keyframes bs-notify-fadeOut{0%{opacity:.9}100%{opacity:0}}@-o-keyframes bs-notify-fadeOut{0%{opacity:.9}100%{opacity:0}}@keyframes bs-notify-fadeOut{0%{opacity:.9}100%{opacity:0}}.bootstrap-select>select.bs-select-hidden,select.bs-select-hidden,select.selectpicker{display:none!important}.bootstrap-select{width:220px\0;vertical-align:middle}.bootstrap-select>.dropdown-toggle{position:relative;width:100%;text-align:right;white-space:nowrap;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.bootstrap-select>.dropdown-toggle:after{margin-top:-1px}.bootstrap-select>.dropdown-toggle.bs-placeholder,.bootstrap-select>.dropdown-toggle.bs-placeholder:active,.bootstrap-select>.dropdown-toggle.bs-placeholder:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder:hover{color:#999}.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success:hover{color:rgba(255,255,255,.5)}.bootstrap-select>select{position:absolute!important;bottom:0;left:50%;display:block!important;width:.5px!important;height:100%!important;padding:0!important;opacity:0!important;border:none;z-index:0!important}.bootstrap-select>select.mobile-device{top:0;left:0;display:block!important;width:100%!important;z-index:2!important}.bootstrap-select.is-invalid .dropdown-toggle,.error .bootstrap-select .dropdown-toggle,.has-error .bootstrap-select .dropdown-toggle,.was-validated .bootstrap-select select:invalid+.dropdown-toggle{border-color:#b94a48}.bootstrap-select.is-valid .dropdown-toggle,.was-validated .bootstrap-select select:valid+.dropdown-toggle{border-color:#28a745}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select .dropdown-toggle:focus,.bootstrap-select>select.mobile-device:focus+.dropdown-toggle{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none;height:auto}:not(.input-group)>.bootstrap-select.form-control:not([class*=col-]){width:100%}.bootstrap-select.form-control.input-group-btn{float:none;z-index:auto}.form-inline .bootstrap-select,.form-inline .bootstrap-select.form-control:not([class*=col-]){width:auto}.bootstrap-select:not(.input-group-btn),.bootstrap-select[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.dropdown-menu-right,.bootstrap-select[class*=col-].dropdown-menu-right,.row .bootstrap-select[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select,.form-horizontal .bootstrap-select,.form-inline .bootstrap-select{margin-bottom:0}.form-group-lg .bootstrap-select.form-control,.form-group-sm .bootstrap-select.form-control{padding:0}.form-group-lg .bootstrap-select.form-control .dropdown-toggle,.form-group-sm .bootstrap-select.form-control .dropdown-toggle{height:100%;font-size:inherit;line-height:inherit;border-radius:inherit}.bootstrap-select.form-control-lg .dropdown-toggle,.bootstrap-select.form-control-sm .dropdown-toggle{font-size:inherit;line-height:inherit;border-radius:inherit}.bootstrap-select.form-control-sm .dropdown-toggle{padding:.25rem .5rem}.bootstrap-select.form-control-lg .dropdown-toggle{padding:.5rem 1rem}.form-inline .bootstrap-select .form-control{width:100%}.bootstrap-select.disabled,.bootstrap-select>.disabled{cursor:not-allowed}.bootstrap-select.disabled:focus,.bootstrap-select>.disabled:focus{outline:0!important}.bootstrap-select.bs-container{position:absolute;top:0;left:0;height:0!important;padding:0!important}.bootstrap-select.bs-container .dropdown-menu{z-index:1060}.bootstrap-select .dropdown-toggle .filter-option{position:static;top:0;left:0;float:left;height:100%;width:100%;text-align:left;overflow:hidden;-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.bs3.bootstrap-select .dropdown-toggle .filter-option{padding-right:inherit}.input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option{position:absolute;padding-top:inherit;padding-bottom:inherit;padding-left:inherit;float:none}.input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option .filter-option-inner{padding-right:inherit}.bootstrap-select .dropdown-toggle .filter-option-inner-inner{overflow:hidden}.bootstrap-select .dropdown-toggle .filter-expand{width:0!important;float:left;opacity:0!important;overflow:hidden}.bootstrap-select .dropdown-toggle .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.input-group .bootstrap-select.form-control .dropdown-toggle{border-radius:inherit}.bootstrap-select[class*=col-] .dropdown-toggle{width:100%}.bootstrap-select .dropdown-menu{min-width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select .dropdown-menu>.inner:focus{outline:0!important}.bootstrap-select .dropdown-menu.inner{position:static;float:none;border:0;padding:0;margin:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-select .dropdown-menu li{position:relative}.bootstrap-select .dropdown-menu li.active small{color:rgba(255,255,255,.5)!important}.bootstrap-select .dropdown-menu li.disabled a{cursor:not-allowed}.bootstrap-select .dropdown-menu li a{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bootstrap-select .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select .dropdown-menu li a span.check-mark{display:none}.bootstrap-select .dropdown-menu li a span.text{display:inline-block}.bootstrap-select .dropdown-menu li small{padding-left:.5em}.bootstrap-select .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select .dropdown-menu .notify.fadeOut{-webkit-animation:.3s linear 750ms forwards bs-notify-fadeOut;-o-animation:.3s linear 750ms forwards bs-notify-fadeOut;animation:.3s linear 750ms forwards bs-notify-fadeOut}.bootstrap-select .no-results{padding:3px;background:#f5f5f5;margin:0 5px;white-space:nowrap}.bootstrap-select.fit-width .dropdown-toggle .filter-option{position:static;display:inline;padding:0}.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner,.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner-inner{display:inline}.bootstrap-select.fit-width .dropdown-toggle .bs-caret:before{content:'\00a0'}.bootstrap-select.fit-width .dropdown-toggle .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.show-tick .dropdown-menu .selected span.check-mark{position:absolute;display:inline-block;right:15px;top:5px}.bootstrap-select.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select .bs-ok-default:after{content:'';display:block;width:.5em;height:1em;border-style:solid;border-width:0 .26em .26em 0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle,.bootstrap-select.show-menu-arrow.show>.dropdown-toggle{z-index:1061}.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:before{bottom:auto;top:-4px;border-top:7px solid rgba(204,204,204,.2);border-bottom:0}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:after{bottom:auto;top:-4px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle .filter-option:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle .filter-option:before,.bootstrap-select.show-menu-arrow.show>.dropdown-toggle .filter-option:after,.bootstrap-select.show-menu-arrow.show>.dropdown-toggle .filter-option:before{display:block}.bs-actionsbox,.bs-donebutton,.bs-searchbox{padding:4px 8px}.bs-actionsbox{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-donebutton{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-donebutton .btn-group button{width:100%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox .form-control{margin-bottom:0;width:100%;float:none} \ No newline at end of file + */ +@-webkit-keyframes bs-notify-fadeOut { + 0% { + opacity: 0.9; + } + 100% { + opacity: 0; + } +} +@-o-keyframes bs-notify-fadeOut { + 0% { + opacity: 0.9; + } + 100% { + opacity: 0; + } +} +@keyframes bs-notify-fadeOut { + 0% { + opacity: 0.9; + } + 100% { + opacity: 0; + } +} +.bootstrap-select > select.bs-select-hidden, +select.bs-select-hidden, +select.selectpicker { + display: none !important; +} +.bootstrap-select { + width: 220px\0; + vertical-align: middle; +} +.bootstrap-select > .dropdown-toggle { + position: relative; + width: 100%; + text-align: right; + white-space: nowrap; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; +} +.bootstrap-select > .dropdown-toggle:after { + margin-top: -1px; +} +.bootstrap-select > .dropdown-toggle.bs-placeholder, +.bootstrap-select > .dropdown-toggle.bs-placeholder:active, +.bootstrap-select > .dropdown-toggle.bs-placeholder:focus, +.bootstrap-select > .dropdown-toggle.bs-placeholder:hover { + color: #999; +} +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger:active, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger:focus, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger:hover, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark:active, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark:focus, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark:hover, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info:active, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info:focus, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info:hover, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary:active, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary:focus, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary:hover, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary:active, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary:focus, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary:hover, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success:active, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success:focus, +.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success:hover { + color: rgba(255, 255, 255, 0.5); +} +.bootstrap-select > select { + position: absolute !important; + bottom: 0; + left: 50%; + display: block !important; + width: 0.5px !important; + height: 100% !important; + padding: 0 !important; + opacity: 0 !important; + border: none; + z-index: 0 !important; +} +.bootstrap-select > select.mobile-device { + top: 0; + left: 0; + display: block !important; + width: 100% !important; + z-index: 2 !important; +} +.bootstrap-select.is-invalid .dropdown-toggle, +.error .bootstrap-select .dropdown-toggle, +.has-error .bootstrap-select .dropdown-toggle, +.was-validated .bootstrap-select select:invalid + .dropdown-toggle { + border-color: #b94a48; +} +.bootstrap-select.is-valid .dropdown-toggle, +.was-validated .bootstrap-select select:valid + .dropdown-toggle { + border-color: #28a745; +} +.bootstrap-select.fit-width { + width: auto !important; +} +.bootstrap-select:not([class*="col-"]):not([class*="form-control"]):not( + .input-group-btn + ) { + width: 220px; +} +.bootstrap-select .dropdown-toggle:focus, +.bootstrap-select > select.mobile-device:focus + .dropdown-toggle { + outline: thin dotted #333 !important; + outline: 5px auto -webkit-focus-ring-color !important; + outline-offset: -2px; +} +.bootstrap-select.form-control { + margin-bottom: 0; + padding: 0; + border: none; + height: auto; +} +:not(.input-group) > .bootstrap-select.form-control:not([class*="col-"]) { + width: 100%; +} +.bootstrap-select.form-control.input-group-btn { + float: none; + z-index: auto; +} +.form-inline .bootstrap-select, +.form-inline .bootstrap-select.form-control:not([class*="col-"]) { + width: auto; +} +.bootstrap-select:not(.input-group-btn), +.bootstrap-select[class*="col-"] { + float: none; + display: inline-block; + margin-left: 0; +} +.bootstrap-select.dropdown-menu-right, +.bootstrap-select[class*="col-"].dropdown-menu-right, +.row .bootstrap-select[class*="col-"].dropdown-menu-right { + float: right; +} +.form-group .bootstrap-select, +.form-horizontal .bootstrap-select, +.form-inline .bootstrap-select { + margin-bottom: 0; +} +.form-group-lg .bootstrap-select.form-control, +.form-group-sm .bootstrap-select.form-control { + padding: 0; +} +.form-group-lg .bootstrap-select.form-control .dropdown-toggle, +.form-group-sm .bootstrap-select.form-control .dropdown-toggle { + height: 100%; + font-size: inherit; + line-height: inherit; + border-radius: inherit; +} +.bootstrap-select.form-control-lg .dropdown-toggle, +.bootstrap-select.form-control-sm .dropdown-toggle { + font-size: inherit; + line-height: inherit; + border-radius: inherit; +} +.bootstrap-select.form-control-sm .dropdown-toggle { + padding: 0.25rem 0.5rem; +} +.bootstrap-select.form-control-lg .dropdown-toggle { + padding: 0.5rem 1rem; +} +.form-inline .bootstrap-select .form-control { + width: 100%; +} +.bootstrap-select.disabled, +.bootstrap-select > .disabled { + cursor: not-allowed; +} +.bootstrap-select.disabled:focus, +.bootstrap-select > .disabled:focus { + outline: 0 !important; +} +.bootstrap-select.bs-container { + position: absolute; + top: 0; + left: 0; + height: 0 !important; + padding: 0 !important; +} +.bootstrap-select.bs-container .dropdown-menu { + z-index: 1060; +} +.bootstrap-select .dropdown-toggle .filter-option { + position: static; + top: 0; + left: 0; + float: left; + height: 100%; + width: 100%; + text-align: left; + overflow: hidden; + -webkit-box-flex: 0; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; +} +.bs3.bootstrap-select .dropdown-toggle .filter-option { + padding-right: inherit; +} +.input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option { + position: absolute; + padding-top: inherit; + padding-bottom: inherit; + padding-left: inherit; + float: none; +} +.input-group + .bs3-has-addon.bootstrap-select + .dropdown-toggle + .filter-option + .filter-option-inner { + padding-right: inherit; +} +.bootstrap-select .dropdown-toggle .filter-option-inner-inner { + overflow: hidden; +} +.bootstrap-select .dropdown-toggle .filter-expand { + width: 0 !important; + float: left; + opacity: 0 !important; + overflow: hidden; +} +.bootstrap-select .dropdown-toggle .caret { + position: absolute; + top: 50%; + right: 12px; + margin-top: -2px; + vertical-align: middle; +} +.input-group .bootstrap-select.form-control .dropdown-toggle { + border-radius: inherit; +} +.bootstrap-select[class*="col-"] .dropdown-toggle { + width: 100%; +} +.bootstrap-select .dropdown-menu { + min-width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.bootstrap-select .dropdown-menu > .inner:focus { + outline: 0 !important; +} +.bootstrap-select .dropdown-menu.inner { + position: static; + float: none; + border: 0; + padding: 0; + margin: 0; + border-radius: 0; + -webkit-box-shadow: none; + box-shadow: none; +} +.bootstrap-select .dropdown-menu li { + position: relative; +} +.bootstrap-select .dropdown-menu li.active small { + color: rgba(255, 255, 255, 0.5) !important; +} +.bootstrap-select .dropdown-menu li.disabled a { + cursor: not-allowed; +} +.bootstrap-select .dropdown-menu li a { + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.bootstrap-select .dropdown-menu li a.opt { + position: relative; + padding-left: 2.25em; +} +.bootstrap-select .dropdown-menu li a span.check-mark { + display: none; +} +.bootstrap-select .dropdown-menu li a span.text { + display: inline-block; +} +.bootstrap-select .dropdown-menu li small { + padding-left: 0.5em; +} +.bootstrap-select .dropdown-menu .notify { + position: absolute; + bottom: 5px; + width: 96%; + margin: 0 2%; + min-height: 26px; + padding: 3px 5px; + background: #f5f5f5; + border: 1px solid #e3e3e3; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + pointer-events: none; + opacity: 0.9; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.bootstrap-select .dropdown-menu .notify.fadeOut { + -webkit-animation: 0.3s linear 750ms forwards bs-notify-fadeOut; + -o-animation: 0.3s linear 750ms forwards bs-notify-fadeOut; + animation: 0.3s linear 750ms forwards bs-notify-fadeOut; +} +.bootstrap-select .no-results { + padding: 3px; + background: #f5f5f5; + margin: 0 5px; + white-space: nowrap; +} +.bootstrap-select.fit-width .dropdown-toggle .filter-option { + position: static; + display: inline; + padding: 0; +} +.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner, +.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner-inner { + display: inline; +} +.bootstrap-select.fit-width .dropdown-toggle .bs-caret:before { + content: "\00a0"; +} +.bootstrap-select.fit-width .dropdown-toggle .caret { + position: static; + top: auto; + margin-top: -1px; +} +.bootstrap-select.show-tick .dropdown-menu .selected span.check-mark { + position: absolute; + display: inline-block; + right: 15px; + top: 5px; +} +.bootstrap-select.show-tick .dropdown-menu li a span.text { + margin-right: 34px; +} +.bootstrap-select .bs-ok-default:after { + content: ""; + display: block; + width: 0.5em; + height: 1em; + border-style: solid; + border-width: 0 0.26em 0.26em 0; + -webkit-transform-style: preserve-3d; + transform-style: preserve-3d; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} +.bootstrap-select.show-menu-arrow.open > .dropdown-toggle, +.bootstrap-select.show-menu-arrow.show > .dropdown-toggle { + z-index: 1061; +} +.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:before { + content: ""; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid rgba(204, 204, 204, 0.2); + position: absolute; + bottom: -4px; + left: 9px; + display: none; +} +.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:after { + content: ""; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + position: absolute; + bottom: -4px; + left: 10px; + display: none; +} +.bootstrap-select.show-menu-arrow.dropup + .dropdown-toggle + .filter-option:before { + bottom: auto; + top: -4px; + border-top: 7px solid rgba(204, 204, 204, 0.2); + border-bottom: 0; +} +.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:after { + bottom: auto; + top: -4px; + border-top: 6px solid #fff; + border-bottom: 0; +} +.bootstrap-select.show-menu-arrow.pull-right + .dropdown-toggle + .filter-option:before { + right: 12px; + left: auto; +} +.bootstrap-select.show-menu-arrow.pull-right + .dropdown-toggle + .filter-option:after { + right: 13px; + left: auto; +} +.bootstrap-select.show-menu-arrow.open > .dropdown-toggle .filter-option:after, +.bootstrap-select.show-menu-arrow.open > .dropdown-toggle .filter-option:before, +.bootstrap-select.show-menu-arrow.show > .dropdown-toggle .filter-option:after, +.bootstrap-select.show-menu-arrow.show + > .dropdown-toggle + .filter-option:before { + display: block; +} +.bs-actionsbox, +.bs-donebutton, +.bs-searchbox { + padding: 4px 8px; +} +.bs-actionsbox { + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.bs-actionsbox .btn-group button { + width: 50%; +} +.bs-donebutton { + float: left; + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.bs-donebutton .btn-group button { + width: 100%; +} +.bs-searchbox + .bs-actionsbox { + padding: 0 8px 4px; +} +.bs-searchbox .form-control { + margin-bottom: 0; + width: 100%; + float: none; +} diff --git a/css/bootstrap-table-1.23.4.min.css b/css/bootstrap-table-1.23.4.min.css index 26a95d3..15c8bce 100644 --- a/css/bootstrap-table-1.23.4.min.css +++ b/css/bootstrap-table-1.23.4.min.css @@ -7,4 +7,450 @@ * @license MIT */ -@charset "UTF-8";.bootstrap-table .fixed-table-toolbar::after{content:"";display:block;clear:both}.bootstrap-table .fixed-table-toolbar .bs-bars,.bootstrap-table .fixed-table-toolbar .columns,.bootstrap-table .fixed-table-toolbar .search{position:relative;margin-top:10px;margin-bottom:10px}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group{display:inline-block;margin-left:-1px!important}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group>.btn{border-radius:0}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group:first-child>.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group:last-child>.btn{border-top-right-radius:4px;border-bottom-right-radius:4px}.bootstrap-table .fixed-table-toolbar .columns .dropdown-menu{text-align:left;max-height:300px;overflow:auto;-ms-overflow-style:scrollbar;z-index:1001}.bootstrap-table .fixed-table-toolbar .columns label{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.4286}.bootstrap-table .fixed-table-toolbar .columns-left{margin-right:5px}.bootstrap-table .fixed-table-toolbar .columns-right{margin-left:5px}.bootstrap-table .fixed-table-toolbar .pull-right .dropdown-menu{right:0;left:auto}.bootstrap-table .fixed-table-container{position:relative;clear:both}.bootstrap-table .fixed-table-container .table{width:100%;margin-bottom:0!important}.bootstrap-table .fixed-table-container .table td,.bootstrap-table .fixed-table-container .table th{vertical-align:middle;box-sizing:border-box}.bootstrap-table .fixed-table-container .table tfoot th,.bootstrap-table .fixed-table-container .table thead th{vertical-align:bottom;padding:0;margin:0}.bootstrap-table .fixed-table-container .table tfoot th:focus,.bootstrap-table .fixed-table-container .table thead th:focus{outline:0 solid transparent}.bootstrap-table .fixed-table-container .table tfoot th.detail,.bootstrap-table .fixed-table-container .table thead th.detail{width:30px}.bootstrap-table .fixed-table-container .table tfoot th .th-inner,.bootstrap-table .fixed-table-container .table thead th .th-inner{padding:.75rem;vertical-align:bottom;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bootstrap-table .fixed-table-container .table tfoot th .sortable,.bootstrap-table .fixed-table-container .table thead th .sortable{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px!important}.bootstrap-table .fixed-table-container .table tfoot th .sortable.sortable-center,.bootstrap-table .fixed-table-container .table thead th .sortable.sortable-center{padding-left:20px!important;padding-right:20px!important}.bootstrap-table .fixed-table-container .table tfoot th .both,.bootstrap-table .fixed-table-container .table thead th .both{background-image:url('data:image/svg+xml;utf8,');background-size:16px 16px;background-position:center right 2px}.bootstrap-table .fixed-table-container .table tfoot th .asc,.bootstrap-table .fixed-table-container .table thead th .asc{background-image:url('data:image/svg+xml;utf8,')}.bootstrap-table .fixed-table-container .table tfoot th .desc,.bootstrap-table .fixed-table-container .table thead th .desc{background-image:url('data:image/svg+xml;utf8,')}.bootstrap-table .fixed-table-container .table tbody tr.selected td{background-color:rgba(0,0,0,.075)}.bootstrap-table .fixed-table-container .table tbody tr.no-records-found td{text-align:center}.bootstrap-table .fixed-table-container .table tbody tr .card-view{display:flex}.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-title{font-weight:700;display:inline-block;min-width:30%;width:auto!important;text-align:left!important}.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-value{width:100%!important;text-align:left!important}.bootstrap-table .fixed-table-container .table .bs-checkbox{text-align:center}.bootstrap-table .fixed-table-container .table .bs-checkbox label{margin-bottom:0}.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type=checkbox],.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type=radio]{margin:0 auto!important}.bootstrap-table .fixed-table-container .table.table-sm .th-inner{padding:.25rem}.bootstrap-table .fixed-table-container.fixed-height:not(.has-footer){border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height.has-card-view{border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .fixed-table-border{border-left:1px solid #dee2e6;border-right:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .table thead th{border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .table-dark thead th{border-bottom:1px solid #32383e}.bootstrap-table .fixed-table-container .fixed-table-header{overflow:hidden}.bootstrap-table .fixed-table-container .fixed-table-body{overflow:auto;height:100%}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading{align-items:center;background:#fff;display:flex;justify-content:center;position:absolute;bottom:0;width:100%;max-width:100%;z-index:1000;transition:visibility 0s,opacity .15s ease-in-out;opacity:0;visibility:hidden}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.open{visibility:visible;opacity:1}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap{align-items:baseline;display:flex;justify-content:center}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .loading-text{margin-right:6px}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap{align-items:center;display:flex;justify-content:center}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::before{content:"";animation-duration:1.5s;animation-iteration-count:infinite;animation-name:loading;background:#212529;border-radius:50%;display:block;height:5px;margin:0 4px;opacity:0;width:5px}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot{animation-delay:.3s}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after{animation-delay:.6s}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark{background:#212529}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-dot,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::after,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::before{background:#fff}.bootstrap-table .fixed-table-container .fixed-table-footer{overflow:hidden}.bootstrap-table .fixed-table-pagination::after{content:"";display:block;clear:both}.bootstrap-table .fixed-table-pagination>.pagination,.bootstrap-table .fixed-table-pagination>.pagination-detail{margin-top:10px;margin-bottom:10px}.bootstrap-table .fixed-table-pagination>.pagination-detail .pagination-info{line-height:34px;margin-right:5px}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list{display:inline-block}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list .btn-group{position:relative;display:inline-block;vertical-align:middle}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list .btn-group .dropdown-menu{margin-bottom:0}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination{margin:0}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a{color:#c8c8c8}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a::before{content:"⬅"}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a::after{content:"➡"}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.disabled a{pointer-events:none;cursor:default}.bootstrap-table.fullscreen{position:fixed;top:0;left:0;z-index:1050;width:100%!important;background:#fff;height:100vh;overflow-y:scroll}.bootstrap-table.bootstrap4 .pagination-lg .page-link,.bootstrap-table.bootstrap5 .pagination-lg .page-link{padding:.5rem 1rem}.bootstrap-table.bootstrap5 .float-left{float:left}.bootstrap-table.bootstrap5 .float-right{float:right}div.fixed-table-scroll-inner{width:100%;height:200px}div.fixed-table-scroll-outer{top:0;left:0;visibility:hidden;width:200px;height:150px;overflow:hidden}@keyframes loading{0%{opacity:0}50%{opacity:1}100%{opacity:0}} \ No newline at end of file +@charset "UTF-8"; +.bootstrap-table .fixed-table-toolbar::after { + content: ""; + display: block; + clear: both; +} +.bootstrap-table .fixed-table-toolbar .bs-bars, +.bootstrap-table .fixed-table-toolbar .columns, +.bootstrap-table .fixed-table-toolbar .search { + position: relative; + margin-top: 10px; + margin-bottom: 10px; +} +.bootstrap-table .fixed-table-toolbar .columns .btn-group > .btn-group { + display: inline-block; + margin-left: -1px !important; +} +.bootstrap-table .fixed-table-toolbar .columns .btn-group > .btn-group > .btn { + border-radius: 0; +} +.bootstrap-table + .fixed-table-toolbar + .columns + .btn-group + > .btn-group:first-child + > .btn { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.bootstrap-table + .fixed-table-toolbar + .columns + .btn-group + > .btn-group:last-child + > .btn { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.bootstrap-table .fixed-table-toolbar .columns .dropdown-menu { + text-align: left; + max-height: 300px; + overflow: auto; + -ms-overflow-style: scrollbar; + z-index: 1001; +} +.bootstrap-table .fixed-table-toolbar .columns label { + display: block; + padding: 3px 20px; + clear: both; + font-weight: 400; + line-height: 1.4286; +} +.bootstrap-table .fixed-table-toolbar .columns-left { + margin-right: 5px; +} +.bootstrap-table .fixed-table-toolbar .columns-right { + margin-left: 5px; +} +.bootstrap-table .fixed-table-toolbar .pull-right .dropdown-menu { + right: 0; + left: auto; +} +.bootstrap-table .fixed-table-container { + position: relative; + clear: both; +} +.bootstrap-table .fixed-table-container .table { + width: 100%; + margin-bottom: 0 !important; +} +.bootstrap-table .fixed-table-container .table td, +.bootstrap-table .fixed-table-container .table th { + vertical-align: middle; + box-sizing: border-box; +} +.bootstrap-table .fixed-table-container .table tfoot th, +.bootstrap-table .fixed-table-container .table thead th { + vertical-align: bottom; + padding: 0; + margin: 0; +} +.bootstrap-table .fixed-table-container .table tfoot th:focus, +.bootstrap-table .fixed-table-container .table thead th:focus { + outline: 0 solid transparent; +} +.bootstrap-table .fixed-table-container .table tfoot th.detail, +.bootstrap-table .fixed-table-container .table thead th.detail { + width: 30px; +} +.bootstrap-table .fixed-table-container .table tfoot th .th-inner, +.bootstrap-table .fixed-table-container .table thead th .th-inner { + padding: 0.75rem; + vertical-align: bottom; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.bootstrap-table .fixed-table-container .table tfoot th .sortable, +.bootstrap-table .fixed-table-container .table thead th .sortable { + cursor: pointer; + background-position: right; + background-repeat: no-repeat; + padding-right: 30px !important; +} +.bootstrap-table + .fixed-table-container + .table + tfoot + th + .sortable.sortable-center, +.bootstrap-table + .fixed-table-container + .table + thead + th + .sortable.sortable-center { + padding-left: 20px !important; + padding-right: 20px !important; +} +.bootstrap-table .fixed-table-container .table tfoot th .both, +.bootstrap-table .fixed-table-container .table thead th .both { + background-image: url('data:image/svg+xml;utf8,'); + background-size: 16px 16px; + background-position: center right 2px; +} +.bootstrap-table .fixed-table-container .table tfoot th .asc, +.bootstrap-table .fixed-table-container .table thead th .asc { + background-image: url('data:image/svg+xml;utf8,'); +} +.bootstrap-table .fixed-table-container .table tfoot th .desc, +.bootstrap-table .fixed-table-container .table thead th .desc { + background-image: url('data:image/svg+xml;utf8,'); +} +.bootstrap-table .fixed-table-container .table tbody tr.selected td { + background-color: rgba(0, 0, 0, 0.075); +} +.bootstrap-table .fixed-table-container .table tbody tr.no-records-found td { + text-align: center; +} +.bootstrap-table .fixed-table-container .table tbody tr .card-view { + display: flex; +} +.bootstrap-table + .fixed-table-container + .table + tbody + tr + .card-view + .card-view-title { + font-weight: 700; + display: inline-block; + min-width: 30%; + width: auto !important; + text-align: left !important; +} +.bootstrap-table + .fixed-table-container + .table + tbody + tr + .card-view + .card-view-value { + width: 100% !important; + text-align: left !important; +} +.bootstrap-table .fixed-table-container .table .bs-checkbox { + text-align: center; +} +.bootstrap-table .fixed-table-container .table .bs-checkbox label { + margin-bottom: 0; +} +.bootstrap-table + .fixed-table-container + .table + .bs-checkbox + label + input[type="checkbox"], +.bootstrap-table + .fixed-table-container + .table + .bs-checkbox + label + input[type="radio"] { + margin: 0 auto !important; +} +.bootstrap-table .fixed-table-container .table.table-sm .th-inner { + padding: 0.25rem; +} +.bootstrap-table .fixed-table-container.fixed-height:not(.has-footer) { + border-bottom: 1px solid #dee2e6; +} +.bootstrap-table .fixed-table-container.fixed-height.has-card-view { + border-top: 1px solid #dee2e6; + border-bottom: 1px solid #dee2e6; +} +.bootstrap-table .fixed-table-container.fixed-height .fixed-table-border { + border-left: 1px solid #dee2e6; + border-right: 1px solid #dee2e6; +} +.bootstrap-table .fixed-table-container.fixed-height .table thead th { + border-bottom: 1px solid #dee2e6; +} +.bootstrap-table .fixed-table-container.fixed-height .table-dark thead th { + border-bottom: 1px solid #32383e; +} +.bootstrap-table .fixed-table-container .fixed-table-header { + overflow: hidden; +} +.bootstrap-table .fixed-table-container .fixed-table-body { + overflow: auto; + height: 100%; +} +.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading { + align-items: center; + background: #fff; + display: flex; + justify-content: center; + position: absolute; + bottom: 0; + width: 100%; + max-width: 100%; + z-index: 1000; + transition: + visibility 0s, + opacity 0.15s ease-in-out; + opacity: 0; + visibility: hidden; +} +.bootstrap-table + .fixed-table-container + .fixed-table-body + .fixed-table-loading.open { + visibility: visible; + opacity: 1; +} +.bootstrap-table + .fixed-table-container + .fixed-table-body + .fixed-table-loading + .loading-wrap { + align-items: baseline; + display: flex; + justify-content: center; +} +.bootstrap-table + .fixed-table-container + .fixed-table-body + .fixed-table-loading + .loading-wrap + .loading-text { + margin-right: 6px; +} +.bootstrap-table + .fixed-table-container + .fixed-table-body + .fixed-table-loading + .loading-wrap + .animation-wrap { + align-items: center; + display: flex; + justify-content: center; +} +.bootstrap-table + .fixed-table-container + .fixed-table-body + .fixed-table-loading + .loading-wrap + .animation-dot, +.bootstrap-table + .fixed-table-container + .fixed-table-body + .fixed-table-loading + .loading-wrap + .animation-wrap::after, +.bootstrap-table + .fixed-table-container + .fixed-table-body + .fixed-table-loading + .loading-wrap + .animation-wrap::before { + content: ""; + animation-duration: 1.5s; + animation-iteration-count: infinite; + animation-name: loading; + background: #212529; + border-radius: 50%; + display: block; + height: 5px; + margin: 0 4px; + opacity: 0; + width: 5px; +} +.bootstrap-table + .fixed-table-container + .fixed-table-body + .fixed-table-loading + .loading-wrap + .animation-dot { + animation-delay: 0.3s; +} +.bootstrap-table + .fixed-table-container + .fixed-table-body + .fixed-table-loading + .loading-wrap + .animation-wrap::after { + animation-delay: 0.6s; +} +.bootstrap-table + .fixed-table-container + .fixed-table-body + .fixed-table-loading.table-dark { + background: #212529; +} +.bootstrap-table + .fixed-table-container + .fixed-table-body + .fixed-table-loading.table-dark + .animation-dot, +.bootstrap-table + .fixed-table-container + .fixed-table-body + .fixed-table-loading.table-dark + .animation-wrap::after, +.bootstrap-table + .fixed-table-container + .fixed-table-body + .fixed-table-loading.table-dark + .animation-wrap::before { + background: #fff; +} +.bootstrap-table .fixed-table-container .fixed-table-footer { + overflow: hidden; +} +.bootstrap-table .fixed-table-pagination::after { + content: ""; + display: block; + clear: both; +} +.bootstrap-table .fixed-table-pagination > .pagination, +.bootstrap-table .fixed-table-pagination > .pagination-detail { + margin-top: 10px; + margin-bottom: 10px; +} +.bootstrap-table .fixed-table-pagination > .pagination-detail .pagination-info { + line-height: 34px; + margin-right: 5px; +} +.bootstrap-table .fixed-table-pagination > .pagination-detail .page-list { + display: inline-block; +} +.bootstrap-table + .fixed-table-pagination + > .pagination-detail + .page-list + .btn-group { + position: relative; + display: inline-block; + vertical-align: middle; +} +.bootstrap-table + .fixed-table-pagination + > .pagination-detail + .page-list + .btn-group + .dropdown-menu { + margin-bottom: 0; +} +.bootstrap-table .fixed-table-pagination > .pagination ul.pagination { + margin: 0; +} +.bootstrap-table + .fixed-table-pagination + > .pagination + ul.pagination + li.page-intermediate + a { + color: #c8c8c8; +} +.bootstrap-table + .fixed-table-pagination + > .pagination + ul.pagination + li.page-intermediate + a::before { + content: "⬅"; +} +.bootstrap-table + .fixed-table-pagination + > .pagination + ul.pagination + li.page-intermediate + a::after { + content: "➡"; +} +.bootstrap-table + .fixed-table-pagination + > .pagination + ul.pagination + li.disabled + a { + pointer-events: none; + cursor: default; +} +.bootstrap-table.fullscreen { + position: fixed; + top: 0; + left: 0; + z-index: 1050; + width: 100% !important; + background: #fff; + height: 100vh; + overflow-y: scroll; +} +.bootstrap-table.bootstrap4 .pagination-lg .page-link, +.bootstrap-table.bootstrap5 .pagination-lg .page-link { + padding: 0.5rem 1rem; +} +.bootstrap-table.bootstrap5 .float-left { + float: left; +} +.bootstrap-table.bootstrap5 .float-right { + float: right; +} +div.fixed-table-scroll-inner { + width: 100%; + height: 200px; +} +div.fixed-table-scroll-outer { + top: 0; + left: 0; + visibility: hidden; + width: 200px; + height: 150px; + overflow: hidden; +} +@keyframes loading { + 0% { + opacity: 0; + } + 50% { + opacity: 1; + } + 100% { + opacity: 0; + } +} diff --git a/css/fontawesome-all-5.13.1.min.css b/css/fontawesome-all-5.13.1.min.css index 57f5087..f29970d 100644 --- a/css/fontawesome-all-5.13.1.min.css +++ b/css/fontawesome-all-5.13.1.min.css @@ -2,4 +2,4615 @@ * Font Awesome Free 5.13.1 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) */ -.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\f959"}.fa-bacterium:before{content:"\f95a"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\f95b"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\f952"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-deezer:before{content:"\f977"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\f978"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-faucet:before{content:"\f905"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\f907"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\f979"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\f95c"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\f95d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-hands-wash:before{content:"\f95e"}.fa-handshake:before{content:"\f2b5"}.fa-handshake-alt-slash:before{content:"\f95f"}.fa-handshake-slash:before{content:"\f960"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-head-side-cough:before{content:"\f961"}.fa-head-side-cough-slash:before{content:"\f962"}.fa-head-side-mask:before{content:"\f963"}.fa-head-side-virus:before{content:"\f964"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-house-user:before{content:"\f965"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\f913"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\f955"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-house:before{content:"\f966"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\f967"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\f91a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\f956"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-arrows:before{content:"\f968"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\f91e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\f969"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pump-medical:before{content:"\f96a"}.fa-pump-soap:before{content:"\f96b"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-rust:before{content:"\f97a"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-shield-virus:before{content:"\f96c"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\f957"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sink:before{content:"\f96d"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\f96e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\f96f"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-store-alt-slash:before{content:"\f970"}.fa-store-slash:before{content:"\f971"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-tiktok:before{content:"\f97b"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\f972"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\f941"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\f949"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-unsplash:before{content:"\f97c"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-users-slash:before{content:"\f973"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-virus:before{content:"\f974"}.fa-virus-slash:before{content:"\f975"}.fa-viruses:before{content:"\f976"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot@) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot@) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot@) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900} \ No newline at end of file +.fa, +.fab, +.fad, +.fal, +.far, +.fas { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; +} +.fa-lg { + font-size: 1.33333em; + line-height: 0.75em; + vertical-align: -0.0667em; +} +.fa-xs { + font-size: 0.75em; +} +.fa-sm { + font-size: 0.875em; +} +.fa-1x { + font-size: 1em; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-6x { + font-size: 6em; +} +.fa-7x { + font-size: 7em; +} +.fa-8x { + font-size: 8em; +} +.fa-9x { + font-size: 9em; +} +.fa-10x { + font-size: 10em; +} +.fa-fw { + text-align: center; + width: 1.25em; +} +.fa-ul { + list-style-type: none; + margin-left: 2.5em; + padding-left: 0; +} +.fa-ul > li { + position: relative; +} +.fa-li { + left: -2em; + position: absolute; + text-align: center; + width: 2em; + line-height: inherit; +} +.fa-border { + border: 0.08em solid #eee; + border-radius: 0.1em; + padding: 0.2em 0.25em 0.15em; +} +.fa-pull-left { + float: left; +} +.fa-pull-right { + float: right; +} +.fa.fa-pull-left, +.fab.fa-pull-left, +.fal.fa-pull-left, +.far.fa-pull-left, +.fas.fa-pull-left { + margin-right: 0.3em; +} +.fa.fa-pull-right, +.fab.fa-pull-right, +.fal.fa-pull-right, +.far.fa-pull-right, +.fas.fa-pull-right { + margin-left: 0.3em; +} +.fa-spin { + -webkit-animation: fa-spin 2s linear infinite; + animation: fa-spin 2s linear infinite; +} +.fa-pulse { + -webkit-animation: fa-spin 1s steps(8) infinite; + animation: fa-spin 1s steps(8) infinite; +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + to { + -webkit-transform: rotate(1turn); + transform: rotate(1turn); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + to { + -webkit-transform: rotate(1turn); + transform: rotate(1turn); + } +} +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scaleX(-1); + transform: scaleX(-1); +} +.fa-flip-vertical { + -webkit-transform: scaleY(-1); + transform: scaleY(-1); +} +.fa-flip-both, +.fa-flip-horizontal.fa-flip-vertical, +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; +} +.fa-flip-both, +.fa-flip-horizontal.fa-flip-vertical { + -webkit-transform: scale(-1); + transform: scale(-1); +} +:root .fa-flip-both, +:root .fa-flip-horizontal, +:root .fa-flip-vertical, +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270 { + -webkit-filter: none; + filter: none; +} +.fa-stack { + display: inline-block; + height: 2em; + line-height: 2em; + position: relative; + vertical-align: middle; + width: 2.5em; +} +.fa-stack-1x, +.fa-stack-2x { + left: 0; + position: absolute; + text-align: center; + width: 100%; +} +.fa-stack-1x { + line-height: inherit; +} +.fa-stack-2x { + font-size: 2em; +} +.fa-inverse { + color: #fff; +} +.fa-500px:before { + content: "\f26e"; +} +.fa-accessible-icon:before { + content: "\f368"; +} +.fa-accusoft:before { + content: "\f369"; +} +.fa-acquisitions-incorporated:before { + content: "\f6af"; +} +.fa-ad:before { + content: "\f641"; +} +.fa-address-book:before { + content: "\f2b9"; +} +.fa-address-card:before { + content: "\f2bb"; +} +.fa-adjust:before { + content: "\f042"; +} +.fa-adn:before { + content: "\f170"; +} +.fa-adobe:before { + content: "\f778"; +} +.fa-adversal:before { + content: "\f36a"; +} +.fa-affiliatetheme:before { + content: "\f36b"; +} +.fa-air-freshener:before { + content: "\f5d0"; +} +.fa-airbnb:before { + content: "\f834"; +} +.fa-algolia:before { + content: "\f36c"; +} +.fa-align-center:before { + content: "\f037"; +} +.fa-align-justify:before { + content: "\f039"; +} +.fa-align-left:before { + content: "\f036"; +} +.fa-align-right:before { + content: "\f038"; +} +.fa-alipay:before { + content: "\f642"; +} +.fa-allergies:before { + content: "\f461"; +} +.fa-amazon:before { + content: "\f270"; +} +.fa-amazon-pay:before { + content: "\f42c"; +} +.fa-ambulance:before { + content: "\f0f9"; +} +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; +} +.fa-amilia:before { + content: "\f36d"; +} +.fa-anchor:before { + content: "\f13d"; +} +.fa-android:before { + content: "\f17b"; +} +.fa-angellist:before { + content: "\f209"; +} +.fa-angle-double-down:before { + content: "\f103"; +} +.fa-angle-double-left:before { + content: "\f100"; +} +.fa-angle-double-right:before { + content: "\f101"; +} +.fa-angle-double-up:before { + content: "\f102"; +} +.fa-angle-down:before { + content: "\f107"; +} +.fa-angle-left:before { + content: "\f104"; +} +.fa-angle-right:before { + content: "\f105"; +} +.fa-angle-up:before { + content: "\f106"; +} +.fa-angry:before { + content: "\f556"; +} +.fa-angrycreative:before { + content: "\f36e"; +} +.fa-angular:before { + content: "\f420"; +} +.fa-ankh:before { + content: "\f644"; +} +.fa-app-store:before { + content: "\f36f"; +} +.fa-app-store-ios:before { + content: "\f370"; +} +.fa-apper:before { + content: "\f371"; +} +.fa-apple:before { + content: "\f179"; +} +.fa-apple-alt:before { + content: "\f5d1"; +} +.fa-apple-pay:before { + content: "\f415"; +} +.fa-archive:before { + content: "\f187"; +} +.fa-archway:before { + content: "\f557"; +} +.fa-arrow-alt-circle-down:before { + content: "\f358"; +} +.fa-arrow-alt-circle-left:before { + content: "\f359"; +} +.fa-arrow-alt-circle-right:before { + content: "\f35a"; +} +.fa-arrow-alt-circle-up:before { + content: "\f35b"; +} +.fa-arrow-circle-down:before { + content: "\f0ab"; +} +.fa-arrow-circle-left:before { + content: "\f0a8"; +} +.fa-arrow-circle-right:before { + content: "\f0a9"; +} +.fa-arrow-circle-up:before { + content: "\f0aa"; +} +.fa-arrow-down:before { + content: "\f063"; +} +.fa-arrow-left:before { + content: "\f060"; +} +.fa-arrow-right:before { + content: "\f061"; +} +.fa-arrow-up:before { + content: "\f062"; +} +.fa-arrows-alt:before { + content: "\f0b2"; +} +.fa-arrows-alt-h:before { + content: "\f337"; +} +.fa-arrows-alt-v:before { + content: "\f338"; +} +.fa-artstation:before { + content: "\f77a"; +} +.fa-assistive-listening-systems:before { + content: "\f2a2"; +} +.fa-asterisk:before { + content: "\f069"; +} +.fa-asymmetrik:before { + content: "\f372"; +} +.fa-at:before { + content: "\f1fa"; +} +.fa-atlas:before { + content: "\f558"; +} +.fa-atlassian:before { + content: "\f77b"; +} +.fa-atom:before { + content: "\f5d2"; +} +.fa-audible:before { + content: "\f373"; +} +.fa-audio-description:before { + content: "\f29e"; +} +.fa-autoprefixer:before { + content: "\f41c"; +} +.fa-avianex:before { + content: "\f374"; +} +.fa-aviato:before { + content: "\f421"; +} +.fa-award:before { + content: "\f559"; +} +.fa-aws:before { + content: "\f375"; +} +.fa-baby:before { + content: "\f77c"; +} +.fa-baby-carriage:before { + content: "\f77d"; +} +.fa-backspace:before { + content: "\f55a"; +} +.fa-backward:before { + content: "\f04a"; +} +.fa-bacon:before { + content: "\f7e5"; +} +.fa-bacteria:before { + content: "\f959"; +} +.fa-bacterium:before { + content: "\f95a"; +} +.fa-bahai:before { + content: "\f666"; +} +.fa-balance-scale:before { + content: "\f24e"; +} +.fa-balance-scale-left:before { + content: "\f515"; +} +.fa-balance-scale-right:before { + content: "\f516"; +} +.fa-ban:before { + content: "\f05e"; +} +.fa-band-aid:before { + content: "\f462"; +} +.fa-bandcamp:before { + content: "\f2d5"; +} +.fa-barcode:before { + content: "\f02a"; +} +.fa-bars:before { + content: "\f0c9"; +} +.fa-baseball-ball:before { + content: "\f433"; +} +.fa-basketball-ball:before { + content: "\f434"; +} +.fa-bath:before { + content: "\f2cd"; +} +.fa-battery-empty:before { + content: "\f244"; +} +.fa-battery-full:before { + content: "\f240"; +} +.fa-battery-half:before { + content: "\f242"; +} +.fa-battery-quarter:before { + content: "\f243"; +} +.fa-battery-three-quarters:before { + content: "\f241"; +} +.fa-battle-net:before { + content: "\f835"; +} +.fa-bed:before { + content: "\f236"; +} +.fa-beer:before { + content: "\f0fc"; +} +.fa-behance:before { + content: "\f1b4"; +} +.fa-behance-square:before { + content: "\f1b5"; +} +.fa-bell:before { + content: "\f0f3"; +} +.fa-bell-slash:before { + content: "\f1f6"; +} +.fa-bezier-curve:before { + content: "\f55b"; +} +.fa-bible:before { + content: "\f647"; +} +.fa-bicycle:before { + content: "\f206"; +} +.fa-biking:before { + content: "\f84a"; +} +.fa-bimobject:before { + content: "\f378"; +} +.fa-binoculars:before { + content: "\f1e5"; +} +.fa-biohazard:before { + content: "\f780"; +} +.fa-birthday-cake:before { + content: "\f1fd"; +} +.fa-bitbucket:before { + content: "\f171"; +} +.fa-bitcoin:before { + content: "\f379"; +} +.fa-bity:before { + content: "\f37a"; +} +.fa-black-tie:before { + content: "\f27e"; +} +.fa-blackberry:before { + content: "\f37b"; +} +.fa-blender:before { + content: "\f517"; +} +.fa-blender-phone:before { + content: "\f6b6"; +} +.fa-blind:before { + content: "\f29d"; +} +.fa-blog:before { + content: "\f781"; +} +.fa-blogger:before { + content: "\f37c"; +} +.fa-blogger-b:before { + content: "\f37d"; +} +.fa-bluetooth:before { + content: "\f293"; +} +.fa-bluetooth-b:before { + content: "\f294"; +} +.fa-bold:before { + content: "\f032"; +} +.fa-bolt:before { + content: "\f0e7"; +} +.fa-bomb:before { + content: "\f1e2"; +} +.fa-bone:before { + content: "\f5d7"; +} +.fa-bong:before { + content: "\f55c"; +} +.fa-book:before { + content: "\f02d"; +} +.fa-book-dead:before { + content: "\f6b7"; +} +.fa-book-medical:before { + content: "\f7e6"; +} +.fa-book-open:before { + content: "\f518"; +} +.fa-book-reader:before { + content: "\f5da"; +} +.fa-bookmark:before { + content: "\f02e"; +} +.fa-bootstrap:before { + content: "\f836"; +} +.fa-border-all:before { + content: "\f84c"; +} +.fa-border-none:before { + content: "\f850"; +} +.fa-border-style:before { + content: "\f853"; +} +.fa-bowling-ball:before { + content: "\f436"; +} +.fa-box:before { + content: "\f466"; +} +.fa-box-open:before { + content: "\f49e"; +} +.fa-box-tissue:before { + content: "\f95b"; +} +.fa-boxes:before { + content: "\f468"; +} +.fa-braille:before { + content: "\f2a1"; +} +.fa-brain:before { + content: "\f5dc"; +} +.fa-bread-slice:before { + content: "\f7ec"; +} +.fa-briefcase:before { + content: "\f0b1"; +} +.fa-briefcase-medical:before { + content: "\f469"; +} +.fa-broadcast-tower:before { + content: "\f519"; +} +.fa-broom:before { + content: "\f51a"; +} +.fa-brush:before { + content: "\f55d"; +} +.fa-btc:before { + content: "\f15a"; +} +.fa-buffer:before { + content: "\f837"; +} +.fa-bug:before { + content: "\f188"; +} +.fa-building:before { + content: "\f1ad"; +} +.fa-bullhorn:before { + content: "\f0a1"; +} +.fa-bullseye:before { + content: "\f140"; +} +.fa-burn:before { + content: "\f46a"; +} +.fa-buromobelexperte:before { + content: "\f37f"; +} +.fa-bus:before { + content: "\f207"; +} +.fa-bus-alt:before { + content: "\f55e"; +} +.fa-business-time:before { + content: "\f64a"; +} +.fa-buy-n-large:before { + content: "\f8a6"; +} +.fa-buysellads:before { + content: "\f20d"; +} +.fa-calculator:before { + content: "\f1ec"; +} +.fa-calendar:before { + content: "\f133"; +} +.fa-calendar-alt:before { + content: "\f073"; +} +.fa-calendar-check:before { + content: "\f274"; +} +.fa-calendar-day:before { + content: "\f783"; +} +.fa-calendar-minus:before { + content: "\f272"; +} +.fa-calendar-plus:before { + content: "\f271"; +} +.fa-calendar-times:before { + content: "\f273"; +} +.fa-calendar-week:before { + content: "\f784"; +} +.fa-camera:before { + content: "\f030"; +} +.fa-camera-retro:before { + content: "\f083"; +} +.fa-campground:before { + content: "\f6bb"; +} +.fa-canadian-maple-leaf:before { + content: "\f785"; +} +.fa-candy-cane:before { + content: "\f786"; +} +.fa-cannabis:before { + content: "\f55f"; +} +.fa-capsules:before { + content: "\f46b"; +} +.fa-car:before { + content: "\f1b9"; +} +.fa-car-alt:before { + content: "\f5de"; +} +.fa-car-battery:before { + content: "\f5df"; +} +.fa-car-crash:before { + content: "\f5e1"; +} +.fa-car-side:before { + content: "\f5e4"; +} +.fa-caravan:before { + content: "\f8ff"; +} +.fa-caret-down:before { + content: "\f0d7"; +} +.fa-caret-left:before { + content: "\f0d9"; +} +.fa-caret-right:before { + content: "\f0da"; +} +.fa-caret-square-down:before { + content: "\f150"; +} +.fa-caret-square-left:before { + content: "\f191"; +} +.fa-caret-square-right:before { + content: "\f152"; +} +.fa-caret-square-up:before { + content: "\f151"; +} +.fa-caret-up:before { + content: "\f0d8"; +} +.fa-carrot:before { + content: "\f787"; +} +.fa-cart-arrow-down:before { + content: "\f218"; +} +.fa-cart-plus:before { + content: "\f217"; +} +.fa-cash-register:before { + content: "\f788"; +} +.fa-cat:before { + content: "\f6be"; +} +.fa-cc-amazon-pay:before { + content: "\f42d"; +} +.fa-cc-amex:before { + content: "\f1f3"; +} +.fa-cc-apple-pay:before { + content: "\f416"; +} +.fa-cc-diners-club:before { + content: "\f24c"; +} +.fa-cc-discover:before { + content: "\f1f2"; +} +.fa-cc-jcb:before { + content: "\f24b"; +} +.fa-cc-mastercard:before { + content: "\f1f1"; +} +.fa-cc-paypal:before { + content: "\f1f4"; +} +.fa-cc-stripe:before { + content: "\f1f5"; +} +.fa-cc-visa:before { + content: "\f1f0"; +} +.fa-centercode:before { + content: "\f380"; +} +.fa-centos:before { + content: "\f789"; +} +.fa-certificate:before { + content: "\f0a3"; +} +.fa-chair:before { + content: "\f6c0"; +} +.fa-chalkboard:before { + content: "\f51b"; +} +.fa-chalkboard-teacher:before { + content: "\f51c"; +} +.fa-charging-station:before { + content: "\f5e7"; +} +.fa-chart-area:before { + content: "\f1fe"; +} +.fa-chart-bar:before { + content: "\f080"; +} +.fa-chart-line:before { + content: "\f201"; +} +.fa-chart-pie:before { + content: "\f200"; +} +.fa-check:before { + content: "\f00c"; +} +.fa-check-circle:before { + content: "\f058"; +} +.fa-check-double:before { + content: "\f560"; +} +.fa-check-square:before { + content: "\f14a"; +} +.fa-cheese:before { + content: "\f7ef"; +} +.fa-chess:before { + content: "\f439"; +} +.fa-chess-bishop:before { + content: "\f43a"; +} +.fa-chess-board:before { + content: "\f43c"; +} +.fa-chess-king:before { + content: "\f43f"; +} +.fa-chess-knight:before { + content: "\f441"; +} +.fa-chess-pawn:before { + content: "\f443"; +} +.fa-chess-queen:before { + content: "\f445"; +} +.fa-chess-rook:before { + content: "\f447"; +} +.fa-chevron-circle-down:before { + content: "\f13a"; +} +.fa-chevron-circle-left:before { + content: "\f137"; +} +.fa-chevron-circle-right:before { + content: "\f138"; +} +.fa-chevron-circle-up:before { + content: "\f139"; +} +.fa-chevron-down:before { + content: "\f078"; +} +.fa-chevron-left:before { + content: "\f053"; +} +.fa-chevron-right:before { + content: "\f054"; +} +.fa-chevron-up:before { + content: "\f077"; +} +.fa-child:before { + content: "\f1ae"; +} +.fa-chrome:before { + content: "\f268"; +} +.fa-chromecast:before { + content: "\f838"; +} +.fa-church:before { + content: "\f51d"; +} +.fa-circle:before { + content: "\f111"; +} +.fa-circle-notch:before { + content: "\f1ce"; +} +.fa-city:before { + content: "\f64f"; +} +.fa-clinic-medical:before { + content: "\f7f2"; +} +.fa-clipboard:before { + content: "\f328"; +} +.fa-clipboard-check:before { + content: "\f46c"; +} +.fa-clipboard-list:before { + content: "\f46d"; +} +.fa-clock:before { + content: "\f017"; +} +.fa-clone:before { + content: "\f24d"; +} +.fa-closed-captioning:before { + content: "\f20a"; +} +.fa-cloud:before { + content: "\f0c2"; +} +.fa-cloud-download-alt:before { + content: "\f381"; +} +.fa-cloud-meatball:before { + content: "\f73b"; +} +.fa-cloud-moon:before { + content: "\f6c3"; +} +.fa-cloud-moon-rain:before { + content: "\f73c"; +} +.fa-cloud-rain:before { + content: "\f73d"; +} +.fa-cloud-showers-heavy:before { + content: "\f740"; +} +.fa-cloud-sun:before { + content: "\f6c4"; +} +.fa-cloud-sun-rain:before { + content: "\f743"; +} +.fa-cloud-upload-alt:before { + content: "\f382"; +} +.fa-cloudscale:before { + content: "\f383"; +} +.fa-cloudsmith:before { + content: "\f384"; +} +.fa-cloudversify:before { + content: "\f385"; +} +.fa-cocktail:before { + content: "\f561"; +} +.fa-code:before { + content: "\f121"; +} +.fa-code-branch:before { + content: "\f126"; +} +.fa-codepen:before { + content: "\f1cb"; +} +.fa-codiepie:before { + content: "\f284"; +} +.fa-coffee:before { + content: "\f0f4"; +} +.fa-cog:before { + content: "\f013"; +} +.fa-cogs:before { + content: "\f085"; +} +.fa-coins:before { + content: "\f51e"; +} +.fa-columns:before { + content: "\f0db"; +} +.fa-comment:before { + content: "\f075"; +} +.fa-comment-alt:before { + content: "\f27a"; +} +.fa-comment-dollar:before { + content: "\f651"; +} +.fa-comment-dots:before { + content: "\f4ad"; +} +.fa-comment-medical:before { + content: "\f7f5"; +} +.fa-comment-slash:before { + content: "\f4b3"; +} +.fa-comments:before { + content: "\f086"; +} +.fa-comments-dollar:before { + content: "\f653"; +} +.fa-compact-disc:before { + content: "\f51f"; +} +.fa-compass:before { + content: "\f14e"; +} +.fa-compress:before { + content: "\f066"; +} +.fa-compress-alt:before { + content: "\f422"; +} +.fa-compress-arrows-alt:before { + content: "\f78c"; +} +.fa-concierge-bell:before { + content: "\f562"; +} +.fa-confluence:before { + content: "\f78d"; +} +.fa-connectdevelop:before { + content: "\f20e"; +} +.fa-contao:before { + content: "\f26d"; +} +.fa-cookie:before { + content: "\f563"; +} +.fa-cookie-bite:before { + content: "\f564"; +} +.fa-copy:before { + content: "\f0c5"; +} +.fa-copyright:before { + content: "\f1f9"; +} +.fa-cotton-bureau:before { + content: "\f89e"; +} +.fa-couch:before { + content: "\f4b8"; +} +.fa-cpanel:before { + content: "\f388"; +} +.fa-creative-commons:before { + content: "\f25e"; +} +.fa-creative-commons-by:before { + content: "\f4e7"; +} +.fa-creative-commons-nc:before { + content: "\f4e8"; +} +.fa-creative-commons-nc-eu:before { + content: "\f4e9"; +} +.fa-creative-commons-nc-jp:before { + content: "\f4ea"; +} +.fa-creative-commons-nd:before { + content: "\f4eb"; +} +.fa-creative-commons-pd:before { + content: "\f4ec"; +} +.fa-creative-commons-pd-alt:before { + content: "\f4ed"; +} +.fa-creative-commons-remix:before { + content: "\f4ee"; +} +.fa-creative-commons-sa:before { + content: "\f4ef"; +} +.fa-creative-commons-sampling:before { + content: "\f4f0"; +} +.fa-creative-commons-sampling-plus:before { + content: "\f4f1"; +} +.fa-creative-commons-share:before { + content: "\f4f2"; +} +.fa-creative-commons-zero:before { + content: "\f4f3"; +} +.fa-credit-card:before { + content: "\f09d"; +} +.fa-critical-role:before { + content: "\f6c9"; +} +.fa-crop:before { + content: "\f125"; +} +.fa-crop-alt:before { + content: "\f565"; +} +.fa-cross:before { + content: "\f654"; +} +.fa-crosshairs:before { + content: "\f05b"; +} +.fa-crow:before { + content: "\f520"; +} +.fa-crown:before { + content: "\f521"; +} +.fa-crutch:before { + content: "\f7f7"; +} +.fa-css3:before { + content: "\f13c"; +} +.fa-css3-alt:before { + content: "\f38b"; +} +.fa-cube:before { + content: "\f1b2"; +} +.fa-cubes:before { + content: "\f1b3"; +} +.fa-cut:before { + content: "\f0c4"; +} +.fa-cuttlefish:before { + content: "\f38c"; +} +.fa-d-and-d:before { + content: "\f38d"; +} +.fa-d-and-d-beyond:before { + content: "\f6ca"; +} +.fa-dailymotion:before { + content: "\f952"; +} +.fa-dashcube:before { + content: "\f210"; +} +.fa-database:before { + content: "\f1c0"; +} +.fa-deaf:before { + content: "\f2a4"; +} +.fa-deezer:before { + content: "\f977"; +} +.fa-delicious:before { + content: "\f1a5"; +} +.fa-democrat:before { + content: "\f747"; +} +.fa-deploydog:before { + content: "\f38e"; +} +.fa-deskpro:before { + content: "\f38f"; +} +.fa-desktop:before { + content: "\f108"; +} +.fa-dev:before { + content: "\f6cc"; +} +.fa-deviantart:before { + content: "\f1bd"; +} +.fa-dharmachakra:before { + content: "\f655"; +} +.fa-dhl:before { + content: "\f790"; +} +.fa-diagnoses:before { + content: "\f470"; +} +.fa-diaspora:before { + content: "\f791"; +} +.fa-dice:before { + content: "\f522"; +} +.fa-dice-d20:before { + content: "\f6cf"; +} +.fa-dice-d6:before { + content: "\f6d1"; +} +.fa-dice-five:before { + content: "\f523"; +} +.fa-dice-four:before { + content: "\f524"; +} +.fa-dice-one:before { + content: "\f525"; +} +.fa-dice-six:before { + content: "\f526"; +} +.fa-dice-three:before { + content: "\f527"; +} +.fa-dice-two:before { + content: "\f528"; +} +.fa-digg:before { + content: "\f1a6"; +} +.fa-digital-ocean:before { + content: "\f391"; +} +.fa-digital-tachograph:before { + content: "\f566"; +} +.fa-directions:before { + content: "\f5eb"; +} +.fa-discord:before { + content: "\f392"; +} +.fa-discourse:before { + content: "\f393"; +} +.fa-disease:before { + content: "\f7fa"; +} +.fa-divide:before { + content: "\f529"; +} +.fa-dizzy:before { + content: "\f567"; +} +.fa-dna:before { + content: "\f471"; +} +.fa-dochub:before { + content: "\f394"; +} +.fa-docker:before { + content: "\f395"; +} +.fa-dog:before { + content: "\f6d3"; +} +.fa-dollar-sign:before { + content: "\f155"; +} +.fa-dolly:before { + content: "\f472"; +} +.fa-dolly-flatbed:before { + content: "\f474"; +} +.fa-donate:before { + content: "\f4b9"; +} +.fa-door-closed:before { + content: "\f52a"; +} +.fa-door-open:before { + content: "\f52b"; +} +.fa-dot-circle:before { + content: "\f192"; +} +.fa-dove:before { + content: "\f4ba"; +} +.fa-download:before { + content: "\f019"; +} +.fa-draft2digital:before { + content: "\f396"; +} +.fa-drafting-compass:before { + content: "\f568"; +} +.fa-dragon:before { + content: "\f6d5"; +} +.fa-draw-polygon:before { + content: "\f5ee"; +} +.fa-dribbble:before { + content: "\f17d"; +} +.fa-dribbble-square:before { + content: "\f397"; +} +.fa-dropbox:before { + content: "\f16b"; +} +.fa-drum:before { + content: "\f569"; +} +.fa-drum-steelpan:before { + content: "\f56a"; +} +.fa-drumstick-bite:before { + content: "\f6d7"; +} +.fa-drupal:before { + content: "\f1a9"; +} +.fa-dumbbell:before { + content: "\f44b"; +} +.fa-dumpster:before { + content: "\f793"; +} +.fa-dumpster-fire:before { + content: "\f794"; +} +.fa-dungeon:before { + content: "\f6d9"; +} +.fa-dyalog:before { + content: "\f399"; +} +.fa-earlybirds:before { + content: "\f39a"; +} +.fa-ebay:before { + content: "\f4f4"; +} +.fa-edge:before { + content: "\f282"; +} +.fa-edge-legacy:before { + content: "\f978"; +} +.fa-edit:before { + content: "\f044"; +} +.fa-egg:before { + content: "\f7fb"; +} +.fa-eject:before { + content: "\f052"; +} +.fa-elementor:before { + content: "\f430"; +} +.fa-ellipsis-h:before { + content: "\f141"; +} +.fa-ellipsis-v:before { + content: "\f142"; +} +.fa-ello:before { + content: "\f5f1"; +} +.fa-ember:before { + content: "\f423"; +} +.fa-empire:before { + content: "\f1d1"; +} +.fa-envelope:before { + content: "\f0e0"; +} +.fa-envelope-open:before { + content: "\f2b6"; +} +.fa-envelope-open-text:before { + content: "\f658"; +} +.fa-envelope-square:before { + content: "\f199"; +} +.fa-envira:before { + content: "\f299"; +} +.fa-equals:before { + content: "\f52c"; +} +.fa-eraser:before { + content: "\f12d"; +} +.fa-erlang:before { + content: "\f39d"; +} +.fa-ethereum:before { + content: "\f42e"; +} +.fa-ethernet:before { + content: "\f796"; +} +.fa-etsy:before { + content: "\f2d7"; +} +.fa-euro-sign:before { + content: "\f153"; +} +.fa-evernote:before { + content: "\f839"; +} +.fa-exchange-alt:before { + content: "\f362"; +} +.fa-exclamation:before { + content: "\f12a"; +} +.fa-exclamation-circle:before { + content: "\f06a"; +} +.fa-exclamation-triangle:before { + content: "\f071"; +} +.fa-expand:before { + content: "\f065"; +} +.fa-expand-alt:before { + content: "\f424"; +} +.fa-expand-arrows-alt:before { + content: "\f31e"; +} +.fa-expeditedssl:before { + content: "\f23e"; +} +.fa-external-link-alt:before { + content: "\f35d"; +} +.fa-external-link-square-alt:before { + content: "\f360"; +} +.fa-eye:before { + content: "\f06e"; +} +.fa-eye-dropper:before { + content: "\f1fb"; +} +.fa-eye-slash:before { + content: "\f070"; +} +.fa-facebook:before { + content: "\f09a"; +} +.fa-facebook-f:before { + content: "\f39e"; +} +.fa-facebook-messenger:before { + content: "\f39f"; +} +.fa-facebook-square:before { + content: "\f082"; +} +.fa-fan:before { + content: "\f863"; +} +.fa-fantasy-flight-games:before { + content: "\f6dc"; +} +.fa-fast-backward:before { + content: "\f049"; +} +.fa-fast-forward:before { + content: "\f050"; +} +.fa-faucet:before { + content: "\f905"; +} +.fa-fax:before { + content: "\f1ac"; +} +.fa-feather:before { + content: "\f52d"; +} +.fa-feather-alt:before { + content: "\f56b"; +} +.fa-fedex:before { + content: "\f797"; +} +.fa-fedora:before { + content: "\f798"; +} +.fa-female:before { + content: "\f182"; +} +.fa-fighter-jet:before { + content: "\f0fb"; +} +.fa-figma:before { + content: "\f799"; +} +.fa-file:before { + content: "\f15b"; +} +.fa-file-alt:before { + content: "\f15c"; +} +.fa-file-archive:before { + content: "\f1c6"; +} +.fa-file-audio:before { + content: "\f1c7"; +} +.fa-file-code:before { + content: "\f1c9"; +} +.fa-file-contract:before { + content: "\f56c"; +} +.fa-file-csv:before { + content: "\f6dd"; +} +.fa-file-download:before { + content: "\f56d"; +} +.fa-file-excel:before { + content: "\f1c3"; +} +.fa-file-export:before { + content: "\f56e"; +} +.fa-file-image:before { + content: "\f1c5"; +} +.fa-file-import:before { + content: "\f56f"; +} +.fa-file-invoice:before { + content: "\f570"; +} +.fa-file-invoice-dollar:before { + content: "\f571"; +} +.fa-file-medical:before { + content: "\f477"; +} +.fa-file-medical-alt:before { + content: "\f478"; +} +.fa-file-pdf:before { + content: "\f1c1"; +} +.fa-file-powerpoint:before { + content: "\f1c4"; +} +.fa-file-prescription:before { + content: "\f572"; +} +.fa-file-signature:before { + content: "\f573"; +} +.fa-file-upload:before { + content: "\f574"; +} +.fa-file-video:before { + content: "\f1c8"; +} +.fa-file-word:before { + content: "\f1c2"; +} +.fa-fill:before { + content: "\f575"; +} +.fa-fill-drip:before { + content: "\f576"; +} +.fa-film:before { + content: "\f008"; +} +.fa-filter:before { + content: "\f0b0"; +} +.fa-fingerprint:before { + content: "\f577"; +} +.fa-fire:before { + content: "\f06d"; +} +.fa-fire-alt:before { + content: "\f7e4"; +} +.fa-fire-extinguisher:before { + content: "\f134"; +} +.fa-firefox:before { + content: "\f269"; +} +.fa-firefox-browser:before { + content: "\f907"; +} +.fa-first-aid:before { + content: "\f479"; +} +.fa-first-order:before { + content: "\f2b0"; +} +.fa-first-order-alt:before { + content: "\f50a"; +} +.fa-firstdraft:before { + content: "\f3a1"; +} +.fa-fish:before { + content: "\f578"; +} +.fa-fist-raised:before { + content: "\f6de"; +} +.fa-flag:before { + content: "\f024"; +} +.fa-flag-checkered:before { + content: "\f11e"; +} +.fa-flag-usa:before { + content: "\f74d"; +} +.fa-flask:before { + content: "\f0c3"; +} +.fa-flickr:before { + content: "\f16e"; +} +.fa-flipboard:before { + content: "\f44d"; +} +.fa-flushed:before { + content: "\f579"; +} +.fa-fly:before { + content: "\f417"; +} +.fa-folder:before { + content: "\f07b"; +} +.fa-folder-minus:before { + content: "\f65d"; +} +.fa-folder-open:before { + content: "\f07c"; +} +.fa-folder-plus:before { + content: "\f65e"; +} +.fa-font:before { + content: "\f031"; +} +.fa-font-awesome:before { + content: "\f2b4"; +} +.fa-font-awesome-alt:before { + content: "\f35c"; +} +.fa-font-awesome-flag:before { + content: "\f425"; +} +.fa-font-awesome-logo-full:before { + content: "\f4e6"; +} +.fa-fonticons:before { + content: "\f280"; +} +.fa-fonticons-fi:before { + content: "\f3a2"; +} +.fa-football-ball:before { + content: "\f44e"; +} +.fa-fort-awesome:before { + content: "\f286"; +} +.fa-fort-awesome-alt:before { + content: "\f3a3"; +} +.fa-forumbee:before { + content: "\f211"; +} +.fa-forward:before { + content: "\f04e"; +} +.fa-foursquare:before { + content: "\f180"; +} +.fa-free-code-camp:before { + content: "\f2c5"; +} +.fa-freebsd:before { + content: "\f3a4"; +} +.fa-frog:before { + content: "\f52e"; +} +.fa-frown:before { + content: "\f119"; +} +.fa-frown-open:before { + content: "\f57a"; +} +.fa-fulcrum:before { + content: "\f50b"; +} +.fa-funnel-dollar:before { + content: "\f662"; +} +.fa-futbol:before { + content: "\f1e3"; +} +.fa-galactic-republic:before { + content: "\f50c"; +} +.fa-galactic-senate:before { + content: "\f50d"; +} +.fa-gamepad:before { + content: "\f11b"; +} +.fa-gas-pump:before { + content: "\f52f"; +} +.fa-gavel:before { + content: "\f0e3"; +} +.fa-gem:before { + content: "\f3a5"; +} +.fa-genderless:before { + content: "\f22d"; +} +.fa-get-pocket:before { + content: "\f265"; +} +.fa-gg:before { + content: "\f260"; +} +.fa-gg-circle:before { + content: "\f261"; +} +.fa-ghost:before { + content: "\f6e2"; +} +.fa-gift:before { + content: "\f06b"; +} +.fa-gifts:before { + content: "\f79c"; +} +.fa-git:before { + content: "\f1d3"; +} +.fa-git-alt:before { + content: "\f841"; +} +.fa-git-square:before { + content: "\f1d2"; +} +.fa-github:before { + content: "\f09b"; +} +.fa-github-alt:before { + content: "\f113"; +} +.fa-github-square:before { + content: "\f092"; +} +.fa-gitkraken:before { + content: "\f3a6"; +} +.fa-gitlab:before { + content: "\f296"; +} +.fa-gitter:before { + content: "\f426"; +} +.fa-glass-cheers:before { + content: "\f79f"; +} +.fa-glass-martini:before { + content: "\f000"; +} +.fa-glass-martini-alt:before { + content: "\f57b"; +} +.fa-glass-whiskey:before { + content: "\f7a0"; +} +.fa-glasses:before { + content: "\f530"; +} +.fa-glide:before { + content: "\f2a5"; +} +.fa-glide-g:before { + content: "\f2a6"; +} +.fa-globe:before { + content: "\f0ac"; +} +.fa-globe-africa:before { + content: "\f57c"; +} +.fa-globe-americas:before { + content: "\f57d"; +} +.fa-globe-asia:before { + content: "\f57e"; +} +.fa-globe-europe:before { + content: "\f7a2"; +} +.fa-gofore:before { + content: "\f3a7"; +} +.fa-golf-ball:before { + content: "\f450"; +} +.fa-goodreads:before { + content: "\f3a8"; +} +.fa-goodreads-g:before { + content: "\f3a9"; +} +.fa-google:before { + content: "\f1a0"; +} +.fa-google-drive:before { + content: "\f3aa"; +} +.fa-google-pay:before { + content: "\f979"; +} +.fa-google-play:before { + content: "\f3ab"; +} +.fa-google-plus:before { + content: "\f2b3"; +} +.fa-google-plus-g:before { + content: "\f0d5"; +} +.fa-google-plus-square:before { + content: "\f0d4"; +} +.fa-google-wallet:before { + content: "\f1ee"; +} +.fa-gopuram:before { + content: "\f664"; +} +.fa-graduation-cap:before { + content: "\f19d"; +} +.fa-gratipay:before { + content: "\f184"; +} +.fa-grav:before { + content: "\f2d6"; +} +.fa-greater-than:before { + content: "\f531"; +} +.fa-greater-than-equal:before { + content: "\f532"; +} +.fa-grimace:before { + content: "\f57f"; +} +.fa-grin:before { + content: "\f580"; +} +.fa-grin-alt:before { + content: "\f581"; +} +.fa-grin-beam:before { + content: "\f582"; +} +.fa-grin-beam-sweat:before { + content: "\f583"; +} +.fa-grin-hearts:before { + content: "\f584"; +} +.fa-grin-squint:before { + content: "\f585"; +} +.fa-grin-squint-tears:before { + content: "\f586"; +} +.fa-grin-stars:before { + content: "\f587"; +} +.fa-grin-tears:before { + content: "\f588"; +} +.fa-grin-tongue:before { + content: "\f589"; +} +.fa-grin-tongue-squint:before { + content: "\f58a"; +} +.fa-grin-tongue-wink:before { + content: "\f58b"; +} +.fa-grin-wink:before { + content: "\f58c"; +} +.fa-grip-horizontal:before { + content: "\f58d"; +} +.fa-grip-lines:before { + content: "\f7a4"; +} +.fa-grip-lines-vertical:before { + content: "\f7a5"; +} +.fa-grip-vertical:before { + content: "\f58e"; +} +.fa-gripfire:before { + content: "\f3ac"; +} +.fa-grunt:before { + content: "\f3ad"; +} +.fa-guitar:before { + content: "\f7a6"; +} +.fa-gulp:before { + content: "\f3ae"; +} +.fa-h-square:before { + content: "\f0fd"; +} +.fa-hacker-news:before { + content: "\f1d4"; +} +.fa-hacker-news-square:before { + content: "\f3af"; +} +.fa-hackerrank:before { + content: "\f5f7"; +} +.fa-hamburger:before { + content: "\f805"; +} +.fa-hammer:before { + content: "\f6e3"; +} +.fa-hamsa:before { + content: "\f665"; +} +.fa-hand-holding:before { + content: "\f4bd"; +} +.fa-hand-holding-heart:before { + content: "\f4be"; +} +.fa-hand-holding-medical:before { + content: "\f95c"; +} +.fa-hand-holding-usd:before { + content: "\f4c0"; +} +.fa-hand-holding-water:before { + content: "\f4c1"; +} +.fa-hand-lizard:before { + content: "\f258"; +} +.fa-hand-middle-finger:before { + content: "\f806"; +} +.fa-hand-paper:before { + content: "\f256"; +} +.fa-hand-peace:before { + content: "\f25b"; +} +.fa-hand-point-down:before { + content: "\f0a7"; +} +.fa-hand-point-left:before { + content: "\f0a5"; +} +.fa-hand-point-right:before { + content: "\f0a4"; +} +.fa-hand-point-up:before { + content: "\f0a6"; +} +.fa-hand-pointer:before { + content: "\f25a"; +} +.fa-hand-rock:before { + content: "\f255"; +} +.fa-hand-scissors:before { + content: "\f257"; +} +.fa-hand-sparkles:before { + content: "\f95d"; +} +.fa-hand-spock:before { + content: "\f259"; +} +.fa-hands:before { + content: "\f4c2"; +} +.fa-hands-helping:before { + content: "\f4c4"; +} +.fa-hands-wash:before { + content: "\f95e"; +} +.fa-handshake:before { + content: "\f2b5"; +} +.fa-handshake-alt-slash:before { + content: "\f95f"; +} +.fa-handshake-slash:before { + content: "\f960"; +} +.fa-hanukiah:before { + content: "\f6e6"; +} +.fa-hard-hat:before { + content: "\f807"; +} +.fa-hashtag:before { + content: "\f292"; +} +.fa-hat-cowboy:before { + content: "\f8c0"; +} +.fa-hat-cowboy-side:before { + content: "\f8c1"; +} +.fa-hat-wizard:before { + content: "\f6e8"; +} +.fa-hdd:before { + content: "\f0a0"; +} +.fa-head-side-cough:before { + content: "\f961"; +} +.fa-head-side-cough-slash:before { + content: "\f962"; +} +.fa-head-side-mask:before { + content: "\f963"; +} +.fa-head-side-virus:before { + content: "\f964"; +} +.fa-heading:before { + content: "\f1dc"; +} +.fa-headphones:before { + content: "\f025"; +} +.fa-headphones-alt:before { + content: "\f58f"; +} +.fa-headset:before { + content: "\f590"; +} +.fa-heart:before { + content: "\f004"; +} +.fa-heart-broken:before { + content: "\f7a9"; +} +.fa-heartbeat:before { + content: "\f21e"; +} +.fa-helicopter:before { + content: "\f533"; +} +.fa-highlighter:before { + content: "\f591"; +} +.fa-hiking:before { + content: "\f6ec"; +} +.fa-hippo:before { + content: "\f6ed"; +} +.fa-hips:before { + content: "\f452"; +} +.fa-hire-a-helper:before { + content: "\f3b0"; +} +.fa-history:before { + content: "\f1da"; +} +.fa-hockey-puck:before { + content: "\f453"; +} +.fa-holly-berry:before { + content: "\f7aa"; +} +.fa-home:before { + content: "\f015"; +} +.fa-hooli:before { + content: "\f427"; +} +.fa-hornbill:before { + content: "\f592"; +} +.fa-horse:before { + content: "\f6f0"; +} +.fa-horse-head:before { + content: "\f7ab"; +} +.fa-hospital:before { + content: "\f0f8"; +} +.fa-hospital-alt:before { + content: "\f47d"; +} +.fa-hospital-symbol:before { + content: "\f47e"; +} +.fa-hospital-user:before { + content: "\f80d"; +} +.fa-hot-tub:before { + content: "\f593"; +} +.fa-hotdog:before { + content: "\f80f"; +} +.fa-hotel:before { + content: "\f594"; +} +.fa-hotjar:before { + content: "\f3b1"; +} +.fa-hourglass:before { + content: "\f254"; +} +.fa-hourglass-end:before { + content: "\f253"; +} +.fa-hourglass-half:before { + content: "\f252"; +} +.fa-hourglass-start:before { + content: "\f251"; +} +.fa-house-damage:before { + content: "\f6f1"; +} +.fa-house-user:before { + content: "\f965"; +} +.fa-houzz:before { + content: "\f27c"; +} +.fa-hryvnia:before { + content: "\f6f2"; +} +.fa-html5:before { + content: "\f13b"; +} +.fa-hubspot:before { + content: "\f3b2"; +} +.fa-i-cursor:before { + content: "\f246"; +} +.fa-ice-cream:before { + content: "\f810"; +} +.fa-icicles:before { + content: "\f7ad"; +} +.fa-icons:before { + content: "\f86d"; +} +.fa-id-badge:before { + content: "\f2c1"; +} +.fa-id-card:before { + content: "\f2c2"; +} +.fa-id-card-alt:before { + content: "\f47f"; +} +.fa-ideal:before { + content: "\f913"; +} +.fa-igloo:before { + content: "\f7ae"; +} +.fa-image:before { + content: "\f03e"; +} +.fa-images:before { + content: "\f302"; +} +.fa-imdb:before { + content: "\f2d8"; +} +.fa-inbox:before { + content: "\f01c"; +} +.fa-indent:before { + content: "\f03c"; +} +.fa-industry:before { + content: "\f275"; +} +.fa-infinity:before { + content: "\f534"; +} +.fa-info:before { + content: "\f129"; +} +.fa-info-circle:before { + content: "\f05a"; +} +.fa-instagram:before { + content: "\f16d"; +} +.fa-instagram-square:before { + content: "\f955"; +} +.fa-intercom:before { + content: "\f7af"; +} +.fa-internet-explorer:before { + content: "\f26b"; +} +.fa-invision:before { + content: "\f7b0"; +} +.fa-ioxhost:before { + content: "\f208"; +} +.fa-italic:before { + content: "\f033"; +} +.fa-itch-io:before { + content: "\f83a"; +} +.fa-itunes:before { + content: "\f3b4"; +} +.fa-itunes-note:before { + content: "\f3b5"; +} +.fa-java:before { + content: "\f4e4"; +} +.fa-jedi:before { + content: "\f669"; +} +.fa-jedi-order:before { + content: "\f50e"; +} +.fa-jenkins:before { + content: "\f3b6"; +} +.fa-jira:before { + content: "\f7b1"; +} +.fa-joget:before { + content: "\f3b7"; +} +.fa-joint:before { + content: "\f595"; +} +.fa-joomla:before { + content: "\f1aa"; +} +.fa-journal-whills:before { + content: "\f66a"; +} +.fa-js:before { + content: "\f3b8"; +} +.fa-js-square:before { + content: "\f3b9"; +} +.fa-jsfiddle:before { + content: "\f1cc"; +} +.fa-kaaba:before { + content: "\f66b"; +} +.fa-kaggle:before { + content: "\f5fa"; +} +.fa-key:before { + content: "\f084"; +} +.fa-keybase:before { + content: "\f4f5"; +} +.fa-keyboard:before { + content: "\f11c"; +} +.fa-keycdn:before { + content: "\f3ba"; +} +.fa-khanda:before { + content: "\f66d"; +} +.fa-kickstarter:before { + content: "\f3bb"; +} +.fa-kickstarter-k:before { + content: "\f3bc"; +} +.fa-kiss:before { + content: "\f596"; +} +.fa-kiss-beam:before { + content: "\f597"; +} +.fa-kiss-wink-heart:before { + content: "\f598"; +} +.fa-kiwi-bird:before { + content: "\f535"; +} +.fa-korvue:before { + content: "\f42f"; +} +.fa-landmark:before { + content: "\f66f"; +} +.fa-language:before { + content: "\f1ab"; +} +.fa-laptop:before { + content: "\f109"; +} +.fa-laptop-code:before { + content: "\f5fc"; +} +.fa-laptop-house:before { + content: "\f966"; +} +.fa-laptop-medical:before { + content: "\f812"; +} +.fa-laravel:before { + content: "\f3bd"; +} +.fa-lastfm:before { + content: "\f202"; +} +.fa-lastfm-square:before { + content: "\f203"; +} +.fa-laugh:before { + content: "\f599"; +} +.fa-laugh-beam:before { + content: "\f59a"; +} +.fa-laugh-squint:before { + content: "\f59b"; +} +.fa-laugh-wink:before { + content: "\f59c"; +} +.fa-layer-group:before { + content: "\f5fd"; +} +.fa-leaf:before { + content: "\f06c"; +} +.fa-leanpub:before { + content: "\f212"; +} +.fa-lemon:before { + content: "\f094"; +} +.fa-less:before { + content: "\f41d"; +} +.fa-less-than:before { + content: "\f536"; +} +.fa-less-than-equal:before { + content: "\f537"; +} +.fa-level-down-alt:before { + content: "\f3be"; +} +.fa-level-up-alt:before { + content: "\f3bf"; +} +.fa-life-ring:before { + content: "\f1cd"; +} +.fa-lightbulb:before { + content: "\f0eb"; +} +.fa-line:before { + content: "\f3c0"; +} +.fa-link:before { + content: "\f0c1"; +} +.fa-linkedin:before { + content: "\f08c"; +} +.fa-linkedin-in:before { + content: "\f0e1"; +} +.fa-linode:before { + content: "\f2b8"; +} +.fa-linux:before { + content: "\f17c"; +} +.fa-lira-sign:before { + content: "\f195"; +} +.fa-list:before { + content: "\f03a"; +} +.fa-list-alt:before { + content: "\f022"; +} +.fa-list-ol:before { + content: "\f0cb"; +} +.fa-list-ul:before { + content: "\f0ca"; +} +.fa-location-arrow:before { + content: "\f124"; +} +.fa-lock:before { + content: "\f023"; +} +.fa-lock-open:before { + content: "\f3c1"; +} +.fa-long-arrow-alt-down:before { + content: "\f309"; +} +.fa-long-arrow-alt-left:before { + content: "\f30a"; +} +.fa-long-arrow-alt-right:before { + content: "\f30b"; +} +.fa-long-arrow-alt-up:before { + content: "\f30c"; +} +.fa-low-vision:before { + content: "\f2a8"; +} +.fa-luggage-cart:before { + content: "\f59d"; +} +.fa-lungs:before { + content: "\f604"; +} +.fa-lungs-virus:before { + content: "\f967"; +} +.fa-lyft:before { + content: "\f3c3"; +} +.fa-magento:before { + content: "\f3c4"; +} +.fa-magic:before { + content: "\f0d0"; +} +.fa-magnet:before { + content: "\f076"; +} +.fa-mail-bulk:before { + content: "\f674"; +} +.fa-mailchimp:before { + content: "\f59e"; +} +.fa-male:before { + content: "\f183"; +} +.fa-mandalorian:before { + content: "\f50f"; +} +.fa-map:before { + content: "\f279"; +} +.fa-map-marked:before { + content: "\f59f"; +} +.fa-map-marked-alt:before { + content: "\f5a0"; +} +.fa-map-marker:before { + content: "\f041"; +} +.fa-map-marker-alt:before { + content: "\f3c5"; +} +.fa-map-pin:before { + content: "\f276"; +} +.fa-map-signs:before { + content: "\f277"; +} +.fa-markdown:before { + content: "\f60f"; +} +.fa-marker:before { + content: "\f5a1"; +} +.fa-mars:before { + content: "\f222"; +} +.fa-mars-double:before { + content: "\f227"; +} +.fa-mars-stroke:before { + content: "\f229"; +} +.fa-mars-stroke-h:before { + content: "\f22b"; +} +.fa-mars-stroke-v:before { + content: "\f22a"; +} +.fa-mask:before { + content: "\f6fa"; +} +.fa-mastodon:before { + content: "\f4f6"; +} +.fa-maxcdn:before { + content: "\f136"; +} +.fa-mdb:before { + content: "\f8ca"; +} +.fa-medal:before { + content: "\f5a2"; +} +.fa-medapps:before { + content: "\f3c6"; +} +.fa-medium:before { + content: "\f23a"; +} +.fa-medium-m:before { + content: "\f3c7"; +} +.fa-medkit:before { + content: "\f0fa"; +} +.fa-medrt:before { + content: "\f3c8"; +} +.fa-meetup:before { + content: "\f2e0"; +} +.fa-megaport:before { + content: "\f5a3"; +} +.fa-meh:before { + content: "\f11a"; +} +.fa-meh-blank:before { + content: "\f5a4"; +} +.fa-meh-rolling-eyes:before { + content: "\f5a5"; +} +.fa-memory:before { + content: "\f538"; +} +.fa-mendeley:before { + content: "\f7b3"; +} +.fa-menorah:before { + content: "\f676"; +} +.fa-mercury:before { + content: "\f223"; +} +.fa-meteor:before { + content: "\f753"; +} +.fa-microblog:before { + content: "\f91a"; +} +.fa-microchip:before { + content: "\f2db"; +} +.fa-microphone:before { + content: "\f130"; +} +.fa-microphone-alt:before { + content: "\f3c9"; +} +.fa-microphone-alt-slash:before { + content: "\f539"; +} +.fa-microphone-slash:before { + content: "\f131"; +} +.fa-microscope:before { + content: "\f610"; +} +.fa-microsoft:before { + content: "\f3ca"; +} +.fa-minus:before { + content: "\f068"; +} +.fa-minus-circle:before { + content: "\f056"; +} +.fa-minus-square:before { + content: "\f146"; +} +.fa-mitten:before { + content: "\f7b5"; +} +.fa-mix:before { + content: "\f3cb"; +} +.fa-mixcloud:before { + content: "\f289"; +} +.fa-mixer:before { + content: "\f956"; +} +.fa-mizuni:before { + content: "\f3cc"; +} +.fa-mobile:before { + content: "\f10b"; +} +.fa-mobile-alt:before { + content: "\f3cd"; +} +.fa-modx:before { + content: "\f285"; +} +.fa-monero:before { + content: "\f3d0"; +} +.fa-money-bill:before { + content: "\f0d6"; +} +.fa-money-bill-alt:before { + content: "\f3d1"; +} +.fa-money-bill-wave:before { + content: "\f53a"; +} +.fa-money-bill-wave-alt:before { + content: "\f53b"; +} +.fa-money-check:before { + content: "\f53c"; +} +.fa-money-check-alt:before { + content: "\f53d"; +} +.fa-monument:before { + content: "\f5a6"; +} +.fa-moon:before { + content: "\f186"; +} +.fa-mortar-pestle:before { + content: "\f5a7"; +} +.fa-mosque:before { + content: "\f678"; +} +.fa-motorcycle:before { + content: "\f21c"; +} +.fa-mountain:before { + content: "\f6fc"; +} +.fa-mouse:before { + content: "\f8cc"; +} +.fa-mouse-pointer:before { + content: "\f245"; +} +.fa-mug-hot:before { + content: "\f7b6"; +} +.fa-music:before { + content: "\f001"; +} +.fa-napster:before { + content: "\f3d2"; +} +.fa-neos:before { + content: "\f612"; +} +.fa-network-wired:before { + content: "\f6ff"; +} +.fa-neuter:before { + content: "\f22c"; +} +.fa-newspaper:before { + content: "\f1ea"; +} +.fa-nimblr:before { + content: "\f5a8"; +} +.fa-node:before { + content: "\f419"; +} +.fa-node-js:before { + content: "\f3d3"; +} +.fa-not-equal:before { + content: "\f53e"; +} +.fa-notes-medical:before { + content: "\f481"; +} +.fa-npm:before { + content: "\f3d4"; +} +.fa-ns8:before { + content: "\f3d5"; +} +.fa-nutritionix:before { + content: "\f3d6"; +} +.fa-object-group:before { + content: "\f247"; +} +.fa-object-ungroup:before { + content: "\f248"; +} +.fa-odnoklassniki:before { + content: "\f263"; +} +.fa-odnoklassniki-square:before { + content: "\f264"; +} +.fa-oil-can:before { + content: "\f613"; +} +.fa-old-republic:before { + content: "\f510"; +} +.fa-om:before { + content: "\f679"; +} +.fa-opencart:before { + content: "\f23d"; +} +.fa-openid:before { + content: "\f19b"; +} +.fa-opera:before { + content: "\f26a"; +} +.fa-optin-monster:before { + content: "\f23c"; +} +.fa-orcid:before { + content: "\f8d2"; +} +.fa-osi:before { + content: "\f41a"; +} +.fa-otter:before { + content: "\f700"; +} +.fa-outdent:before { + content: "\f03b"; +} +.fa-page4:before { + content: "\f3d7"; +} +.fa-pagelines:before { + content: "\f18c"; +} +.fa-pager:before { + content: "\f815"; +} +.fa-paint-brush:before { + content: "\f1fc"; +} +.fa-paint-roller:before { + content: "\f5aa"; +} +.fa-palette:before { + content: "\f53f"; +} +.fa-palfed:before { + content: "\f3d8"; +} +.fa-pallet:before { + content: "\f482"; +} +.fa-paper-plane:before { + content: "\f1d8"; +} +.fa-paperclip:before { + content: "\f0c6"; +} +.fa-parachute-box:before { + content: "\f4cd"; +} +.fa-paragraph:before { + content: "\f1dd"; +} +.fa-parking:before { + content: "\f540"; +} +.fa-passport:before { + content: "\f5ab"; +} +.fa-pastafarianism:before { + content: "\f67b"; +} +.fa-paste:before { + content: "\f0ea"; +} +.fa-patreon:before { + content: "\f3d9"; +} +.fa-pause:before { + content: "\f04c"; +} +.fa-pause-circle:before { + content: "\f28b"; +} +.fa-paw:before { + content: "\f1b0"; +} +.fa-paypal:before { + content: "\f1ed"; +} +.fa-peace:before { + content: "\f67c"; +} +.fa-pen:before { + content: "\f304"; +} +.fa-pen-alt:before { + content: "\f305"; +} +.fa-pen-fancy:before { + content: "\f5ac"; +} +.fa-pen-nib:before { + content: "\f5ad"; +} +.fa-pen-square:before { + content: "\f14b"; +} +.fa-pencil-alt:before { + content: "\f303"; +} +.fa-pencil-ruler:before { + content: "\f5ae"; +} +.fa-penny-arcade:before { + content: "\f704"; +} +.fa-people-arrows:before { + content: "\f968"; +} +.fa-people-carry:before { + content: "\f4ce"; +} +.fa-pepper-hot:before { + content: "\f816"; +} +.fa-percent:before { + content: "\f295"; +} +.fa-percentage:before { + content: "\f541"; +} +.fa-periscope:before { + content: "\f3da"; +} +.fa-person-booth:before { + content: "\f756"; +} +.fa-phabricator:before { + content: "\f3db"; +} +.fa-phoenix-framework:before { + content: "\f3dc"; +} +.fa-phoenix-squadron:before { + content: "\f511"; +} +.fa-phone:before { + content: "\f095"; +} +.fa-phone-alt:before { + content: "\f879"; +} +.fa-phone-slash:before { + content: "\f3dd"; +} +.fa-phone-square:before { + content: "\f098"; +} +.fa-phone-square-alt:before { + content: "\f87b"; +} +.fa-phone-volume:before { + content: "\f2a0"; +} +.fa-photo-video:before { + content: "\f87c"; +} +.fa-php:before { + content: "\f457"; +} +.fa-pied-piper:before { + content: "\f2ae"; +} +.fa-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-pied-piper-hat:before { + content: "\f4e5"; +} +.fa-pied-piper-pp:before { + content: "\f1a7"; +} +.fa-pied-piper-square:before { + content: "\f91e"; +} +.fa-piggy-bank:before { + content: "\f4d3"; +} +.fa-pills:before { + content: "\f484"; +} +.fa-pinterest:before { + content: "\f0d2"; +} +.fa-pinterest-p:before { + content: "\f231"; +} +.fa-pinterest-square:before { + content: "\f0d3"; +} +.fa-pizza-slice:before { + content: "\f818"; +} +.fa-place-of-worship:before { + content: "\f67f"; +} +.fa-plane:before { + content: "\f072"; +} +.fa-plane-arrival:before { + content: "\f5af"; +} +.fa-plane-departure:before { + content: "\f5b0"; +} +.fa-plane-slash:before { + content: "\f969"; +} +.fa-play:before { + content: "\f04b"; +} +.fa-play-circle:before { + content: "\f144"; +} +.fa-playstation:before { + content: "\f3df"; +} +.fa-plug:before { + content: "\f1e6"; +} +.fa-plus:before { + content: "\f067"; +} +.fa-plus-circle:before { + content: "\f055"; +} +.fa-plus-square:before { + content: "\f0fe"; +} +.fa-podcast:before { + content: "\f2ce"; +} +.fa-poll:before { + content: "\f681"; +} +.fa-poll-h:before { + content: "\f682"; +} +.fa-poo:before { + content: "\f2fe"; +} +.fa-poo-storm:before { + content: "\f75a"; +} +.fa-poop:before { + content: "\f619"; +} +.fa-portrait:before { + content: "\f3e0"; +} +.fa-pound-sign:before { + content: "\f154"; +} +.fa-power-off:before { + content: "\f011"; +} +.fa-pray:before { + content: "\f683"; +} +.fa-praying-hands:before { + content: "\f684"; +} +.fa-prescription:before { + content: "\f5b1"; +} +.fa-prescription-bottle:before { + content: "\f485"; +} +.fa-prescription-bottle-alt:before { + content: "\f486"; +} +.fa-print:before { + content: "\f02f"; +} +.fa-procedures:before { + content: "\f487"; +} +.fa-product-hunt:before { + content: "\f288"; +} +.fa-project-diagram:before { + content: "\f542"; +} +.fa-pump-medical:before { + content: "\f96a"; +} +.fa-pump-soap:before { + content: "\f96b"; +} +.fa-pushed:before { + content: "\f3e1"; +} +.fa-puzzle-piece:before { + content: "\f12e"; +} +.fa-python:before { + content: "\f3e2"; +} +.fa-qq:before { + content: "\f1d6"; +} +.fa-qrcode:before { + content: "\f029"; +} +.fa-question:before { + content: "\f128"; +} +.fa-question-circle:before { + content: "\f059"; +} +.fa-quidditch:before { + content: "\f458"; +} +.fa-quinscape:before { + content: "\f459"; +} +.fa-quora:before { + content: "\f2c4"; +} +.fa-quote-left:before { + content: "\f10d"; +} +.fa-quote-right:before { + content: "\f10e"; +} +.fa-quran:before { + content: "\f687"; +} +.fa-r-project:before { + content: "\f4f7"; +} +.fa-radiation:before { + content: "\f7b9"; +} +.fa-radiation-alt:before { + content: "\f7ba"; +} +.fa-rainbow:before { + content: "\f75b"; +} +.fa-random:before { + content: "\f074"; +} +.fa-raspberry-pi:before { + content: "\f7bb"; +} +.fa-ravelry:before { + content: "\f2d9"; +} +.fa-react:before { + content: "\f41b"; +} +.fa-reacteurope:before { + content: "\f75d"; +} +.fa-readme:before { + content: "\f4d5"; +} +.fa-rebel:before { + content: "\f1d0"; +} +.fa-receipt:before { + content: "\f543"; +} +.fa-record-vinyl:before { + content: "\f8d9"; +} +.fa-recycle:before { + content: "\f1b8"; +} +.fa-red-river:before { + content: "\f3e3"; +} +.fa-reddit:before { + content: "\f1a1"; +} +.fa-reddit-alien:before { + content: "\f281"; +} +.fa-reddit-square:before { + content: "\f1a2"; +} +.fa-redhat:before { + content: "\f7bc"; +} +.fa-redo:before { + content: "\f01e"; +} +.fa-redo-alt:before { + content: "\f2f9"; +} +.fa-registered:before { + content: "\f25d"; +} +.fa-remove-format:before { + content: "\f87d"; +} +.fa-renren:before { + content: "\f18b"; +} +.fa-reply:before { + content: "\f3e5"; +} +.fa-reply-all:before { + content: "\f122"; +} +.fa-replyd:before { + content: "\f3e6"; +} +.fa-republican:before { + content: "\f75e"; +} +.fa-researchgate:before { + content: "\f4f8"; +} +.fa-resolving:before { + content: "\f3e7"; +} +.fa-restroom:before { + content: "\f7bd"; +} +.fa-retweet:before { + content: "\f079"; +} +.fa-rev:before { + content: "\f5b2"; +} +.fa-ribbon:before { + content: "\f4d6"; +} +.fa-ring:before { + content: "\f70b"; +} +.fa-road:before { + content: "\f018"; +} +.fa-robot:before { + content: "\f544"; +} +.fa-rocket:before { + content: "\f135"; +} +.fa-rocketchat:before { + content: "\f3e8"; +} +.fa-rockrms:before { + content: "\f3e9"; +} +.fa-route:before { + content: "\f4d7"; +} +.fa-rss:before { + content: "\f09e"; +} +.fa-rss-square:before { + content: "\f143"; +} +.fa-ruble-sign:before { + content: "\f158"; +} +.fa-ruler:before { + content: "\f545"; +} +.fa-ruler-combined:before { + content: "\f546"; +} +.fa-ruler-horizontal:before { + content: "\f547"; +} +.fa-ruler-vertical:before { + content: "\f548"; +} +.fa-running:before { + content: "\f70c"; +} +.fa-rupee-sign:before { + content: "\f156"; +} +.fa-rust:before { + content: "\f97a"; +} +.fa-sad-cry:before { + content: "\f5b3"; +} +.fa-sad-tear:before { + content: "\f5b4"; +} +.fa-safari:before { + content: "\f267"; +} +.fa-salesforce:before { + content: "\f83b"; +} +.fa-sass:before { + content: "\f41e"; +} +.fa-satellite:before { + content: "\f7bf"; +} +.fa-satellite-dish:before { + content: "\f7c0"; +} +.fa-save:before { + content: "\f0c7"; +} +.fa-schlix:before { + content: "\f3ea"; +} +.fa-school:before { + content: "\f549"; +} +.fa-screwdriver:before { + content: "\f54a"; +} +.fa-scribd:before { + content: "\f28a"; +} +.fa-scroll:before { + content: "\f70e"; +} +.fa-sd-card:before { + content: "\f7c2"; +} +.fa-search:before { + content: "\f002"; +} +.fa-search-dollar:before { + content: "\f688"; +} +.fa-search-location:before { + content: "\f689"; +} +.fa-search-minus:before { + content: "\f010"; +} +.fa-search-plus:before { + content: "\f00e"; +} +.fa-searchengin:before { + content: "\f3eb"; +} +.fa-seedling:before { + content: "\f4d8"; +} +.fa-sellcast:before { + content: "\f2da"; +} +.fa-sellsy:before { + content: "\f213"; +} +.fa-server:before { + content: "\f233"; +} +.fa-servicestack:before { + content: "\f3ec"; +} +.fa-shapes:before { + content: "\f61f"; +} +.fa-share:before { + content: "\f064"; +} +.fa-share-alt:before { + content: "\f1e0"; +} +.fa-share-alt-square:before { + content: "\f1e1"; +} +.fa-share-square:before { + content: "\f14d"; +} +.fa-shekel-sign:before { + content: "\f20b"; +} +.fa-shield-alt:before { + content: "\f3ed"; +} +.fa-shield-virus:before { + content: "\f96c"; +} +.fa-ship:before { + content: "\f21a"; +} +.fa-shipping-fast:before { + content: "\f48b"; +} +.fa-shirtsinbulk:before { + content: "\f214"; +} +.fa-shoe-prints:before { + content: "\f54b"; +} +.fa-shopify:before { + content: "\f957"; +} +.fa-shopping-bag:before { + content: "\f290"; +} +.fa-shopping-basket:before { + content: "\f291"; +} +.fa-shopping-cart:before { + content: "\f07a"; +} +.fa-shopware:before { + content: "\f5b5"; +} +.fa-shower:before { + content: "\f2cc"; +} +.fa-shuttle-van:before { + content: "\f5b6"; +} +.fa-sign:before { + content: "\f4d9"; +} +.fa-sign-in-alt:before { + content: "\f2f6"; +} +.fa-sign-language:before { + content: "\f2a7"; +} +.fa-sign-out-alt:before { + content: "\f2f5"; +} +.fa-signal:before { + content: "\f012"; +} +.fa-signature:before { + content: "\f5b7"; +} +.fa-sim-card:before { + content: "\f7c4"; +} +.fa-simplybuilt:before { + content: "\f215"; +} +.fa-sink:before { + content: "\f96d"; +} +.fa-sistrix:before { + content: "\f3ee"; +} +.fa-sitemap:before { + content: "\f0e8"; +} +.fa-sith:before { + content: "\f512"; +} +.fa-skating:before { + content: "\f7c5"; +} +.fa-sketch:before { + content: "\f7c6"; +} +.fa-skiing:before { + content: "\f7c9"; +} +.fa-skiing-nordic:before { + content: "\f7ca"; +} +.fa-skull:before { + content: "\f54c"; +} +.fa-skull-crossbones:before { + content: "\f714"; +} +.fa-skyatlas:before { + content: "\f216"; +} +.fa-skype:before { + content: "\f17e"; +} +.fa-slack:before { + content: "\f198"; +} +.fa-slack-hash:before { + content: "\f3ef"; +} +.fa-slash:before { + content: "\f715"; +} +.fa-sleigh:before { + content: "\f7cc"; +} +.fa-sliders-h:before { + content: "\f1de"; +} +.fa-slideshare:before { + content: "\f1e7"; +} +.fa-smile:before { + content: "\f118"; +} +.fa-smile-beam:before { + content: "\f5b8"; +} +.fa-smile-wink:before { + content: "\f4da"; +} +.fa-smog:before { + content: "\f75f"; +} +.fa-smoking:before { + content: "\f48d"; +} +.fa-smoking-ban:before { + content: "\f54d"; +} +.fa-sms:before { + content: "\f7cd"; +} +.fa-snapchat:before { + content: "\f2ab"; +} +.fa-snapchat-ghost:before { + content: "\f2ac"; +} +.fa-snapchat-square:before { + content: "\f2ad"; +} +.fa-snowboarding:before { + content: "\f7ce"; +} +.fa-snowflake:before { + content: "\f2dc"; +} +.fa-snowman:before { + content: "\f7d0"; +} +.fa-snowplow:before { + content: "\f7d2"; +} +.fa-soap:before { + content: "\f96e"; +} +.fa-socks:before { + content: "\f696"; +} +.fa-solar-panel:before { + content: "\f5ba"; +} +.fa-sort:before { + content: "\f0dc"; +} +.fa-sort-alpha-down:before { + content: "\f15d"; +} +.fa-sort-alpha-down-alt:before { + content: "\f881"; +} +.fa-sort-alpha-up:before { + content: "\f15e"; +} +.fa-sort-alpha-up-alt:before { + content: "\f882"; +} +.fa-sort-amount-down:before { + content: "\f160"; +} +.fa-sort-amount-down-alt:before { + content: "\f884"; +} +.fa-sort-amount-up:before { + content: "\f161"; +} +.fa-sort-amount-up-alt:before { + content: "\f885"; +} +.fa-sort-down:before { + content: "\f0dd"; +} +.fa-sort-numeric-down:before { + content: "\f162"; +} +.fa-sort-numeric-down-alt:before { + content: "\f886"; +} +.fa-sort-numeric-up:before { + content: "\f163"; +} +.fa-sort-numeric-up-alt:before { + content: "\f887"; +} +.fa-sort-up:before { + content: "\f0de"; +} +.fa-soundcloud:before { + content: "\f1be"; +} +.fa-sourcetree:before { + content: "\f7d3"; +} +.fa-spa:before { + content: "\f5bb"; +} +.fa-space-shuttle:before { + content: "\f197"; +} +.fa-speakap:before { + content: "\f3f3"; +} +.fa-speaker-deck:before { + content: "\f83c"; +} +.fa-spell-check:before { + content: "\f891"; +} +.fa-spider:before { + content: "\f717"; +} +.fa-spinner:before { + content: "\f110"; +} +.fa-splotch:before { + content: "\f5bc"; +} +.fa-spotify:before { + content: "\f1bc"; +} +.fa-spray-can:before { + content: "\f5bd"; +} +.fa-square:before { + content: "\f0c8"; +} +.fa-square-full:before { + content: "\f45c"; +} +.fa-square-root-alt:before { + content: "\f698"; +} +.fa-squarespace:before { + content: "\f5be"; +} +.fa-stack-exchange:before { + content: "\f18d"; +} +.fa-stack-overflow:before { + content: "\f16c"; +} +.fa-stackpath:before { + content: "\f842"; +} +.fa-stamp:before { + content: "\f5bf"; +} +.fa-star:before { + content: "\f005"; +} +.fa-star-and-crescent:before { + content: "\f699"; +} +.fa-star-half:before { + content: "\f089"; +} +.fa-star-half-alt:before { + content: "\f5c0"; +} +.fa-star-of-david:before { + content: "\f69a"; +} +.fa-star-of-life:before { + content: "\f621"; +} +.fa-staylinked:before { + content: "\f3f5"; +} +.fa-steam:before { + content: "\f1b6"; +} +.fa-steam-square:before { + content: "\f1b7"; +} +.fa-steam-symbol:before { + content: "\f3f6"; +} +.fa-step-backward:before { + content: "\f048"; +} +.fa-step-forward:before { + content: "\f051"; +} +.fa-stethoscope:before { + content: "\f0f1"; +} +.fa-sticker-mule:before { + content: "\f3f7"; +} +.fa-sticky-note:before { + content: "\f249"; +} +.fa-stop:before { + content: "\f04d"; +} +.fa-stop-circle:before { + content: "\f28d"; +} +.fa-stopwatch:before { + content: "\f2f2"; +} +.fa-stopwatch-20:before { + content: "\f96f"; +} +.fa-store:before { + content: "\f54e"; +} +.fa-store-alt:before { + content: "\f54f"; +} +.fa-store-alt-slash:before { + content: "\f970"; +} +.fa-store-slash:before { + content: "\f971"; +} +.fa-strava:before { + content: "\f428"; +} +.fa-stream:before { + content: "\f550"; +} +.fa-street-view:before { + content: "\f21d"; +} +.fa-strikethrough:before { + content: "\f0cc"; +} +.fa-stripe:before { + content: "\f429"; +} +.fa-stripe-s:before { + content: "\f42a"; +} +.fa-stroopwafel:before { + content: "\f551"; +} +.fa-studiovinari:before { + content: "\f3f8"; +} +.fa-stumbleupon:before { + content: "\f1a4"; +} +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-subscript:before { + content: "\f12c"; +} +.fa-subway:before { + content: "\f239"; +} +.fa-suitcase:before { + content: "\f0f2"; +} +.fa-suitcase-rolling:before { + content: "\f5c1"; +} +.fa-sun:before { + content: "\f185"; +} +.fa-superpowers:before { + content: "\f2dd"; +} +.fa-superscript:before { + content: "\f12b"; +} +.fa-supple:before { + content: "\f3f9"; +} +.fa-surprise:before { + content: "\f5c2"; +} +.fa-suse:before { + content: "\f7d6"; +} +.fa-swatchbook:before { + content: "\f5c3"; +} +.fa-swift:before { + content: "\f8e1"; +} +.fa-swimmer:before { + content: "\f5c4"; +} +.fa-swimming-pool:before { + content: "\f5c5"; +} +.fa-symfony:before { + content: "\f83d"; +} +.fa-synagogue:before { + content: "\f69b"; +} +.fa-sync:before { + content: "\f021"; +} +.fa-sync-alt:before { + content: "\f2f1"; +} +.fa-syringe:before { + content: "\f48e"; +} +.fa-table:before { + content: "\f0ce"; +} +.fa-table-tennis:before { + content: "\f45d"; +} +.fa-tablet:before { + content: "\f10a"; +} +.fa-tablet-alt:before { + content: "\f3fa"; +} +.fa-tablets:before { + content: "\f490"; +} +.fa-tachometer-alt:before { + content: "\f3fd"; +} +.fa-tag:before { + content: "\f02b"; +} +.fa-tags:before { + content: "\f02c"; +} +.fa-tape:before { + content: "\f4db"; +} +.fa-tasks:before { + content: "\f0ae"; +} +.fa-taxi:before { + content: "\f1ba"; +} +.fa-teamspeak:before { + content: "\f4f9"; +} +.fa-teeth:before { + content: "\f62e"; +} +.fa-teeth-open:before { + content: "\f62f"; +} +.fa-telegram:before { + content: "\f2c6"; +} +.fa-telegram-plane:before { + content: "\f3fe"; +} +.fa-temperature-high:before { + content: "\f769"; +} +.fa-temperature-low:before { + content: "\f76b"; +} +.fa-tencent-weibo:before { + content: "\f1d5"; +} +.fa-tenge:before { + content: "\f7d7"; +} +.fa-terminal:before { + content: "\f120"; +} +.fa-text-height:before { + content: "\f034"; +} +.fa-text-width:before { + content: "\f035"; +} +.fa-th:before { + content: "\f00a"; +} +.fa-th-large:before { + content: "\f009"; +} +.fa-th-list:before { + content: "\f00b"; +} +.fa-the-red-yeti:before { + content: "\f69d"; +} +.fa-theater-masks:before { + content: "\f630"; +} +.fa-themeco:before { + content: "\f5c6"; +} +.fa-themeisle:before { + content: "\f2b2"; +} +.fa-thermometer:before { + content: "\f491"; +} +.fa-thermometer-empty:before { + content: "\f2cb"; +} +.fa-thermometer-full:before { + content: "\f2c7"; +} +.fa-thermometer-half:before { + content: "\f2c9"; +} +.fa-thermometer-quarter:before { + content: "\f2ca"; +} +.fa-thermometer-three-quarters:before { + content: "\f2c8"; +} +.fa-think-peaks:before { + content: "\f731"; +} +.fa-thumbs-down:before { + content: "\f165"; +} +.fa-thumbs-up:before { + content: "\f164"; +} +.fa-thumbtack:before { + content: "\f08d"; +} +.fa-ticket-alt:before { + content: "\f3ff"; +} +.fa-tiktok:before { + content: "\f97b"; +} +.fa-times:before { + content: "\f00d"; +} +.fa-times-circle:before { + content: "\f057"; +} +.fa-tint:before { + content: "\f043"; +} +.fa-tint-slash:before { + content: "\f5c7"; +} +.fa-tired:before { + content: "\f5c8"; +} +.fa-toggle-off:before { + content: "\f204"; +} +.fa-toggle-on:before { + content: "\f205"; +} +.fa-toilet:before { + content: "\f7d8"; +} +.fa-toilet-paper:before { + content: "\f71e"; +} +.fa-toilet-paper-slash:before { + content: "\f972"; +} +.fa-toolbox:before { + content: "\f552"; +} +.fa-tools:before { + content: "\f7d9"; +} +.fa-tooth:before { + content: "\f5c9"; +} +.fa-torah:before { + content: "\f6a0"; +} +.fa-torii-gate:before { + content: "\f6a1"; +} +.fa-tractor:before { + content: "\f722"; +} +.fa-trade-federation:before { + content: "\f513"; +} +.fa-trademark:before { + content: "\f25c"; +} +.fa-traffic-light:before { + content: "\f637"; +} +.fa-trailer:before { + content: "\f941"; +} +.fa-train:before { + content: "\f238"; +} +.fa-tram:before { + content: "\f7da"; +} +.fa-transgender:before { + content: "\f224"; +} +.fa-transgender-alt:before { + content: "\f225"; +} +.fa-trash:before { + content: "\f1f8"; +} +.fa-trash-alt:before { + content: "\f2ed"; +} +.fa-trash-restore:before { + content: "\f829"; +} +.fa-trash-restore-alt:before { + content: "\f82a"; +} +.fa-tree:before { + content: "\f1bb"; +} +.fa-trello:before { + content: "\f181"; +} +.fa-tripadvisor:before { + content: "\f262"; +} +.fa-trophy:before { + content: "\f091"; +} +.fa-truck:before { + content: "\f0d1"; +} +.fa-truck-loading:before { + content: "\f4de"; +} +.fa-truck-monster:before { + content: "\f63b"; +} +.fa-truck-moving:before { + content: "\f4df"; +} +.fa-truck-pickup:before { + content: "\f63c"; +} +.fa-tshirt:before { + content: "\f553"; +} +.fa-tty:before { + content: "\f1e4"; +} +.fa-tumblr:before { + content: "\f173"; +} +.fa-tumblr-square:before { + content: "\f174"; +} +.fa-tv:before { + content: "\f26c"; +} +.fa-twitch:before { + content: "\f1e8"; +} +.fa-twitter:before { + content: "\f099"; +} +.fa-twitter-square:before { + content: "\f081"; +} +.fa-typo3:before { + content: "\f42b"; +} +.fa-uber:before { + content: "\f402"; +} +.fa-ubuntu:before { + content: "\f7df"; +} +.fa-uikit:before { + content: "\f403"; +} +.fa-umbraco:before { + content: "\f8e8"; +} +.fa-umbrella:before { + content: "\f0e9"; +} +.fa-umbrella-beach:before { + content: "\f5ca"; +} +.fa-underline:before { + content: "\f0cd"; +} +.fa-undo:before { + content: "\f0e2"; +} +.fa-undo-alt:before { + content: "\f2ea"; +} +.fa-uniregistry:before { + content: "\f404"; +} +.fa-unity:before { + content: "\f949"; +} +.fa-universal-access:before { + content: "\f29a"; +} +.fa-university:before { + content: "\f19c"; +} +.fa-unlink:before { + content: "\f127"; +} +.fa-unlock:before { + content: "\f09c"; +} +.fa-unlock-alt:before { + content: "\f13e"; +} +.fa-unsplash:before { + content: "\f97c"; +} +.fa-untappd:before { + content: "\f405"; +} +.fa-upload:before { + content: "\f093"; +} +.fa-ups:before { + content: "\f7e0"; +} +.fa-usb:before { + content: "\f287"; +} +.fa-user:before { + content: "\f007"; +} +.fa-user-alt:before { + content: "\f406"; +} +.fa-user-alt-slash:before { + content: "\f4fa"; +} +.fa-user-astronaut:before { + content: "\f4fb"; +} +.fa-user-check:before { + content: "\f4fc"; +} +.fa-user-circle:before { + content: "\f2bd"; +} +.fa-user-clock:before { + content: "\f4fd"; +} +.fa-user-cog:before { + content: "\f4fe"; +} +.fa-user-edit:before { + content: "\f4ff"; +} +.fa-user-friends:before { + content: "\f500"; +} +.fa-user-graduate:before { + content: "\f501"; +} +.fa-user-injured:before { + content: "\f728"; +} +.fa-user-lock:before { + content: "\f502"; +} +.fa-user-md:before { + content: "\f0f0"; +} +.fa-user-minus:before { + content: "\f503"; +} +.fa-user-ninja:before { + content: "\f504"; +} +.fa-user-nurse:before { + content: "\f82f"; +} +.fa-user-plus:before { + content: "\f234"; +} +.fa-user-secret:before { + content: "\f21b"; +} +.fa-user-shield:before { + content: "\f505"; +} +.fa-user-slash:before { + content: "\f506"; +} +.fa-user-tag:before { + content: "\f507"; +} +.fa-user-tie:before { + content: "\f508"; +} +.fa-user-times:before { + content: "\f235"; +} +.fa-users:before { + content: "\f0c0"; +} +.fa-users-cog:before { + content: "\f509"; +} +.fa-users-slash:before { + content: "\f973"; +} +.fa-usps:before { + content: "\f7e1"; +} +.fa-ussunnah:before { + content: "\f407"; +} +.fa-utensil-spoon:before { + content: "\f2e5"; +} +.fa-utensils:before { + content: "\f2e7"; +} +.fa-vaadin:before { + content: "\f408"; +} +.fa-vector-square:before { + content: "\f5cb"; +} +.fa-venus:before { + content: "\f221"; +} +.fa-venus-double:before { + content: "\f226"; +} +.fa-venus-mars:before { + content: "\f228"; +} +.fa-viacoin:before { + content: "\f237"; +} +.fa-viadeo:before { + content: "\f2a9"; +} +.fa-viadeo-square:before { + content: "\f2aa"; +} +.fa-vial:before { + content: "\f492"; +} +.fa-vials:before { + content: "\f493"; +} +.fa-viber:before { + content: "\f409"; +} +.fa-video:before { + content: "\f03d"; +} +.fa-video-slash:before { + content: "\f4e2"; +} +.fa-vihara:before { + content: "\f6a7"; +} +.fa-vimeo:before { + content: "\f40a"; +} +.fa-vimeo-square:before { + content: "\f194"; +} +.fa-vimeo-v:before { + content: "\f27d"; +} +.fa-vine:before { + content: "\f1ca"; +} +.fa-virus:before { + content: "\f974"; +} +.fa-virus-slash:before { + content: "\f975"; +} +.fa-viruses:before { + content: "\f976"; +} +.fa-vk:before { + content: "\f189"; +} +.fa-vnv:before { + content: "\f40b"; +} +.fa-voicemail:before { + content: "\f897"; +} +.fa-volleyball-ball:before { + content: "\f45f"; +} +.fa-volume-down:before { + content: "\f027"; +} +.fa-volume-mute:before { + content: "\f6a9"; +} +.fa-volume-off:before { + content: "\f026"; +} +.fa-volume-up:before { + content: "\f028"; +} +.fa-vote-yea:before { + content: "\f772"; +} +.fa-vr-cardboard:before { + content: "\f729"; +} +.fa-vuejs:before { + content: "\f41f"; +} +.fa-walking:before { + content: "\f554"; +} +.fa-wallet:before { + content: "\f555"; +} +.fa-warehouse:before { + content: "\f494"; +} +.fa-water:before { + content: "\f773"; +} +.fa-wave-square:before { + content: "\f83e"; +} +.fa-waze:before { + content: "\f83f"; +} +.fa-weebly:before { + content: "\f5cc"; +} +.fa-weibo:before { + content: "\f18a"; +} +.fa-weight:before { + content: "\f496"; +} +.fa-weight-hanging:before { + content: "\f5cd"; +} +.fa-weixin:before { + content: "\f1d7"; +} +.fa-whatsapp:before { + content: "\f232"; +} +.fa-whatsapp-square:before { + content: "\f40c"; +} +.fa-wheelchair:before { + content: "\f193"; +} +.fa-whmcs:before { + content: "\f40d"; +} +.fa-wifi:before { + content: "\f1eb"; +} +.fa-wikipedia-w:before { + content: "\f266"; +} +.fa-wind:before { + content: "\f72e"; +} +.fa-window-close:before { + content: "\f410"; +} +.fa-window-maximize:before { + content: "\f2d0"; +} +.fa-window-minimize:before { + content: "\f2d1"; +} +.fa-window-restore:before { + content: "\f2d2"; +} +.fa-windows:before { + content: "\f17a"; +} +.fa-wine-bottle:before { + content: "\f72f"; +} +.fa-wine-glass:before { + content: "\f4e3"; +} +.fa-wine-glass-alt:before { + content: "\f5ce"; +} +.fa-wix:before { + content: "\f5cf"; +} +.fa-wizards-of-the-coast:before { + content: "\f730"; +} +.fa-wolf-pack-battalion:before { + content: "\f514"; +} +.fa-won-sign:before { + content: "\f159"; +} +.fa-wordpress:before { + content: "\f19a"; +} +.fa-wordpress-simple:before { + content: "\f411"; +} +.fa-wpbeginner:before { + content: "\f297"; +} +.fa-wpexplorer:before { + content: "\f2de"; +} +.fa-wpforms:before { + content: "\f298"; +} +.fa-wpressr:before { + content: "\f3e4"; +} +.fa-wrench:before { + content: "\f0ad"; +} +.fa-x-ray:before { + content: "\f497"; +} +.fa-xbox:before { + content: "\f412"; +} +.fa-xing:before { + content: "\f168"; +} +.fa-xing-square:before { + content: "\f169"; +} +.fa-y-combinator:before { + content: "\f23b"; +} +.fa-yahoo:before { + content: "\f19e"; +} +.fa-yammer:before { + content: "\f840"; +} +.fa-yandex:before { + content: "\f413"; +} +.fa-yandex-international:before { + content: "\f414"; +} +.fa-yarn:before { + content: "\f7e3"; +} +.fa-yelp:before { + content: "\f1e9"; +} +.fa-yen-sign:before { + content: "\f157"; +} +.fa-yin-yang:before { + content: "\f6ad"; +} +.fa-yoast:before { + content: "\f2b1"; +} +.fa-youtube:before { + content: "\f167"; +} +.fa-youtube-square:before { + content: "\f431"; +} +.fa-zhihu:before { + content: "\f63f"; +} +.sr-only { + border: 0; + clip: rect(0, 0, 0, 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + clip: auto; + height: auto; + margin: 0; + overflow: visible; + position: static; + width: auto; +} +@font-face { + font-family: "Font Awesome 5 Brands"; + font-style: normal; + font-weight: 400; + font-display: block; + src: url(../webfonts/fa-brands-400.eot); + src: + url(../webfonts/fa-brands-400.eot@) format("embedded-opentype"), + url(../webfonts/fa-brands-400.woff2) format("woff2"), + url(../webfonts/fa-brands-400.woff) format("woff"), + url(../webfonts/fa-brands-400.ttf) format("truetype"), + url(../webfonts/fa-brands-400.svg) format("svg"); +} +.fab { + font-family: "Font Awesome 5 Brands"; +} +@font-face { + font-family: "Font Awesome 5 Free"; + font-style: normal; + font-weight: 400; + font-display: block; + src: url(../webfonts/fa-regular-400.eot); + src: + url(../webfonts/fa-regular-400.eot@) format("embedded-opentype"), + url(../webfonts/fa-regular-400.woff2) format("woff2"), + url(../webfonts/fa-regular-400.woff) format("woff"), + url(../webfonts/fa-regular-400.ttf) format("truetype"), + url(../webfonts/fa-regular-400.svg) format("svg"); +} +.fab, +.far { + font-weight: 400; +} +@font-face { + font-family: "Font Awesome 5 Free"; + font-style: normal; + font-weight: 900; + font-display: block; + src: url(../webfonts/fa-solid-900.eot); + src: + url(../webfonts/fa-solid-900.eot@) format("embedded-opentype"), + url(../webfonts/fa-solid-900.woff2) format("woff2"), + url(../webfonts/fa-solid-900.woff) format("woff"), + url(../webfonts/fa-solid-900.ttf) format("truetype"), + url(../webfonts/fa-solid-900.svg) format("svg"); +} +.fa, +.far, +.fas { + font-family: "Font Awesome 5 Free"; +} +.fa, +.fas { + font-weight: 900; +} diff --git a/game.v2025-07-31.bundle.js b/game.v2025-07-31.bundle.js index f8d6f49..c8a6095 100644 --- a/game.v2025-07-31.bundle.js +++ b/game.v2025-07-31.bundle.js @@ -1 +1,10393 @@ -!function(e){var t={};function a(s){if(t[s])return t[s].exports;var i=t[s]={i:s,l:!1,exports:{}};return e[s].call(i.exports,i,i.exports,a),i.l=!0,i.exports}a.m=e,a.c=t,a.d=function(e,t,s){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(a.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)a.d(s,i,function(t){return e[t]}.bind(null,i));return s},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="",a(a.s=0)}([function(e,t,a){"use strict";a.r(t),a.d(t,"navigationHelper",(function(){return _}));class s{static get availableLanguages(){return[{id:"zh",text:"汉语",dict:i,moment:"zh-cn"}]}constructor(e){this.selectedLanguage=s.availableLanguages.find(t=>t.id==e),this.selectedLanguage&&(n.setSetting("language",e),moment.locale(this.selectedLanguage.moment))}static createInstance(e){void 0!==this.instance&&(null==this.instance.selectedLanguage?"en"===e:this.instance.selectedLanguage.id===e)||(this.instance=new s(e))}static getInstance(){return this.instance}T(e,t,a=[]){let s="";return s=null==this.selectedLanguage?t:this.selectedLanguage.dict[e]||t,a.reduce((e,t)=>e.replace(/%s/,t),s)}}const i={credits:"学分",prerequisites:"先修课程","tier-navigation":"类别","navigation-home":"主页","navigation-majors":"专业","navigation-major":"专业","navigation-classes":"课程","navigation-class":"课程","navigation-clubs":"社团","navigation-club":"社团","navigation-partners":"基/姬友","navigation-partner":"基/姬友","navigation-punishments":"处分","navigation-punishment":"处分","navigation-schedule":"日程","navigation-progress":"进度","navigation-roulette":"轮盘","navigation-help":"帮助","navigation-settings":"设置","navigation-mapping":"地图","navigation-graduated":"已毕业","navigation-disclaimer":"免责条款","scheduled-toast-error-header":"第三方cookies被禁止","scheduled-toast-error-content":"请切换至完整的地图工具网页,或在浏览器设置里允许它。","user-confirmation-yes":"确定","user-confirmation-cancel":"取消","user-confirmation-close":"关闭","update-notification":"后台版本已更新,点击刷新。","time-day":"天","time-days":"天","time-day-binding-no-minutes":" ","time-day-binding":" ","time-hour":"小时","time-hours":"小时","time-hours-binding":" ","time-minute":"分钟","time-minutes":"分钟","time-minutes-binding":" ","time-second":"秒","time-seconds":"秒","time-less-then-a-minute":"不足 1 分钟。","home-feedback-title":"用户反馈","home-feedback-description":'只需要轻轻点击一下,发送一个"心跳信号"给作者,Ta就能知道一位陌生的好朋友还默默支持、陪伴着Ta。',"home-feedback-discord":"如果你想加入PU的Discord讨论组 - 请点击这里。","home-welcome-header":"Project University欢迎你的加入","home-welcome-info-1":"在这里,你可以创建属于自己的大学或者加入别人已经建好的大学。由于本网站不会提供关于玩法的任何内容,因此你需要自己导入一张PU-map地图文件。该文件由玩家自行创建,用于提供具体的玩法。本网站完全运行在玩家自己的设备上,网站的后台服务器不会储存任何私人内容,因此请确保存档进度的安全,请确保导入内容的安全性,请确保人身安全和法律安全。","home-welcome-info-2":"在这里,你的大学生活将大致包括如下内容:选择专业、选择课程和进行日常任务。如果你没有达到任务的要求,你将受到处分。你可以通过完成课程考试的方式来获得相应的学分和解锁更难的课程。学完所有的专业必修课并获得足够的学分之后,你就可以尝试毕业,参加最后的专业结业考试。课程之余,你还可以参加社团或者勾搭基/姬友来改变特定课程的难度或获得福利。","home-welcome-info-3":"赶紧导入一张PU-map地图,并选择一个专业吧!你的选课学习之旅就此开启!","home-load-map-button":"导入地图","home-create-map-button":"创建地图","home-changelog-header":"更新日志","home-show-changelogs-button":"以前的更新日志","home-external-sources-header":"外部资源支持","home-disclaimer-link":"如果您想再次确认“免责条款和数据保护”的内容, 请单击此处。","home-special-thanks-header":"特别鸣谢","tour-navigation-close":"关闭","tour-navigation-next":"下一条","tour-majors-0-title":"菜单","tour-majors-0-text":"这里是主菜单,可以在不同的选项卡之间切换。","tour-majors-1-title":"折叠菜单","tour-majors-1-text":"在移动设备上主菜单会折叠,点击这里折叠或展开主菜单。","tour-majors-2-title":"专业","tour-majors-2-text":"每张专业卡片对应一个可选专业。","tour-majors-3-title":"详情","tour-majors-3-text":"点击图片查看该专业的具体内容。","tour-majors-4-title":"选项","tour-majors-4-text":"这里会出现选专业、退选专业的选项。","tour-majors-5-title":"内容一览","tour-majors-5-text":"按下这个信息按钮会为你展示该专业的具体内容。","tour-majors-6-title":"卡片信息","tour-majors-6-text":"卡片底端将展示该专业的简要描述。","tour-classes-0-title":"课程难度","tour-classes-0-text":"点击查看不同难度的课程。","tour-classes-1-title":"课程难度","tour-classes-1-text":"点击此处或左右滑动来查看不同难度的课程,从左至右难度依次增加。","tour-classes-2-title":"课程","tour-classes-2-text":"每张卡片对应一个可选课程。","tour-classes-3-title":"图片","tour-classes-3-text":"点击图片查看该课程的具体内容。","tour-classes-4-title":"选项","tour-classes-4-text":"这里会出现选课、退课和重修的选项。","tour-classes-5-title":"内容一览","tour-classes-5-text":"按下这个信息按钮会为你展示该课程的具体内容。","tour-classes-6-title":"卡片信息","tour-classes-6-text":"卡片底端将展示该课程的简要描述。","map-submap-failed-header":"设置子地图失败","map-submap-failed-content":"PU无法储存子地图。这可能由于你的浏览器开启了匿名模式访问。","map-save-failed-header":"进度保存失败","map-save-failed-content":"PU无法保存你的进度。这可能由于你的浏览器开启了匿名模式访问。","map-save-incompatible":"存档与当前主地图不兼容。","map-save-empty":"存档为空。","map-import-confirmation-header":"导入地图","map-import-confirmation-conent":"确定要导入这张地图吗?请确保地图来源的可靠性,否则后果自负。","map-import-script-header":"导入中止","map-import-script-content":"该地图文件内包含不安全的信息。出于安全性考虑,我们中止了导入。","map-import-submap-popup":"导入子地图","map-import-map-popup":"地图导入成功","task-time-without-mod-info":"原时长 %s。","task-punishment-without-mod-info":"原数量 %s。","task-random-punishment":"随机","task-param-without-mod-info":"原数量 %s。","task-perk-activated-header":"奖励处分已获得","task-perk-activated-content":"你随机得到了 1 项处分。","task-roulette-reset-header":"轮盘重置奖励","task-roulette-reset-content":"轮盘已经重置了,再去碰碰运气吧。","task-skip-perk-header":"请假条奖励","task-skip-perk-single-content":"请假条已获得。","task-skip-perk-multi-content":"%s 张请假条已获得","task-punishment-drawn-header":"任务处分已获得","task-punishment-drawn-content":"根据任务的要求,你随机得到了 1 项 %s处分。","task-punishment-header":"受到处分","task-punishment-custom-task":"自定义任务失败!","task-punishment-task":"日常任务失败!","task-punishment-exam":"课程考试失败!","task-punishment-thesis":"毕业考核失败!","task-punishment-drawn":"你获得了 1 项处分!","task-punishments-drawn":"你获得了 %s 项处分!","task-failed-header":"任务失败","task-failed-content":"你的 %s 任务完成失败!","task-custom-task-finished-header":"自定义任务完成","task-custom-task-finished-content":"你完成了 1 项自定义任务!","task-class-finished-header":"课程通过","task-class-finished-content":"恭喜你通过了 %s 课程!","task-finished-header":"任务完成","task-finished-content":"你完成了 %s 的课程任务!","task-major-finished-header":"专业毕业","task-major-finished-content":"你从 %s 专业中毕业了!","task-punishment-finished-header":"处分结束","task-punishment-finished-content":"对你的处分内容 %s 已经结束!","task-manual-counter-button":"剩余 %s 次","task-manual-finish-button":"完成","task-finish-by-text":"本任务需在%s完成。","task-fail-button":"失败","task-time-left-info":"剩余时长","task-resume-button":"继续","task-pause-button":"暂停","task-punish-button":"惩罚","task-status-paused":"任务已暂停","task-status-active":"任务进行中","task-active-task":"进行中的任务","task-class-missed-header":"翘课","task-class-missed-content":"你因为翘掉一节课而受到 1 项处分!","task-fail-header":"任务失败","task-fail-content":"确定要放弃该任务或任务失败了吗?","graduated-certificate-header":"毕业证书:%s","graduated-congratulations-header":"恭喜你从 %s 专业中毕业。","graduated-congratulations-1":"经过不懈努力之后,恭喜你离自己梦中的样子更近了一步。","graduated-congratulations-2":"为了你的梦想,你依然还有很多能去做的。再选择一个专业或者换一张地图继续努力吧~","graduated-congratulations-3":"作为已经毕业的学长/学姐,你也可以为学弟学妹们准备一些属于你的原创内容,让ta们的校园生活更加丰富多彩。","graduated-table-class":"课程","graduated-table-knowledge-points":"出勤点","graduated-table-grade":"绩点","progress-active-major":"你的当前专业","progress-completed-classes":"课程完成情况","progress-active-classes":"正在学习","progress-active-classes-no":"没有正在学习中的课程。","progress-mandatory-classes":"必修课程","progress-mandatory-classes-no":"没有必修课程。","progress-finished-majors":"已毕业专业","progress-finished-majors-no":"还没有从任何专业中毕业。","progress-finished-classes":"已通过课程","progress-finished-classes-no":"还没有通过任何课程。","progress-credits-info":"只有通过了课程考试,你才能获得学分。","progress-punishments-endured":"尚未结束的处分","progress-thesis-button":"选择结业考核内容","schedule-active-tasks-header":"进行中的任务","schedule-active-punishments-header":"执行中的处分","schedule-active-punishments-info":"在处分执行完毕前,禁止参加课程考试和毕业考核。","schedule-todays-classes-header":"今日课程","schedule-clubs-partner-header":"社团 & 基/姬友","schedule-weekly-header":"本周课表","schedule-easy-mode-info":'当前是"简单模式",你可以随意补习各门课程,翘掉补习不会受处分。',"schedule-weekend-info":"你在周末可以随意补习各门课程,翘掉补习不会受处分。","schedule-no-class-left":"今天的课已经上完了,明天再来吧。","schedule-no-class-left-add":"今天的课已经上完了,你想多选一门课吗?","schedule-no-classes":"无课程","schedule-feedback-header":"用户反馈请求","schedule-feedback-1":'同学你好~近一个月原作者收到的"心跳信号"急剧减少,这让Ta十分扫兴。如果一直这样下去,Ta可能会放弃这个项目的维护。先谢过你一直以来对本项目的支持,并由衷地希望你能够享受你的大学生活。由于原作者十分注重各位同学的隐私保护,所以Ta不会从本网站上获取用户的任何信息,但Ta又想知道自己的大学里还有多少学生,所以需要各位提供主动的信息反馈。只需要简单地点击这条%sbitly链接%s,就可以让Ta知道你还在这里上课。',"schedule-feedback-2":"此外,Ta还为这个项目开设了一个discord讨论组(英文),用于反馈用户体验和分享用户自己制作的地图,欢迎你的%s加入%s","schedule-feedback-3":'这条"心跳信号"请求每个月会显示一次。',"schedule-import-task-error-header":"任务导入失败","schedule-import-task-error-content":"未能成功导入他人分享的任务。","schedule-script-header":"导入中止","schedule-script-content":"该自定义任务内包含不安全的信息。出于安全性考虑,我们中止了导入。","schedule-custom-task-default-name":"自定义任务","schedule-import-custom-task-confirmation-header":"导入自定义任务","schedule-import-custom-task-confirmation-content":"确定要导入这条自定义任务吗?任务将在导入后自动开始。请确保地图来源的可靠性,否则后果自负。","roulette-header":"高潮轮盘","roulette-info-1":"小骚货,又想要了吗?","roulette-info-2":"来求我试试看~","roulette-info-3":"什么?你胆敢擅自高潮?","roulette-info-4":"滚过来受罚!","roulette-punishment-button":"我不小心弄出来了","roulette-spin-button":"求求您给我一次","punishment-tier-text":"程度","punishment-tier-light":"轻","punishment-tier-hard":"重","punishment-tier-hardcore":"硬核","punishment-light-header":"轻处分","punishment-hard-header":"重处分","punishment-hard-requirement":"你需要至少 %s 学分才能解锁重处分。","punishment-hardcore-header":"硬核处分","punishment-hardcore-requirement":"你需要至少 %s 学分并在设置中开启了“硬核处分”才能解锁硬核处分。","punishment-status-active":"执行中","punishment-status-locked":"未解锁","punishment-roll-button":"随机得到 %s处分","punishment-detail-start-button":"开始执行处分","punishment-detail-reroll-button":"随机更换处分","punishment-rerolled-knowledge-point-header":"处分已更换","punishment-rerolled-knowledge-point-content":"你因更换处分而被扣除了 %s 课程的 1 个出勤点。","punishment-rerolled-exam-header":"处分已更换","punishment-rerolled-exam-content":"你因更换处分而被取消了 %s 的课程考试成绩。你需要重新参加考试了。","punishment-rerolled-unknown-header":"处分已更换","punishment-rerolled-unknown-content":"你将为更换处分的行为付出代价。","punishment-unavailable-header":"不可获得的处分程度","punishment-unavailable-content":"你当前还无法获得此种程度的处分。","punishment-max-header":"达到处分数量上限","punishment-max-content":"你最多能够积累 %s 个执行中的处分。","punishment-null-header":"无其他可获取的处分","punishment-null-content":"你当前没有可以被给予的处分了。","punishment-single-text":"处分","punishment-multi-text":"处分","punishment-card-unblock-button":"Unblock","punishment-card-block-button":"Block","punishment-detail-unblock-button":"Unblock punishment","punishment-detail-block-button":"Block punishment","club-tier-normal":"普通","club-tier-elite":"精英","club-normal-header":"社团","club-elite-header":"精英社团","club-elite-requirement":"你至少需要 %s 学分才能参加精英社团。","club-status-active":"已加入","club-status-locked":"未解锁","club-card-join-button":"报名","club-card-drop-button":"退出","club-detail-modifiers":"可选奖励","club-detail-join-button":"参加本社团","club-detail-drop-button":"退出本社团","club-modifier-activity":"活动","club-modifier-perk":"奖励","club-perk-activate-button":"领取奖励","club-perk-active-button":"已领取","club-max-clubs-header":"达到社团数上限","club-max-clubs-content":"你最多只能同时参加 %s 个社团。","club-max-perks-header":"达到社团活动数上限","club-max-perks-content":"你最多只能同时参加 %s 个社团活动。","club-perk-unavailable-header":"社团奖励无法领取","club-perk-unavailable-content":"当前无法参加该社团活动领取奖励。","club-perk-unavailable-tag-header":"社团奖励无法领取","club-perk-unavailable-tag-content":"当前无相关课程(标签)与该社团活动相关。","partner-status-active":"已结交","partner-card-join-button":"勾搭","partner-card-drop-button":"绝交","partner-modifier-activity":"活动","partner-modifier-perk":"福利","partner-detail-modifiers":"可选福利","partner-detail-add-button":"勾搭Ta","partner-detail-leave-button":"和Ta绝交","partner-perk-activate-button":"领取福利","partner-perk-active-button":"已领取","partner-perk-not-active-header":"基/姬友福利无法领取","partner-perk-not-active-content":"你还没有勾搭上Ta。","partner-perk-tags-header":"基/姬友福利无法领取","partner-perk-tags-content":"当前无相关课程(标签)与该基/姬友活动相关。","partner-perk-max-perks-header":"基/姬友福利达到上限","partner-perk-max-perks-content":"你最多只能同时参加 %s 个基/姬友活动。","major-status-unavailable":"不可选","major-status-active":"当前专业","major-status-grade":"绩点","major-card-join-button":"选修","major-card-drop-button":"退选","major-detail-prerequisites":"必修课程","major-detail-thesis":"可选毕业考核内容","major-detail-thesis-button":"开始毕业考核","major-detail-join-button":"选修本专业","major-detail-drop-button":"退选本专业","major-detail-thesis-requirement-header":"参加毕业考核条件","major-detail-thesis-requirement-join":"你必须先选修本专业,才能参加毕业考核。","major-detail-thesis-requirement-credits":"你必须修满 %s 个学分。","major-detail-thesis-requirement-punishments":"你必须先执行完所有处分。","major-detail-thesis-requirement-prerequisites":"你必须通过所有必修课程。","major-detail-thesis-requirement-thesis":"你只能选择一条毕业考核内容。","major-drop-confirm-header":"专业退选","major-drop-confirm-content":"确定要退选该专业?","major-dropped-header":"退选成功","major-dropped-content":"你因为退选专业而受到处分!","class-tier-beginner":"入门","class-tier-intermediate":"普通","class-tier-advanced":"高级","class-tier-master":"大师","class-beginner-header":"入门课程","class-intermediate-header":"普通课程","class-intermediate-requirement":"你至少需要获得 %s 学分,并完成所有的先修课程才能解锁普通课程。","class-advanced-header":"高级课程","class-advanced-requirement":"你至少需要获得 %s 学分,并完成所有的先修课程才能解锁高级课程。","class-master-header":"大师课程","class-master-requirement":"你至少需要获得 %s 学分,并完成所有的先修课程才能解锁大师课程。","class-card-tasks":"任务","class-card-exams":"考试","class-card-exams-locked":"当前未解锁","class-card-join-button":"选课","class-card-drop-button":"退课","class-card-retake-button":"重修","class-status-locked":"未解锁","class-status-grade":"绩点","class-status-active":"正在学习","class-detail-days":"每周开课","class-detail-tasks":"可选任务选项","class-detail-exams":"考试选项","class-detail-expected-grade":"如果现在参加考试,本课程绩点为 %s。","class-detail-mandatory":"本课程为当前专业的必修课程 %s 。","class-detail-join-button":"选修本课程","class-detail-drop-button":"退选本课程","class-detail-retake-button":"重修本课程","class-detail-retake-warning":"本课程最终绩点为 %s,你还有进步的空间。若想提高绩点,你可以重修本课程,继续获得更多出勤点。当然,你最后需要重新参加课程考试。","class-detail-start-task-button":"开始学习","class-detail-start-exam-button":"开始考试","class-detail-exam-requirement-header":"考试条件","class-detail-exam-requirement-join":"你必须先选课,而后才能完成学习任务或参加考试。","class-detail-exam-requirement-attended":"你今日已经学过本课程了,劳逸结合才能进步更快。","class-detail-exam-requirement-attendance":"所需出勤点为 %s 个,当前已获得 %s 个。","class-detail-exam-requirement-attendance-tasks":"你还有尚未进行过的可选任务。","class-knowledge-points-info":"%s knowledge points collected.","class-detail-exam-requirement-punishment":"你还有未结束的处分。","class-detail-exam-requirement-days":"本课程今日不开课。","class-max-classes-header":"达到课程数上限","class-max-classes-content":"你最多只能同时选修 %s 门课。","class-retake-confirmation-header":"重修课程","class-retake-confirmation-content":"确定想要重修本课程吗?你已有的出勤点会保留,但你的课程考试将作废。","class-drop-confirmation-header":"退选课程","class-drop-confirmation-content":"确定想要退选本课程?","disclaimer-header":"免责条款和数据保护","disclaimer-block-1":"可以公开访问的网站需要满足一些法律要求 ,因此我们写下了这段简短的陈述来帮助您了解这个网站如何运作。 进入首页后,您可以在页面底部找到本页面的链接。 如果您同意以下内容,您可以点击页面底部的“我已理解并同意”, 并继续访问本网站。如果您不同意,我们将清理所有存储的数据,并自动退出。","disclaimer-overview-header":"概述","disclaimer-overview-1":"下文中的“用户”代指您,而“我们”代指网页提供者。","disclaimer-overview-2":"只要我们有意开放,本网站对用户免费,但我们有权随时关闭甚至清空本网站。","disclaimer-overview-3":"本网站除用于提供网站内容的简单网页服务外,不使用任何后端。","disclaimer-overview-4":"本网站完全基于您的设备运行,如果发生文件损坏或丢失,所有之前的信息均无法找回。","disclaimer-overview-5":"本网站只是一个框架,因此需要用户生成内容,这些内容是由用户手动创建和提供的,我们并不知道其他人如何使用这项服务。 您可以将其比作一个本地文本编辑器——您可以创建或打开文本文件,而一切都留在您的设备上。您亦可以使用这个工具来访问其他用户创建的文件。","disclaimer-overview-6":"本网站运行所需的源代码完全由本域名提供。对于某些离开了本页面的链接,我们对其行为不负任何责任。","disclaimer-overview-7":"用户生成的内容可能是恶意的,我们试图保护您免受明显的攻击,但最终您要对您加载的外部内容负责。","disclaimer-inner-header":"免责条款","disclaimer-inner":"使用本网站是免费的,没有广告或跟踪服务。任何人不得使用本框架获利。 由于本网站使用用户编辑生成的内容,但并不存储任何关于用户的信息,所以网站提供者无法审核将要加载的内容。 因此,您将对您添加的其他用户生成的内容承担全部责任。 提供者对链接页面的内容不负责任, 如果有法律要求从框架中删除任何引用,它将被遵守。","disclaimer-data-protection-header":"数据保护声明","disclaimer-data-protection":'没有数据被收集和存储在用户设备之外。进度、设置、内容和反馈标记都存储在本地设备上。 用户生成的内容会留在用户的设备上。如果您决定使用反馈选项提供 "心跳信号",您将离开本网站,之后便使用Bitly隐私条款。 反馈是可选的,Bitly-Link将被突出显示。',"disclaimer-bitly-link":"点击这里查看Bitly.com上的相关隐私条款。","disclaimer-stored-data-header":"数据存储","disclaimer-stored-data-description":"多种技术手段用于存储您的进度、设置和添加的用户生成内容。","disclaimer-stored-data-local":"本地数据存储: 设置, 推迟的通知, 最后一次反馈信息请求, 接受的免责条款, 已经显示的教程","disclaimer-stored-data-indexeddb":"IndexedDB存储: 用户生成内容, 当前进度","disclaimer-stored-data-cache":"临时文件存储: 本网站框架数据支持离线模式","disclaimer-accept-button":"我不同意","disclaimer-reject-button":"了解并同意","settings-header":"设置","settings-easy-mode-checkbox":"简单模式","settings-easy-mode-description":'在简单模式下,你可以在任何一天上课,取消了翘课的处分,并且可以任意随机更换处分而不被罚。该模式可以作为游戏的"暂停"。',"settings-hardcore-punishments-checkbox":"硬核处分","settings-hardcore-punishments-description":"硬核处分往往相当困难,禁用它们通常不会有任何影响。默认禁用。","settings-auto-hide-checkbox":"网页自动隐藏","settings-auto-hide-description":"确保你的小秘密不会被旁人看到,本网页会在 %s 后自动隐藏。","settings-back-top-checkbox":"回到顶端按钮","settings-back-top-description":'在手机上不容易在页面上切换,你可以开启 "回到顶端按钮" 来方便你迅速回到页面顶端。',"settings-hide-active-classes-checkbox":"在课程页面不显示正在学习中的课程","settings-hide-active-classes-description":"正在学习的课程会在%s日程%s中显示,勾选本项可以让你的%s课程%s列表更清爽。","settings-hide-finished-classes-checkbox":"在课程页面不显示已经通过的课程","settings-finished-active-classes-description":"已经通过的课程会在%s进度%s中显示,勾选本项可以让你的%s课程%s列表更清爽。","settings-skip-tier-checkbox":"自动切换至更高级别页","settings-skip-tier-description":"当你划至页面最下面时,将自动切换到下一层次页(课程难度、精英社团等)","settings-show-confirmations-checkbox":"当做出重大更改时弹出确认框","settings-show-confirmations-description":"防止误触和猫。","settings-theme-description":"选择网页配色风格。","settings-language-description":"选择想要使用的语言。[Select your prefered language.]","settings-save-button":"保存更改","settings-reset-button":"重置设定","settings-maps-header":"地图管理","settings-map-tool-button":"地图工具","settings-map-tool-button-description":"打开地图工具来创建自定义内容。","settings-map-import-button":"导入地图","settings-map-import-button-description":"导入一张地图或更新一张已经存在的地图。","settings-map-selection-header":"选择主地图","settings-map-selection-info-1":"切换至另一张地图(不同地图的进度是独立保存的)。","settings-map-selection-info-2":"如果你想要导出所有地图的进度,你需要对每一张主地图单独一一保存(子地图进度会保存在当前主地图进度中)。","settings-switch-map-button":"切换至选择的地图","settings-delete-map-button":"删除选择的地图","settings-import-save-button":"导入存档","settings-export-save-button":"导出存档","settings-share-save-button":"导出存档但不生产存档文件","settings-submap-selection-header":"选择子地图","settings-submap-selection-description":'请勾选所有你想要作为子地图的选项。你需要先导入子地图(点击 "导入地图"),然后你才能在选项列表中找到它。如果你找不到导入的子地图,可能它被默认用作了主地图,这时你需要先更换一张主地图,然后才能在列表中看到你导入的子地图。',"settings-submap-selection-button":"加载勾选的子地图","settings-global-actions-header":"全局操作","settings-reset-tutorial-button":"重置教程","settings-reset-tutorial-description":"这将让新手教学框重新显示。","settings-reset-game-button":"重置游戏","settings-reset-game-description":"这将完全重置整个游戏,包括地图、进度甚至是用户设置。","settings-delete-map-confirmation-header":"删除地图","settings-delete-map-confirmation-content":"确定要删除地图吗?你将会失去所有的存档。","settings-reset-game-confirmation-header":"重置游戏","settings-reset-game-confirmation-content":"确定要删除所有的地图和存档吗?你将丢失地图和当前进度。","settings-script-header":"导入中止","settings-script-content":"该存档文件内包含不安全的信息。出于安全性考虑,我们中止了导入。","settings-save-import-failed-header":"存档导入失败","settings-save-import-failed-content":"导入存档文件时出错,请检查后台记录以获取更多信息。","settings-save-import-confirmation-header":"导入存档","settings-save-import-confirmation-content":"确定要导入存档并覆盖你的现有进度吗?请确保存档来源的可靠性,否则后果自负。","settings-save-export-failed-header":"存档导出失败","settings-save-export-failed-content":"无法分享你的存档。","settings-import-share-save-failed-header":"存档导入失败","settings-import-share-save-failed-content":"无法导入分享的存档文件。","settings-import-share-save-confirmation-header":"导入存档","settings-import-share-save-confirmation-content":"确定要导入存档并覆盖你的现有进度吗?请确保存档来源的可靠性,否则后果自负。","settings-import-share-map-failed-header":"地图导入失败","settings-import-share-map-failed-content":"无法导入分享的地图。","settings-import-share-map-confirmation-header":"导入地图","settings-import-share-map-confirmation-content":"确定要导入这张地图吗?请确保地图来源的可靠性,否则后果自负。","settings-save-selection-header":"保存游戏进度","settings-save-sync-description":"You can now sync your saves over multiple devices or retain them without having to trouble yourself with the files. Just join our %sDiscord%s and use the channel %spu-saves%s to %s/register%s.","settings-save-sync-button":"Sync this device now","settings-reset-save-sync-button":"Remove save sync for this device","settings-import-save-sync-header":"Save-Sync setup finished","settings-import-save-sync-content":"Your saves will now be synced, if the required maps are available.","settings-import-save-sync-failed-header":"Save-Sync setup failed","settings-import-save-sync-failed-content":"The provided key was not accepted by the backend. You can try to create a new session or try again later.","settings-download-save-sync-failed-header":"Save-Sync download failed","settings-download-save-sync-failed-content":"The download of the latest SaveGame failed. You may need to create a new session.","settings-check-save-sync-failed-header":"Save-Sync check failed","settings-check-save-sync-failed-content":"Checking the status of the latest SaveGame failed. You may need to create a new session.","settings-upload-save-sync-failed-header":"Save-Sync upload failed","settings-upload-save-sync-failed-content":"Uploading the latest SaveGame failed. You may need to create a new session.","settings-time-offset-selection":"自定义一个时间偏移量,让夜晚变成你的清晨。当前游戏时间: ","settings-time-offset-hour":"时","settings-compress-exports-checkbox":"压缩导出","settings-compress-exports-description":"稍微压缩文件大小,能够更方便地分享它们。%s提示:%s在大多数苹果设备上会很有用!%s","settings-image-exports-checkbox":"图像导出","settings-image-exports-description":"分享一张图片而不是一段随机文本吧。必须压缩!%s警告:%s这是一个实验性功能,可能无法读取过大的文件!大部分即时通讯软件会删除附加的数据使其失效!%s","settings-complete-exports-checkbox":"完全导出","settings-complete-exports-description":"不必再逐个导入地图及存档,所有内容都将导出为单一文件。必须压缩!%s提示:%s这会让存档变得非常巨大!%s","settings-detailed-table-view-checkbox":"使用详细表格视图。","settings-detailed-table-view-description":"将*地图工具*的风格在原版“卡片”视图(模拟最终地图效果)和新增的“表格”视图之间切换。","settings-import-save-clipboard-button":"从剪贴板导入存档","settings-export-save-clipboard-button":"复制存档到剪贴板","settings-join-discord-button":"加入Discord","settings-join-discord-description":"欢迎加入PU的官方Discord。(仅限英语)","settings-unsaved-changes-warning-checkbox":"在地图工具中显示尚未保存警告","settings-unsaved-changes-warning-description":"虽然地图工具已支持自动保存,但你也可以开启这个警告来体型自己是否还有尚未导出的编辑。","settings-filters-header":"过滤器","settings-three-state-filters-checkbox":"三态过滤器","settings-three-state-filters-description":"默认过滤器只检查是否包含特定的标签,勾选本项可以让它也能够排除特定的标签。","settings-hide-active-classes-checkbox":"在课程页面中不显示正在学习的课程","settings-hide-finished-classes-checkbox":"在课程页面中不显示已通过的课程","settings-hide-locked-classes-checkbox":"在课程页面中不显示被锁定的课程","settings-hide-locked-clubs-checkbox":"在社团页面中不显示被锁定的社团","settings-hide-locked-punishments-checkbox":"在处分页面中不显示被锁定的处分","settings-hide-blocked-punishments-checkbox":"在处分页面中不显示被禁用的处分","help-table-grade":"绩点","help-table-threshold":"比例","help-table-min-knowledge":"最少出勤点数","help-table-min-knowledge-intermediate":"最少出勤点数(普通课程)","help-table-min-knowledge-advanced":"最少出勤点数(高级课程)","help-table-min-knowledge-master":"最少出勤点数(大师课程)","help-overview-header":"入学流程","help-overview-1":"选择一个%s专业%s","help-overview-2":"选择%s专业必修课程%s %s必修课程会带有星标%s 和一些%s附加课程%s","help-overview-3":"参加%s社团%s或者勾搭%s基/姬友%s可以让你的学习过程更加丰富多彩","help-overview-4":"上课并通过课程考试修够 %s 个学分","help-overview-5":"翘课会让你受%s处分%s","help-overview-6":"毕业","help-notice-header":"校园安全教育","help-notice-content":'人身安全必须始终放在首位。当你在课程期间感到不适,必须立刻结束当前课程,切忌拿自己的健康当儿戏!在进行任务途中如果感到不适,应立即停下来检查,避免发生意外。必要的时候请务必及时就医。此外,请珍惜自己的生命。一生中没有坎儿是过不去的,如果真的有事情想不开,去找人帮帮自己。',"help-progress-header":"课程进度说明","help-progress-content":"所有的进度数据都保存在你自己的浏览器缓存里面,网上不会留存任何备份。浏览器在隐私模式下,通常不会储存数据,所以建议你使用普通模式打开本网站。如果你坚持使用隐私模式,提醒你注意保存好你的相关数据文件,通常包括地图文件(.pu)和存档(.puSave)。","help-majors-header":"专业","help-majors-content":"选择一个%s专业%s便意味着你将在该领域深造。每个专业都有自己的必修课程(毕业先修课),并且每个课程都可能有它自己的先修课要求。选完专业之后,你可以到%s进度%s页面去查看你的必修课程。你需要获得 %s 个学分才能尝试毕业。如果你中途决定换专业,你可以去专业详情界面退选,但你会因此受到 %s 项随机的处分。","help-classes-header":"课程与课表","help-classes-content":"请注意每门课程在每周的开课时间。在课程开课当天,你需要完成课程任务或参加考试才能得到该课程的 1 个出勤点。如果你在开课当天都没有来上课,你将会自动受到 1 项处分。想了解所有的课程要求,可以去课程详情页面查看。你在通过一门课程后,可以立马再选一门,但你最多不能同时上超过 %s 门课。最好不要同时学习太多课程,否则你可能会跟不上课程进度。所有的课程都在周末开设了补习班,翘掉补习课不会被处分(但是任务失败仍会被处分)。","help-punishments-header":"处分","help-punishments-1":"翘课(转点仍未开始课程任务)一节将被给予 1 项随机的处分。","help-punishments-2":'任务失败时,你必须诚实地按下"失败",并接受处分。',"help-punishments-3":"暂停一个任务超过 %s 将被给予处分。当一个任务具有多个步骤时,你将获得额外的暂停时间,你需要在额外的暂停时间里完成其他任务。","help-punishments-4":"处分可以在任何时候完成。","help-punishments-5":"你最多可以积攒 10 个处分。","help-punishments-6":"只要处分没有全部完成,你就不能参加考试和毕业考核。因此最好不要积攒太多的处分。","help-punishments-7":"任务失败被给予的处分数:日常课程任务失败(%s 项),课程考试失败(%s 项),毕业考核失败(%s 项)。","help-clubs-header":"社团","help-clubs-1":"参加社团会给你不同的奖励,例如获得请假条或降低课程任务难度。","help-clubs-2":"社团是对课程内容的补充,你可以自由选择社团。","help-clubs-3":"奖励领取之后就不能退还了,所带来的影响将会持续一整天直到转点。","help-clubs-4":"一些社团活动和课程内容重复了,这时你只需要完成课程任务即可获得社团奖励。","help-clubs-5":"在领取奖励之前,先看看自己当日需要参加的课程内容。你一定不想自己因为社团任务被迫戴一整天口塞吧。","help-clubs-6":"你最多同时参加 %s 个社团,同时获取 %s 个社团福利。","help-clubs-7":"在学期的最后阶段,你会解锁精英社团。精英社团会给你更丰厚的奖励,与此同时也会给你更难的挑战。","help-clubs-8":"注意,你最多参加 %s 个精英社团。","help-clubs-9":"社团奖励领取之后,当日不可以取消!","help-clubs-10":"所有领取过的奖励会在次日刷新。","help-clubs-11":"注意,你最多只能从社团福利中获得 50% 的难度减免。即如果你在普通社团里得到50%的难度减免,同时你在精英社团里得到25%的减免,那么你最终只会得到50%的总减免,而非75%。","help-partners-header":"基/姬友","help-partners-content":"P基/姬友和社团很像,会给你带来相应的福利,例如给你额外的出勤点数。但不同之处在于,基/姬友会让你的课程难度增加。你最多可以同时拥有 %s 个基/姬友。Ta们带来的影响会持续一整天,并在次日重置。","help-tasks-header":"任务与计时器","help-tasks-content":'游戏中的专业和班级都有任务系统。在你的课程表页面上,你可以选择你的当日课程要做的任务。每个任务可以有多个子任务 一旦你开始一个任务,你会看到新的任务显示出来,在这里你可以启动它的计时器,或者按 "完成",如果任务不依赖于时间。定时器可以被暂停/恢复,并且它们可以在不同的日子里延续。如果任务从前一天开始但持续到第二天,你不会被处分。如果你的任务完成失败了,你必须按下 "失败 "键来接受处分。所有课程的计时器也可以在该课程的详情页面上看到。',"help-grades-header":"绩点","help-grades-content":"每当你参加并完成课堂任务时,你将获得 1 个出勤点,如果你有修改器(来自基/姬友或社团),你可以获得额外的出勤点。根据这些出勤点,你将在参加考试后得到一个分数。这取决于你决定你想在考试中表现得多好。你获得的成绩将用于计算你的专业成绩。如果你已经完成了一门课,想提高自己的成绩,你可以随时重修。如果你重修一门课,你需要重考,并取消该课的相关学分,但你将保留已经获得的出勤点。你每更换一次处分,你就将会失去你当前正在上的一门随机课程的出勤点。
想要得到不同等级的绩点,你至少需要获得如下的出勤点数:","help-credits-header":"学分","help-credits-content":"毕业需要至少 %s 学分。一种参考的选课方法是 4 个入门课程,3 个普通课程,2 个专家课程和 2 个大师课程。你只有选修了课程之后才会解锁考试内容。完成考试后,你就会得到相应的学分。","help-graduating-header":"毕业","help-graduating-content":'你需要先完成所有的专业必修课,并得到 %s 学分,你才可以尝试毕业。某些专业毕业考核甚至可能会持续一个月。如果你在毕业考核的时候失败了,你需要按下 "失败" 按钮来受到 %s 个处分。某些专业毕业考核也会有额外的 "惩罚" 按钮,用来延长任务时长。当你从某个专业毕业,该专业就会被标记为 "完成",你上过的课程都会被重置。你可以继续选修另一门专业,为你的 "职业" 道路打好基础。',"help-roulette-header":"高潮轮盘系统","help-roulette-content":"在校期间除课程要求之外,你能否高潮取决于%s高潮轮盘%s的结果。你每天仅有一次宝贵的机会去碰碰运气。"};class n{static getLanguage(){return(navigator.languages&&navigator.languages.length?navigator.languages[0]:navigator.userLanguage||navigator.language||navigator.browserLanguage||"en").toLowerCase().substr(0,2)}static getTodaysDay(){return n.getNow().day()}static getNow(){return moment().add(n.getSetting("timeOffsetSelection")||0,"hours")}static getNowUnix(){return n.getNow().unix()}static getMoment(e){return moment(e)}static hasMatchingDate(e){if(n.getSetting("enableEasyMode"))return!0;const t=n.getTodaysDay();return 0===t||6===t||e.filter(e=>e===t).length>0}static daysToString(e){return e.map(e=>n.weekdays[e]).join(", ")}static get weekdays(){return moment.weekdays()}static getAcceptedDisclaimer(){return localStorage.getItem("acceptedDisclaimer")||!1}static setAcceptedDisclaimer(){localStorage.setItem("acceptedDisclaimer",!0)}static getlastRequestedFeedback(){return localStorage.getItem("lastRequestedFeedback")||void 0}static setlastRequestedFeedback(e){localStorage.setItem("lastRequestedFeedback",e)}static getTutorial(){try{return localStorage.getItem("tutorial")||""}catch(e){return"mapping;"}}static setTutorial(e){localStorage.setItem("tutorial",e)}static getLastPage(){return localStorage.getItem("lastPage")}static setLastPage(e){localStorage.setItem("lastPage",e)}static getSettings(){try{return JSON.parse(localStorage.getItem("settings"))||n.getDefaultSettings()}catch(e){return{...n.getDefaultSettings(),noSettings:!0}}}static setSettings(e){e.noSettings||localStorage.setItem("settings",JSON.stringify(e))}static getDefaultSettings(){return{enableHardcorePunishments:!1,enableEasyMode:!1,enableAutoHide:!0,enableBackToTop:!0,hideActiveClasses:!1,hideFinishedClasses:!0,autoExtendCarousel:!0,showConfirmations:!0,useTableView:!0,style:"darkly",useImageHoster:!1,sessionToken:void 0,timeOffsetSelection:0,useImageExport:!1,useBlobExport:!0,useDynamicExport:!1,useBase64Export:!1,compressExports:!0,completeExports:!1}}static getSetting(e){let t=n.getSettings()[e];return null!=t?t:n.getDefaultSettings()[e]}static setSetting(e,t){let a=n.getSettings();a[e]=t,n.setSettings(a)}static getScheduledToasts(){try{return JSON.parse(localStorage.getItem("scheduledToasts"))||[]}catch(e){const t=s.getInstance();return n.showToast(t.T("scheduled-toast-error-header","Third-party cookies are disabled"),t.T("scheduled-toast-error-content","Please switch to the full Mapping Tool or enable them in the browser settings."),"warning"),[]}}static setScheduledToasts(e){try{localStorage.setItem("scheduledToasts",JSON.stringify(e))}catch(e){return}}static scheduleToast(e,t,a){void 0===a&&(a="info");let s=n.getScheduledToasts();s.push({title:e,message:t,style:a}),n.setScheduledToasts(s)}static showScheduledToast(){let e=n.getScheduledToasts();for(let t of e)n.showToast(t.title,t.message,t.style);n.setScheduledToasts([])}static showToast(e,t,a){void 0===a&&(a="info");const i=s.getInstance();$("#toastContainer").append($(``).toast("show").on("hidden.bs.toast",(function(e){$(e.target).remove()})))}static getBackdropContainer(e,t){return`
\n ${e}\n
`}static getBackdropProgressContainer(e,t){let a="success";return t<10&&(a="warning"),`\n
\n
\n
\n
${e}
\n
\n
\n `}static getButtonsContainer(e){return(e=e.filter(e=>e&&e.length>0)).length<=0?"":`
\n ${e.join('
')}\n
`}static toggleCard(e){$("#"+e).toggleClass("active")}static getRandomString(e){return e||(e=10),[...Array(e)].map(e=>(~~(36*Math.random())).toString(36)).join("")}static scrollBackToTop(){$("html, body").animate({scrollTop:0},800)}static isToday(e){return moment.unix(e).isSame(n.getNow(),"day")}static requestUserConfirmation(e,t,a){if(!n.getSetting("showConfirmations"))return void a();const i=s.getInstance();let o="requestUserConfirmationModal-"+n.getRandomString(),r=``;$("#confirmationContainer").append(r),$("#"+o).modal({keyboard:!1}).modal("show").on("hidden.bs.modal",(function(e){$("#"+o).modal("dispose").remove()}))}static hasScript(e){const t=Object.getOwnPropertyNames(document).concat(Object.getOwnPropertyNames(Object.getPrototypeOf(Object.getPrototypeOf(document)))).filter((function(e){return!e.indexOf("on")&&(null==document[e]||"function"==typeof document[e])})).join("|"),a=new RegExp(`\\s(?:${t})=`,"i");return/)/.test(e)||a.test(e)}static optimizeImage(e,t){const a=o.imageOptimization,s=new Image;s.src=e,s.onload=()=>{const e=document.createElement("canvas"),i=e.getContext("2d");let n=0,o=0;s.height>s.width&&s.height>a.height?(n=a.height,o=s.width*(a.height/s.height)):s.width>s.height&&s.width>a.width?(o=a.width,n=s.height*(a.width/s.width)):(o=s.width,n=s.height),e.width=o,e.height=n,i.drawImage(s,0,0,o,n),i.canvas.toBlob((function(e){const s=i.canvas.toDataURL(a.filemime,a.quality);t&&t(s,e)}),a.filemime,a.quality)}}static getGrade(e,t){if(!Number.isInteger(e)||!Number.isInteger(t))return"F";const a=e/t;for(const e of Object.entries(o.grades))if(a>=e[1])return e[0];return"F"}static getCurrentUrl(){return window.location.origin.endsWith("hwcdn.net")?"https://projectuniversity.net/":`${window.location.origin}${window.location.pathname}`}static extendDistPath(){return window.IS_RAW?"dist/":""}static dataURLtoFile(e,t){for(var a=e.split(","),s=a[0].match(/:(.*?);/)[1],i=atob(a[a.length-1]),n=i.length,o=new Uint8Array(n);n--;)o[n]=i.charCodeAt(n);return new File([o],t,{type:s})}static async encryptExportImage(e,t){const a=n.stringToArraybuffer(n.compressJSObjectToString(e));return{imageData:await n.appendDataToImage(t,a),ImageType:t.type}}static decryptExportImage(e){const t=n.readDataFromImage(e);if(t instanceof Uint8Array&&t.length>0){return n.decompressJsonFromString(n.arraybufferToString(t))}}static async loadImageFile(e){try{const t=await fetch(e);if(!t.ok)throw new Error("HTTP error! status: "+t.status);const a=await t.blob();return new File([a],"save.jpg",{type:"image/jpeg"})}catch(e){throw console.error("Error loading the image file:",e),e}}static async appendDataToImage(e,t){const a=await e.arrayBuffer(),s=new Uint8Array(a);let i=s.length;for(let e=s.length-2;e>=0;e--)if(255===s[e]&&217===s[e+1]){i=e+2;break}const n=new Uint8Array(i+t.length);return n.set(s.subarray(0,i)),n.set(t,i),n}static readDataFromImage(e){const t=new Uint8Array(e);let a=t.length;for(let e=t.length-2;e>=0;e--)if(255===t[e]&&217===t[e+1]){a=e+2;break}return t.subarray(a)}static deepClone(e){return JSON.parse(JSON.stringify(e))}static canCompress(){return"undefined"!=typeof z&&z.hasOwnProperty("inflate")}static shouldCompress(){return n.canCompress()&&n.getSetting("compressExports")}static shouldExportComplete(){return n.canCompress()&&n.getSetting("completeExports")}static isCompleteSavegame(e){return!(!e.hasOwnProperty("primaryMapData")||!e.hasOwnProperty("subMapData"))}static compressJSObjectToString(e){return btoa(n.arraybufferToString(z.deflate(n.stringToArraybuffer(encodeURIComponent(JSON.stringify(e)))).buffer))}static decompressJsonFromString(e){return decodeURIComponent(n.arraybufferToString(z.inflate(n.stringToArraybuffer(atob(e)))))}static arraybufferToString(e){const t=new Uint8Array(e);let a="",s=0;for(;s=0;e--)this.successEvents.pop(e)()}.bind(this),a.onerror=function(e){void 0!==t&&t(e.target.errorCode)}}static getInstance(e,t){return void 0===this.instance&&(this.instance=new r(void 0,t)),void 0!==e&&(void 0!==this.instance.db?e():this.instance.registerLoadFinished(e)),this.instance}registerLoadFinished(e){void 0===this.successEvents&&(this.successEvents=[]),this.successEvents.push(e)}drop(e){this.db.close(),indexedDB.deleteDatabase("PU").onsuccess=function(){this.instance=void 0,this.db=void 0,e()}}static showDefaultError(e){console.error("db error",e),n.showToast("Database error","While attempting to save your progress an database error occured. Progress might have been lost.","danger")}addMap(e,t,a){if(!e.mapId)return void a("This map is missing an ID!");e.moduleId&&(e.mapId=`${e.mapId}(${e.moduleId})`);let s={mapData:e,lastSaved:n.getNowUnix()-60,saveGame:void 0,subMaps:[]},i=function(i){void 0!==i&&(s.saveGame=i.saveGame,s.subMaps=i.subMaps);let n=this.db.transaction(["maps"],"readwrite");n.objectStore("maps").put(s);n.onabort=function(a){void 0!==t&&t(a,e)},n.oncomplete=function(a){void 0!==t&&t(a,e)},n.onerror=function(e){void 0!==a?a(e.target.errorCode):r.showDefaultError(e)},n.commit()}.bind(this);this.getMap(e.mapId,e=>{i(e)})}updateMap(e,t,a){if(!e.mapData.mapId)return void a("The map ID is missing!");let s=this.db.transaction(["maps"],"readwrite");s.objectStore("maps").put(e);s.onabort=function(e){void 0!==t&&t(e)},s.oncomplete=function(e){void 0!==t&&t(e)},s.onerror=function(e){void 0!==a?a(e.target.errorCode):r.showDefaultError(e)},s.commit()}getMap(e,t){let a=this.db.transaction(["maps"],"readonly").objectStore("maps").get(e);a.onsuccess=function(e){void 0!==t&&t(e.target.result)},a.onerror=function(e){void 0!==t?t(void 0):r.showDefaultError(e)}}switchMap(e,t){let a=this.db.transaction(["maps"],"readonly").objectStore("maps").get(e),s=this;a.onsuccess=function(e){let a=e.target.result;a.lastSaved=n.getNowUnix(),s.updateMap(a,t,t)},a.onerror=function(e){void 0!==cbFinished?cbFinished(void 0):r.showDefaultError(e)}}removeMap(e,t){let a=this.db.transaction(["maps"],"readwrite");a.objectStore("maps").delete(e),a.onabort=function(e){void 0!==t&&t(e)},a.oncomplete=function(e){void 0!==t&&t(e)},a.onerror=function(e){r.showDefaultError(e)},a.commit()}getMaps(e,t){let a=this.db.transaction(["maps"],"readonly").objectStore("maps").index("lastSaved").openCursor(null,"prev"),s=[];a.onsuccess=function(t){let a=t.target.result;null!=a?(s.push(a.value),a.continue()):void 0!==e&&e(s)},a.onerror=function(e){void 0!==t?t(e.target.errorCode):r.showDefaultError(e)}}setSubMaps(e,t,a,s){if(!Array.isArray(t))return void(void 0!==s&&s("Invalid SubMaps"));let i=this;this.getMap(e,e=>{e.subMaps=t,e.lastSaved=n.getNowUnix(),i.updateMap(e,a,s)})}setSavegame(e,t,a,s){let i=this;this.getMap(e,e=>{e.saveGame=t,e.lastSaved=n.getNowUnix(),i.updateMap(e,a,s)})}getSavegame(e,t){this.getMap(e,e=>{t(e.saveGame)})}}class d{static applyParametersToObject(e){if(void 0===e||void 0===e.tasks)return e;for(let t in e.tasks){let a=e.tasks[t],s=x.getMultiplier(a.tags);(void 0===s||s<=.1)&&(s=1),e.tasks[t]=d.applyParametersToTaskObject(a,s)}return e}static applyParametersToTaskObject(e,t){if(void 0===e||void 0===e.task||void 0===e.parameters)return e;if(null==e.task.match(/\$param\d+/))return e;const a=s.getInstance();for(let s in e.parameters){let i=e.parameters[s],n="",o=Math.round(i.value*t);if("minutes"===i.unit){let e=d.minutesToTime(o),s=d.minutesToTime(i.value);n=i.applyMultiplier&&1!==t?`${e} ${s}`])}">`:""+s}else if("seconds"===i.unit){let e=a.T("time-seconds","seconds");if(1==i.value&&(e=a.T("time-second","second")),i.applyMultiplier&&1!==t){let t=a.T("time-seconds","seconds");1==o&&(t=a.T("time-second","second")),n=`${o} ${t} ${i.value} ${e}`])}>`}else n=`${i.value} ${e}`}else if("punishments"===i.unit){let e=i.punTier?a.T("punishment-tier-"+i.punTier,i.punTier):a.T("task-random-punishment","random"),s=a.T("punishment-single-text","punishment");if(i.value>1&&(s=a.T("punishment-multi-text","punishments")),i.applyMultiplier&&1!==t){let t=a.T("punishment-single-text","punishment");o>1&&(t=a.T("punishment-multi-text","punishments")),n=`${o} ${e} ${t} ${i.value} ${e} ${s}`])}">`}else n=`${i.value} ${e} ${s}`}else n=i.applyMultiplier&&1!==t?`${o} ${i.unit} ${i.value} ${i.unit}`])}>`:`${i.value} ${i.unit}`;e.task=e.task.replace("$param"+s,`${n}`)}return e}static getPercentageFromText(e){let t=/([0-9]+)(?:%)/g.exec(e);return t?Number(t[1])/100:0}static getClassSkipsFromText(e){let t=/(?:Skip) ([0-9])/g.exec(e);return t?Number(t[1]):0}static dateObjectToHumanTime(e){const t=moment.duration(e,"seconds");return`${t.days()>0?t.humanize()+" ":""}${("0"+t.hours()).slice(-2)}:${("0"+t.minutes()).slice(-2)}:${("0"+t.seconds()).slice(-2)}`}static minutesToTime(e){const t=moment.duration(e,"minutes"),a=s.getInstance();let i=t.years(),n=t.months(),o=t.days(),r=t.hours(),l=t.minutes();const d=a.T("time-day-binding",";");var c=[];return i&&(1===i?c.push(`${i} ${a.T("time-year","year")}`):c.push(`${i} ${a.T("time-years","years")}`)),n&&(1===n?c.push(`${n} ${a.T("time-month","month")}`):c.push(`${n} ${a.T("time-months","months")}`)),o&&(1===o?c.push(`${o} ${a.T("time-day","day")}`):c.push(`${o} ${a.T("time-days","days")}`)),r&&((o>0||n>0||i>0)&&l<=0?c.push(a.T("time-day-binding-no-minutes","and")):(o>0||n>0||i>0)&&c.push(d),1===r?c.push(`${r} ${a.T("time-hour","hour")}`):c.push(`${r} ${a.T("time-hours","hours")}`)),(o>0||n>0||i>0||r>0)&&l>0&&c.push(a.T("time-hours-binding","and")),l&&(1===l?c.push(`${l} ${a.T("time-minute","minute")}`):c.push(`${l} ${a.T("time-minutes","minutes")}`)),c.length<=0&&c.push(a.T("time-less-then-a-minute","Less than a minute.")),c.join(" ").replace(` ${d} `,d+" ")}}class c{constructor(){this._publicImageHosterKey=void 0,this._sessionToken=void 0}static getInstance(){return void 0===this.instance&&(this.instance=new c),this.instance}get isPublicImageHosterKeySet(){return!!this._publicImageHosterKey}static getQRCanvas(e,t){return kjua({render:"image",ecLevel:"H",text:e,mPosX:50,mPosY:50,mSize:20,size:400,rounded:100,mode:"label",label:t,fontname:"Helvetica",fontcolor:"#ff0055"})}static insertQR(e,t,a){const s=`\n
\n
\n This export is only valid for 24h. You can scan the QR code with your target device or use the link.\n
\n
\n
\n \n
\n `;$(a).html(s),$(".qr-container .qr-code",a).html(c.getQRCanvas(e,t))}static sendRequest(e,t,a){try{const i=new XMLHttpRequest;if(t){var s=i.open;i.open=function(){const e="quiet-dawn-24177.herokuapp.com",t="https://"+e+"/",a=[].slice,i=window.location.protocol+"//"+window.location.host;var n=a.call(arguments),o=/^https?:\/\/([^\/]+)/i.exec(n[1]);return o&&o[0].toLowerCase()!==i&&o[1]!==e&&(n[1]=t+n[1]),s.apply(this,n)}}let n=e.params;!n||"object"!=typeof n||n instanceof FormData||(n=e.hasOwnProperty("parseAsParameter")&&!0!==e.parseAsParameter?JSON.stringify(n):Object.keys(n).map((function(e){return`${encodeURIComponent(e)}=${encodeURIComponent(n[e])}`})).join("&")),"GET"===e.method&&(e.url=`${e.url}?${n}`,n=null),i.open(e.method,e.url),i.onload=function(){this.status>=200&&this.status<300?a(i.response):a(JSON.stringify({error:!0,status:this.status,statusText:i.statusText}))},i.onerror=function(){a(JSON.stringify({error:!0,status:this.status,statusText:i.statusText}))},e.headers&&Object.keys(e.headers).forEach((function(t){i.setRequestHeader(t,e.headers[t])})),i.send(n)}catch(e){a(JSON.stringify({error:!0,statusText:"internal error"}))}}getPublicImageHosterKey(e){if(this.isPublicImageHosterKeySet)return void e(this._publicImageHosterKey);const t=o.imageService;let a=function(t){this._publicImageHosterKey=t.match(/PF\.obj\.config\.auth_token=\"(.*?)\"/)[1],e(this._publicImageHosterKey)}.bind(this),s={parseAsParameter:!1,method:"GET",url:t,params:"",headers:{Accept:"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"}};c.sendRequest(s,!0,a)}static uploadToImageHoster(e,t){const a=o.imageService;let s=function(e){const a=JSON.parse(e);"200"==a.status_code?t({error:!1,data:a.image.url}):t({error:!0,statusText:"failed to upload image"})}.bind(this),i=function(t){var i=new FormData;i.append("source",e),i.append("type","file"),i.append("action","upload"),i.append("timestamp",(new Date).getTime()),i.append("auth_token",t);let n={parseAsParameter:!1,method:"POST",url:a+"/json",params:i,headers:{Accept:"application/json"}};c.sendRequest(n,!0,s)}.bind(this);c.getInstance().getPublicImageHosterKey(i)}static downloadFromPastebin(e,t){let a=/\?(.*?)#(.*?)(?:&|$)/.exec(e);if(!a||3!==a.length)return void t({error:!0,statusText:"invalid paste url"});let s=function(e){const a=JSON.parse(e);t({error:!1,data:a.paste})}.bind(this),i=function(e){const i=JSON.parse(e);if(i&&null!=i.status&&0==i.status)try{const e=c.getCryptTool(),t=[i.ct,i.adata],n=e.base58decode(a[2]).padStart(32,"\0"),o="";e.decipher(n,o,t).then(s)}catch(e){t({error:!0,statusText:"failed decrypt"})}else t({error:!0,statusText:"invalid response"})}.bind(this),n={parseAsParameter:!1,method:"GET",url:e,headers:{Accept:"application/json, text/javascript, */*; q=0.01","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8","X-Requested-With":"JSONHttpRequest"}};c.sendRequest(n,!0,i)}exchangeSaveGameToken(e,t){const a=o.saveGameService;let s=function(e){const a=JSON.parse(e);if(a.error)return t({error:!0,statusText:"failed to check save game token"}),this._sessionToken=void 0,void n.setSetting("sessionToken",this._sessionToken);this._sessionToken=a.sessionToken,n.setSetting("sessionToken",this._sessionToken),t({error:!1,data:a})}.bind(this),i={exchangeToken:e},r={parseAsParameter:!1,method:"POST",url:a+"/token/activate",params:JSON.stringify(i),headers:{Accept:"application/json","Content-Type":"application/json; charset=UTF-8"}};c.sendRequest(r,!1,s)}verifySaveGameToken(e,t){const a=o.saveGameService;let s=function(a){if(""!==a)return this._sessionToken=void 0,n.setSetting("sessionToken",this._sessionToken),void t(null);this._sessionToken=e,t(this._sessionToken)}.bind(this),i={sessionToken:e},r={parseAsParameter:!1,method:"POST",url:a+"/token/verify",params:JSON.stringify(i),headers:{Accept:"application/json","Content-Type":"application/json; charset=UTF-8"}};c.sendRequest(r,!1,s)}getSessionToken(e){!this._sessionToken&&n.getSetting("sessionToken")?this.verifySaveGameToken(n.getSetting("sessionToken"),e):this._sessionToken?e(this._sessionToken):e(null)}static checkSaveGame(e,t,a){if(!e||!t)return void a({error:!0,statusText:"session token / mapId is not set"});const s=o.saveGameService;let i=function(e){const t=JSON.parse(e);t.error?a({error:!0,statusText:"failed to check save game status"}):a({error:!1,data:t})}.bind(this),n={mapId:t,sessionToken:e},r={parseAsParameter:!1,method:"POST",url:s+"/save/check",params:JSON.stringify(n),headers:{Accept:"application/json","Content-Type":"application/json; charset=UTF-8"}};c.sendRequest(r,!1,i)}static uploadSaveGame(e,t,a,s){if(!e||!t)return void s({error:!0,statusText:"session token / mapId is not set"});const i=o.saveGameService;let r=function(e){const t=JSON.parse(e);t.error?s({error:!0,statusText:"failed to upload the save game"}):s({error:!1,data:t})}.bind(this),l={mapId:t,sessionToken:e,saveData:JSON.stringify(a),saveDate:n.getNow().format()},d={parseAsParameter:!1,method:"POST",url:i+"/save/upload",params:JSON.stringify(l),headers:{Accept:"application/json","Content-Type":"application/json; charset=UTF-8"}};c.sendRequest(d,!1,r)}static downloadSaveGame(e,t,a){if(!e||!t)return void a({error:!0,statusText:"session token / mapId is not set"});const s=o.saveGameService;let i=function(e){const t=JSON.parse(e);t.error?a({error:!0,statusText:"failed to download the save game"}):a({error:!1,data:t})}.bind(this),n={mapId:t,sessionToken:e},r={parseAsParameter:!1,method:"POST",url:s+"/save/download",params:JSON.stringify(n),headers:{Accept:"application/json","Content-Type":"application/json; charset=UTF-8"}};c.sendRequest(r,!1,i)}static uploadToPastebin(e,t){const a=o.privateBinService;try{const s=c.getCryptTool(),i=s.getSymmetricKey(),n=function(e){if(0===(e=JSON.parse(e)).status&&!0!==e.error){const n=a.split("/"),o=s.base58encode(i);t({error:!1,url:`${n[0]}//${n[2]}${e.url}#${o}`})}else t({error:!0,message:e.message})}.bind(this),o=function(e){let t={parseAsParameter:!1,method:"POST",url:a,params:{v:2,adata:e[1],ct:e[0],meta:{expire:"1day"}},headers:{Accept:"application/json, text/javascript, */*; q=0.01","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8","X-Requested-With":"JSONHttpRequest"}};c.sendRequest(t,!0,n)}.bind(this);let r=[null,"plaintext",0,0];s.cipher(i,"",JSON.stringify({paste:e}),r).then(o)}catch(e){t({error:!0,message:"A techical error occured while uploading."})}}static getCryptTool(){return function(){const e={};let t=new baseX("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");function a(e){return decodeURIComponent(e.split("").map((function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)})).join(""))}function s(e){return encodeURIComponent(e).replace(/%([0-9A-F]{2})/g,(function(e,t){return String.fromCharCode("0x"+t)}))}function i(e){const t=new Uint8Array(e);let a="",s=0;for(;s0){if("rawdeflate"===a[7]){let e=await window.crypto.subtle.digest({name:"SHA-256"},n(s(t))).catch(l);t=Array.prototype.map.call(new Uint8Array(e),e=>("00"+e.toString(16)).slice(-2)).join("")}let e=n(t),o=new Uint8Array(i.length+e.length);o.set(i,0),o.set(e,i.length),i=o}const o=await window.crypto.subtle.importKey("raw",i,{name:"PBKDF2"},!1,["deriveKey"]).catch(l);return window.crypto.subtle.deriveKey({name:"PBKDF2",salt:n(a[1]),iterations:a[2],hash:{name:"SHA-256"}},o,{name:"AES-"+a[6].toUpperCase(),length:a[3]},!1,["encrypt","decrypt"]).catch(l)}function c(e,t){return{name:"AES-"+t[6].toUpperCase(),iv:n(t[0]),additionalData:n(e),tagLength:t[4]}}return e.cipher=async function(e,t,a,s){let n=await z;const u=void 0===n?"none":"zlib",p=[r(16),r(8),1e5,256,128,"aes","gcm",u],m=[];for(let e=0;e{this.dbI.getMaps(this.loadMapSuccess.bind(this),this.loadMapError.bind(this))})}static getInstance(e){return void 0===this.instance&&(this.instance=new u),void 0!==e&&this.instance.registerLoadFinished(e),this.instance}static getDBInstance(){return this.getInstance().dbI}registerLoadFinished(e){void 0===this.successEvents&&(this.successEvents=[]),this.successEvents.push(e)}loadMapSuccess(e){if(!Array.isArray(e)||e.length<=0?this.mapI=void 0:(this.mapsI=e,this.mapI=e[0],void 0===this.mapI.saveGame&&(this.mapI.saveGame={}),void 0===this.mapI.subMaps&&(this.mapI.subMaps=[]),this.mapI=this.importSubMapsContent(this.mapI,e),this.mapI.mapData=this.removeInvalidReferencesInMapData(this.mapI),this.staticsI=this.loadStatics(this.mapI),this.mapI.saveGame=this.removeInvalidReferencesFromSaveGame(this.mapI)),this.isLoadedI=void 0!==this.mapI,void 0!==this.successEvents)for(let e=this.successEvents.length-1;e>=0;e--)this.successEvents.pop(e)()}removeInvalidReferencesInMapData(e){const t=e.mapData,a=Object.keys(t.majors),s=Object.keys(t.classes);if(t.majors&&t.classes)for(let e=0;e0)for(let e=0;e0)for(let e=0;e0)for(let e=0;e0)for(let e=0;e0)for(let e=0;e0)for(let e=0;e0)for(let e=0;e0)for(let e=0;e0)for(let e=0;e0)for(let e=0;e0)for(let e=0;e0){let a={majors:{},classes:{},clubs:{},partners:{},punishments:{}},s=t.filter(t=>e.mapData.mapId!==t.mapData.mapId&&e.subMaps.includes(t.mapData.mapId));for(const t of s){let s=t.mapData.mapId;const i=t.mapData.moduleId;if(void 0!==i&&i.length>1&&(s=/^(.*?)\(/gm.exec(t.mapData.mapId)[1]),e.mapData.mapId.startsWith(s)&&(s=""),void 0!==t.mapData.general.help&&t.mapData.general.help.length>0){Array.isArray(e.mapData.general.help)||(e.mapData.general.help=[]);for(const a of t.mapData.general.help)e.mapData.general.help.find(e=>""+e.id==`${s}${a.id}`)||e.mapData.general.help.push(a)}for(const e in t.mapData.majors)if(t.mapData.majors.hasOwnProperty(e)){const i=t.mapData.majors[e],n=`${s}${e}`;a.majors[n]=i,a.majors[n].id=n,a.majors[n].prerequisites=i.prerequisites.map(e=>`${s}${e}`)}for(const e in t.mapData.classes)if(t.mapData.classes.hasOwnProperty(e)){const i=t.mapData.classes[e],n=`${s}${e}`;a.classes[n]=i,a.classes[n].id=n,a.classes[n].prerequisites=i.prerequisites.map(e=>`${s}${e}`)}for(const e in t.mapData.clubs)if(t.mapData.clubs.hasOwnProperty(e)){const i=t.mapData.clubs[e],n=`${s}${e}`;a.clubs[n]=i,a.clubs[n].id=n}for(const e in t.mapData.partners)if(t.mapData.partners.hasOwnProperty(e)){const i=t.mapData.partners[e],n=`${s}${e}`;a.partners[n]=i,a.partners[n].id=n}for(const e in t.mapData.punishments)if(t.mapData.punishments.hasOwnProperty(e)){const i=t.mapData.punishments[e],n=`${s}${e}`;a.punishments[n]=i,a.punishments[n].id=n}}Object.assign(e.mapData.majors,a.majors),Object.assign(e.mapData.classes,a.classes),Object.assign(e.mapData.clubs,a.clubs),Object.assign(e.mapData.partners,a.partners),Object.assign(e.mapData.punishments,a.punishments)}return e}loadMapError(e){alert("failed to load maps from local storage "+e)}loadStatics(e){let t={requiredCreditsUnlockIntermediate:30,requiredCreditsUnlockAdvanced:60,requiredCreditsUnlockMaster:100,requiredCreditsForGraduation:160,requiredCreditsToUnlockEliteClubs:100,requiredCreditsToUnlockHardPunishments:100},a=0,s=0,i=0,n=0,r=0;for(const t in e.mapData.classes)if(e.mapData.classes.hasOwnProperty(t)){const a=e.mapData.classes[t];"beginner"==a.tier?s++:"intermediate"==a.tier?i++:"advanced"==a.tier?n++:"master"==a.tier&&r++}return s*=o.classBeginnerCredits,i*=o.classIntermediateCredits,n*=o.classAdvancedCredits,r*=o.classMasterCredits,a+=s,st.id!=e),this.registeredTaskIntervalsI.push({id:e,ref:t})}get isMapLoaded(){return this.isLoadedI}get mapId(){return this.mapI.mapData.mapId}get map(){return this.mapI.mapData}get maps(){return(this.mapsI||[]).map(e=>$.extend(!0,{},e))}get savegameHandler(){let e=this;return{get:function(e,t,a){return e[t]},set:function(t,a,s){return e.savegameChangedI=!0,t[a]=s,!0}}}get wasSavegameChanged(){return this.savegameChangedI}get subMaps(){return this.mapI.subMaps}set subMaps(e){if(Array.isArray(e))return this.mapI.subMaps=e}get anyMajorFinished(){return(this.mapI.saveGame.finishedMajors||[]).length>0}setSubMaps(e,t){const a=s.getInstance();this.dbI.setSubMaps(this.mapI.mapData.mapId,this.mapI.subMaps,t=>{t&&"abort"==t.type&&n.scheduleToast(a.T("map-submap-failed-header","Setting sub map aborted"),a.T("map-submap-failed-content","PU was unable to store the new sub map assignment. This can happen if you run the website in incognito mode."),"warning"),e(t)},t)}getSavegame(){return this.isLoadedI?new Proxy(this.mapI.saveGame,this.savegameHandler):{}}setSavegame(e,t,a){if(!this.savegameChangedI)return;let i=this;const o=s.getInstance(),r=this.mapI.mapData.mapId;let l=JSON.parse(JSON.stringify(this.mapI.saveGame));this.saveBackupI&&(l.finishedPunishments=this.saveBackupI.finishedPunishments.concat(l.finishedPunishments||[]),l.blockedPunishments=this.saveBackupI.blockedPunishments.concat(l.blockedPunishments||[]),l.activePunishments=this.saveBackupI.activePunishments.concat(l.activePunishments||[]),l.assignedClasses=this.saveBackupI.assignedClasses.concat(l.assignedClasses||[]),l.assignedClubs=this.saveBackupI.assignedClubs.concat(l.assignedClubs||[]),l.assignedPartners=this.saveBackupI.assignedPartners.concat(l.assignedPartners||[]));let d=function(t){!t||"success"!=t.type&&"complete"!=t.type?t&&"abort"==t.type&&n.scheduleToast(o.T("map-save-failed-header","Save aborted"),o.T("map-save-failed-content","PU was unable to store your progress. This can happen if you run the website in incognito mode."),"warning"):(i.savegameChangedI=!1,a||this.uploadOnlineSaveGame(r,l,()=>{e&&e(t)}))}.bind(this);this.dbI.setSavegame(r,l,d,t)}checkOnlineSaveGame(e){if(this.savegameChangedI)return;if(!this.mapI||!this.mapI.mapData||!this.mapI.mapData.mapId)return;const t=this.mapI.mapData.mapId,a=s.getInstance();let i=null,o=null,r=function(t){if(t.error||!t.data)return void n.showToast(a.T("settings-download-save-sync-failed-header","Save-Sync download failed"),a.T("settings-download-save-sync-failed-content","The download of the latest SaveGame failed. You may need to create a new session."));let s=JSON.parse(t.data.saveData);s&&(this.saveBackupI=void 0,this.mapI.saveGame=s,this.savegameChangedI=!0,this.mapI.lastSaved=o,this.setSavegame(e,void 0,!0))}.bind(this),l=function(e){!e.error&&e.data?null!=e.data.saveDate&&(o=n.getMoment(e.data.saveDate).unix(),(o>this.mapI.lastSaved||!(void 0!==this.mapI.saveGame&&Object.entries(this.mapI.saveGame).length>0))&&c.downloadSaveGame(i,t,r)):n.showToast(a.T("settings-check-save-sync-failed-header","Save-Sync check failed"),a.T("settings-check-save-sync-failed-content","Checking the status of the latest SaveGame failed. You may need to create a new session."))}.bind(this),d=function(e){i=e,null!==i&&c.checkSaveGame(i,t,l)}.bind(this);c.getInstance().getSessionToken(d)}uploadOnlineSaveGame(e,t,a){const i=s.getInstance();let o=function(e){!e.error&&e.data||n.showToast(i.T("settings-upload-save-sync-failed-header","Save-Sync upload failed"),i.T("settings-upload-save-sync-failed-content","Uploading the latest SaveGame failed. You may need to create a new session."))}.bind(this),r=function(s){null!==s&&c.uploadSaveGame(s,e,t,o),a()}.bind(this);c.getInstance().getSessionToken(r)}importSaveGame(e,t,a){const i=s.getInstance();return e.mapId!==this.mapI.mapData.mapId?i.T("map-save-incompatible","SaveGame not compatible with the current map."):e.saveGame?(e.saveGame=p.resetAttendanceDeadline(e.saveGame),this.saveBackupI=void 0,this.mapI.saveGame=e.saveGame,this.savegameChangedI=!0,void this.setSavegame(t,a)):i.T("map-save-empty","SaveGame empty.")}changeMap(e){this.setSavegame(),this.isLoadedI=!1,this.dbI.switchMap(e,this.loadMapSuccess.bind(this),this.loadMapError.bind(this))}deleteMap(e,t){this.setSavegame(),this.dbI.removeMap(e,t)}async importMapFile(e){const t=s.getInstance(),a={title:t.T("map-import-confirmation-header","Import a map"),text:t.T("map-import-confirmation-conent","Are you sure that you want to import this map? Make sure to only install maps from trusted sources. Proceed at your own risk.")},i={title:t.T("map-import-failed-header","Map import failed"),text:t.T("map-import-failed-content","During the import for the selected file an error occured. You can check the console for more information.")},o={title:t.T("map-file-import-compression-error-header","Compression unavailable"),text:t.T("map-file-import-compression-error-content","The file you tried to import is compressed. Sadly a library required to uncompress it is unavailable.")},r={title:t.T("map-file-import-aborted-header","Import aborted"),text:t.T("map-file-import-aborted-content","The file you tried to import included untrusted code. To protect you the import was aborted.")},l=await _.runImport(e,i,a,o,r);n.isCompleteSavegame(l)?await this.importCompleteSavegame(l):this.importMap(l)}async importCompleteSavegame(e){const t=e=>new Promise((t,a)=>{this.dbI.addMap(e,t,a)});n.setSettings(e.settings||n.getDefaultSettings()),await t(e.primaryMapData);for(const a of e.subMapData)await t(a);await((e,t)=>new Promise((a,s)=>{this.dbI.setSubMaps(e,t,a,s)}))(e.mapId,e.subMaps),await((e,t)=>new Promise((a,s)=>{this.dbI.setSavegame(e,t,a,s)}))(e.mapId,e.saveGame),this.addMapSuccess(void 0,e.primaryMapData)}importMap(e){s.getInstance();this.mapI?this.dbI.addMap(e,this.addMapAsSubMapSuccess.bind(this),this.addMapError.bind(this)):this.dbI.addMap(e,this.addMapSuccess.bind(this),this.addMapError.bind(this))}addMapAsSubMapSuccess(e,t){n.scheduleToast(`${s.getInstance().T("map-import-submap-popup","Submap imported")}: ${t.general.title}`,""+t.general.description),this.subMaps.includes(t.mapId)||this.mapId==t.mapId||this.subMaps.push(t.mapId),this.setSubMaps(()=>{_.navigate("?page=settings")})}addMapSuccess(e,t){s.getInstance();n.scheduleToast(`${s.getInstance().T("map-import-map-popup","Map imported")}: ${t.general.title}`,""+t.general.description),this.registerLoadFinished(()=>{_.navigate("?page=help")}),this.changeMap(t.mapId)}addMapError(e){alert("failed to add the map to local storage "+e)}setExportStorageItem(e,t,a){this.exportStorage[e]={data:t,type:a,filename:e}}getExportStorageItem(e){return this.exportStorage[e]}}class p{static resetAttendanceDeadline(e){if(e.assignedClasses&&e.assignedClasses.length>0){const t=n.getNow().add(-1,"day").endOf("day").unix();e.assignedClasses=e.assignedClasses.map(e=>("active"==e.status&&e.lastAttended&&e.lastAttended\n
\n
\n \n
\n
\n \n
\n
\n `}static getCardHtml(e){const t=s.getInstance();let a=h.isClubLocked(e.id),i=h.isClubActive(e.id),o=n.getRandomString();return`
\n
\n\n
\n \n \n \n ${i?n.getBackdropContainer(t.T("club-status-active","Active")+' ',"success"):""}\n ${a?n.getBackdropContainer(t.T("club-status-locked","Locked")+' ',"danger"):""} \n ${n.getButtonsContainer([``,m.getJoinButton(e.id),m.getDropButton(e.id)])}\n
\n
\n
    \n ${m.getPerksHtml(e.id)}\n
\n
\n
\n
\n
\n
${e.name}
\n

${e.description}

\n
\n
\n
`}static getJoinButton(e){return h.isJoinButtonAvailable(e)?``:""}static getDropButton(e){return h.isDropButtonAvailable(e)?``:""}static getPerksHtml(e){const t=s.getInstance();let a=h.getClubPerks(e),i="";for(let e in a)i+=`
  • \n
    \n
    \n ${t.T("club-modifier-activity","Activity")}:\n
    \n
    ${a[e].job}
    \n
    \n
    \n
    \n ${t.T("club-modifier-perk","Perk")}:\n
    \n
    ${a[e].perk}
    \n
    \n
  • `;return i}}class g{static get expectedParameters(){return{getView:["clubId"]}}static getView(e){const t=e.clubId,a=h.isClubLocked(t),i=h.isClubActive(t),n=s.getInstance();let o=p.clubsData[t];return`
    \n

    ${o.name}

    \n
    \n
    \n
    \n
    \n \n \n \n ${a?`
    ${n.T("club-status-locked","Locked")}
    `:""}\n ${i?`
    ${n.T("club-status-active","Active")}
    `:""}\n
    \n
    \n
    \n

    ${o.description}${g.getCommentHtml(o.comment)}

    \n
      \n
    • ${n.T("club-detail-modifiers","Available perks")}:
    • \n ${g.getPerksHtml(o.id)}\n
    \n
    \n ${g.getJoinButton(o.id)}\n ${g.getDropButton(o.id)}\n
    \n
    \n
    \n
    \n
    \n `}static getCommentHtml(e){return!e||null==e||e.length<=0?"":`
    ${e}`}static getPerksHtml(e){const t=s.getInstance();let a=h.getClubPerks(e),i="";for(let s in a)i+=`
  • \n
    \n
    \n ${t.T("club-modifier-activity","Activity")}:\n\n
    \n
    ${a[s].job}
    \n
    \n
    \n
    \n ${t.T("club-modifier-perk","Perk")}:\n
    \n
    ${a[s].perk}\n ${g.activatePerk(e,s)}\n
    \n
    \n
  • `;return i}static getJoinButton(e){return h.isJoinButtonAvailable(e)?`
    `:""}static getDropButton(e){return h.isDropButtonAvailable(e)?`
    `:""}static activatePerk(e,t){const a=h.isClubActive(e),i=h.isPerkActive(e,t),o=h.canActivatePerk(e,t),r=h.isMaxPerksActive(),l=n.getSetting("enableEasyMode");return!r&&o&&a&&!i?``:a&&i&&l?``:a&&i?``:""}}class h{static isJoinButtonAvailable(e){const t=h.getJoinedClub(e),a=h.isClubLocked(e),s=h.isMaxClubJoined();return!t&&!a&&!s}static isDropButtonAvailable(e){return h.getJoinedClub(e)}static getClubPerks(e){return p.clubsData[e].perks}static getJoinedClub(e){const t=p.getAssignedClubs().filter(t=>t.id==e);return 0!==t.length&&t[0]}static joinClub(e){if(h.getJoinedClub(e))return;const t=s.getInstance();if(h.isMaxClubJoined())return void n.showToast(t.T("club-max-clubs-header","Maximum clubs assigned"),t.T("club-max-clubs-content","You are only allowed to join %s clubs at a time.",[o.maxConcurrentClubs]));let a=p.getAssignedClubs(),i={id:e,activePerks:{}};a.push(i),p.setAssignedClubs(a),_.getInstance().inAppNavigation("?page=club&clubId="+e)}static dropClub(e){let t=p.getAssignedClubs();t=t.filter(t=>t.id!==e),p.setAssignedClubs(t),_.getInstance().inAppNavigation("?page=clubs")}static isClubActive(e){return!!h.getJoinedClub(e)}static isPerkActive(e,t){const a=h.getJoinedClub(e);return!!a&&(void 0!==a.activePerks[t]&&(!!a.activePerks[t].active&&!!n.isToday(a.activePerks[t].activatedOn)))}static canActivatePerk(e,t){return"8"!==e||h.getActiveClubPerks(e).length<=0}static isMaxPerksActive(){return h.getAllActivePerks()>=o.maxConcurrentClubPerks}static isMaxClubJoined(){return p.getAssignedClubs().length>=o.maxConcurrentClubs}static getActiveClubPerks(e){if(!h.isClubActive(e))return[];return h.getAllActivePerks().filter(t=>t.clubId===e)}static getAllActivePerks(){let e=p.getAssignedClubs(),t=[];for(let a in e){let s=e[a],i=s.id,n=s.activePerks;for(let e in n)h.isPerkActive(i,e)&&t.push({clubId:i,perkId:e})}return t}static activatePerk(e,t){const a=s.getInstance();if(h.isMaxPerksActive())return void n.showToast(a.T("club-max-perks-header","Maximum club perks active"),a.T("club-max-perks-content","You are only allowed to activate %s club perks at a time.",[o.maxConcurrentClubPerks]));if(!h.canActivatePerk(e,t))return void n.showToast(a.T("club-perk-unavailable-header","Perk can not be activated"),a.T("club-perk-unavailable-content","It's currently not possible to activate this perk."));let i=S.getActiveTags(),r=p.clubsData[e].perks[t],l=r.tags;if(i.length<=0||l.length>0&&!l.some(e=>i.includes(e)))return void n.showToast(a.T("club-perk-unavailable-tag-header","Perk can not be activated"),a.T("club-perk-unavailable-tag-content","You don't have any class with matching tags active."));const d=p.getAssignedClubs().map(a=>(a.id===e&&(a.activePerks[t]={active:!0,activatedOn:n.getNowUnix()}),a));p.setAssignedClubs(d),x.perkActivated(r),u.getInstance().multiplierChanged(),_.inAppReload()}static deactivatePerk(e,t){const a=s.getInstance();if(!h.isPerkActive(e,t))return void n.showToast(a.T("club-perk-not-active-header","Perk can not be deactivated"),a.T("club-perk-not-active-content","It's currently not possible to deactivate this perk."));const i=p.getAssignedClubs().map(a=>(a.id===e&&delete a.activePerks[t],a)),o=p.clubsData[e].perks[t];p.setAssignedClubs(i),x.perkDeactivated(o),u.getInstance().multiplierChanged(),_.inAppReload()}static isClubLocked(e){const t=p.clubsData[e];let a=0,s=S.collectedCredits;return"elite"===t.tier&&(a=p.requiredCreditsToUnlockEliteClubs),s\n
    ${t}
    \n `}static getCardHtml(e){const t=f.isPartnerActive(e.id),a=n.getRandomString();return`
    \n
    \n
    \n \n \n \n ${t?n.getBackdropContainer(s.getInstance().T("partner-status-active","Active")+' ',"success"):""}\n ${n.getButtonsContainer([``,v.getJoinButton(e.id),v.getDropButton(e.id)])}\n
    \n
    \n
      \n ${v.getPerksHtml(e.id)}\n
    \n
    \n
    \n
    \n \n
    \n
    ${e.name}
    \n

    ${e.description}

    \n
    \n
    \n
    `}static getJoinButton(e){return f.isJoinButtonAvailable(e)?``:""}static getDropButton(e){return f.isDropButtonAvailable(e)?``:""}static getPerksHtml(e){const t=s.getInstance();let a=f.getPartnerPerks(e),i="";for(let e in a)i+=`
  • \n
    \n
    \n ${t.T("partner-modifier-activity","Activity")}:\n
    \n
    ${a[e].job}
    \n
    \n
    \n
    \n ${t.T("partner-modifier-perk","Perk")}:\n
    \n
    ${a[e].perk}
    \n
    \n
  • `;return i}}class b{static get expectedParameters(){return{getView:["partnerId"]}}static getView(e){const t=e.partnerId,a=f.isPartnerActive(t),i=s.getInstance();let n=p.partnersData[t];return`
    \n

    ${n.name}

    \n
    \n
    \n
    \n
    \n \n \n \n ${a?`
    ${i.T("partner-status-active","Active")}
    `:""}\n
    \n
    \n
    \n

    ${n.description}

    \n
      \n
    • ${i.T("partner-detail-modifiers","Available perks")}:
    • \n ${b.getPerksHtml(n.id)}\n
    \n
    \n ${b.getJoinButton(n.id)}\n ${b.getDropButton(n.id)}\n
    \n
    \n
    \n
    \n
    \n `}static getPerksHtml(e){const t=s.getInstance();let a=f.getPartnerPerks(e),i="";for(let s in a)i+=`
  • \n
    \n
    \n ${t.T("partner-modifier-activity","Activity")}:\n
    \n
    ${a[s].job}
    \n
    \n
    \n
    \n ${t.T("partner-modifier-perk","Perk")}:\n
    \n
    ${a[s].perk}\n ${b.activatePerk(e,s)}\n
    \n
    \n
  • `;return i}static getJoinButton(e){return f.isJoinButtonAvailable(e)?`
    `:""}static getDropButton(e){return f.isDropButtonAvailable(e)?`
    `:""}static activatePerk(e,t){const a=f.isPartnerActive(e),i=f.isPerkActive(e,t),o=f.isMaxPerksActive(),r=n.getSetting("enableEasyMode"),l=s.getInstance();return o||!a||i?a&&i&&r?``:a&&i?``:"":``}}class f{static isJoinButtonAvailable(e){const t=f.getActivePartner(e),a=f.isMaxPartnerJoined();return!t&&!a}static isDropButtonAvailable(e){return f.getActivePartner(e)}static getPartnerPerks(e){return p.partnersData[e].perks}static isMaxPartnerJoined(){return p.getActivePartners().length>=o.maxConcurrentPartner}static isMaxPerksActive(){return f.getAllActivePerks()>=o.maxConcurrentPartnerPerks}static getAllActivePerks(){let e=p.getActivePartners(),t=[];for(let a in e){let s=e[a],i=s.id,n=s.activePerks;for(let e in n)f.isPerkActive(i,e)&&t.push({partnerId:i,perkId:e})}return t}static getActivePartner(e){const t=p.getActivePartners().filter(t=>t.id==e);return 0!==t.length&&t[0]}static addPartner(e){if(f.getActivePartner(e))return;if(f.isMaxPartnerJoined())return;let t=p.getActivePartners(),a={id:e,activePerks:{}};t.push(a),p.setActivePartners(t),_.getInstance().inAppNavigation("?page=partner&partnerId="+e)}static leavePartner(e){let t=p.getActivePartners();t=t.filter(t=>t.id!==e),p.setActivePartners(t),_.getInstance().inAppNavigation("?page=partners")}static isPartnerActive(e){return!!f.getActivePartner(e)}static isPerkActive(e,t){const a=f.getActivePartner(e);return!!a&&(void 0!==a.activePerks[t]&&(!!a.activePerks[t].active&&!!n.isToday(a.activePerks[t].activatedOn)))}static activatePerk(e,t){const a=s.getInstance();if(!f.isPartnerActive(e))return void n.showToast(a.T("partner-perk-not-active-header","Perk can not be activated"),a.T("partner-perk-not-active-content","This partner is not active."));if(f.isMaxPerksActive())return void n.showToast(a.T("partner-perk-max-perks-header","Maximum partner perks active"),a.T("partner-perk-max-perks-content","You are only allowed to activate %s partner perks at a time.",[o.maxConcurrentPartnerPerks]));let i=S.getActiveTags(),r=p.partnersData[e].perks[t],l=r.tags;if(i.length<=0||l.length>0&&!l.some(e=>i.includes(e)))return void n.showToast(a.T("partner-perk-tags-header","Perk can not be activated"),a.T("partner-perk-tags-content","You don't have any class with matching tags active."));const d=p.getActivePartners().map(a=>(a.id===e&&(a.activePerks[t]={active:!0,activatedOn:n.getNowUnix()}),a));p.setActivePartners(d),x.perkActivated(r),u.getInstance().multiplierChanged(),_.inAppReload()}static deactivatePerk(e,t){const a=s.getInstance();if(!f.isPerkActive(e,t))return void n.showToast(a.T("partner-perk-not-active-header","Perk can not be deactivated"),a.T("partner-perk-not-active-content","It's currently not possible to deactivate this perk."));const i=p.getActivePartners().map(a=>(a.id===e&&delete a.activePerks[t],a)),o=p.partnersData[e].perks[t];p.setActivePartners(i),x.perkDeactivated(o),u.getInstance().multiplierChanged(),_.inAppReload()}}class k{static get expectedParameters(){return{getView:[]}}static getView(){const e=p.getActiveMajor(),t=p.majorsData[e],a=I.mandatoryClasses(e),i=S.getActiveClasses(),r=S.getFinishedClasses(),l=p.getFinishedMajors(),d=s.getInstance();let c="",u="",m="",g="",h=l.length,v=0,b=0,f=0,y=0,w=0;for(const e of l){let t=p.majorsData[e];g+=C.getCardHtml(t)}for(let e of a){let t=S.getAssignedClass(e),a=p.classesData[e];c+=P.getCardHtml(a,t,!0,"col-lg-3 col-sm-3 pb-5")}for(let e of i){let t=p.classesData[e.id],s=a.some(t=>t==e.id);u+=P.getCardHtml(t,e,s,"col-lg-3 col-sm-3 pb-5")}for(let e of r){let t=p.classesData[e.id],s=a.some(t=>t==e.id);m+=P.getCardHtml(t,e,s,"col-lg-3 col-sm-3 pb-5")}for(let e of r){let t=p.classesData[e.id],s=a.some(t=>t==e.id);switch(t.tier){case"beginner":v+=1;break;case"intermediate":b+=1;break;case"advanced":f+=1;break;case"master":y+=1}s&&(w+=1)}return`
    \n

    ${d.T("progress-active-major","Current major")}

    \n
    \n
    \n
    \n
    \n \n ${n.getButtonsContainer([``])}\n
    \n
    \n
    \n

    ${t.name}

    \n

    ${t.description}${k.getCurrentCredits()}${k.getPunishmentsEndured()}

    \n ${k.getGraduationButtonHtml()}\n
    ${d.T("progress-completed-classes","Class completion")}:
    \n
      \n
    • ${d.T("class-beginner-header","Beginner classes")}: ${v}
    • \n
    • ${d.T("class-intermediate-header","Intermediate classes")}: ${b}
    • \n
    • ${d.T("class-advanced-header","Advanced classes")}: ${f}
    • \n
    • ${d.T("class-master-header","Master classes")}: ${y}
    • \n
    \n
    \n
    \n
    \n

    ${d.T("progress-active-classes","Active classes")} [${i.length}/${o.maxConcurrentClasses}]

    \n
    \n
    \n ${u.length<=0?`
    ${d.T("progress-active-classes-no","No active classes available.")}
    `:u}\n
    \n
    \n

    ${d.T("progress-mandatory-classes","Mandatory classes")} [${w}/${a.length}]

    \n
    \n
    \n ${c.length<=0?`
    ${d.T("progress-mandatory-classes-no","No mandatory classes available.")}
    `:c}\n
    \n
    \n

    ${d.T("progress-finished-majors","Finished majors")} [${h}]

    \n
    \n
    \n ${g.length<=0?`
    ${d.T("progress-finished-majors-no","No majors finished yet.")}
    `:g}\n
    \n
    \n

    ${d.T("progress-finished-classes","Finished classes")} [${r.length}]

    \n
    \n
    \n ${m.length<=0?`
    ${d.T("progress-finished-classes-no","No classes finished yet.")}
    `:m}\n
    \n
    \n
    \n `}static getGraduationButtonHtml(){const e=p.getActiveMajor();return I.isThesisAvailable(e)?``:""}static getPunishmentsEndured(){let e=p.getEnduredPunishments();return e>0?`
    ${s.getInstance().T("progress-punishments-endured","Punishments endured")}: ${e}`:""}static getCurrentCredits(){const e=s.getInstance();return`
    ${e.T("credits","Credits")}: ${S.collectedCredits}/${p.requiredCreditsForGraduation}${S.collectedCredits<=0?`${e.T("progress-credits-info","You only get credits for finishing a class by attending the exam.")}`:""}`}}class y{static get expectedParameters(){return{getView:[]}}static getView(){const e=p.punishmentsData,t=s.getInstance();let a="",i="",n="";for(const t in e){let s=e[t];"light"===s.tier?a+=y.getCardHtml(s):"hard"===s.tier?i+=y.getCardHtml(s):"hardcore"===s.tier&&(n+=y.getCardHtml(s))}return`
    \n
    \n \n
    \n \n
    \n
    \n
    `}static getCardHtml(e){const t=T.isPunishmentLocked(e.id),a=T.isPunishmentActive(e.id),i=void 0!==x.getActiveTaskForObject(e.id,"punishment"),o=T.wasFinishedBefore(e.id),r=T.isBlocked(e.id),l=s.getInstance();let d='';return i&&(d=''),`
    \n
    \n
    \n \n ${n.getButtonsContainer([a||o?`${d}`:"",y.getBlockButton(e)])}\n ${a?n.getBackdropContainer(l.T("punishment-status-active","Active")+' ',"success"):""}\n ${t?n.getBackdropContainer(l.T("punishment-status-locked","Locked")+' ',"danger"):""}\n ${r?n.getBackdropContainer(l.T("punishment-status-blocked","Blocked")+' ',"warning"):""}\n
    \n
    \n
    ${e.name}
    \n
    ${y.getPunishmentTasksHtml(e)}
    \n
    \n
    \n
    `}static getPunishmentTasksHtml(e){return""}static getRollPunishmentButton(e){if(T.isPunishmentTierAvailable(e)){const t=void 0===e?void 0:""+e,a=s.getInstance();return``}return""}static getBlockButton(e){if(!T.isPunishmentTierAvailable(e.tier))return"";if(!T.wasFinishedBefore(e.id)&&!T.isPunishmentActive(e.id)&&!n.getSetting("enableEasyMode"))return"";const t=T.isBlocked(e.id);return t&&!n.getSetting("enableEasyMode")?"":t?``:``}}class w{static get expectedParameters(){return{getView:["punishmentId"]}}static getView(e){const t=e.punishmentId,a=T.isPunishmentLocked(t),i=T.isPunishmentActive(t),n=x.getActiveTaskForObject(t,"punishment"),o=s.getInstance();let r=p.punishmentsData[t],l=w.getPunishmentTier(r.tier,o.T("punishment-tier-"+r.tier,r.tier));return`
    \n

    ${r.name}

    \n
    \n
    \n
    \n
    \n \n \n \n ${i?`
    ${o.T("punishment-status-active","Active")}
    `:""}\n ${a?`
    ${o.T("punishment-status-locked","Locked")}
    `:""}\n
    \n
    \n
    \n

    ${o.T("punishment-tier-text","Tier")}: ${l}

    \n
    \n ${void 0!==n?x.getTaskProgressHtml(n):w.getPunishmentTasksHtml(r)}\n
    \n
    \n ${w.getBlockButton(r)}\n
    \n
    \n
    \n
    \n
    \n `}static getBlockButton(e){if(!T.isPunishmentTierAvailable(e.tier))return"";if(!T.wasFinishedBefore(e.id)&&!T.isPunishmentActive(e.id)&&!n.getSetting("enableEasyMode"))return"";const t=T.isBlocked(e.id);return t&&!n.getSetting("enableEasyMode")?"":t?``:``}static getPunishmentTasksHtml(e){let t="";for(let a in e.tasks)e.tasks[a].isExam||(t+=`
  • \n ${e.tasks[a].task}${w.getPunishmentButton(e.id,a)}${w.getRerollButton(e.id,e.tier)}\n
  • `);return`
      ${t}
    `}static getPunishmentTier(e,t){let a="";return"light"===e?a="text-success":"hard"===e?a="text-warning":"hardcore"===e&&(a="text-danger"),`${t}`}static getPunishmentButton(e,t){return T.isPunishmentActive(e)?`
    `:""}static getRerollButton(e,t){return T.isPunishmentActive(e)?`
    `:""}}class T{static unblockPunishment(e){let t=p.getBlockedPunishments().filter(t=>t!==e);p.setBlockedPunishments(t),_.getInstance().inAppNavigation("?page=punishments")}static blockPunishment(e,t){let a=p.getBlockedPunishments();a.includes(e)||(a.push(e),p.setBlockedPunishments(a)),T.isPunishmentActive(e)?(T.removeActivePunishment(e),T.getRandomPunishmentAction(t)):_.getInstance().inAppNavigation("?page=punishments")}static isPunishmentActive(e){return 0!==p.getActivePunishments().filter(t=>t===e).length}static startPunishment(e,t){if(!T.isPunishmentActive(e))return!1;x.startTask(p.punishmentsData[e],"tasks",t)}static rerollPunishment(e,t){if(!T.isPunishmentActive(e))return!1;T.finishPunishment(e);const a=s.getInstance();let i=!1;if(!n.getSetting("enableEasyMode")){let e=p.getAssignedClasses().filter(e=>"active"==e.status&&e.attendances>0);if(e.length<=0&&(e=p.getAssignedClasses().filter(e=>"finished"==e.status&&e.attendances>0)),e.length>0){const t=e[Math.floor(Math.random()*e.length)],s=p.classesData[t.id];"active"==t.status?(i=!0,S.addClassAttendance(t.id,-1),n.scheduleToast(a.T("punishment-rerolled-knowledge-point-header","Punishment rerolled"),a.T("punishment-rerolled-knowledge-point-content","You rerolled your punishment, you lost a knowledge point for %s.",[s.name]),"warning")):"finished"==t.status&&(i=!0,S.updateAssignedClassStatus(t.id,"active"),n.scheduleToast(a.T("punishment-rerolled-exam-header","Punishment rerolled"),a.T("punishment-rerolled-exam-content","You rerolled your punishment, you lost your exam attendance for %s.",[s.name]),"warning"))}}i||n.scheduleToast(a.T("punishment-rerolled-unknown-header","Punishment rerolled"),a.T("punishment-rerolled-unknown-content","You rerolled your punishment, this will have consequences."),"warning"),T.getRandomPunishmentAction(t)}static wasFinishedBefore(e){return p.getFinishedPunishments().includes(e)}static isBlocked(e){return p.getBlockedPunishments().includes(e)}static finishPunishment(e){let t=p.getFinishedPunishments();t.includes(e)||(t.push(e),p.setFinishedPunishments(t)),T.removeActivePunishment(e)}static removeActivePunishment(e){let t=p.getActivePunishments().filter(t=>t!==e);p.setActivePunishments(t)}static isPunishmentLocked(e){const t=p.punishmentsData[e];return!T.isPunishmentTierAvailable(t.tier)}static isPunishmentTierAvailable(e){return!("hardcore"===e&&!n.getSetting("enableHardcorePunishments"))&&("hard"!==e&&"hardcore"!==e||!(S.collectedCredits=o.maxConcurrentPunishments)return void n.showToast(t.T("punishment-max-header","No additional punishment allowed"),t.T("punishment-max-content","You are allowed to have %s active punishments.",[o.maxConcurrentPunishments]));const i=p.getBlockedPunishments();let r=p.punishmentsData,l=[];for(const t in r){const a=r[t];T.isPunishmentActive(t)||(void 0!==e&&a.tier!==e||T.isPunishmentTierAvailable(a.tier)&&(i.includes(t)||l.push(t)))}if(l.length<=0)return void n.showToast(t.T("punishment-null-header","No punishments available"),t.T("punishment-null-content","Unable to determine any punishment that you can do."));const d=l[Math.floor(Math.random()*l.length)];return a.push(d),p.setActivePunishments(a),d}}class x{static getActiveModifiers(e){let t=o.baseTaskMultiplier,a=p.getAssignedClubs(),s=p.getActivePartners(),i=0,n=0,r=0,l=0,c=0;for(let t in a){let s=a[t],o=s.id,u=s.activePerks,m=p.clubsData[o].perks;for(let t in u){let a=m[t];h.isPerkActive(o,t)&&(void 0===e||a.tags.length>0&&!a.tags.some(t=>e.includes(t))||("difficulty"===a.modType?i+=Number.isNaN(Number.isInteger(a.modVal))?d.getPercentageFromText(a.job):a.modVal/100:"punishment"===a.modType&&(l+=Number.isNaN(Number.isInteger(a.modVal))?1:a.modVal),"difficulty"===a.perkType?i-=Number.isNaN(Number.isInteger(a.perkVal))?d.getPercentageFromText(a.perk):a.perkVal/-100:"skip"===a.perkType?n+=Number.isNaN(Number.isInteger(a.perkVal))?d.getClassSkipsFromText(a.perk):a.perkVal:"attendance"===a.perkType?r+=Number.isNaN(Number.isInteger(a.perkVal))?1:a.perkVal:"resetRoulette"===a.perkType&&(c+=Number.isNaN(Number.isInteger(a.perkVal))?1:a.perkVal)))}}for(let t in s){let a=s[t],o=a.id,u=a.activePerks,m=p.partnersData[o].perks;for(let t in u){let a=m[t];f.isPerkActive(o,t)&&(void 0===e||a.tags.length>0&&!a.tags.some(t=>e.includes(t))||("difficulty"===a.modType?i+=Number.isNaN(Number.isInteger(a.modVal))?d.getPercentageFromText(a.job):a.modVal/100:"punishment"===a.modType&&(l+=Number.isNaN(Number.isInteger(a.modVal))?1:a.modVal),"difficulty"===a.perkType?i-=Number.isNaN(Number.isInteger(a.perkVal))?d.getPercentageFromText(a.perk):a.perkVal/-100:"skip"===a.perkType?n+=Number.isNaN(Number.isInteger(a.perkVal))?d.getClassSkipsFromText(a.perk):a.perkVal:"attendance"===a.perkType?r+=Number.isNaN(Number.isInteger(a.perkVal))?1:a.perkVal:"resetRoulette"===a.perkType&&(c+=Number.isNaN(Number.isInteger(a.perkVal))?1:a.perkVal)))}}let u=t+i;return u<.5&&(u=.5),{multiplier:u,classSkips:n,bonusAttendance:r,punishments:l,resetRoulette:c}}static perkActivated(e){if(!e)return;const t=s.getInstance();if("punishment"==e.modType){let a=Number.parseInt(e.modVal);Number.isNaN(a)&&(a=1);for(let e=0;eb&&(f=f.add(1,"day")),f.unix()("minutes"==e.unit||"seconds"==e.unit)&&(void 0===e.spawnTimer||!1!==e.spawnTimer),y=e=>"punishments"==e.unit&&(null!=e.punTier&&!!Number.isInteger(e.value)),w=e=>void 0===e.provideCounter||!1!==e.provideCounter;for(let e of Object.keys(r.parameters)){let t=r.parameters[e];if(k(t)){let e=0;if("minutes"==t.unit?e=60*t.value:"seconds"==t.unit&&(e=t.value),t.applyMultiplier&&(e=Math.round(e*v.multiplier)),e>0){let a=n.getNowUnix(),s=a+e;m+=e,g1&&c>0&&(v.pauseBonus+=c),v.timers.length<=0){let e=n.getNowUnix(),t={id:n.getRandomString(),requiredTime:0,startAt:e,expectedFinishAt:e,mustBeFinishedBy:n.getNow().add(1,"day").startOf("day").unix(),pausedAt:void 0,totalPauseTime:0,timerInfo:""};v.timers.push(t)}let C=p.getActiveTasks();C.push(v),p.setActiveTasks(C),_.inAppReload()}static pauseTask(e,t){let a=p.getActiveTasks();a=a.map(a=>{if(a.id===e){let e=n.getNowUnix();for(let s in a.timers){let i=a.timers[s];i.id===t&&(i.expectedFinishAt<=e||void 0===i.mustBeFinishedBy&&(i.pausedAt=e))}}return a}),p.setActiveTasks(a),_.inAppReload()}static resumeTask(e,t){let a=p.getActiveTasks();a=a.map(a=>{if(a.id===e){let e=n.getNowUnix();for(let s in a.timers){let i=a.timers[s];if(i.id!==t)continue;if(void 0===i.pausedAt)continue;let n=i.pausedAt,o=i.startAt;i.totalPauseTime+=e-n;let r=n-o;i.startAt=e,i.requiredTime=i.requiredTime-r,i.expectedFinishAt=i.startAt+i.requiredTime,i.pausedAt=void 0}}return a}),p.setActiveTasks(a),_.inAppReload()}static finishManualTask(e){let t=p.getActiveTasks();t=t.map(t=>{if(t.id===e)for(let e in t.timers){let a=t.timers[e];void 0!==a.mustBeFinishedBy&&(a.mustBeFinishedBy=void 0)}return t}),p.setActiveTasks(t),x.checkForFinishedTasks(),_.inAppReload()}static punishTask(e){let t=p.getActiveTasks();t=t.map(t=>{if(t.id===e)for(let e in t.timers){let a=t.timers[e],s=n.getNowUnix();a.expectedFinishAt<=s||a.punishTime&&(a.expectedFinishAt=a.expectedFinishAt+a.punishSeconds)}return t}),p.setActiveTasks(t),_.inAppReload()}static failTaskAction(e){const t=s.getInstance();n.requestUserConfirmation(t.T("task-fail-header","Fail task"),t.T("task-fail-content","Are you sure that you want to fail this task?"),()=>{x.failTask(e),_.inAppReload()})}static failTask(e){let t=p.getActiveTasks(),a=t.find(t=>t.id===e);if(!a)return!1;if(a.failed)return!1;a.failed=!0;let s=n.getNowUnix();for(let e in a.timers){let t=a.timers[e];t.expectedFinishAt<=s||(t.expectedFinishAt=n.getNowUnix(),t.pausedAt=void 0,t.mustBeFinishedBy=void 0)}return p.setActiveTasks(t),a}static failTaskPunishment(e){const t=s.getInstance();let a=0;"custom"==e.object.type&&(a=o.failCustomTask,n.scheduleToast(t.T("task-punishment-header","Punishment"),`${t.T("task-punishment-custom-task","You failed a custom Task!")} ${o.failCustomTask>1?t.T("task-punishments-drawn","%s punishments were drawn!",[o.failCustomTask]):t.T("task-punishment-drawn","A punishment was drawn!")}`,"danger")),"class"==e.object.type&&("tasks"==e.objectTaskListReference&&(a=o.failDailyPunishment,n.scheduleToast(t.T("task-punishment-header","Punishment"),`${t.T("task-punishment-task","You failed a task!")} ${o.failDailyPunishment>1?t.T("task-punishments-drawn","%s punishments were drawn!",[o.failDailyPunishment]):t.T("task-punishment-drawn","A punishment was drawn!")}`,"danger")),e.isExam&&(a=o.failExamPunishment,n.scheduleToast(t.T("task-punishment-header","Punishment"),`${t.T("task-punishment-exam","You failed an exam!")} ${o.failExamPunishment>1?t.T("task-punishments-drawn","%s punishments were drawn!",[o.failExamPunishment]):t.T("task-punishment-drawn","A punishment was drawn!")}`,"danger"))),"major"==e.object.type&&e.isExam&&(a=o.failThesisPunishment,n.scheduleToast(t.T("task-punishment-header","Punishment"),`${t.T("task-punishment-thesis","You failed a thesis!")} ${o.failThesisPunishment>1?t.T("task-punishments-drawn","%s punishments were drawn!",[o.failThesisPunishment]):t.T("task-punishment-drawn","A punishment was drawn!")}`,"danger")),"punishment"==e.object.type&&T.rerollPunishment(e.object.id,e.object.tier);for(let e=0;e0}static checkForFinishedTasks(){if(!x.isAnyTaskActive())return!1;const e=s.getInstance();let t=p.getActiveTasks(),a=t.filter(e=>{if(e.failed)return!1;let t=n.getNowUnix();for(let a in e.timers){let s=e.timers[a];if(!(s.counter&&s.counter<=0)&&!(s.expectedFinishAt>t)){if(void 0!==s.mustBeFinishedBy&&s.mustBeFinishedBy<=t)return!0;if(void 0!==s.pausedAt&&t-e.pauseBonus-s.pausedAt+s.totalPauseTime>60*o.maxTaskPause)return!0}}return!1});for(let s of a)"class"!=s.object.type&&"major"!=s.object.type&&"custom"!=s.object.type||(s=x.failTask(s.id),t=t.filter(e=>e.id!=s.id),t.push(s),n.scheduleToast(e.T("task-failed-header","Task failed"),e.T("task-failed-content","You failed the task %s!",[s.object.name]),"danger"));a.length>0&&p.setActiveTasks(t);let i=t.filter(e=>{if(e.failed)return!0;let t=n.getNowUnix();for(let a in e.timers){let s=e.timers[a];if(s.counter&&s.counter>0)return!1;if(s.expectedFinishAt>t)return!1;if(void 0!==s.mustBeFinishedBy)return!1;if(void 0!==s.pausedAt)return!1}return!0}),r=!1,l=!1;for(let a of i){if(t=t.filter(e=>!(e.id===a.id)),"custom"==a.object.type){if(r=!0,a.failed){x.failTaskPunishment(a);continue}n.scheduleToast(e.T("task-custom-task-finished-header","Custom task finished"),e.T("task-custom-task-finished-content","You finished a custom task!"),"success")}if("class"==a.object.type){let t=n.getNow().add(-1,"day").startOf("day").unix();for(let e in a.timers){let s=a.timers[e];s.startAt>t&&(t=s.startAt)}if(S.setLastAttended(a.object.id,t),r=!0,a.failed){x.failTaskPunishment(a);continue}S.addClassAttendance(a.object.id,1+a.bonusAttendance),a.isExam?(S.updateAssignedClassStatus(a.object.id,"finished"),n.scheduleToast(e.T("task-class-finished-header","Class finished"),e.T("task-class-finished-content","Congratulations you finished class %s!",[a.object.name]),"success")):n.scheduleToast(e.T("task-finished-header","Task finished"),e.T("task-finished-content","You finished a task for %s!",[a.object.name]),"success")}if("major"==a.object.type){if(a.failed){r=!0,x.failTaskPunishment(a);continue}r=!1,n.scheduleToast(e.T("task-major-finished-header","Major finished"),e.T("task-major-finished-content","You graduated %s!",[a.object.name]),"success"),l=a.object.id;let t=p.getFinishedMajors();t.push(l),p.setFinishedMajors(t),p.setActiveMajor()}if("punishment"==a.object.type){if(r=!0,a.failed){x.failTaskPunishment(a);continue}T.finishPunishment(a.object.id),n.scheduleToast(e.T("task-punishment-finished-header","Punishment finished"),e.T("task-punishment-finished-content","You finished the punishment %s!",[a.object.name]),"success")}}i.length>0&&p.setActiveTasks(t),l&&_.navigate("?page=graduated&majorId="+l),r&&_.inAppReload()}static getActiveTaskForObject(e,t){if(x.isAnyTaskActive())return p.getActiveTasks().find(a=>a.object.id==e&&a.object.type==t)}static isTaskActiveForObject(e,t){return void 0!==x.getActiveTaskForObject(e,t)}static manualTaskCountdown(e,t){let a=1;t.counter>20&&(a=10);let s=p.getActiveTasks();s=s.map(s=>{if(s.id===e)for(let e in s.timers){let i=s.timers[e];i.id===t.id&&(i.counter-=a,i.counter>0||(i.mustBeFinishedBy=void 0))}return s}),p.setActiveTasks(s),$("#manualTaskCounter-"+t.id).text(""+t.counter),t.counter<=0&&(x.checkForFinishedTasks(),_.inAppReload())}static getTaskProgressHtml(e){if(!e||void 0===e)return"";let t=e.object.tasks[e.objectTaskReference],a="",i=n.getNowUnix(),o=!1;const r=s.getInstance();for(let t in e.timers){let s=e.timers[t];if(!(s.expectedFinishAt<=i&&void 0===s.pausedAt&&void 0===s.mustBeFinishedBy)&&(!o||!s.hiddenTask))if(void 0!==s.mustBeFinishedBy){o=!0;let t="";t=s.counter>0?``:``,a+=`

    ${s.timerInfo.length>0?`${s.timerInfo}: `:""}${r.T("task-finish-by-text","This task must have been finished %s.",[n.getNow().to(moment.unix(s.mustBeFinishedBy))])}

    \n
    \n ${t}\n \n
    `}else{o=!0;let t=setInterval(()=>{x.updateProgressTask(s.id,s.startAt,s.expectedFinishAt,s.pausedAt,t,s.totalPauseTime,e.pauseBonus)},1e3);u.getInstance().addTaskInterval(s.id,t),a+=`

    ${s.timerInfo.length>0?`${s.timerInfo}:`:`${r.T("task-time-left-info","Time left")}:`} 00:00:00

    \n
    \n
    \n
    \n
    \n ${void 0!==s.pausedAt?``:``}\n\n ${s.punishTime?``:""}\n \n
    `}}return`
    \n
    \n ${void 0!==e.pausedAt?' '+r.T("task-status-paused","Task is paused"):' '+r.T("task-status-active","Task in progress")}\n
    \n
    \n

    ${r.T("task-active-task","Active task")}: ${t.task}

    \n ${a}\n
    \n
    `}static updateProgressTask(e,t,a,s,i,r,l){let c=$("#taskProgress-"+e),u=$("#taskTime-"+e);if(c.length<=0||u.length<=0)return clearInterval(i),!1;let p=n.getNowUnix(),m=!1,g=0;t=t,a=a,void 0!==s&&(m=!0,g=s-p-r+l+60*o.maxTaskPause,p=s);let h=Math.floor((p-t)/(a-t)*100);c.css("width",h+"%"),c.text(h+"%"),u.html(`${d.dateObjectToHumanTime(a-p)} ${m?' '+d.minutesToTime(Math.floor(g/60)):""}`),h>=100&&clearInterval(i),(h>=100||m&&g<=0)&&(x.checkForFinishedTasks(),_.inAppReload())}static checkForSkippedClasses(){if(n.getSetting("enableEasyMode"))return;const e=s.getInstance(),t=n.getNow().add(-1,"day").startOf("day").unix(),a=p.getAssignedClasses().filter(e=>"active"==e.status&&void 0!==e.lastAttended&&e.lastAttended0?p.setClassSkipTokens(p.getClassSkipTokens()-1):(i++,T.getRandomPunishment(),n.scheduleToast(e.T("task-class-missed-header","Class missed"),e.T("task-class-missed-content","You missed a class and a punishment was rolled."),"danger"))))}S.setLastAttended(s.id,t)}r&&_.reload()}}class C{static get expectedParameters(){return{getView:[]}}static getView(){const e=p.majorsData;let t="";for(const a in e){let s=e[a];t+=C.getCardHtml(s)}return`
    \n
    ${t}
    \n
    `}static getCardHtml(e){const t=p.getActiveMajor()===e.id,a=I.isMajorFinished(e.id),i=a&&I.getGrade(e.id),o=I.isAnyMajorActive(),r=n.getRandomString(),l=x.getActiveTaskForObject(e.id,"major"),d=void 0!==l,c=s.getInstance();let u='';d&&(u='');let m="major";return a&&(m="graduated"),`
    \n
    \n
    \n \n \n \n ${t?n.getBackdropContainer(c.T("major-status-active","Active")+' ',"success"):""}\n ${a?n.getBackdropContainer(`${c.T("major-status-grade","Grade")} ${i} `,"info"):""} \n ${!o||t||a?"":n.getBackdropContainer(c.T("major-status-unavailable","Not available")+' ')}\n ${n.getButtonsContainer([`${u}`,C.getJoinButton(e.id),C.getDropButton(e.id)])}\n
    \n
    \n ${void 0!==l?x.getTaskProgressHtml(l):`\n
      \n ${C.getThesisHtml(e)}\n
    `}\n
    \n
    \n
    \n
    \n
    ${e.name} ${e.name2}
    \n

    ${e.description}

    \n
    \n
    \n
    `}static getThesisHtml(e){let t="";for(let a in e.tasks)e.tasks[a].isExam&&(t+=`
  • \n ${e.tasks[a].task}\n
  • `);return t}static getJoinButton(e){return I.isJoinButtonAvailable(e)?``:""}static getDropButton(e){return I.isDropButtonAvailable(e)?``:""}}class M{static get expectedParameters(){return{getView:["majorId"]}}static getView(e){const t=e.majorId,a=I.isMajorActive(t),i=x.getActiveTaskForObject(t,"major"),n=s.getInstance();let o=p.majorsData[t];return`
    \n

    ${o.name}

    \n
    \n
    \n
    \n
    \n \n \n \n ${a?`
    ${n.T("major-status-active","Active")}
    `:""}\n
    \n
    \n
    \n

    \n ${n.T("major-detail-prerequisites","Prerequisites")}: ${A.prerequisitesToString(o.prerequisites)}\n

    \n

    ${o.description}

    \n ${M.getThesisRequirements(o.id)}\n ${void 0!==i?x.getTaskProgressHtml(i):`\n
      \n
    • ${n.T("major-detail-thesis","Available thesis topics")}:
    • \n ${M.getThesisHtml(o)}\n
    `}\n
    \n ${M.getJoinButton(o.id)}\n ${M.getDropButton(o.id)}\n
    \n
    \n
    \n
    \n
    \n `}static getThesisHtml(e){let t="";for(let a in e.tasks)e.tasks[a].isExam&&(t+=`
  • \n
    \n
    \n \n
    \n
    ${e.tasks[a].task}${M.getThesisButton(e.id,a)}
    \n
    \n
  • `);return t}static getThesisButton(e,t){return I.isThesisAvailable(e)?`
    `:""}static getJoinButton(e){return I.isJoinButtonAvailable(e)?`
    `:""}static getDropButton(e){return I.isDropButtonAvailable(e)?`
    `:""}static getThesisRequirements(e){const t=s.getInstance();let a=`
  • ${t.T("major-detail-thesis-requirement-header","Thesis requirements")}:
  • `;return p.getActiveMajor()!=e&&(a+=`
  • \n
    \n
    \n \n
    \n
    ${t.T("major-detail-thesis-requirement-join","You must join this major, before you can do the thesis.")}
    \n
    \n
  • `),S.collectedCredits\n
    \n
    \n \n
    \n
    ${t.T("major-detail-thesis-requirement-credits","You must collect at least %s credits.",[p.requiredCreditsForGraduation])}
    \n
    \n `),p.getActivePunishments().length>0&&(a+=`
  • \n
    \n
    \n \n
    \n
    ${t.T("major-detail-thesis-requirement-punishments","You must finish all punishments.")}
    \n
    \n
  • `),I.prerequisitesDone(e)||(a+=`
  • \n
    \n
    \n \n
    \n
    ${t.T("major-detail-thesis-requirement-prerequisites","You must finish all prerequisites.")}
    \n
    \n
  • `),x.isTaskActiveForObject(e,"major")&&(a+=`
  • \n
    \n
    \n \n
    \n
    ${t.T("major-detail-thesis-requirement-thesis","You can only attend one thesis at a time.")}
    \n
    \n
  • `),`
      ${a}
    `}}class I{static getGrade(e){let t=0,a=0;const s=I.mandatoryClasses(e);for(const e of s)t+=S.getAssignedClass(e).attendances,a+=o.maxAttendances[p.classesData[e].tier];return n.getGrade(t,a)}static isJoinButtonAvailable(e){return!I.isAnyMajorActive()&&!I.isMajorFinished(e)}static isDropButtonAvailable(e){return I.isMajorActive(e)}static isMajorActive(e){return p.getActiveMajor()===e}static isMajorFinished(e){return p.getFinishedMajors().includes(e)}static mandatoryClasses(e){const t=p.majorsData[e].prerequisites;let a=[];a=a.concat(t);for(let e of t)a=a.concat(S.getClassPrerequisitesDeep(e));return a=a.sort((e,t)=>e-t),[...new Set(a)]}static isAnyMajorActive(){return void 0!==p.getActiveMajor()}static joinMajor(e){p.setActiveMajor(e),_.getInstance().inAppNavigation("?page=progress")}static dropMajor(){const e=s.getInstance();n.requestUserConfirmation(e.T("major-drop-confirm-header","Drop major"),e.T("major-drop-confirm-content","Are you sure that you want to drop your current major?"),()=>{p.setActiveMajor();for(let e=0;e0)&&(!!I.prerequisitesDone(e)&&!x.isTaskActiveForObject(e,"major"))))}static prerequisitesDone(e){const t=p.majorsData[e];if(!t)return!1;if(0===t.prerequisites.length)return!0;return!(t.prerequisites.filter(e=>{const t=S.getAssignedClass(e);return!t||"finished"!==t.status}).length>0)}}class P{static get expectedParameters(){return{getView:[]}}static getView(){const e=p.classesData,t=n.getSetting("hideActiveClasses"),a=n.getSetting("hideFinishedClasses"),i=p.getActiveMajor(),o=I.mandatoryClasses(i),r=s.getInstance();let l="",d="",c="",u="",m=!0,g=!0,h=!0,v="beginner",b=1,f=2,k=3,y=[];for(const s in e){let i=S.getAssignedClass(s);if(i){if(t&&"active"===i.status)continue;if(a&&"finished"===i.status)continue}let n=e[s];n.assigned=i,y.push(n)}y=y.sort((e,t)=>e.name.localeCompare(t.name));for(const e of y){const t=o.some(t=>t==e.id),a=P.getCardHtml(e,e.assigned,t);"beginner"===e.tier?l+=a:"intermediate"===e.tier?d+=a:"advanced"===e.tier?c+=a:"master"===e.tier&&(u+=a)}return m=l.length>0,g=d.length>0,h=c.length>0,m||(v="intermediate",g||(v="advanced",h||(v="master"))),h||(k-=1),g||(k-=1,f-=1),m||(k-=1,f-=1,b-=1),`
    \n
    \n \n
    \n \n
    \n
    \n
    `}static getCardHtml(e,t,a,i){let o=S.isClassLocked(e.id),r=x.getActiveTaskForObject(e.id,"class"),l=t?t.status:"",d=void 0!==r,c="finished"===l,u=c&&S.getGrade(e.id),p="active"===l,m=p&&S.getAttendanceRate(e.id),g=n.getRandomString(),h=s.getInstance(),v='';return d&&(v=''),`
    \n
    \n\n
    \n \n \n \n ${p?n.getBackdropProgressContainer(h.T("class-status-active","Active")+' ',m):""}\n ${o?n.getBackdropContainer(h.T("class-status-locked","Locked")+' ',"danger"):""} \n ${c?n.getBackdropContainer(`${h.T("class-status-grade","Grade")} ${u} `,"info"):""} \n ${n.getButtonsContainer([c?"":`${v}`,P.getJoinButton(e.id),P.getDropButton(e.id),P.getRetakeButton(e.id)])}\n
    \n
    \n ${void 0!==r?x.getTaskProgressHtml(r):`\n
      \n
    • ${h.T("class-card-tasks","Available tasks")}:
    • \n ${P.getTasksHtml(e,t.attendances||0)}\n
    • ${h.T("class-card-exams","Available exams")}:${p||c?S.getKnowledgePointsInfo(e.id):""}
    • \n\n ${S.isExamAvailable(e.id)?P.getExamsHtml(e):`
    • \n
      \n
      \n \n
      \n
      ${h.T("class-card-exams-locked","Currently locked")}
      \n
      \n
    • `}\n\n
    `}\n
    \n
    \n
    \n\n
    \n
    \n ${e.name} \n ${a?' ':""}\n ${e.name2}\n
    \n

    ${e.description}

    \n
    \n
    \n
    `}static getJoinButton(e){return S.isJoinButtonAvailable(e)?``:""}static getDropButton(e){return S.isDropButtonAvailable(e)?``:""}static getRetakeButton(e){return S.isRetakeButtonAvailable(e)?``:""}static getTasksHtml(e,t){let a="",s=S.getTodaysTasks(e.tasks,t,e.taskListSize);for(let e of s)a+=`
  • \n
    \n
    \n \n
    \n
    ${e.task}
    \n
    \n
  • `;return a}static getExamsHtml(e){let t="";for(let a in e.tasks)e.tasks[a].isExam&&(t+=`
  • \n
    \n
    \n \n
    \n
    ${e.tasks[a].task}
    \n
    \n
  • `);return t}}class A{static get expectedParameters(){return{getView:["classId"]}}static getView(e){const t=e.classId,a=S.isClassLocked(t),i=S.getAssignedClass(t),o=i?i.status:"",r=x.getActiveTaskForObject(t,"class"),l=void 0!==r,d="finished"===o,c="active"===o,u=d&&S.getGrade(t),m=s.getInstance();let g=p.classesData[t];return`
    \n

    ${g.name}

    \n
    \n
    \n \n
    \n
    \n
    \n \n \n \n ${a?`
    ${m.T("class-status-locked","Locked")}
    `:""}\n ${d?`
    ${m.T("class-status-grade","Grade")} ${u}
    `:""}\n ${c?`
    ${m.T("class-status-active","Active")}
    `:""}\n
    \n
    \n
    \n ${A.getPrerequisites(g.prerequisites)}\n

    ${m.T("class-detail-days","Classes on")}: ${n.daysToString(g.days)}

    \n ${A.getMandatoryInfoHtml(g.id)}\n ${A.getBonusAttendanceDisabledHtml(g)}\n

    \n ${g.description}\n ${A.getCommentHtml(g.comment)}\n

    \n ${l?x.getTaskProgressHtml(r):d?"":`\n
      \n
    • ${m.T("class-detail-tasks","Available task options")}:
    • \n ${A.getTasksHtml(g,i.attendances||0)}\n
    \n ${S.isExamAvailable(g.id)?`
      \n
    • ${m.T("class-detail-exams","Available exam options")}:${c||d?S.getKnowledgePointsInfo(g.id):""}
    • \n
    • ${m.T("class-detail-expected-grade","If you take the exam now the expected grade is %s.",[S.getGrade(g.id)])}
    • \n ${A.getExamsHtml(g)}\n
    `:A.getExamPlaceholder(i,g)}\n
    \n ${A.getJoinButton(g.id)}\n ${A.getDropButton(g.id)}\n
    \n `}\n ${A.getRetakeInfo(g.id)}\n
    \n
    \n \n
    \n
    \n
    `}static getMandatoryInfoHtml(e){return S.isClassMandatory(e)?`

    ${s.getInstance().T("class-detail-mandatory","This is a mandatory class %s for your currently active major.",[''])}

    `:""}static getBonusAttendanceDisabledHtml(e){return e.disableBonusAttendance||!1?`

    ${s.getInstance().T("class-detail-bonus-attendance-disabled","This class disabled any bonus attendance modifiers!")}

    `:""}static getTasksHtml(e,t){let a="",s=S.getTodaysTasks(e.tasks,t,e.taskListSize);for(let t of s)a+=`
  • \n
    \n
    \n \n
    \n
    ${t.task} ${A.getDailyButton(e.id,t.id)}
    \n
    \n
  • `;return a}static getExamsHtml(e){let t="";for(let a in e.tasks)e.tasks[a].isExam&&(t+=`
  • \n
    \n
    \n \n
    \n
    ${e.tasks[a].task}${A.getExamButton(e.id,a)}
    \n
    \n
  • `);return t}static getCommentHtml(e){return!e||null==e||e.length<=0?"":`
    ${e}`}static getPrerequisites(e){const t=A.prerequisitesToString(e);return t.length>0?`

    ${s.getInstance().T("prerequisites","Prerequisites")}: ${t}

    `:""}static prerequisitesToString(e){return e.map(e=>`${p.classesData[e].name}`).join(", ")}static getJoinButton(e){return S.isJoinButtonAvailable(e)?``:""}static getDropButton(e){return S.isDropButtonAvailable(e)?``:""}static getRetakeInfo(e){const t=s.getInstance();return S.isRetakeButtonAvailable(e)?`\n
    \n
    \n ${t.T("class-detail-retake-warning","You already finished this class and got a %s, there is still room for improvement. You may retake this class and collect additional knowledge before attempting the exam again to get a better grade.",[`${S.getGrade(e)}`])}\n
    \n \n
    \n `:""}static getDailyButton(e,t){return S.isDailyAvailable(e)?`
    `:""}static getExamButton(e,t){return S.isExamAvailable(e)?`
    `:""}static getExamPlaceholder(e,t){const a=s.getInstance();let i=`
  • ${a.T("class-detail-exam-requirement-header","Exam unlock requirements")}:
  • `;return"active"!==e.status&&(i+=`
  • \n
    \n
    \n \n
    \n
    ${a.T("class-detail-exam-requirement-join","You must join this class, before you can do any tasks or exams.")}
    \n
    \n
  • `),(S.wasAttendedToday(t.id)||x.isTaskActiveForObject(t.id,"class"))&&(i+=`
  • \n
    \n
    \n \n
    \n
    ${a.T("class-detail-exam-requirement-attended","You already attended this class today, you can't do a task and the exam on the same day.")}
    \n
    \n
  • `),e.attendances\n
    \n
    \n \n
    \n
    ${a.T("class-detail-exam-requirement-attendance","You must have collected at least %s knowledge points, you accumulated %s knowledge points.",[o.expectedAttendance[t.tier],e.attendances])}
    \n
    \n `),e.attendances!e[1].isExam).length&&(i+=`
  • \n
    \n
    \n \n
    \n
    ${a.T("class-detail-exam-requirement-attendance-tasks","You must have done all available tasks.")}
    \n
    \n
  • `),p.getActivePunishments().length>0&&(i+=`
  • \n
    \n
    \n \n
    \n
    ${a.T("class-detail-exam-requirement-punishment","You must finish all punishments.")}
    \n
    \n
  • `),n.hasMatchingDate(t.days)||(i+=`
  • \n
    \n
    \n \n
    \n
    ${a.T("class-detail-exam-requirement-days","You can only attend this exam on the defined days.")}
    \n
    \n
  • `),`
      ${i}
    `}}class S{static getKnowledgePointsInfo(e){return``}static getAttendance(e){return S.getAssignedClass(e).attendances}static getMaxAttendances(e){return o.maxAttendances[p.classesData[e].tier]}static getAttendanceRate(e){return S.getAttendance(e)/S.getMaxAttendances(e)*100}static getGrade(e){return n.getGrade(S.getAttendance(e),S.getMaxAttendances(e))}static startDaily(e,t){if(!S.isDailyAvailable(e))return!1;x.startTask(p.classesData[e],"tasks",t)}static startExam(e,t){if(!S.isExamAvailable(e))return!1;x.startTask(p.classesData[e],"tasks",t)}static isJoinButtonAvailable(e){const t=S.getAssignedClass(e),a=S.isClassLocked(e);return!S.isMaxClassesReached()&&!a&&(!t||"active"!==t.status&&"finished"!==t.status)}static isRetakeButtonAvailable(e){const t=S.getAssignedClass(e);return t&&"finished"===t.status&&"A+"!==S.getGrade(e)}static isDropButtonAvailable(e){const t=S.getAssignedClass(e);return t&&"active"===t.status}static getAssignedClass(e){const t=p.getAssignedClasses().filter(t=>t.id==e);return 0!==t.length&&t[0]}static getActiveClasses(){return p.getAssignedClasses().filter(e=>"active"==e.status)}static getFinishedClasses(){return p.getAssignedClasses().filter(e=>"finished"==e.status)}static updateAssignedClassStatus(e,t){const a=p.getAssignedClasses().map(a=>(a.id===e&&(a.status=t),a));p.setAssignedClasses(a)}static addAssignedClass(e){if(S.getAssignedClass(e))return void S.updateAssignedClassStatus(e,"active");const t={id:e,status:"active",attendances:0};let a=p.getAssignedClasses();a.push(t),p.setAssignedClasses(a)}static getActiveTags(){let e=S.getActiveClasses(),t=p.classesData,a=[];for(let s of e){let e=t[s.id].tasks;for(let t of Object.keys(e))a=a.concat(e[t].tags)}return[...new Set(a)]}static addClassSkipToken(e){if(!Number.isInteger(e))return;let t=p.getClassSkipTokens()+e;t>o.maxConcurrentClasses&&(t=o.maxConcurrentClasses),t<0&&(t=0),p.setClassSkipTokens(t)}static wasAttendedToday(e){if(n.getSetting("enableEasyMode"))return!1;const t=S.getAssignedClass(e);if(!t)return!1;let a=t.lastAttended;return!(!a||void 0===a)&&n.isToday(a)}static setLastAttended(e,t){let a=p.getAssignedClasses();a=a.map(a=>(a.id==e&&(a.lastAttended=t),a)),p.setAssignedClasses(a)}static addClassAttendance(e,t){let a=p.getAssignedClasses();a=a.map(a=>(a.id==e&&(a.attendances+=t),a)),p.setAssignedClasses(a)}static isClassMandatory(e){return I.mandatoryClasses(p.getActiveMajor()).some(t=>t==e)}static getClassPrerequisitesDeep(e){const t=p.classesData[e].prerequisites;let a=[];a=a.concat(t);for(let e of t)a=a.concat(S.getClassPrerequisitesDeep(e));return a}static isClassLocked(e){const t=p.classesData[e];let a=0,s=S.collectedCredits;return"intermediate"===t.tier?a=p.requiredCreditsUnlockIntermediate:"advanced"===t.tier?a=p.requiredCreditsUnlockAdvanced:"master"===t.tier&&(a=p.requiredCreditsUnlockMaster),se+(o.classesExamCredits[p.classesData[t.id].tier]||0),0)}static isMaxClassesReached(){return S.getActiveClasses().length>=o.maxConcurrentClasses}static retakeClass(e){const t=s.getInstance();S.isMaxClassesReached()?n.showToast(t.T("class-max-classes-header","Maximum classes active"),t.T("class-max-classes-content","You are only allowed to join %s classes at a time.",[o.maxConcurrentClasses])):n.requestUserConfirmation(t.T("class-retake-confirmation-header","Retake class"),t.T("class-retake-confirmation-content","Are you sure that you want to retake this class? You will not loose any accumulated experience but must attend the exam again."),()=>{S.updateAssignedClassStatus(e,"active"),S.setLastAttended(e,n.getNow().add(-1,"day").startOf("day").unix()),_.getInstance().inAppNavigation("?page=class&classId="+e)})}static joinClass(e){const t=s.getInstance();S.isMaxClassesReached()?n.showToast(t.T("class-max-classes-header","Maximum classes active"),t.T("class-max-classes-content","You are only allowed to join %s classes at a time.",[o.maxConcurrentClasses])):(S.addAssignedClass(e),_.getInstance().inAppNavigation("?page=class&classId="+e))}static dropAssignedClass(e){const t=s.getInstance();n.requestUserConfirmation(t.T("class-drop-confirmation-header","Drop class"),t.T("class-drop-confirmation-content","Are you sure that you want to drop this class?"),()=>{S.updateAssignedClassStatus(e,"dropped"),_.getInstance().inAppNavigation("?page=classes")})}static finishAssignedClass(e){S.updateAssignedClassStatus(e,"finished"),_.getInstance().inAppNavigation("?page=class&classId="+e)}static isDailyAvailable(e){const t=S.getAssignedClass(e);if(!t||"active"!==t.status)return!1;if(S.wasAttendedToday(e))return!1;const a=p.classesData[e];return!!n.hasMatchingDate(a.days)&&!x.isTaskActiveForObject(e,"class")}static prerequisitesDone(e){const t=p.classesData[e];if(!t)return!1;if(0===t.prerequisites.length)return!0;return!(t.prerequisites.filter(e=>{const t=S.getAssignedClass(e);return!t||"finished"!==t.status}).length>0)}static isExamAvailable(e){const t=S.getAssignedClass(e);if(!t)return!1;if("active"!==t.status)return!1;if(S.wasAttendedToday(e))return!1;const a=p.classesData[e];return!(t.attendances!e[1].isExam).length)&&(!!n.hasMatchingDate(a.days)&&(!x.isTaskActiveForObject(e,"class")&&!(p.getActivePunishments().length>0))))}static getTodaysTasks(e,t,a){(!a||a<=0)&&(a=o.defaultTaskListSize);const s=(e=Object.entries(e).filter(e=>!e[1].isExam).map(e=>e[1])).length;if(s<=a)return e;let i=[],n=t;for(;i.length\n
  • 1. ${e.T("help-overview-1","Join a %smajor%s",[``,""])}
  • \n
  • 2. ${e.T("help-overview-2","Join %smandatory classes%s %sMandatory classes are highlighted with a yellow star%s and %sextra side classes%s",[``,"",'',``,""])}
  • \n
  • 3. ${e.T("help-overview-3","Get involved with %sclubs%s and %spartners%s to adjust the difficulty and add additional challenges",[``,"",``,""])}
  • \n
  • 4. ${e.T("help-overview-4","Attend and pass classes to get %s credits",[p.requiredCreditsForGraduation])}
  • \n
  • 5. ${e.T("help-overview-5","Don't attend classes and you'll get %spunished%s",[``,""])}
  • \n
  • 6. ${e.T("help-overview-6","Graduate")}
  • \n \n `,"anchor"+a,void 0,"anchor"+(a+1)),a++,t+=j.getHelpEntryHtml(e.T("help-notice-header","Game notice"),`\n

    \n ${e.T("help-notice-content",'\n Your health takes top priority. In case you start a task that turns out to be unhealthy,\n you should absolutely "finish" it without actually doing it! If you aren\'t feeling well,\n stop whatever you are currently doing and make sure you are fine. Contact a doctor if required.\n On the same notion, suicide is not an option, you are great the way you are and before doing \n anything that cannot be undone - take a helping hand.')}\n

    \n `,"anchor"+a,"anchor"+(a-1),"anchor"+(a+1)),a++,t+=j.getHelpEntryHtml(e.T("help-progress-header","Game progress notice"),`\n

    \n ${e.T("help-progress-content","\n All game data is stored locally in your browser. Nothing is sent or stored online.\n Private browsing mode doesn't save data and sets limits, for the best experience it is therefore recommended to play in a normal \n browser window. In case you do play in a private window make sure to export your progress and keep the map file you used handy.\n You will need the map and save game file to continue playing where you left of.")}\n

    \n `,"anchor"+a,"anchor"+(a-1),"anchor"+(a+1)),a++,t+=j.getHelpEntryHtml(e.T("help-majors-header","Majors"),`\n

    \n ${e.T("help-majors-content","\n Choose a %sMajor%s depending on what you'd like to specialise in. \n Each one has specific mandatory classes (prerequisites) and each of those classes has \n prerequisite classes of their own. Once you join a major go to the \n %sProgress page%s to see your mandatory classes. You need to \n get %s credits before attempting to graduate. If you decide to\n change your major you can go to it's page and drop it however this will result in a \n penalty of %s random punishments.",['',"",'',"",p.requiredCreditsForGraduation,o.majorDropPunishments])}\n

    \n `,"anchor"+a,"anchor"+(a-1),"anchor"+(a+1)),a++,t+=j.getHelpEntryHtml(e.T("help-classes-header","Classes and schedule"),`\n

    \n ${e.T("help-classes-content","\n Every class has a weekly schedule that you need to keep track of. \n You'll need to complete one of the two daily tasks or exams to receive a knowledge point.\n If you fail to attend a class by the end of the day a punishment will be automatically \n rolled for that class. To unlock its exam you need to have attended it at least a few times \n and to not have any pending punishments. You will see a full set of the requirements if you open the class.\n Once you pass a class you can immediately enroll in another one if you wish. You can NOT join a class again or do their tasks once you've passed it. \n You can not enroll in more than %s classes at once. \n Do not enroll in too many classes if you can't keep up with the schedule. \n Classes can also be done during the weekend. Weekend classes are optional and you won't be punished for skipping them.",[o.maxConcurrentClasses])}\n

    \n `,"anchor"+a,"anchor"+(a-1),"anchor"+(a+1)),a++,t+=j.getHelpEntryHtml(e.T("help-punishments-header","Punishments"),`\n
      \n
    • ${e.T("help-punishments-1","If you fail to attend a class by the end of the day a punishment will be automatically rolled for you.")}
    • \n
    • ${e.T("help-punishments-2",'If you have an active task and you fail to do it, you must press "Fail" in order to get punished.')}
    • \n
    • ${e.T("help-punishments-3","If you pause a task for more than %s you will get punished. If the task has multiple steps you will get additional pause time but this includes the time you need to finish the other tasks.",[moment.duration(o.maxTaskPause,"minutes").humanize()])}
    • \n
    • ${e.T("help-punishments-4","Punishments can be completed whenever you like.")}
    • \n
    • ${e.T("help-punishments-5","You can get a maximum of %s punishments.",[o.maxConcurrentPunishments])}
    • \n
    • ${e.T("help-punishments-6","You can't attend exams or graduate if you have any pending punishments, so make sure you don't stack too many of them.")}
    • \n
    • ${e.T("help-punishments-7","You get %s punishment for failing a daily task, %s for failing an exam and %s for failing your final thesis.",[o.failDailyPunishment,o.failExamPunishment,o.failThesisPunishment])}
    • \n
    \n `,"anchor"+a,"anchor"+(a-1),"anchor"+(a+1)),a++,t+=j.getHelpEntryHtml(e.T("help-clubs-header","Clubs"),`\n
      \n
    • ${e.T("help-clubs-1","Clubs provide you with different bonuses such as free class skips and reduced task requirements for classes.")}
    • \n
    • ${e.T("help-clubs-2","Clubs are supplementary to your classes so you can combine them however you want.")}
    • \n
    • ${e.T("help-clubs-3","It is not possible to deactivate perks. They will last the rest of the day.")}
    • \n
    • ${e.T("help-clubs-4","Some club tasks overlap with tasks from classes. In this case you can you can use the club perk for free.")}
    • \n
    • \n ${e.T("help-clubs-5","\n Make sure that when doing a class task and you have some club perks activated, you can stay true to the \n club's requirements. If you have activated a perk that requires you to wear a gag and you have a class\n that lasts 8 hours, it's highly unlikely that you'd wear the gag for those 8 hours, so make sure you only activated once only \n tasks are left that you can fulfill this requirement with.")}\n
    • \n
    • ${e.T("help-clubs-6","You can join a maximum of %s clubs and have a maximum of %s club perks active.",[o.maxConcurrentClubs,o.maxConcurrentClubPerks])}
    • \n
    • ${e.T("help-clubs-7","Later in the game you'll unlock Elite Clubs that provide greater benefits but have harder requirements.")}
    • \n
    • ${e.T("help-clubs-8","Keep in mind that you're limited to only %s elite club.",[o.maxConcurrentEliteClubs])}
    • \n
    • ${e.T("help-clubs-9","Normal club perks can be toggled on and off while Elite club perks can be activated only once a day.")}
    • \n
    • ${e.T("help-clubs-10","All active perks are reset on the next day.")}
    • \n
    • ${e.T("help-clubs-11","Keep in mind that the maximum reduction you can get from clubs is capped at 50%. If you have 50% reduction from your normal clubs and another 25% from an elite one you'll still get only 50% instead of 75%.")}
    • \n
    \n `,"anchor"+a,"anchor"+(a-1),"anchor"+(a+1)),a++,t+=j.getHelpEntryHtml(e.T("help-partners-header","Partners"),`\n

    \n ${e.T("help-partners-content","\n Partners are very similar to clubs with the only difference being that they make \n things harder instead of easier but in return you'll get extra points. \n You can have up to %s partners. \n Their perks can be activated once per day and deactivate automatically on the next.",[o.maxConcurrentPartner])}\n

    \n `,"anchor"+a,"anchor"+(a-1),"anchor"+(a+1)),a++,t+=j.getHelpEntryHtml(e.T("help-tasks-header","Tasks and timers"),`\n

    \n ${e.T("help-tasks-content",'\n The game has a tasks system for majors and classes. On your schedule page you\'ll \n be able to select which task to do for your active classes. Each task can have multiple sub-tasks\n Once you start a task you\'ll see the new task show up where you can either start its timer or \n press "Complete" if the task is not time dependent. Timers can be paused/resumed\n and they carry over between days. You won\'t get punished if the task is running from\n yesterday. If you fail to do a task, you must press "Fail" in order to get punished.\n The active timers for all your classes are also visible on the schedule page for\n each class.')}\n

    \n `,"anchor"+a,"anchor"+(a-1),"anchor"+(a+1)),a++,t+=j.getHelpEntryHtml(e.T("help-grades-header","Grades"),`\n

    \n ${e.T("help-grades-content","\n Whenever you attend and finish class task you will receive one knowledge point, if you have modifiers active (from partners / clubs)\n you can receive additional ones. Based on these knowledge points you will receive a grade once you have taken the exam. It's up\n to you to decide how well you want to perform during the exam. The grades you receive will be used to calculate your major grade.\n In case you already finished a class and want to improve your grade, you can retake them anytime. If you retake a class you need to repeat the\n exam and loose the credits related to the class but you will keep the already collect knowledge points.\n If you re-roll a punishment you will loose knowledge points to a random class you are currently taking.\n
    To make sure you don't fail, you need to collect at least:")}\n

    \n ${j.getGradeHtml()}\n `,"anchor"+a,"anchor"+(a-1),"anchor"+(a+1)),a++,t+=j.getHelpEntryHtml(e.T("help-credits-header","Credits"),`\n

    \n ${e.T("help-credits-content","\n Graduating requires that you have at least %s credits.\n You first need to attend classes to unlock\n the exam. Once you finish the exam for a class you will get matching credits.",[p.requiredCreditsForGraduation])}\n

    \n
      \n
    • ${e.T("class-beginner-header","Beginner classes")}: ${o.classBeginnerCredits} ${e.T("credits","Credits")}
    • \n
    • ${e.T("class-intermediate-header","Intermediate classes")}: ${o.classIntermediateCredits} ${e.T("credits","Credits")}
    • \n
    • ${e.T("class-advanced-header","Advanced classes")}: ${o.classAdvancedCredits} ${e.T("credits","Credits")}
    • \n
    • ${e.T("class-master-header","Master classes")}: ${o.classMasterCredits} ${e.T("credits","Credits")}
    • \n
    \n `,"anchor"+a,"anchor"+(a-1),"anchor"+(a+1)),a++,t+=j.getHelpEntryHtml(e.T("help-graduating-header","Graduating"),`\n

    \n ${e.T("help-graduating-content",'\n Once you have completed all your mandatory classes and collected %s\n credits through attending extra classes you may attempt to graduate.\n Some Majors could take up to a month for the final task. If you fail to do one of the thesis requirements \n you must press "Fail" which will roll %s punishments. Some majors have an additional punishment option which \n increases the timer\'s duration. After you graduate your major will be marked as Completed and your progress will be preserved.\n You can sign up for another one in another field which will become very \n useful in the future when you start building your career.',[p.requiredCreditsForGraduation,o.failThesisPunishment])}\n

    \n `,"anchor"+a,"anchor"+(a-1),"anchor"+(a+1)),i.map.rouletteOptions){const s=i.map.rouletteOptions;let n="";for(let e in s){const t=s[e];n+=`
  • ${100*t.probability}% ${t.description}
  • `}a++,t+=j.getHelpEntryHtml(e.T("help-roulette-header","Orgasm roulette system"),`\n

    \n ${e.T("help-roulette-content","\n The only way you are allowed to cum is either through classes or from the %sOrgasm Roulette%s. \n Every day you'll get the chance to spin is once and test your luck out.",['',""])}\n

    \n
      \n ${n}\n
    \n `,"anchor"+a,"anchor"+(a-1),"anchor"+(a+1))}if(void 0!==i.map.general.help&&i.map.general.help.length>0)for(const e of i.map.general.help)a++,t+=j.getHelpEntryHtml(e.title,e.text,"anchor"+a,"anchor"+(a-1),"anchor"+(a+1));return`
    \n ${t}\n
    `}static getHelpEntryHtml(e,t,a,s,i){return`\n
    \n
    \n \n

    \n ${void 0!==i?` `:""}\n ${void 0!==s?` `:""}\n ${e}\n

    \n ${t}\n
    \n
    \n `}static getGradeHtml(){const e=s.getInstance();let t=o.maxAttendances.beginner,a=o.maxAttendances.intermediate,i=o.maxAttendances.advanced,n=o.maxAttendances.master,r="",l=t!==a,d=a!==i,c=i!==n;for(const e of Object.entries(o.grades))r+=`\n \n ${e[0]}\n ${100*e[1]}%\n ${e[1]*t}\n ${l?`${e[1]*a}`:""}\n ${d?`${e[1]*i}`:""}\n ${c?`${e[1]*n}`:""}\n \n `;return`\n \n \n \n \n \n \n ${l?``:""}\n ${d?``:""}\n ${c?``:""}\n \n \n \n ${r}\n \n
    ${e.T("help-table-grade","Grade")}${e.T("help-table-threshold","Threshold")}${e.T("help-table-min-knowledge","Minimum Knowledge")}${e.T("help-table-min-knowledge-intermediate","Minimum Knowledge Intermediate")}${e.T("help-table-min-knowledge-advanced","Minimum Knowledge Advanced")}${e.T("help-table-min-knowledge-master","Minimum Knowledge Master")}
    \n `}}class D{static get expectedParameters(){return{getView:[],import_save:["savegame"]}}static import_save(e){return _.replaceHistory("?page=settings"),E.importSaveGamePrivateBin(atob(e.savegame)),D.getView()}static import_save(e){return _.replaceHistory("?page=settings"),E.importSaveGamePrivateBin(atob(e.savegame)),D.getView()}static getView(){document.querySelector("html").addEventListener("navigationFinished",(function(e){$("#settings-container select[multiple]").selectpicker(),E.updateServiceWorkerStatus()}));const e=s.getInstance(),t=n.canCompress();return`
    \n

    ${e.T("settings-header","Settings")}

    \n
    \n
    \n \x3c!-- filled by delayed function call --\x3e\n
    \n
    \n
    \n
    \n ${t?"":D.getStatusAlert(e.T("settings-compression-status-available","The compression library is not available!"),"danger")}\n
    \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n

    ${e.T("settings-easy-mode-description",'Easy mode allows classes to be attended on any day, removes punishments for skipping them. It can be used as a "Pause" for the game.')}

    \n \n
    \n
    \n \n \n
    \n

    ${e.T("settings-compress-exports-description","Make it just a little bit easier to share large files by compressing them slightly. %sINFO:%s This should help on most apple devices!%s",['',"",""])}

    \n
    \n\n
    \n
    \n \n \n
    \n

    ${e.T("settings-image-exports-description","Let's share an image instead of a random text file. Requires compression! %sWARNING:%s This is only EXPERIMENTAL, big files can turn unreadable! Most messengers will remove the added data making them useless!%s",['',"",""])}

    \n
    \n\n
    \n
    \n \n \n
    \n

    ${e.T("settings-complete-exports-description","No need to import maps and saves one by one Everything will be exported as a single file. Requires compression! %sINFO:%s This will result in giant saves!%s",['',"",""])}

    \n
    \n\n \n

    ${e.T("settings-time-offset-selection","Choose a custom time offset and make the night your day. Current game time is: ")} ${n.getNow().format("YYYY-MM-DD HH:mm:ss")} (${n.getSetting("timeOffsetSelection")||0}${e.T("settings-time-offset-hour","h")})

    \n\n
    \n \n \n
    \n

    ${e.T("settings-hardcore-punishments-description","Hardcore punishments are crueler than the rest and exist just for the novelty. They are disabled by default and don't provide any benefits when enabled besides enhanced gameplay.")}

    \n\n
    \n \n \n
    \n

    ${e.T("settings-auto-hide-description","Make sure nobody sees your progress by accident. The page automatically hides it's content after %s.",[moment.duration(o.autoHideTimer,"minutes").humanize()])}

    \n\n
    \n \n \n
    \n

    ${e.T("settings-back-top-description",'Especially on mobile it is easy to get lost on long pages. You can enable this handy "Back to top" button to easily return to the start.')}

    \n\n
    \n \n \n
    \n

    ${e.T("settings-hide-active-classes-description","Once you started classes they will be shown in the %sschedule%s. To make the %sclasses overview%s cleaner you can therefore choose to hide them.",[``,"",``,""])}

    \n\n
    \n \n \n
    \n

    ${e.T("settings-finished-active-classes-description","Once you finished classes they will be shown in the %sprogress overview%s. To make the %sclasses overview%s cleaner you can therefore choose to hide them.",[``,"",``,""])}

    \n\n
    \n \n \n
    \n

    ${e.T("settings-skip-tier-description","Pages that use carousels to display multiple tiers of content will automatically switch to the next tier once you reach the bottom of the page.")}

    \n\n
    \n \n \n
    \n

    ${e.T("settings-show-confirmations-description","Some actions have a bigger impact, to make sure you don't do them by accident you will get a confirmation request first.")}

    \n\n
    \n \n \n
    \n

    ${e.T("settings-detailed-table-view-description","Switch between the original 'card'-view (which emulates the end result) and the new 'table'-view for the Mapping-Tool.")}

    \n\n \n

    ${e.T("settings-theme-description","Select your prefered theme for this website.")}

    \n\n \n

    ${e.T("settings-language-description","Select your prefered language for this website.")}

    \n\n
    \n \n \n
    \n
    \n \n ${u.getInstance().isMapLoaded?D.saveManagementFormView():""}\n ${u.getInstance().isMapLoaded?D.mapManagementFormView():""}\n\n
    \n
    \n

    ${e.T("settings-global-actions-header","Global actions")}

    \n
      \n
    • \n ${e.T("settings-join-discord-button","Join Discord")}\n ${e.T("settings-join-discord-description","Feel free to join the official PU-Discord.")}\n
    • \n
    • \n \n ${e.T("settings-reset-tutorial-description","Reset the introduction tutorials.")}\n
    • \n
    • \n \n ${e.T("settings-reset-game-description","Reset game completely.")}\n
    • \n
    \n
    \n
    \n
    `}static saveManagementFormView(){const e=s.getInstance(),t=n.canCompress();return`
    \n
    \n

    ${e.T("settings-save-selection-header","Save game actions")}

    \n
    \n ${n.getSetting("sessionToken")?`\n \n
    \n `:""}\n
    \n
    \n \n ${e.T("settings-import-save-button","Import save")}\n \n \n \n \n \x3c!--\n \n
    \n --\x3e\n
    \n
    \n
    `}static mapManagementFormView(){const e=s.getInstance();return`
    \n
    \n

    ${e.T("settings-maps-header","Map management")}

    \n
    \n
    \n ${e.T("settings-map-tool-button","Mapping tool")}\n ${e.T("settings-map-tool-button-description","Open the mapping tool to create your own courses.")}\n
    \n
    \n \n ${e.T("settings-map-import-button","Import a map")}\n ${e.T("settings-map-import-button-description","Import a new map or update an existing map.")}\n
    \n
    \n \n \n ${e.T("settings-map-selection-info-1","Switch to a different map (the current progress is saved for each map separately).")}\n ${e.T("settings-map-selection-info-2","The map is tied to your current save game. If you want to import/export a save game you will need to do so for each map separatly, selected Sub-Maps are included in the active map.")} \n\n \n \n
    \n
    \n \n \n ${e.T("settings-submap-selection-description",'Please select all maps you want to use as a Sub-Map and import the related content. You must import maps using the "Import a new map" function above before you can select them here. Make sure to select the main map carefully.')}\n \n
    \n
    \n
    \n
    `}static getMapSelection(){const e=u.getInstance().maps,t=u.getInstance().mapId;let a="";for(const s of e)a+=``;return a}static getSubMapSelection(){const e=u.getInstance(),t=e.maps,a=e.mapId,s=e.subMaps;let i="";for(const e of t)e.mapData.mapId!=a&&(i+=``);return i}static getStyleSelection(){let e="";const t=n.getSetting("style");for(const a of Object.keys(o.styles))e+=``;return e}static getLanguageSelection(){const e=n.getSetting("language");let t=``;for(const a of s.availableLanguages)t+=``;return t}static getStatusAlert(e,t="info"){s.getInstance();return`\n \n `}}class E{static resetTutorial(){n.setTutorial(""),_.inAppReload()}static switchMap(){const e=$("#mapSelection").val(),t=u.getInstance();e!=t.mapId&&(t.registerLoadFinished(()=>{_.reload()}),t.changeMap(e))}static setSubMaps(){const e=$("#assigned-submaps").val(),t=u.getInstance();t.subMaps=e,t.setSubMaps(()=>{_.navigate("?page=home")})}static deleteMap(){const e=s.getInstance();n.requestUserConfirmation(e.T("settings-delete-map-confirmation-header","Delete map"),e.T("settings-delete-map-confirmation-content","Are you sure that you want delete the currently selected map? You will loose the save as well."),()=>{const e=$("#mapSelection").val();u.getInstance().deleteMap(e,()=>{_.reload()})})}static saveSettings(){let e={};for(let t of $('#settings-form-group input[type="checkbox"]'))e[t.id]=t.checked;for(let t of $("#settings-form-group select"))e[t.id]=t.value;for(let t of $('#settings-form-group input[type="range"]'))e[t.id]=parseFloat(t.value);e.enableEasyMode!==n.getSetting("enableEasyMode")&&p.resetAttendanceDeadline(u.getInstance().getSavegame()),n.setSettings(e),_.reload()}static resetSettings(){n.setSettings(n.getDefaultSettings()),_.reload()}static async updateServiceWorkerStatus(e="#serviceworker-status"){const t=s.getInstance(),a=t.T("settings-serviceworker-status-loading","Your ServiceWorker status is currently loading..."),i=D.getStatusAlert(a);$(e).empty().append(i);const o=await n.getServiceWorkerStatus();let r="";r="inactive"===o.id?t.T("settings-serviceworker-status-inactive","ServiceWorker feature is disabled!"):"active"===o.id?t.T("settings-serviceworker-status-active","Your ServiceWorker is active!"):"waiting"===o.id?t.T("settings-serviceworker-status-waiting","Your ServiceWorker is waiting for activation."):"installing"===o.id?t.T("settings-serviceworker-status-installing","Your ServiceWorker is currently installing."):"unregistered"===o.id?t.T("settings-serviceworker-status-unregistered","The ServiceWorker is not registered!"):t.T("settings-serviceworker-status-unknown","Your ServiceWorker is in an unknown state.");const l=D.getStatusAlert(r,o.type);$(e).empty().append(l)}static resetGame(){const e=s.getInstance();n.requestUserConfirmation(e.T("settings-reset-game-confirmation-header","Reset game"),e.T("settings-reset-game-confirmation-content","Are you sure that you want delete all local data and progress? You will loose your complete progress."),()=>{localStorage.clear(),r.getInstance().drop(()=>{_.navigate("?page=home")})})}static importSaveGame(e){const t=s.getInstance();let a=u.getInstance().importSaveGame(e,()=>{_.navigate("?page=home")});a&&n.showToast(t.T("settings-save-import-failed-header","SaveGame import failed"),a,"danger")}static async importSaveGameFile(e){const t=s.getInstance(),a={title:t.T("settings-save-import-confirmation-header","Import a save"),text:t.T("settings-save-import-confirmation-content","Are you sure that you want to overwrite your current progress? Make sure to only load saves from trusted sources. Proceed at your own risk.")},i={title:t.T("settings-save-import-failed-header","Save import failed"),text:t.T("settings-save-import-failed-content","During the import for the selected file an error occured. You can check the console for more information.")},n={title:t.T("settings-file-import-compression-error-header","Compression unavailable"),text:t.T("settings-file-import-compression-error-content","The file you tried to import is compressed. Sadly a library required to uncompress it is unavailable.")},o={title:t.T("settings-file-import-aborted-header","Import aborted"),text:t.T("settings-file-import-aborted-content","The file you tried to import included untrusted code. To protect you the import was aborted.")},r=await _.runImport(e,i,a,n,o);E.importSaveGame(r)}static async exportSaveGameFile(){const e=s.getInstance(),t={title:e.T("settings-save-export-maps-failed-header","Save export interrupted"),text:e.T("settings-save-export-maps-failed-content","During the export an error occured while loading the active maps for a full export.")};await _.runExport("pu_save",await _.getSavegameData(t))}static async importSaveGameClipboard(){const e=s.getInstance(),t={title:e.T("settings-save-import-confirmation-header","Import a save"),text:e.T("settings-save-import-confirmation-content","Are you sure that you want to overwrite your current progress? Make sure to only load saves from trusted sources. Proceed at your own risk.")},a={title:e.T("settings-save-import-failed-header","Save import failed"),text:e.T("settings-save-import-failed-content","During the import for the selected file an error occured. You can check the console for more information.")},i={title:e.T("settings-file-import-aborted-header","Import aborted"),text:e.T("settings-file-import-aborted-content","The file you tried to import included untrusted code. To protect you the import was aborted.")},n=await _.runClipboardImport("pu_save",a,t,i);E.importSaveGame(n)}static async exportSaveGameClipboard(){const e=s.getInstance(),t={title:e.T("mapping-export-clipboard-success-header","Exported to clipboard"),text:e.T("mapping-export-clipboard-success-content","The data was exported to the clipboard.")},a={title:e.T("mapping-export-clipboard-error-header","Clipboard export failed"),text:e.T("mapping-export-clipboard-error-content","Failed to export the data to the clipboard.")},i={title:e.T("settings-save-export-maps-failed-header","Save export interrupted"),text:e.T("settings-save-export-maps-failed-content","During the export an error occured while loading the active maps for a full export.")};await _.runClipboardExport("pu_save",i,t,a)}static async exportSavegamePrivateBin(){const e=s.getInstance(),t={title:e.T("settings-save-export-maps-failed-header","Save export interrupted"),text:e.T("settings-save-export-maps-failed-content","During the export an error occured while loading the active maps for a full export.")},a=JSON.stringify(await _.getSavegameData(t));let i=function(t){if(t.error||!t.url)return void n.showToast(e.T("settings-save-export-failed-header","Save game export failed"),e.T("settings-save-export-failed-content","Sharing your save file was not successful."));const a=`${n.getCurrentUrl()}?page=settings&pageType=import_save&savegame=${btoa(t.url)}`;c.insertQR(a,"PU.save","#savegameQR")}.bind(this);c.uploadToPastebin(a,i)}static importSaveGamePrivateBin(e){const t=s.getInstance();let a=function(e){!e.error&&e.data?E.importSaveGame(e.data):n.showToast(t.T("settings-import-share-save-failed-header","Save game import failed"),t.T("settings-import-share-save-failed-content","Importing the shared save file was not successful."))}.bind(this),i=function(){c.downloadFromPastebin(e,a)}.bind(this);n.requestUserConfirmation(t.T("settings-import-share-save-confirmation-header","Import a save"),t.T("settings-import-share-save-confirmation-content","Are you sure that you want to overwrite your current progress? Make sure to only install saves from trusted sources. Proceed at your own risk."),i)}static importMapPrivateBin(e){const t=s.getInstance();let a=function(e){!e.error&&e.data?u.getInstance().importMap(e.data):n.showToast(t.T("settings-import-share-map-failed-header","Map import failed"),t.T("settings-import-share-map-failed-content","Importing the shared map file was not successful."))}.bind(this),i=function(){c.downloadFromPastebin(e,a)}.bind(this);n.requestUserConfirmation(t.T("settings-import-share-map-confirmation-header","Import a map"),t.T("settings-import-share-map-confirmation-content","Are you sure that you want to import this map? Make sure to only install maps from trusted sources. Proceed at your own risk."),i)}static resetSaveSync(){n.setSetting("sessionToken",void 0),_.reload()}static setupSaveSync(e){const t=s.getInstance();let a=function(e){!e.error&&e.data?(n.scheduleToast(t.T("settings-import-save-sync-header","Save-Sync setup finished"),t.T("settings-import-save-sync-content","Your saves will now be synced, if the required maps are available.")),_.reload()):n.showToast(t.T("settings-import-save-sync-failed-header","Save-Sync setup failed"),t.T("settings-import-save-sync-failed-content","The provided key was not accepted by the backend. You can try to create a new session or try again later."))}.bind(this);c.getInstance().exchangeSaveGameToken(e,a)}}class N{static get expectedParameters(){return{getView:[],feedback:[],import_map:["map"],save_sync:["exchangeToken"]}}static save_sync(e){return _.replaceHistory("?page=home"),E.setupSaveSync(e.exchangeToken),N.getView()}static feedback(){const e=s.getInstance();return _.replaceHistory("?page=home"),n.showToast(e.T("home-feedback-title","Feedback"),`${e.T("home-feedback-description",'Thank you very much for providing a quick "heartbeat"!')} ${e.T("home-feedback-discord","In case you want to join the PU Discord - click here.")} `,"success"),N.getView()}static import_map(e){return _.replaceHistory("?page=home"),E.importMapPrivateBin(atob(e.map)),N.getView()}static getView(){const e=s.getInstance();return`
    \n
    \n
    \n

    ${e.T("home-welcome-header","Welcome to Project University")}

    \n

    \n ${e.T("home-welcome-info-1","This project aims to let you either create your very own university or \n join a university that was created by somebody else. As such this website doesn't provide any content \n itself and you will need to provide a PU-map. A PU-map is a user generated file that contains the data \n required to define a university. This website runs completly on the users device - no user generated content\n is stored on the server hosting this website. Therefore please make sure to make backups of your progress,\n think twice before importing unknown content, stay safe and legal.")}\n

    \n

    \n ${e.T("home-welcome-info-2","\n The general idea of your university life consists of enrolling in a major, choosing classes and do the\n daily tasks required. To finish a class attend the exam and unlock new classes or the finals.\n Once all prerequisites are fulfilled you can attempt the final major exam. You can join clubs or get yourself \n a partner to change the difficulty for specific classes and gain small perks. You will be punished if you fail \n to meet any requests.")}\n

    \n

    \n ${e.T("home-welcome-info-3","So import a map sign up for a major, join some classes and let the journey begin!")}\n

    \n \n ${e.T("home-load-map-button","Load a university map!")}\n ${e.T("home-create-map-button","Create your own map!")}\n
    \n
    \n
    \n
    \n

    ${e.T("home-changelog-header","Changelog")}

    \n \n
    \n
    2025-07-31
    \n
    \n

    \n Just added some missing chinese translations. Thanks a lot to Nebulas Astra (github:@nebulas-star)!\n

    \n
    \n
    \n\n \n\n
    \n \n
    \n
    2024-09-24
    \n
    \n

    \n This update was mainly aimed to support exports on iOS devices again, but there were lots of attempts and none were quite what I wanted. The inital start of these changes was July, took longer than expected.\n The most interesting changes are the option to get a full export of a save and the auto-save function for the map editor.\n

    \n
      \n
    • New file type PUC, this is a complete save including all active maps, submaps and settings.
    • \n
    • Exports: Major rework, a lot happened here, hope nothing broke. This affects Maps, Saves, Tasks.
    • \n
    • Settings page: Visual updates, new export settings, Service Worker (offline mode) status and compression support status.
    • \n
    • Fixed class-skip-tokens not activating.
    • \n
    • Added counter for the currently available class-skip tokens.
    • \n
    • You can now undo a perk activation.
    • \n
    • Make it easier to share large files by enabling compressed exports - and might help with some iOS export issues.
    • \n
    • Share file-less using clipboard exports.
    • \n
    • Fixed the visual timer problem thanks a lot @Pink_3D for the resolution (active task).
    • \n
    • Fixed time output for anything that takes a month or longer (task selection).
    • \n
    • Added auto-save to the map editor, might help if you forgot to manually export it. However don't rely on it - think of it as a backup in case you mess up.
    • \n
    • The map editor is now a little bit better integrated into the general UI, using the same settings page.
    • \n
    • The map editor supports now: taskListSize, disableBonusAttendance
    • \n
    • Updated jQuery, moment.js, Bootstrap, Bootstrap Select, Bootstrap Table, Bootstrap Darkly.
    • \n
    • Experimental: Make your saves prettier by using Image exports. Sadly sharing these will be quite hard because most providers will delete the save data included.
    • \n
    \n
    \n
    \n\n
    \n
    2023-11-30.1
    \n
    \n

    \n Looks like the old hosting option for the Map-Editor is no longer available. Now it is included on-site and should work just as it did before.\n

    \n
    \n
    \n\n
    \n
    2023-10-20
    \n
    \n

    \n Some small bugfixes.\n

    \n
      \n
    • Fixed language navigation option for english.
    • \n
    • Fixed an incorrect help description.
    • \n
    \n
    \n
    \n\n
    \n
    2023-03-18
    \n
    \n

    \n Some small bugfixes.\n

    \n
      \n
    • Replaced PWA images, to allow better icons.
    • \n
    • Fixed a bug with save game imports for a missing active major.
    • \n
    \n
    \n
    \n\n
    \n
    2023-02-28
    \n
    \n

    \n Allow more advanced maps.\n

    \n
      \n
    • Removed alt texts from images.
    • \n
    \n
    \n
    \n\n
    \n
    2023-02-09.1
    \n
    \n

    \n More QOL updates.\n

    \n
      \n
    • You can now join more clubs, partners and classes. Enjoy.
    • \n
    • Added fix for removing finished class content.
    • \n
    • Added reference verification for maps (majors, classes).
    • \n
    \n
    \n
    \n\n
    \n
    2022-09-17.1
    \n
    \n

    \n Some small QOL updates.\n

    \n
      \n
    • Hidden tasks should now work as expected and follow the parameter order instead of the type and then the parameter order.
    • \n
    • Updated the error reporting, at least you should now see a reason which you can share for why the page is just empty.
    • \n
    • Classes are now filtered for itself to stop accidental loops which crash the site.
    • \n
    • Punishments should now be filtered if deleted tasks are assigned to them.
    • \n
    \n
    \n
    \n\n
    \n
    2022-01-15
    \n
    \n

    \n Custom timezones even if you don't travel ;)\n It is now possible to manipulate the time to make it easier for night owles to stay on schedule.\n

    \n
    \n
    \n\n
    \n
    2021-11-10
    \n
    \n

    \n Synced Saves Service added - check the Settings.\n

    \n
      \n
    • Join the PU Discord and use the new Save-Sync service.
    • \n
    \n
    \n
    \n\n
    \n
    2021-10-28
    \n
    \n

    \n Small fixes and improvments.\n

    \n
      \n
    • Fixed translation engine language selection
    • \n
    • Added info for collected knowledge points
    • \n
    • Added function to unlock and blacklist punishments
    • \n
    \n
    \n
    \n\n
    \n
    2021-08-29
    \n
    \n

    \n Please move your save to the backup instance since I plan to implement a big update for the main version which will make your current saves incompatible.\n

    \n
      \n
    • CORS check failed and required a fix.
    • \n
    \n
    \n
    \n
    \n
    2020-10-13.2
    \n
    \n

    \n Chinese translation is now available. In case you want to see PU in your own language feel free to contact me.\n

    \n
      \n
    • Fixed some stuff for pink theme.
    • \n
    • Added setting to change the language.
    • \n
    • Based on the language provided by your browser, PU will localize the website. Currently only a chinese translation is available, which was provided by Carlotta. Keep in mind this will only work for the framework and not for map content.
    • \n
    • Old changelogs are now collapsed.
    • \n
    \n
    \n
    \n
    \n
    2020-09-30.1
    \n
    \n

    \n SubMaps are great!\n

    \n
      \n
    • If you already have a map active and add a new one - the new one will be added as a SubMap to the active one.
    • \n
    • If you visit the page for the first time, you will be redirected after confirming the disclaimer.
    • \n
    • Updated feedback info for October.
    • \n
    \n
    \n
    \n
    \n
    2020-09-02
    \n
    \n

    \n Roulette is now up to the map creator.\n

    \n
      \n
    • Disclaimer and Data Protection notice added.
    • \n
    • Roulette is now up to the map creator
    • \n
    • If you disable Easy Mode you will not be bombarded with punishments
    • \n
    • A small performance improvement by skipping tour loading
    • \n
    \n
    \n
    \n
    \n
    2020-08-05.1
    \n
    \n

    \n Some nice new features all over the place.\n

    \n
      \n
    • Maps: Automatically lower required credits if a map doesn't provide enough content to collect 160 credits.
    • \n
    • Settings: Handle missing save data - you can now disable sub-maps if you don't want them anymore without breaking the save. (probably)
    • \n
    • Classes: New indicator for the progress in your classes
    • \n
    • Settings: Importing using quick share should now show an error instead of silently failing
    • \n
    • Mapping Tool: It's now possible to easily create new items (Save & New) and sometimes even to copy an existing item (Duplicate)
    • \n
    • Mapping Tool: Shortcuts: To save current input you can now use CTRL + S (make sure to select the modal) or discard the current input ESC
    • \n
    \n
    \n
    \n
    \n
    2020-08-02
    \n
    \n

    \n Mapping Tool fixes.\n

    \n
      \n
    • Mapping Tool: Share option fixed
    • \n
    • Mapping Tool: AutoHide is now disabled inside the Mapping Tool
    • \n
    • Mapping Tool: Added warning if functionality is limited by Third-Party Cookie block
    • \n
    \n
    \n
    \n
    \n
    2020-08-01.1
    \n
    \n

    \n Mapping Tool extracted.\n

    \n
      \n
    • Mapping Tool: Image Hosting improved
    • \n
    • Mapping Tool: Extracted for sparated access
    • \n
    • Settings: Moved Mapping Tool specific settings
    • \n
    \n
    \n
    \n
    \n
    2020-07-27
    \n
    \n

    \n Let's get the map size down and allow quick-start.\n

    \n
      \n
    • Mapping Tool: Optional automatic upload of images to a image hoster to reduce the map size [EXPERIMENTAL]
    • \n
    • Mapping Tool: Quick share maps (users can click / scan a QR code and will directly be able to run the map) [EXPERIMENTAL]
    • \n
    • Mapping Tool: Improved direct share for tasks (users can still click on a link / scan a QR code and will be able to start the task) [EXPERIMENTAL]
    • \n
    • Navigation: Fixed a potential bug for people that start a fresh game
    • \n
    • Settings: Theme pink (small fixes)
    • \n
    \n
    \n
    \n
    \n
    2020-07-26.1
    \n
    \n

    \n Themes and grades.\n

    \n
      \n
    • Progress: Added grades
    • \n
    • Settings: Themes (Pink theme updated)
    • \n
    • Settings: New SaveGame import/export without files [EXPERIMENTAL]
    • \n
    • Mapping Tool: added task export into the new table view
    • \n
    \n
    \n
    \n
    \n
    2020-07-23
    \n
    \n

    \n Graduation. Yay.\n

    \n
      \n
    • Progress: You can now graduate
    • \n
    • Mapping Tool: Added click-able task reference to punishment table
    • \n
    • Mapping Tool: Retain scroll position
    • \n
    • Mapping Tool: Auto resize images
    • \n
    \n
    \n
    \n
    \n
    2020-07-21.1
    \n
    \n

    \n Small fixes for the Mapping Tool und quicker map check.\n

    \n
      \n
    • Map: Map import is a lot faster and works again in FF
    • \n
    • Map: Show map description on import
    • \n
    • Mapping Tool: Fixed punishment task selection
    • \n
    • Mapping Tool: Fixed the modifier values to increase/decrease difficulty
    • \n
    • Mapping Tool: Retain hidden columns settings
    • \n
    • Mapping Tool: Show a warning before resetting the map
    • \n
    • Mapping Tool: Full width tables
    • \n
    • Mapping Tool: Updated edit buttons in table view
    • \n
    \n
    \n
    \n
    \n
    2020-07-20
    \n
    \n

    \n Lots of changes, especially in the background.\n

    \n
      \n
    • Maps: Added support for "Sub-Maps" (allows loading content of maps or map modules into a "main" map, therefore extending the existing content)
    • \n
    • Progress: Show current credits (even if you have 0)
    • \n
    • Tasks: Fixed counter / timer rounding error (not in sync with the task description)
    • \n
    • Mapping Tool: Support to set custom help entries (and removed SU specific help entries)
    • \n
    • Mapping Tool: Added support to export "partial" Maps (called modules)
    • \n
    • Mapping Tool: Added option to "hide"/"disable" the orgasm roulette (in case you want to handle it using classes or don't need it)
    • \n
    • Mapping Tool: Restore filter, sort, page while you edit items using the table view
    • \n
    • Mapping Tool: Fixed inputs with '"'
    • \n
    • Mapping Tool: Fixed sorting (was broken by direct access links)
    • \n
    • Mapping Tool: Format the "Available On" dates as a readable string instead of a representative number
    • \n
    • Mapping Tool: Fixed "Save" button hidden by back to top in full-screen modal
    • \n
    • Mapping Tool: Changed style for new multi-selections
    • \n
    • Schedule: In case you already have max. classes you will not be tempted to add another one if you already finished all classes for the day.
    • \n
    • Schedule: Easy mode warning added
    • \n
    \n
    \n
    \n
    \n
    2020-07-14
    \n
    \n

    \n Small fix for the Mapping Tool (Long items were pushed to the side).\n

    \n
    \n
    \n
    \n
    2020-07-13
    \n
    \n

    \n Some small changes.\n

    \n
      \n
    • Mapping Tool: uses now a better UI to select multiple items
    • \n
    • Help: your health is priority #1
    • \n
    • added "Update Now" info in case an update is pending
    • \n
    \n
    \n
    \n
    \n
    2020-07-11
    \n
    \n

    \n Various quality of life changes.\n

    \n
      \n
    • Mapping Tool: added table view to make it easier to create/edit maps
    • \n
    • Mapping Tool: punishment tasks now preview the degree as well
    • \n
    • Schedule: Weekend info added
    • \n
    • Tasks: Added confirmation for using the "fail" button on tasks
    • \n
    • Mobile Navigation: hide the "hamburger" icon if there is nothing to navigate to (no map loaded / no major chosen)
    • \n
    • Mobile Navigation: auto collapses the "hamburger" menu after a successful selection
    • \n
    • Other: SW will now skip waiting (immediate update)
    • \n
    \n
    \n
    \n
    \n
    2020-06-30.3
    \n
    \n

    \n Attempt to fix download on iOS.\n

    \n
    \n
    \n
    \n
    2020-06-21
    \n
    \n

    \n Updated dependencies: jQuery, Bootstrap, Popper.js, Font Awesome and Moment.js.\n

    \n
    \n
    \n
    \n
    2020-06-20
    \n
    \n

    \n Fixed some minor problems.\n

    \n
      \n
    • Counter tasks finished the complete task regardless if something else was still required.
    • \n
    • Offset for images in the detail view was off
    • \n
    • Manual tasks were required to be finished on the same day, can now also be done after the main task.
    • \n
    • Probably fixed the check for skipped classes.
    • \n
    \n
    \n
    \n
    \n
    2020-06-16
    \n
    \n

    \n This is the new release of PU. It ports most of the functions present in\n the original and adds a new flare at some parts.\n

    \n
      \n
    • Allow creating and running custom maps
    • \n
    • Option to create and share simple tasks
    • \n
    • Darkmode
    • \n
    • UI Tutorial
    • \n
    • Tasks can have sub-tasks
    • \n
    • Counter tasks (Keep track of your progress)
    • \n
    • Auto hide the page from curious eyes
    • \n
    • Run multiple different maps at the same time
    • \n
    • Navigation works now as it should
    • \n
    • Mobile support
    • \n
    • Offline mode (continues working without an internet connection)
    • \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n

    ${e.T("home-special-thanks-header","Special thanks to")}

    \n
      \n
    • Maya for inspiring this framework.
    • \n
    • Nebulas Astra (github:@nebulas-star) and Carlotta (Twi:@Carl84534787) for providing the chinese translation.
    • \n
    • Sam, BG, ClaireTorres, Lieutenant Bites and aspiringanalslut for beta testing.
    • \n
    \n
    \n
    \n \n \n
    `}}class q{static get expectedParameters(){return{getView:[]}}static getView(){const e=s.getInstance();return`
    \n

    ${e.T("roulette-header","Orgasm Roulette")}

    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n

    \n ${e.T("roulette-info-1","Do you want to cum?")} ${e.T("roulette-info-2","Try your luck!")}
    \n ${e.T("roulette-info-3","Did you cum without asking Random-chan?")} ${e.T("roulette-info-4","Get your punishment!")}\n

    \n ${B.getLastRouletteHtml()}\n
    \n ${B.getRollRouletteButton()}\n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n `}}class B{static rollRoulette(){if(B.wasRouletteRolledToday())return!1;let e=Math.random(),t=0,a=p.rouletteData,s=void 0;for(let i in a)if(s=a[i],t+=s.probability,e\n
    \n
    ${t.title}
    \n

    ${t.description}

    \n
    \n `}static getRollRouletteButton(){return B.wasRouletteRolledToday()?"":``}}class R{static get expectedParameters(){return{getView:[],import_task:["customTask"]}}static import_task(e){return _.replaceHistory("?page=schedule"),O.handleImport(atob(e.customTask)),R.getView()}static getView(){const e=p.getActiveMajor(),t=(p.majorsData[e],I.mandatoryClasses(e),S.getActiveClasses()),a=(S.getFinishedClasses(),n.getTodaysDay()),i=p.getActivePunishments(),o=p.getActiveTasks(),r=p.clubsData,l=p.getAssignedClubs(),d=p.partnersData,c=p.getActivePartners(),u=s.getInstance();return O.requestFeedback(),`
    \n ${o.length>0?`\n

    \n ${u.T("schedule-active-tasks-header","Active tasks")}\n

    \n
    \n
    \n ${R.getActiveTasks(o)}\n
    \n
    `:""}\n\n ${i.length>0&&i.length-o.filter(e=>"punishment"==e.object.type).length>0?`\n

    \n ${u.T("schedule-active-punishments-header","Active punishments")} \n

    \n
    \n
    \n ${R.getPunishmentsHtml(i)}\n
    \n
    `:""}\n\n \n

    \n ${u.T("schedule-todays-classes-header","Todays classes")} \n

    \n
    \n
    \n ${R.getTodaysClasses(t,a)}\n
    \n
    \n\n ${l.length>0||c.length>0?`\n

    \n ${u.T("schedule-clubs-partner-header","Clubs & Partner")}\n

    \n
    \n
    \n ${R.getAssignedClubsAndPartners(r,l,d,c)}\n
    \n
    `:""}\n\n

    \n ${u.T("schedule-weekly-header","Weekly overview")}\n

    \n
    \n
    \n ${R.getWeekOverviewHtml(t,a)}\n
    \n
    \n
    \n `}static getAssignedClubsAndPartners(e,t,a,s){let i="";for(let a of t){const t=e[a.id];i+=`\n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    ${t.name}
    \n
    \n
      \n ${g.getPerksHtml(t.id)}\n
    \n
    \n
    \n
    \n
    \n
    \n
    `}for(let e of s){const t=a[e.id];i+=`\n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    ${t.name}
    \n
    \n
      \n ${b.getPerksHtml(t.id)}\n
    \n
    \n
    \n
    \n
    \n
    \n
    `}return i}static getTodaysClasses(e,t){const a=p.classesData,i=s.getInstance();let o="";const r=p.getClassSkipTokens();n.getSetting("enableEasyMode")?o+=`\n
    \n ${i.T("schedule-easy-mode-info",'Currently the "Easy mode" is active. You may attend any class on any day and skip whenever you want.')}\n
    \n `:0===t||6===t?o+=`\n
    \n ${i.T("schedule-weekend-info","During the weekend, you are free to do any classes you want. You will not be punished for skipping them today.")}\n
    \n `:r>0&&(o+=`\n
    \n ${i.T("class-skip-token-info","You have %s class-skip tokens. Each allows you to skip one class today.",[r])}\n
    \n `);for(const t of e){let e=a[t.id];S.wasAttendedToday(e.id)||n.hasMatchingDate(e.days)&&void 0===x.getActiveTaskForObject(e.id,"class")&&(o+=`\n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    ${e.name}
    \n
    \n
      \n
    • ${i.T("class-detail-tasks","Available task options")}:
    • \n ${A.getTasksHtml(e,t.attendances||0)}\n\n ${S.isExamAvailable(e.id)?`\n
    • ${i.T("class-detail-exams","Available exam options")}:
    • \n ${A.getExamsHtml(e)} `:""}\n
    \n
    \n
    \n
    \n
    \n
    \n
    `)}return o.length<=0&&S.isMaxClassesReached()?o=`${i.T("schedule-no-class-left","No classes left for today. Please visit tomorrow again.")}`:o.length<=0&&(o=`${i.T("schedule-no-class-left-add","No classes left for today. Maybe you want to join a new class?")}`),o}static getActiveTasks(e){let t="";for(let a of e)t+=`
    ${x.getTaskProgressHtml(a)}
    `;return t}static getPunishmentsHtml(e){const t=p.punishmentsData;let a="";for(let s of e){if(void 0!==x.getActiveTaskForObject(s,"punishment"))continue;let e=t[s];a+=`\n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    ${e.name}
    \n
    ${w.getPunishmentTasksHtml(e)}
    \n
    \n
    \n
    \n
    \n
    `}return a}static getWeekOverviewHtml(e,t){let a={1:[],2:[],3:[],4:[],5:[]};const i=s.getInstance(),o=n.weekdays;for(const t of e){const e=p.classesData[t.id],s=`${e.name}`;for(const t of e.days)t<1||t>5||a[t].push(s)}for(const e in a)a[e].length<=0&&a[e].push(i.T("schedule-no-classes","No classes"));return`\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    ${o[1]}${o[2]}${o[3]}${o[4]}${o[5]}
    ${a[1].join("
    ")}
    ${a[2].join("
    ")}
    ${a[3].join("
    ")}
    ${a[4].join("
    ")}
    ${a[5].join("
    ")}
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    ${o[1]}${a[1].join("
    ")}
    ${o[2]}${a[2].join("
    ")}
    ${o[3]}${a[3].join("
    ")}
    ${o[4]}${a[4].join("
    ")}
    ${o[5]}${a[5].join("
    ")}
    `}static requestUserFeedback(){let e="requestUserFeedback-"+n.getRandomString();const t=s.getInstance();let a=``;$("#confirmationContainer").append(a),$("#"+e).modal({keyboard:!1}).modal("show").on("hidden.bs.modal",(function(t){$("#"+e).modal("dispose").remove()}))}}class O{static async importTask(e){const t=s.getInstance(),a={title:t.T("schedule-task-import-failed-header","Task import failed"),text:t.T("sschedule-task-import-failed-content","During the import for the selected file an error occured. You can check the console for more information.")},i={title:t.T("schedule-file-import-compression-error-header","Compression unavailable"),text:t.T("schedule-file-import-compression-error-content","The file you tried to import is compressed. Sadly a library required to uncompress it is unavailable.")},n={title:t.T("schedule-file-import-aborted-header","Import aborted"),text:t.T("schedule-file-import-aborted-content","The file you tried to import included untrusted code. To protect you the import was aborted.")},o=await _.runImport(e,a,void 0,i,n);O.importTaskData(o)}static importTaskData(e){let t={type:"custom",name:l.T("schedule-custom-task-default-name","Custom Task"),tasks:{}};t.tasks[""+e.id]=e,t=d.applyParametersToObject(t),x.startTask(t,"tasks",""+e.id)}static handleImport(e){const t=s.getInstance();let a=function(e){if(e.error||!e.data)return void n.showToast(t.T("schedule-import-task-error-header","Task import failed"),t.T("schedule-import-task-error-content","Importing the shared task was not successful."));const a=e.data;O.importTaskData(a)}.bind(this),i=function(){c.downloadFromPastebin(e,a)}.bind(this);n.requestUserConfirmation(t.T("schedule-import-custom-task-confirmation-header","Import a custom task"),t.T("schedule-import-custom-task-confirmation-content","Are you sure that you want to import this custom task? The task will be started automatically. Make sure to only load tasks from trusted sources. Proceed at your own risk."),i)}static requestFeedback(){let e=n.getlastRequestedFeedback();moment.unix(e).isValid()||(e=n.getNow().add(3,"day").startOf("day").unix(),n.setlastRequestedFeedback(e)),e<=n.getNowUnix()&&(e=n.getNow().add(1,"month").startOf("day").unix(),R.requestUserFeedback(),n.setlastRequestedFeedback(e))}}class H{static startTour(e){let t=H.tour,a=[];if(!t.hasOwnProperty(e))return!1;const i=s.getInstance(),o=new Shepherd.Tour({tourName:""+e,useModalOverlay:!0,defaultStepOptions:{classes:"shadow-md bg-purple-dark",scrollTo:!1,buttons:[{text:i.T("tour-navigation-close","Close"),action(){return this.complete()}},{text:i.T("tour-navigation-next","Next"),action(){return this.next()}}]}});t[e]&&(a=t[e].filter(e=>$(e.attachTo.element).is(":visible"))),a.length>0&&(n.setTutorial(n.getTutorial().concat(e,";")),o.addSteps(a),o.start())}static get tour(){const e=s.getInstance();return{majors:[{id:"majors-0",title:e.T("tour-majors-0-title","Navigation"),text:e.T("tour-majors-0-text","This is the global navigation. Here you can switch to different areas of the game."),attachTo:{element:"body nav.navbar",on:"bottom"}},{id:"majors-1",title:e.T("tour-majors-1-title","Mobile navigation"),text:e.T("tour-majors-1-text","On mobile not all items are always visible, use this button to show the available entries."),attachTo:{element:"nav .navbar-toggler",on:"bottom"}},{id:"majors-2",title:e.T("tour-majors-2-title","Major cards"),text:e.T("tour-majors-2-text","Each major available will be displayed as a card to allow interacting with it."),attachTo:{element:".min-card-container",on:"bottom"}},{id:"majors-3",title:e.T("tour-majors-3-title","Details"),text:e.T("tour-majors-3-text","You can access a detail view by clicking on the image of the major."),attachTo:{element:".min-card-container .img-container-overview",on:"bottom"}},{id:"majors-4",title:e.T("tour-majors-4-title","Card actions"),text:e.T("tour-majors-4-text","The major cards can have multiple actions related to it."),attachTo:{element:".min-card-container .img-button-container-left-corner",on:"bottom"}},{id:"majors-5",title:e.T("tour-majors-5-title","Display information"),text:e.T("tour-majors-5-text","This information button will allow you quick access to some detail information related to the major."),attachTo:{element:".min-card-container .img-button-container-left-corner .text-white",on:"bottom"}},{id:"majors-6",title:e.T("tour-majors-6-title","Card information"),text:e.T("tour-majors-6-text","The bottom of the card will give a small description for the major."),attachTo:{element:".min-card-container .card-body",on:"bottom"}}],classes:[{id:"classes-0",title:e.T("tour-classes-0-title","Tier navigation"),text:e.T("tour-classes-0-text","Sometimes there are multiple tiers, you can navigate to a different one using these items."),attachTo:{element:"#action-navigation",on:"right"}},{id:"classes-1",title:e.T("tour-classes-1-title","Tier navigation"),text:e.T("tour-classes-1-text","Sometimes there are multiple tiers, you can navigate to a different one using these items or swipe to the side."),attachTo:{element:"#customCarousel .carousel-indicators",on:"bottom"}},{id:"classes-2",title:e.T("tour-classes-2-title","Card"),text:e.T("tour-classes-2-text","Each class available will be displayed as a card to allow interacting with it."),attachTo:{element:".min-card-container",on:"bottom"}},{id:"classes-3",title:e.T("tour-classes-3-title","Image"),text:e.T("tour-classes-3-text","You can access a detail view by clicking on the image of the class."),attachTo:{element:".min-card-container .img-container-overview",on:"bottom"}},{id:"classes-4",title:e.T("tour-classes-4-title","Card actions"),text:e.T("tour-classes-4-text","The class cards can have multiple actions related to it."),attachTo:{element:".min-card-container .img-button-container-left-corner",on:"bottom"}},{id:"classes-5",title:e.T("tour-classes-5-title","Display information"),text:e.T("tour-classes-5-text","This information button will allow you quick access to some detail information related to the class."),attachTo:{element:".min-card-container .img-button-container-left-corner .text-white",on:"bottom"}},{id:"classes-6",title:e.T("tour-classes-6-title","Card information"),text:e.T("tour-classes-6-text","These information will give a small description for the class."),attachTo:{element:".min-card-container .card-body",on:"bottom"}}],mapping:[{id:"mapping-0",title:"Global actions",text:"Use the actions to export and import the complete map.",attachTo:{element:"#action-navigation nav ul.list-group",on:"bottom"}},{id:"mapping-0-info",title:"Hide actions",text:'If you need additional space (e.g. on mobile) you can click on the header "Actions" to collapse them.',attachTo:{element:"#action-navigation ul li.list-group-item",on:"bottom"}},{id:"mapping-0-desktop",title:"Navigation",text:"Use the navigation menu to switch to different sub menues.",attachTo:{element:"#action-navigation nav ul.list-group:nth-child(3)",on:"right"}},{id:"mapping-0-mobile",title:"Mobile navigation",text:"Use these buttons or swipe to switch between the different sub menues.",attachTo:{element:"#mappingCarousel .carousel-indicators",on:"bottom"}},{id:"mapping-1",title:"Save map",text:"Make sure to save your progress regularly!",attachTo:{element:"#action-navigation nav ul div.btn-group",on:"bottom"}},{id:"mapping-2",title:"Export finished map",text:"Once you are done export a playable version.",attachTo:{element:"#action-navigation nav ul div.btn-group",on:"bottom"}},{id:"mapping-3",title:"Save your changes",text:"Each change needs to be saved. If you don't want to keep the changes use the 'Close' button instead.",attachTo:{element:"#generalCardContainer .btn-primary",on:"bottom"}},{id:"mapping-4",title:"Add new items",text:"To add new items you will find such a 'plus' button next to the corresponding items, use it to open a new sub menu to create another one. If you create a new item related to something else it will automatically be linked.",attachTo:{element:".header-add",on:"bottom"}},{id:"mapping-5",title:"Created items",text:"You will find created items below the corresponding header.",attachTo:{element:"#helpCardContainer",on:"bottom"}}]}}}class F{static get expectedParameters(){return{getView:["majorId"]}}static getView(e){const t=e.majorId,a=I.getGrade(t),i=p.majorsData[t],n=s.getInstance();return p.getFinishedMajors().includes(t)||_.navigateBack(),`
    \n

    \n ${n.T("graduated-certificate-header","Certificate for %s",[i.name])}\n

    \n
    \n
    \n
    \n
    \n \n \n \n
    ${n.T("major-status-grade","Grade")} ${a}
    \n
    \n
    \n
    \n
    ${n.T("graduated-congratulations-header","Congratulations for graduating %s.",[i.name])}
    \n

    ${n.T("graduated-congratulations-1","Many take on this journey but only few manage to finish it successfully. I am glad to see that you are one of those few!")}

    \n

    ${n.T("graduated-congratulations-2","There is still a lot todo and I am sure you didn't have enough yet. Once you are ready for the next challenge start one of the other majors or import a new map.")}

    \n

    ${n.T("graduated-congratulations-3","Since you are now very experienced you may also consider to create your own classes for fellow students to enrich their university life.")}

    \n
    \n ${F.getGradeTable(t)}\n
    \n
    \n
    \n
    \n
    \n `}static getGradeTable(e){let t=0,a=0,i="";const r=s.getInstance();for(const s of I.mandatoryClasses(e)){const e=p.classesData[s],r=S.getAssignedClass(s),l=o.maxAttendances[e.tier];i+=`\n \n ${e.name}\n ${r.attendances}/${l}\n ${n.getGrade(r.attendances,l)}\n \n `,t+=r.attendances,a+=l}return`\n \n \n \n \n \n \n \n \n \n ${i}\n \n \n \n \n \n \n \n \n
    ${r.T("graduated-table-class","Class")}${r.T("graduated-table-knowledge-points","Knowledge Points")}${r.T("graduated-table-grade","Grade")}
    ${t}/${a}${n.getGrade(t,a)}
    \n `}}class U{static get expectedParameters(){return{getView:[]}}static getView(){const e=s.getInstance();return`
    \n

    ${e.T("disclaimer-header","Disclaimer and Data Protection")}

    \n
    \n
    \n
    \n

    \n ${e.T("disclaimer-block-1","Websites that can be accessed publicly are required to fulfill some legal requirements. \n Which in turn makes us both suffer through this short introduction what this website does and so on.\n You can find a link to this page at the bottom of the home page.\n If you are okay with the following you may continue using this website and agree using the button at the bottom. \n If you disagree we will clean up all the stored data and send you on your way.")}\n

    \n\n

    ${e.T("disclaimer-overview-header","Overview")}

    \n
      \n
    • ${e.T("disclaimer-overview-1",'In the following the term "User" is used to reference you and "We" for us the provider.')}
    • \n
    • ${e.T("disclaimer-overview-2","This website is a free tool you may use as-is as long as we want to provide it. You might come back here tomorrow and everything is gone.")}
    • \n
    • ${e.T("disclaimer-overview-3","This website doesn't use any back-end besides a simple Web-Service used to provide the website content.")}
    • \n
    • ${e.T("disclaimer-overview-4","This website runs completely on your device. If you lose it or clear the device/website storage everything will be gone.")}
    • \n
    • ${e.T("disclaimer-overview-5","This website is only a framework, therefore requires user generated content which is manually created and provided by the users. We don't know what anybody uses this service for. \n You can compare this to a local text editor - you can create or open text files, while everything stays on your device. You may use this tool to access files created by other users.")}
    • \n
    • ${e.T("disclaimer-overview-6","The source code required to run this website is served completely from this domain. There are some links which leave this page, we have no influence on whatever they are doing.")}
    • \n
    • ${e.T("disclaimer-overview-7","User generated content may be malicious, we do attempt to protect you from obvious attacks - but in the end you are responsible for the external content you load.")}
    • \n
    \n\n

    ${e.T("disclaimer-inner-header","Disclaimer")}

    \n

    \n ${e.T("disclaimer-inner","Using this website is free of charge, there are no ad-services or tracking-services active. There is no aim to make any money using this framework.\n\n Since this website uses user generated content and doesn't store any information about the users, the provider is unable to audit any \n user generated content you are loading. You will therefore need to take full reponsibiltiy for any user generated content you are adding.\n Additionally the provider is not responsible for the content of linked pages, if there is a legal requirement to remove any reference from\n the framework it will be complied to.")}\n

    \n\n

    ${e.T("disclaimer-data-protection-header","Data protection notice")}

    \n

    \n ${e.T("disclaimer-data-protection",'No data is collected and stored outside of the user devices. Progress, settings, content and feedback marker are stored on your local device. \n User generated content stays on the device of the user. If you decide to provide a "heartbeat" using the feedback option you are leaving \n this website and the Bitly Privacy Policy applies. The feedback is optional and Bitly-Links will be highlighted.')}\n ${e.T("disclaimer-bitly-link","Click here to view the Bitly Privacy Policy on bitly.com")}. \n

    \n\n

    ${e.T("disclaimer-stored-data-header","Stored data")}

    \n

    \n ${e.T("disclaimer-stored-data-description","Multiple technologies are used to store your progress, settings and added user generated content.")}\n

      \n
    • ${e.T("disclaimer-stored-data-local","Local storage: Settings, Delayed notifications, Last feedback information request, Accepted disclaimer, Already displayed tutorials")}
    • \n
    • ${e.T("disclaimer-stored-data-indexeddb","IndexedDB: User generated content, Current progress")}
    • \n
    • ${e.T("disclaimer-stored-data-cache","Cache: The website framework data to allow offline mode")}
    • \n
    \n

    \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n `}}class L{static acceptedDisclaimer(){n.setAcceptedDisclaimer();const e=new URLSearchParams(window.location.search.replace(/#.*?$/,""));if(e.get("redirect")){let t=atob(decodeURIComponent(e.get("redirect")));if(t.startsWith("?"))return void _.navigate(""+t)}_.navigate("?page=home")}static rejectedDisclaimer(){localStorage.clear(),sessionStorage.clear(),"serviceWorker"in navigator&&(caches.keys().then((function(e){for(let t of e)caches.delete(t)})),navigator.serviceWorker.getRegistrations().then((function(e){for(let t of e)t.unregister()}))),r.getInstance().drop(function(){_.navigate("about:blank")}.bind(this))}}let V,G=0;class J{static get expectedParameters(){return{getView:[]}}static getView(e){return Y.reset(),Y.registerWarning(),Y.autoSaveRestore(),document.querySelector("html").addEventListener("mappingRefreshed",(function(e){$("#majorsTable").bootstrapTable(),$("#classesTable").bootstrapTable(),$("#tasksTable").bootstrapTable(),$("#punishmentsTable").bootstrapTable(),$("#clubsTable").bootstrapTable(),$("#partnersTable").bootstrapTable(),$("#modifiersTable").bootstrapTable(),$("#tagsTable").bootstrapTable(),$("#helpTable").bootstrapTable(),$("#rouletteTable").bootstrapTable()})),document.querySelector("html").addEventListener("navigationFinished",(function(e){Y.refreshView()})),`
    \n
    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    `}static generateImageSelection(e){return`\n
    \n
    \n
    \n Provided image\n
    \n
    \n
    \n
    \n Optimal size is 600 x 800 px.\n
    \n\n \n \n \n
    \n
    \n
    \n
    \n `}static generateRouletteTableEntry(e){return`\n \n ${e.id}\n ${e.title} \n ${e.description} \n ${e.probability} \n ${e.rollPunishment} \n \n
    \n \n \n
    \n \n \n `}static generateHelpTableEntry(e){return`\n \n ${e.id}\n ${e.title} \n ${e.text} \n \n
    \n \n \n
    \n \n \n `}static generateTagTableEntry(e){return`\n \n ${e} \n \n
    \n \n \n
    \n \n \n `}static generateRouletteCard(e){return`
    \n
    \n
    \n
    Roulette ${e.id}: ${e.title}
    \n

    ${e.description}

    \n
    \n
    \n Edit\n
    \n
    \n
    `}static generateHelpCard(e){return`
    \n
    \n
    \n
    Help ${e.id}: ${e.title}
    \n

    ${e.text}

    \n
    \n
    \n Edit\n
    \n
    \n
    `}static generateTagCard(e){return`
    \n
    \n
    \n
    ${e}
    \n Edit\n
    \n
    \n
    `}static generateParamCard(e){return`
    \n
    \n
    \n
    $param${e.id}
    \n

    ${e.value} ${"punishments"==e.valueType?e.punTier:""} ${e.valueType} ${e.description.length>0?`(${e.description})`:""}

    \n
    \n
      \n ${e.applyMultiplier?'
    • Apply multiplier
    • ':""}\n ${e.spawnTimer?'
    • Spawn timer
    • ':""}\n ${e.startTimerAutomatically?'
    • Start timer automatically
    • ':""}\n ${e.provideCounter?'
    • Provide counter
    • ':""}\n ${e.punishTime?'
    • Provide punish option
    • ':""}\n ${e.hiddenTask?'
    • Delayed sub-task
    • ':""}\n
    \n
    \n Edit\n Insert\n
    \n
    `}static generateTaskTableEntry(e){let t=Y.applyParamsToString(e.id,e.description),a="",s=n.getRandomString();if(void 0!==e.tags&&e.tags.length>0)for(const t of e.tags)a+=`${t}`;return`\n \n ${e.id}\n Task ${e.id} \n ${t}\n ${a}\n \n
    \n \n \n
    \n
    \n \n
    \n \n \n `}static generateTaskCard(e){let t=Y.applyParamsToString(e.id,e.description),a="";if(void 0!==e.tags&&e.tags.length>0)for(const t of e.tags)a+=`${t}`;return`
    \n
    \n
    \n
    Task ${e.id}
    \n

    ${t}

    \n ${a.length>0?`

    ${a}

    `:""}\n
    \n \n
    `}static generateClassTableEntry(e){let t="",a="",s="",i=n.getRandomString();for(const s of V.tasks.sort((e,t)=>e.id-t.id))e.tasks.includes(s.id)&&(t+=`
  • \n Task ${s.id}:
    \n ${Y.applyParamsToString(s.id,s.description)}\n
  • `),e.exams.includes(s.id)&&(a+=`
  • \n Task ${s.id}:
    \n ${Y.applyParamsToString(s.id,s.description)}\n
  • `);for(const t of V.classes.sort((e,t)=>e.id-t.id))e.prerequisites.includes(t.id)&&(s+=`
  • \n Class ${t.id}:
    \n ${t.title}\n
  • `);return`\n \n ${e.id}\n ${e.tier}\n ${e.title}\n ${e.subtitle}\n ${e.comment}\n ${e.description}\n ${e.days.map(e=>n.weekdays[e]).join(", ")}\n
      ${s}
    \n
      ${t}
    \n
      ${a}
    \n \n
    \n \n \n
    \n \n \n `}static generateClassCard(e){let t="",a="",s="",i=n.getRandomString();for(const s of V.tasks.sort((e,t)=>e.id-t.id))e.tasks.includes(s.id)&&(t+=`
  • \n
    \n
    \n \n
    \n
    Task ${s.id} ${Y.applyParamsToString(s.id,s.description)}
    \n
    \n
  • `),e.exams.includes(s.id)&&(a+=`
  • \n
    \n
    \n \n
    \n
    Task ${s.id} ${Y.applyParamsToString(s.id,s.description)}
    \n
    \n
  • `);for(const t of V.classes.sort((e,t)=>e.id-t.id))e.prerequisites.includes(t.id)&&(s+=`
  • \n
    \n
    \n \n
    \n
    Class ${t.id} ${t.title}
    \n
    \n
  • `);return`
    \n
    \n
    \n \n \n ${n.getButtonsContainer([``,` Edit`])}\n\n
    \n
    \n
      \n ${s.length>0?'
    • Prerequisites:
    • \n '+s:""}\n ${a.length>0?'
    • Available Exam Tasks:
    • \n '+a:""} \n ${t.length>0?'
    • Available Tasks:
    • \n '+t:""}\n
    \n
    \n
    \n
    \n\n
    \n
    \n Class ${e.id}: ${e.title} \n ${e.subtitle}\n ${void 0!==e.comment?`${e.comment}`:""}\n
    \n

    ${e.description}

    \n
    \n
    \n
    `}static generateMajorTableEntry(e){let t="",a="",s=n.getRandomString();for(const a of V.tasks.sort((e,t)=>e.id-t.id))e.exams.includes(a.id)&&(t+=`
  • \n Task ${a.id}:
    \n ${Y.applyParamsToString(a.id,a.description)}\n
  • `);for(const t of V.classes.sort((e,t)=>e.id-t.id))e.prerequisites.includes(t.id)&&(a+=`
  • \n Class ${t.id}:
    \n ${t.title}\n
  • `);return`\n \n ${e.id}\n ${e.title}\n ${e.subtitle}\n ${e.description}\n
      ${a}
    \n
      ${t}
    \n \n
    \n \n \n
    \n \n \n `}static generateMajorCard(e){let t="",a="",s=n.getRandomString();for(const a of V.tasks.sort((e,t)=>e.id-t.id))e.exams.includes(a.id)&&(t+=`
  • \n
    \n
    \n \n
    \n
    Task ${a.id} ${Y.applyParamsToString(a.id,a.description)}
    \n
    \n
  • `);for(const t of V.classes.sort((e,t)=>e.id-t.id))e.prerequisites.includes(t.id)&&(a+=`
  • \n
    \n
    \n \n
    \n
    Class ${t.id} ${t.title}
    \n
    \n
  • `);return`
    \n
    \n
    \n \n \n ${n.getButtonsContainer([``,` Edit`])}\n\n
    \n
    \n
      \n ${a.length>0?'
    • Prerequisites:
    • \n '+a:""}\n ${t.length>0?'
    • Available Exam Tasks:
    • \n '+t:""}\n
    \n
    \n
    \n
    \n\n
    \n
    \n Major ${e.id}: ${e.title}\n ${e.subtitle}\n
    \n

    ${e.description}

    \n
    \n
    \n
    `}static generatePunishmentTableEntry(e){let t=V.tasks.filter(t=>t.id===e.punishment)[0],a=Y.applyParamsToString(t.id,t.description);return`\n \n ${e.id}\n ${e.tier}\n ${e.title}\n Task ${t.id}:
    ${a}\n \n
    \n \n \n
    \n \n \n `}static generatePunishmentCard(e){let t=V.tasks.filter(t=>t.id===e.punishment)[0],a=Y.applyParamsToString(t.id,t.description);return`
    \n
    \n
    \n \n ${n.getButtonsContainer([` Edit`])}\n
    \n\n
    \n
    \n Punishment ${e.id}: ${e.title}\n ${e.tier}\n
    \n

    ${a}

    \n
    \n
    \n
    `}static generatePartnerTableEntry(e){let t="",a=n.getRandomString();for(const a of V.modifiers.sort((e,t)=>e.id-t.id))e.modifiers.includes(a.id)&&(t+=`
  • \n Modifier ${a.id}:
    \n ${Y.getModifierText(a)}\n
  • `);return`\n \n ${e.id}\n ${e.name}\n ${e.description}\n
      ${t}
    \n \n
    \n \n \n
    \n \n \n `}static generatePartnerCard(e){let t="",a=n.getRandomString();for(const a of V.modifiers.sort((e,t)=>e.id-t.id))e.modifiers.includes(a.id)&&(t+=`
  • \n
    \n
    \n \n
    \n
    Modifier ${a.id} ${Y.getModifierText(a)}
    \n
    \n
  • `);return`
    \n
    \n
    \n \n \n ${n.getButtonsContainer([``,` Edit`])}\n\n
    \n
    \n
      \n ${t.length>0?'
    • Modifiers:
    • \n '+t:""}\n
    \n
    \n
    \n
    \n\n
    \n
    \n Partner ${e.id}: ${e.name}\n
    \n

    ${e.description}

    \n
    \n
    \n
    `}static generateClubTableEntry(e){let t="",a=n.getRandomString();for(const a of V.modifiers.sort((e,t)=>e.id-t.id))e.modifiers.includes(a.id)&&(t+=`
  • \n Modifier ${a.id}:
    \n ${Y.getModifierText(a)}\n
  • `);return`\n \n ${e.id}\n ${e.tier}\n ${e.name}\n ${e.comment}\n ${e.description}\n
      ${t}
    \n \n
    \n \n \n
    \n \n \n `}static generateClubCard(e){let t="",a=n.getRandomString();for(const a of V.modifiers.sort((e,t)=>e.id-t.id))e.modifiers.includes(a.id)&&(t+=`
  • \n
    \n
    \n \n
    \n
    Modifier ${a.id} ${Y.getModifierText(a)}
    \n
    \n
  • `);return`
    \n
    \n
    \n \n \n ${n.getButtonsContainer([``,` Edit`])}\n\n
    \n
    \n
      \n ${t.length>0?'
    • Modifiers:
    • \n '+t:""}\n
    \n
    \n
    \n
    \n\n
    \n
    \n Club ${e.id}: ${e.name} ${e.tier}\n ${void 0!==e.comment?`${e.comment}`:""}\n
    \n

    ${e.description}

    \n
    \n
    \n
    `}static generateModifierTableEntry(e){let t=Y.getModifierTags(e.tags),a="",s=n.getRandomString();if(void 0!==e.tags&&e.tags.length>0)for(const t of e.tags)a+=`${t}`;return`\n \n ${e.id}\n Modifier ${e.id}\n ${Y.getModifierMod(e,t)}\n ${Y.getModifierPerk(e,t)}\n \n
    \n \n \n
    \n \n \n `}static generateModifierCard(e){let t=Y.getModifierText(e),a="";if(void 0!==e.tags&&e.tags.length>0)for(const t of e.tags)a+=`${t}`;return`
    \n
    \n
    \n
    Modifier ${e.id}
    \n

    ${t}

    \n ${a.length>0?`

    ${a}

    `:""}\n
    \n \n
    `}static getGeneralView(){return`
    \n
    \n \n \n
    \n
    \n \n \n
    \n \n \n
    `}static generateCustomExportModal(e){let t="",a="",s="",i="",n="",o="";if(void 0!==V.majors&&Array.isArray(V.majors)&&V.majors.length>0)for(const e of V.majors.sort((e,t)=>e.id-t.id))t+=``;if(void 0!==V.classes&&Array.isArray(V.classes)&&V.classes.length>0)for(const e of V.classes.sort((e,t)=>e.id-t.id))a+=``;if(void 0!==V.clubs&&Array.isArray(V.clubs)&&V.clubs.length>0)for(const e of V.clubs.sort((e,t)=>e.id-t.id))s+=``;if(void 0!==V.partners&&Array.isArray(V.partners)&&V.partners.length>0)for(const e of V.partners.sort((e,t)=>e.id-t.id))i+=``;if(void 0!==V.punishments&&Array.isArray(V.punishments)&&V.punishments.length>0)for(const e of V.punishments.sort((e,t)=>e.id-t.id))n+=``;if(void 0!==V.rouletteOptions&&Array.isArray(V.rouletteOptions)&&V.rouletteOptions.length>0)for(const e of V.rouletteOptions.sort((e,t)=>e.id-t.id))o+=``;return`\n `}static generateRouletteModal(e){return`\n `}static generateHelpModal(e){return`\n `}static generateTagModal(e){return`\n `}static generateParamModal(e){let t="seconds"===e.valueType||"minutes"===e.valueType||"hours"===e.valueType||"days"===e.valueType,a="punishments"===e.valueType,s=!t&&!a,i=e.value;return e.timeUnit&&"hours"==e.timeUnit?i/=60:e.timeUnit&&"days"==e.timeUnit&&(i/=1440),`\n `}static generateTaskModal(e){let t="";if(void 0!==V.tags&&Array.isArray(V.tags)&&V.tags.length>0)for(const a of V.tags)void 0!==e.tags&&e.tags.includes(a)?t+=``:t+=``;return`\n `}static generateClassModal(e){let t="",a="",s="";if(void 0!==V.classes&&Array.isArray(V.classes)&&V.classes.length>0)for(const a of V.classes.sort((e,t)=>e.id-t.id))e.id!==a.id&&(e.prerequisites.includes(a.id)?t+=``:t+=``);if(void 0!==V.tasks&&Array.isArray(V.tasks)&&V.tasks.length>0)for(const t of V.tasks.sort((e,t)=>e.id-t.id))e.tasks.includes(t.id)?a+=``:a+=``,e.exams.includes(t.id)?s+=``:s+=``;return`\n `}static generateMajorModal(e){let t="",a="";if(void 0!==V.classes&&Array.isArray(V.classes)&&V.classes.length>0)for(const a of V.classes.sort((e,t)=>e.id-t.id))e.prerequisites.includes(a.id)?t+=``:t+=``;if(void 0!==V.tasks&&Array.isArray(V.tasks)&&V.tasks.length>0)for(const t of V.tasks.sort((e,t)=>e.id-t.id))e.exams.includes(t.id)?a+=``:a+=``;return`\n `}static generatePunishmentModal(e){let t="";if(void 0!==V.tasks&&Array.isArray(V.tasks)&&V.tasks.length>0)for(const a of V.tasks.sort((e,t)=>e.id-t.id))e.punishment==a.id?t+=``:t+=``;return`\n `}static generatePartnerModal(e){let t="";if(void 0!==V.modifiers&&Array.isArray(V.modifiers)&&V.modifiers.length>0)for(const a of V.modifiers.sort((e,t)=>e.id-t.id))e.modifiers.includes(a.id)?t+=``:t+=``;return`\n `}static generateClubModal(e){let t="";if(void 0!==V.modifiers&&Array.isArray(V.modifiers)&&V.modifiers.length>0)for(const a of V.modifiers.sort((e,t)=>e.id-t.id))e.modifiers.includes(a.id)?t+=``:t+=``;return`\n `}static generateModifierModal(e){let t="";if(void 0!==V.tags&&Array.isArray(V.tags)&&V.tags.length>0)for(const a of V.tags)void 0!==e.tags&&e.tags.includes(a)?t+=``:t+=``;return`\n `}static generateQrModal(e){return`\n `}static generateImageModal(e,t){return`\n `}}class Y{static escapeQuote(e){return"string"!=typeof e?e:e.replace(/"/g,""")}static minutesToTime(e){let t=Math.floor(e/1440),a=Math.floor((e-1440*t)/60),s=Math.round(e%60),i="";return 1==t?i+=t+" day":t>1&&(i+=t+" days"),a>0&&(t&&!s?i+=" and":t&&(i+=";"),i+=1==a?` ${a} hour`:` ${a} hours`),s>0&&((t||a)&&(i+=" and"),i+=1==s?` ${s} minute`:` ${s} minutes`),i.trim()}static applyParamsToString(e,t){let a="".concat(t);for(const t of V.params.filter(t=>t.taskId==e)){let e="",s=Math.round(1*t.value);if("minutes"===t.valueType){Y.minutesToTime(s);let a=Y.minutesToTime(t.value);t.applyMultiplier,e=""+a}else"punishments"===t.valueType?(t.applyMultiplier,e=`${t.value} ${t.punTier?t.punTier:"random"} ${t.valueType}`):(t.applyMultiplier,e=`${t.value} ${t.valueType}`);a=a.replace("$param"+t.id,`${e}`)}return a}static restoredTableSettings(e){let t=$("#"+e).bootstrapTable("getOptions");return"object"==typeof t&&t.hasOwnProperty("idField")||(t={searchText:"",sortName:"",sortOrder:"desc",pageNumber:1,pageSize:10,visibleColumns:!0}),"object"==typeof t&&Array.isArray(t.columns)&&t.columns.length>0&&(t.visibleColumns=t.columns[0].filter(e=>e.visible).map(e=>e.field)),t}static getModifierTags(e){return void 0!==e&&e.length>0?e.join(", "):"all"}static getModifierMod(e,t){return"difficulty"===e.modType?`Increase difficulty for ${t} tasks by ${e.modVal}%.`:"punishment"===e.modType?"Roll a punishment.":""+e.modVal}static getModifierPerk(e,t){return"difficulty"===e.perkType?`Decrease difficulty for ${t} tasks by ${e.perkVal}%.`:"skip"===e.perkType?"Allow skipping a class without punishment.":"attendance"===e.perkType?`Add an additional attendance for ${t} classes.`:"resetRoulette"===e.perkType?"Reset roulette.":""+e.perkVal}static getModifierText(e){let t="",a="";return a=Y.getModifierTags(e.tags),t+=`[${Y.getModifierMod(e,a)}]`,t+=`[${Y.getModifierPerk(e,a)}]`,t}static saveGeneral(){V.general.title=$("#mapTitle").val(),V.general.description=$("#mapDescription").val(),Y.autoSaveUpdate("general")}static resetGeneral(){$("#mapTitle").val(V.general.title),$("#mapDescription").val(V.general.description)}static addRoulette(){Y.openRoulette({id:V.globalIndex++,title:"",description:"",probability:0,rollPunishment:!1})}static editRoulette(e){Y.openRoulette(V.rouletteOptions.find((function(t){return t.id==e})))}static openRoulette(e){let t="#rouletteModal"+e.id;$("#modalContainer").append(J.generateRouletteModal(e)),$(t).modal({keyboard:!0}).modal("show").on("keydown",Y.handleModalKeyDown).on("shown.bs.modal",(function(){$(t+" .rouletteModal-title").trigger("focus")})).on("hidden.bs.modal",(function(e){Y.refreshView(),$(""+t).modal("dispose").remove()}))}static removeRoulette(e){V.rouletteOptions=V.rouletteOptions.filter((function(t){return t.id!=e})),$("#rouletteModal"+e).is(":visible")?$("#rouletteModal"+e).modal("hide"):Y.refreshView()}static saveRouletteAndNew(e){Y.saveRoulette(e)&&Y.addRoulette()}static saveRouletteAndDuplicate(e){if(Y.saveRoulette(e)){let t=JSON.parse(JSON.stringify(V.rouletteOptions.find((function(t){return t.id==e}))));t.id=V.globalIndex++,Y.openRoulette(t)}}static saveRoulette(e){let t={id:e,title:$(`#rouletteModal${e} .rouletteModal-title`).val(),description:$(`#rouletteModal${e} .rouletteModal-description`).val(),probability:parseFloat(document.querySelector("#rouletteModal-probability"+e).value),rollPunishment:document.querySelector("#rouletteModal-rollPunishment"+e).checked};return void 0===t.title||t.title.length<=0?(n.showToast("Invalid title","Please provide a title.","warning"),!1):void 0===t.description||t.description.length<=0?(n.showToast("Invalid description","Please provide a description.","warning"),!1):(Y.removeRoulette(e),V.rouletteOptions.push(t),Y.autoSaveUpdate("roulette"),!0)}static addHelp(){Y.openHelp({id:V.globalIndex++,title:"",text:""})}static editHelp(e){Y.openHelp(V.help.find((function(t){return t.id==e})))}static handleModalKeyDown(e){if(e.ctrlKey||e.metaKey)switch(String.fromCharCode(e.which).toLowerCase()){case"s":const t=$("button.save-button",e.currentTarget);if(1==t.length)return t.trigger("click"),e.preventDefault(),!1}}static openHelp(e){let t="#helpModal"+e.id;$("#modalContainer").append(J.generateHelpModal(e)),$(t).modal({keyboard:!0}).modal("show").on("keydown",Y.handleModalKeyDown).on("shown.bs.modal",(function(){$(t+" .helpModal-title").trigger("focus")})).on("hidden.bs.modal",(function(e){Y.refreshView(),$(""+t).modal("dispose").remove()}))}static removeHelp(e){V.help=V.help.filter((function(t){return t.id!=e})),$("#helpModal"+e).is(":visible")?$("#helpModal"+e).modal("hide"):Y.refreshView()}static saveHelpAndNew(e){Y.saveHelp(e)&&Y.addHelp()}static saveHelpAndDuplicate(e){if(Y.saveHelp(e)){let t=JSON.parse(JSON.stringify(V.help.find((function(t){return t.id==e}))));t.id=V.globalIndex++,Y.openHelp(t)}}static saveHelp(e){let t={id:e,title:$(`#helpModal${e} .helpModal-title`).val(),text:$(`#helpModal${e} .helpModal-text`).val()};if(void 0===t.title||t.title.length<=0)return n.showToast("Invalid title","Please provide a title.","warning"),!1;if(void 0===t.text||t.text.length<=0)return n.showToast("Invalid help text","Please provide a help text.","warning"),!1;let a=document.createElement("div");return a.innerHTML=t.text,t.text=a.innerHTML,Y.removeHelp(e),V.help.push(t),Y.autoSaveUpdate("help"),!0}static addTag(e){Y.openTag(""),Y.enableTagReference(e)}static enableTagReference(e){if(!e)return!1;$("#tagModal .save-button, #tagModal .save-button-area a.customLink").on("click",(function(t){let a=$("#tagModal .tagModal-tag").val();$(e).append(``),$(e).selectpicker("refresh").selectpicker("refresh")})),$("#tagModal").attr("data-ref",e)}static editTag(e){Y.openTag(e)}static openTag(e){$("#modalContainer").append(J.generateTagModal(e)),$("#tagModal").modal({keyboard:!0}).modal("show").on("keydown",Y.handleModalKeyDown).on("shown.bs.modal",(function(){$("#tagModal .tagModal-tag").trigger("focus")})).on("hidden.bs.modal",(function(e){Y.refreshView(),$("#tagModal").modal("dispose").remove(),document.querySelector("#modalContainer").dispatchEvent(new CustomEvent("removed-tag-modal",{}))}))}static removeTag(e){V.tags=V.tags.filter((function(t){return t!=e})),$("#tagModal").is(":visible")?$("#tagModal").modal("hide"):Y.refreshView()}static saveTagAndNew(e){if(Y.saveTag(e)){const e=$("#tagModal").attr("data-ref");document.querySelector("#modalContainer").addEventListener("removed-tag-modal",(function(t){Y.addTag(e)}),{once:!0})}}static saveTag(e){let t=$("#tagModal .tagModal-tag").val().toLowerCase();if(void 0===t||t.length<=0)return n.showToast("Invalid tag","Please insert a tag.","warning"),!1;if(V.tags.includes(t))return n.showToast("Invalid tag","This tag is already in use.","warning"),!1;let a=t.match(/\s/g);return null!==a&&a.length>0?(n.showToast("Invalid tag","Please insert a single tag (no spaces allowed).","warning"),!1):(Y.removeTag(e),V.tags.push(t),Y.autoSaveUpdate("tag"),!0)}static addParam(e){Y.openParam({id:V.globalIndex++,taskId:e,description:"",value:"",valueType:"minutes",timeUnit:"minutes",applyMultiplier:!1,spawnTimer:!1,startTimerAutomatically:!1,provideCounter:!1,punishTime:!1,punishTimeMinutes:0,hiddenTask:!1})}static insertParam(e,t){let a=$(`#taskModal${t} .taskModal-description`);a.val().indexOf(" ")===a.val().length-1?a[0].value+="$param"+e:a[0].value+=" $param"+e,a.trigger("focus")}static editParam(e){Y.openParam(V.params.find((function(t){return t.id==e})))}static openParam(e){let t="#paramModal"+e.id;$("#modalContainer").append(J.generateParamModal(e)),$(t).modal({keyboard:!0}).modal("show").on("keydown",Y.handleModalKeyDown).on("shown.bs.modal",(function(){$(t+" .paramModal-description").trigger("focus"),$(t+" select[multiple]").selectpicker()})).on("hidden.bs.modal",(function(a){$(`#taskModal${e.taskId} .paramsCardContainer`).html(Y.getParams(e.taskId)),$(t).modal("dispose").remove()})),$(t+" .paramModal-timeUnit-time").on("change",(function(e){$(t+" .paramModal-valueType-time").prop("checked",!0).trigger("change")})),$(t+" .paramModal-valueType-others-text").on("change",(function(e){$(t+" .paramModal-valueType-others").prop("checked",!0).trigger("change")})),$(t+" .paramModal-punishment-tier").on("change",(function(e){$(t+" .paramModal-valueType-punishment").prop("checked",!0).trigger("change")})),$(t+" .paramModal-valueType-time").on("change",(function(e){e.target.checked&&($(t+" .paramModal-applyMultiplier").prop("disabled",!1),$(t+" .paramModal-spawnTimer").prop("disabled",!1),$(t+" .paramModal-startTimerAutomatically").prop("disabled",!1),$(t+" .paramModal-provideCounter").prop("disabled",!0),$(t+" .paramModal-punishTime").prop("disabled",!1),$(t+" .paramModal-punishTime-minutes").prop("disabled",!1),$(t+" .paramModal-hiddenTask").prop("disabled",!1))})),$(t+" .paramModal-valueType-others").on("change",(function(e){e.target.checked&&($(t+" .paramModal-applyMultiplier").prop("disabled",!1),$(t+" .paramModal-spawnTimer").prop("disabled",!0),$(t+" .paramModal-startTimerAutomatically").prop("disabled",!0),$(t+" .paramModal-provideCounter").prop("disabled",!1),$(t+" .paramModal-punishTime").prop("disabled",!0),$(t+" .paramModal-punishTime-minutes").prop("disabled",!0),$(t+" .paramModal-hiddenTask").prop("disabled",!1))})),$(t+" .paramModal-valueType-punishment").on("change",(function(e){e.target.checked&&($(t+" .paramModal-applyMultiplier").prop("disabled",!0),$(t+" .paramModal-spawnTimer").prop("disabled",!0),$(t+" .paramModal-startTimerAutomatically").prop("disabled",!0),$(t+" .paramModal-provideCounter").prop("disabled",!0),$(t+" .paramModal-punishTime").prop("disabled",!0),$(t+" .paramModal-punishTime-minutes").prop("disabled",!0),$(t+" .paramModal-hiddenTask").prop("disabled",!0))}))}static removeParam(e){V.params=V.params.filter((function(t){return t.id!=e})),$("#paramModal"+e).modal("hide")}static saveParam(e,t){let a="#paramModal"+e,s={id:e,taskId:t,description:$(a+" .paramModal-description").val(),value:Number.parseFloat($(a+" .paramModal-value").val()),valueType:$(`${a} input[name='paramModal-valueType${e}']:checked`).val(),timeUnit:$(a+" .paramModal-timeUnit-time").val(),punTier:$(a+" .paramModal-punishment-tier").val(),applyMultiplier:void 0!==$(a+" .paramModal-applyMultiplier:checked").val(),spawnTimer:void 0!==$(a+" .paramModal-spawnTimer:checked").val(),startTimerAutomatically:void 0!==$(a+" .paramModal-startTimerAutomatically:checked").val(),provideCounter:void 0!==$(a+" .paramModal-provideCounter:checked").val(),punishTime:void 0!==$(a+" .paramModal-punishTime:checked").val(),punishTimeMinutes:Number.parseFloat($(a+" .paramModal-punishTime-minutes").val()),hiddenTask:void 0!==$(a+" .paramModal-hiddenTask:checked").val()};if(s.value<=0)n.showToast("Invalid Parameter","Make sure to provide a value for this parameter.","warning");else{if("time"===s.valueType){if(!Number.isInteger(s.value))return void n.showToast("Invalid Parameter","Only integers are allowed while you use time.","warning");if("seconds"==s.timeUnit?s.valueType="seconds":"minutes"==s.timeUnit?s.valueType="minutes":"hours"==s.timeUnit?(s.valueType="minutes",s.value*=60):"days"==s.timeUnit&&(s.valueType="minutes",s.value*=1440),s.provideCounter=!1,s.punTier="",s.punishTime&&!Number.isInteger(s.punishTimeMinutes))return void n.showToast("Invalid Parameter","Only integers are allowed if you want to use the 'punish' option.","warning")}else if("others"===s.valueType){if(s.valueType=$(a+" .paramModal-valueType-others-text").val(),(""+s.valueType).length<=0)return void n.showToast("Invalid Parameter","If you use a custom type make sure to provide a name for it!","warning");if(s.spawnTimer=!1,s.startTimerAutomatically=!1,s.punishTime=!1,s.punishTimeMinutes=0,s.punTier="",s.provideCounter&&!Number.isInteger(s.value))return void n.showToast("Invalid Parameter","Only integers are allowed if you want to use the 'counter' option.","warning")}else"punishments"===s.valueType&&(s.spawnTimer=!1,s.startTimerAutomatically=!1,s.punishTime=!1,s.punishTimeMinutes=0,s.provideCounter=!1,s.hiddenTask=!1);Y.removeParam(e),V.params.push(s),Y.autoSaveUpdate("param")}}static openCustomExport(e){$("#modalContainer").append(J.generateCustomExportModal(e)),$("#customExportModal").modal({keyboard:!0}).modal("show").on("shown.bs.modal",(function(){$("#customExportModal .customExportModal-moduleTitle").trigger("focus"),$("#customExportModal select[multiple]").selectpicker()})).on("hidden.bs.modal",(function(e){$("#customExportModal").modal("dispose").remove()}))}static addTask(e){let t=V.globalIndex++;Y.openTask({id:t,description:"",tags:[]}),Y.enableTaskReference(t,e)}static enableTaskReference(e,t){if(!e||!t)return!1;$(`#taskModal${e} .save-button, #taskModal${e} .save-button-area a.customLink`).on("click",(function(a){$(t).append(``),$(t).selectpicker("refresh").selectpicker("refresh")})),$("#taskModal"+e).attr("data-ref",t)}static editTask(e){Y.openTask(V.tasks.find((function(t){return t.id==e})))}static openTask(e){let t="#taskModal"+e.id;$("#modalContainer").append(J.generateTaskModal(e)),$(t).modal({keyboard:!0}).modal("show").on("keydown",Y.handleModalKeyDown).on("shown.bs.modal",(function(){$(t+" .taskModal-description").trigger("focus"),$(t+" select[multiple]").selectpicker()})).on("hidden.bs.modal",(function(e){Y.refreshView(),$(""+t).modal("dispose").remove()})),$(t+" .taskModal-description").on("input",(function(a){$(t+" .taskModal-description-preview").html("Preview: "+Y.applyParamsToString(e.id,a.target.value))}))}static removeTask(e){V.tasks=V.tasks.filter((function(t){return t.id!=e})),$("#taskModal"+e).is(":visible")?$("#taskModal"+e).modal("hide"):Y.refreshView()}static saveTaskAndNew(e){if(Y.saveTask(e)){const t=$("#taskModal"+e).attr("data-ref");Y.addTask(t)}}static saveTaskAndDuplicate(e){if(Y.saveTask(e)){let t=JSON.parse(JSON.stringify(V.tasks.find((function(t){return t.id==e}))));t.id=V.globalIndex++;let a=JSON.parse(JSON.stringify(V.params.filter((function(t){return t.taskId==e}))));for(const e of a){const a=e.id;e.id=V.globalIndex++,e.taskId=t.id,t.description=t.description.replace(new RegExp("\\$param"+a,"g"),"$param"+e.id),V.params.push(e)}Y.openTask(t),Y.enableTaskReference(t.id,$("#taskModal"+e).attr("data-ref"))}}static saveTask(e){let t={id:e,description:$(`#taskModal${e} .taskModal-description`).val(),tags:$(`#taskModal${e} select.taskModal-tags`).val()};return void 0===t.description||t.description.length<=0?(n.showToast("Invalid description","Please provide a description.","warning"),!1):(Y.removeTask(e),V.tasks.push(t),Y.autoSaveUpdate("task"),!0)}static handleImageSelection(e){$(".image-selection-btn",e).on("click",(function(t){$(".image-selection",e).click()})),$(".image-selection",e).on("change",(function(t){if(void 0!==t.target.files&&1===t.target.files.length){const a=new FileReader;a.onload=function(a){t.target.value="",Y.optimizeImage(a.target.result,e)},a.readAsDataURL(t.target.files[0])}}))}static optimizeImage(e,t){let a=function(e,a){$(".image-preview",t).attr("src",e),$(".image-preview",t).attr("data-optimized-url","")}.bind(this);n.optimizeImage(e,a)}static addClass(e){let t=V.globalIndex++;Y.openClass({id:t,title:"",subtitle:"",comment:"",prerequisites:[],days:[],description:"",tier:"beginner",tasks:[],exams:[],image:void 0,imageUrl:void 0,taskListSize:o.defaultTaskListSize,disableBonusAttendance:!1}),e&&($(`#classModal${t} .save-button, #classModal${t} .save-button-area a.customLink`).on("click",(function(a){$(e).append(``),$(e).selectpicker("refresh").selectpicker("refresh")})),$("#classModal"+t).attr("data-ref",e))}static editClass(e){Y.openClass(V.classes.find((function(t){return t.id==e})))}static openClass(e){let t="#classModal"+e.id;$("#modalContainer").append(J.generateClassModal(e)),$(t).modal({keyboard:!0}).modal("show").on("keydown",Y.handleModalKeyDown).on("shown.bs.modal",(function(){$(t+" .classModal-title").trigger("focus"),$(t+" select[multiple]").selectpicker()})).on("hidden.bs.modal",(function(e){Y.refreshView(),$(t).modal("dispose").remove()})),Y.handleImageSelection(t)}static removeClass(e){V.classes=V.classes.filter((function(t){return t.id!=e})),$("#classModal"+e).is(":visible")?$("#classModal"+e).modal("hide"):Y.refreshView()}static saveClassAndNew(e){if(Y.saveClass(e)){const t=$("#classModal"+e).attr("data-ref");Y.addClass(t)}}static saveClass(e){let t="#classModal"+e,a={id:e,title:$(t+" .classModal-title").val(),subtitle:$(t+" .classModal-subtitle").val(),comment:$(t+" .classModal-comment").val(),prerequisites:$(t+" select.classModal-prerequisites").val().map(e=>Number.parseInt(e)),days:$(t+" select.classModal-days").val().map(e=>Number.parseInt(e)),description:$(t+" .classModal-description").val(),tier:$(`${t} input[name='classModal-tier${e}']:checked`).val(),tasks:$(t+" select.classModal-tasks").val().map(e=>Number.parseInt(e)),exams:$(t+" select.classModal-exams").val().map(e=>Number.parseInt(e)),image:$(t+" .image-preview").attr("src"),imageUrl:$(t+" .image-preview").attr("data-optimized-url"),taskListSize:Number.parseInt($(t+" .classModal-task-list-size").val()),disableBonusAttendance:$(`${t} #classModal-disable-bonus-attendance${e}`)[0].checked};return void 0===a.title||a.title.length<=0?(n.showToast("Invalid Title","Please provide a title.","warning"),!1):void 0===a.days||a.days.length<=0?(n.showToast("Invalid Selection","Please choose at least one day on which this class will be available.","warning"),!1):(Y.removeClass(e),V.classes.push(a),Y.autoSaveUpdate("class"),!0)}static addMajor(){Y.openMajor({id:V.globalIndex++,title:"",subtitle:"",description:"",prerequisites:[],exams:[],image:void 0,imageUrl:void 0})}static editMajor(e){Y.openMajor(V.majors.find((function(t){return t.id==e})))}static openMajor(e){let t="#majorModal"+e.id;$("#modalContainer").append(J.generateMajorModal(e)),$(t).modal({keyboard:!0}).modal("show").on("keydown",Y.handleModalKeyDown).on("shown.bs.modal",(function(){$(t+" .majorModal-title").trigger("focus"),$(t+" select[multiple]").selectpicker()})).on("hidden.bs.modal",(function(e){Y.refreshView(),$(t).modal("dispose").remove()})),Y.handleImageSelection(t)}static removeMajor(e){V.majors=V.majors.filter((function(t){return t.id!=e})),$("#majorModal"+e).is(":visible")?$("#majorModal"+e).modal("hide"):Y.refreshView()}static saveMajorAndNew(e){Y.saveMajor(e)&&Y.addMajor()}static saveMajor(e){let t="#majorModal"+e,a={id:e,title:$(t+" .majorModal-title").val(),subtitle:$(t+" .majorModal-subtitle").val(),description:$(t+" .majorModal-description").val(),prerequisites:$(t+" select.majorModal-prerequisites").val().map(e=>Number.parseInt(e)),exams:$(t+" select.majorModal-exams").val().map(e=>Number.parseInt(e)),image:$(t+" .image-preview").attr("src"),imageUrl:$(t+" .image-preview").attr("data-optimized-url")};return void 0===a.title||a.title.length<=0?(n.showToast("Invalid title","Please provide a title.","warning"),!1):(Y.removeMajor(e),V.majors.push(a),Y.autoSaveUpdate("major"),!0)}static addPunishment(){Y.openPunishment({id:V.globalIndex++,title:"",tier:"",punishment:"",image:void 0,imageUrl:void 0})}static editPunishment(e){Y.openPunishment(V.punishments.find((function(t){return t.id==e})))}static openPunishment(e){let t="#punishmentModal"+e.id;$("#modalContainer").append(J.generatePunishmentModal(e)),$(t).modal({keyboard:!0}).modal("show").on("keydown",Y.handleModalKeyDown).on("shown.bs.modal",(function(){$(t+" .punishmentModal-title").trigger("focus"),$(t+" select[multiple]").selectpicker()})).on("hidden.bs.modal",(function(e){Y.refreshView(),$(t).modal("dispose").remove()})),Y.handleImageSelection(t)}static removePunishment(e){V.punishments=V.punishments.filter((function(t){return t.id!=e})),$("#punishmentModal"+e).is(":visible")?$("#punishmentModal"+e).modal("hide"):Y.refreshView()}static savePunishmentAndNew(e){Y.savePunishment(e)&&Y.addPunishment()}static savePunishment(e){let t="#punishmentModal"+e,a={id:e,title:$(t+" .punishmentModal-title").val(),tier:$(`${t} input[name='punishmentModal-tier${e}']:checked`).val(),punishment:Number.parseInt($(t+" select.punishmentModal-punishment").val()),image:$(t+" .image-preview").attr("src"),imageUrl:$(t+" .image-preview").attr("data-optimized-url")};return void 0===a.title||a.title.length<=0?(n.showToast("Invalid title","Please provide a title.","warning"),!1):void 0===a.punishment||Number.isNaN(a.punishment)?(n.showToast("Invalid punishment","Please select a punishment!","warning"),!1):(Y.removePunishment(e),V.punishments.push(a),Y.autoSaveUpdate("punishment"),!0)}static addPartner(){Y.openPartner({id:V.globalIndex++,name:"",description:"",modifiers:[],image:void 0,imageUrl:void 0})}static editPartner(e){Y.openPartner(V.partners.find(t=>t.id==e))}static openPartner(e){let t="#partnerModal"+e.id;$("#modalContainer").append(J.generatePartnerModal(e)),$(t).modal({keyboard:!0}).modal("show").on("keydown",Y.handleModalKeyDown).on("shown.bs.modal",(function(){$(t+" .partnerModal-name").trigger("focus"),$(t+" select[multiple]").selectpicker()})).on("hidden.bs.modal",(function(e){Y.refreshView(),$(t).modal("dispose").remove()})),Y.handleImageSelection(t)}static removePartner(e){V.partners=V.partners.filter(t=>t.id!=e),$("#partnerModal"+e).is(":visible")?$("#partnerModal"+e).modal("hide"):Y.refreshView()}static savePartnerAndNew(e){Y.savePartner(e)&&Y.addPartner()}static savePartner(e){let t="#partnerModal"+e,a={id:e,name:$(t+" .partnerModal-name").val(),description:$(t+" .partnerModal-description").val(),modifiers:$(t+" select.partnerModal-modifiers").val().map(e=>Number.parseInt(e)),image:$(t+" .image-preview").attr("src"),imageUrl:$(t+" .image-preview").attr("data-optimized-url")};return void 0===a.name||a.name.length<=0?(n.showToast("Invalid name","Please provide a name for your partner.","warning"),!1):(Y.removePartner(e),V.partners.push(a),Y.autoSaveUpdate("partner"),!0)}static addClub(){Y.openClub({id:V.globalIndex++,name:"",description:"",tier:"normal",modifiers:[],comment:"",image:void 0,imageUrl:void 0})}static editClub(e){Y.openClub(V.clubs.find(t=>t.id==e))}static openClub(e){let t="#clubModal"+e.id;$("#modalContainer").append(J.generateClubModal(e)),$(t).modal({keyboard:!0}).modal("show").on("keydown",Y.handleModalKeyDown).on("shown.bs.modal",(function(){$(t+" .clubModal-name").trigger("focus"),$(t+" select[multiple]").selectpicker()})).on("hidden.bs.modal",(function(e){Y.refreshView(),$(t).modal("dispose").remove()})),Y.handleImageSelection(t)}static removeClub(e){V.clubs=V.clubs.filter(t=>t.id!=e),$("#clubModal"+e).is(":visible")?$("#clubModal"+e).modal("hide"):Y.refreshView()}static saveClubAndNew(e){Y.saveClub(e)&&Y.addClub()}static saveClub(e){let t="#clubModal"+e,a={id:e,name:$(t+" .clubModal-name").val(),comment:$(t+" .clubModal-comment").val(),description:$(t+" .clubModal-description").val(),tier:$(`${t} input[name='clubModal-tier${e}']:checked`).val(),modifiers:$(t+" select.clubModal-modifiers").val().map(e=>Number.parseInt(e)),image:$(t+" .image-preview").attr("src"),imageUrl:$(t+" .image-preview").attr("data-optimized-url")};return void 0===a.name||a.name.length<=0?(n.showToast("Invalid name","Please provide a name for your club.","warning"),!1):(Y.removeClub(e),V.clubs.push(a),Y.autoSaveUpdate("club"),!0)}static addModifier(e){let t=V.globalIndex++;Y.openModifier({id:t,modType:"",modVal:"",perkType:"",perkVal:"",tags:[]}),Y.enableModifierReference(t,e)}static enableModifierReference(e,t){if(!e||!t)return!1;$(`#modifierModal${e} .save-button, #modifierModal${e} .save-button-area a.customLink`).on("click",(function(a){$(t).append(``),$(t).selectpicker("refresh").selectpicker("refresh")})),$("#modifierModal"+e).attr("data-ref",t)}static editModifier(e){Y.openModifier(V.modifiers.find(t=>t.id==e))}static openModifier(e){let t="#modifierModal"+e.id;$("#modalContainer").append(J.generateModifierModal(e)),$(t).modal({keyboard:!0}).modal("show").on("keydown",Y.handleModalKeyDown).on("shown.bs.modal",(function(){$(t+" .modifierModal-modType").trigger("focus"),$(t+" select[multiple]").selectpicker()})).on("hidden.bs.modal",(function(e){Y.refreshView(),$(t).modal("dispose").remove()})),$(t+" .modifierModal-modVal-text").on("change",(function(e){$(t+" .modifierModal-modifier-text").prop("checked",!0).trigger("change")})),$(t+" .modifierModal-modVal-difficulty").on("change",(function(e){$(t+" .modifierModal-modifier-difficulty").prop("checked",!0).trigger("change")})),$(t+" .modifierModal-perkVal-text").on("change",(function(e){$(t+" .modifierModal-perk-text").prop("checked",!0).trigger("change")})),$(t+" .modifierModal-perkVal-difficulty").on("change",(function(e){$(t+" .modifierModal-perk-difficulty").prop("checked",!0).trigger("change")}))}static removeModifier(e){V.modifiers=V.modifiers.filter(t=>t.id!=e),$("#modifierModal"+e).is(":visible")?$("#modifierModal"+e).modal("hide"):Y.refreshView()}static saveModifierAndNew(e){if(Y.saveModifier(e)){const t=$("#modifierModal"+e).attr("data-ref");Y.addModifier(t)}}static saveModifierAndDuplicate(e){if(Y.saveModifier(e)){const t=$("#modifierModal"+e).attr("data-ref");let a=JSON.parse(JSON.stringify(V.modifiers.find((function(t){return t.id==e}))));a.id=V.globalIndex++,Y.openModifier(a),Y.enableModifierReference(a.id,t)}}static saveModifier(e){let t="#modifierModal"+e,a={id:e,tags:$(t+" select.modifierModal-tags").val(),modType:$(`${t} input[name='modifierModal-modifier${e}']:checked`).val(),modVal:"",perkType:$(`${t} input[name='modifierModal-perk${e}']:checked`).val(),perkVal:""};if("difficulty"===a.modType){if(a.modVal=Number.parseInt($(t+" .modifierModal-modVal-difficulty").val()),Number.isNaN(a.modVal))return n.showToast("Invalid difficulty","Make sure to provide an integer value for the difficulty.","warning"),!1;if(a.modVal>100||a.modVal<1)return n.showToast("Invalid difficulty","Make sure to provide a value between 1 and 100 for the difficulty.","warning"),!1}else if("text"===a.modType&&(a.modVal=$(t+" .modifierModal-modVal-text").val(),void 0===a.modVal||a.modVal.length<=0))return n.showToast("Invalid text","Make sure to provide a value for the text.","warning"),!1;if("difficulty"===a.perkType){if(a.perkVal=Number.parseInt($(t+" .modifierModal-perkVal-difficulty").val()),Number.isNaN(a.perkVal))return n.showToast("Invalid difficulty","Make sure to provide an integer value for the difficulty.","warning"),!1;if(a.perkVal<-100||a.perkVal>-1)return n.showToast("Invalid difficulty","Make sure to provide a value between -1 and -100 for the difficulty.","warning"),!1}else if("text"===a.perkType&&(a.perkVal=$(t+" .modifierModal-perkVal-text").val(),void 0===a.perkVal||a.perkVal.length<=0))return n.showToast("Invalid text","Make sure to provide a value for the text.","warning"),!1;return Y.removeModifier(e),V.modifiers.push(a),Y.autoSaveUpdate("modifier"),!0}static getParams(e){let t="";for(const a of V.params.filter(t=>t.taskId==e).sort((e,t)=>e.id-t.id))t+=J.generateParamCard(a);return t.length<=0&&(t='

    No params defined yet.

    '),`
    ${t}
    `}static getTableColumns(e,t){let a="";for(const s of e)a+=`${s.text}`;return a}static getTasksTable(){let e="",t=Y.restoredTableSettings("tasksTable");for(const t of V.tasks.sort((e,t)=>e.id-t.id))e+=J.generateTaskTableEntry(t);return`\n
    \n
    \n \n
    \n \n \n \n ${Y.getTableColumns([{id:"id",text:"ID",additional:'data-sortable="true"'},{id:"title",text:"Title",additional:""},{id:"description",text:"Description",additional:""},{id:"tags",text:"Tags",additional:""},{id:"actions",text:"Actions",additional:'data-switchable="false" data-width="25" class="actionsTableField"'}],t.visibleColumns)}\n \n \n \n ${e}\n \n \n
    \n `}static getTasks(){let e="";for(const t of V.tasks.sort((e,t)=>e.id-t.id))e+=J.generateTaskCard(t);return e.length<=0&&(e="No tasks defined yet."),`
    ${e}
    `}static getClassesTable(){let e="",t=Y.restoredTableSettings("classesTable");for(const t of V.classes.sort((e,t)=>e.id-t.id))e+=J.generateClassTableEntry(t);return`\n
    \n
    \n \n
    \n \n \n \n ${Y.getTableColumns([{id:"id",text:"ID",additional:'data-sortable="true"'},{id:"tier",text:"Tier",additional:'data-sortable="true"'},{id:"title",text:"Title",additional:'data-sortable="true"'},{id:"subtitle",text:"Subtitle",additional:'data-sortable="true"'},{id:"comment",text:"Comment",additional:""},{id:"description",text:"Description",additional:""},{id:"available",text:"Available On",additional:""},{id:"prerequisite",text:"Prerequisite classes",additional:""},{id:"tasks",text:"Tasks",additional:""},{id:"exams",text:"Exam tasks",additional:""},{id:"actions",text:"Actions",additional:'data-switchable="false" class="actionsTableField"'}],t.visibleColumns)}\n \n \n \n ${e}\n \n \n
    \n `}static getClasses(){let e="";for(const t of V.classes.sort((e,t)=>e.id-t.id))e+=J.generateClassCard(t);return e.length<=0&&(e="No classes defined yet."),`
    ${e}
    `}static getRouletteTable(){let e="",t=Y.restoredTableSettings("rouletteTable");for(const t of V.rouletteOptions)e+=J.generateRouletteTableEntry(t);return`\n
    \n
    \n \n
    \n \n \n \n ${Y.getTableColumns([{id:"id",text:"ID",additional:'data-sortable="true"'},{id:"title",text:"Title",additional:'data-sortable="true"'},{id:"description",text:"Description",additional:""},{id:"probability",text:"Probability",additional:""},{id:"rollPunishment",text:"Roll Punishment",additional:""},{id:"actions",text:"Actions",additional:'data-switchable="false" class="actionsTableField"'}],t.visibleColumns)}\n \n \n \n ${e}\n \n \n
    \n `}static getHelpTable(){let e="",t=Y.restoredTableSettings("helpTable");for(const t of V.help)e+=J.generateHelpTableEntry(t);return`\n
    \n
    \n \n
    \n \n \n \n ${Y.getTableColumns([{id:"id",text:"ID",additional:'data-sortable="true"'},{id:"title",text:"Title",additional:'data-sortable="true"'},{id:"text",text:"Content",additional:""},{id:"actions",text:"Actions",additional:'data-switchable="false" class="actionsTableField"'}],t.visibleColumns)}\n \n \n \n ${e}\n \n \n
    \n `}static getTagsTable(){let e="",t=Y.restoredTableSettings("tagsTable");for(const t of V.tags)e+=J.generateTagTableEntry(t);return`\n
    \n
    \n \n
    \n \n \n \n ${Y.getTableColumns([{id:"tag",text:"Tag",additional:'data-sortable="true" data-switchable="false"'},{id:"actions",text:"Actions",additional:'data-switchable="false" class="actionsTableField"'}],t.visibleColumns)}\n \n \n \n ${e}\n \n \n
    \n `}static getRoulette(){let e="";for(const t of V.rouletteOptions)e+=J.generateRouletteCard(t);return e.length<=0&&(e="No roulette options defined yet."),`
    ${e}
    `}static getHelp(){let e="";for(const t of V.help)e+=J.generateHelpCard(t);return e.length<=0&&(e="No help defined yet."),`
    ${e}
    `}static getTags(){let e="";for(const t of V.tags)e+=J.generateTagCard(t);return e.length<=0&&(e="No tags defined yet."),`
    ${e}
    `}static getMajorsTable(){let e="",t=Y.restoredTableSettings("majorsTable");for(const t of V.majors.sort((e,t)=>e.id-t.id))e+=J.generateMajorTableEntry(t);return`\n
    \n
    \n \n
    \n \n \n \n ${Y.getTableColumns([{id:"id",text:"ID",additional:'data-sortable="true"'},{id:"title",text:"Title",additional:'data-sortable="true"'},{id:"subtitle",text:"Subtitle",additional:'data-sortable="true"'},{id:"description",text:"Description",additional:""},{id:"prerequisite",text:"Prerequisite classes",additional:""},{id:"exams",text:"Exam tasks",additional:""},{id:"actions",text:"Actions",additional:'data-switchable="false" class="actionsTableField"'}],t.visibleColumns)}\n \n \n \n ${e}\n \n \n
    \n `}static getMajors(){let e="";for(const t of V.majors.sort((e,t)=>e.id-t.id))e+=J.generateMajorCard(t);return e.length<=0&&(e="No majors defined yet."),`
    ${e}
    `}static getPunishmentsTable(){let e="",t=Y.restoredTableSettings("punishmentsTable");V.punishments=V.punishments.filter(e=>void 0!==V.tasks.find(t=>t.id===e.punishment));for(const t of V.punishments.sort((e,t)=>e.id-t.id))e+=J.generatePunishmentTableEntry(t);return`\n
    \n
    \n \n
    \n \n \n \n ${Y.getTableColumns([{id:"id",text:"ID",additional:'data-sortable="true"'},{id:"tier",text:"Tier",additional:'data-sortable="true"'},{id:"title",text:"Title",additional:'data-sortable="true"'},{id:"task",text:"Punishment task",additional:""},{id:"actions",text:"Actions",additional:'data-switchable="false" class="actionsTableField"'}],t.visibleColumns)}\n \n \n \n ${e}\n \n \n
    \n `}static getPunishments(){let e="";for(const t of V.punishments.sort((e,t)=>e.id-t.id))e+=J.generatePunishmentCard(t);return e.length<=0&&(e="No punishments defined yet."),`
    ${e}
    `}static getPartnersTable(){let e="",t=Y.restoredTableSettings("partnersTable");for(const t of V.partners.sort((e,t)=>e.id-t.id))e+=J.generatePartnerTableEntry(t);return`\n
    \n
    \n \n
    \n \n \n \n ${Y.getTableColumns([{id:"id",text:"ID",additional:'data-sortable="true"'},{id:"name",text:"Name",additional:'data-sortable="true"'},{id:"description",text:"Description",additional:""},{id:"modifiers",text:"Available modifiers",additional:""},{id:"actions",text:"Actions",additional:'data-switchable="false" class="actionsTableField"'}],t.visibleColumns)}\n \n \n \n ${e}\n \n \n
    \n `}static getPartners(){let e="";for(const t of V.partners.sort((e,t)=>e.id-t.id))e+=J.generatePartnerCard(t);return e.length<=0&&(e="No partners defined yet."),`
    ${e}
    `}static getClubsTable(){let e="",t=Y.restoredTableSettings("clubsTable");for(const t of V.clubs.sort((e,t)=>e.id-t.id))e+=J.generateClubTableEntry(t);return`\n
    \n
    \n \n
    \n \n \n \n ${Y.getTableColumns([{id:"id",text:"ID",additional:'data-sortable="true"'},{id:"tier",text:"Tier",additional:'data-sortable="true"'},{id:"name",text:"Name",additional:'data-sortable="true"'},{id:"comment",text:"Comment",additional:""},{id:"description",text:"Description",additional:""},{id:"modifiers",text:"Available modifiers",additional:""},{id:"actions",text:"Actions",additional:'data-switchable="false" class="actionsTableField"'}],t.visibleColumns)}\n \n \n \n ${e}\n \n \n
    \n `}static getClubs(){let e="";for(const t of V.clubs.sort((e,t)=>e.id-t.id))e+=J.generateClubCard(t);return e.length<=0&&(e="No clubs defined yet."),`
    ${e}
    `}static getModifiersTable(){let e="",t=Y.restoredTableSettings("modifiersTable");for(const t of V.modifiers.sort((e,t)=>e.id-t.id))e+=J.generateModifierTableEntry(t);return`\n
    \n
    \n \n
    \n \n \n \n ${Y.getTableColumns([{id:"id",text:"ID",additional:'data-sortable="true"'},{id:"title",text:"Title",additional:""},{id:"modifier",text:"Modifier",additional:""},{id:"perk",text:"Perk",additional:""},{id:"actions",text:"Actions",additional:'data-switchable="false" class="actionsTableField"'}],t.visibleColumns)}\n \n \n \n ${e}\n \n \n
    \n `}static getModifiers(){let e="";for(const t of V.modifiers.sort((e,t)=>e.id-t.id))e+=J.generateModifierCard(t);return e.length<=0&&(e="No modifiers defined yet."),`
    ${e}
    `}static refreshView(){let e=$(window).scrollTop();n.getSetting("useTableView")?($("#tagsCardContainer").html(Y.getTagsTable()),$("#tasksCardContainer").html(Y.getTasksTable()),$("#classesCardContainer").html(Y.getClassesTable()),$("#majorsCardContainer").html(Y.getMajorsTable()),$("#punishmentsCardContainer").html(Y.getPunishmentsTable()),$("#clubsCardContainer").html(Y.getClubsTable()),$("#partnersCardContainer").html(Y.getPartnersTable()),$("#modifiersCardContainer").html(Y.getModifiersTable()),$("#helpCardContainer").html(Y.getHelpTable()),$("#rouletteCardContainer").html(Y.getRouletteTable())):($("#tagsCardContainer").html(Y.getTags()),$("#tasksCardContainer").html(Y.getTasks()),$("#classesCardContainer").html(Y.getClasses()),$("#majorsCardContainer").html(Y.getMajors()),$("#punishmentsCardContainer").html(Y.getPunishments()),$("#clubsCardContainer").html(Y.getClubs()),$("#partnersCardContainer").html(Y.getPartners()),$("#modifiersCardContainer").html(Y.getModifiers()),$("#helpCardContainer").html(Y.getHelp()),$("#rouletteCardContainer").html(Y.getRoulette())),Y.resetGeneral(),window.scrollTo(0,e),document.querySelector("html").dispatchEvent(new CustomEvent("mappingRefreshed",{}))}static async import(e){const t=s.getInstance(),a={title:t.T("mapping-import-confirmation-header","Import an editable map"),text:t.T("mapping-import-confirmation-conent","Are you sure that you want to import this map? Make sure to only load maps from trusted sources. Proceed at your own risk.")},i={title:t.T("mapping-import-failed-header","Map import failed"),text:t.T("mapping-import-failed-content","During the import for the selected file an error occured. You can check the console for more information.")},n={title:t.T("mapping-file-import-compression-error-header","Compression unavailable"),text:t.T("mapping-file-import-compression-error-content","The file you tried to import is compressed. Sadly a library required to uncompress it is unavailable.")},o={title:t.T("mapping-file-import-aborted-header","Import aborted"),text:t.T("mapping-file-import-aborted-content","The file you tried to import included untrusted code. To protect you the import was aborted.")},r=await _.runImport(e,i,a,n,o);Y.autoSaveReset(),Y.importMapStorage(r)}static importMapStorage(e){Y.reset(),V=e,null==V.help&&(V.help=[]),null==V.rouletteOptions&&(V.rouletteOptions=[]),Y.refreshView()}static async export(){G=V.globalIndex,await _.runExport("pu_map",V)}static prepareModifierForExport(e){const t=Object.assign({},V.modifiers.find(t=>t.id==e));let a="",s={id:""+e,job:"",perk:"",tags:t.tags,modType:t.modType,modVal:t.modVal,perkType:t.perkType,perkVal:t.perkVal};return a=void 0!==t.tags&&t.tags.length>0?t.tags.join(", "):"all","difficulty"==t.modType?(t.modVal<0&&(t.modVal*=-1),s.job=`Increase difficulty for ${a} tasks by ${t.modVal}%.`):"punishment"==t.modType?(s.modVal=1,s.job="Roll a random punishment."):s.job+=""+t.modVal,"difficulty"==t.perkType?(t.perkVal<0&&(t.perkVal*=-1),s.perk=`Decrease difficulty for ${a} tasks by ${t.perkVal}%.`):"skip"==t.perkType?(s.perkVal=1,s.perk="Skip 1 class every day."):"attendance"==t.perkType?(s.perkVal=1,s.perk=`Add an additional attendance for ${a} classes.`):"resetRoulette"==t.perkType?(s.perkVal=1,s.perk="Reset roulette and roll again."):s.perk=""+t.perkVal,s}static prepareTaskForExport(e){const t=Object.assign({},V.tasks.find(t=>t.id==e)),a={id:""+e,task:t.description,tags:t.tags,parameters:{}};for(const t of V.params.filter(t=>t.taskId==e))a.parameters[t.id]={value:t.value,unit:t.valueType,timerInfo:t.description,applyMultiplier:t.applyMultiplier,spawnTimer:t.spawnTimer,startTimerAutomatically:t.startTimerAutomatically,provideCounter:t.provideCounter,hiddenTask:t.hiddenTask,punTier:t.punTier,punishTime:t.punishTime,punishTimeMinutes:t.punishTimeMinutes};return a}static async directExportTask(e){let t=Y.prepareTaskForExport(e);t.id=t.id+"_CUST",await _.runExport("pu_task",t)}static exportPlayableModule(e){let t={mapId:V.mapId||Y.uuidv4(),moduleId:$("#customExportModal .customExportModal-moduleId").val(),general:{title:$("#customExportModal .customExportModal-moduleTitle").val(),description:$("#customExportModal .customExportModal-moduleDescription").val()},majors:$("#customExportModal select.customExportModal-majors").val().map(e=>Number.parseInt(e)),classes:$("#customExportModal select.customExportModal-classes").val().map(e=>Number.parseInt(e)),clubs:$("#customExportModal select.customExportModal-clubs").val().map(e=>Number.parseInt(e)),partners:$("#customExportModal select.customExportModal-partners").val().map(e=>Number.parseInt(e)),punishments:$("#customExportModal select.customExportModal-punishments").val().map(e=>Number.parseInt(e)),rouletteOptions:$("#customExportModal select.customExportModal-rouletteOptions").val().map(e=>Number.parseInt(e))};if(void 0===t.moduleId||t.moduleId.length<=0)n.showToast("Invalid module ID","Please provide a module ID.","warning");else if(!t.general||void 0===t.general.title||t.general.title.length<=0)n.showToast("Invalid Title","Please provide a title.","warning");else{$("#customExportModal").is(":visible")&&$("#customExportModal").modal("hide");for(const e of V.majors.filter(e=>t.majors.includes(e.id)))t.classes=t.classes.concat(e.prerequisites);for(const e of t.classes)t.classes=t.classes.concat(Y.recursiveGetPrerequisites(e));t.classes=[...new Set(t.classes)],e(Y.getPlayable(t))}}static getPlayableImage(e){return void 0!==e.imageUrl&&e.imageUrl.length>0?e.imageUrl:void 0!==e.image&&e.image.length>0?e.image:n.extendDistPath()+"img/unknown.jpg"}static recursiveGetPrerequisites(e){let t=[];const a=V.classes.find(t=>t.id==e);if(!a)return t;t=t.concat(a.prerequisites);for(const e of t)t=t.concat(Y.recursiveGetPrerequisites(e));return t}static getPlayable(e){let t={mapId:V.mapId||Y.uuidv4(),general:V.general,classes:{},majors:{},partners:{},clubs:{},punishments:{},rouletteOptions:{}};void 0!==e&&(t.mapId=e.mapId,t.moduleId=e.moduleId,t.general=e.general),t.general.help=[],void 0!==V.help&&V.help.length>0&&(t.general.help=t.general.help.concat(V.help));for(const a of V.rouletteOptions.filter(t=>void 0===e||e.rouletteOptions.includes(t.id)))t.rouletteOptions[a.id]={id:""+a.id,type:"roulette_option",title:a.title,description:a.description,probability:a.probability,rollPunishment:a.rollPunishment};for(const a of V.classes.filter(t=>void 0===e||e.classes.includes(t.id))){t.classes[a.id]={id:""+a.id,type:"class",name:a.title,name2:a.subtitle,comment:a.comment,prerequisites:a.prerequisites,days:a.days,description:a.description,tier:a.tier,image:Y.getPlayableImage(a),tasks:{},taskListSize:a.taskListSize,disableBonusAttendance:a.disableBonusAttendance};for(const e of a.tasks)t.classes[a.id].tasks[e]=Y.prepareTaskForExport(e);for(const e of a.exams)t.classes[a.id].tasks[e]=Y.prepareTaskForExport(e),t.classes[a.id].tasks[e].isExam=!0}for(const a of V.majors.filter(t=>void 0===e||e.majors.includes(t.id))){t.majors[a.id]={id:""+a.id,type:"major",name:a.title,name2:a.subtitle,description:a.description,prerequisites:a.prerequisites,image:Y.getPlayableImage(a),tasks:{}};for(const e of a.exams)t.majors[a.id].tasks[e]=Y.prepareTaskForExport(e),t.majors[a.id].tasks[e].isExam=!0}for(const a of V.partners.filter(t=>void 0===e||e.partners.includes(t.id))){t.partners[a.id]={id:""+a.id,type:"partner",name:a.name,name2:"",tier:"1",description:a.description,image:Y.getPlayableImage(a),perks:{}};for(const e of a.modifiers)t.partners[a.id].perks[e]=Y.prepareModifierForExport(e)}for(const a of V.clubs.filter(t=>void 0===e||e.clubs.includes(t.id))){t.clubs[a.id]={id:""+a.id,type:"club",name:a.name,comment:a.comment,tier:a.tier,description:a.description,image:Y.getPlayableImage(a),perks:{}};for(const e of a.modifiers)t.clubs[a.id].perks[e]=Y.prepareModifierForExport(e)}for(const a of V.punishments.filter(t=>void 0===e||e.punishments.includes(t.id)))t.punishments[a.id]={id:""+a.id,type:"punishment",name:a.title,tier:a.tier,image:Y.getPlayableImage(a),tasks:{}},t.punishments[a.id].tasks[a.punishment]=Y.prepareTaskForExport(a.punishment);return t}static openImageSelection(e={id:"",image:"",imageUrl:""},t){let a="#imageModal"+e.id;$("#modalContainer").append(J.generateImageModal(e,t)),$(a).modal({keyboard:!0}).modal("show").on("keydown",Y.handleModalKeyDown).on("shown.bs.modal",(function(){})).on("hidden.bs.modal",(function(e){Y.refreshView(),$(a).modal("dispose").remove()})),Y.handleImageSelection(a)}static exportPlayableWithCustomImage(e){const t={id:Y.uuidv4(),image:"",imageUrl:""};Y.openImageSelection(t,t=>{let a="#imageModal"+t;const s=n.dataURLtoFile($(a+" .image-preview").attr("src"),"example.jpg");_.runExport("pu_game_map",e,s),$(""+a).is(":visible")?$(""+a).modal("hide"):Y.refreshView()})}static async exportPlayable(e){await _.runExport("pu_game_map",e)}static uuidv4(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16))}static resetButton(){n.requestUserConfirmation("Reset current map","Are you sure that you want to reset the current map? Make sure you exported your progress!",()=>{Y.autoSaveReset(),Y.reset()})}static gotoFullPage(){n.requestUserConfirmation("Goto Mapping Tool","Do you want to open the Mapping Tool in a separat tab? It's not recommended that you bookmark the Mapping Tool by itself, since you will not receive any updates!",()=>{window.open(window.location.href,"_blank")})}static reset(){V={version:1,mapId:Y.uuidv4(),globalIndex:0,general:{},tags:[],majors:[],classes:[],tasks:[],params:[],punishments:[],clubs:[],partners:[],modifiers:[],help:[],rouletteOptions:[]},Y.refreshView()}static isChanged(){return V.globalIndex>0&&G0&&this.inAppNavigation(`${e.path[0].location.search}${e.path[0].location.hash}`)}.bind(this)}static getInstance(){return void 0===this.instance&&(this.instance=new _),this.instance}static get navigationData(){const e=s.getInstance();return{home:{id:"home",text:e.T("navigation-home","Home"),enabled:!0,isInNav:!1,autoHideAllowed:!0,handledBy:N,requirements:[]},majors:{id:"majors",text:e.T("navigation-majors","Majors"),enabled:!0,isInNav:!0,autoHideAllowed:!0,handledBy:C,requirements:["map"]},major:{id:"major",text:e.T("navigation-major","Major"),enabled:!0,isInNav:!1,autoHideAllowed:!0,handledBy:M,requirements:["map"]},classes:{id:"classes",text:e.T("navigation-classes","Classes"),enabled:!0,isInNav:!0,autoHideAllowed:!0,handledBy:P,requirements:["map","major"]},class:{id:"class",text:e.T("navigation-class","Class"),enabled:!0,isInNav:!1,autoHideAllowed:!0,handledBy:A,requirements:["map","major"]},clubs:{id:"clubs",text:e.T("navigation-clubs","Clubs"),enabled:!0,isInNav:!0,autoHideAllowed:!0,handledBy:m,requirements:["map","major"]},club:{id:"club",text:e.T("navigation-club","Club"),enabled:!0,isInNav:!1,autoHideAllowed:!0,handledBy:g,requirements:["map","major"]},partners:{id:"partners",text:e.T("navigation-partners","Partners"),enabled:!0,isInNav:!0,autoHideAllowed:!0,handledBy:v,requirements:["map","major"]},partner:{id:"partner",text:e.T("navigation-partner","Partner"),enabled:!0,isInNav:!1,autoHideAllowed:!0,handledBy:b,requirements:["map","major"]},punishments:{id:"punishments",text:e.T("navigation-punishments","Punishments"),enabled:!0,isInNav:!0,autoHideAllowed:!0,handledBy:y,requirements:["map","major"]},punishment:{id:"punishment",text:e.T("navigation-punishment","Punishment"),enabled:!0,isInNav:!1,autoHideAllowed:!0,handledBy:w,requirements:["map","major"]},schedule:{id:"schedule",text:e.T("navigation-schedule","Schedule"),enabled:!0,isInNav:!0,autoHideAllowed:!0,handledBy:R,requirements:["map","major"]},progress:{id:"progress",text:e.T("navigation-progress","Progress"),enabled:!0,isInNav:!0,autoHideAllowed:!0,handledBy:k,requirements:["map","major"]},roulette:{id:"roulette",text:e.T("navigation-roulette","Roulette"),enabled:!0,isInNav:!0,autoHideAllowed:!0,handledBy:q,requirements:["map","major","rouletteEnabled"]},help:{id:"help",text:e.T("navigation-help","Help"),enabled:!0,isInNav:!0,autoHideAllowed:!0,handledBy:j,requirements:["map"]},settings:{id:"settings",text:e.T("navigation-settings","Settings"),enabled:!0,isInNav:!0,autoHideAllowed:!0,handledBy:D,requirements:[]},mapping:{id:"mapping",text:e.T("navigation-mapping","Mapping"),enabled:!0,isInNav:!1,autoHideAllowed:!1,handledBy:J,requirements:[]},graduated:{id:"graduated",text:e.T("navigation-graduated","Graduated"),enabled:!0,isInNav:!1,autoHideAllowed:!0,handledBy:F,requirements:["map","majorFinished"]},disclaimer:{id:"disclaimer",text:e.T("navigation-disclaimer","Disclaimer"),enabled:!0,isInNav:!1,autoHideAllowed:!1,handledBy:U,requirements:[]}}}setParams(e){const t=new URLSearchParams(e.replace(/#.*?$/,""));this.allParams={};for(const[e,a]of t)this.allParams[e]=a}get params(){return this.allParams}hasParameter(e){return this.allParams.hasOwnProperty(e)}getParameter(e){return this.allParams[e]}navigationCheck(e){if(!this.params)return;const t=this.hasParameter("pageType")?this.getParameter("pageType"):"getView",a=e.expectedParameters[t];if(a){if(!(a.length>0))return $("main").html(e[t]()),void this.scrollToAnchor();{let s={};if(a.forEach(e=>{this.params.hasOwnProperty(e)&&(s[e]=this.params[e])}),a.length===Object.keys(s).length)return $("main").html(e[t](s)),void this.scrollToAnchor();this.navigateBack()}}else this.navigateBack()}navigatePage(e){if("back"===e)return void this.navigateBack();const t=_.navigationData[e];t&&t.enabled&&this.requirementsMet(t.requirements)?this.navigationCheck(t.handledBy):_.navigate("?page=home")}inAppNavigation(e){_.checkForUnsavedChanges(()=>{wi.reset(),u.getInstance().resetTaskIntervals(),this.setParams(e);const t=this.getParameter("page"),a=this.getParameter("pageType");if(!(n.getAcceptedDisclaimer()||this.hasParameter("page")&&"disclaimer"===t)){let e="";return window.location.search.length>0&&(e="&redirect="+encodeURIComponent(btoa(window.location.search))),void _.navigate("?page=disclaimer"+e)}$("#nav-auto").html(this.getNavigationBarHtml()),this.hasParameter("page")?($("#nav-"+t).addClass("active"),window.location.search.includes("page=back")||a&&"getView"!=a||(e!==`${window.location.search}${window.location.hash}`?window.history.pushState(_.getHistoryObj(e),t,e):e==`${window.location.search}${window.location.hash}`&&window.history.replaceState(_.getHistoryObj(e,!0),t,e)),this.navigatePage(t)):_.navigate("?page=home"),document.querySelector("html").dispatchEvent(new CustomEvent("navigationFinished",{})),n.getTutorial().includes(t.concat(";"))||H.startTour(t),$("#customCarousel").on("slid.bs.carousel",(function(e){let t=`${window.location.search}#slide${e.to}`;window.history.pushState(_.getHistoryObj(t),null,t)}))})}navigateBack(){_.navigateBack()}scrollToAnchor(){_.scrollToAnchor()}getNavigationBarHtml(){return _.getNavigationBarHtml()}requirementsMet(e){return _.requirementsMet(e)}getCreditsHtml(){return _.getCreditsHtml()}reload(){_.reload()}inAppReload(){_.inAppReload()}static getHistoryObj(e,t){if(t&&window.history.state&&window.history.state.url&&window.history.state.prevUrl)return{url:window.history.state.url,prevUrl:window.history.state.url.prevUrl,scrollHeight:$(window).scrollTop(),scrollHeightNew:$(window).scrollTop()};{let t=0;return window.history.state&&window.history.state.scrollHeightNew&&window.history.state.scrollHeightNew>0&&(t=window.history.state.scrollHeightNew),{url:e,prevUrl:`${window.location.search}${window.location.hash}`,scrollHeight:t,scrollHeightNew:$(window).scrollTop()}}}static getCreditsHtml(){const e=S.collectedCredits;return!e||e<=0?"":``}static getNavigationBarHtml(){let e=""+_.getCreditsHtml(),t=_.navigationData,a=0;for(let s in t){let i=t[s];i.enabled&&(i.isInNav&&_.requirementsMet(i.requirements)&&(e+=` `,a++))}return a<=0&&$("nav.navbar .navbar-toggler").addClass("collapse"),e}static requirementsMet(e){if(!e||null==e||e.length<=0)return!0;for(let t of e){if("major"===t&&!I.isAnyMajorActive())return!1;if("map"===t&&!u.getInstance().isMapLoaded)return!1;if("rouletteEnabled"===t&&!p.rouletteData)return!1;if("majorFinished"===t&&!u.getInstance().anyMajorFinished)return!1}return!0}static scrollToAnchor(){if(window.history.state&&window.history.state.scrollHeight&&window.history.state.scrollHeight>0)window.scrollTo(0,window.history.state.scrollHeight);else{{const t=window.location.hash;if(t.length>0){let a=t.match(/^#slide(\d)+$/);if(null===a){var e=$(""+t);return void $("html,body").animate({scrollTop:e.offset().top},"slow")}return void $("#customCarousel").carousel(Number.parseInt(a[1]))}}window.scrollTo(0,0)}}static checkForUnsavedChanges(e){const t=u.getInstance();t.wasSavegameChanged?t.setSavegame(e):e()}static reload(){_.checkForUnsavedChanges(()=>{location.reload()})}static inAppReload(){_.getInstance().inAppNavigation(window.location.search)}static replaceHistory(e){try{window.history.replaceState(_.getHistoryObj(e),null,e)}catch(e){console.error("failed to update history")}}static navigateBack(){_.checkForUnsavedChanges(()=>{null!==window.history.state&&void 0!==window.history.state.prevUrl?_.getInstance().inAppNavigation(window.history.state.prevUrl):history.back()})}static navigate(e){_.checkForUnsavedChanges(()=>{window.location.href=e})}static removeModuleFromMapId(e){return e.replace(/\(.*?\)/gm,"")}static async getSavegameData(e){if(n.shouldExportComplete()){const t=u.getInstance().mapId,a=u.getInstance().subMaps;let s={mapId:t,primaryMapData:{},subMapData:[],subMaps:a,saveGame:u.getInstance().getSavegame(),settings:n.getSettings()};const i=()=>new Promise((e,t)=>{u.getDBInstance().getMaps(e,t)});try{const e=await i();for(const i of e)i.mapData.mapId===t?s.primaryMapData=i.mapData:a.includes(i.mapData.mapId)&&s.subMapData.push(i.mapData);s.primaryMapData.mapId=_.removeModuleFromMapId(s.primaryMapData.mapId);for(const e of s.subMapData)e.mapId=_.removeModuleFromMapId(e.mapId);return s}catch(t){throw n.showToast(e.title,e.text,"danger"),"loading maps failed"}}return{mapId:u.getInstance().mapId,saveGame:u.getInstance().getSavegame()}}static async runClipboardExport(e,t={title:"",text:""},a={title:"",text:""},s={title:"",text:""}){const i=async()=>{try{const a=await _.getSavegameData(t);return`${e}:${n.compressJSObjectToString(a)}`}catch(e){throw e}};try{const e=new ClipboardItem({"text/plain":i().then(e=>new Blob([e],{type:"text/plain"}))});return await navigator.clipboard.write([e]),void n.showToast(a.title,a.text,"success")}catch(e){try{await navigator.clipboard.writeText(await i()),n.showToast(a.title,a.text,"success")}catch(t){n.showToast(s.title,`${s.text} [${e}][${t}]`,"danger")}}}static async runClipboardImport(e,t={title:"",text:""},a={title:"",text:""},s={title:"",text:""}){try{a&&await(i=a.title,o=a.text,new Promise(e=>{n.requestUserConfirmation(i,o,e)}));let t=await navigator.clipboard.readText();if(!t)throw"Empty file.";let r=t.split(":");if(2!==r.length)throw"Invalid clipboard";if(r[0]!==e)throw"Invalid import action";let l=n.decompressJsonFromString(r[1]);if(n.hasScript(l))throw n.showToast(s.title,s.text,"danger"),"Script found!";return JSON.parse(l)}catch(e){throw n.showToast(t.title,t.text),"Failed to import the clipboard."}var i,o}static async runExport(e,t,a){const s=n.isCompleteSavegame(t);"pu_save"==e&&s&&(e="pu_complete");const i=o.exportOptions[e];let r,l,d,c,p;if(n.getSetting("useImageExport")){r=i.imageExportExtension,a||(a=await n.loadImageFile(`/${n.extendDistPath()}img/${i.srcImage}.jpg`));let e=await n.encryptExportImage(t,a);l=e.ImageType,c=new Blob([e.imageData],{type:e.ImageType})}else t=n.shouldCompress()||s?n.compressJSObjectToString(t):JSON.stringify(t),r=i.textExportExtension,l=n.shouldCompress()||s?o.exportCompressedType:o.exportTextType,d=t,c=new Blob([t],{type:l});let m=n.getNow().format("YYYY-MM-DD_HH-mm"),g=`${i.exportFilenamePrefix}${m}.${r}`,h="";n.getSetting("useBase64Export")?(h=`download="${g}"`,p=`data:${l};base64,${btoa(d)}`):n.getSetting("useDynamicExport")?(p="/dynamic/"+g,u.getInstance().setExportStorageItem(g,c,l)):(h=`download="${g}"`,p=window.URL.createObjectURL(c));let v=$(``);$("body").append(v),v[0].click(),setTimeout(function(){window.URL.revokeObjectURL(p),v.remove()}.bind(this),5e3)}static async runImport(e,t={title:"",text:""},a={title:"",text:""},s={title:"",text:""},i={title:"",text:""}){let r=e.target.files[0];if(!r)return;e.target.value="";try{let e;if(a&&await(c=a.title,u=a.text,new Promise(e=>{n.requestUserConfirmation(c,u,e)})),o.isImage(r.type)){if(!n.canCompress())throw n.showToast(s.title,s.text,"warning"),"Compression not available!";if(e=await(l=r,d=!0,new Promise((e,t)=>{const a=new FileReader;a.onload=t=>e(d?n.decryptExportImage(t.target.result):new Uint8Array(t.target.result)),a.onerror=e=>t(e),a.readAsArrayBuffer(l)})),n.hasScript(e))throw n.showToast(i.title,i.text,"danger"),"Script found!";return JSON.parse(e)}if(e=await(e=>new Promise((t,a)=>{const s=new FileReader;s.onload=e=>t(e.target.result),s.onerror=e=>a(e),s.readAsText(e)}))(r),!e)throw"Empty file.";if(n.hasScript(e))throw n.showToast(i.title,i.text,"danger"),"Script found!";if("string"==typeof e&&e.startsWith("{"))return JSON.parse(e);if(!n.canCompress())throw n.showToast(s.title,s.text,"warning"),"Compression not available!";if(e=n.decompressJsonFromString(e),n.hasScript(e))throw n.showToast(i.title,i.text,"danger"),"Script found!";return JSON.parse(e)}catch(e){throw n.showToast(t.title,t.text),"Failed to import the selected file."}var l,d,c,u}}$(document).ready(()=>{!function(e){const t=document.querySelectorAll(`link[title="${e}"][rel="stylesheet"]`);(!e||e.length<=0||t.length<=0)&&(e="darkly");const a=document.querySelectorAll('link[title][rel="stylesheet"]');for(const t of a)t.title==e?t.disabled=!1:t.disabled=!0;const s=o.styles[e],i=document.querySelector("body nav.navbar");if(i)for(let e=0;e{$('[data-toggle="popover"]').popover({html:!0,placement:"auto",delay:{show:0,hide:100}}).click((function(e){setTimeout((function(){let t=void 0;(t=e.currentTarget.attributes["aria-describedby"])&&$("#"+t.value).popover("hide")}),5e3)})),n.showScheduledToast(),x.checkForFinishedTasks(),function(){let e=function(){$("nav.navbar .navbar-toggler").is(":visible")&&$("nav.navbar .navbar-collapse").collapse("hide")};document.querySelectorAll("nav.navbar li a").forEach(t=>{t.addEventListener("click",e)})}()});let t=function(){_.getInstance(),x.checkForSkippedClasses(),$("#backToTop").on("click",()=>{n.scrollBackToTop()}),window.getFileData=async function(e){const t=u.getInstance().getExportStorageItem(e);return t||{error:"Unknown filename"}},window.addEventListener("beforeunload",(function(e){_.checkForUnsavedChanges(()=>{})})),n.getSetting("enableAutoHide")&&_.navigationData[_.getInstance().getParameter("page")].autoHideAllowed&&function(){var e;function t(){document.body.className="hidden"}function a(){document.body.className="",clearTimeout(e),e=setTimeout(t,60*o.autoHideTimer*1e3)}window.onload=a,window.onmousemove=a,window.onmousedown=a,window.ontouchstart=a,window.onclick=a,window.onkeypress=a,window.addEventListener("scroll",a,!0)}(),n.getSetting("enableBackToTop")&&window.addEventListener("scroll",(function(e){document.body.scrollTop>100||document.documentElement.scrollTop>100?$("#backToTop").fadeIn():$("#backToTop").fadeOut()})),n.getSetting("autoExtendCarousel")&&window.addEventListener("scroll",(function(e){$("#customCarousel").length>0&&document.documentElement.scrollTop==document.documentElement.scrollHeight-window.innerHeight&&($("#customCarousel").carousel("next"),window.scrollTo(0,0))}))};try{u.getInstance(t)}catch(e){console.error(e)}})}]); \ No newline at end of file +!(function (e) { + var t = {}; + function a(s) { + if (t[s]) return t[s].exports; + var i = (t[s] = { i: s, l: !1, exports: {} }); + return (e[s].call(i.exports, i, i.exports, a), (i.l = !0), i.exports); + } + ((a.m = e), + (a.c = t), + (a.d = function (e, t, s) { + a.o(e, t) || Object.defineProperty(e, t, { enumerable: !0, get: s }); + }), + (a.r = function (e) { + ("undefined" != typeof Symbol && + Symbol.toStringTag && + Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }), + Object.defineProperty(e, "__esModule", { value: !0 })); + }), + (a.t = function (e, t) { + if ((1 & t && (e = a(e)), 8 & t)) return e; + if (4 & t && "object" == typeof e && e && e.__esModule) return e; + var s = Object.create(null); + if ( + (a.r(s), + Object.defineProperty(s, "default", { enumerable: !0, value: e }), + 2 & t && "string" != typeof e) + ) + for (var i in e) + a.d( + s, + i, + function (t) { + return e[t]; + }.bind(null, i), + ); + return s; + }), + (a.n = function (e) { + var t = + e && e.__esModule + ? function () { + return e.default; + } + : function () { + return e; + }; + return (a.d(t, "a", t), t); + }), + (a.o = function (e, t) { + return Object.prototype.hasOwnProperty.call(e, t); + }), + (a.p = ""), + a((a.s = 0))); +})([ + function (e, t, a) { + "use strict"; + (a.r(t), + a.d(t, "navigationHelper", function () { + return _; + })); + class s { + static get availableLanguages() { + return [{ id: "zh", text: "汉语", dict: i, moment: "zh-cn" }]; + } + constructor(e) { + ((this.selectedLanguage = s.availableLanguages.find((t) => t.id == e)), + this.selectedLanguage && + (n.setSetting("language", e), + moment.locale(this.selectedLanguage.moment))); + } + static createInstance(e) { + (void 0 !== this.instance && + (null == this.instance.selectedLanguage + ? "en" === e + : this.instance.selectedLanguage.id === e)) || + (this.instance = new s(e)); + } + static getInstance() { + return this.instance; + } + T(e, t, a = []) { + let s = ""; + return ( + (s = + null == this.selectedLanguage + ? t + : this.selectedLanguage.dict[e] || t), + a.reduce((e, t) => e.replace(/%s/, t), s) + ); + } + } + const i = { + credits: "学分", + prerequisites: "先修课程", + "tier-navigation": "类别", + "navigation-home": "主页", + "navigation-majors": "专业", + "navigation-major": "专业", + "navigation-classes": "课程", + "navigation-class": "课程", + "navigation-clubs": "社团", + "navigation-club": "社团", + "navigation-partners": "基/姬友", + "navigation-partner": "基/姬友", + "navigation-punishments": "处分", + "navigation-punishment": "处分", + "navigation-schedule": "日程", + "navigation-progress": "进度", + "navigation-roulette": "轮盘", + "navigation-help": "帮助", + "navigation-settings": "设置", + "navigation-mapping": "地图", + "navigation-graduated": "已毕业", + "navigation-disclaimer": "免责条款", + "scheduled-toast-error-header": "第三方cookies被禁止", + "scheduled-toast-error-content": + "请切换至完整的地图工具网页,或在浏览器设置里允许它。", + "user-confirmation-yes": "确定", + "user-confirmation-cancel": "取消", + "user-confirmation-close": "关闭", + "update-notification": "后台版本已更新,点击刷新。", + "time-day": "天", + "time-days": "天", + "time-day-binding-no-minutes": " ", + "time-day-binding": " ", + "time-hour": "小时", + "time-hours": "小时", + "time-hours-binding": " ", + "time-minute": "分钟", + "time-minutes": "分钟", + "time-minutes-binding": " ", + "time-second": "秒", + "time-seconds": "秒", + "time-less-then-a-minute": "不足 1 分钟。", + "home-feedback-title": "用户反馈", + "home-feedback-description": + '只需要轻轻点击一下,发送一个"心跳信号"给作者,Ta就能知道一位陌生的好朋友还默默支持、陪伴着Ta。', + "home-feedback-discord": "如果你想加入PU的Discord讨论组 - 请点击这里。", + "home-welcome-header": "Project University欢迎你的加入", + "home-welcome-info-1": + "在这里,你可以创建属于自己的大学或者加入别人已经建好的大学。由于本网站不会提供关于玩法的任何内容,因此你需要自己导入一张PU-map地图文件。该文件由玩家自行创建,用于提供具体的玩法。本网站完全运行在玩家自己的设备上,网站的后台服务器不会储存任何私人内容,因此请确保存档进度的安全,请确保导入内容的安全性,请确保人身安全和法律安全。", + "home-welcome-info-2": + "在这里,你的大学生活将大致包括如下内容:选择专业、选择课程和进行日常任务。如果你没有达到任务的要求,你将受到处分。你可以通过完成课程考试的方式来获得相应的学分和解锁更难的课程。学完所有的专业必修课并获得足够的学分之后,你就可以尝试毕业,参加最后的专业结业考试。课程之余,你还可以参加社团或者勾搭基/姬友来改变特定课程的难度或获得福利。", + "home-welcome-info-3": + "赶紧导入一张PU-map地图,并选择一个专业吧!你的选课学习之旅就此开启!", + "home-load-map-button": "导入地图", + "home-create-map-button": "创建地图", + "home-changelog-header": "更新日志", + "home-show-changelogs-button": "以前的更新日志", + "home-external-sources-header": "外部资源支持", + "home-disclaimer-link": + "如果您想再次确认“免责条款和数据保护”的内容, 请单击此处。", + "home-special-thanks-header": "特别鸣谢", + "tour-navigation-close": "关闭", + "tour-navigation-next": "下一条", + "tour-majors-0-title": "菜单", + "tour-majors-0-text": "这里是主菜单,可以在不同的选项卡之间切换。", + "tour-majors-1-title": "折叠菜单", + "tour-majors-1-text": + "在移动设备上主菜单会折叠,点击这里折叠或展开主菜单。", + "tour-majors-2-title": "专业", + "tour-majors-2-text": "每张专业卡片对应一个可选专业。", + "tour-majors-3-title": "详情", + "tour-majors-3-text": "点击图片查看该专业的具体内容。", + "tour-majors-4-title": "选项", + "tour-majors-4-text": "这里会出现选专业、退选专业的选项。", + "tour-majors-5-title": "内容一览", + "tour-majors-5-text": "按下这个信息按钮会为你展示该专业的具体内容。", + "tour-majors-6-title": "卡片信息", + "tour-majors-6-text": "卡片底端将展示该专业的简要描述。", + "tour-classes-0-title": "课程难度", + "tour-classes-0-text": "点击查看不同难度的课程。", + "tour-classes-1-title": "课程难度", + "tour-classes-1-text": + "点击此处或左右滑动来查看不同难度的课程,从左至右难度依次增加。", + "tour-classes-2-title": "课程", + "tour-classes-2-text": "每张卡片对应一个可选课程。", + "tour-classes-3-title": "图片", + "tour-classes-3-text": "点击图片查看该课程的具体内容。", + "tour-classes-4-title": "选项", + "tour-classes-4-text": "这里会出现选课、退课和重修的选项。", + "tour-classes-5-title": "内容一览", + "tour-classes-5-text": "按下这个信息按钮会为你展示该课程的具体内容。", + "tour-classes-6-title": "卡片信息", + "tour-classes-6-text": "卡片底端将展示该课程的简要描述。", + "map-submap-failed-header": "设置子地图失败", + "map-submap-failed-content": + "PU无法储存子地图。这可能由于你的浏览器开启了匿名模式访问。", + "map-save-failed-header": "进度保存失败", + "map-save-failed-content": + "PU无法保存你的进度。这可能由于你的浏览器开启了匿名模式访问。", + "map-save-incompatible": "存档与当前主地图不兼容。", + "map-save-empty": "存档为空。", + "map-import-confirmation-header": "导入地图", + "map-import-confirmation-conent": + "确定要导入这张地图吗?请确保地图来源的可靠性,否则后果自负。", + "map-import-script-header": "导入中止", + "map-import-script-content": + "该地图文件内包含不安全的信息。出于安全性考虑,我们中止了导入。", + "map-import-submap-popup": "导入子地图", + "map-import-map-popup": "地图导入成功", + "task-time-without-mod-info": "原时长 %s。", + "task-punishment-without-mod-info": "原数量 %s。", + "task-random-punishment": "随机", + "task-param-without-mod-info": "原数量 %s。", + "task-perk-activated-header": "奖励处分已获得", + "task-perk-activated-content": "你随机得到了 1 项处分。", + "task-roulette-reset-header": "轮盘重置奖励", + "task-roulette-reset-content": "轮盘已经重置了,再去碰碰运气吧。", + "task-skip-perk-header": "请假条奖励", + "task-skip-perk-single-content": "请假条已获得。", + "task-skip-perk-multi-content": "%s 张请假条已获得", + "task-punishment-drawn-header": "任务处分已获得", + "task-punishment-drawn-content": + "根据任务的要求,你随机得到了 1 项 %s处分。", + "task-punishment-header": "受到处分", + "task-punishment-custom-task": "自定义任务失败!", + "task-punishment-task": "日常任务失败!", + "task-punishment-exam": "课程考试失败!", + "task-punishment-thesis": "毕业考核失败!", + "task-punishment-drawn": "你获得了 1 项处分!", + "task-punishments-drawn": "你获得了 %s 项处分!", + "task-failed-header": "任务失败", + "task-failed-content": "你的 %s 任务完成失败!", + "task-custom-task-finished-header": "自定义任务完成", + "task-custom-task-finished-content": "你完成了 1 项自定义任务!", + "task-class-finished-header": "课程通过", + "task-class-finished-content": "恭喜你通过了 %s 课程!", + "task-finished-header": "任务完成", + "task-finished-content": "你完成了 %s 的课程任务!", + "task-major-finished-header": "专业毕业", + "task-major-finished-content": "你从 %s 专业中毕业了!", + "task-punishment-finished-header": "处分结束", + "task-punishment-finished-content": "对你的处分内容 %s 已经结束!", + "task-manual-counter-button": "剩余 %s 次", + "task-manual-finish-button": "完成", + "task-finish-by-text": "本任务需在%s完成。", + "task-fail-button": "失败", + "task-time-left-info": "剩余时长", + "task-resume-button": "继续", + "task-pause-button": "暂停", + "task-punish-button": "惩罚", + "task-status-paused": "任务已暂停", + "task-status-active": "任务进行中", + "task-active-task": "进行中的任务", + "task-class-missed-header": "翘课", + "task-class-missed-content": "你因为翘掉一节课而受到 1 项处分!", + "task-fail-header": "任务失败", + "task-fail-content": "确定要放弃该任务或任务失败了吗?", + "graduated-certificate-header": "毕业证书:%s", + "graduated-congratulations-header": "恭喜你从 %s 专业中毕业。", + "graduated-congratulations-1": + "经过不懈努力之后,恭喜你离自己梦中的样子更近了一步。", + "graduated-congratulations-2": + "为了你的梦想,你依然还有很多能去做的。再选择一个专业或者换一张地图继续努力吧~", + "graduated-congratulations-3": + "作为已经毕业的学长/学姐,你也可以为学弟学妹们准备一些属于你的原创内容,让ta们的校园生活更加丰富多彩。", + "graduated-table-class": "课程", + "graduated-table-knowledge-points": "出勤点", + "graduated-table-grade": "绩点", + "progress-active-major": "你的当前专业", + "progress-completed-classes": "课程完成情况", + "progress-active-classes": "正在学习", + "progress-active-classes-no": "没有正在学习中的课程。", + "progress-mandatory-classes": "必修课程", + "progress-mandatory-classes-no": "没有必修课程。", + "progress-finished-majors": "已毕业专业", + "progress-finished-majors-no": "还没有从任何专业中毕业。", + "progress-finished-classes": "已通过课程", + "progress-finished-classes-no": "还没有通过任何课程。", + "progress-credits-info": "只有通过了课程考试,你才能获得学分。", + "progress-punishments-endured": "尚未结束的处分", + "progress-thesis-button": "选择结业考核内容", + "schedule-active-tasks-header": "进行中的任务", + "schedule-active-punishments-header": "执行中的处分", + "schedule-active-punishments-info": + "在处分执行完毕前,禁止参加课程考试和毕业考核。", + "schedule-todays-classes-header": "今日课程", + "schedule-clubs-partner-header": "社团 & 基/姬友", + "schedule-weekly-header": "本周课表", + "schedule-easy-mode-info": + '当前是"简单模式",你可以随意补习各门课程,翘掉补习不会受处分。', + "schedule-weekend-info": + "你在周末可以随意补习各门课程,翘掉补习不会受处分。", + "schedule-no-class-left": "今天的课已经上完了,明天再来吧。", + "schedule-no-class-left-add": "今天的课已经上完了,你想多选一门课吗?", + "schedule-no-classes": "无课程", + "schedule-feedback-header": "用户反馈请求", + "schedule-feedback-1": + '同学你好~近一个月原作者收到的"心跳信号"急剧减少,这让Ta十分扫兴。如果一直这样下去,Ta可能会放弃这个项目的维护。先谢过你一直以来对本项目的支持,并由衷地希望你能够享受你的大学生活。由于原作者十分注重各位同学的隐私保护,所以Ta不会从本网站上获取用户的任何信息,但Ta又想知道自己的大学里还有多少学生,所以需要各位提供主动的信息反馈。只需要简单地点击这条%sbitly链接%s,就可以让Ta知道你还在这里上课。', + "schedule-feedback-2": + "此外,Ta还为这个项目开设了一个discord讨论组(英文),用于反馈用户体验和分享用户自己制作的地图,欢迎你的%s加入%s", + "schedule-feedback-3": '这条"心跳信号"请求每个月会显示一次。', + "schedule-import-task-error-header": "任务导入失败", + "schedule-import-task-error-content": "未能成功导入他人分享的任务。", + "schedule-script-header": "导入中止", + "schedule-script-content": + "该自定义任务内包含不安全的信息。出于安全性考虑,我们中止了导入。", + "schedule-custom-task-default-name": "自定义任务", + "schedule-import-custom-task-confirmation-header": "导入自定义任务", + "schedule-import-custom-task-confirmation-content": + "确定要导入这条自定义任务吗?任务将在导入后自动开始。请确保地图来源的可靠性,否则后果自负。", + "roulette-header": "高潮轮盘", + "roulette-info-1": "小骚货,又想要了吗?", + "roulette-info-2": "来求我试试看~", + "roulette-info-3": "什么?你胆敢擅自高潮?", + "roulette-info-4": "滚过来受罚!", + "roulette-punishment-button": "我不小心弄出来了", + "roulette-spin-button": "求求您给我一次", + "punishment-tier-text": "程度", + "punishment-tier-light": "轻", + "punishment-tier-hard": "重", + "punishment-tier-hardcore": "硬核", + "punishment-light-header": "轻处分", + "punishment-hard-header": "重处分", + "punishment-hard-requirement": "你需要至少 %s 学分才能解锁重处分。", + "punishment-hardcore-header": "硬核处分", + "punishment-hardcore-requirement": + "你需要至少 %s 学分并在设置中开启了“硬核处分”才能解锁硬核处分。", + "punishment-status-active": "执行中", + "punishment-status-locked": "未解锁", + "punishment-roll-button": "随机得到 %s处分", + "punishment-detail-start-button": "开始执行处分", + "punishment-detail-reroll-button": "随机更换处分", + "punishment-rerolled-knowledge-point-header": "处分已更换", + "punishment-rerolled-knowledge-point-content": + "你因更换处分而被扣除了 %s 课程的 1 个出勤点。", + "punishment-rerolled-exam-header": "处分已更换", + "punishment-rerolled-exam-content": + "你因更换处分而被取消了 %s 的课程考试成绩。你需要重新参加考试了。", + "punishment-rerolled-unknown-header": "处分已更换", + "punishment-rerolled-unknown-content": "你将为更换处分的行为付出代价。", + "punishment-unavailable-header": "不可获得的处分程度", + "punishment-unavailable-content": "你当前还无法获得此种程度的处分。", + "punishment-max-header": "达到处分数量上限", + "punishment-max-content": "你最多能够积累 %s 个执行中的处分。", + "punishment-null-header": "无其他可获取的处分", + "punishment-null-content": "你当前没有可以被给予的处分了。", + "punishment-single-text": "处分", + "punishment-multi-text": "处分", + "punishment-card-unblock-button": "Unblock", + "punishment-card-block-button": "Block", + "punishment-detail-unblock-button": "Unblock punishment", + "punishment-detail-block-button": "Block punishment", + "club-tier-normal": "普通", + "club-tier-elite": "精英", + "club-normal-header": "社团", + "club-elite-header": "精英社团", + "club-elite-requirement": "你至少需要 %s 学分才能参加精英社团。", + "club-status-active": "已加入", + "club-status-locked": "未解锁", + "club-card-join-button": "报名", + "club-card-drop-button": "退出", + "club-detail-modifiers": "可选奖励", + "club-detail-join-button": "参加本社团", + "club-detail-drop-button": "退出本社团", + "club-modifier-activity": "活动", + "club-modifier-perk": "奖励", + "club-perk-activate-button": "领取奖励", + "club-perk-active-button": "已领取", + "club-max-clubs-header": "达到社团数上限", + "club-max-clubs-content": "你最多只能同时参加 %s 个社团。", + "club-max-perks-header": "达到社团活动数上限", + "club-max-perks-content": "你最多只能同时参加 %s 个社团活动。", + "club-perk-unavailable-header": "社团奖励无法领取", + "club-perk-unavailable-content": "当前无法参加该社团活动领取奖励。", + "club-perk-unavailable-tag-header": "社团奖励无法领取", + "club-perk-unavailable-tag-content": + "当前无相关课程(标签)与该社团活动相关。", + "partner-status-active": "已结交", + "partner-card-join-button": "勾搭", + "partner-card-drop-button": "绝交", + "partner-modifier-activity": "活动", + "partner-modifier-perk": "福利", + "partner-detail-modifiers": "可选福利", + "partner-detail-add-button": "勾搭Ta", + "partner-detail-leave-button": "和Ta绝交", + "partner-perk-activate-button": "领取福利", + "partner-perk-active-button": "已领取", + "partner-perk-not-active-header": "基/姬友福利无法领取", + "partner-perk-not-active-content": "你还没有勾搭上Ta。", + "partner-perk-tags-header": "基/姬友福利无法领取", + "partner-perk-tags-content": "当前无相关课程(标签)与该基/姬友活动相关。", + "partner-perk-max-perks-header": "基/姬友福利达到上限", + "partner-perk-max-perks-content": "你最多只能同时参加 %s 个基/姬友活动。", + "major-status-unavailable": "不可选", + "major-status-active": "当前专业", + "major-status-grade": "绩点", + "major-card-join-button": "选修", + "major-card-drop-button": "退选", + "major-detail-prerequisites": "必修课程", + "major-detail-thesis": "可选毕业考核内容", + "major-detail-thesis-button": "开始毕业考核", + "major-detail-join-button": "选修本专业", + "major-detail-drop-button": "退选本专业", + "major-detail-thesis-requirement-header": "参加毕业考核条件", + "major-detail-thesis-requirement-join": + "你必须先选修本专业,才能参加毕业考核。", + "major-detail-thesis-requirement-credits": "你必须修满 %s 个学分。", + "major-detail-thesis-requirement-punishments": "你必须先执行完所有处分。", + "major-detail-thesis-requirement-prerequisites": + "你必须通过所有必修课程。", + "major-detail-thesis-requirement-thesis": "你只能选择一条毕业考核内容。", + "major-drop-confirm-header": "专业退选", + "major-drop-confirm-content": "确定要退选该专业?", + "major-dropped-header": "退选成功", + "major-dropped-content": "你因为退选专业而受到处分!", + "class-tier-beginner": "入门", + "class-tier-intermediate": "普通", + "class-tier-advanced": "高级", + "class-tier-master": "大师", + "class-beginner-header": "入门课程", + "class-intermediate-header": "普通课程", + "class-intermediate-requirement": + "你至少需要获得 %s 学分,并完成所有的先修课程才能解锁普通课程。", + "class-advanced-header": "高级课程", + "class-advanced-requirement": + "你至少需要获得 %s 学分,并完成所有的先修课程才能解锁高级课程。", + "class-master-header": "大师课程", + "class-master-requirement": + "你至少需要获得 %s 学分,并完成所有的先修课程才能解锁大师课程。", + "class-card-tasks": "任务", + "class-card-exams": "考试", + "class-card-exams-locked": "当前未解锁", + "class-card-join-button": "选课", + "class-card-drop-button": "退课", + "class-card-retake-button": "重修", + "class-status-locked": "未解锁", + "class-status-grade": "绩点", + "class-status-active": "正在学习", + "class-detail-days": "每周开课", + "class-detail-tasks": "可选任务选项", + "class-detail-exams": "考试选项", + "class-detail-expected-grade": "如果现在参加考试,本课程绩点为 %s。", + "class-detail-mandatory": "本课程为当前专业的必修课程 %s 。", + "class-detail-join-button": "选修本课程", + "class-detail-drop-button": "退选本课程", + "class-detail-retake-button": "重修本课程", + "class-detail-retake-warning": + "本课程最终绩点为 %s,你还有进步的空间。若想提高绩点,你可以重修本课程,继续获得更多出勤点。当然,你最后需要重新参加课程考试。", + "class-detail-start-task-button": "开始学习", + "class-detail-start-exam-button": "开始考试", + "class-detail-exam-requirement-header": "考试条件", + "class-detail-exam-requirement-join": + "你必须先选课,而后才能完成学习任务或参加考试。", + "class-detail-exam-requirement-attended": + "你今日已经学过本课程了,劳逸结合才能进步更快。", + "class-detail-exam-requirement-attendance": + "所需出勤点为 %s 个,当前已获得 %s 个。", + "class-detail-exam-requirement-attendance-tasks": + "你还有尚未进行过的可选任务。", + "class-knowledge-points-info": "%s knowledge points collected.", + "class-detail-exam-requirement-punishment": "你还有未结束的处分。", + "class-detail-exam-requirement-days": "本课程今日不开课。", + "class-max-classes-header": "达到课程数上限", + "class-max-classes-content": "你最多只能同时选修 %s 门课。", + "class-retake-confirmation-header": "重修课程", + "class-retake-confirmation-content": + "确定想要重修本课程吗?你已有的出勤点会保留,但你的课程考试将作废。", + "class-drop-confirmation-header": "退选课程", + "class-drop-confirmation-content": "确定想要退选本课程?", + "disclaimer-header": "免责条款和数据保护", + "disclaimer-block-1": + "可以公开访问的网站需要满足一些法律要求 ,因此我们写下了这段简短的陈述来帮助您了解这个网站如何运作。 进入首页后,您可以在页面底部找到本页面的链接。 如果您同意以下内容,您可以点击页面底部的“我已理解并同意”, 并继续访问本网站。如果您不同意,我们将清理所有存储的数据,并自动退出。", + "disclaimer-overview-header": "概述", + "disclaimer-overview-1": "下文中的“用户”代指您,而“我们”代指网页提供者。", + "disclaimer-overview-2": + "只要我们有意开放,本网站对用户免费,但我们有权随时关闭甚至清空本网站。", + "disclaimer-overview-3": + "本网站除用于提供网站内容的简单网页服务外,不使用任何后端。", + "disclaimer-overview-4": + "本网站完全基于您的设备运行,如果发生文件损坏或丢失,所有之前的信息均无法找回。", + "disclaimer-overview-5": + "本网站只是一个框架,因此需要用户生成内容,这些内容是由用户手动创建和提供的,我们并不知道其他人如何使用这项服务。 您可以将其比作一个本地文本编辑器——您可以创建或打开文本文件,而一切都留在您的设备上。您亦可以使用这个工具来访问其他用户创建的文件。", + "disclaimer-overview-6": + "本网站运行所需的源代码完全由本域名提供。对于某些离开了本页面的链接,我们对其行为不负任何责任。", + "disclaimer-overview-7": + "用户生成的内容可能是恶意的,我们试图保护您免受明显的攻击,但最终您要对您加载的外部内容负责。", + "disclaimer-inner-header": "免责条款", + "disclaimer-inner": + "使用本网站是免费的,没有广告或跟踪服务。任何人不得使用本框架获利。 由于本网站使用用户编辑生成的内容,但并不存储任何关于用户的信息,所以网站提供者无法审核将要加载的内容。 因此,您将对您添加的其他用户生成的内容承担全部责任。 提供者对链接页面的内容不负责任, 如果有法律要求从框架中删除任何引用,它将被遵守。", + "disclaimer-data-protection-header": "数据保护声明", + "disclaimer-data-protection": + '没有数据被收集和存储在用户设备之外。进度、设置、内容和反馈标记都存储在本地设备上。 用户生成的内容会留在用户的设备上。如果您决定使用反馈选项提供 "心跳信号",您将离开本网站,之后便使用Bitly隐私条款。 反馈是可选的,Bitly-Link将被突出显示。', + "disclaimer-bitly-link": "点击这里查看Bitly.com上的相关隐私条款。", + "disclaimer-stored-data-header": "数据存储", + "disclaimer-stored-data-description": + "多种技术手段用于存储您的进度、设置和添加的用户生成内容。", + "disclaimer-stored-data-local": + "本地数据存储: 设置, 推迟的通知, 最后一次反馈信息请求, 接受的免责条款, 已经显示的教程", + "disclaimer-stored-data-indexeddb": + "IndexedDB存储: 用户生成内容, 当前进度", + "disclaimer-stored-data-cache": + "临时文件存储: 本网站框架数据支持离线模式", + "disclaimer-accept-button": "我不同意", + "disclaimer-reject-button": "了解并同意", + "settings-header": "设置", + "settings-easy-mode-checkbox": "简单模式", + "settings-easy-mode-description": + '在简单模式下,你可以在任何一天上课,取消了翘课的处分,并且可以任意随机更换处分而不被罚。该模式可以作为游戏的"暂停"。', + "settings-hardcore-punishments-checkbox": "硬核处分", + "settings-hardcore-punishments-description": + "硬核处分往往相当困难,禁用它们通常不会有任何影响。默认禁用。", + "settings-auto-hide-checkbox": "网页自动隐藏", + "settings-auto-hide-description": + "确保你的小秘密不会被旁人看到,本网页会在 %s 后自动隐藏。", + "settings-back-top-checkbox": "回到顶端按钮", + "settings-back-top-description": + '在手机上不容易在页面上切换,你可以开启 "回到顶端按钮" 来方便你迅速回到页面顶端。', + "settings-hide-active-classes-checkbox": + "在课程页面不显示正在学习中的课程", + "settings-hide-active-classes-description": + "正在学习的课程会在%s日程%s中显示,勾选本项可以让你的%s课程%s列表更清爽。", + "settings-hide-finished-classes-checkbox": + "在课程页面不显示已经通过的课程", + "settings-finished-active-classes-description": + "已经通过的课程会在%s进度%s中显示,勾选本项可以让你的%s课程%s列表更清爽。", + "settings-skip-tier-checkbox": "自动切换至更高级别页", + "settings-skip-tier-description": + "当你划至页面最下面时,将自动切换到下一层次页(课程难度、精英社团等)", + "settings-show-confirmations-checkbox": "当做出重大更改时弹出确认框", + "settings-show-confirmations-description": "防止误触和猫。", + "settings-theme-description": "选择网页配色风格。", + "settings-language-description": + "选择想要使用的语言。[Select your prefered language.]", + "settings-save-button": "保存更改", + "settings-reset-button": "重置设定", + "settings-maps-header": "地图管理", + "settings-map-tool-button": "地图工具", + "settings-map-tool-button-description": "打开地图工具来创建自定义内容。", + "settings-map-import-button": "导入地图", + "settings-map-import-button-description": + "导入一张地图或更新一张已经存在的地图。", + "settings-map-selection-header": "选择主地图", + "settings-map-selection-info-1": + "切换至另一张地图(不同地图的进度是独立保存的)。", + "settings-map-selection-info-2": + "如果你想要导出所有地图的进度,你需要对每一张主地图单独一一保存(子地图进度会保存在当前主地图进度中)。", + "settings-switch-map-button": "切换至选择的地图", + "settings-delete-map-button": "删除选择的地图", + "settings-import-save-button": "导入存档", + "settings-export-save-button": "导出存档", + "settings-share-save-button": "导出存档但不生产存档文件", + "settings-submap-selection-header": "选择子地图", + "settings-submap-selection-description": + '请勾选所有你想要作为子地图的选项。你需要先导入子地图(点击 "导入地图"),然后你才能在选项列表中找到它。如果你找不到导入的子地图,可能它被默认用作了主地图,这时你需要先更换一张主地图,然后才能在列表中看到你导入的子地图。', + "settings-submap-selection-button": "加载勾选的子地图", + "settings-global-actions-header": "全局操作", + "settings-reset-tutorial-button": "重置教程", + "settings-reset-tutorial-description": "这将让新手教学框重新显示。", + "settings-reset-game-button": "重置游戏", + "settings-reset-game-description": + "这将完全重置整个游戏,包括地图、进度甚至是用户设置。", + "settings-delete-map-confirmation-header": "删除地图", + "settings-delete-map-confirmation-content": + "确定要删除地图吗?你将会失去所有的存档。", + "settings-reset-game-confirmation-header": "重置游戏", + "settings-reset-game-confirmation-content": + "确定要删除所有的地图和存档吗?你将丢失地图和当前进度。", + "settings-script-header": "导入中止", + "settings-script-content": + "该存档文件内包含不安全的信息。出于安全性考虑,我们中止了导入。", + "settings-save-import-failed-header": "存档导入失败", + "settings-save-import-failed-content": + "导入存档文件时出错,请检查后台记录以获取更多信息。", + "settings-save-import-confirmation-header": "导入存档", + "settings-save-import-confirmation-content": + "确定要导入存档并覆盖你的现有进度吗?请确保存档来源的可靠性,否则后果自负。", + "settings-save-export-failed-header": "存档导出失败", + "settings-save-export-failed-content": "无法分享你的存档。", + "settings-import-share-save-failed-header": "存档导入失败", + "settings-import-share-save-failed-content": "无法导入分享的存档文件。", + "settings-import-share-save-confirmation-header": "导入存档", + "settings-import-share-save-confirmation-content": + "确定要导入存档并覆盖你的现有进度吗?请确保存档来源的可靠性,否则后果自负。", + "settings-import-share-map-failed-header": "地图导入失败", + "settings-import-share-map-failed-content": "无法导入分享的地图。", + "settings-import-share-map-confirmation-header": "导入地图", + "settings-import-share-map-confirmation-content": + "确定要导入这张地图吗?请确保地图来源的可靠性,否则后果自负。", + "settings-save-selection-header": "保存游戏进度", + "settings-save-sync-description": + "You can now sync your saves over multiple devices or retain them without having to trouble yourself with the files. Just join our %sDiscord%s and use the channel %spu-saves%s to %s/register%s.", + "settings-save-sync-button": "Sync this device now", + "settings-reset-save-sync-button": "Remove save sync for this device", + "settings-import-save-sync-header": "Save-Sync setup finished", + "settings-import-save-sync-content": + "Your saves will now be synced, if the required maps are available.", + "settings-import-save-sync-failed-header": "Save-Sync setup failed", + "settings-import-save-sync-failed-content": + "The provided key was not accepted by the backend. You can try to create a new session or try again later.", + "settings-download-save-sync-failed-header": "Save-Sync download failed", + "settings-download-save-sync-failed-content": + "The download of the latest SaveGame failed. You may need to create a new session.", + "settings-check-save-sync-failed-header": "Save-Sync check failed", + "settings-check-save-sync-failed-content": + "Checking the status of the latest SaveGame failed. You may need to create a new session.", + "settings-upload-save-sync-failed-header": "Save-Sync upload failed", + "settings-upload-save-sync-failed-content": + "Uploading the latest SaveGame failed. You may need to create a new session.", + "settings-time-offset-selection": + "自定义一个时间偏移量,让夜晚变成你的清晨。当前游戏时间: ", + "settings-time-offset-hour": "时", + "settings-compress-exports-checkbox": "压缩导出", + "settings-compress-exports-description": + "稍微压缩文件大小,能够更方便地分享它们。%s提示:%s在大多数苹果设备上会很有用!%s", + "settings-image-exports-checkbox": "图像导出", + "settings-image-exports-description": + "分享一张图片而不是一段随机文本吧。必须压缩!%s警告:%s这是一个实验性功能,可能无法读取过大的文件!大部分即时通讯软件会删除附加的数据使其失效!%s", + "settings-complete-exports-checkbox": "完全导出", + "settings-complete-exports-description": + "不必再逐个导入地图及存档,所有内容都将导出为单一文件。必须压缩!%s提示:%s这会让存档变得非常巨大!%s", + "settings-detailed-table-view-checkbox": "使用详细表格视图。", + "settings-detailed-table-view-description": + "将*地图工具*的风格在原版“卡片”视图(模拟最终地图效果)和新增的“表格”视图之间切换。", + "settings-import-save-clipboard-button": "从剪贴板导入存档", + "settings-export-save-clipboard-button": "复制存档到剪贴板", + "settings-join-discord-button": "加入Discord", + "settings-join-discord-description": + "欢迎加入PU的官方Discord。(仅限英语)", + "settings-unsaved-changes-warning-checkbox": + "在地图工具中显示尚未保存警告", + "settings-unsaved-changes-warning-description": + "虽然地图工具已支持自动保存,但你也可以开启这个警告来体型自己是否还有尚未导出的编辑。", + "settings-filters-header": "过滤器", + "settings-three-state-filters-checkbox": "三态过滤器", + "settings-three-state-filters-description": + "默认过滤器只检查是否包含特定的标签,勾选本项可以让它也能够排除特定的标签。", + "settings-hide-active-classes-checkbox": + "在课程页面中不显示正在学习的课程", + "settings-hide-finished-classes-checkbox": + "在课程页面中不显示已通过的课程", + "settings-hide-locked-classes-checkbox": "在课程页面中不显示被锁定的课程", + "settings-hide-locked-clubs-checkbox": "在社团页面中不显示被锁定的社团", + "settings-hide-locked-punishments-checkbox": + "在处分页面中不显示被锁定的处分", + "settings-hide-blocked-punishments-checkbox": + "在处分页面中不显示被禁用的处分", + "help-table-grade": "绩点", + "help-table-threshold": "比例", + "help-table-min-knowledge": "最少出勤点数", + "help-table-min-knowledge-intermediate": "最少出勤点数(普通课程)", + "help-table-min-knowledge-advanced": "最少出勤点数(高级课程)", + "help-table-min-knowledge-master": "最少出勤点数(大师课程)", + "help-overview-header": "入学流程", + "help-overview-1": "选择一个%s专业%s", + "help-overview-2": + "选择%s专业必修课程%s %s必修课程会带有星标%s 和一些%s附加课程%s", + "help-overview-3": + "参加%s社团%s或者勾搭%s基/姬友%s可以让你的学习过程更加丰富多彩", + "help-overview-4": "上课并通过课程考试修够 %s 个学分", + "help-overview-5": "翘课会让你受%s处分%s", + "help-overview-6": "毕业", + "help-notice-header": "校园安全教育", + "help-notice-content": + '人身安全必须始终放在首位。当你在课程期间感到不适,必须立刻结束当前课程,切忌拿自己的健康当儿戏!在进行任务途中如果感到不适,应立即停下来检查,避免发生意外。必要的时候请务必及时就医。此外,请珍惜自己的生命。一生中没有坎儿是过不去的,如果真的有事情想不开,去找人帮帮自己。', + "help-progress-header": "课程进度说明", + "help-progress-content": + "所有的进度数据都保存在你自己的浏览器缓存里面,网上不会留存任何备份。浏览器在隐私模式下,通常不会储存数据,所以建议你使用普通模式打开本网站。如果你坚持使用隐私模式,提醒你注意保存好你的相关数据文件,通常包括地图文件(.pu)和存档(.puSave)。", + "help-majors-header": "专业", + "help-majors-content": + "选择一个%s专业%s便意味着你将在该领域深造。每个专业都有自己的必修课程(毕业先修课),并且每个课程都可能有它自己的先修课要求。选完专业之后,你可以到%s进度%s页面去查看你的必修课程。你需要获得 %s 个学分才能尝试毕业。如果你中途决定换专业,你可以去专业详情界面退选,但你会因此受到 %s 项随机的处分。", + "help-classes-header": "课程与课表", + "help-classes-content": + "请注意每门课程在每周的开课时间。在课程开课当天,你需要完成课程任务或参加考试才能得到该课程的 1 个出勤点。如果你在开课当天都没有来上课,你将会自动受到 1 项处分。想了解所有的课程要求,可以去课程详情页面查看。你在通过一门课程后,可以立马再选一门,但你最多不能同时上超过 %s 门课。最好不要同时学习太多课程,否则你可能会跟不上课程进度。所有的课程都在周末开设了补习班,翘掉补习课不会被处分(但是任务失败仍会被处分)。", + "help-punishments-header": "处分", + "help-punishments-1": + "翘课(转点仍未开始课程任务)一节将被给予 1 项随机的处分。", + "help-punishments-2": '任务失败时,你必须诚实地按下"失败",并接受处分。', + "help-punishments-3": + "暂停一个任务超过 %s 将被给予处分。当一个任务具有多个步骤时,你将获得额外的暂停时间,你需要在额外的暂停时间里完成其他任务。", + "help-punishments-4": "处分可以在任何时候完成。", + "help-punishments-5": "你最多可以积攒 10 个处分。", + "help-punishments-6": + "只要处分没有全部完成,你就不能参加考试和毕业考核。因此最好不要积攒太多的处分。", + "help-punishments-7": + "任务失败被给予的处分数:日常课程任务失败(%s 项),课程考试失败(%s 项),毕业考核失败(%s 项)。", + "help-clubs-header": "社团", + "help-clubs-1": + "参加社团会给你不同的奖励,例如获得请假条或降低课程任务难度。", + "help-clubs-2": "社团是对课程内容的补充,你可以自由选择社团。", + "help-clubs-3": + "奖励领取之后就不能退还了,所带来的影响将会持续一整天直到转点。", + "help-clubs-4": + "一些社团活动和课程内容重复了,这时你只需要完成课程任务即可获得社团奖励。", + "help-clubs-5": + "在领取奖励之前,先看看自己当日需要参加的课程内容。你一定不想自己因为社团任务被迫戴一整天口塞吧。", + "help-clubs-6": "你最多同时参加 %s 个社团,同时获取 %s 个社团福利。", + "help-clubs-7": + "在学期的最后阶段,你会解锁精英社团。精英社团会给你更丰厚的奖励,与此同时也会给你更难的挑战。", + "help-clubs-8": "注意,你最多参加 %s 个精英社团。", + "help-clubs-9": "社团奖励领取之后,当日不可以取消!", + "help-clubs-10": "所有领取过的奖励会在次日刷新。", + "help-clubs-11": + "注意,你最多只能从社团福利中获得 50% 的难度减免。即如果你在普通社团里得到50%的难度减免,同时你在精英社团里得到25%的减免,那么你最终只会得到50%的总减免,而非75%。", + "help-partners-header": "基/姬友", + "help-partners-content": + "P基/姬友和社团很像,会给你带来相应的福利,例如给你额外的出勤点数。但不同之处在于,基/姬友会让你的课程难度增加。你最多可以同时拥有 %s 个基/姬友。Ta们带来的影响会持续一整天,并在次日重置。", + "help-tasks-header": "任务与计时器", + "help-tasks-content": + '游戏中的专业和班级都有任务系统。在你的课程表页面上,你可以选择你的当日课程要做的任务。每个任务可以有多个子任务 一旦你开始一个任务,你会看到新的任务显示出来,在这里你可以启动它的计时器,或者按 "完成",如果任务不依赖于时间。定时器可以被暂停/恢复,并且它们可以在不同的日子里延续。如果任务从前一天开始但持续到第二天,你不会被处分。如果你的任务完成失败了,你必须按下 "失败 "键来接受处分。所有课程的计时器也可以在该课程的详情页面上看到。', + "help-grades-header": "绩点", + "help-grades-content": + "每当你参加并完成课堂任务时,你将获得 1 个出勤点,如果你有修改器(来自基/姬友或社团),你可以获得额外的出勤点。根据这些出勤点,你将在参加考试后得到一个分数。这取决于你决定你想在考试中表现得多好。你获得的成绩将用于计算你的专业成绩。如果你已经完成了一门课,想提高自己的成绩,你可以随时重修。如果你重修一门课,你需要重考,并取消该课的相关学分,但你将保留已经获得的出勤点。你每更换一次处分,你就将会失去你当前正在上的一门随机课程的出勤点。
    想要得到不同等级的绩点,你至少需要获得如下的出勤点数:", + "help-credits-header": "学分", + "help-credits-content": + "毕业需要至少 %s 学分。一种参考的选课方法是 4 个入门课程,3 个普通课程,2 个专家课程和 2 个大师课程。你只有选修了课程之后才会解锁考试内容。完成考试后,你就会得到相应的学分。", + "help-graduating-header": "毕业", + "help-graduating-content": + '你需要先完成所有的专业必修课,并得到 %s 学分,你才可以尝试毕业。某些专业毕业考核甚至可能会持续一个月。如果你在毕业考核的时候失败了,你需要按下 "失败" 按钮来受到 %s 个处分。某些专业毕业考核也会有额外的 "惩罚" 按钮,用来延长任务时长。当你从某个专业毕业,该专业就会被标记为 "完成",你上过的课程都会被重置。你可以继续选修另一门专业,为你的 "职业" 道路打好基础。', + "help-roulette-header": "高潮轮盘系统", + "help-roulette-content": + "在校期间除课程要求之外,你能否高潮取决于%s高潮轮盘%s的结果。你每天仅有一次宝贵的机会去碰碰运气。", + }; + class n { + static getLanguage() { + return ( + navigator.languages && navigator.languages.length + ? navigator.languages[0] + : navigator.userLanguage || + navigator.language || + navigator.browserLanguage || + "en" + ) + .toLowerCase() + .substr(0, 2); + } + static getTodaysDay() { + return n.getNow().day(); + } + static getNow() { + return moment().add(n.getSetting("timeOffsetSelection") || 0, "hours"); + } + static getNowUnix() { + return n.getNow().unix(); + } + static getMoment(e) { + return moment(e); + } + static hasMatchingDate(e) { + if (n.getSetting("enableEasyMode")) return !0; + const t = n.getTodaysDay(); + return 0 === t || 6 === t || e.filter((e) => e === t).length > 0; + } + static daysToString(e) { + return e.map((e) => n.weekdays[e]).join(", "); + } + static get weekdays() { + return moment.weekdays(); + } + static getAcceptedDisclaimer() { + return localStorage.getItem("acceptedDisclaimer") || !1; + } + static setAcceptedDisclaimer() { + localStorage.setItem("acceptedDisclaimer", !0); + } + static getlastRequestedFeedback() { + return localStorage.getItem("lastRequestedFeedback") || void 0; + } + static setlastRequestedFeedback(e) { + localStorage.setItem("lastRequestedFeedback", e); + } + static getTutorial() { + try { + return localStorage.getItem("tutorial") || ""; + } catch (e) { + return "mapping;"; + } + } + static setTutorial(e) { + localStorage.setItem("tutorial", e); + } + static getLastPage() { + return localStorage.getItem("lastPage"); + } + static setLastPage(e) { + localStorage.setItem("lastPage", e); + } + static getSettings() { + try { + return ( + JSON.parse(localStorage.getItem("settings")) || + n.getDefaultSettings() + ); + } catch (e) { + return { ...n.getDefaultSettings(), noSettings: !0 }; + } + } + static setSettings(e) { + e.noSettings || localStorage.setItem("settings", JSON.stringify(e)); + } + static getDefaultSettings() { + return { + enableHardcorePunishments: !1, + enableEasyMode: !1, + enableAutoHide: !0, + enableBackToTop: !0, + hideActiveClasses: !1, + hideFinishedClasses: !0, + autoExtendCarousel: !0, + showConfirmations: !0, + useTableView: !0, + style: "darkly", + useImageHoster: !1, + sessionToken: void 0, + timeOffsetSelection: 0, + useImageExport: !1, + useBlobExport: !0, + useDynamicExport: !1, + useBase64Export: !1, + compressExports: !0, + completeExports: !1, + }; + } + static getSetting(e) { + let t = n.getSettings()[e]; + return null != t ? t : n.getDefaultSettings()[e]; + } + static setSetting(e, t) { + let a = n.getSettings(); + ((a[e] = t), n.setSettings(a)); + } + static getScheduledToasts() { + try { + return JSON.parse(localStorage.getItem("scheduledToasts")) || []; + } catch (e) { + const t = s.getInstance(); + return ( + n.showToast( + t.T( + "scheduled-toast-error-header", + "Third-party cookies are disabled", + ), + t.T( + "scheduled-toast-error-content", + "Please switch to the full Mapping Tool or enable them in the browser settings.", + ), + "warning", + ), + [] + ); + } + } + static setScheduledToasts(e) { + try { + localStorage.setItem("scheduledToasts", JSON.stringify(e)); + } catch (e) { + return; + } + } + static scheduleToast(e, t, a) { + void 0 === a && (a = "info"); + let s = n.getScheduledToasts(); + (s.push({ title: e, message: t, style: a }), n.setScheduledToasts(s)); + } + static showScheduledToast() { + let e = n.getScheduledToasts(); + for (let t of e) n.showToast(t.title, t.message, t.style); + n.setScheduledToasts([]); + } + static showToast(e, t, a) { + void 0 === a && (a = "info"); + const i = s.getInstance(); + $("#toastContainer").append( + $( + ``, + ) + .toast("show") + .on("hidden.bs.toast", function (e) { + $(e.target).remove(); + }), + ); + } + static getBackdropContainer(e, t) { + return `
    \n ${e}\n
    `; + } + static getBackdropProgressContainer(e, t) { + let a = "success"; + return ( + t < 10 && (a = "warning"), + `\n
    \n
    \n
    \n
    ${e}
    \n
    \n
    \n ` + ); + } + static getButtonsContainer(e) { + return (e = e.filter((e) => e && e.length > 0)).length <= 0 + ? "" + : `
    \n ${e.join('
    ')}\n
    `; + } + static toggleCard(e) { + $("#" + e).toggleClass("active"); + } + static getRandomString(e) { + return ( + e || (e = 10), + [...Array(e)] + .map((e) => (~~(36 * Math.random())).toString(36)) + .join("") + ); + } + static scrollBackToTop() { + $("html, body").animate({ scrollTop: 0 }, 800); + } + static isToday(e) { + return moment.unix(e).isSame(n.getNow(), "day"); + } + static requestUserConfirmation(e, t, a) { + if (!n.getSetting("showConfirmations")) return void a(); + const i = s.getInstance(); + let o = "requestUserConfirmationModal-" + n.getRandomString(), + r = ``; + ($("#confirmationContainer").append(r), + $("#" + o) + .modal({ keyboard: !1 }) + .modal("show") + .on("hidden.bs.modal", function (e) { + $("#" + o) + .modal("dispose") + .remove(); + })); + } + static hasScript(e) { + const t = Object.getOwnPropertyNames(document) + .concat( + Object.getOwnPropertyNames( + Object.getPrototypeOf(Object.getPrototypeOf(document)), + ), + ) + .filter(function (e) { + return ( + !e.indexOf("on") && + (null == document[e] || "function" == typeof document[e]) + ); + }) + .join("|"), + a = new RegExp(`\\s(?:${t})=`, "i"); + return /)/.test(e) || a.test(e); + } + static optimizeImage(e, t) { + const a = o.imageOptimization, + s = new Image(); + ((s.src = e), + (s.onload = () => { + const e = document.createElement("canvas"), + i = e.getContext("2d"); + let n = 0, + o = 0; + (s.height > s.width && s.height > a.height + ? ((n = a.height), (o = s.width * (a.height / s.height))) + : s.width > s.height && s.width > a.width + ? ((o = a.width), (n = s.height * (a.width / s.width))) + : ((o = s.width), (n = s.height)), + (e.width = o), + (e.height = n), + i.drawImage(s, 0, 0, o, n), + i.canvas.toBlob( + function (e) { + const s = i.canvas.toDataURL(a.filemime, a.quality); + t && t(s, e); + }, + a.filemime, + a.quality, + )); + })); + } + static getGrade(e, t) { + if (!Number.isInteger(e) || !Number.isInteger(t)) return "F"; + const a = e / t; + for (const e of Object.entries(o.grades)) if (a >= e[1]) return e[0]; + return "F"; + } + static getCurrentUrl() { + return window.location.origin.endsWith("hwcdn.net") + ? "https://projectuniversity.net/" + : `${window.location.origin}${window.location.pathname}`; + } + static extendDistPath() { + return window.IS_RAW ? "dist/" : ""; + } + static dataURLtoFile(e, t) { + for ( + var a = e.split(","), + s = a[0].match(/:(.*?);/)[1], + i = atob(a[a.length - 1]), + n = i.length, + o = new Uint8Array(n); + n--; + ) + o[n] = i.charCodeAt(n); + return new File([o], t, { type: s }); + } + static async encryptExportImage(e, t) { + const a = n.stringToArraybuffer(n.compressJSObjectToString(e)); + return { + imageData: await n.appendDataToImage(t, a), + ImageType: t.type, + }; + } + static decryptExportImage(e) { + const t = n.readDataFromImage(e); + if (t instanceof Uint8Array && t.length > 0) { + return n.decompressJsonFromString(n.arraybufferToString(t)); + } + } + static async loadImageFile(e) { + try { + const t = await fetch(e); + if (!t.ok) throw new Error("HTTP error! status: " + t.status); + const a = await t.blob(); + return new File([a], "save.jpg", { type: "image/jpeg" }); + } catch (e) { + throw (console.error("Error loading the image file:", e), e); + } + } + static async appendDataToImage(e, t) { + const a = await e.arrayBuffer(), + s = new Uint8Array(a); + let i = s.length; + for (let e = s.length - 2; e >= 0; e--) + if (255 === s[e] && 217 === s[e + 1]) { + i = e + 2; + break; + } + const n = new Uint8Array(i + t.length); + return (n.set(s.subarray(0, i)), n.set(t, i), n); + } + static readDataFromImage(e) { + const t = new Uint8Array(e); + let a = t.length; + for (let e = t.length - 2; e >= 0; e--) + if (255 === t[e] && 217 === t[e + 1]) { + a = e + 2; + break; + } + return t.subarray(a); + } + static deepClone(e) { + return JSON.parse(JSON.stringify(e)); + } + static canCompress() { + return "undefined" != typeof z && z.hasOwnProperty("inflate"); + } + static shouldCompress() { + return n.canCompress() && n.getSetting("compressExports"); + } + static shouldExportComplete() { + return n.canCompress() && n.getSetting("completeExports"); + } + static isCompleteSavegame(e) { + return !( + !e.hasOwnProperty("primaryMapData") || !e.hasOwnProperty("subMapData") + ); + } + static compressJSObjectToString(e) { + return btoa( + n.arraybufferToString( + z.deflate( + n.stringToArraybuffer(encodeURIComponent(JSON.stringify(e))), + ).buffer, + ), + ); + } + static decompressJsonFromString(e) { + return decodeURIComponent( + n.arraybufferToString(z.inflate(n.stringToArraybuffer(atob(e)))), + ); + } + static arraybufferToString(e) { + const t = new Uint8Array(e); + let a = "", + s = 0; + for (; s < t.length; ) a += String.fromCharCode(t[s++]); + return a; + } + static stringToArraybuffer(e) { + const t = new Uint8Array(e.length); + for (let a = 0; a < e.length; ++a) t[a] = e.charCodeAt(a); + return t; + } + static async getServiceWorkerStatus() { + if ((!1) in window.navigator || !window.navigator.serviceWorker) + return o.serviceWorkerStatus.inactive; + const e = await window.navigator.serviceWorker.getRegistration(); + return e + ? e.active + ? o.serviceWorkerStatus.active + : e.installing + ? o.serviceWorkerStatus.installing + : e.waiting + ? o.serviceWorkerStatus.waiting + : o.serviceWorkerStatus.unknown + : o.serviceWorkerStatus.unregistered; + } + } + class o { + static get serviceWorkerStatus() { + return { + unregistered: { id: "unregistered", type: "danger", useable: !1 }, + inactive: { id: "inactive", type: "danger", useable: !1 }, + active: { id: "active", type: "success", useable: !0 }, + waiting: { id: "waiting", type: "warning", useable: !1 }, + installing: { id: "installing", type: "warning", useable: !1 }, + unknown: { id: "unknown", type: "warning", useable: !1 }, + }; + } + static get saveGameService() { + return "https://save.projectuniversity.net"; + } + static get privateBinService() { + return "https://privatebin.net/"; + } + static get imageService() { + return "https://imgbb.com/"; + } + static get styles() { + return { + darkly: { name: "darkly", navbar: "dark", bg: "dark" }, + pink: { name: "pink", navbar: "dark", bg: "dark" }, + cosmo: { name: "cosmo", navbar: "dark", bg: "primary" }, + minty: { name: "minty", navbar: "dark", bg: "primary" }, + }; + } + static get imageOptimization() { + return { + height: 800, + width: 600, + filemime: "image/jpeg", + quality: 0.75, + }; + } + static isImage(e) { + return "image/jpeg" === e; + } + static get exportTextType() { + return "text/plain;charset=utf-8"; + } + static get exportCompressedType() { + return "application/octet-stream"; + } + static get exportImageType() { + return "image/jpg"; + } + static get exportOptions() { + return { + pu_complete: { + linkFilenamePrefix: "pu_complete", + exportFilenamePrefix: "pu_complete_", + textExportExtension: "puC", + imageExportExtension: "jpg", + srcImage: "logo_complete", + }, + pu_save: { + linkFilenamePrefix: "pu_save", + exportFilenamePrefix: "pu_save_", + textExportExtension: "puSave", + imageExportExtension: "jpg", + srcImage: "logo_save", + }, + pu_task: { + linkFilenamePrefix: "pu_task", + exportFilenamePrefix: "pu_task_", + textExportExtension: "puTask", + imageExportExtension: "jpg", + srcImage: "logo_task", + }, + pu_map: { + linkFilenamePrefix: "pu_map", + exportFilenamePrefix: "pu_map_", + textExportExtension: "puMap", + imageExportExtension: "jpg", + srcImage: "logo_map", + }, + pu_game_map: { + linkFilenamePrefix: "pu_game_map", + exportFilenamePrefix: "pu_gamemap_", + textExportExtension: "pu", + imageExportExtension: "jpg", + srcImage: "logo_gamemap", + }, + }; + } + static get grades() { + return { + "A+": 0.96, + A: 0.88, + "A-": 0.8, + "B+": 0.76, + B: 0.68, + "B-": 0.6, + "C+": 0.52, + C: 0.44, + "C-": 0.4, + "D+": 0.32, + D: 0.24, + "D-": 0.12, + F: 0, + }; + } + static get maxAttendances() { + return { beginner: 25, intermediate: 25, advanced: 25, master: 25 }; + } + static get expectedAttendance() { + return { beginner: 3, intermediate: 3, advanced: 3, master: 3 }; + } + static get maxConcurrentClasses() { + return 20; + } + static get maxTaskPause() { + return 240; + } + static get maxConcurrentPunishments() { + return 10; + } + static get maxConcurrentClubs() { + return 10; + } + static get maxConcurrentEliteClubs() { + return 3; + } + static get maxConcurrentClubPerks() { + return 15; + } + static get maxConcurrentPartnerPerks() { + return 10; + } + static get maxConcurrentPartner() { + return 8; + } + static get failDailyPunishment() { + return 1; + } + static get failCustomTask() { + return 1; + } + static get failExamPunishment() { + return 2; + } + static get failThesisPunishment() { + return 5; + } + static get classBeginnerCredits() { + return 10; + } + static get classIntermediateCredits() { + return 10; + } + static get classAdvancedCredits() { + return 20; + } + static get classMasterCredits() { + return 25; + } + static get baseTaskMultiplier() { + return 1; + } + static get currentVersion() { + return 1; + } + static get classesExamCredits() { + return { + beginner: o.classBeginnerCredits, + intermediate: o.classIntermediateCredits, + advanced: o.classAdvancedCredits, + master: o.classMasterCredits, + }; + } + static get rickRate() { + return 1e3; + } + static get autoHideTimer() { + return 1; + } + static get majorDropPunishments() { + return 10; + } + static get defaultTaskListSize() { + return 2; + } + } + class r { + constructor(e, t) { + let a = indexedDB.open("PU", 1); + ((a.onupgradeneeded = function (e) { + ((this.db = e.target.result), + (this.db.onabort = function (e) { + console.error("db abort", e); + }), + (this.db.onclose = function (e) { + console.error("db close", e); + }), + (this.db.onerror = function (e) { + console.error("db error", e); + }), + this.db + .createObjectStore("maps", { keyPath: "mapData.mapId" }) + .createIndex("lastSaved", "lastSaved", { unique: !1 })); + }.bind(this)), + (a.onsuccess = function (t) { + if ( + ((this.db = t.target.result), + void 0 !== e && e(this.db), + void 0 !== this.successEvents) + ) + for (let e = this.successEvents.length - 1; e >= 0; e--) + this.successEvents.pop(e)(); + }.bind(this)), + (a.onerror = function (e) { + void 0 !== t && t(e.target.errorCode); + })); + } + static getInstance(e, t) { + return ( + void 0 === this.instance && (this.instance = new r(void 0, t)), + void 0 !== e && + (void 0 !== this.instance.db + ? e() + : this.instance.registerLoadFinished(e)), + this.instance + ); + } + registerLoadFinished(e) { + (void 0 === this.successEvents && (this.successEvents = []), + this.successEvents.push(e)); + } + drop(e) { + (this.db.close(), + (indexedDB.deleteDatabase("PU").onsuccess = function () { + ((this.instance = void 0), (this.db = void 0), e()); + })); + } + static showDefaultError(e) { + (console.error("db error", e), + n.showToast( + "Database error", + "While attempting to save your progress an database error occured. Progress might have been lost.", + "danger", + )); + } + addMap(e, t, a) { + if (!e.mapId) return void a("This map is missing an ID!"); + e.moduleId && (e.mapId = `${e.mapId}(${e.moduleId})`); + let s = { + mapData: e, + lastSaved: n.getNowUnix() - 60, + saveGame: void 0, + subMaps: [], + }, + i = function (i) { + void 0 !== i && + ((s.saveGame = i.saveGame), (s.subMaps = i.subMaps)); + let n = this.db.transaction(["maps"], "readwrite"); + n.objectStore("maps").put(s); + ((n.onabort = function (a) { + void 0 !== t && t(a, e); + }), + (n.oncomplete = function (a) { + void 0 !== t && t(a, e); + }), + (n.onerror = function (e) { + void 0 !== a ? a(e.target.errorCode) : r.showDefaultError(e); + }), + n.commit()); + }.bind(this); + this.getMap(e.mapId, (e) => { + i(e); + }); + } + updateMap(e, t, a) { + if (!e.mapData.mapId) return void a("The map ID is missing!"); + let s = this.db.transaction(["maps"], "readwrite"); + s.objectStore("maps").put(e); + ((s.onabort = function (e) { + void 0 !== t && t(e); + }), + (s.oncomplete = function (e) { + void 0 !== t && t(e); + }), + (s.onerror = function (e) { + void 0 !== a ? a(e.target.errorCode) : r.showDefaultError(e); + }), + s.commit()); + } + getMap(e, t) { + let a = this.db + .transaction(["maps"], "readonly") + .objectStore("maps") + .get(e); + ((a.onsuccess = function (e) { + void 0 !== t && t(e.target.result); + }), + (a.onerror = function (e) { + void 0 !== t ? t(void 0) : r.showDefaultError(e); + })); + } + switchMap(e, t) { + let a = this.db + .transaction(["maps"], "readonly") + .objectStore("maps") + .get(e), + s = this; + ((a.onsuccess = function (e) { + let a = e.target.result; + ((a.lastSaved = n.getNowUnix()), s.updateMap(a, t, t)); + }), + (a.onerror = function (e) { + void 0 !== cbFinished ? cbFinished(void 0) : r.showDefaultError(e); + })); + } + removeMap(e, t) { + let a = this.db.transaction(["maps"], "readwrite"); + (a.objectStore("maps").delete(e), + (a.onabort = function (e) { + void 0 !== t && t(e); + }), + (a.oncomplete = function (e) { + void 0 !== t && t(e); + }), + (a.onerror = function (e) { + r.showDefaultError(e); + }), + a.commit()); + } + getMaps(e, t) { + let a = this.db + .transaction(["maps"], "readonly") + .objectStore("maps") + .index("lastSaved") + .openCursor(null, "prev"), + s = []; + ((a.onsuccess = function (t) { + let a = t.target.result; + null != a ? (s.push(a.value), a.continue()) : void 0 !== e && e(s); + }), + (a.onerror = function (e) { + void 0 !== t ? t(e.target.errorCode) : r.showDefaultError(e); + })); + } + setSubMaps(e, t, a, s) { + if (!Array.isArray(t)) + return void (void 0 !== s && s("Invalid SubMaps")); + let i = this; + this.getMap(e, (e) => { + ((e.subMaps = t), + (e.lastSaved = n.getNowUnix()), + i.updateMap(e, a, s)); + }); + } + setSavegame(e, t, a, s) { + let i = this; + this.getMap(e, (e) => { + ((e.saveGame = t), + (e.lastSaved = n.getNowUnix()), + i.updateMap(e, a, s)); + }); + } + getSavegame(e, t) { + this.getMap(e, (e) => { + t(e.saveGame); + }); + } + } + class d { + static applyParametersToObject(e) { + if (void 0 === e || void 0 === e.tasks) return e; + for (let t in e.tasks) { + let a = e.tasks[t], + s = x.getMultiplier(a.tags); + ((void 0 === s || s <= 0.1) && (s = 1), + (e.tasks[t] = d.applyParametersToTaskObject(a, s))); + } + return e; + } + static applyParametersToTaskObject(e, t) { + if (void 0 === e || void 0 === e.task || void 0 === e.parameters) + return e; + if (null == e.task.match(/\$param\d+/)) return e; + const a = s.getInstance(); + for (let s in e.parameters) { + let i = e.parameters[s], + n = "", + o = Math.round(i.value * t); + if ("minutes" === i.unit) { + let e = d.minutesToTime(o), + s = d.minutesToTime(i.value); + n = + i.applyMultiplier && 1 !== t + ? `${e} ${s}
    `])}">` + : "" + s; + } else if ("seconds" === i.unit) { + let e = a.T("time-seconds", "seconds"); + if ( + (1 == i.value && (e = a.T("time-second", "second")), + i.applyMultiplier && 1 !== t) + ) { + let t = a.T("time-seconds", "seconds"); + (1 == o && (t = a.T("time-second", "second")), + (n = `${o} ${t} ${i.value}
    ${e}`])}>`)); + } else n = `${i.value} ${e}`; + } else if ("punishments" === i.unit) { + let e = i.punTier + ? a.T("punishment-tier-" + i.punTier, i.punTier) + : a.T("task-random-punishment", "random"), + s = a.T("punishment-single-text", "punishment"); + if ( + (i.value > 1 && (s = a.T("punishment-multi-text", "punishments")), + i.applyMultiplier && 1 !== t) + ) { + let t = a.T("punishment-single-text", "punishment"); + (o > 1 && (t = a.T("punishment-multi-text", "punishments")), + (n = `${o} ${e} ${t} ${i.value} ${e} ${s}`])}">`)); + } else n = `${i.value} ${e} ${s}`; + } else + n = + i.applyMultiplier && 1 !== t + ? `${o} ${i.unit} ${i.value} ${i.unit}`])}>` + : `${i.value} ${i.unit}`; + e.task = e.task.replace( + "$param" + s, + `${n}`, + ); + } + return e; + } + static getPercentageFromText(e) { + let t = /([0-9]+)(?:%)/g.exec(e); + return t ? Number(t[1]) / 100 : 0; + } + static getClassSkipsFromText(e) { + let t = /(?:Skip) ([0-9])/g.exec(e); + return t ? Number(t[1]) : 0; + } + static dateObjectToHumanTime(e) { + const t = moment.duration(e, "seconds"); + return `${t.days() > 0 ? t.humanize() + " " : ""}${("0" + t.hours()).slice(-2)}:${("0" + t.minutes()).slice(-2)}:${("0" + t.seconds()).slice(-2)}`; + } + static minutesToTime(e) { + const t = moment.duration(e, "minutes"), + a = s.getInstance(); + let i = t.years(), + n = t.months(), + o = t.days(), + r = t.hours(), + l = t.minutes(); + const d = a.T("time-day-binding", ";"); + var c = []; + return ( + i && + (1 === i + ? c.push(`${i} ${a.T("time-year", "year")}`) + : c.push(`${i} ${a.T("time-years", "years")}`)), + n && + (1 === n + ? c.push(`${n} ${a.T("time-month", "month")}`) + : c.push(`${n} ${a.T("time-months", "months")}`)), + o && + (1 === o + ? c.push(`${o} ${a.T("time-day", "day")}`) + : c.push(`${o} ${a.T("time-days", "days")}`)), + r && + ((o > 0 || n > 0 || i > 0) && l <= 0 + ? c.push(a.T("time-day-binding-no-minutes", "and")) + : (o > 0 || n > 0 || i > 0) && c.push(d), + 1 === r + ? c.push(`${r} ${a.T("time-hour", "hour")}`) + : c.push(`${r} ${a.T("time-hours", "hours")}`)), + (o > 0 || n > 0 || i > 0 || r > 0) && + l > 0 && + c.push(a.T("time-hours-binding", "and")), + l && + (1 === l + ? c.push(`${l} ${a.T("time-minute", "minute")}`) + : c.push(`${l} ${a.T("time-minutes", "minutes")}`)), + c.length <= 0 && + c.push(a.T("time-less-then-a-minute", "Less than a minute.")), + c.join(" ").replace(` ${d} `, d + " ") + ); + } + } + class c { + constructor() { + ((this._publicImageHosterKey = void 0), (this._sessionToken = void 0)); + } + static getInstance() { + return ( + void 0 === this.instance && (this.instance = new c()), + this.instance + ); + } + get isPublicImageHosterKeySet() { + return !!this._publicImageHosterKey; + } + static getQRCanvas(e, t) { + return kjua({ + render: "image", + ecLevel: "H", + text: e, + mPosX: 50, + mPosY: 50, + mSize: 20, + size: 400, + rounded: 100, + mode: "label", + label: t, + fontname: "Helvetica", + fontcolor: "#ff0055", + }); + } + static insertQR(e, t, a) { + const s = `\n
    \n
    \n This export is only valid for 24h. You can scan the QR code with your target device or use the link.\n
    \n
    \n
    \n \n
    \n `; + ($(a).html(s), + $(".qr-container .qr-code", a).html(c.getQRCanvas(e, t))); + } + static sendRequest(e, t, a) { + try { + const i = new XMLHttpRequest(); + if (t) { + var s = i.open; + i.open = function () { + const e = "quiet-dawn-24177.herokuapp.com", + t = "https://" + e + "/", + a = [].slice, + i = window.location.protocol + "//" + window.location.host; + var n = a.call(arguments), + o = /^https?:\/\/([^\/]+)/i.exec(n[1]); + return ( + o && + o[0].toLowerCase() !== i && + o[1] !== e && + (n[1] = t + n[1]), + s.apply(this, n) + ); + }; + } + let n = e.params; + (!n || + "object" != typeof n || + n instanceof FormData || + (n = + e.hasOwnProperty("parseAsParameter") && !0 !== e.parseAsParameter + ? JSON.stringify(n) + : Object.keys(n) + .map(function (e) { + return `${encodeURIComponent(e)}=${encodeURIComponent(n[e])}`; + }) + .join("&")), + "GET" === e.method && ((e.url = `${e.url}?${n}`), (n = null)), + i.open(e.method, e.url), + (i.onload = function () { + this.status >= 200 && this.status < 300 + ? a(i.response) + : a( + JSON.stringify({ + error: !0, + status: this.status, + statusText: i.statusText, + }), + ); + }), + (i.onerror = function () { + a( + JSON.stringify({ + error: !0, + status: this.status, + statusText: i.statusText, + }), + ); + }), + e.headers && + Object.keys(e.headers).forEach(function (t) { + i.setRequestHeader(t, e.headers[t]); + }), + i.send(n)); + } catch (e) { + a(JSON.stringify({ error: !0, statusText: "internal error" })); + } + } + getPublicImageHosterKey(e) { + if (this.isPublicImageHosterKeySet) + return void e(this._publicImageHosterKey); + const t = o.imageService; + let a = function (t) { + ((this._publicImageHosterKey = t.match( + /PF\.obj\.config\.auth_token=\"(.*?)\"/, + )[1]), + e(this._publicImageHosterKey)); + }.bind(this), + s = { + parseAsParameter: !1, + method: "GET", + url: t, + params: "", + headers: { + Accept: + "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", + }, + }; + c.sendRequest(s, !0, a); + } + static uploadToImageHoster(e, t) { + const a = o.imageService; + let s = function (e) { + const a = JSON.parse(e); + "200" == a.status_code + ? t({ error: !1, data: a.image.url }) + : t({ error: !0, statusText: "failed to upload image" }); + }.bind(this), + i = function (t) { + var i = new FormData(); + (i.append("source", e), + i.append("type", "file"), + i.append("action", "upload"), + i.append("timestamp", new Date().getTime()), + i.append("auth_token", t)); + let n = { + parseAsParameter: !1, + method: "POST", + url: a + "/json", + params: i, + headers: { Accept: "application/json" }, + }; + c.sendRequest(n, !0, s); + }.bind(this); + c.getInstance().getPublicImageHosterKey(i); + } + static downloadFromPastebin(e, t) { + let a = /\?(.*?)#(.*?)(?:&|$)/.exec(e); + if (!a || 3 !== a.length) + return void t({ error: !0, statusText: "invalid paste url" }); + let s = function (e) { + const a = JSON.parse(e); + t({ error: !1, data: a.paste }); + }.bind(this), + i = function (e) { + const i = JSON.parse(e); + if (i && null != i.status && 0 == i.status) + try { + const e = c.getCryptTool(), + t = [i.ct, i.adata], + n = e.base58decode(a[2]).padStart(32, "\0"), + o = ""; + e.decipher(n, o, t).then(s); + } catch (e) { + t({ error: !0, statusText: "failed decrypt" }); + } + else t({ error: !0, statusText: "invalid response" }); + }.bind(this), + n = { + parseAsParameter: !1, + method: "GET", + url: e, + headers: { + Accept: "application/json, text/javascript, */*; q=0.01", + "Content-Type": + "application/x-www-form-urlencoded; charset=UTF-8", + "X-Requested-With": "JSONHttpRequest", + }, + }; + c.sendRequest(n, !0, i); + } + exchangeSaveGameToken(e, t) { + const a = o.saveGameService; + let s = function (e) { + const a = JSON.parse(e); + if (a.error) + return ( + t({ error: !0, statusText: "failed to check save game token" }), + (this._sessionToken = void 0), + void n.setSetting("sessionToken", this._sessionToken) + ); + ((this._sessionToken = a.sessionToken), + n.setSetting("sessionToken", this._sessionToken), + t({ error: !1, data: a })); + }.bind(this), + i = { exchangeToken: e }, + r = { + parseAsParameter: !1, + method: "POST", + url: a + "/token/activate", + params: JSON.stringify(i), + headers: { + Accept: "application/json", + "Content-Type": "application/json; charset=UTF-8", + }, + }; + c.sendRequest(r, !1, s); + } + verifySaveGameToken(e, t) { + const a = o.saveGameService; + let s = function (a) { + if ("" !== a) + return ( + (this._sessionToken = void 0), + n.setSetting("sessionToken", this._sessionToken), + void t(null) + ); + ((this._sessionToken = e), t(this._sessionToken)); + }.bind(this), + i = { sessionToken: e }, + r = { + parseAsParameter: !1, + method: "POST", + url: a + "/token/verify", + params: JSON.stringify(i), + headers: { + Accept: "application/json", + "Content-Type": "application/json; charset=UTF-8", + }, + }; + c.sendRequest(r, !1, s); + } + getSessionToken(e) { + !this._sessionToken && n.getSetting("sessionToken") + ? this.verifySaveGameToken(n.getSetting("sessionToken"), e) + : this._sessionToken + ? e(this._sessionToken) + : e(null); + } + static checkSaveGame(e, t, a) { + if (!e || !t) + return void a({ + error: !0, + statusText: "session token / mapId is not set", + }); + const s = o.saveGameService; + let i = function (e) { + const t = JSON.parse(e); + t.error + ? a({ error: !0, statusText: "failed to check save game status" }) + : a({ error: !1, data: t }); + }.bind(this), + n = { mapId: t, sessionToken: e }, + r = { + parseAsParameter: !1, + method: "POST", + url: s + "/save/check", + params: JSON.stringify(n), + headers: { + Accept: "application/json", + "Content-Type": "application/json; charset=UTF-8", + }, + }; + c.sendRequest(r, !1, i); + } + static uploadSaveGame(e, t, a, s) { + if (!e || !t) + return void s({ + error: !0, + statusText: "session token / mapId is not set", + }); + const i = o.saveGameService; + let r = function (e) { + const t = JSON.parse(e); + t.error + ? s({ error: !0, statusText: "failed to upload the save game" }) + : s({ error: !1, data: t }); + }.bind(this), + l = { + mapId: t, + sessionToken: e, + saveData: JSON.stringify(a), + saveDate: n.getNow().format(), + }, + d = { + parseAsParameter: !1, + method: "POST", + url: i + "/save/upload", + params: JSON.stringify(l), + headers: { + Accept: "application/json", + "Content-Type": "application/json; charset=UTF-8", + }, + }; + c.sendRequest(d, !1, r); + } + static downloadSaveGame(e, t, a) { + if (!e || !t) + return void a({ + error: !0, + statusText: "session token / mapId is not set", + }); + const s = o.saveGameService; + let i = function (e) { + const t = JSON.parse(e); + t.error + ? a({ error: !0, statusText: "failed to download the save game" }) + : a({ error: !1, data: t }); + }.bind(this), + n = { mapId: t, sessionToken: e }, + r = { + parseAsParameter: !1, + method: "POST", + url: s + "/save/download", + params: JSON.stringify(n), + headers: { + Accept: "application/json", + "Content-Type": "application/json; charset=UTF-8", + }, + }; + c.sendRequest(r, !1, i); + } + static uploadToPastebin(e, t) { + const a = o.privateBinService; + try { + const s = c.getCryptTool(), + i = s.getSymmetricKey(), + n = function (e) { + if (0 === (e = JSON.parse(e)).status && !0 !== e.error) { + const n = a.split("/"), + o = s.base58encode(i); + t({ error: !1, url: `${n[0]}//${n[2]}${e.url}#${o}` }); + } else t({ error: !0, message: e.message }); + }.bind(this), + o = function (e) { + let t = { + parseAsParameter: !1, + method: "POST", + url: a, + params: { + v: 2, + adata: e[1], + ct: e[0], + meta: { expire: "1day" }, + }, + headers: { + Accept: "application/json, text/javascript, */*; q=0.01", + "Content-Type": + "application/x-www-form-urlencoded; charset=UTF-8", + "X-Requested-With": "JSONHttpRequest", + }, + }; + c.sendRequest(t, !0, n); + }.bind(this); + let r = [null, "plaintext", 0, 0]; + s.cipher(i, "", JSON.stringify({ paste: e }), r).then(o); + } catch (e) { + t({ + error: !0, + message: "A techical error occured while uploading.", + }); + } + } + static getCryptTool() { + return (function () { + const e = {}; + let t = new baseX( + "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz", + ); + function a(e) { + return decodeURIComponent( + e + .split("") + .map(function (e) { + return "%" + ("00" + e.charCodeAt(0).toString(16)).slice(-2); + }) + .join(""), + ); + } + function s(e) { + return encodeURIComponent(e).replace( + /%([0-9A-F]{2})/g, + function (e, t) { + return String.fromCharCode("0x" + t); + }, + ); + } + function i(e) { + const t = new Uint8Array(e); + let a = "", + s = 0; + for (; s < t.length; ) a += String.fromCharCode(t[s++]); + return a; + } + function n(e) { + const t = new Uint8Array(e.length); + for (let a = 0; a < e.length; ++a) t[a] = e.charCodeAt(a); + return t; + } + async function o(e, t, a) { + if (((e = n(s(e))), "zlib" === t)) { + if (void 0 === a) + throw "Error compressing paste, due to missing WebAssembly support."; + return a.deflate(e).buffer; + } + return e; + } + function r(e) { + let t = ""; + const a = new Uint8Array(e); + window.crypto.getRandomValues(a); + for (let s = 0; s < e; ++s) t += String.fromCharCode(a[s]); + return t; + } + function l(e, t) { + console.error(e, t); + } + async function d(e, t, a) { + let i = n(e); + if (t.length > 0) { + if ("rawdeflate" === a[7]) { + let e = await window.crypto.subtle + .digest({ name: "SHA-256" }, n(s(t))) + .catch(l); + t = Array.prototype.map + .call(new Uint8Array(e), (e) => + ("00" + e.toString(16)).slice(-2), + ) + .join(""); + } + let e = n(t), + o = new Uint8Array(i.length + e.length); + (o.set(i, 0), o.set(e, i.length), (i = o)); + } + const o = await window.crypto.subtle + .importKey("raw", i, { name: "PBKDF2" }, !1, ["deriveKey"]) + .catch(l); + return window.crypto.subtle + .deriveKey( + { + name: "PBKDF2", + salt: n(a[1]), + iterations: a[2], + hash: { name: "SHA-256" }, + }, + o, + { name: "AES-" + a[6].toUpperCase(), length: a[3] }, + !1, + ["encrypt", "decrypt"], + ) + .catch(l); + } + function c(e, t) { + return { + name: "AES-" + t[6].toUpperCase(), + iv: n(t[0]), + additionalData: n(e), + tagLength: t[4], + }; + } + return ( + (e.cipher = async function (e, t, a, s) { + let n = await z; + const u = void 0 === n ? "none" : "zlib", + p = [r(16), r(8), 1e5, 256, 128, "aes", "gcm", u], + m = []; + for (let e = 0; e < p.length; ++e) + m[e] = e < 2 ? btoa(p[e]) : p[e]; + return ( + 0 === s.length ? (s = m) : null === s[0] && (s[0] = m), + [ + btoa( + i( + await window.crypto.subtle + .encrypt( + c(JSON.stringify(s), p), + await d(e, t, p), + await o(a, u, n), + ) + .catch(l), + ), + ), + s, + ] + ); + }), + (e.decipher = async function (e, t, s) { + let o, + r, + u, + p, + m = await z; + if (s instanceof Array) + ((o = JSON.stringify(s[1])), + (r = (s[1][0] instanceof Array ? s[1][0] : s[1]).slice()), + (u = s[0])); + else { + if ("string" != typeof s) throw "unsupported message format"; + { + let e = JSON.parse(s); + ((o = atob(e.adata)), + (r = [ + e.iv, + e.salt, + e.iter, + e.ks, + e.ts, + e.cipher, + e.mode, + "rawdeflate", + ]), + (u = e.ct)); + } + } + if ( + ((r[0] = atob(r[0])), + (r[1] = atob(r[1])), + "zlib" === r[7] && void 0 === m) + ) + throw "Error decompressing paste, due to missing WebAssembly support."; + try { + p = await window.crypto.subtle.decrypt( + c(o, r), + await d(e, t, r), + n(atob(u)), + ); + } catch (e) { + return (console.error(e), ""); + } + try { + return await (async function (e, t, s) { + if ("zlib" === t || "none" === t) { + if ("zlib" === t) { + if (void 0 === s) + throw "Error decompressing paste, due to missing WebAssembly support."; + e = s.inflate(new Uint8Array(e)).buffer; + } + return a(i(e)); + } + return "undefined" == typeof Base64 + ? a(RawDeflate.inflate(a(atob(i(e))))) + : Base64.btou(RawDeflate.inflate(Base64.fromBase64(i(e)))); + })(p, r[7], m); + } catch (e) { + return (l(e), e); + } + }), + (e.getSymmetricKey = function () { + return r(32); + }), + (e.base58encode = function (e) { + return t.encode(n(e)); + }), + (e.base58decode = function (e) { + return i(t.decode(e)); + }), + e + ); + })(); + } + } + class u { + constructor() { + ((this.isLoadedI = !1), + (this.mapI = void 0), + (this.mapsI = void 0), + (this.staticsI = void 0), + (this.saveBackupI = void 0), + (this.savegameChangedI = !1), + (this.multiplierChangedI = !1), + (this.multipliedObjectsCacheI = void 0), + (this.registeredTaskIntervalsI = []), + (this.exportStorage = {}), + (this.dbI = r.getInstance(() => { + this.dbI.getMaps( + this.loadMapSuccess.bind(this), + this.loadMapError.bind(this), + ); + }))); + } + static getInstance(e) { + return ( + void 0 === this.instance && (this.instance = new u()), + void 0 !== e && this.instance.registerLoadFinished(e), + this.instance + ); + } + static getDBInstance() { + return this.getInstance().dbI; + } + registerLoadFinished(e) { + (void 0 === this.successEvents && (this.successEvents = []), + this.successEvents.push(e)); + } + loadMapSuccess(e) { + if ( + (!Array.isArray(e) || e.length <= 0 + ? (this.mapI = void 0) + : ((this.mapsI = e), + (this.mapI = e[0]), + void 0 === this.mapI.saveGame && (this.mapI.saveGame = {}), + void 0 === this.mapI.subMaps && (this.mapI.subMaps = []), + (this.mapI = this.importSubMapsContent(this.mapI, e)), + (this.mapI.mapData = this.removeInvalidReferencesInMapData( + this.mapI, + )), + (this.staticsI = this.loadStatics(this.mapI)), + (this.mapI.saveGame = this.removeInvalidReferencesFromSaveGame( + this.mapI, + ))), + (this.isLoadedI = void 0 !== this.mapI), + void 0 !== this.successEvents) + ) + for (let e = this.successEvents.length - 1; e >= 0; e--) + this.successEvents.pop(e)(); + } + removeInvalidReferencesInMapData(e) { + const t = e.mapData, + a = Object.keys(t.majors), + s = Object.keys(t.classes); + if (t.majors && t.classes) + for (let e = 0; e < a.length; e++) { + const s = t.majors[a[e]]; + if (s.prerequisites && s.prerequisites.length > 0) + for (let e = 0; e < s.prerequisites.length; e++) { + const a = s.prerequisites[e]; + t.classes.hasOwnProperty(a) || + (s.prerequisites.splice(e, 1), e--); + } + } + if (t.classes) + for (let e = 0; e < s.length; e++) { + const a = t.classes[s[e]]; + if (a.prerequisites && a.prerequisites.length > 0) + for (let e = 0; e < a.prerequisites.length; e++) { + const s = a.prerequisites[e]; + t.classes.hasOwnProperty(s) || + (a.prerequisites.splice(e, 1), e--); + } + } + return t; + } + removeInvalidReferencesFromSaveGame(e) { + const t = e.mapData; + let a = e.saveGame, + s = { + finishedPunishments: [], + blockedPunishments: [], + activePunishments: [], + assignedClasses: [], + assignedClubs: [], + assignedPartners: [], + }; + if ( + (a.activeMajor && + t.majors && + !t.majors[a.activeMajor] && + (a.activeMajor = void 0), + a.finishedPunishments && a.finishedPunishments.length > 0) + ) + for (let e = 0; e < a.finishedPunishments.length; e++) { + const i = a.finishedPunishments[e]; + (t.punishments && t.punishments[i]) || + (s.finishedPunishments.push(i), + a.finishedPunishments.splice(e, 1), + e--); + } + if (a.blockedPunishments && a.blockedPunishments.length > 0) + for (let e = 0; e < a.blockedPunishments.length; e++) { + const i = a.blockedPunishments[e]; + (t.punishments && t.punishments[i]) || + (s.blockedPunishments.push(i), + a.blockedPunishments.splice(e, 1), + e--); + } + if (a.activePunishments && a.activePunishments.length > 0) + for (let e = 0; e < a.activePunishments.length; e++) { + const i = a.activePunishments[e]; + (t.punishments && t.punishments[i]) || + (s.activePunishments.push(i), + a.activePunishments.splice(e, 1), + e--); + } + if (a.assignedClasses && a.assignedClasses.length > 0) + for (let e = 0; e < a.assignedClasses.length; e++) { + const i = a.assignedClasses[e]; + (t.classes && t.classes[i.id]) || + (s.assignedClasses.push(i), a.assignedClasses.splice(e, 1), e--); + } + if (a.finishedClasses && a.finishedClasses.length > 0) + for (let e = 0; e < a.finishedClasses.length; e++) { + const i = a.finishedClasses[e]; + (t.classes && t.classes[i]) || + (s.finishedClasses.push(i), a.finishedClasses.splice(e, 1), e--); + } + if (a.assignedClubs && a.assignedClubs.length > 0) + for (let e = 0; e < a.assignedClubs.length; e++) { + const i = a.assignedClubs[e]; + (t.clubs && t.clubs[i.id]) || + (s.assignedClubs.push(i), a.assignedClubs.splice(e, 1), e--); + } + if (a.assignedPartners && a.assignedPartners.length > 0) + for (let e = 0; e < a.assignedPartners.length; e++) { + const i = a.assignedPartners[e]; + (t.partners && t.partners[i.id]) || + (s.assignedPartners.push(i), + a.assignedPartners.splice(e, 1), + e--); + } + if (a.finishedMajors && a.finishedMajors.length > 0) + for (let e = 0; e < a.finishedMajors.length; e++) { + const i = a.finishedMajors[e]; + (t.majors && t.majors[i]) || + (s.finishedMajors.push(i), a.finishedMajors.splice(e, 1), e--); + } + if (a.activeTasks && a.activeTasks.length > 0) + for (let e = 0; e < a.activeTasks.length; e++) { + const s = a.activeTasks[e]; + if (s.object) { + if ("custom" == s.object.type) continue; + if ("class" == s.object.type) { + if (t.classes && t.classes[s.object.id]) continue; + } else if ("major" == s.object.type) { + if (t.majors && t.majors[s.object.id]) continue; + } else if ( + "punishment" == s.object.type && + t.punishments && + t.punishments[s.object.id] + ) + continue; + (a.activeTasks.splice(e, 1), e--); + } + } + return ((this.saveBackupI = s), a); + } + importSubMapsContent(e, t) { + if ( + void 0 !== e && + e.hasOwnProperty("subMaps") && + e.subMaps.length > 0 + ) { + let a = { + majors: {}, + classes: {}, + clubs: {}, + partners: {}, + punishments: {}, + }, + s = t.filter( + (t) => + e.mapData.mapId !== t.mapData.mapId && + e.subMaps.includes(t.mapData.mapId), + ); + for (const t of s) { + let s = t.mapData.mapId; + const i = t.mapData.moduleId; + if ( + (void 0 !== i && + i.length > 1 && + (s = /^(.*?)\(/gm.exec(t.mapData.mapId)[1]), + e.mapData.mapId.startsWith(s) && (s = ""), + void 0 !== t.mapData.general.help && + t.mapData.general.help.length > 0) + ) { + Array.isArray(e.mapData.general.help) || + (e.mapData.general.help = []); + for (const a of t.mapData.general.help) + e.mapData.general.help.find( + (e) => "" + e.id == `${s}${a.id}`, + ) || e.mapData.general.help.push(a); + } + for (const e in t.mapData.majors) + if (t.mapData.majors.hasOwnProperty(e)) { + const i = t.mapData.majors[e], + n = `${s}${e}`; + ((a.majors[n] = i), + (a.majors[n].id = n), + (a.majors[n].prerequisites = i.prerequisites.map( + (e) => `${s}${e}`, + ))); + } + for (const e in t.mapData.classes) + if (t.mapData.classes.hasOwnProperty(e)) { + const i = t.mapData.classes[e], + n = `${s}${e}`; + ((a.classes[n] = i), + (a.classes[n].id = n), + (a.classes[n].prerequisites = i.prerequisites.map( + (e) => `${s}${e}`, + ))); + } + for (const e in t.mapData.clubs) + if (t.mapData.clubs.hasOwnProperty(e)) { + const i = t.mapData.clubs[e], + n = `${s}${e}`; + ((a.clubs[n] = i), (a.clubs[n].id = n)); + } + for (const e in t.mapData.partners) + if (t.mapData.partners.hasOwnProperty(e)) { + const i = t.mapData.partners[e], + n = `${s}${e}`; + ((a.partners[n] = i), (a.partners[n].id = n)); + } + for (const e in t.mapData.punishments) + if (t.mapData.punishments.hasOwnProperty(e)) { + const i = t.mapData.punishments[e], + n = `${s}${e}`; + ((a.punishments[n] = i), (a.punishments[n].id = n)); + } + } + (Object.assign(e.mapData.majors, a.majors), + Object.assign(e.mapData.classes, a.classes), + Object.assign(e.mapData.clubs, a.clubs), + Object.assign(e.mapData.partners, a.partners), + Object.assign(e.mapData.punishments, a.punishments)); + } + return e; + } + loadMapError(e) { + alert("failed to load maps from local storage " + e); + } + loadStatics(e) { + let t = { + requiredCreditsUnlockIntermediate: 30, + requiredCreditsUnlockAdvanced: 60, + requiredCreditsUnlockMaster: 100, + requiredCreditsForGraduation: 160, + requiredCreditsToUnlockEliteClubs: 100, + requiredCreditsToUnlockHardPunishments: 100, + }, + a = 0, + s = 0, + i = 0, + n = 0, + r = 0; + for (const t in e.mapData.classes) + if (e.mapData.classes.hasOwnProperty(t)) { + const a = e.mapData.classes[t]; + "beginner" == a.tier + ? s++ + : "intermediate" == a.tier + ? i++ + : "advanced" == a.tier + ? n++ + : "master" == a.tier && r++; + } + return ( + (s *= o.classBeginnerCredits), + (i *= o.classIntermediateCredits), + (n *= o.classAdvancedCredits), + (r *= o.classMasterCredits), + (a += s), + s < t.requiredCreditsUnlockIntermediate && + (t.requiredCreditsUnlockIntermediate = s), + (a += i), + a < t.requiredCreditsUnlockAdvanced && + (t.requiredCreditsUnlockAdvanced = a), + (a += n), + a < t.requiredCreditsUnlockMaster && + (t.requiredCreditsUnlockMaster = a), + a < t.requiredCreditsToUnlockEliteClubs && + (t.requiredCreditsToUnlockEliteClubs = a), + a < t.requiredCreditsToUnlockHardPunishments && + (t.requiredCreditsToUnlockHardPunishments = a), + (a += r), + a < t.requiredCreditsForGraduation && + (t.requiredCreditsForGraduation = a), + t + ); + } + get static() { + return this.staticsI; + } + get multiplierChanged() { + return this.multiplierChangedI; + } + multiplierChanged() { + this.multiplierChangedI = !0; + } + get multiplierCacheHandler() { + return { + get: function (e, t, a) { + return e[t]; + }, + set: function (e, t, a) { + return !1; + }, + }; + } + get multipliedObjectsChache() { + if (this.multiplierChangedI || null == this.multipliedObjectsCacheI) { + let e = $.extend(!0, {}, this.mapI.mapData); + this.multiplierChangedI = !1; + for (const t in e.classes) + e.classes[t] = d.applyParametersToObject(e.classes[t]); + for (const t in e.majors) + e.majors[t] = d.applyParametersToObject(e.majors[t]); + for (const t in e.punishments) + e.punishments[t] = d.applyParametersToObject(e.punishments[t]); + this.multipliedObjectsCacheI = e; + } + return new Proxy( + this.multipliedObjectsCacheI, + this.multiplierCacheHandler, + ); + } + resetTaskIntervals() { + for (let e of this.registeredTaskIntervalsI) clearInterval(e.ref); + this.registeredTaskIntervalsI = []; + } + addTaskInterval(e, t) { + for (let t of this.registeredTaskIntervalsI) + t.id == e && clearInterval(t.ref); + ((this.registeredTaskIntervalsI = this.registeredTaskIntervalsI.filter( + (t) => t.id != e, + )), + this.registeredTaskIntervalsI.push({ id: e, ref: t })); + } + get isMapLoaded() { + return this.isLoadedI; + } + get mapId() { + return this.mapI.mapData.mapId; + } + get map() { + return this.mapI.mapData; + } + get maps() { + return (this.mapsI || []).map((e) => $.extend(!0, {}, e)); + } + get savegameHandler() { + let e = this; + return { + get: function (e, t, a) { + return e[t]; + }, + set: function (t, a, s) { + return ((e.savegameChangedI = !0), (t[a] = s), !0); + }, + }; + } + get wasSavegameChanged() { + return this.savegameChangedI; + } + get subMaps() { + return this.mapI.subMaps; + } + set subMaps(e) { + if (Array.isArray(e)) return (this.mapI.subMaps = e); + } + get anyMajorFinished() { + return (this.mapI.saveGame.finishedMajors || []).length > 0; + } + setSubMaps(e, t) { + const a = s.getInstance(); + this.dbI.setSubMaps( + this.mapI.mapData.mapId, + this.mapI.subMaps, + (t) => { + (t && + "abort" == t.type && + n.scheduleToast( + a.T("map-submap-failed-header", "Setting sub map aborted"), + a.T( + "map-submap-failed-content", + "PU was unable to store the new sub map assignment. This can happen if you run the website in incognito mode.", + ), + "warning", + ), + e(t)); + }, + t, + ); + } + getSavegame() { + return this.isLoadedI + ? new Proxy(this.mapI.saveGame, this.savegameHandler) + : {}; + } + setSavegame(e, t, a) { + if (!this.savegameChangedI) return; + let i = this; + const o = s.getInstance(), + r = this.mapI.mapData.mapId; + let l = JSON.parse(JSON.stringify(this.mapI.saveGame)); + this.saveBackupI && + ((l.finishedPunishments = this.saveBackupI.finishedPunishments.concat( + l.finishedPunishments || [], + )), + (l.blockedPunishments = this.saveBackupI.blockedPunishments.concat( + l.blockedPunishments || [], + )), + (l.activePunishments = this.saveBackupI.activePunishments.concat( + l.activePunishments || [], + )), + (l.assignedClasses = this.saveBackupI.assignedClasses.concat( + l.assignedClasses || [], + )), + (l.assignedClubs = this.saveBackupI.assignedClubs.concat( + l.assignedClubs || [], + )), + (l.assignedPartners = this.saveBackupI.assignedPartners.concat( + l.assignedPartners || [], + ))); + let d = function (t) { + !t || ("success" != t.type && "complete" != t.type) + ? t && + "abort" == t.type && + n.scheduleToast( + o.T("map-save-failed-header", "Save aborted"), + o.T( + "map-save-failed-content", + "PU was unable to store your progress. This can happen if you run the website in incognito mode.", + ), + "warning", + ) + : ((i.savegameChangedI = !1), + a || + this.uploadOnlineSaveGame(r, l, () => { + e && e(t); + })); + }.bind(this); + this.dbI.setSavegame(r, l, d, t); + } + checkOnlineSaveGame(e) { + if (this.savegameChangedI) return; + if (!this.mapI || !this.mapI.mapData || !this.mapI.mapData.mapId) + return; + const t = this.mapI.mapData.mapId, + a = s.getInstance(); + let i = null, + o = null, + r = function (t) { + if (t.error || !t.data) + return void n.showToast( + a.T( + "settings-download-save-sync-failed-header", + "Save-Sync download failed", + ), + a.T( + "settings-download-save-sync-failed-content", + "The download of the latest SaveGame failed. You may need to create a new session.", + ), + ); + let s = JSON.parse(t.data.saveData); + s && + ((this.saveBackupI = void 0), + (this.mapI.saveGame = s), + (this.savegameChangedI = !0), + (this.mapI.lastSaved = o), + this.setSavegame(e, void 0, !0)); + }.bind(this), + l = function (e) { + !e.error && e.data + ? null != e.data.saveDate && + ((o = n.getMoment(e.data.saveDate).unix()), + (o > this.mapI.lastSaved || + !( + void 0 !== this.mapI.saveGame && + Object.entries(this.mapI.saveGame).length > 0 + )) && + c.downloadSaveGame(i, t, r)) + : n.showToast( + a.T( + "settings-check-save-sync-failed-header", + "Save-Sync check failed", + ), + a.T( + "settings-check-save-sync-failed-content", + "Checking the status of the latest SaveGame failed. You may need to create a new session.", + ), + ); + }.bind(this), + d = function (e) { + ((i = e), null !== i && c.checkSaveGame(i, t, l)); + }.bind(this); + c.getInstance().getSessionToken(d); + } + uploadOnlineSaveGame(e, t, a) { + const i = s.getInstance(); + let o = function (e) { + (!e.error && e.data) || + n.showToast( + i.T( + "settings-upload-save-sync-failed-header", + "Save-Sync upload failed", + ), + i.T( + "settings-upload-save-sync-failed-content", + "Uploading the latest SaveGame failed. You may need to create a new session.", + ), + ); + }.bind(this), + r = function (s) { + (null !== s && c.uploadSaveGame(s, e, t, o), a()); + }.bind(this); + c.getInstance().getSessionToken(r); + } + importSaveGame(e, t, a) { + const i = s.getInstance(); + return e.mapId !== this.mapI.mapData.mapId + ? i.T( + "map-save-incompatible", + "SaveGame not compatible with the current map.", + ) + : e.saveGame + ? ((e.saveGame = p.resetAttendanceDeadline(e.saveGame)), + (this.saveBackupI = void 0), + (this.mapI.saveGame = e.saveGame), + (this.savegameChangedI = !0), + void this.setSavegame(t, a)) + : i.T("map-save-empty", "SaveGame empty."); + } + changeMap(e) { + (this.setSavegame(), + (this.isLoadedI = !1), + this.dbI.switchMap( + e, + this.loadMapSuccess.bind(this), + this.loadMapError.bind(this), + )); + } + deleteMap(e, t) { + (this.setSavegame(), this.dbI.removeMap(e, t)); + } + async importMapFile(e) { + const t = s.getInstance(), + a = { + title: t.T("map-import-confirmation-header", "Import a map"), + text: t.T( + "map-import-confirmation-conent", + "Are you sure that you want to import this map? Make sure to only install maps from trusted sources. Proceed at your own risk.", + ), + }, + i = { + title: t.T("map-import-failed-header", "Map import failed"), + text: t.T( + "map-import-failed-content", + "During the import for the selected file an error occured. You can check the console for more information.", + ), + }, + o = { + title: t.T( + "map-file-import-compression-error-header", + "Compression unavailable", + ), + text: t.T( + "map-file-import-compression-error-content", + "The file you tried to import is compressed. Sadly a library required to uncompress it is unavailable.", + ), + }, + r = { + title: t.T("map-file-import-aborted-header", "Import aborted"), + text: t.T( + "map-file-import-aborted-content", + "The file you tried to import included untrusted code. To protect you the import was aborted.", + ), + }, + l = await _.runImport(e, i, a, o, r); + n.isCompleteSavegame(l) + ? await this.importCompleteSavegame(l) + : this.importMap(l); + } + async importCompleteSavegame(e) { + const t = (e) => + new Promise((t, a) => { + this.dbI.addMap(e, t, a); + }); + (n.setSettings(e.settings || n.getDefaultSettings()), + await t(e.primaryMapData)); + for (const a of e.subMapData) await t(a); + (await ((e, t) => + new Promise((a, s) => { + this.dbI.setSubMaps(e, t, a, s); + }))(e.mapId, e.subMaps), + await ((e, t) => + new Promise((a, s) => { + this.dbI.setSavegame(e, t, a, s); + }))(e.mapId, e.saveGame), + this.addMapSuccess(void 0, e.primaryMapData)); + } + importMap(e) { + s.getInstance(); + this.mapI + ? this.dbI.addMap( + e, + this.addMapAsSubMapSuccess.bind(this), + this.addMapError.bind(this), + ) + : this.dbI.addMap( + e, + this.addMapSuccess.bind(this), + this.addMapError.bind(this), + ); + } + addMapAsSubMapSuccess(e, t) { + (n.scheduleToast( + `${s.getInstance().T("map-import-submap-popup", "Submap imported")}: ${t.general.title}`, + "" + t.general.description, + ), + this.subMaps.includes(t.mapId) || + this.mapId == t.mapId || + this.subMaps.push(t.mapId), + this.setSubMaps(() => { + _.navigate("?page=settings"); + })); + } + addMapSuccess(e, t) { + s.getInstance(); + (n.scheduleToast( + `${s.getInstance().T("map-import-map-popup", "Map imported")}: ${t.general.title}`, + "" + t.general.description, + ), + this.registerLoadFinished(() => { + _.navigate("?page=help"); + }), + this.changeMap(t.mapId)); + } + addMapError(e) { + alert("failed to add the map to local storage " + e); + } + setExportStorageItem(e, t, a) { + this.exportStorage[e] = { data: t, type: a, filename: e }; + } + getExportStorageItem(e) { + return this.exportStorage[e]; + } + } + class p { + static resetAttendanceDeadline(e) { + if (e.assignedClasses && e.assignedClasses.length > 0) { + const t = n.getNow().add(-1, "day").endOf("day").unix(); + e.assignedClasses = e.assignedClasses.map( + (e) => ( + "active" == e.status && + e.lastAttended && + e.lastAttended < t && + (e.lastAttended = t), + e + ), + ); + } + return e; + } + static getActiveMajor() { + return u.getInstance().getSavegame().activeMajor; + } + static setActiveMajor(e) { + u.getInstance().getSavegame().activeMajor = e; + } + static getAssignedClasses() { + return u.getInstance().getSavegame().assignedClasses || []; + } + static setAssignedClasses(e) { + u.getInstance().getSavegame().assignedClasses = e; + } + static getAssignedClubs() { + return u.getInstance().getSavegame().assignedClubs || []; + } + static setAssignedClubs(e) { + u.getInstance().getSavegame().assignedClubs = e; + } + static getActivePartners() { + return u.getInstance().getSavegame().assignedPartners || []; + } + static setActivePartners(e) { + u.getInstance().getSavegame().assignedPartners = e; + } + static getRoulette() { + return u.getInstance().getSavegame().roulette || []; + } + static setRoulette(e) { + u.getInstance().getSavegame().roulette = e; + } + static getActiveTasks() { + return u.getInstance().getSavegame().activeTasks || []; + } + static setActiveTasks(e, t) { + u.getInstance().getSavegame().activeTasks = e; + } + static getFinishedMajors() { + return u.getInstance().getSavegame().finishedMajors || []; + } + static setFinishedMajors(e) { + u.getInstance().getSavegame().finishedMajors = e; + } + static getFinishedPunishments() { + return u.getInstance().getSavegame().finishedPunishments || []; + } + static setFinishedPunishments(e) { + u.getInstance().getSavegame().finishedPunishments = e; + } + static getBlockedPunishments() { + return u.getInstance().getSavegame().blockedPunishments || []; + } + static setBlockedPunishments(e) { + u.getInstance().getSavegame().blockedPunishments = e; + } + static getActivePunishments() { + return u.getInstance().getSavegame().activePunishments || []; + } + static setActivePunishments(e) { + u.getInstance().getSavegame().activePunishments = e; + } + static getEnduredPunishments() { + return u.getInstance().getSavegame().enduredPunishments || 0; + } + static setEnduredPunishments(e) { + u.getInstance().getSavegame().enduredPunishments = e; + } + static getClassSkipTokens() { + return u.getInstance().getSavegame().classSkipTokens || 0; + } + static setClassSkipTokens(e) { + u.getInstance().getSavegame().classSkipTokens = e; + } + static get classesData() { + return u.getInstance().multipliedObjectsChache.classes; + } + static get majorsData() { + return u.getInstance().multipliedObjectsChache.majors; + } + static get partnersData() { + return u.getInstance().map.partners; + } + static get clubsData() { + return u.getInstance().map.clubs; + } + static get punishmentsData() { + return u.getInstance().multipliedObjectsChache.punishments; + } + static get rouletteData() { + return u.getInstance().map.rouletteOptions; + } + static get requiredCreditsToUnlockEliteClubs() { + return u.getInstance().static.requiredCreditsToUnlockEliteClubs; + } + static get requiredCreditsUnlockIntermediate() { + return u.getInstance().static.requiredCreditsUnlockIntermediate; + } + static get requiredCreditsUnlockAdvanced() { + return u.getInstance().static.requiredCreditsUnlockAdvanced; + } + static get requiredCreditsUnlockMaster() { + return u.getInstance().static.requiredCreditsUnlockMaster; + } + static get requiredCreditsForGraduation() { + return u.getInstance().static.requiredCreditsForGraduation; + } + static get requiredCreditsToUnlockHardPunishments() { + return u.getInstance().static.requiredCreditsToUnlockHardPunishments; + } + } + class m { + static get expectedParameters() { + return { getView: [] }; + } + static getView() { + const e = p.clubsData, + t = s.getInstance(); + let a = "", + i = ""; + for (const t in e) { + let s = e[t]; + const n = m.getCardHtml(s); + "normal" === s.tier ? (a += n) : "elite" === s.tier && (i += n); + } + return `
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    `; + } + static getCardHtml(e) { + const t = s.getInstance(); + let a = h.isClubLocked(e.id), + i = h.isClubActive(e.id), + o = n.getRandomString(); + return `
    \n
    \n\n
    \n \n \n \n ${i ? n.getBackdropContainer(t.T("club-status-active", "Active") + ' ', "success") : ""}\n ${a ? n.getBackdropContainer(t.T("club-status-locked", "Locked") + ' ', "danger") : ""} \n ${n.getButtonsContainer( + [ + ``, + m.getJoinButton(e.id), + m.getDropButton(e.id), + ], + )}\n
    \n
    \n
      \n ${m.getPerksHtml(e.id)}\n
    \n
    \n
    \n
    \n
    \n
    ${e.name}
    \n

    ${e.description}

    \n
    \n
    \n
    `; + } + static getJoinButton(e) { + return h.isJoinButtonAvailable(e) + ? `` + : ""; + } + static getDropButton(e) { + return h.isDropButtonAvailable(e) + ? `` + : ""; + } + static getPerksHtml(e) { + const t = s.getInstance(); + let a = h.getClubPerks(e), + i = ""; + for (let e in a) + i += `
  • \n
    \n
    \n ${t.T("club-modifier-activity", "Activity")}:\n
    \n
    ${a[e].job}
    \n
    \n
    \n
    \n ${t.T("club-modifier-perk", "Perk")}:\n
    \n
    ${a[e].perk}
    \n
    \n
  • `; + return i; + } + } + class g { + static get expectedParameters() { + return { getView: ["clubId"] }; + } + static getView(e) { + const t = e.clubId, + a = h.isClubLocked(t), + i = h.isClubActive(t), + n = s.getInstance(); + let o = p.clubsData[t]; + return `
    \n

    ${o.name}

    \n
    \n
    \n
    \n
    \n \n \n \n ${a ? `
    ${n.T("club-status-locked", "Locked")}
    ` : ""}\n ${i ? `
    ${n.T("club-status-active", "Active")}
    ` : ""}\n
    \n
    \n
    \n

    ${o.description}${g.getCommentHtml(o.comment)}

    \n
      \n
    • ${n.T("club-detail-modifiers", "Available perks")}:
    • \n ${g.getPerksHtml(o.id)}\n
    \n
    \n ${g.getJoinButton(o.id)}\n ${g.getDropButton(o.id)}\n
    \n
    \n
    \n
    \n
    \n `; + } + static getCommentHtml(e) { + return !e || null == e || e.length <= 0 + ? "" + : `
    ${e}`; + } + static getPerksHtml(e) { + const t = s.getInstance(); + let a = h.getClubPerks(e), + i = ""; + for (let s in a) + i += `
  • \n
    \n
    \n ${t.T("club-modifier-activity", "Activity")}:\n\n
    \n
    ${a[s].job}
    \n
    \n
    \n
    \n ${t.T("club-modifier-perk", "Perk")}:\n
    \n
    ${a[s].perk}\n ${g.activatePerk(e, s)}\n
    \n
    \n
  • `; + return i; + } + static getJoinButton(e) { + return h.isJoinButtonAvailable(e) + ? `
    ` + : ""; + } + static getDropButton(e) { + return h.isDropButtonAvailable(e) + ? `
    ` + : ""; + } + static activatePerk(e, t) { + const a = h.isClubActive(e), + i = h.isPerkActive(e, t), + o = h.canActivatePerk(e, t), + r = h.isMaxPerksActive(), + l = n.getSetting("enableEasyMode"); + return !r && o && a && !i + ? `` + : a && i && l + ? `` + : a && i + ? `` + : ""; + } + } + class h { + static isJoinButtonAvailable(e) { + const t = h.getJoinedClub(e), + a = h.isClubLocked(e), + s = h.isMaxClubJoined(); + return !t && !a && !s; + } + static isDropButtonAvailable(e) { + return h.getJoinedClub(e); + } + static getClubPerks(e) { + return p.clubsData[e].perks; + } + static getJoinedClub(e) { + const t = p.getAssignedClubs().filter((t) => t.id == e); + return 0 !== t.length && t[0]; + } + static joinClub(e) { + if (h.getJoinedClub(e)) return; + const t = s.getInstance(); + if (h.isMaxClubJoined()) + return void n.showToast( + t.T("club-max-clubs-header", "Maximum clubs assigned"), + t.T( + "club-max-clubs-content", + "You are only allowed to join %s clubs at a time.", + [o.maxConcurrentClubs], + ), + ); + let a = p.getAssignedClubs(), + i = { id: e, activePerks: {} }; + (a.push(i), + p.setAssignedClubs(a), + _.getInstance().inAppNavigation("?page=club&clubId=" + e)); + } + static dropClub(e) { + let t = p.getAssignedClubs(); + ((t = t.filter((t) => t.id !== e)), + p.setAssignedClubs(t), + _.getInstance().inAppNavigation("?page=clubs")); + } + static isClubActive(e) { + return !!h.getJoinedClub(e); + } + static isPerkActive(e, t) { + const a = h.getJoinedClub(e); + return ( + !!a && + void 0 !== a.activePerks[t] && + !!a.activePerks[t].active && + !!n.isToday(a.activePerks[t].activatedOn) + ); + } + static canActivatePerk(e, t) { + return "8" !== e || h.getActiveClubPerks(e).length <= 0; + } + static isMaxPerksActive() { + return h.getAllActivePerks() >= o.maxConcurrentClubPerks; + } + static isMaxClubJoined() { + return p.getAssignedClubs().length >= o.maxConcurrentClubs; + } + static getActiveClubPerks(e) { + if (!h.isClubActive(e)) return []; + return h.getAllActivePerks().filter((t) => t.clubId === e); + } + static getAllActivePerks() { + let e = p.getAssignedClubs(), + t = []; + for (let a in e) { + let s = e[a], + i = s.id, + n = s.activePerks; + for (let e in n) + h.isPerkActive(i, e) && t.push({ clubId: i, perkId: e }); + } + return t; + } + static activatePerk(e, t) { + const a = s.getInstance(); + if (h.isMaxPerksActive()) + return void n.showToast( + a.T("club-max-perks-header", "Maximum club perks active"), + a.T( + "club-max-perks-content", + "You are only allowed to activate %s club perks at a time.", + [o.maxConcurrentClubPerks], + ), + ); + if (!h.canActivatePerk(e, t)) + return void n.showToast( + a.T("club-perk-unavailable-header", "Perk can not be activated"), + a.T( + "club-perk-unavailable-content", + "It's currently not possible to activate this perk.", + ), + ); + let i = S.getActiveTags(), + r = p.clubsData[e].perks[t], + l = r.tags; + if (i.length <= 0 || (l.length > 0 && !l.some((e) => i.includes(e)))) + return void n.showToast( + a.T( + "club-perk-unavailable-tag-header", + "Perk can not be activated", + ), + a.T( + "club-perk-unavailable-tag-content", + "You don't have any class with matching tags active.", + ), + ); + const d = p + .getAssignedClubs() + .map( + (a) => ( + a.id === e && + (a.activePerks[t] = { + active: !0, + activatedOn: n.getNowUnix(), + }), + a + ), + ); + (p.setAssignedClubs(d), + x.perkActivated(r), + u.getInstance().multiplierChanged(), + _.inAppReload()); + } + static deactivatePerk(e, t) { + const a = s.getInstance(); + if (!h.isPerkActive(e, t)) + return void n.showToast( + a.T("club-perk-not-active-header", "Perk can not be deactivated"), + a.T( + "club-perk-not-active-content", + "It's currently not possible to deactivate this perk.", + ), + ); + const i = p + .getAssignedClubs() + .map((a) => (a.id === e && delete a.activePerks[t], a)), + o = p.clubsData[e].perks[t]; + (p.setAssignedClubs(i), + x.perkDeactivated(o), + u.getInstance().multiplierChanged(), + _.inAppReload()); + } + static isClubLocked(e) { + const t = p.clubsData[e]; + let a = 0, + s = S.collectedCredits; + return ( + "elite" === t.tier && (a = p.requiredCreditsToUnlockEliteClubs), + s < a + ); + } + } + class v { + static get expectedParameters() { + return { getView: [] }; + } + static getView() { + const e = p.partnersData; + let t = ""; + for (const a in e) { + let s = e[a]; + t += v.getCardHtml(s); + } + return `
    \n
    ${t}
    \n
    `; + } + static getCardHtml(e) { + const t = f.isPartnerActive(e.id), + a = n.getRandomString(); + return `
    \n
    \n
    \n \n \n \n ${t ? n.getBackdropContainer(s.getInstance().T("partner-status-active", "Active") + ' ', "success") : ""}\n ${n.getButtonsContainer( + [ + ``, + v.getJoinButton(e.id), + v.getDropButton(e.id), + ], + )}\n
    \n
    \n
      \n ${v.getPerksHtml(e.id)}\n
    \n
    \n
    \n
    \n \n
    \n
    ${e.name}
    \n

    ${e.description}

    \n
    \n
    \n
    `; + } + static getJoinButton(e) { + return f.isJoinButtonAvailable(e) + ? `` + : ""; + } + static getDropButton(e) { + return f.isDropButtonAvailable(e) + ? `` + : ""; + } + static getPerksHtml(e) { + const t = s.getInstance(); + let a = f.getPartnerPerks(e), + i = ""; + for (let e in a) + i += `
  • \n
    \n
    \n ${t.T("partner-modifier-activity", "Activity")}:\n
    \n
    ${a[e].job}
    \n
    \n
    \n
    \n ${t.T("partner-modifier-perk", "Perk")}:\n
    \n
    ${a[e].perk}
    \n
    \n
  • `; + return i; + } + } + class b { + static get expectedParameters() { + return { getView: ["partnerId"] }; + } + static getView(e) { + const t = e.partnerId, + a = f.isPartnerActive(t), + i = s.getInstance(); + let n = p.partnersData[t]; + return `
    \n

    ${n.name}

    \n
    \n
    \n
    \n
    \n \n \n \n ${a ? `
    ${i.T("partner-status-active", "Active")}
    ` : ""}\n
    \n
    \n
    \n

    ${n.description}

    \n
      \n
    • ${i.T("partner-detail-modifiers", "Available perks")}:
    • \n ${b.getPerksHtml(n.id)}\n
    \n
    \n ${b.getJoinButton(n.id)}\n ${b.getDropButton(n.id)}\n
    \n
    \n
    \n
    \n
    \n `; + } + static getPerksHtml(e) { + const t = s.getInstance(); + let a = f.getPartnerPerks(e), + i = ""; + for (let s in a) + i += `
  • \n
    \n
    \n ${t.T("partner-modifier-activity", "Activity")}:\n
    \n
    ${a[s].job}
    \n
    \n
    \n
    \n ${t.T("partner-modifier-perk", "Perk")}:\n
    \n
    ${a[s].perk}\n ${b.activatePerk(e, s)}\n
    \n
    \n
  • `; + return i; + } + static getJoinButton(e) { + return f.isJoinButtonAvailable(e) + ? `
    ` + : ""; + } + static getDropButton(e) { + return f.isDropButtonAvailable(e) + ? `
    ` + : ""; + } + static activatePerk(e, t) { + const a = f.isPartnerActive(e), + i = f.isPerkActive(e, t), + o = f.isMaxPerksActive(), + r = n.getSetting("enableEasyMode"), + l = s.getInstance(); + return o || !a || i + ? a && i && r + ? `` + : a && i + ? `` + : "" + : ``; + } + } + class f { + static isJoinButtonAvailable(e) { + const t = f.getActivePartner(e), + a = f.isMaxPartnerJoined(); + return !t && !a; + } + static isDropButtonAvailable(e) { + return f.getActivePartner(e); + } + static getPartnerPerks(e) { + return p.partnersData[e].perks; + } + static isMaxPartnerJoined() { + return p.getActivePartners().length >= o.maxConcurrentPartner; + } + static isMaxPerksActive() { + return f.getAllActivePerks() >= o.maxConcurrentPartnerPerks; + } + static getAllActivePerks() { + let e = p.getActivePartners(), + t = []; + for (let a in e) { + let s = e[a], + i = s.id, + n = s.activePerks; + for (let e in n) + f.isPerkActive(i, e) && t.push({ partnerId: i, perkId: e }); + } + return t; + } + static getActivePartner(e) { + const t = p.getActivePartners().filter((t) => t.id == e); + return 0 !== t.length && t[0]; + } + static addPartner(e) { + if (f.getActivePartner(e)) return; + if (f.isMaxPartnerJoined()) return; + let t = p.getActivePartners(), + a = { id: e, activePerks: {} }; + (t.push(a), + p.setActivePartners(t), + _.getInstance().inAppNavigation("?page=partner&partnerId=" + e)); + } + static leavePartner(e) { + let t = p.getActivePartners(); + ((t = t.filter((t) => t.id !== e)), + p.setActivePartners(t), + _.getInstance().inAppNavigation("?page=partners")); + } + static isPartnerActive(e) { + return !!f.getActivePartner(e); + } + static isPerkActive(e, t) { + const a = f.getActivePartner(e); + return ( + !!a && + void 0 !== a.activePerks[t] && + !!a.activePerks[t].active && + !!n.isToday(a.activePerks[t].activatedOn) + ); + } + static activatePerk(e, t) { + const a = s.getInstance(); + if (!f.isPartnerActive(e)) + return void n.showToast( + a.T("partner-perk-not-active-header", "Perk can not be activated"), + a.T( + "partner-perk-not-active-content", + "This partner is not active.", + ), + ); + if (f.isMaxPerksActive()) + return void n.showToast( + a.T( + "partner-perk-max-perks-header", + "Maximum partner perks active", + ), + a.T( + "partner-perk-max-perks-content", + "You are only allowed to activate %s partner perks at a time.", + [o.maxConcurrentPartnerPerks], + ), + ); + let i = S.getActiveTags(), + r = p.partnersData[e].perks[t], + l = r.tags; + if (i.length <= 0 || (l.length > 0 && !l.some((e) => i.includes(e)))) + return void n.showToast( + a.T("partner-perk-tags-header", "Perk can not be activated"), + a.T( + "partner-perk-tags-content", + "You don't have any class with matching tags active.", + ), + ); + const d = p + .getActivePartners() + .map( + (a) => ( + a.id === e && + (a.activePerks[t] = { + active: !0, + activatedOn: n.getNowUnix(), + }), + a + ), + ); + (p.setActivePartners(d), + x.perkActivated(r), + u.getInstance().multiplierChanged(), + _.inAppReload()); + } + static deactivatePerk(e, t) { + const a = s.getInstance(); + if (!f.isPerkActive(e, t)) + return void n.showToast( + a.T( + "partner-perk-not-active-header", + "Perk can not be deactivated", + ), + a.T( + "partner-perk-not-active-content", + "It's currently not possible to deactivate this perk.", + ), + ); + const i = p + .getActivePartners() + .map((a) => (a.id === e && delete a.activePerks[t], a)), + o = p.partnersData[e].perks[t]; + (p.setActivePartners(i), + x.perkDeactivated(o), + u.getInstance().multiplierChanged(), + _.inAppReload()); + } + } + class k { + static get expectedParameters() { + return { getView: [] }; + } + static getView() { + const e = p.getActiveMajor(), + t = p.majorsData[e], + a = I.mandatoryClasses(e), + i = S.getActiveClasses(), + r = S.getFinishedClasses(), + l = p.getFinishedMajors(), + d = s.getInstance(); + let c = "", + u = "", + m = "", + g = "", + h = l.length, + v = 0, + b = 0, + f = 0, + y = 0, + w = 0; + for (const e of l) { + let t = p.majorsData[e]; + g += C.getCardHtml(t); + } + for (let e of a) { + let t = S.getAssignedClass(e), + a = p.classesData[e]; + c += P.getCardHtml(a, t, !0, "col-lg-3 col-sm-3 pb-5"); + } + for (let e of i) { + let t = p.classesData[e.id], + s = a.some((t) => t == e.id); + u += P.getCardHtml(t, e, s, "col-lg-3 col-sm-3 pb-5"); + } + for (let e of r) { + let t = p.classesData[e.id], + s = a.some((t) => t == e.id); + m += P.getCardHtml(t, e, s, "col-lg-3 col-sm-3 pb-5"); + } + for (let e of r) { + let t = p.classesData[e.id], + s = a.some((t) => t == e.id); + switch (t.tier) { + case "beginner": + v += 1; + break; + case "intermediate": + b += 1; + break; + case "advanced": + f += 1; + break; + case "master": + y += 1; + } + s && (w += 1); + } + return `
    \n

    ${d.T("progress-active-major", "Current major")}

    \n
    \n
    \n
    \n
    \n \n ${n.getButtonsContainer( + [ + ``, + ], + )}\n
    \n
    \n
    \n

    ${t.name}

    \n

    ${t.description}${k.getCurrentCredits()}${k.getPunishmentsEndured()}

    \n ${k.getGraduationButtonHtml()}\n
    ${d.T("progress-completed-classes", "Class completion")}:
    \n
      \n
    • ${d.T("class-beginner-header", "Beginner classes")}: ${v}
    • \n
    • ${d.T("class-intermediate-header", "Intermediate classes")}: ${b}
    • \n
    • ${d.T("class-advanced-header", "Advanced classes")}: ${f}
    • \n
    • ${d.T("class-master-header", "Master classes")}: ${y}
    • \n
    \n
    \n
    \n
    \n

    ${d.T("progress-active-classes", "Active classes")} [${i.length}/${o.maxConcurrentClasses}]

    \n
    \n
    \n ${u.length <= 0 ? `
    ${d.T("progress-active-classes-no", "No active classes available.")}
    ` : u}\n
    \n
    \n

    ${d.T("progress-mandatory-classes", "Mandatory classes")} [${w}/${a.length}]

    \n
    \n
    \n ${c.length <= 0 ? `
    ${d.T("progress-mandatory-classes-no", "No mandatory classes available.")}
    ` : c}\n
    \n
    \n

    ${d.T("progress-finished-majors", "Finished majors")} [${h}]

    \n
    \n
    \n ${g.length <= 0 ? `
    ${d.T("progress-finished-majors-no", "No majors finished yet.")}
    ` : g}\n
    \n
    \n

    ${d.T("progress-finished-classes", "Finished classes")} [${r.length}]

    \n
    \n
    \n ${m.length <= 0 ? `
    ${d.T("progress-finished-classes-no", "No classes finished yet.")}
    ` : m}\n
    \n
    \n
    \n `; + } + static getGraduationButtonHtml() { + const e = p.getActiveMajor(); + return I.isThesisAvailable(e) + ? `` + : ""; + } + static getPunishmentsEndured() { + let e = p.getEnduredPunishments(); + return e > 0 + ? `
    ${s.getInstance().T("progress-punishments-endured", "Punishments endured")}: ${e}` + : ""; + } + static getCurrentCredits() { + const e = s.getInstance(); + return `
    ${e.T("credits", "Credits")}: ${S.collectedCredits}/${p.requiredCreditsForGraduation}${S.collectedCredits <= 0 ? `${e.T("progress-credits-info", "You only get credits for finishing a class by attending the exam.")}` : ""}`; + } + } + class y { + static get expectedParameters() { + return { getView: [] }; + } + static getView() { + const e = p.punishmentsData, + t = s.getInstance(); + let a = "", + i = "", + n = ""; + for (const t in e) { + let s = e[t]; + "light" === s.tier + ? (a += y.getCardHtml(s)) + : "hard" === s.tier + ? (i += y.getCardHtml(s)) + : "hardcore" === s.tier && (n += y.getCardHtml(s)); + } + return `
    \n
    \n \n
    \n \n
    \n
    \n
    `; + } + static getCardHtml(e) { + const t = T.isPunishmentLocked(e.id), + a = T.isPunishmentActive(e.id), + i = void 0 !== x.getActiveTaskForObject(e.id, "punishment"), + o = T.wasFinishedBefore(e.id), + r = T.isBlocked(e.id), + l = s.getInstance(); + let d = ''; + return ( + i && (d = ''), + `
    \n
    \n
    \n \n ${n.getButtonsContainer( + [ + a || o + ? `${d}` + : "", + y.getBlockButton(e), + ], + )}\n ${a ? n.getBackdropContainer(l.T("punishment-status-active", "Active") + ' ', "success") : ""}\n ${t ? n.getBackdropContainer(l.T("punishment-status-locked", "Locked") + ' ', "danger") : ""}\n ${r ? n.getBackdropContainer(l.T("punishment-status-blocked", "Blocked") + ' ', "warning") : ""}\n
    \n
    \n
    ${e.name}
    \n
    ${y.getPunishmentTasksHtml(e)}
    \n
    \n
    \n
    ` + ); + } + static getPunishmentTasksHtml(e) { + return ""; + } + static getRollPunishmentButton(e) { + if (T.isPunishmentTierAvailable(e)) { + const t = void 0 === e ? void 0 : "" + e, + a = s.getInstance(); + return ``; + } + return ""; + } + static getBlockButton(e) { + if (!T.isPunishmentTierAvailable(e.tier)) return ""; + if ( + !T.wasFinishedBefore(e.id) && + !T.isPunishmentActive(e.id) && + !n.getSetting("enableEasyMode") + ) + return ""; + const t = T.isBlocked(e.id); + return t && !n.getSetting("enableEasyMode") + ? "" + : t + ? `` + : ``; + } + } + class w { + static get expectedParameters() { + return { getView: ["punishmentId"] }; + } + static getView(e) { + const t = e.punishmentId, + a = T.isPunishmentLocked(t), + i = T.isPunishmentActive(t), + n = x.getActiveTaskForObject(t, "punishment"), + o = s.getInstance(); + let r = p.punishmentsData[t], + l = w.getPunishmentTier( + r.tier, + o.T("punishment-tier-" + r.tier, r.tier), + ); + return `
    \n

    ${r.name}

    \n
    \n
    \n
    \n
    \n \n \n \n ${i ? `
    ${o.T("punishment-status-active", "Active")}
    ` : ""}\n ${a ? `
    ${o.T("punishment-status-locked", "Locked")}
    ` : ""}\n
    \n
    \n
    \n

    ${o.T("punishment-tier-text", "Tier")}: ${l}

    \n
    \n ${void 0 !== n ? x.getTaskProgressHtml(n) : w.getPunishmentTasksHtml(r)}\n
    \n
    \n ${w.getBlockButton(r)}\n
    \n
    \n
    \n
    \n
    \n `; + } + static getBlockButton(e) { + if (!T.isPunishmentTierAvailable(e.tier)) return ""; + if ( + !T.wasFinishedBefore(e.id) && + !T.isPunishmentActive(e.id) && + !n.getSetting("enableEasyMode") + ) + return ""; + const t = T.isBlocked(e.id); + return t && !n.getSetting("enableEasyMode") + ? "" + : t + ? `` + : ``; + } + static getPunishmentTasksHtml(e) { + let t = ""; + for (let a in e.tasks) + e.tasks[a].isExam || + (t += `
  • \n ${e.tasks[a].task}${w.getPunishmentButton(e.id, a)}${w.getRerollButton(e.id, e.tier)}\n
  • `); + return `
      ${t}
    `; + } + static getPunishmentTier(e, t) { + let a = ""; + return ( + "light" === e + ? (a = "text-success") + : "hard" === e + ? (a = "text-warning") + : "hardcore" === e && (a = "text-danger"), + `${t}` + ); + } + static getPunishmentButton(e, t) { + return T.isPunishmentActive(e) + ? `
    ` + : ""; + } + static getRerollButton(e, t) { + return T.isPunishmentActive(e) + ? `
    ` + : ""; + } + } + class T { + static unblockPunishment(e) { + let t = p.getBlockedPunishments().filter((t) => t !== e); + (p.setBlockedPunishments(t), + _.getInstance().inAppNavigation("?page=punishments")); + } + static blockPunishment(e, t) { + let a = p.getBlockedPunishments(); + (a.includes(e) || (a.push(e), p.setBlockedPunishments(a)), + T.isPunishmentActive(e) + ? (T.removeActivePunishment(e), T.getRandomPunishmentAction(t)) + : _.getInstance().inAppNavigation("?page=punishments")); + } + static isPunishmentActive(e) { + return 0 !== p.getActivePunishments().filter((t) => t === e).length; + } + static startPunishment(e, t) { + if (!T.isPunishmentActive(e)) return !1; + x.startTask(p.punishmentsData[e], "tasks", t); + } + static rerollPunishment(e, t) { + if (!T.isPunishmentActive(e)) return !1; + T.finishPunishment(e); + const a = s.getInstance(); + let i = !1; + if (!n.getSetting("enableEasyMode")) { + let e = p + .getAssignedClasses() + .filter((e) => "active" == e.status && e.attendances > 0); + if ( + (e.length <= 0 && + (e = p + .getAssignedClasses() + .filter((e) => "finished" == e.status && e.attendances > 0)), + e.length > 0) + ) { + const t = e[Math.floor(Math.random() * e.length)], + s = p.classesData[t.id]; + "active" == t.status + ? ((i = !0), + S.addClassAttendance(t.id, -1), + n.scheduleToast( + a.T( + "punishment-rerolled-knowledge-point-header", + "Punishment rerolled", + ), + a.T( + "punishment-rerolled-knowledge-point-content", + "You rerolled your punishment, you lost a knowledge point for %s.", + [s.name], + ), + "warning", + )) + : "finished" == t.status && + ((i = !0), + S.updateAssignedClassStatus(t.id, "active"), + n.scheduleToast( + a.T("punishment-rerolled-exam-header", "Punishment rerolled"), + a.T( + "punishment-rerolled-exam-content", + "You rerolled your punishment, you lost your exam attendance for %s.", + [s.name], + ), + "warning", + )); + } + } + (i || + n.scheduleToast( + a.T("punishment-rerolled-unknown-header", "Punishment rerolled"), + a.T( + "punishment-rerolled-unknown-content", + "You rerolled your punishment, this will have consequences.", + ), + "warning", + ), + T.getRandomPunishmentAction(t)); + } + static wasFinishedBefore(e) { + return p.getFinishedPunishments().includes(e); + } + static isBlocked(e) { + return p.getBlockedPunishments().includes(e); + } + static finishPunishment(e) { + let t = p.getFinishedPunishments(); + (t.includes(e) || (t.push(e), p.setFinishedPunishments(t)), + T.removeActivePunishment(e)); + } + static removeActivePunishment(e) { + let t = p.getActivePunishments().filter((t) => t !== e); + p.setActivePunishments(t); + } + static isPunishmentLocked(e) { + const t = p.punishmentsData[e]; + return !T.isPunishmentTierAvailable(t.tier); + } + static isPunishmentTierAvailable(e) { + return ( + !("hardcore" === e && !n.getSetting("enableHardcorePunishments")) && + (("hard" !== e && "hardcore" !== e) || + !(S.collectedCredits < p.requiredCreditsToUnlockHardPunishments)) + ); + } + static getRandomPunishmentAction(e) { + let t = T.getRandomPunishment(e); + t && + _.getInstance().inAppNavigation("?page=punishment&punishmentId=" + t); + } + static getRandomPunishment(e) { + const t = s.getInstance(); + if (void 0 !== e && !T.isPunishmentTierAvailable(e)) + return void n.showToast( + t.T( + "punishment-unavailable-header", + "Punishment tier not available", + ), + t.T( + "punishment-unavailable-content", + "You are not allowed to use these punishments yet.", + ), + ); + let a = p.getActivePunishments(); + if (a.length >= o.maxConcurrentPunishments) + return void n.showToast( + t.T("punishment-max-header", "No additional punishment allowed"), + t.T( + "punishment-max-content", + "You are allowed to have %s active punishments.", + [o.maxConcurrentPunishments], + ), + ); + const i = p.getBlockedPunishments(); + let r = p.punishmentsData, + l = []; + for (const t in r) { + const a = r[t]; + T.isPunishmentActive(t) || + (void 0 !== e && a.tier !== e) || + (T.isPunishmentTierAvailable(a.tier) && + (i.includes(t) || l.push(t))); + } + if (l.length <= 0) + return void n.showToast( + t.T("punishment-null-header", "No punishments available"), + t.T( + "punishment-null-content", + "Unable to determine any punishment that you can do.", + ), + ); + const d = l[Math.floor(Math.random() * l.length)]; + return (a.push(d), p.setActivePunishments(a), d); + } + } + class x { + static getActiveModifiers(e) { + let t = o.baseTaskMultiplier, + a = p.getAssignedClubs(), + s = p.getActivePartners(), + i = 0, + n = 0, + r = 0, + l = 0, + c = 0; + for (let t in a) { + let s = a[t], + o = s.id, + u = s.activePerks, + m = p.clubsData[o].perks; + for (let t in u) { + let a = m[t]; + h.isPerkActive(o, t) && + (void 0 === e || + (a.tags.length > 0 && !a.tags.some((t) => e.includes(t))) || + ("difficulty" === a.modType + ? (i += Number.isNaN(Number.isInteger(a.modVal)) + ? d.getPercentageFromText(a.job) + : a.modVal / 100) + : "punishment" === a.modType && + (l += Number.isNaN(Number.isInteger(a.modVal)) + ? 1 + : a.modVal), + "difficulty" === a.perkType + ? (i -= Number.isNaN(Number.isInteger(a.perkVal)) + ? d.getPercentageFromText(a.perk) + : a.perkVal / -100) + : "skip" === a.perkType + ? (n += Number.isNaN(Number.isInteger(a.perkVal)) + ? d.getClassSkipsFromText(a.perk) + : a.perkVal) + : "attendance" === a.perkType + ? (r += Number.isNaN(Number.isInteger(a.perkVal)) + ? 1 + : a.perkVal) + : "resetRoulette" === a.perkType && + (c += Number.isNaN(Number.isInteger(a.perkVal)) + ? 1 + : a.perkVal))); + } + } + for (let t in s) { + let a = s[t], + o = a.id, + u = a.activePerks, + m = p.partnersData[o].perks; + for (let t in u) { + let a = m[t]; + f.isPerkActive(o, t) && + (void 0 === e || + (a.tags.length > 0 && !a.tags.some((t) => e.includes(t))) || + ("difficulty" === a.modType + ? (i += Number.isNaN(Number.isInteger(a.modVal)) + ? d.getPercentageFromText(a.job) + : a.modVal / 100) + : "punishment" === a.modType && + (l += Number.isNaN(Number.isInteger(a.modVal)) + ? 1 + : a.modVal), + "difficulty" === a.perkType + ? (i -= Number.isNaN(Number.isInteger(a.perkVal)) + ? d.getPercentageFromText(a.perk) + : a.perkVal / -100) + : "skip" === a.perkType + ? (n += Number.isNaN(Number.isInteger(a.perkVal)) + ? d.getClassSkipsFromText(a.perk) + : a.perkVal) + : "attendance" === a.perkType + ? (r += Number.isNaN(Number.isInteger(a.perkVal)) + ? 1 + : a.perkVal) + : "resetRoulette" === a.perkType && + (c += Number.isNaN(Number.isInteger(a.perkVal)) + ? 1 + : a.perkVal))); + } + } + let u = t + i; + return ( + u < 0.5 && (u = 0.5), + { + multiplier: u, + classSkips: n, + bonusAttendance: r, + punishments: l, + resetRoulette: c, + } + ); + } + static perkActivated(e) { + if (!e) return; + const t = s.getInstance(); + if ("punishment" == e.modType) { + let a = Number.parseInt(e.modVal); + Number.isNaN(a) && (a = 1); + for (let e = 0; e < a; e++) + (T.getRandomPunishment(void 0), + n.scheduleToast( + t.T("task-perk-activated-header", "Perk punishment drawn"), + t.T( + "task-perk-activated-content", + "A punishment was automatically drawn.", + ), + "warning", + )); + } + if ( + ("resetRoulette" == e.perkType && + (p.setRoulette({}), + n.scheduleToast( + t.T("task-roulette-reset-header", "Roulette reset perk"), + t.T( + "task-roulette-reset-content", + "The roulette was reset, you may now try again.", + ), + "info", + )), + "skip" == e.perkType) + ) { + let a = Number.isInteger(e.perkVal) ? e.perkVal : 1; + ((a = Number.isNaN(a) ? 1 : a), + S.addClassSkipToken(a), + n.scheduleToast( + t.T("task-skip-perk-header", "Class skip perk"), + 1 == a + ? t.T("task-skip-perk-single-content", "Class skip added.") + : t.T("task-skip-perk-multi-content", "%s class skips added.", [ + a, + ]), + "info", + )); + } + } + static perkDeactivated(e) { + if (!e) return; + const t = s.getInstance(); + if ( + ("resetRoulette" == e.perkType && + (p.setRoulette({ id: void 0, rolledOn: n.getNowUnix() }), + n.scheduleToast( + t.T( + "task-roulette-undone-reset-header", + "Undone: Roulette reset perk", + ), + t.T( + "task-roulette-undone-reset-content", + "The roulette reset was undone, you may now try tomorrow again.", + ), + "info", + )), + "skip" == e.perkType) + ) { + let a = Number.isInteger(e.perkVal) ? e.perkVal : 1; + ((a = Number.isNaN(a) ? 1 : a), + (a *= -1), + S.addClassSkipToken(a), + n.scheduleToast( + t.T("task-skip-perk-removed-header", "Class skip perk removed"), + -1 == a + ? t.T( + "task-skip-perk-removed-single-content", + "Class skip removed.", + ) + : t.T( + "task-skip-perk-removed-multi-content", + "%s class skips removed.", + [a], + ), + "info", + )); + } + } + static getMultiplier(e) { + return x.getActiveModifiers(e).multiplier; + } + static startTask(e, t, a) { + const i = s.getInstance(); + let o = $.extend(!0, {}, e), + r = o[t][a], + l = r.task, + d = o[t][a].tags, + c = 0, + u = 0, + m = 0, + g = 0; + if (!l) return !1; + let h = x.getActiveModifiers(d), + v = { + id: n.getRandomString(), + object: o, + objectTaskListReference: t, + objectTaskReference: a, + multiplier: h.multiplier, + bonusAttendance: h.bonusAttendance, + classSkips: h.classSkips, + punishments: h.punishments, + resetRoulette: h.resetRoulette, + isExam: r.isExam, + pauseBonus: 0, + timers: [], + }; + (delete v.object.image, + o && + o.disableMultiplier && + 1 == o.disableMultiplier && + (v.multiplier = 1), + o && + o.disableBonusAttendance && + 1 == o.disableBonusAttendance && + (v.bonusAttendance = 0), + o && + o.disableClassSkips && + 1 == o.disableClassSkips && + (v.classSkips = 0), + o && + o.disablePunishments && + 1 == o.disablePunishments && + (v.punishments = 0), + o && + o.disableResetRoulette && + 1 == o.disableResetRoulette && + (v.resetRoulette = 0)); + let b = n.getNow().hour(23).minute(0).second(0), + f = n.getNow(); + (f > b && (f = f.add(1, "day")), f.unix() < g && (f = moment.unix(g))); + const k = (e) => + ("minutes" == e.unit || "seconds" == e.unit) && + (void 0 === e.spawnTimer || !1 !== e.spawnTimer), + y = (e) => + "punishments" == e.unit && + null != e.punTier && + !!Number.isInteger(e.value), + w = (e) => void 0 === e.provideCounter || !1 !== e.provideCounter; + for (let e of Object.keys(r.parameters)) { + let t = r.parameters[e]; + if (k(t)) { + let e = 0; + if ( + ("minutes" == t.unit + ? (e = 60 * t.value) + : "seconds" == t.unit && (e = t.value), + t.applyMultiplier && (e = Math.round(e * v.multiplier)), + e > 0) + ) { + let a = n.getNowUnix(), + s = a + e; + ((m += e), g < s && (g = s)); + let i = { + id: n.getRandomString(), + requiredTime: e, + startAt: a, + expectedFinishAt: s, + timerInfo: t.timerInfo || "", + pausedAt: void 0, + totalPauseTime: 0, + }; + (t.hiddenTask && (i.hiddenTask = !0), + t.punishTime && + t.punishTimeMinutes && + Number.isInteger(t.punishTimeMinutes) && + ((i.punishTime = !0), + (i.punishSeconds = + 60 * Number.parseInt(t.punishTimeMinutes))), + (t.hiddenTask || + (void 0 !== t.startTimerAutomatically && + !0 !== t.startTimerAutomatically)) && + ((i.pausedAt = a), (v.pauseBonus += c)), + (c = e), + (u += 1), + v.timers.push(i)); + } + } else if (y(t)) { + "" == t.punTier && (t.punTier = void 0); + for (let e = 0; e < Number.parseInt(t.value); e++) + (T.getRandomPunishment(t.punTier), + n.scheduleToast( + i.T("task-punishment-drawn-header", "Task punishment drawn"), + i.T( + "task-punishment-drawn-content", + "As defined by this task a %s punishment was automatically drawn.", + [ + t.punTier + ? t.punTier + : i.T("task-random-punishment", "random"), + ], + ), + "info", + )); + } else if (w(t)) { + let e = n.getNowUnix(), + a = { + id: n.getRandomString(), + requiredTime: 0, + startAt: e, + expectedFinishAt: e, + mustBeFinishedBy: f.endOf("day").unix(), + pausedAt: void 0, + totalPauseTime: 0, + timerInfo: t.timerInfo || "", + counter: t.value, + unit: t.unit, + }; + (t.hiddenTask && (a.hiddenTask = !0), + t.applyMultiplier && + (a.counter = Math.round(a.counter * v.multiplier)), + v.timers.push(a)); + } + } + if ((u > 1 && c > 0 && (v.pauseBonus += c), v.timers.length <= 0)) { + let e = n.getNowUnix(), + t = { + id: n.getRandomString(), + requiredTime: 0, + startAt: e, + expectedFinishAt: e, + mustBeFinishedBy: n.getNow().add(1, "day").startOf("day").unix(), + pausedAt: void 0, + totalPauseTime: 0, + timerInfo: "", + }; + v.timers.push(t); + } + let C = p.getActiveTasks(); + (C.push(v), p.setActiveTasks(C), _.inAppReload()); + } + static pauseTask(e, t) { + let a = p.getActiveTasks(); + ((a = a.map((a) => { + if (a.id === e) { + let e = n.getNowUnix(); + for (let s in a.timers) { + let i = a.timers[s]; + i.id === t && + (i.expectedFinishAt <= e || + (void 0 === i.mustBeFinishedBy && (i.pausedAt = e))); + } + } + return a; + })), + p.setActiveTasks(a), + _.inAppReload()); + } + static resumeTask(e, t) { + let a = p.getActiveTasks(); + ((a = a.map((a) => { + if (a.id === e) { + let e = n.getNowUnix(); + for (let s in a.timers) { + let i = a.timers[s]; + if (i.id !== t) continue; + if (void 0 === i.pausedAt) continue; + let n = i.pausedAt, + o = i.startAt; + i.totalPauseTime += e - n; + let r = n - o; + ((i.startAt = e), + (i.requiredTime = i.requiredTime - r), + (i.expectedFinishAt = i.startAt + i.requiredTime), + (i.pausedAt = void 0)); + } + } + return a; + })), + p.setActiveTasks(a), + _.inAppReload()); + } + static finishManualTask(e) { + let t = p.getActiveTasks(); + ((t = t.map((t) => { + if (t.id === e) + for (let e in t.timers) { + let a = t.timers[e]; + void 0 !== a.mustBeFinishedBy && (a.mustBeFinishedBy = void 0); + } + return t; + })), + p.setActiveTasks(t), + x.checkForFinishedTasks(), + _.inAppReload()); + } + static punishTask(e) { + let t = p.getActiveTasks(); + ((t = t.map((t) => { + if (t.id === e) + for (let e in t.timers) { + let a = t.timers[e], + s = n.getNowUnix(); + a.expectedFinishAt <= s || + (a.punishTime && + (a.expectedFinishAt = a.expectedFinishAt + a.punishSeconds)); + } + return t; + })), + p.setActiveTasks(t), + _.inAppReload()); + } + static failTaskAction(e) { + const t = s.getInstance(); + n.requestUserConfirmation( + t.T("task-fail-header", "Fail task"), + t.T( + "task-fail-content", + "Are you sure that you want to fail this task?", + ), + () => { + (x.failTask(e), _.inAppReload()); + }, + ); + } + static failTask(e) { + let t = p.getActiveTasks(), + a = t.find((t) => t.id === e); + if (!a) return !1; + if (a.failed) return !1; + a.failed = !0; + let s = n.getNowUnix(); + for (let e in a.timers) { + let t = a.timers[e]; + t.expectedFinishAt <= s || + ((t.expectedFinishAt = n.getNowUnix()), + (t.pausedAt = void 0), + (t.mustBeFinishedBy = void 0)); + } + return (p.setActiveTasks(t), a); + } + static failTaskPunishment(e) { + const t = s.getInstance(); + let a = 0; + ("custom" == e.object.type && + ((a = o.failCustomTask), + n.scheduleToast( + t.T("task-punishment-header", "Punishment"), + `${t.T("task-punishment-custom-task", "You failed a custom Task!")} ${o.failCustomTask > 1 ? t.T("task-punishments-drawn", "%s punishments were drawn!", [o.failCustomTask]) : t.T("task-punishment-drawn", "A punishment was drawn!")}`, + "danger", + )), + "class" == e.object.type && + ("tasks" == e.objectTaskListReference && + ((a = o.failDailyPunishment), + n.scheduleToast( + t.T("task-punishment-header", "Punishment"), + `${t.T("task-punishment-task", "You failed a task!")} ${o.failDailyPunishment > 1 ? t.T("task-punishments-drawn", "%s punishments were drawn!", [o.failDailyPunishment]) : t.T("task-punishment-drawn", "A punishment was drawn!")}`, + "danger", + )), + e.isExam && + ((a = o.failExamPunishment), + n.scheduleToast( + t.T("task-punishment-header", "Punishment"), + `${t.T("task-punishment-exam", "You failed an exam!")} ${o.failExamPunishment > 1 ? t.T("task-punishments-drawn", "%s punishments were drawn!", [o.failExamPunishment]) : t.T("task-punishment-drawn", "A punishment was drawn!")}`, + "danger", + ))), + "major" == e.object.type && + e.isExam && + ((a = o.failThesisPunishment), + n.scheduleToast( + t.T("task-punishment-header", "Punishment"), + `${t.T("task-punishment-thesis", "You failed a thesis!")} ${o.failThesisPunishment > 1 ? t.T("task-punishments-drawn", "%s punishments were drawn!", [o.failThesisPunishment]) : t.T("task-punishment-drawn", "A punishment was drawn!")}`, + "danger", + )), + "punishment" == e.object.type && + T.rerollPunishment(e.object.id, e.object.tier)); + for (let e = 0; e < a; e++) T.getRandomPunishment(void 0); + } + static isAnyTaskActive() { + let e = p.getActiveTasks(); + return e && e.length > 0; + } + static checkForFinishedTasks() { + if (!x.isAnyTaskActive()) return !1; + const e = s.getInstance(); + let t = p.getActiveTasks(), + a = t.filter((e) => { + if (e.failed) return !1; + let t = n.getNowUnix(); + for (let a in e.timers) { + let s = e.timers[a]; + if (!(s.counter && s.counter <= 0) && !(s.expectedFinishAt > t)) { + if (void 0 !== s.mustBeFinishedBy && s.mustBeFinishedBy <= t) + return !0; + if ( + void 0 !== s.pausedAt && + t - e.pauseBonus - s.pausedAt + s.totalPauseTime > + 60 * o.maxTaskPause + ) + return !0; + } + } + return !1; + }); + for (let s of a) + ("class" != s.object.type && + "major" != s.object.type && + "custom" != s.object.type) || + ((s = x.failTask(s.id)), + (t = t.filter((e) => e.id != s.id)), + t.push(s), + n.scheduleToast( + e.T("task-failed-header", "Task failed"), + e.T("task-failed-content", "You failed the task %s!", [ + s.object.name, + ]), + "danger", + )); + a.length > 0 && p.setActiveTasks(t); + let i = t.filter((e) => { + if (e.failed) return !0; + let t = n.getNowUnix(); + for (let a in e.timers) { + let s = e.timers[a]; + if (s.counter && s.counter > 0) return !1; + if (s.expectedFinishAt > t) return !1; + if (void 0 !== s.mustBeFinishedBy) return !1; + if (void 0 !== s.pausedAt) return !1; + } + return !0; + }), + r = !1, + l = !1; + for (let a of i) { + if ( + ((t = t.filter((e) => !(e.id === a.id))), "custom" == a.object.type) + ) { + if (((r = !0), a.failed)) { + x.failTaskPunishment(a); + continue; + } + n.scheduleToast( + e.T("task-custom-task-finished-header", "Custom task finished"), + e.T( + "task-custom-task-finished-content", + "You finished a custom task!", + ), + "success", + ); + } + if ("class" == a.object.type) { + let t = n.getNow().add(-1, "day").startOf("day").unix(); + for (let e in a.timers) { + let s = a.timers[e]; + s.startAt > t && (t = s.startAt); + } + if ((S.setLastAttended(a.object.id, t), (r = !0), a.failed)) { + x.failTaskPunishment(a); + continue; + } + (S.addClassAttendance(a.object.id, 1 + a.bonusAttendance), + a.isExam + ? (S.updateAssignedClassStatus(a.object.id, "finished"), + n.scheduleToast( + e.T("task-class-finished-header", "Class finished"), + e.T( + "task-class-finished-content", + "Congratulations you finished class %s!", + [a.object.name], + ), + "success", + )) + : n.scheduleToast( + e.T("task-finished-header", "Task finished"), + e.T( + "task-finished-content", + "You finished a task for %s!", + [a.object.name], + ), + "success", + )); + } + if ("major" == a.object.type) { + if (a.failed) { + ((r = !0), x.failTaskPunishment(a)); + continue; + } + ((r = !1), + n.scheduleToast( + e.T("task-major-finished-header", "Major finished"), + e.T("task-major-finished-content", "You graduated %s!", [ + a.object.name, + ]), + "success", + ), + (l = a.object.id)); + let t = p.getFinishedMajors(); + (t.push(l), p.setFinishedMajors(t), p.setActiveMajor()); + } + if ("punishment" == a.object.type) { + if (((r = !0), a.failed)) { + x.failTaskPunishment(a); + continue; + } + (T.finishPunishment(a.object.id), + n.scheduleToast( + e.T("task-punishment-finished-header", "Punishment finished"), + e.T( + "task-punishment-finished-content", + "You finished the punishment %s!", + [a.object.name], + ), + "success", + )); + } + } + (i.length > 0 && p.setActiveTasks(t), + l && _.navigate("?page=graduated&majorId=" + l), + r && _.inAppReload()); + } + static getActiveTaskForObject(e, t) { + if (x.isAnyTaskActive()) + return p + .getActiveTasks() + .find((a) => a.object.id == e && a.object.type == t); + } + static isTaskActiveForObject(e, t) { + return void 0 !== x.getActiveTaskForObject(e, t); + } + static manualTaskCountdown(e, t) { + let a = 1; + t.counter > 20 && (a = 10); + let s = p.getActiveTasks(); + ((s = s.map((s) => { + if (s.id === e) + for (let e in s.timers) { + let i = s.timers[e]; + i.id === t.id && + ((i.counter -= a), + i.counter > 0 || (i.mustBeFinishedBy = void 0)); + } + return s; + })), + p.setActiveTasks(s), + $("#manualTaskCounter-" + t.id).text("" + t.counter), + t.counter <= 0 && (x.checkForFinishedTasks(), _.inAppReload())); + } + static getTaskProgressHtml(e) { + if (!e || void 0 === e) return ""; + let t = e.object.tasks[e.objectTaskReference], + a = "", + i = n.getNowUnix(), + o = !1; + const r = s.getInstance(); + for (let t in e.timers) { + let s = e.timers[t]; + if ( + !( + s.expectedFinishAt <= i && + void 0 === s.pausedAt && + void 0 === s.mustBeFinishedBy + ) && + (!o || !s.hiddenTask) + ) + if (void 0 !== s.mustBeFinishedBy) { + o = !0; + let t = ""; + ((t = + s.counter > 0 + ? `` + : ``), + (a += `

    ${s.timerInfo.length > 0 ? `${s.timerInfo}: ` : ""}${r.T("task-finish-by-text", "This task must have been finished %s.", [n.getNow().to(moment.unix(s.mustBeFinishedBy))])}

    \n
    \n ${t}\n \n
    `)); + } else { + o = !0; + let t = setInterval(() => { + x.updateProgressTask( + s.id, + s.startAt, + s.expectedFinishAt, + s.pausedAt, + t, + s.totalPauseTime, + e.pauseBonus, + ); + }, 1e3); + (u.getInstance().addTaskInterval(s.id, t), + (a += `

    ${s.timerInfo.length > 0 ? `${s.timerInfo}:` : `${r.T("task-time-left-info", "Time left")}:`} 00:00:00

    \n
    \n
    \n
    \n
    \n ${ + void 0 !== s.pausedAt + ? `` + : `` + }\n\n ${ + s.punishTime + ? `` + : "" + }\n \n
    `)); + } + } + return `
    \n
    \n ${void 0 !== e.pausedAt ? ' ' + r.T("task-status-paused", "Task is paused") : ' ' + r.T("task-status-active", "Task in progress")}\n
    \n
    \n

    ${r.T("task-active-task", "Active task")}: ${t.task}

    \n ${a}\n
    \n
    `; + } + static updateProgressTask(e, t, a, s, i, r, l) { + let c = $("#taskProgress-" + e), + u = $("#taskTime-" + e); + if (c.length <= 0 || u.length <= 0) return (clearInterval(i), !1); + let p = n.getNowUnix(), + m = !1, + g = 0; + ((t = t), + (a = a), + void 0 !== s && + ((m = !0), (g = s - p - r + l + 60 * o.maxTaskPause), (p = s))); + let h = Math.floor(((p - t) / (a - t)) * 100); + (c.css("width", h + "%"), + c.text(h + "%"), + u.html( + `${d.dateObjectToHumanTime(a - p)} ${m ? ' ' + d.minutesToTime(Math.floor(g / 60)) : ""}`, + ), + h >= 100 && clearInterval(i), + (h >= 100 || (m && g <= 0)) && + (x.checkForFinishedTasks(), _.inAppReload())); + } + static checkForSkippedClasses() { + if (n.getSetting("enableEasyMode")) return; + const e = s.getInstance(), + t = n.getNow().add(-1, "day").startOf("day").unix(), + a = p + .getAssignedClasses() + .filter( + (e) => + "active" == e.status && + void 0 !== e.lastAttended && + e.lastAttended < t, + ); + if (a.length <= 0) return; + let i = p.getActivePunishments().length, + r = !1; + for (let s of a) { + if (x.isTaskActiveForObject(s.id, "class")) continue; + let a = s.lastAttended; + const l = p.classesData[s.id]; + for (; a < t && i < o.maxConcurrentPunishments; ) { + a = moment.unix(a).add(1, "day").unix(); + const t = moment.unix(a).day(); + 0 != t && + 6 != t && + l.days.includes(t) && + ((r = !0), + p.getClassSkipTokens() > 0 + ? p.setClassSkipTokens(p.getClassSkipTokens() - 1) + : (i++, + T.getRandomPunishment(), + n.scheduleToast( + e.T("task-class-missed-header", "Class missed"), + e.T( + "task-class-missed-content", + "You missed a class and a punishment was rolled.", + ), + "danger", + ))); + } + S.setLastAttended(s.id, t); + } + r && _.reload(); + } + } + class C { + static get expectedParameters() { + return { getView: [] }; + } + static getView() { + const e = p.majorsData; + let t = ""; + for (const a in e) { + let s = e[a]; + t += C.getCardHtml(s); + } + return `
    \n
    ${t}
    \n
    `; + } + static getCardHtml(e) { + const t = p.getActiveMajor() === e.id, + a = I.isMajorFinished(e.id), + i = a && I.getGrade(e.id), + o = I.isAnyMajorActive(), + r = n.getRandomString(), + l = x.getActiveTaskForObject(e.id, "major"), + d = void 0 !== l, + c = s.getInstance(); + let u = ''; + d && (u = ''); + let m = "major"; + return ( + a && (m = "graduated"), + `
    \n
    \n
    \n \n \n \n ${t ? n.getBackdropContainer(c.T("major-status-active", "Active") + ' ', "success") : ""}\n ${a ? n.getBackdropContainer(`${c.T("major-status-grade", "Grade")} ${i} `, "info") : ""} \n ${!o || t || a ? "" : n.getBackdropContainer(c.T("major-status-unavailable", "Not available") + ' ')}\n ${n.getButtonsContainer( + [ + `${u}`, + C.getJoinButton(e.id), + C.getDropButton(e.id), + ], + )}\n
    \n
    \n ${void 0 !== l ? x.getTaskProgressHtml(l) : `\n
      \n ${C.getThesisHtml(e)}\n
    `}\n
    \n
    \n
    \n
    \n
    ${e.name} ${e.name2}
    \n

    ${e.description}

    \n
    \n
    \n
    ` + ); + } + static getThesisHtml(e) { + let t = ""; + for (let a in e.tasks) + e.tasks[a].isExam && + (t += `
  • \n ${e.tasks[a].task}\n
  • `); + return t; + } + static getJoinButton(e) { + return I.isJoinButtonAvailable(e) + ? `` + : ""; + } + static getDropButton(e) { + return I.isDropButtonAvailable(e) + ? `` + : ""; + } + } + class M { + static get expectedParameters() { + return { getView: ["majorId"] }; + } + static getView(e) { + const t = e.majorId, + a = I.isMajorActive(t), + i = x.getActiveTaskForObject(t, "major"), + n = s.getInstance(); + let o = p.majorsData[t]; + return `
    \n

    ${o.name}

    \n
    \n
    \n
    \n
    \n \n \n \n ${a ? `
    ${n.T("major-status-active", "Active")}
    ` : ""}\n
    \n
    \n
    \n

    \n ${n.T("major-detail-prerequisites", "Prerequisites")}: ${A.prerequisitesToString(o.prerequisites)}\n

    \n

    ${o.description}

    \n ${M.getThesisRequirements(o.id)}\n ${void 0 !== i ? x.getTaskProgressHtml(i) : `\n
      \n
    • ${n.T("major-detail-thesis", "Available thesis topics")}:
    • \n ${M.getThesisHtml(o)}\n
    `}\n
    \n ${M.getJoinButton(o.id)}\n ${M.getDropButton(o.id)}\n
    \n
    \n
    \n
    \n
    \n `; + } + static getThesisHtml(e) { + let t = ""; + for (let a in e.tasks) + e.tasks[a].isExam && + (t += `
  • \n
    \n
    \n \n
    \n
    ${e.tasks[a].task}${M.getThesisButton(e.id, a)}
    \n
    \n
  • `); + return t; + } + static getThesisButton(e, t) { + return I.isThesisAvailable(e) + ? `
    ` + : ""; + } + static getJoinButton(e) { + return I.isJoinButtonAvailable(e) + ? `
    ` + : ""; + } + static getDropButton(e) { + return I.isDropButtonAvailable(e) + ? `
    ` + : ""; + } + static getThesisRequirements(e) { + const t = s.getInstance(); + let a = `
  • ${t.T("major-detail-thesis-requirement-header", "Thesis requirements")}:
  • `; + return ( + p.getActiveMajor() != e && + (a += `
  • \n
    \n
    \n \n
    \n
    ${t.T("major-detail-thesis-requirement-join", "You must join this major, before you can do the thesis.")}
    \n
    \n
  • `), + S.collectedCredits < p.requiredCreditsForGraduation && + (a += `
  • \n
    \n
    \n \n
    \n
    ${t.T("major-detail-thesis-requirement-credits", "You must collect at least %s credits.", [p.requiredCreditsForGraduation])}
    \n
    \n
  • `), + p.getActivePunishments().length > 0 && + (a += `
  • \n
    \n
    \n \n
    \n
    ${t.T("major-detail-thesis-requirement-punishments", "You must finish all punishments.")}
    \n
    \n
  • `), + I.prerequisitesDone(e) || + (a += `
  • \n
    \n
    \n \n
    \n
    ${t.T("major-detail-thesis-requirement-prerequisites", "You must finish all prerequisites.")}
    \n
    \n
  • `), + x.isTaskActiveForObject(e, "major") && + (a += `
  • \n
    \n
    \n \n
    \n
    ${t.T("major-detail-thesis-requirement-thesis", "You can only attend one thesis at a time.")}
    \n
    \n
  • `), + `
      ${a}
    ` + ); + } + } + class I { + static getGrade(e) { + let t = 0, + a = 0; + const s = I.mandatoryClasses(e); + for (const e of s) + ((t += S.getAssignedClass(e).attendances), + (a += o.maxAttendances[p.classesData[e].tier])); + return n.getGrade(t, a); + } + static isJoinButtonAvailable(e) { + return !I.isAnyMajorActive() && !I.isMajorFinished(e); + } + static isDropButtonAvailable(e) { + return I.isMajorActive(e); + } + static isMajorActive(e) { + return p.getActiveMajor() === e; + } + static isMajorFinished(e) { + return p.getFinishedMajors().includes(e); + } + static mandatoryClasses(e) { + const t = p.majorsData[e].prerequisites; + let a = []; + a = a.concat(t); + for (let e of t) a = a.concat(S.getClassPrerequisitesDeep(e)); + return ((a = a.sort((e, t) => e - t)), [...new Set(a)]); + } + static isAnyMajorActive() { + return void 0 !== p.getActiveMajor(); + } + static joinMajor(e) { + (p.setActiveMajor(e), + _.getInstance().inAppNavigation("?page=progress")); + } + static dropMajor() { + const e = s.getInstance(); + n.requestUserConfirmation( + e.T("major-drop-confirm-header", "Drop major"), + e.T( + "major-drop-confirm-content", + "Are you sure that you want to drop your current major?", + ), + () => { + p.setActiveMajor(); + for (let e = 0; e < o.majorDropPunishments; e++) { + T.getRandomPunishment() || (e = o.majorDropPunishments); + } + (n.scheduleToast( + e.T("major-dropped-header", "Major dropped"), + e.T( + "major-dropped-content", + "For dropping the major punishments where drawn.", + ), + "danger", + ), + _.getInstance().inAppNavigation("?page=majors")); + }, + ); + } + static startThesis(e, t) { + if (!I.isThesisAvailable(e)) return !1; + x.startTask(p.majorsData[e], "tasks", t); + } + static isThesisAvailable(e) { + return ( + p.getActiveMajor() == e && + !(S.collectedCredits < p.requiredCreditsForGraduation) && + !(p.getActivePunishments().length > 0) && + !!I.prerequisitesDone(e) && + !x.isTaskActiveForObject(e, "major") + ); + } + static prerequisitesDone(e) { + const t = p.majorsData[e]; + if (!t) return !1; + if (0 === t.prerequisites.length) return !0; + return !( + t.prerequisites.filter((e) => { + const t = S.getAssignedClass(e); + return !t || "finished" !== t.status; + }).length > 0 + ); + } + } + class P { + static get expectedParameters() { + return { getView: [] }; + } + static getView() { + const e = p.classesData, + t = n.getSetting("hideActiveClasses"), + a = n.getSetting("hideFinishedClasses"), + i = p.getActiveMajor(), + o = I.mandatoryClasses(i), + r = s.getInstance(); + let l = "", + d = "", + c = "", + u = "", + m = !0, + g = !0, + h = !0, + v = "beginner", + b = 1, + f = 2, + k = 3, + y = []; + for (const s in e) { + let i = S.getAssignedClass(s); + if (i) { + if (t && "active" === i.status) continue; + if (a && "finished" === i.status) continue; + } + let n = e[s]; + ((n.assigned = i), y.push(n)); + } + y = y.sort((e, t) => e.name.localeCompare(t.name)); + for (const e of y) { + const t = o.some((t) => t == e.id), + a = P.getCardHtml(e, e.assigned, t); + "beginner" === e.tier + ? (l += a) + : "intermediate" === e.tier + ? (d += a) + : "advanced" === e.tier + ? (c += a) + : "master" === e.tier && (u += a); + } + return ( + (m = l.length > 0), + (g = d.length > 0), + (h = c.length > 0), + m || + ((v = "intermediate"), + g || ((v = "advanced"), h || (v = "master"))), + h || (k -= 1), + g || ((k -= 1), (f -= 1)), + m || ((k -= 1), (f -= 1), (b -= 1)), + `
    \n
    \n \n
    \n \n
    \n
    \n
    ` + ); + } + static getCardHtml(e, t, a, i) { + let o = S.isClassLocked(e.id), + r = x.getActiveTaskForObject(e.id, "class"), + l = t ? t.status : "", + d = void 0 !== r, + c = "finished" === l, + u = c && S.getGrade(e.id), + p = "active" === l, + m = p && S.getAttendanceRate(e.id), + g = n.getRandomString(), + h = s.getInstance(), + v = ''; + return ( + d && (v = ''), + `
    \n
    \n\n
    \n \n \n \n ${p ? n.getBackdropProgressContainer(h.T("class-status-active", "Active") + ' ', m) : ""}\n ${o ? n.getBackdropContainer(h.T("class-status-locked", "Locked") + ' ', "danger") : ""} \n ${c ? n.getBackdropContainer(`${h.T("class-status-grade", "Grade")} ${u} `, "info") : ""} \n ${n.getButtonsContainer( + [ + c + ? "" + : `${v}`, + P.getJoinButton(e.id), + P.getDropButton(e.id), + P.getRetakeButton(e.id), + ], + )}\n
    \n
    \n ${void 0 !== r ? x.getTaskProgressHtml(r) : `\n
      \n
    • ${h.T("class-card-tasks", "Available tasks")}:
    • \n ${P.getTasksHtml(e, t.attendances || 0)}\n
    • ${h.T("class-card-exams", "Available exams")}:${p || c ? S.getKnowledgePointsInfo(e.id) : ""}
    • \n\n ${S.isExamAvailable(e.id) ? P.getExamsHtml(e) : `
    • \n
      \n
      \n \n
      \n
      ${h.T("class-card-exams-locked", "Currently locked")}
      \n
      \n
    • `}\n\n
    `}\n
    \n
    \n
    \n\n
    \n
    \n ${e.name} \n ${a ? ' ' : ""}\n ${e.name2}\n
    \n

    ${e.description}

    \n
    \n
    \n
    ` + ); + } + static getJoinButton(e) { + return S.isJoinButtonAvailable(e) + ? `` + : ""; + } + static getDropButton(e) { + return S.isDropButtonAvailable(e) + ? `` + : ""; + } + static getRetakeButton(e) { + return S.isRetakeButtonAvailable(e) + ? `` + : ""; + } + static getTasksHtml(e, t) { + let a = "", + s = S.getTodaysTasks(e.tasks, t, e.taskListSize); + for (let e of s) + a += `
  • \n
    \n
    \n \n
    \n
    ${e.task}
    \n
    \n
  • `; + return a; + } + static getExamsHtml(e) { + let t = ""; + for (let a in e.tasks) + e.tasks[a].isExam && + (t += `
  • \n
    \n
    \n \n
    \n
    ${e.tasks[a].task}
    \n
    \n
  • `); + return t; + } + } + class A { + static get expectedParameters() { + return { getView: ["classId"] }; + } + static getView(e) { + const t = e.classId, + a = S.isClassLocked(t), + i = S.getAssignedClass(t), + o = i ? i.status : "", + r = x.getActiveTaskForObject(t, "class"), + l = void 0 !== r, + d = "finished" === o, + c = "active" === o, + u = d && S.getGrade(t), + m = s.getInstance(); + let g = p.classesData[t]; + return `
    \n

    ${g.name}

    \n
    \n
    \n \n
    \n
    \n
    \n \n \n \n ${a ? `
    ${m.T("class-status-locked", "Locked")}
    ` : ""}\n ${d ? `
    ${m.T("class-status-grade", "Grade")} ${u}
    ` : ""}\n ${c ? `
    ${m.T("class-status-active", "Active")}
    ` : ""}\n
    \n
    \n
    \n ${A.getPrerequisites(g.prerequisites)}\n

    ${m.T("class-detail-days", "Classes on")}: ${n.daysToString(g.days)}

    \n ${A.getMandatoryInfoHtml(g.id)}\n ${A.getBonusAttendanceDisabledHtml(g)}\n

    \n ${g.description}\n ${A.getCommentHtml(g.comment)}\n

    \n ${l ? x.getTaskProgressHtml(r) : d ? "" : `\n
      \n
    • ${m.T("class-detail-tasks", "Available task options")}:
    • \n ${A.getTasksHtml(g, i.attendances || 0)}\n
    \n ${S.isExamAvailable(g.id) ? `
      \n
    • ${m.T("class-detail-exams", "Available exam options")}:${c || d ? S.getKnowledgePointsInfo(g.id) : ""}
    • \n
    • ${m.T("class-detail-expected-grade", "If you take the exam now the expected grade is %s.", [S.getGrade(g.id)])}
    • \n ${A.getExamsHtml(g)}\n
    ` : A.getExamPlaceholder(i, g)}\n
    \n ${A.getJoinButton(g.id)}\n ${A.getDropButton(g.id)}\n
    \n `}\n ${A.getRetakeInfo(g.id)}\n
    \n
    \n \n
    \n
    \n
    `; + } + static getMandatoryInfoHtml(e) { + return S.isClassMandatory(e) + ? `

    ${s.getInstance().T("class-detail-mandatory", "This is a mandatory class %s for your currently active major.", [''])}

    ` + : ""; + } + static getBonusAttendanceDisabledHtml(e) { + return e.disableBonusAttendance || !1 + ? `

    ${s.getInstance().T("class-detail-bonus-attendance-disabled", "This class disabled any bonus attendance modifiers!")}

    ` + : ""; + } + static getTasksHtml(e, t) { + let a = "", + s = S.getTodaysTasks(e.tasks, t, e.taskListSize); + for (let t of s) + a += `
  • \n
    \n
    \n \n
    \n
    ${t.task} ${A.getDailyButton(e.id, t.id)}
    \n
    \n
  • `; + return a; + } + static getExamsHtml(e) { + let t = ""; + for (let a in e.tasks) + e.tasks[a].isExam && + (t += `
  • \n
    \n
    \n \n
    \n
    ${e.tasks[a].task}${A.getExamButton(e.id, a)}
    \n
    \n
  • `); + return t; + } + static getCommentHtml(e) { + return !e || null == e || e.length <= 0 + ? "" + : `
    ${e}`; + } + static getPrerequisites(e) { + const t = A.prerequisitesToString(e); + return t.length > 0 + ? `

    ${s.getInstance().T("prerequisites", "Prerequisites")}: ${t}

    ` + : ""; + } + static prerequisitesToString(e) { + return e + .map( + (e) => + `${p.classesData[e].name}`, + ) + .join(", "); + } + static getJoinButton(e) { + return S.isJoinButtonAvailable(e) + ? `` + : ""; + } + static getDropButton(e) { + return S.isDropButtonAvailable(e) + ? `` + : ""; + } + static getRetakeInfo(e) { + const t = s.getInstance(); + return S.isRetakeButtonAvailable(e) + ? `\n
    \n
    \n ${t.T("class-detail-retake-warning", "You already finished this class and got a %s, there is still room for improvement. You may retake this class and collect additional knowledge before attempting the exam again to get a better grade.", [`${S.getGrade(e)}`])}\n
    \n \n
    \n ` + : ""; + } + static getDailyButton(e, t) { + return S.isDailyAvailable(e) + ? `
    ` + : ""; + } + static getExamButton(e, t) { + return S.isExamAvailable(e) + ? `
    ` + : ""; + } + static getExamPlaceholder(e, t) { + const a = s.getInstance(); + let i = `
  • ${a.T("class-detail-exam-requirement-header", "Exam unlock requirements")}:
  • `; + return ( + "active" !== e.status && + (i += `
  • \n
    \n
    \n \n
    \n
    ${a.T("class-detail-exam-requirement-join", "You must join this class, before you can do any tasks or exams.")}
    \n
    \n
  • `), + (S.wasAttendedToday(t.id) || + x.isTaskActiveForObject(t.id, "class")) && + (i += `
  • \n
    \n
    \n \n
    \n
    ${a.T("class-detail-exam-requirement-attended", "You already attended this class today, you can't do a task and the exam on the same day.")}
    \n
    \n
  • `), + e.attendances < o.expectedAttendance[t.tier] && + (i += `
  • \n
    \n
    \n \n
    \n
    ${a.T("class-detail-exam-requirement-attendance", "You must have collected at least %s knowledge points, you accumulated %s knowledge points.", [o.expectedAttendance[t.tier], e.attendances])}
    \n
    \n
  • `), + e.attendances < + Object.entries(t.tasks).filter((e) => !e[1].isExam).length && + (i += `
  • \n
    \n
    \n \n
    \n
    ${a.T("class-detail-exam-requirement-attendance-tasks", "You must have done all available tasks.")}
    \n
    \n
  • `), + p.getActivePunishments().length > 0 && + (i += `
  • \n
    \n
    \n \n
    \n
    ${a.T("class-detail-exam-requirement-punishment", "You must finish all punishments.")}
    \n
    \n
  • `), + n.hasMatchingDate(t.days) || + (i += `
  • \n
    \n
    \n \n
    \n
    ${a.T("class-detail-exam-requirement-days", "You can only attend this exam on the defined days.")}
    \n
    \n
  • `), + `
      ${i}
    ` + ); + } + } + class S { + static getKnowledgePointsInfo(e) { + return ``; + } + static getAttendance(e) { + return S.getAssignedClass(e).attendances; + } + static getMaxAttendances(e) { + return o.maxAttendances[p.classesData[e].tier]; + } + static getAttendanceRate(e) { + return (S.getAttendance(e) / S.getMaxAttendances(e)) * 100; + } + static getGrade(e) { + return n.getGrade(S.getAttendance(e), S.getMaxAttendances(e)); + } + static startDaily(e, t) { + if (!S.isDailyAvailable(e)) return !1; + x.startTask(p.classesData[e], "tasks", t); + } + static startExam(e, t) { + if (!S.isExamAvailable(e)) return !1; + x.startTask(p.classesData[e], "tasks", t); + } + static isJoinButtonAvailable(e) { + const t = S.getAssignedClass(e), + a = S.isClassLocked(e); + return ( + !S.isMaxClassesReached() && + !a && + (!t || ("active" !== t.status && "finished" !== t.status)) + ); + } + static isRetakeButtonAvailable(e) { + const t = S.getAssignedClass(e); + return t && "finished" === t.status && "A+" !== S.getGrade(e); + } + static isDropButtonAvailable(e) { + const t = S.getAssignedClass(e); + return t && "active" === t.status; + } + static getAssignedClass(e) { + const t = p.getAssignedClasses().filter((t) => t.id == e); + return 0 !== t.length && t[0]; + } + static getActiveClasses() { + return p.getAssignedClasses().filter((e) => "active" == e.status); + } + static getFinishedClasses() { + return p.getAssignedClasses().filter((e) => "finished" == e.status); + } + static updateAssignedClassStatus(e, t) { + const a = p + .getAssignedClasses() + .map((a) => (a.id === e && (a.status = t), a)); + p.setAssignedClasses(a); + } + static addAssignedClass(e) { + if (S.getAssignedClass(e)) + return void S.updateAssignedClassStatus(e, "active"); + const t = { id: e, status: "active", attendances: 0 }; + let a = p.getAssignedClasses(); + (a.push(t), p.setAssignedClasses(a)); + } + static getActiveTags() { + let e = S.getActiveClasses(), + t = p.classesData, + a = []; + for (let s of e) { + let e = t[s.id].tasks; + for (let t of Object.keys(e)) a = a.concat(e[t].tags); + } + return [...new Set(a)]; + } + static addClassSkipToken(e) { + if (!Number.isInteger(e)) return; + let t = p.getClassSkipTokens() + e; + (t > o.maxConcurrentClasses && (t = o.maxConcurrentClasses), + t < 0 && (t = 0), + p.setClassSkipTokens(t)); + } + static wasAttendedToday(e) { + if (n.getSetting("enableEasyMode")) return !1; + const t = S.getAssignedClass(e); + if (!t) return !1; + let a = t.lastAttended; + return !(!a || void 0 === a) && n.isToday(a); + } + static setLastAttended(e, t) { + let a = p.getAssignedClasses(); + ((a = a.map((a) => (a.id == e && (a.lastAttended = t), a))), + p.setAssignedClasses(a)); + } + static addClassAttendance(e, t) { + let a = p.getAssignedClasses(); + ((a = a.map((a) => (a.id == e && (a.attendances += t), a))), + p.setAssignedClasses(a)); + } + static isClassMandatory(e) { + return I.mandatoryClasses(p.getActiveMajor()).some((t) => t == e); + } + static getClassPrerequisitesDeep(e) { + const t = p.classesData[e].prerequisites; + let a = []; + a = a.concat(t); + for (let e of t) a = a.concat(S.getClassPrerequisitesDeep(e)); + return a; + } + static isClassLocked(e) { + const t = p.classesData[e]; + let a = 0, + s = S.collectedCredits; + return ( + "intermediate" === t.tier + ? (a = p.requiredCreditsUnlockIntermediate) + : "advanced" === t.tier + ? (a = p.requiredCreditsUnlockAdvanced) + : "master" === t.tier && (a = p.requiredCreditsUnlockMaster), + s < a || !S.prerequisitesDone(e) + ); + } + static get collectedCredits() { + return S.getFinishedClasses().reduce( + (e, t) => e + (o.classesExamCredits[p.classesData[t.id].tier] || 0), + 0, + ); + } + static isMaxClassesReached() { + return S.getActiveClasses().length >= o.maxConcurrentClasses; + } + static retakeClass(e) { + const t = s.getInstance(); + S.isMaxClassesReached() + ? n.showToast( + t.T("class-max-classes-header", "Maximum classes active"), + t.T( + "class-max-classes-content", + "You are only allowed to join %s classes at a time.", + [o.maxConcurrentClasses], + ), + ) + : n.requestUserConfirmation( + t.T("class-retake-confirmation-header", "Retake class"), + t.T( + "class-retake-confirmation-content", + "Are you sure that you want to retake this class? You will not loose any accumulated experience but must attend the exam again.", + ), + () => { + (S.updateAssignedClassStatus(e, "active"), + S.setLastAttended( + e, + n.getNow().add(-1, "day").startOf("day").unix(), + ), + _.getInstance().inAppNavigation("?page=class&classId=" + e)); + }, + ); + } + static joinClass(e) { + const t = s.getInstance(); + S.isMaxClassesReached() + ? n.showToast( + t.T("class-max-classes-header", "Maximum classes active"), + t.T( + "class-max-classes-content", + "You are only allowed to join %s classes at a time.", + [o.maxConcurrentClasses], + ), + ) + : (S.addAssignedClass(e), + _.getInstance().inAppNavigation("?page=class&classId=" + e)); + } + static dropAssignedClass(e) { + const t = s.getInstance(); + n.requestUserConfirmation( + t.T("class-drop-confirmation-header", "Drop class"), + t.T( + "class-drop-confirmation-content", + "Are you sure that you want to drop this class?", + ), + () => { + (S.updateAssignedClassStatus(e, "dropped"), + _.getInstance().inAppNavigation("?page=classes")); + }, + ); + } + static finishAssignedClass(e) { + (S.updateAssignedClassStatus(e, "finished"), + _.getInstance().inAppNavigation("?page=class&classId=" + e)); + } + static isDailyAvailable(e) { + const t = S.getAssignedClass(e); + if (!t || "active" !== t.status) return !1; + if (S.wasAttendedToday(e)) return !1; + const a = p.classesData[e]; + return ( + !!n.hasMatchingDate(a.days) && !x.isTaskActiveForObject(e, "class") + ); + } + static prerequisitesDone(e) { + const t = p.classesData[e]; + if (!t) return !1; + if (0 === t.prerequisites.length) return !0; + return !( + t.prerequisites.filter((e) => { + const t = S.getAssignedClass(e); + return !t || "finished" !== t.status; + }).length > 0 + ); + } + static isExamAvailable(e) { + const t = S.getAssignedClass(e); + if (!t) return !1; + if ("active" !== t.status) return !1; + if (S.wasAttendedToday(e)) return !1; + const a = p.classesData[e]; + return ( + !(t.attendances < o.expectedAttendance[a.tier]) && + !( + t.attendances < + Object.entries(a.tasks).filter((e) => !e[1].isExam).length + ) && + !!n.hasMatchingDate(a.days) && + !x.isTaskActiveForObject(e, "class") && + !(p.getActivePunishments().length > 0) + ); + } + static getTodaysTasks(e, t, a) { + (!a || a <= 0) && (a = o.defaultTaskListSize); + const s = (e = Object.entries(e) + .filter((e) => !e[1].isExam) + .map((e) => e[1])).length; + if (s <= a) return e; + let i = [], + n = t; + for (; i.length < a; ) (i.push(e[n % s]), n++); + return i; + } + } + class j { + static get expectedParameters() { + return { getView: [] }; + } + static getView() { + const e = s.getInstance(); + let t = "", + a = 0, + i = u.getInstance(); + if ( + (a++, + (t += j.getHelpEntryHtml( + e.T("help-overview-header", "Game overview"), + `\n
      \n
    • 1. ${e.T( + "help-overview-1", + "Join a %smajor%s", + [ + ``, + "", + ], + )}
    • \n
    • 2. ${e.T( + "help-overview-2", + "Join %smandatory classes%s %sMandatory classes are highlighted with a yellow star%s and %sextra side classes%s", + [ + ``, + "", + '', + ``, + "", + ], + )}
    • \n
    • 3. ${e.T( + "help-overview-3", + "Get involved with %sclubs%s and %spartners%s to adjust the difficulty and add additional challenges", + [ + ``, + "", + ``, + "", + ], + )}
    • \n
    • 4. ${e.T("help-overview-4", "Attend and pass classes to get %s credits", [p.requiredCreditsForGraduation])}
    • \n
    • 5. ${e.T( + "help-overview-5", + "Don't attend classes and you'll get %spunished%s", + [ + ``, + "", + ], + )}
    • \n
    • 6. ${e.T("help-overview-6", "Graduate")}
    • \n
    \n `, + "anchor" + a, + void 0, + "anchor" + (a + 1), + )), + a++, + (t += j.getHelpEntryHtml( + e.T("help-notice-header", "Game notice"), + `\n

    \n ${e.T("help-notice-content", '\n Your health takes top priority. In case you start a task that turns out to be unhealthy,\n you should absolutely "finish" it without actually doing it! If you aren\'t feeling well,\n stop whatever you are currently doing and make sure you are fine. Contact a doctor if required.\n On the same notion, suicide is not an option, you are great the way you are and before doing \n anything that cannot be undone - take a helping hand.')}\n

    \n `, + "anchor" + a, + "anchor" + (a - 1), + "anchor" + (a + 1), + )), + a++, + (t += j.getHelpEntryHtml( + e.T("help-progress-header", "Game progress notice"), + `\n

    \n ${e.T("help-progress-content", "\n All game data is stored locally in your browser. Nothing is sent or stored online.\n Private browsing mode doesn't save data and sets limits, for the best experience it is therefore recommended to play in a normal \n browser window. In case you do play in a private window make sure to export your progress and keep the map file you used handy.\n You will need the map and save game file to continue playing where you left of.")}\n

    \n `, + "anchor" + a, + "anchor" + (a - 1), + "anchor" + (a + 1), + )), + a++, + (t += j.getHelpEntryHtml( + e.T("help-majors-header", "Majors"), + `\n

    \n ${e.T("help-majors-content", "\n Choose a %sMajor%s depending on what you'd like to specialise in. \n Each one has specific mandatory classes (prerequisites) and each of those classes has \n prerequisite classes of their own. Once you join a major go to the \n %sProgress page%s to see your mandatory classes. You need to \n get %s credits before attempting to graduate. If you decide to\n change your major you can go to it's page and drop it however this will result in a \n penalty of %s random punishments.", ['', "", '', "", p.requiredCreditsForGraduation, o.majorDropPunishments])}\n

    \n `, + "anchor" + a, + "anchor" + (a - 1), + "anchor" + (a + 1), + )), + a++, + (t += j.getHelpEntryHtml( + e.T("help-classes-header", "Classes and schedule"), + `\n

    \n ${e.T("help-classes-content", "\n Every class has a weekly schedule that you need to keep track of. \n You'll need to complete one of the two daily tasks or exams to receive a knowledge point.\n If you fail to attend a class by the end of the day a punishment will be automatically \n rolled for that class. To unlock its exam you need to have attended it at least a few times \n and to not have any pending punishments. You will see a full set of the requirements if you open the class.\n Once you pass a class you can immediately enroll in another one if you wish. You can NOT join a class again or do their tasks once you've passed it. \n You can not enroll in more than %s classes at once. \n Do not enroll in too many classes if you can't keep up with the schedule. \n Classes can also be done during the weekend. Weekend classes are optional and you won't be punished for skipping them.", [o.maxConcurrentClasses])}\n

    \n `, + "anchor" + a, + "anchor" + (a - 1), + "anchor" + (a + 1), + )), + a++, + (t += j.getHelpEntryHtml( + e.T("help-punishments-header", "Punishments"), + `\n
      \n
    • ${e.T("help-punishments-1", "If you fail to attend a class by the end of the day a punishment will be automatically rolled for you.")}
    • \n
    • ${e.T("help-punishments-2", 'If you have an active task and you fail to do it, you must press "Fail" in order to get punished.')}
    • \n
    • ${e.T("help-punishments-3", "If you pause a task for more than %s you will get punished. If the task has multiple steps you will get additional pause time but this includes the time you need to finish the other tasks.", [moment.duration(o.maxTaskPause, "minutes").humanize()])}
    • \n
    • ${e.T("help-punishments-4", "Punishments can be completed whenever you like.")}
    • \n
    • ${e.T("help-punishments-5", "You can get a maximum of %s punishments.", [o.maxConcurrentPunishments])}
    • \n
    • ${e.T("help-punishments-6", "You can't attend exams or graduate if you have any pending punishments, so make sure you don't stack too many of them.")}
    • \n
    • ${e.T("help-punishments-7", "You get %s punishment for failing a daily task, %s for failing an exam and %s for failing your final thesis.", [o.failDailyPunishment, o.failExamPunishment, o.failThesisPunishment])}
    • \n
    \n `, + "anchor" + a, + "anchor" + (a - 1), + "anchor" + (a + 1), + )), + a++, + (t += j.getHelpEntryHtml( + e.T("help-clubs-header", "Clubs"), + `\n
      \n
    • ${e.T("help-clubs-1", "Clubs provide you with different bonuses such as free class skips and reduced task requirements for classes.")}
    • \n
    • ${e.T("help-clubs-2", "Clubs are supplementary to your classes so you can combine them however you want.")}
    • \n
    • ${e.T("help-clubs-3", "It is not possible to deactivate perks. They will last the rest of the day.")}
    • \n
    • ${e.T("help-clubs-4", "Some club tasks overlap with tasks from classes. In this case you can you can use the club perk for free.")}
    • \n
    • \n ${e.T("help-clubs-5", "\n Make sure that when doing a class task and you have some club perks activated, you can stay true to the \n club's requirements. If you have activated a perk that requires you to wear a gag and you have a class\n that lasts 8 hours, it's highly unlikely that you'd wear the gag for those 8 hours, so make sure you only activated once only \n tasks are left that you can fulfill this requirement with.")}\n
    • \n
    • ${e.T("help-clubs-6", "You can join a maximum of %s clubs and have a maximum of %s club perks active.", [o.maxConcurrentClubs, o.maxConcurrentClubPerks])}
    • \n
    • ${e.T("help-clubs-7", "Later in the game you'll unlock Elite Clubs that provide greater benefits but have harder requirements.")}
    • \n
    • ${e.T("help-clubs-8", "Keep in mind that you're limited to only %s elite club.", [o.maxConcurrentEliteClubs])}
    • \n
    • ${e.T("help-clubs-9", "Normal club perks can be toggled on and off while Elite club perks can be activated only once a day.")}
    • \n
    • ${e.T("help-clubs-10", "All active perks are reset on the next day.")}
    • \n
    • ${e.T("help-clubs-11", "Keep in mind that the maximum reduction you can get from clubs is capped at 50%. If you have 50% reduction from your normal clubs and another 25% from an elite one you'll still get only 50% instead of 75%.")}
    • \n
    \n `, + "anchor" + a, + "anchor" + (a - 1), + "anchor" + (a + 1), + )), + a++, + (t += j.getHelpEntryHtml( + e.T("help-partners-header", "Partners"), + `\n

    \n ${e.T("help-partners-content", "\n Partners are very similar to clubs with the only difference being that they make \n things harder instead of easier but in return you'll get extra points. \n You can have up to %s partners. \n Their perks can be activated once per day and deactivate automatically on the next.", [o.maxConcurrentPartner])}\n

    \n `, + "anchor" + a, + "anchor" + (a - 1), + "anchor" + (a + 1), + )), + a++, + (t += j.getHelpEntryHtml( + e.T("help-tasks-header", "Tasks and timers"), + `\n

    \n ${e.T("help-tasks-content", '\n The game has a tasks system for majors and classes. On your schedule page you\'ll \n be able to select which task to do for your active classes. Each task can have multiple sub-tasks\n Once you start a task you\'ll see the new task show up where you can either start its timer or \n press "Complete" if the task is not time dependent. Timers can be paused/resumed\n and they carry over between days. You won\'t get punished if the task is running from\n yesterday. If you fail to do a task, you must press "Fail" in order to get punished.\n The active timers for all your classes are also visible on the schedule page for\n each class.')}\n

    \n `, + "anchor" + a, + "anchor" + (a - 1), + "anchor" + (a + 1), + )), + a++, + (t += j.getHelpEntryHtml( + e.T("help-grades-header", "Grades"), + `\n

    \n ${e.T("help-grades-content", "\n Whenever you attend and finish class task you will receive one knowledge point, if you have modifiers active (from partners / clubs)\n you can receive additional ones. Based on these knowledge points you will receive a grade once you have taken the exam. It's up\n to you to decide how well you want to perform during the exam. The grades you receive will be used to calculate your major grade.\n In case you already finished a class and want to improve your grade, you can retake them anytime. If you retake a class you need to repeat the\n exam and loose the credits related to the class but you will keep the already collect knowledge points.\n If you re-roll a punishment you will loose knowledge points to a random class you are currently taking.\n
    To make sure you don't fail, you need to collect at least:")}\n

    \n ${j.getGradeHtml()}\n `, + "anchor" + a, + "anchor" + (a - 1), + "anchor" + (a + 1), + )), + a++, + (t += j.getHelpEntryHtml( + e.T("help-credits-header", "Credits"), + `\n

    \n ${e.T("help-credits-content", "\n Graduating requires that you have at least %s credits.\n You first need to attend classes to unlock\n the exam. Once you finish the exam for a class you will get matching credits.", [p.requiredCreditsForGraduation])}\n

    \n
      \n
    • ${e.T("class-beginner-header", "Beginner classes")}: ${o.classBeginnerCredits} ${e.T("credits", "Credits")}
    • \n
    • ${e.T("class-intermediate-header", "Intermediate classes")}: ${o.classIntermediateCredits} ${e.T("credits", "Credits")}
    • \n
    • ${e.T("class-advanced-header", "Advanced classes")}: ${o.classAdvancedCredits} ${e.T("credits", "Credits")}
    • \n
    • ${e.T("class-master-header", "Master classes")}: ${o.classMasterCredits} ${e.T("credits", "Credits")}
    • \n
    \n `, + "anchor" + a, + "anchor" + (a - 1), + "anchor" + (a + 1), + )), + a++, + (t += j.getHelpEntryHtml( + e.T("help-graduating-header", "Graduating"), + `\n

    \n ${e.T("help-graduating-content", '\n Once you have completed all your mandatory classes and collected %s\n credits through attending extra classes you may attempt to graduate.\n Some Majors could take up to a month for the final task. If you fail to do one of the thesis requirements \n you must press "Fail" which will roll %s punishments. Some majors have an additional punishment option which \n increases the timer\'s duration. After you graduate your major will be marked as Completed and your progress will be preserved.\n You can sign up for another one in another field which will become very \n useful in the future when you start building your career.', [p.requiredCreditsForGraduation, o.failThesisPunishment])}\n

    \n `, + "anchor" + a, + "anchor" + (a - 1), + "anchor" + (a + 1), + )), + i.map.rouletteOptions) + ) { + const s = i.map.rouletteOptions; + let n = ""; + for (let e in s) { + const t = s[e]; + n += `
  • ${100 * t.probability}% ${t.description}
  • `; + } + (a++, + (t += j.getHelpEntryHtml( + e.T("help-roulette-header", "Orgasm roulette system"), + `\n

    \n ${e.T("help-roulette-content", "\n The only way you are allowed to cum is either through classes or from the %sOrgasm Roulette%s. \n Every day you'll get the chance to spin is once and test your luck out.", ['', ""])}\n

    \n
      \n ${n}\n
    \n `, + "anchor" + a, + "anchor" + (a - 1), + "anchor" + (a + 1), + ))); + } + if (void 0 !== i.map.general.help && i.map.general.help.length > 0) + for (const e of i.map.general.help) + (a++, + (t += j.getHelpEntryHtml( + e.title, + e.text, + "anchor" + a, + "anchor" + (a - 1), + "anchor" + (a + 1), + ))); + return `
    \n ${t}\n
    `; + } + static getHelpEntryHtml(e, t, a, s, i) { + return `\n
    \n
    \n \n

    \n ${void 0 !== i ? ` ` : ""}\n ${void 0 !== s ? ` ` : ""}\n ${e}\n

    \n ${t}\n
    \n
    \n `; + } + static getGradeHtml() { + const e = s.getInstance(); + let t = o.maxAttendances.beginner, + a = o.maxAttendances.intermediate, + i = o.maxAttendances.advanced, + n = o.maxAttendances.master, + r = "", + l = t !== a, + d = a !== i, + c = i !== n; + for (const e of Object.entries(o.grades)) + r += `\n \n ${e[0]}\n ${100 * e[1]}%\n ${e[1] * t}\n ${l ? `${e[1] * a}` : ""}\n ${d ? `${e[1] * i}` : ""}\n ${c ? `${e[1] * n}` : ""}\n \n `; + return `\n \n \n \n \n \n \n ${l ? `` : ""}\n ${d ? `` : ""}\n ${c ? `` : ""}\n \n \n \n ${r}\n \n
    ${e.T("help-table-grade", "Grade")}${e.T("help-table-threshold", "Threshold")}${e.T("help-table-min-knowledge", "Minimum Knowledge")}${e.T("help-table-min-knowledge-intermediate", "Minimum Knowledge Intermediate")}${e.T("help-table-min-knowledge-advanced", "Minimum Knowledge Advanced")}${e.T("help-table-min-knowledge-master", "Minimum Knowledge Master")}
    \n `; + } + } + class D { + static get expectedParameters() { + return { getView: [], import_save: ["savegame"] }; + } + static import_save(e) { + return ( + _.replaceHistory("?page=settings"), + E.importSaveGamePrivateBin(atob(e.savegame)), + D.getView() + ); + } + static import_save(e) { + return ( + _.replaceHistory("?page=settings"), + E.importSaveGamePrivateBin(atob(e.savegame)), + D.getView() + ); + } + static getView() { + document + .querySelector("html") + .addEventListener("navigationFinished", function (e) { + ($("#settings-container select[multiple]").selectpicker(), + E.updateServiceWorkerStatus()); + }); + const e = s.getInstance(), + t = n.canCompress(); + return `
    \n

    ${e.T("settings-header", "Settings")}

    \n
    \n
    \n \x3c!-- filled by delayed function call --\x3e\n
    \n
    \n
    \n
    \n ${t ? "" : D.getStatusAlert(e.T("settings-compression-status-available", "The compression library is not available!"), "danger")}\n
    \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n

    ${e.T("settings-easy-mode-description", 'Easy mode allows classes to be attended on any day, removes punishments for skipping them. It can be used as a "Pause" for the game.')}

    \n \n
    \n
    \n \n \n
    \n

    ${e.T("settings-compress-exports-description", "Make it just a little bit easier to share large files by compressing them slightly. %sINFO:%s This should help on most apple devices!%s", ['', "", ""])}

    \n
    \n\n
    \n
    \n \n \n
    \n

    ${e.T("settings-image-exports-description", "Let's share an image instead of a random text file. Requires compression! %sWARNING:%s This is only EXPERIMENTAL, big files can turn unreadable! Most messengers will remove the added data making them useless!%s", ['', "", ""])}

    \n
    \n\n
    \n
    \n \n \n
    \n

    ${e.T("settings-complete-exports-description", "No need to import maps and saves one by one Everything will be exported as a single file. Requires compression! %sINFO:%s This will result in giant saves!%s", ['', "", ""])}

    \n
    \n\n \n

    ${e.T("settings-time-offset-selection", "Choose a custom time offset and make the night your day. Current game time is: ")} ${n.getNow().format("YYYY-MM-DD HH:mm:ss")} (${n.getSetting("timeOffsetSelection") || 0}${e.T("settings-time-offset-hour", "h")})

    \n\n
    \n \n \n
    \n

    ${e.T("settings-hardcore-punishments-description", "Hardcore punishments are crueler than the rest and exist just for the novelty. They are disabled by default and don't provide any benefits when enabled besides enhanced gameplay.")}

    \n\n
    \n \n \n
    \n

    ${e.T("settings-auto-hide-description", "Make sure nobody sees your progress by accident. The page automatically hides it's content after %s.", [moment.duration(o.autoHideTimer, "minutes").humanize()])}

    \n\n
    \n \n \n
    \n

    ${e.T("settings-back-top-description", 'Especially on mobile it is easy to get lost on long pages. You can enable this handy "Back to top" button to easily return to the start.')}

    \n\n
    \n \n \n
    \n

    ${e.T( + "settings-hide-active-classes-description", + "Once you started classes they will be shown in the %sschedule%s. To make the %sclasses overview%s cleaner you can therefore choose to hide them.", + [ + ``, + "", + ``, + "", + ], + )}

    \n\n
    \n \n \n
    \n

    ${e.T( + "settings-finished-active-classes-description", + "Once you finished classes they will be shown in the %sprogress overview%s. To make the %sclasses overview%s cleaner you can therefore choose to hide them.", + [ + ``, + "", + ``, + "", + ], + )}

    \n\n
    \n \n \n
    \n

    ${e.T("settings-skip-tier-description", "Pages that use carousels to display multiple tiers of content will automatically switch to the next tier once you reach the bottom of the page.")}

    \n\n
    \n \n \n
    \n

    ${e.T("settings-show-confirmations-description", "Some actions have a bigger impact, to make sure you don't do them by accident you will get a confirmation request first.")}

    \n\n
    \n \n \n
    \n

    ${e.T("settings-detailed-table-view-description", "Switch between the original 'card'-view (which emulates the end result) and the new 'table'-view for the Mapping-Tool.")}

    \n\n \n

    ${e.T("settings-theme-description", "Select your prefered theme for this website.")}

    \n\n \n

    ${e.T("settings-language-description", "Select your prefered language for this website.")}

    \n\n
    \n \n \n
    \n
    \n \n ${u.getInstance().isMapLoaded ? D.saveManagementFormView() : ""}\n ${u.getInstance().isMapLoaded ? D.mapManagementFormView() : ""}\n\n
    \n
    \n

    ${e.T("settings-global-actions-header", "Global actions")}

    \n
      \n
    • \n ${e.T("settings-join-discord-button", "Join Discord")}\n ${e.T("settings-join-discord-description", "Feel free to join the official PU-Discord.")}\n
    • \n
    • \n \n ${e.T("settings-reset-tutorial-description", "Reset the introduction tutorials.")}\n
    • \n
    • \n \n ${e.T("settings-reset-game-description", "Reset game completely.")}\n
    • \n
    \n
    \n
    \n
    `; + } + static saveManagementFormView() { + const e = s.getInstance(), + t = n.canCompress(); + return `
    \n
    \n

    ${e.T("settings-save-selection-header", "Save game actions")}

    \n
    \n ${ + n.getSetting("sessionToken") + ? `\n \n
    \n ` + : "" + }\n
    \n
    \n \n ${e.T("settings-import-save-button", "Import save")}\n \n \n \n \n \x3c!--\n \n
    \n --\x3e\n
    \n
    \n
    `; + } + static mapManagementFormView() { + const e = s.getInstance(); + return `
    \n
    \n

    ${e.T("settings-maps-header", "Map management")}

    \n
    \n
    \n ${e.T("settings-map-tool-button", "Mapping tool")}\n ${e.T("settings-map-tool-button-description", "Open the mapping tool to create your own courses.")}\n
    \n
    \n \n ${e.T("settings-map-import-button", "Import a map")}\n ${e.T("settings-map-import-button-description", "Import a new map or update an existing map.")}\n
    \n
    \n \n \n ${e.T("settings-map-selection-info-1", "Switch to a different map (the current progress is saved for each map separately).")}\n ${e.T("settings-map-selection-info-2", "The map is tied to your current save game. If you want to import/export a save game you will need to do so for each map separatly, selected Sub-Maps are included in the active map.")} \n\n \n \n
    \n
    \n \n \n ${e.T("settings-submap-selection-description", 'Please select all maps you want to use as a Sub-Map and import the related content. You must import maps using the "Import a new map" function above before you can select them here. Make sure to select the main map carefully.')}\n \n
    \n
    \n
    \n
    `; + } + static getMapSelection() { + const e = u.getInstance().maps, + t = u.getInstance().mapId; + let a = ""; + for (const s of e) + a += ``; + return a; + } + static getSubMapSelection() { + const e = u.getInstance(), + t = e.maps, + a = e.mapId, + s = e.subMaps; + let i = ""; + for (const e of t) + e.mapData.mapId != a && + (i += ``); + return i; + } + static getStyleSelection() { + let e = ""; + const t = n.getSetting("style"); + for (const a of Object.keys(o.styles)) + e += ``; + return e; + } + static getLanguageSelection() { + const e = n.getSetting("language"); + let t = ``; + for (const a of s.availableLanguages) + t += ``; + return t; + } + static getStatusAlert(e, t = "info") { + s.getInstance(); + return `\n \n `; + } + } + class E { + static resetTutorial() { + (n.setTutorial(""), _.inAppReload()); + } + static switchMap() { + const e = $("#mapSelection").val(), + t = u.getInstance(); + e != t.mapId && + (t.registerLoadFinished(() => { + _.reload(); + }), + t.changeMap(e)); + } + static setSubMaps() { + const e = $("#assigned-submaps").val(), + t = u.getInstance(); + ((t.subMaps = e), + t.setSubMaps(() => { + _.navigate("?page=home"); + })); + } + static deleteMap() { + const e = s.getInstance(); + n.requestUserConfirmation( + e.T("settings-delete-map-confirmation-header", "Delete map"), + e.T( + "settings-delete-map-confirmation-content", + "Are you sure that you want delete the currently selected map? You will loose the save as well.", + ), + () => { + const e = $("#mapSelection").val(); + u.getInstance().deleteMap(e, () => { + _.reload(); + }); + }, + ); + } + static saveSettings() { + let e = {}; + for (let t of $('#settings-form-group input[type="checkbox"]')) + e[t.id] = t.checked; + for (let t of $("#settings-form-group select")) e[t.id] = t.value; + for (let t of $('#settings-form-group input[type="range"]')) + e[t.id] = parseFloat(t.value); + (e.enableEasyMode !== n.getSetting("enableEasyMode") && + p.resetAttendanceDeadline(u.getInstance().getSavegame()), + n.setSettings(e), + _.reload()); + } + static resetSettings() { + (n.setSettings(n.getDefaultSettings()), _.reload()); + } + static async updateServiceWorkerStatus(e = "#serviceworker-status") { + const t = s.getInstance(), + a = t.T( + "settings-serviceworker-status-loading", + "Your ServiceWorker status is currently loading...", + ), + i = D.getStatusAlert(a); + $(e).empty().append(i); + const o = await n.getServiceWorkerStatus(); + let r = ""; + r = + "inactive" === o.id + ? t.T( + "settings-serviceworker-status-inactive", + "ServiceWorker feature is disabled!", + ) + : "active" === o.id + ? t.T( + "settings-serviceworker-status-active", + "Your ServiceWorker is active!", + ) + : "waiting" === o.id + ? t.T( + "settings-serviceworker-status-waiting", + "Your ServiceWorker is waiting for activation.", + ) + : "installing" === o.id + ? t.T( + "settings-serviceworker-status-installing", + "Your ServiceWorker is currently installing.", + ) + : "unregistered" === o.id + ? t.T( + "settings-serviceworker-status-unregistered", + "The ServiceWorker is not registered!", + ) + : t.T( + "settings-serviceworker-status-unknown", + "Your ServiceWorker is in an unknown state.", + ); + const l = D.getStatusAlert(r, o.type); + $(e).empty().append(l); + } + static resetGame() { + const e = s.getInstance(); + n.requestUserConfirmation( + e.T("settings-reset-game-confirmation-header", "Reset game"), + e.T( + "settings-reset-game-confirmation-content", + "Are you sure that you want delete all local data and progress? You will loose your complete progress.", + ), + () => { + (localStorage.clear(), + r.getInstance().drop(() => { + _.navigate("?page=home"); + })); + }, + ); + } + static importSaveGame(e) { + const t = s.getInstance(); + let a = u.getInstance().importSaveGame(e, () => { + _.navigate("?page=home"); + }); + a && + n.showToast( + t.T("settings-save-import-failed-header", "SaveGame import failed"), + a, + "danger", + ); + } + static async importSaveGameFile(e) { + const t = s.getInstance(), + a = { + title: t.T( + "settings-save-import-confirmation-header", + "Import a save", + ), + text: t.T( + "settings-save-import-confirmation-content", + "Are you sure that you want to overwrite your current progress? Make sure to only load saves from trusted sources. Proceed at your own risk.", + ), + }, + i = { + title: t.T( + "settings-save-import-failed-header", + "Save import failed", + ), + text: t.T( + "settings-save-import-failed-content", + "During the import for the selected file an error occured. You can check the console for more information.", + ), + }, + n = { + title: t.T( + "settings-file-import-compression-error-header", + "Compression unavailable", + ), + text: t.T( + "settings-file-import-compression-error-content", + "The file you tried to import is compressed. Sadly a library required to uncompress it is unavailable.", + ), + }, + o = { + title: t.T("settings-file-import-aborted-header", "Import aborted"), + text: t.T( + "settings-file-import-aborted-content", + "The file you tried to import included untrusted code. To protect you the import was aborted.", + ), + }, + r = await _.runImport(e, i, a, n, o); + E.importSaveGame(r); + } + static async exportSaveGameFile() { + const e = s.getInstance(), + t = { + title: e.T( + "settings-save-export-maps-failed-header", + "Save export interrupted", + ), + text: e.T( + "settings-save-export-maps-failed-content", + "During the export an error occured while loading the active maps for a full export.", + ), + }; + await _.runExport("pu_save", await _.getSavegameData(t)); + } + static async importSaveGameClipboard() { + const e = s.getInstance(), + t = { + title: e.T( + "settings-save-import-confirmation-header", + "Import a save", + ), + text: e.T( + "settings-save-import-confirmation-content", + "Are you sure that you want to overwrite your current progress? Make sure to only load saves from trusted sources. Proceed at your own risk.", + ), + }, + a = { + title: e.T( + "settings-save-import-failed-header", + "Save import failed", + ), + text: e.T( + "settings-save-import-failed-content", + "During the import for the selected file an error occured. You can check the console for more information.", + ), + }, + i = { + title: e.T("settings-file-import-aborted-header", "Import aborted"), + text: e.T( + "settings-file-import-aborted-content", + "The file you tried to import included untrusted code. To protect you the import was aborted.", + ), + }, + n = await _.runClipboardImport("pu_save", a, t, i); + E.importSaveGame(n); + } + static async exportSaveGameClipboard() { + const e = s.getInstance(), + t = { + title: e.T( + "mapping-export-clipboard-success-header", + "Exported to clipboard", + ), + text: e.T( + "mapping-export-clipboard-success-content", + "The data was exported to the clipboard.", + ), + }, + a = { + title: e.T( + "mapping-export-clipboard-error-header", + "Clipboard export failed", + ), + text: e.T( + "mapping-export-clipboard-error-content", + "Failed to export the data to the clipboard.", + ), + }, + i = { + title: e.T( + "settings-save-export-maps-failed-header", + "Save export interrupted", + ), + text: e.T( + "settings-save-export-maps-failed-content", + "During the export an error occured while loading the active maps for a full export.", + ), + }; + await _.runClipboardExport("pu_save", i, t, a); + } + static async exportSavegamePrivateBin() { + const e = s.getInstance(), + t = { + title: e.T( + "settings-save-export-maps-failed-header", + "Save export interrupted", + ), + text: e.T( + "settings-save-export-maps-failed-content", + "During the export an error occured while loading the active maps for a full export.", + ), + }, + a = JSON.stringify(await _.getSavegameData(t)); + let i = function (t) { + if (t.error || !t.url) + return void n.showToast( + e.T( + "settings-save-export-failed-header", + "Save game export failed", + ), + e.T( + "settings-save-export-failed-content", + "Sharing your save file was not successful.", + ), + ); + const a = `${n.getCurrentUrl()}?page=settings&pageType=import_save&savegame=${btoa(t.url)}`; + c.insertQR(a, "PU.save", "#savegameQR"); + }.bind(this); + c.uploadToPastebin(a, i); + } + static importSaveGamePrivateBin(e) { + const t = s.getInstance(); + let a = function (e) { + !e.error && e.data + ? E.importSaveGame(e.data) + : n.showToast( + t.T( + "settings-import-share-save-failed-header", + "Save game import failed", + ), + t.T( + "settings-import-share-save-failed-content", + "Importing the shared save file was not successful.", + ), + ); + }.bind(this), + i = function () { + c.downloadFromPastebin(e, a); + }.bind(this); + n.requestUserConfirmation( + t.T( + "settings-import-share-save-confirmation-header", + "Import a save", + ), + t.T( + "settings-import-share-save-confirmation-content", + "Are you sure that you want to overwrite your current progress? Make sure to only install saves from trusted sources. Proceed at your own risk.", + ), + i, + ); + } + static importMapPrivateBin(e) { + const t = s.getInstance(); + let a = function (e) { + !e.error && e.data + ? u.getInstance().importMap(e.data) + : n.showToast( + t.T( + "settings-import-share-map-failed-header", + "Map import failed", + ), + t.T( + "settings-import-share-map-failed-content", + "Importing the shared map file was not successful.", + ), + ); + }.bind(this), + i = function () { + c.downloadFromPastebin(e, a); + }.bind(this); + n.requestUserConfirmation( + t.T("settings-import-share-map-confirmation-header", "Import a map"), + t.T( + "settings-import-share-map-confirmation-content", + "Are you sure that you want to import this map? Make sure to only install maps from trusted sources. Proceed at your own risk.", + ), + i, + ); + } + static resetSaveSync() { + (n.setSetting("sessionToken", void 0), _.reload()); + } + static setupSaveSync(e) { + const t = s.getInstance(); + let a = function (e) { + !e.error && e.data + ? (n.scheduleToast( + t.T( + "settings-import-save-sync-header", + "Save-Sync setup finished", + ), + t.T( + "settings-import-save-sync-content", + "Your saves will now be synced, if the required maps are available.", + ), + ), + _.reload()) + : n.showToast( + t.T( + "settings-import-save-sync-failed-header", + "Save-Sync setup failed", + ), + t.T( + "settings-import-save-sync-failed-content", + "The provided key was not accepted by the backend. You can try to create a new session or try again later.", + ), + ); + }.bind(this); + c.getInstance().exchangeSaveGameToken(e, a); + } + } + class N { + static get expectedParameters() { + return { + getView: [], + feedback: [], + import_map: ["map"], + save_sync: ["exchangeToken"], + }; + } + static save_sync(e) { + return ( + _.replaceHistory("?page=home"), + E.setupSaveSync(e.exchangeToken), + N.getView() + ); + } + static feedback() { + const e = s.getInstance(); + return ( + _.replaceHistory("?page=home"), + n.showToast( + e.T("home-feedback-title", "Feedback"), + `${e.T("home-feedback-description", 'Thank you very much for providing a quick "heartbeat"!')} ${e.T("home-feedback-discord", "In case you want to join the PU Discord - click here.")} `, + "success", + ), + N.getView() + ); + } + static import_map(e) { + return ( + _.replaceHistory("?page=home"), + E.importMapPrivateBin(atob(e.map)), + N.getView() + ); + } + static getView() { + const e = s.getInstance(); + return `
    \n
    \n
    \n

    ${e.T("home-welcome-header", "Welcome to Project University")}

    \n

    \n ${e.T("home-welcome-info-1", "This project aims to let you either create your very own university or \n join a university that was created by somebody else. As such this website doesn't provide any content \n itself and you will need to provide a PU-map. A PU-map is a user generated file that contains the data \n required to define a university. This website runs completly on the users device - no user generated content\n is stored on the server hosting this website. Therefore please make sure to make backups of your progress,\n think twice before importing unknown content, stay safe and legal.")}\n

    \n

    \n ${e.T("home-welcome-info-2", "\n The general idea of your university life consists of enrolling in a major, choosing classes and do the\n daily tasks required. To finish a class attend the exam and unlock new classes or the finals.\n Once all prerequisites are fulfilled you can attempt the final major exam. You can join clubs or get yourself \n a partner to change the difficulty for specific classes and gain small perks. You will be punished if you fail \n to meet any requests.")}\n

    \n

    \n ${e.T("home-welcome-info-3", "So import a map sign up for a major, join some classes and let the journey begin!")}\n

    \n \n ${e.T("home-load-map-button", "Load a university map!")}\n ${e.T("home-create-map-button", "Create your own map!")}\n
    \n
    \n
    \n
    \n

    ${e.T("home-changelog-header", "Changelog")}

    \n \n
    \n
    2025-07-31
    \n
    \n

    \n Just added some missing chinese translations. Thanks a lot to Nebulas Astra (github:@nebulas-star)!\n

    \n
    \n
    \n\n \n\n
    \n \n
    \n
    2024-09-24
    \n
    \n

    \n This update was mainly aimed to support exports on iOS devices again, but there were lots of attempts and none were quite what I wanted. The inital start of these changes was July, took longer than expected.\n The most interesting changes are the option to get a full export of a save and the auto-save function for the map editor.\n

    \n
      \n
    • New file type PUC, this is a complete save including all active maps, submaps and settings.
    • \n
    • Exports: Major rework, a lot happened here, hope nothing broke. This affects Maps, Saves, Tasks.
    • \n
    • Settings page: Visual updates, new export settings, Service Worker (offline mode) status and compression support status.
    • \n
    • Fixed class-skip-tokens not activating.
    • \n
    • Added counter for the currently available class-skip tokens.
    • \n
    • You can now undo a perk activation.
    • \n
    • Make it easier to share large files by enabling compressed exports - and might help with some iOS export issues.
    • \n
    • Share file-less using clipboard exports.
    • \n
    • Fixed the visual timer problem thanks a lot @Pink_3D for the resolution (active task).
    • \n
    • Fixed time output for anything that takes a month or longer (task selection).
    • \n
    • Added auto-save to the map editor, might help if you forgot to manually export it. However don't rely on it - think of it as a backup in case you mess up.
    • \n
    • The map editor is now a little bit better integrated into the general UI, using the same settings page.
    • \n
    • The map editor supports now: taskListSize, disableBonusAttendance
    • \n
    • Updated jQuery, moment.js, Bootstrap, Bootstrap Select, Bootstrap Table, Bootstrap Darkly.
    • \n
    • Experimental: Make your saves prettier by using Image exports. Sadly sharing these will be quite hard because most providers will delete the save data included.
    • \n
    \n
    \n
    \n\n
    \n
    2023-11-30.1
    \n
    \n

    \n Looks like the old hosting option for the Map-Editor is no longer available. Now it is included on-site and should work just as it did before.\n

    \n
    \n
    \n\n
    \n
    2023-10-20
    \n
    \n

    \n Some small bugfixes.\n

    \n
      \n
    • Fixed language navigation option for english.
    • \n
    • Fixed an incorrect help description.
    • \n
    \n
    \n
    \n\n
    \n
    2023-03-18
    \n
    \n

    \n Some small bugfixes.\n

    \n
      \n
    • Replaced PWA images, to allow better icons.
    • \n
    • Fixed a bug with save game imports for a missing active major.
    • \n
    \n
    \n
    \n\n
    \n
    2023-02-28
    \n
    \n

    \n Allow more advanced maps.\n

    \n
      \n
    • Removed alt texts from images.
    • \n
    \n
    \n
    \n\n
    \n
    2023-02-09.1
    \n
    \n

    \n More QOL updates.\n

    \n
      \n
    • You can now join more clubs, partners and classes. Enjoy.
    • \n
    • Added fix for removing finished class content.
    • \n
    • Added reference verification for maps (majors, classes).
    • \n
    \n
    \n
    \n\n
    \n
    2022-09-17.1
    \n
    \n

    \n Some small QOL updates.\n

    \n
      \n
    • Hidden tasks should now work as expected and follow the parameter order instead of the type and then the parameter order.
    • \n
    • Updated the error reporting, at least you should now see a reason which you can share for why the page is just empty.
    • \n
    • Classes are now filtered for itself to stop accidental loops which crash the site.
    • \n
    • Punishments should now be filtered if deleted tasks are assigned to them.
    • \n
    \n
    \n
    \n\n
    \n
    2022-01-15
    \n
    \n

    \n Custom timezones even if you don't travel ;)\n It is now possible to manipulate the time to make it easier for night owles to stay on schedule.\n

    \n
    \n
    \n\n
    \n
    2021-11-10
    \n
    \n

    \n Synced Saves Service added - check the Settings.\n

    \n
      \n
    • Join the PU Discord and use the new Save-Sync service.
    • \n
    \n
    \n
    \n\n
    \n
    2021-10-28
    \n
    \n

    \n Small fixes and improvments.\n

    \n
      \n
    • Fixed translation engine language selection
    • \n
    • Added info for collected knowledge points
    • \n
    • Added function to unlock and blacklist punishments
    • \n
    \n
    \n
    \n\n
    \n
    2021-08-29
    \n
    \n

    \n Please move your save to the backup instance since I plan to implement a big update for the main version which will make your current saves incompatible.\n

    \n
      \n
    • CORS check failed and required a fix.
    • \n
    \n
    \n
    \n
    \n
    2020-10-13.2
    \n
    \n

    \n Chinese translation is now available. In case you want to see PU in your own language feel free to contact me.\n

    \n
      \n
    • Fixed some stuff for pink theme.
    • \n
    • Added setting to change the language.
    • \n
    • Based on the language provided by your browser, PU will localize the website. Currently only a chinese translation is available, which was provided by Carlotta. Keep in mind this will only work for the framework and not for map content.
    • \n
    • Old changelogs are now collapsed.
    • \n
    \n
    \n
    \n
    \n
    2020-09-30.1
    \n
    \n

    \n SubMaps are great!\n

    \n
      \n
    • If you already have a map active and add a new one - the new one will be added as a SubMap to the active one.
    • \n
    • If you visit the page for the first time, you will be redirected after confirming the disclaimer.
    • \n
    • Updated feedback info for October.
    • \n
    \n
    \n
    \n
    \n
    2020-09-02
    \n
    \n

    \n Roulette is now up to the map creator.\n

    \n
      \n
    • Disclaimer and Data Protection notice added.
    • \n
    • Roulette is now up to the map creator
    • \n
    • If you disable Easy Mode you will not be bombarded with punishments
    • \n
    • A small performance improvement by skipping tour loading
    • \n
    \n
    \n
    \n
    \n
    2020-08-05.1
    \n
    \n

    \n Some nice new features all over the place.\n

    \n
      \n
    • Maps: Automatically lower required credits if a map doesn't provide enough content to collect 160 credits.
    • \n
    • Settings: Handle missing save data - you can now disable sub-maps if you don't want them anymore without breaking the save. (probably)
    • \n
    • Classes: New indicator for the progress in your classes
    • \n
    • Settings: Importing using quick share should now show an error instead of silently failing
    • \n
    • Mapping Tool: It's now possible to easily create new items (Save & New) and sometimes even to copy an existing item (Duplicate)
    • \n
    • Mapping Tool: Shortcuts: To save current input you can now use CTRL + S (make sure to select the modal) or discard the current input ESC
    • \n
    \n
    \n
    \n
    \n
    2020-08-02
    \n
    \n

    \n Mapping Tool fixes.\n

    \n
      \n
    • Mapping Tool: Share option fixed
    • \n
    • Mapping Tool: AutoHide is now disabled inside the Mapping Tool
    • \n
    • Mapping Tool: Added warning if functionality is limited by Third-Party Cookie block
    • \n
    \n
    \n
    \n
    \n
    2020-08-01.1
    \n
    \n

    \n Mapping Tool extracted.\n

    \n
      \n
    • Mapping Tool: Image Hosting improved
    • \n
    • Mapping Tool: Extracted for sparated access
    • \n
    • Settings: Moved Mapping Tool specific settings
    • \n
    \n
    \n
    \n
    \n
    2020-07-27
    \n
    \n

    \n Let's get the map size down and allow quick-start.\n

    \n
      \n
    • Mapping Tool: Optional automatic upload of images to a image hoster to reduce the map size [EXPERIMENTAL]
    • \n
    • Mapping Tool: Quick share maps (users can click / scan a QR code and will directly be able to run the map) [EXPERIMENTAL]
    • \n
    • Mapping Tool: Improved direct share for tasks (users can still click on a link / scan a QR code and will be able to start the task) [EXPERIMENTAL]
    • \n
    • Navigation: Fixed a potential bug for people that start a fresh game
    • \n
    • Settings: Theme pink (small fixes)
    • \n
    \n
    \n
    \n
    \n
    2020-07-26.1
    \n
    \n

    \n Themes and grades.\n

    \n
      \n
    • Progress: Added grades
    • \n
    • Settings: Themes (Pink theme updated)
    • \n
    • Settings: New SaveGame import/export without files [EXPERIMENTAL]
    • \n
    • Mapping Tool: added task export into the new table view
    • \n
    \n
    \n
    \n
    \n
    2020-07-23
    \n
    \n

    \n Graduation. Yay.\n

    \n
      \n
    • Progress: You can now graduate
    • \n
    • Mapping Tool: Added click-able task reference to punishment table
    • \n
    • Mapping Tool: Retain scroll position
    • \n
    • Mapping Tool: Auto resize images
    • \n
    \n
    \n
    \n
    \n
    2020-07-21.1
    \n
    \n

    \n Small fixes for the Mapping Tool und quicker map check.\n

    \n
      \n
    • Map: Map import is a lot faster and works again in FF
    • \n
    • Map: Show map description on import
    • \n
    • Mapping Tool: Fixed punishment task selection
    • \n
    • Mapping Tool: Fixed the modifier values to increase/decrease difficulty
    • \n
    • Mapping Tool: Retain hidden columns settings
    • \n
    • Mapping Tool: Show a warning before resetting the map
    • \n
    • Mapping Tool: Full width tables
    • \n
    • Mapping Tool: Updated edit buttons in table view
    • \n
    \n
    \n
    \n
    \n
    2020-07-20
    \n
    \n

    \n Lots of changes, especially in the background.\n

    \n
      \n
    • Maps: Added support for "Sub-Maps" (allows loading content of maps or map modules into a "main" map, therefore extending the existing content)
    • \n
    • Progress: Show current credits (even if you have 0)
    • \n
    • Tasks: Fixed counter / timer rounding error (not in sync with the task description)
    • \n
    • Mapping Tool: Support to set custom help entries (and removed SU specific help entries)
    • \n
    • Mapping Tool: Added support to export "partial" Maps (called modules)
    • \n
    • Mapping Tool: Added option to "hide"/"disable" the orgasm roulette (in case you want to handle it using classes or don't need it)
    • \n
    • Mapping Tool: Restore filter, sort, page while you edit items using the table view
    • \n
    • Mapping Tool: Fixed inputs with '"'
    • \n
    • Mapping Tool: Fixed sorting (was broken by direct access links)
    • \n
    • Mapping Tool: Format the "Available On" dates as a readable string instead of a representative number
    • \n
    • Mapping Tool: Fixed "Save" button hidden by back to top in full-screen modal
    • \n
    • Mapping Tool: Changed style for new multi-selections
    • \n
    • Schedule: In case you already have max. classes you will not be tempted to add another one if you already finished all classes for the day.
    • \n
    • Schedule: Easy mode warning added
    • \n
    \n
    \n
    \n
    \n
    2020-07-14
    \n
    \n

    \n Small fix for the Mapping Tool (Long items were pushed to the side).\n

    \n
    \n
    \n
    \n
    2020-07-13
    \n
    \n

    \n Some small changes.\n

    \n
      \n
    • Mapping Tool: uses now a better UI to select multiple items
    • \n
    • Help: your health is priority #1
    • \n
    • added "Update Now" info in case an update is pending
    • \n
    \n
    \n
    \n
    \n
    2020-07-11
    \n
    \n

    \n Various quality of life changes.\n

    \n
      \n
    • Mapping Tool: added table view to make it easier to create/edit maps
    • \n
    • Mapping Tool: punishment tasks now preview the degree as well
    • \n
    • Schedule: Weekend info added
    • \n
    • Tasks: Added confirmation for using the "fail" button on tasks
    • \n
    • Mobile Navigation: hide the "hamburger" icon if there is nothing to navigate to (no map loaded / no major chosen)
    • \n
    • Mobile Navigation: auto collapses the "hamburger" menu after a successful selection
    • \n
    • Other: SW will now skip waiting (immediate update)
    • \n
    \n
    \n
    \n
    \n
    2020-06-30.3
    \n
    \n

    \n Attempt to fix download on iOS.\n

    \n
    \n
    \n
    \n
    2020-06-21
    \n
    \n

    \n Updated dependencies: jQuery, Bootstrap, Popper.js, Font Awesome and Moment.js.\n

    \n
    \n
    \n
    \n
    2020-06-20
    \n
    \n

    \n Fixed some minor problems.\n

    \n
      \n
    • Counter tasks finished the complete task regardless if something else was still required.
    • \n
    • Offset for images in the detail view was off
    • \n
    • Manual tasks were required to be finished on the same day, can now also be done after the main task.
    • \n
    • Probably fixed the check for skipped classes.
    • \n
    \n
    \n
    \n
    \n
    2020-06-16
    \n
    \n

    \n This is the new release of PU. It ports most of the functions present in\n the original and adds a new flare at some parts.\n

    \n
      \n
    • Allow creating and running custom maps
    • \n
    • Option to create and share simple tasks
    • \n
    • Darkmode
    • \n
    • UI Tutorial
    • \n
    • Tasks can have sub-tasks
    • \n
    • Counter tasks (Keep track of your progress)
    • \n
    • Auto hide the page from curious eyes
    • \n
    • Run multiple different maps at the same time
    • \n
    • Navigation works now as it should
    • \n
    • Mobile support
    • \n
    • Offline mode (continues working without an internet connection)
    • \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n

    ${e.T("home-special-thanks-header", "Special thanks to")}

    \n
      \n
    • Maya for inspiring this framework.
    • \n
    • Nebulas Astra (github:@nebulas-star) and Carlotta (Twi:@Carl84534787) for providing the chinese translation.
    • \n
    • Sam, BG, ClaireTorres, Lieutenant Bites and aspiringanalslut for beta testing.
    • \n
    \n
    \n
    \n \n \n
    `; + } + } + class q { + static get expectedParameters() { + return { getView: [] }; + } + static getView() { + const e = s.getInstance(); + return `
    \n

    ${e.T("roulette-header", "Orgasm Roulette")}

    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n

    \n ${e.T("roulette-info-1", "Do you want to cum?")} ${e.T("roulette-info-2", "Try your luck!")}
    \n ${e.T("roulette-info-3", "Did you cum without asking Random-chan?")} ${e.T("roulette-info-4", "Get your punishment!")}\n

    \n ${B.getLastRouletteHtml()}\n
    \n ${B.getRollRouletteButton()}\n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n `; + } + } + class B { + static rollRoulette() { + if (B.wasRouletteRolledToday()) return !1; + let e = Math.random(), + t = 0, + a = p.rouletteData, + s = void 0; + for (let i in a) if (((s = a[i]), (t += s.probability), e < t)) break; + s && + (s.rollPunishment && T.getRandomPunishment(), + p.setRoulette({ id: s.id, rolledOn: n.getNowUnix() }), + _.inAppReload()); + } + static lastRouletteResult() { + return p.getRoulette() || !1; + } + static wasRouletteRolledToday() { + const e = B.lastRouletteResult(); + return !(!e || !e.rolledOn) && !!n.isToday(e.rolledOn); + } + static getLastRouletteHtml() { + if (!B.wasRouletteRolledToday()) return ""; + const e = B.lastRouletteResult(); + if (!e || !e.hasOwnProperty("id")) return ""; + const t = p.rouletteData[e.id]; + return `
    \n
    \n
    ${t.title}
    \n

    ${t.description}

    \n
    \n
    `; + } + static getRollRouletteButton() { + return B.wasRouletteRolledToday() + ? "" + : ``; + } + } + class R { + static get expectedParameters() { + return { getView: [], import_task: ["customTask"] }; + } + static import_task(e) { + return ( + _.replaceHistory("?page=schedule"), + O.handleImport(atob(e.customTask)), + R.getView() + ); + } + static getView() { + const e = p.getActiveMajor(), + t = (p.majorsData[e], I.mandatoryClasses(e), S.getActiveClasses()), + a = (S.getFinishedClasses(), n.getTodaysDay()), + i = p.getActivePunishments(), + o = p.getActiveTasks(), + r = p.clubsData, + l = p.getAssignedClubs(), + d = p.partnersData, + c = p.getActivePartners(), + u = s.getInstance(); + return ( + O.requestFeedback(), + `
    \n ${o.length > 0 ? `\n

    \n ${u.T("schedule-active-tasks-header", "Active tasks")}\n

    \n
    \n
    \n ${R.getActiveTasks(o)}\n
    \n
    ` : ""}\n\n ${i.length > 0 && i.length - o.filter((e) => "punishment" == e.object.type).length > 0 ? `\n

    \n ${u.T("schedule-active-punishments-header", "Active punishments")} \n

    \n
    \n
    \n ${R.getPunishmentsHtml(i)}\n
    \n
    ` : ""}\n\n \n

    \n ${u.T("schedule-todays-classes-header", "Todays classes")} \n

    \n
    \n
    \n ${R.getTodaysClasses(t, a)}\n
    \n
    \n\n ${l.length > 0 || c.length > 0 ? `\n

    \n ${u.T("schedule-clubs-partner-header", "Clubs & Partner")}\n

    \n
    \n
    \n ${R.getAssignedClubsAndPartners(r, l, d, c)}\n
    \n
    ` : ""}\n\n

    \n ${u.T("schedule-weekly-header", "Weekly overview")}\n

    \n
    \n
    \n ${R.getWeekOverviewHtml(t, a)}\n
    \n
    \n
    \n ` + ); + } + static getAssignedClubsAndPartners(e, t, a, s) { + let i = ""; + for (let a of t) { + const t = e[a.id]; + i += `\n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    ${t.name}
    \n
    \n
      \n ${g.getPerksHtml(t.id)}\n
    \n
    \n
    \n
    \n
    \n
    \n
    `; + } + for (let e of s) { + const t = a[e.id]; + i += `\n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    ${t.name}
    \n
    \n
      \n ${b.getPerksHtml(t.id)}\n
    \n
    \n
    \n
    \n
    \n
    \n
    `; + } + return i; + } + static getTodaysClasses(e, t) { + const a = p.classesData, + i = s.getInstance(); + let o = ""; + const r = p.getClassSkipTokens(); + n.getSetting("enableEasyMode") + ? (o += `\n
    \n ${i.T("schedule-easy-mode-info", 'Currently the "Easy mode" is active. You may attend any class on any day and skip whenever you want.')}\n
    \n `) + : 0 === t || 6 === t + ? (o += `\n
    \n ${i.T("schedule-weekend-info", "During the weekend, you are free to do any classes you want. You will not be punished for skipping them today.")}\n
    \n `) + : r > 0 && + (o += `\n
    \n ${i.T("class-skip-token-info", "You have %s class-skip tokens. Each allows you to skip one class today.", [r])}\n
    \n `); + for (const t of e) { + let e = a[t.id]; + S.wasAttendedToday(e.id) || + (n.hasMatchingDate(e.days) && + void 0 === x.getActiveTaskForObject(e.id, "class") && + (o += `\n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    ${e.name}
    \n
    \n
      \n
    • ${i.T("class-detail-tasks", "Available task options")}:
    • \n ${A.getTasksHtml(e, t.attendances || 0)}\n\n ${S.isExamAvailable(e.id) ? `\n
    • ${i.T("class-detail-exams", "Available exam options")}:
    • \n ${A.getExamsHtml(e)} ` : ""}\n
    \n
    \n
    \n
    \n
    \n
    \n
    `)); + } + return ( + o.length <= 0 && S.isMaxClassesReached() + ? (o = `${i.T("schedule-no-class-left", "No classes left for today. Please visit tomorrow again.")}`) + : o.length <= 0 && + (o = `${i.T("schedule-no-class-left-add", "No classes left for today. Maybe you want to join a new class?")}`), + o + ); + } + static getActiveTasks(e) { + let t = ""; + for (let a of e) + t += `
    ${x.getTaskProgressHtml(a)}
    `; + return t; + } + static getPunishmentsHtml(e) { + const t = p.punishmentsData; + let a = ""; + for (let s of e) { + if (void 0 !== x.getActiveTaskForObject(s, "punishment")) continue; + let e = t[s]; + a += `\n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    ${e.name}
    \n
    ${w.getPunishmentTasksHtml(e)}
    \n
    \n
    \n
    \n
    \n
    `; + } + return a; + } + static getWeekOverviewHtml(e, t) { + let a = { 1: [], 2: [], 3: [], 4: [], 5: [] }; + const i = s.getInstance(), + o = n.weekdays; + for (const t of e) { + const e = p.classesData[t.id], + s = `${e.name}`; + for (const t of e.days) t < 1 || t > 5 || a[t].push(s); + } + for (const e in a) + a[e].length <= 0 && + a[e].push(i.T("schedule-no-classes", "No classes")); + return `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    ${o[1]}${o[2]}${o[3]}${o[4]}${o[5]}
    ${a[1].join("
    ")}
    ${a[2].join("
    ")}
    ${a[3].join("
    ")}
    ${a[4].join("
    ")}
    ${a[5].join("
    ")}
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    ${o[1]}${a[1].join("
    ")}
    ${o[2]}${a[2].join("
    ")}
    ${o[3]}${a[3].join("
    ")}
    ${o[4]}${a[4].join("
    ")}
    ${o[5]}${a[5].join("
    ")}
    `; + } + static requestUserFeedback() { + let e = "requestUserFeedback-" + n.getRandomString(); + const t = s.getInstance(); + let a = ``; + ($("#confirmationContainer").append(a), + $("#" + e) + .modal({ keyboard: !1 }) + .modal("show") + .on("hidden.bs.modal", function (t) { + $("#" + e) + .modal("dispose") + .remove(); + })); + } + } + class O { + static async importTask(e) { + const t = s.getInstance(), + a = { + title: t.T( + "schedule-task-import-failed-header", + "Task import failed", + ), + text: t.T( + "sschedule-task-import-failed-content", + "During the import for the selected file an error occured. You can check the console for more information.", + ), + }, + i = { + title: t.T( + "schedule-file-import-compression-error-header", + "Compression unavailable", + ), + text: t.T( + "schedule-file-import-compression-error-content", + "The file you tried to import is compressed. Sadly a library required to uncompress it is unavailable.", + ), + }, + n = { + title: t.T("schedule-file-import-aborted-header", "Import aborted"), + text: t.T( + "schedule-file-import-aborted-content", + "The file you tried to import included untrusted code. To protect you the import was aborted.", + ), + }, + o = await _.runImport(e, a, void 0, i, n); + O.importTaskData(o); + } + static importTaskData(e) { + let t = { + type: "custom", + name: l.T("schedule-custom-task-default-name", "Custom Task"), + tasks: {}, + }; + ((t.tasks["" + e.id] = e), + (t = d.applyParametersToObject(t)), + x.startTask(t, "tasks", "" + e.id)); + } + static handleImport(e) { + const t = s.getInstance(); + let a = function (e) { + if (e.error || !e.data) + return void n.showToast( + t.T("schedule-import-task-error-header", "Task import failed"), + t.T( + "schedule-import-task-error-content", + "Importing the shared task was not successful.", + ), + ); + const a = e.data; + O.importTaskData(a); + }.bind(this), + i = function () { + c.downloadFromPastebin(e, a); + }.bind(this); + n.requestUserConfirmation( + t.T( + "schedule-import-custom-task-confirmation-header", + "Import a custom task", + ), + t.T( + "schedule-import-custom-task-confirmation-content", + "Are you sure that you want to import this custom task? The task will be started automatically. Make sure to only load tasks from trusted sources. Proceed at your own risk.", + ), + i, + ); + } + static requestFeedback() { + let e = n.getlastRequestedFeedback(); + (moment.unix(e).isValid() || + ((e = n.getNow().add(3, "day").startOf("day").unix()), + n.setlastRequestedFeedback(e)), + e <= n.getNowUnix() && + ((e = n.getNow().add(1, "month").startOf("day").unix()), + R.requestUserFeedback(), + n.setlastRequestedFeedback(e))); + } + } + class H { + static startTour(e) { + let t = H.tour, + a = []; + if (!t.hasOwnProperty(e)) return !1; + const i = s.getInstance(), + o = new Shepherd.Tour({ + tourName: "" + e, + useModalOverlay: !0, + defaultStepOptions: { + classes: "shadow-md bg-purple-dark", + scrollTo: !1, + buttons: [ + { + text: i.T("tour-navigation-close", "Close"), + action() { + return this.complete(); + }, + }, + { + text: i.T("tour-navigation-next", "Next"), + action() { + return this.next(); + }, + }, + ], + }, + }); + (t[e] && (a = t[e].filter((e) => $(e.attachTo.element).is(":visible"))), + a.length > 0 && + (n.setTutorial(n.getTutorial().concat(e, ";")), + o.addSteps(a), + o.start())); + } + static get tour() { + const e = s.getInstance(); + return { + majors: [ + { + id: "majors-0", + title: e.T("tour-majors-0-title", "Navigation"), + text: e.T( + "tour-majors-0-text", + "This is the global navigation. Here you can switch to different areas of the game.", + ), + attachTo: { element: "body nav.navbar", on: "bottom" }, + }, + { + id: "majors-1", + title: e.T("tour-majors-1-title", "Mobile navigation"), + text: e.T( + "tour-majors-1-text", + "On mobile not all items are always visible, use this button to show the available entries.", + ), + attachTo: { element: "nav .navbar-toggler", on: "bottom" }, + }, + { + id: "majors-2", + title: e.T("tour-majors-2-title", "Major cards"), + text: e.T( + "tour-majors-2-text", + "Each major available will be displayed as a card to allow interacting with it.", + ), + attachTo: { element: ".min-card-container", on: "bottom" }, + }, + { + id: "majors-3", + title: e.T("tour-majors-3-title", "Details"), + text: e.T( + "tour-majors-3-text", + "You can access a detail view by clicking on the image of the major.", + ), + attachTo: { + element: ".min-card-container .img-container-overview", + on: "bottom", + }, + }, + { + id: "majors-4", + title: e.T("tour-majors-4-title", "Card actions"), + text: e.T( + "tour-majors-4-text", + "The major cards can have multiple actions related to it.", + ), + attachTo: { + element: + ".min-card-container .img-button-container-left-corner", + on: "bottom", + }, + }, + { + id: "majors-5", + title: e.T("tour-majors-5-title", "Display information"), + text: e.T( + "tour-majors-5-text", + "This information button will allow you quick access to some detail information related to the major.", + ), + attachTo: { + element: + ".min-card-container .img-button-container-left-corner .text-white", + on: "bottom", + }, + }, + { + id: "majors-6", + title: e.T("tour-majors-6-title", "Card information"), + text: e.T( + "tour-majors-6-text", + "The bottom of the card will give a small description for the major.", + ), + attachTo: { + element: ".min-card-container .card-body", + on: "bottom", + }, + }, + ], + classes: [ + { + id: "classes-0", + title: e.T("tour-classes-0-title", "Tier navigation"), + text: e.T( + "tour-classes-0-text", + "Sometimes there are multiple tiers, you can navigate to a different one using these items.", + ), + attachTo: { element: "#action-navigation", on: "right" }, + }, + { + id: "classes-1", + title: e.T("tour-classes-1-title", "Tier navigation"), + text: e.T( + "tour-classes-1-text", + "Sometimes there are multiple tiers, you can navigate to a different one using these items or swipe to the side.", + ), + attachTo: { + element: "#customCarousel .carousel-indicators", + on: "bottom", + }, + }, + { + id: "classes-2", + title: e.T("tour-classes-2-title", "Card"), + text: e.T( + "tour-classes-2-text", + "Each class available will be displayed as a card to allow interacting with it.", + ), + attachTo: { element: ".min-card-container", on: "bottom" }, + }, + { + id: "classes-3", + title: e.T("tour-classes-3-title", "Image"), + text: e.T( + "tour-classes-3-text", + "You can access a detail view by clicking on the image of the class.", + ), + attachTo: { + element: ".min-card-container .img-container-overview", + on: "bottom", + }, + }, + { + id: "classes-4", + title: e.T("tour-classes-4-title", "Card actions"), + text: e.T( + "tour-classes-4-text", + "The class cards can have multiple actions related to it.", + ), + attachTo: { + element: + ".min-card-container .img-button-container-left-corner", + on: "bottom", + }, + }, + { + id: "classes-5", + title: e.T("tour-classes-5-title", "Display information"), + text: e.T( + "tour-classes-5-text", + "This information button will allow you quick access to some detail information related to the class.", + ), + attachTo: { + element: + ".min-card-container .img-button-container-left-corner .text-white", + on: "bottom", + }, + }, + { + id: "classes-6", + title: e.T("tour-classes-6-title", "Card information"), + text: e.T( + "tour-classes-6-text", + "These information will give a small description for the class.", + ), + attachTo: { + element: ".min-card-container .card-body", + on: "bottom", + }, + }, + ], + mapping: [ + { + id: "mapping-0", + title: "Global actions", + text: "Use the actions to export and import the complete map.", + attachTo: { + element: "#action-navigation nav ul.list-group", + on: "bottom", + }, + }, + { + id: "mapping-0-info", + title: "Hide actions", + text: 'If you need additional space (e.g. on mobile) you can click on the header "Actions" to collapse them.', + attachTo: { + element: "#action-navigation ul li.list-group-item", + on: "bottom", + }, + }, + { + id: "mapping-0-desktop", + title: "Navigation", + text: "Use the navigation menu to switch to different sub menues.", + attachTo: { + element: "#action-navigation nav ul.list-group:nth-child(3)", + on: "right", + }, + }, + { + id: "mapping-0-mobile", + title: "Mobile navigation", + text: "Use these buttons or swipe to switch between the different sub menues.", + attachTo: { + element: "#mappingCarousel .carousel-indicators", + on: "bottom", + }, + }, + { + id: "mapping-1", + title: "Save map", + text: "Make sure to save your progress regularly!", + attachTo: { + element: "#action-navigation nav ul div.btn-group", + on: "bottom", + }, + }, + { + id: "mapping-2", + title: "Export finished map", + text: "Once you are done export a playable version.", + attachTo: { + element: "#action-navigation nav ul div.btn-group", + on: "bottom", + }, + }, + { + id: "mapping-3", + title: "Save your changes", + text: "Each change needs to be saved. If you don't want to keep the changes use the 'Close' button instead.", + attachTo: { + element: "#generalCardContainer .btn-primary", + on: "bottom", + }, + }, + { + id: "mapping-4", + title: "Add new items", + text: "To add new items you will find such a 'plus' button next to the corresponding items, use it to open a new sub menu to create another one. If you create a new item related to something else it will automatically be linked.", + attachTo: { element: ".header-add", on: "bottom" }, + }, + { + id: "mapping-5", + title: "Created items", + text: "You will find created items below the corresponding header.", + attachTo: { element: "#helpCardContainer", on: "bottom" }, + }, + ], + }; + } + } + class F { + static get expectedParameters() { + return { getView: ["majorId"] }; + } + static getView(e) { + const t = e.majorId, + a = I.getGrade(t), + i = p.majorsData[t], + n = s.getInstance(); + return ( + p.getFinishedMajors().includes(t) || _.navigateBack(), + `
    \n

    \n ${n.T("graduated-certificate-header", "Certificate for %s", [i.name])}\n

    \n
    \n
    \n
    \n
    \n \n \n \n
    ${n.T("major-status-grade", "Grade")} ${a}
    \n
    \n
    \n
    \n
    ${n.T("graduated-congratulations-header", "Congratulations for graduating %s.", [i.name])}
    \n

    ${n.T("graduated-congratulations-1", "Many take on this journey but only few manage to finish it successfully. I am glad to see that you are one of those few!")}

    \n

    ${n.T("graduated-congratulations-2", "There is still a lot todo and I am sure you didn't have enough yet. Once you are ready for the next challenge start one of the other majors or import a new map.")}

    \n

    ${n.T("graduated-congratulations-3", "Since you are now very experienced you may also consider to create your own classes for fellow students to enrich their university life.")}

    \n
    \n ${F.getGradeTable(t)}\n
    \n
    \n
    \n
    \n
    \n ` + ); + } + static getGradeTable(e) { + let t = 0, + a = 0, + i = ""; + const r = s.getInstance(); + for (const s of I.mandatoryClasses(e)) { + const e = p.classesData[s], + r = S.getAssignedClass(s), + l = o.maxAttendances[e.tier]; + ((i += `\n \n ${e.name}\n ${r.attendances}/${l}\n ${n.getGrade(r.attendances, l)}\n \n `), + (t += r.attendances), + (a += l)); + } + return `\n \n \n \n \n \n \n \n \n \n ${i}\n \n \n \n \n \n \n \n \n
    ${r.T("graduated-table-class", "Class")}${r.T("graduated-table-knowledge-points", "Knowledge Points")}${r.T("graduated-table-grade", "Grade")}
    ${t}/${a}${n.getGrade(t, a)}
    \n `; + } + } + class U { + static get expectedParameters() { + return { getView: [] }; + } + static getView() { + const e = s.getInstance(); + return `
    \n

    ${e.T("disclaimer-header", "Disclaimer and Data Protection")}

    \n
    \n
    \n
    \n

    \n ${e.T("disclaimer-block-1", "Websites that can be accessed publicly are required to fulfill some legal requirements. \n Which in turn makes us both suffer through this short introduction what this website does and so on.\n You can find a link to this page at the bottom of the home page.\n If you are okay with the following you may continue using this website and agree using the button at the bottom. \n If you disagree we will clean up all the stored data and send you on your way.")}\n

    \n\n

    ${e.T("disclaimer-overview-header", "Overview")}

    \n
      \n
    • ${e.T("disclaimer-overview-1", 'In the following the term "User" is used to reference you and "We" for us the provider.')}
    • \n
    • ${e.T("disclaimer-overview-2", "This website is a free tool you may use as-is as long as we want to provide it. You might come back here tomorrow and everything is gone.")}
    • \n
    • ${e.T("disclaimer-overview-3", "This website doesn't use any back-end besides a simple Web-Service used to provide the website content.")}
    • \n
    • ${e.T("disclaimer-overview-4", "This website runs completely on your device. If you lose it or clear the device/website storage everything will be gone.")}
    • \n
    • ${e.T("disclaimer-overview-5", "This website is only a framework, therefore requires user generated content which is manually created and provided by the users. We don't know what anybody uses this service for. \n You can compare this to a local text editor - you can create or open text files, while everything stays on your device. You may use this tool to access files created by other users.")}
    • \n
    • ${e.T("disclaimer-overview-6", "The source code required to run this website is served completely from this domain. There are some links which leave this page, we have no influence on whatever they are doing.")}
    • \n
    • ${e.T("disclaimer-overview-7", "User generated content may be malicious, we do attempt to protect you from obvious attacks - but in the end you are responsible for the external content you load.")}
    • \n
    \n\n

    ${e.T("disclaimer-inner-header", "Disclaimer")}

    \n

    \n ${e.T("disclaimer-inner", "Using this website is free of charge, there are no ad-services or tracking-services active. There is no aim to make any money using this framework.\n\n Since this website uses user generated content and doesn't store any information about the users, the provider is unable to audit any \n user generated content you are loading. You will therefore need to take full reponsibiltiy for any user generated content you are adding.\n Additionally the provider is not responsible for the content of linked pages, if there is a legal requirement to remove any reference from\n the framework it will be complied to.")}\n

    \n\n

    ${e.T("disclaimer-data-protection-header", "Data protection notice")}

    \n

    \n ${e.T("disclaimer-data-protection", 'No data is collected and stored outside of the user devices. Progress, settings, content and feedback marker are stored on your local device. \n User generated content stays on the device of the user. If you decide to provide a "heartbeat" using the feedback option you are leaving \n this website and the Bitly Privacy Policy applies. The feedback is optional and Bitly-Links will be highlighted.')}\n ${e.T("disclaimer-bitly-link", "Click here to view the Bitly Privacy Policy on bitly.com")}. \n

    \n\n

    ${e.T("disclaimer-stored-data-header", "Stored data")}

    \n

    \n ${e.T("disclaimer-stored-data-description", "Multiple technologies are used to store your progress, settings and added user generated content.")}\n

      \n
    • ${e.T("disclaimer-stored-data-local", "Local storage: Settings, Delayed notifications, Last feedback information request, Accepted disclaimer, Already displayed tutorials")}
    • \n
    • ${e.T("disclaimer-stored-data-indexeddb", "IndexedDB: User generated content, Current progress")}
    • \n
    • ${e.T("disclaimer-stored-data-cache", "Cache: The website framework data to allow offline mode")}
    • \n
    \n

    \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n `; + } + } + class L { + static acceptedDisclaimer() { + n.setAcceptedDisclaimer(); + const e = new URLSearchParams( + window.location.search.replace(/#.*?$/, ""), + ); + if (e.get("redirect")) { + let t = atob(decodeURIComponent(e.get("redirect"))); + if (t.startsWith("?")) return void _.navigate("" + t); + } + _.navigate("?page=home"); + } + static rejectedDisclaimer() { + (localStorage.clear(), + sessionStorage.clear(), + "serviceWorker" in navigator && + (caches.keys().then(function (e) { + for (let t of e) caches.delete(t); + }), + navigator.serviceWorker.getRegistrations().then(function (e) { + for (let t of e) t.unregister(); + })), + r.getInstance().drop( + function () { + _.navigate("about:blank"); + }.bind(this), + )); + } + } + let V, + G = 0; + class J { + static get expectedParameters() { + return { getView: [] }; + } + static getView(e) { + return ( + Y.reset(), + Y.registerWarning(), + Y.autoSaveRestore(), + document + .querySelector("html") + .addEventListener("mappingRefreshed", function (e) { + ($("#majorsTable").bootstrapTable(), + $("#classesTable").bootstrapTable(), + $("#tasksTable").bootstrapTable(), + $("#punishmentsTable").bootstrapTable(), + $("#clubsTable").bootstrapTable(), + $("#partnersTable").bootstrapTable(), + $("#modifiersTable").bootstrapTable(), + $("#tagsTable").bootstrapTable(), + $("#helpTable").bootstrapTable(), + $("#rouletteTable").bootstrapTable()); + }), + document + .querySelector("html") + .addEventListener("navigationFinished", function (e) { + Y.refreshView(); + }), + `
    \n
    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    ` + ); + } + static generateImageSelection(e) { + return `\n
    \n
    \n
    \n Provided image\n
    \n
    \n
    \n
    \n Optimal size is 600 x 800 px.\n
    \n\n \n \n \n
    \n
    \n
    \n
    \n `; + } + static generateRouletteTableEntry(e) { + return `\n \n ${e.id}\n ${e.title} \n ${e.description} \n ${e.probability} \n ${e.rollPunishment} \n \n
    \n \n \n
    \n \n \n `; + } + static generateHelpTableEntry(e) { + return `\n \n ${e.id}\n ${e.title} \n ${e.text} \n \n
    \n \n \n
    \n \n \n `; + } + static generateTagTableEntry(e) { + return `\n \n ${e} \n \n
    \n \n \n
    \n \n \n `; + } + static generateRouletteCard(e) { + return `
    \n
    \n
    \n
    Roulette ${e.id}: ${e.title}
    \n

    ${e.description}

    \n
    \n
    \n Edit\n
    \n
    \n
    `; + } + static generateHelpCard(e) { + return `
    \n
    \n
    \n
    Help ${e.id}: ${e.title}
    \n

    ${e.text}

    \n
    \n
    \n Edit\n
    \n
    \n
    `; + } + static generateTagCard(e) { + return `
    \n
    \n
    \n
    ${e}
    \n Edit\n
    \n
    \n
    `; + } + static generateParamCard(e) { + return `
    \n
    \n
    \n
    $param${e.id}
    \n

    ${e.value} ${"punishments" == e.valueType ? e.punTier : ""} ${e.valueType} ${e.description.length > 0 ? `(${e.description})` : ""}

    \n
    \n
      \n ${e.applyMultiplier ? '
    • Apply multiplier
    • ' : ""}\n ${e.spawnTimer ? '
    • Spawn timer
    • ' : ""}\n ${e.startTimerAutomatically ? '
    • Start timer automatically
    • ' : ""}\n ${e.provideCounter ? '
    • Provide counter
    • ' : ""}\n ${e.punishTime ? '
    • Provide punish option
    • ' : ""}\n ${e.hiddenTask ? '
    • Delayed sub-task
    • ' : ""}\n
    \n
    \n Edit\n Insert\n
    \n
    `; + } + static generateTaskTableEntry(e) { + let t = Y.applyParamsToString(e.id, e.description), + a = "", + s = n.getRandomString(); + if (void 0 !== e.tags && e.tags.length > 0) + for (const t of e.tags) + a += `${t}`; + return `\n \n ${e.id}\n Task ${e.id} \n ${t}\n ${a}\n \n
    \n \n \n
    \n
    \n \n
    \n \n \n `; + } + static generateTaskCard(e) { + let t = Y.applyParamsToString(e.id, e.description), + a = ""; + if (void 0 !== e.tags && e.tags.length > 0) + for (const t of e.tags) + a += `${t}`; + return `
    \n
    \n
    \n
    Task ${e.id}
    \n

    ${t}

    \n ${a.length > 0 ? `

    ${a}

    ` : ""}\n
    \n \n
    `; + } + static generateClassTableEntry(e) { + let t = "", + a = "", + s = "", + i = n.getRandomString(); + for (const s of V.tasks.sort((e, t) => e.id - t.id)) + (e.tasks.includes(s.id) && + (t += `
  • \n Task ${s.id}:
    \n ${Y.applyParamsToString(s.id, s.description)}\n
  • `), + e.exams.includes(s.id) && + (a += `
  • \n Task ${s.id}:
    \n ${Y.applyParamsToString(s.id, s.description)}\n
  • `)); + for (const t of V.classes.sort((e, t) => e.id - t.id)) + e.prerequisites.includes(t.id) && + (s += `
  • \n Class ${t.id}:
    \n ${t.title}\n
  • `); + return `\n \n ${e.id}\n ${e.tier}\n ${e.title}\n ${e.subtitle}\n ${e.comment}\n ${e.description}\n ${e.days.map((e) => n.weekdays[e]).join(", ")}\n
      ${s}
    \n
      ${t}
    \n
      ${a}
    \n \n
    \n \n \n
    \n \n \n `; + } + static generateClassCard(e) { + let t = "", + a = "", + s = "", + i = n.getRandomString(); + for (const s of V.tasks.sort((e, t) => e.id - t.id)) + (e.tasks.includes(s.id) && + (t += `
  • \n
    \n
    \n \n
    \n
    Task ${s.id} ${Y.applyParamsToString(s.id, s.description)}
    \n
    \n
  • `), + e.exams.includes(s.id) && + (a += `
  • \n
    \n
    \n \n
    \n
    Task ${s.id} ${Y.applyParamsToString(s.id, s.description)}
    \n
    \n
  • `)); + for (const t of V.classes.sort((e, t) => e.id - t.id)) + e.prerequisites.includes(t.id) && + (s += `
  • \n
    \n
    \n \n
    \n
    Class ${t.id} ${t.title}
    \n
    \n
  • `); + return `
    \n
    \n
    \n \n \n ${n.getButtonsContainer( + [ + ``, + ` Edit`, + ], + )}\n\n
    \n
    \n
      \n ${s.length > 0 ? '
    • Prerequisites:
    • \n ' + s : ""}\n ${a.length > 0 ? '
    • Available Exam Tasks:
    • \n ' + a : ""} \n ${t.length > 0 ? '
    • Available Tasks:
    • \n ' + t : ""}\n
    \n
    \n
    \n
    \n\n
    \n
    \n Class ${e.id}: ${e.title} \n ${e.subtitle}\n ${void 0 !== e.comment ? `${e.comment}` : ""}\n
    \n

    ${e.description}

    \n
    \n
    \n
    `; + } + static generateMajorTableEntry(e) { + let t = "", + a = "", + s = n.getRandomString(); + for (const a of V.tasks.sort((e, t) => e.id - t.id)) + e.exams.includes(a.id) && + (t += `
  • \n Task ${a.id}:
    \n ${Y.applyParamsToString(a.id, a.description)}\n
  • `); + for (const t of V.classes.sort((e, t) => e.id - t.id)) + e.prerequisites.includes(t.id) && + (a += `
  • \n Class ${t.id}:
    \n ${t.title}\n
  • `); + return `\n \n ${e.id}\n ${e.title}\n ${e.subtitle}\n ${e.description}\n
      ${a}
    \n
      ${t}
    \n \n
    \n \n \n
    \n \n \n `; + } + static generateMajorCard(e) { + let t = "", + a = "", + s = n.getRandomString(); + for (const a of V.tasks.sort((e, t) => e.id - t.id)) + e.exams.includes(a.id) && + (t += `
  • \n
    \n
    \n \n
    \n
    Task ${a.id} ${Y.applyParamsToString(a.id, a.description)}
    \n
    \n
  • `); + for (const t of V.classes.sort((e, t) => e.id - t.id)) + e.prerequisites.includes(t.id) && + (a += `
  • \n
    \n
    \n \n
    \n
    Class ${t.id} ${t.title}
    \n
    \n
  • `); + return `
    \n
    \n
    \n \n \n ${n.getButtonsContainer( + [ + ``, + ` Edit`, + ], + )}\n\n
    \n
    \n
      \n ${a.length > 0 ? '
    • Prerequisites:
    • \n ' + a : ""}\n ${t.length > 0 ? '
    • Available Exam Tasks:
    • \n ' + t : ""}\n
    \n
    \n
    \n
    \n\n
    \n
    \n Major ${e.id}: ${e.title}\n ${e.subtitle}\n
    \n

    ${e.description}

    \n
    \n
    \n
    `; + } + static generatePunishmentTableEntry(e) { + let t = V.tasks.filter((t) => t.id === e.punishment)[0], + a = Y.applyParamsToString(t.id, t.description); + return `\n \n ${e.id}\n ${e.tier}\n ${e.title}\n Task ${t.id}:
    ${a}\n \n
    \n \n \n
    \n \n \n `; + } + static generatePunishmentCard(e) { + let t = V.tasks.filter((t) => t.id === e.punishment)[0], + a = Y.applyParamsToString(t.id, t.description); + return `
    \n
    \n
    \n \n ${n.getButtonsContainer( + [ + ` Edit`, + ], + )}\n
    \n\n
    \n
    \n Punishment ${e.id}: ${e.title}\n ${e.tier}\n
    \n

    ${a}

    \n
    \n
    \n
    `; + } + static generatePartnerTableEntry(e) { + let t = "", + a = n.getRandomString(); + for (const a of V.modifiers.sort((e, t) => e.id - t.id)) + e.modifiers.includes(a.id) && + (t += `
  • \n Modifier ${a.id}:
    \n ${Y.getModifierText(a)}\n
  • `); + return `\n \n ${e.id}\n ${e.name}\n ${e.description}\n
      ${t}
    \n \n
    \n \n \n
    \n \n \n `; + } + static generatePartnerCard(e) { + let t = "", + a = n.getRandomString(); + for (const a of V.modifiers.sort((e, t) => e.id - t.id)) + e.modifiers.includes(a.id) && + (t += `
  • \n
    \n
    \n \n
    \n
    Modifier ${a.id} ${Y.getModifierText(a)}
    \n
    \n
  • `); + return `
    \n
    \n
    \n \n \n ${n.getButtonsContainer( + [ + ``, + ` Edit`, + ], + )}\n\n
    \n
    \n
      \n ${t.length > 0 ? '
    • Modifiers:
    • \n ' + t : ""}\n
    \n
    \n
    \n
    \n\n
    \n
    \n Partner ${e.id}: ${e.name}\n
    \n

    ${e.description}

    \n
    \n
    \n
    `; + } + static generateClubTableEntry(e) { + let t = "", + a = n.getRandomString(); + for (const a of V.modifiers.sort((e, t) => e.id - t.id)) + e.modifiers.includes(a.id) && + (t += `
  • \n Modifier ${a.id}:
    \n ${Y.getModifierText(a)}\n
  • `); + return `\n \n ${e.id}\n ${e.tier}\n ${e.name}\n ${e.comment}\n ${e.description}\n
      ${t}
    \n \n
    \n \n \n
    \n \n \n `; + } + static generateClubCard(e) { + let t = "", + a = n.getRandomString(); + for (const a of V.modifiers.sort((e, t) => e.id - t.id)) + e.modifiers.includes(a.id) && + (t += `
  • \n
    \n
    \n \n
    \n
    Modifier ${a.id} ${Y.getModifierText(a)}
    \n
    \n
  • `); + return `
    \n
    \n
    \n \n \n ${n.getButtonsContainer( + [ + ``, + ` Edit`, + ], + )}\n\n
    \n
    \n
      \n ${t.length > 0 ? '
    • Modifiers:
    • \n ' + t : ""}\n
    \n
    \n
    \n
    \n\n
    \n
    \n Club ${e.id}: ${e.name} ${e.tier}\n ${void 0 !== e.comment ? `${e.comment}` : ""}\n
    \n

    ${e.description}

    \n
    \n
    \n
    `; + } + static generateModifierTableEntry(e) { + let t = Y.getModifierTags(e.tags), + a = "", + s = n.getRandomString(); + if (void 0 !== e.tags && e.tags.length > 0) + for (const t of e.tags) + a += `${t}`; + return `\n \n ${e.id}\n Modifier ${e.id}\n ${Y.getModifierMod(e, t)}\n ${Y.getModifierPerk(e, t)}\n \n
    \n \n \n
    \n \n \n `; + } + static generateModifierCard(e) { + let t = Y.getModifierText(e), + a = ""; + if (void 0 !== e.tags && e.tags.length > 0) + for (const t of e.tags) + a += `${t}`; + return `
    \n
    \n
    \n
    Modifier ${e.id}
    \n

    ${t}

    \n ${a.length > 0 ? `

    ${a}

    ` : ""}\n
    \n \n
    `; + } + static getGeneralView() { + return `
    \n
    \n \n \n
    \n
    \n \n \n
    \n \n \n
    `; + } + static generateCustomExportModal(e) { + let t = "", + a = "", + s = "", + i = "", + n = "", + o = ""; + if ( + void 0 !== V.majors && + Array.isArray(V.majors) && + V.majors.length > 0 + ) + for (const e of V.majors.sort((e, t) => e.id - t.id)) + t += ``; + if ( + void 0 !== V.classes && + Array.isArray(V.classes) && + V.classes.length > 0 + ) + for (const e of V.classes.sort((e, t) => e.id - t.id)) + a += ``; + if (void 0 !== V.clubs && Array.isArray(V.clubs) && V.clubs.length > 0) + for (const e of V.clubs.sort((e, t) => e.id - t.id)) + s += ``; + if ( + void 0 !== V.partners && + Array.isArray(V.partners) && + V.partners.length > 0 + ) + for (const e of V.partners.sort((e, t) => e.id - t.id)) + i += ``; + if ( + void 0 !== V.punishments && + Array.isArray(V.punishments) && + V.punishments.length > 0 + ) + for (const e of V.punishments.sort((e, t) => e.id - t.id)) + n += ``; + if ( + void 0 !== V.rouletteOptions && + Array.isArray(V.rouletteOptions) && + V.rouletteOptions.length > 0 + ) + for (const e of V.rouletteOptions.sort((e, t) => e.id - t.id)) + o += ``; + return `\n `; + } + static generateRouletteModal(e) { + return `\n `; + } + static generateHelpModal(e) { + return `\n `; + } + static generateTagModal(e) { + return `\n `; + } + static generateParamModal(e) { + let t = + "seconds" === e.valueType || + "minutes" === e.valueType || + "hours" === e.valueType || + "days" === e.valueType, + a = "punishments" === e.valueType, + s = !t && !a, + i = e.value; + return ( + e.timeUnit && "hours" == e.timeUnit + ? (i /= 60) + : e.timeUnit && "days" == e.timeUnit && (i /= 1440), + `\n ` + ); + } + static generateTaskModal(e) { + let t = ""; + if (void 0 !== V.tags && Array.isArray(V.tags) && V.tags.length > 0) + for (const a of V.tags) + void 0 !== e.tags && e.tags.includes(a) + ? (t += ``) + : (t += ``); + return `\n `; + } + static generateClassModal(e) { + let t = "", + a = "", + s = ""; + if ( + void 0 !== V.classes && + Array.isArray(V.classes) && + V.classes.length > 0 + ) + for (const a of V.classes.sort((e, t) => e.id - t.id)) + e.id !== a.id && + (e.prerequisites.includes(a.id) + ? (t += ``) + : (t += ``)); + if (void 0 !== V.tasks && Array.isArray(V.tasks) && V.tasks.length > 0) + for (const t of V.tasks.sort((e, t) => e.id - t.id)) + (e.tasks.includes(t.id) + ? (a += ``) + : (a += ``), + e.exams.includes(t.id) + ? (s += ``) + : (s += ``)); + return `\n `; + } + static generateMajorModal(e) { + let t = "", + a = ""; + if ( + void 0 !== V.classes && + Array.isArray(V.classes) && + V.classes.length > 0 + ) + for (const a of V.classes.sort((e, t) => e.id - t.id)) + e.prerequisites.includes(a.id) + ? (t += ``) + : (t += ``); + if (void 0 !== V.tasks && Array.isArray(V.tasks) && V.tasks.length > 0) + for (const t of V.tasks.sort((e, t) => e.id - t.id)) + e.exams.includes(t.id) + ? (a += ``) + : (a += ``); + return `\n `; + } + static generatePunishmentModal(e) { + let t = ""; + if (void 0 !== V.tasks && Array.isArray(V.tasks) && V.tasks.length > 0) + for (const a of V.tasks.sort((e, t) => e.id - t.id)) + e.punishment == a.id + ? (t += ``) + : (t += ``); + return `\n `; + } + static generatePartnerModal(e) { + let t = ""; + if ( + void 0 !== V.modifiers && + Array.isArray(V.modifiers) && + V.modifiers.length > 0 + ) + for (const a of V.modifiers.sort((e, t) => e.id - t.id)) + e.modifiers.includes(a.id) + ? (t += ``) + : (t += ``); + return `\n `; + } + static generateClubModal(e) { + let t = ""; + if ( + void 0 !== V.modifiers && + Array.isArray(V.modifiers) && + V.modifiers.length > 0 + ) + for (const a of V.modifiers.sort((e, t) => e.id - t.id)) + e.modifiers.includes(a.id) + ? (t += ``) + : (t += ``); + return `\n `; + } + static generateModifierModal(e) { + let t = ""; + if (void 0 !== V.tags && Array.isArray(V.tags) && V.tags.length > 0) + for (const a of V.tags) + void 0 !== e.tags && e.tags.includes(a) + ? (t += ``) + : (t += ``); + return `\n `; + } + static generateQrModal(e) { + return `\n `; + } + static generateImageModal(e, t) { + return `\n `; + } + } + class Y { + static escapeQuote(e) { + return "string" != typeof e ? e : e.replace(/"/g, """); + } + static minutesToTime(e) { + let t = Math.floor(e / 1440), + a = Math.floor((e - 1440 * t) / 60), + s = Math.round(e % 60), + i = ""; + return ( + 1 == t ? (i += t + " day") : t > 1 && (i += t + " days"), + a > 0 && + (t && !s ? (i += " and") : t && (i += ";"), + (i += 1 == a ? ` ${a} hour` : ` ${a} hours`)), + s > 0 && + ((t || a) && (i += " and"), + (i += 1 == s ? ` ${s} minute` : ` ${s} minutes`)), + i.trim() + ); + } + static applyParamsToString(e, t) { + let a = "".concat(t); + for (const t of V.params.filter((t) => t.taskId == e)) { + let e = "", + s = Math.round(1 * t.value); + if ("minutes" === t.valueType) { + Y.minutesToTime(s); + let a = Y.minutesToTime(t.value); + (t.applyMultiplier, (e = "" + a)); + } else + "punishments" === t.valueType + ? (t.applyMultiplier, + (e = `${t.value} ${t.punTier ? t.punTier : "random"} ${t.valueType}`)) + : (t.applyMultiplier, (e = `${t.value} ${t.valueType}`)); + a = a.replace("$param" + t.id, `${e}`); + } + return a; + } + static restoredTableSettings(e) { + let t = $("#" + e).bootstrapTable("getOptions"); + return ( + ("object" == typeof t && t.hasOwnProperty("idField")) || + (t = { + searchText: "", + sortName: "", + sortOrder: "desc", + pageNumber: 1, + pageSize: 10, + visibleColumns: !0, + }), + "object" == typeof t && + Array.isArray(t.columns) && + t.columns.length > 0 && + (t.visibleColumns = t.columns[0] + .filter((e) => e.visible) + .map((e) => e.field)), + t + ); + } + static getModifierTags(e) { + return void 0 !== e && e.length > 0 ? e.join(", ") : "all"; + } + static getModifierMod(e, t) { + return "difficulty" === e.modType + ? `Increase difficulty for ${t} tasks by ${e.modVal}%.` + : "punishment" === e.modType + ? "Roll a punishment." + : "" + e.modVal; + } + static getModifierPerk(e, t) { + return "difficulty" === e.perkType + ? `Decrease difficulty for ${t} tasks by ${e.perkVal}%.` + : "skip" === e.perkType + ? "Allow skipping a class without punishment." + : "attendance" === e.perkType + ? `Add an additional attendance for ${t} classes.` + : "resetRoulette" === e.perkType + ? "Reset roulette." + : "" + e.perkVal; + } + static getModifierText(e) { + let t = "", + a = ""; + return ( + (a = Y.getModifierTags(e.tags)), + (t += `[${Y.getModifierMod(e, a)}]`), + (t += `[${Y.getModifierPerk(e, a)}]`), + t + ); + } + static saveGeneral() { + ((V.general.title = $("#mapTitle").val()), + (V.general.description = $("#mapDescription").val()), + Y.autoSaveUpdate("general")); + } + static resetGeneral() { + ($("#mapTitle").val(V.general.title), + $("#mapDescription").val(V.general.description)); + } + static addRoulette() { + Y.openRoulette({ + id: V.globalIndex++, + title: "", + description: "", + probability: 0, + rollPunishment: !1, + }); + } + static editRoulette(e) { + Y.openRoulette( + V.rouletteOptions.find(function (t) { + return t.id == e; + }), + ); + } + static openRoulette(e) { + let t = "#rouletteModal" + e.id; + ($("#modalContainer").append(J.generateRouletteModal(e)), + $(t) + .modal({ keyboard: !0 }) + .modal("show") + .on("keydown", Y.handleModalKeyDown) + .on("shown.bs.modal", function () { + $(t + " .rouletteModal-title").trigger("focus"); + }) + .on("hidden.bs.modal", function (e) { + (Y.refreshView(), + $("" + t) + .modal("dispose") + .remove()); + })); + } + static removeRoulette(e) { + ((V.rouletteOptions = V.rouletteOptions.filter(function (t) { + return t.id != e; + })), + $("#rouletteModal" + e).is(":visible") + ? $("#rouletteModal" + e).modal("hide") + : Y.refreshView()); + } + static saveRouletteAndNew(e) { + Y.saveRoulette(e) && Y.addRoulette(); + } + static saveRouletteAndDuplicate(e) { + if (Y.saveRoulette(e)) { + let t = JSON.parse( + JSON.stringify( + V.rouletteOptions.find(function (t) { + return t.id == e; + }), + ), + ); + ((t.id = V.globalIndex++), Y.openRoulette(t)); + } + } + static saveRoulette(e) { + let t = { + id: e, + title: $(`#rouletteModal${e} .rouletteModal-title`).val(), + description: $(`#rouletteModal${e} .rouletteModal-description`).val(), + probability: parseFloat( + document.querySelector("#rouletteModal-probability" + e).value, + ), + rollPunishment: document.querySelector( + "#rouletteModal-rollPunishment" + e, + ).checked, + }; + return void 0 === t.title || t.title.length <= 0 + ? (n.showToast("Invalid title", "Please provide a title.", "warning"), + !1) + : void 0 === t.description || t.description.length <= 0 + ? (n.showToast( + "Invalid description", + "Please provide a description.", + "warning", + ), + !1) + : (Y.removeRoulette(e), + V.rouletteOptions.push(t), + Y.autoSaveUpdate("roulette"), + !0); + } + static addHelp() { + Y.openHelp({ id: V.globalIndex++, title: "", text: "" }); + } + static editHelp(e) { + Y.openHelp( + V.help.find(function (t) { + return t.id == e; + }), + ); + } + static handleModalKeyDown(e) { + if (e.ctrlKey || e.metaKey) + switch (String.fromCharCode(e.which).toLowerCase()) { + case "s": + const t = $("button.save-button", e.currentTarget); + if (1 == t.length) + return (t.trigger("click"), e.preventDefault(), !1); + } + } + static openHelp(e) { + let t = "#helpModal" + e.id; + ($("#modalContainer").append(J.generateHelpModal(e)), + $(t) + .modal({ keyboard: !0 }) + .modal("show") + .on("keydown", Y.handleModalKeyDown) + .on("shown.bs.modal", function () { + $(t + " .helpModal-title").trigger("focus"); + }) + .on("hidden.bs.modal", function (e) { + (Y.refreshView(), + $("" + t) + .modal("dispose") + .remove()); + })); + } + static removeHelp(e) { + ((V.help = V.help.filter(function (t) { + return t.id != e; + })), + $("#helpModal" + e).is(":visible") + ? $("#helpModal" + e).modal("hide") + : Y.refreshView()); + } + static saveHelpAndNew(e) { + Y.saveHelp(e) && Y.addHelp(); + } + static saveHelpAndDuplicate(e) { + if (Y.saveHelp(e)) { + let t = JSON.parse( + JSON.stringify( + V.help.find(function (t) { + return t.id == e; + }), + ), + ); + ((t.id = V.globalIndex++), Y.openHelp(t)); + } + } + static saveHelp(e) { + let t = { + id: e, + title: $(`#helpModal${e} .helpModal-title`).val(), + text: $(`#helpModal${e} .helpModal-text`).val(), + }; + if (void 0 === t.title || t.title.length <= 0) + return ( + n.showToast("Invalid title", "Please provide a title.", "warning"), + !1 + ); + if (void 0 === t.text || t.text.length <= 0) + return ( + n.showToast( + "Invalid help text", + "Please provide a help text.", + "warning", + ), + !1 + ); + let a = document.createElement("div"); + return ( + (a.innerHTML = t.text), + (t.text = a.innerHTML), + Y.removeHelp(e), + V.help.push(t), + Y.autoSaveUpdate("help"), + !0 + ); + } + static addTag(e) { + (Y.openTag(""), Y.enableTagReference(e)); + } + static enableTagReference(e) { + if (!e) return !1; + ($( + "#tagModal .save-button, #tagModal .save-button-area a.customLink", + ).on("click", function (t) { + let a = $("#tagModal .tagModal-tag").val(); + ($(e).append( + ``, + ), + $(e).selectpicker("refresh").selectpicker("refresh")); + }), + $("#tagModal").attr("data-ref", e)); + } + static editTag(e) { + Y.openTag(e); + } + static openTag(e) { + ($("#modalContainer").append(J.generateTagModal(e)), + $("#tagModal") + .modal({ keyboard: !0 }) + .modal("show") + .on("keydown", Y.handleModalKeyDown) + .on("shown.bs.modal", function () { + $("#tagModal .tagModal-tag").trigger("focus"); + }) + .on("hidden.bs.modal", function (e) { + (Y.refreshView(), + $("#tagModal").modal("dispose").remove(), + document + .querySelector("#modalContainer") + .dispatchEvent(new CustomEvent("removed-tag-modal", {}))); + })); + } + static removeTag(e) { + ((V.tags = V.tags.filter(function (t) { + return t != e; + })), + $("#tagModal").is(":visible") + ? $("#tagModal").modal("hide") + : Y.refreshView()); + } + static saveTagAndNew(e) { + if (Y.saveTag(e)) { + const e = $("#tagModal").attr("data-ref"); + document.querySelector("#modalContainer").addEventListener( + "removed-tag-modal", + function (t) { + Y.addTag(e); + }, + { once: !0 }, + ); + } + } + static saveTag(e) { + let t = $("#tagModal .tagModal-tag").val().toLowerCase(); + if (void 0 === t || t.length <= 0) + return ( + n.showToast("Invalid tag", "Please insert a tag.", "warning"), + !1 + ); + if (V.tags.includes(t)) + return ( + n.showToast( + "Invalid tag", + "This tag is already in use.", + "warning", + ), + !1 + ); + let a = t.match(/\s/g); + return null !== a && a.length > 0 + ? (n.showToast( + "Invalid tag", + "Please insert a single tag (no spaces allowed).", + "warning", + ), + !1) + : (Y.removeTag(e), V.tags.push(t), Y.autoSaveUpdate("tag"), !0); + } + static addParam(e) { + Y.openParam({ + id: V.globalIndex++, + taskId: e, + description: "", + value: "", + valueType: "minutes", + timeUnit: "minutes", + applyMultiplier: !1, + spawnTimer: !1, + startTimerAutomatically: !1, + provideCounter: !1, + punishTime: !1, + punishTimeMinutes: 0, + hiddenTask: !1, + }); + } + static insertParam(e, t) { + let a = $(`#taskModal${t} .taskModal-description`); + (a.val().indexOf(" ") === a.val().length - 1 + ? (a[0].value += "$param" + e) + : (a[0].value += " $param" + e), + a.trigger("focus")); + } + static editParam(e) { + Y.openParam( + V.params.find(function (t) { + return t.id == e; + }), + ); + } + static openParam(e) { + let t = "#paramModal" + e.id; + ($("#modalContainer").append(J.generateParamModal(e)), + $(t) + .modal({ keyboard: !0 }) + .modal("show") + .on("keydown", Y.handleModalKeyDown) + .on("shown.bs.modal", function () { + ($(t + " .paramModal-description").trigger("focus"), + $(t + " select[multiple]").selectpicker()); + }) + .on("hidden.bs.modal", function (a) { + ($(`#taskModal${e.taskId} .paramsCardContainer`).html( + Y.getParams(e.taskId), + ), + $(t).modal("dispose").remove()); + }), + $(t + " .paramModal-timeUnit-time").on("change", function (e) { + $(t + " .paramModal-valueType-time") + .prop("checked", !0) + .trigger("change"); + }), + $(t + " .paramModal-valueType-others-text").on( + "change", + function (e) { + $(t + " .paramModal-valueType-others") + .prop("checked", !0) + .trigger("change"); + }, + ), + $(t + " .paramModal-punishment-tier").on("change", function (e) { + $(t + " .paramModal-valueType-punishment") + .prop("checked", !0) + .trigger("change"); + }), + $(t + " .paramModal-valueType-time").on("change", function (e) { + e.target.checked && + ($(t + " .paramModal-applyMultiplier").prop("disabled", !1), + $(t + " .paramModal-spawnTimer").prop("disabled", !1), + $(t + " .paramModal-startTimerAutomatically").prop( + "disabled", + !1, + ), + $(t + " .paramModal-provideCounter").prop("disabled", !0), + $(t + " .paramModal-punishTime").prop("disabled", !1), + $(t + " .paramModal-punishTime-minutes").prop("disabled", !1), + $(t + " .paramModal-hiddenTask").prop("disabled", !1)); + }), + $(t + " .paramModal-valueType-others").on("change", function (e) { + e.target.checked && + ($(t + " .paramModal-applyMultiplier").prop("disabled", !1), + $(t + " .paramModal-spawnTimer").prop("disabled", !0), + $(t + " .paramModal-startTimerAutomatically").prop( + "disabled", + !0, + ), + $(t + " .paramModal-provideCounter").prop("disabled", !1), + $(t + " .paramModal-punishTime").prop("disabled", !0), + $(t + " .paramModal-punishTime-minutes").prop("disabled", !0), + $(t + " .paramModal-hiddenTask").prop("disabled", !1)); + }), + $(t + " .paramModal-valueType-punishment").on("change", function (e) { + e.target.checked && + ($(t + " .paramModal-applyMultiplier").prop("disabled", !0), + $(t + " .paramModal-spawnTimer").prop("disabled", !0), + $(t + " .paramModal-startTimerAutomatically").prop( + "disabled", + !0, + ), + $(t + " .paramModal-provideCounter").prop("disabled", !0), + $(t + " .paramModal-punishTime").prop("disabled", !0), + $(t + " .paramModal-punishTime-minutes").prop("disabled", !0), + $(t + " .paramModal-hiddenTask").prop("disabled", !0)); + })); + } + static removeParam(e) { + ((V.params = V.params.filter(function (t) { + return t.id != e; + })), + $("#paramModal" + e).modal("hide")); + } + static saveParam(e, t) { + let a = "#paramModal" + e, + s = { + id: e, + taskId: t, + description: $(a + " .paramModal-description").val(), + value: Number.parseFloat($(a + " .paramModal-value").val()), + valueType: $( + `${a} input[name='paramModal-valueType${e}']:checked`, + ).val(), + timeUnit: $(a + " .paramModal-timeUnit-time").val(), + punTier: $(a + " .paramModal-punishment-tier").val(), + applyMultiplier: + void 0 !== $(a + " .paramModal-applyMultiplier:checked").val(), + spawnTimer: + void 0 !== $(a + " .paramModal-spawnTimer:checked").val(), + startTimerAutomatically: + void 0 !== + $(a + " .paramModal-startTimerAutomatically:checked").val(), + provideCounter: + void 0 !== $(a + " .paramModal-provideCounter:checked").val(), + punishTime: + void 0 !== $(a + " .paramModal-punishTime:checked").val(), + punishTimeMinutes: Number.parseFloat( + $(a + " .paramModal-punishTime-minutes").val(), + ), + hiddenTask: + void 0 !== $(a + " .paramModal-hiddenTask:checked").val(), + }; + if (s.value <= 0) + n.showToast( + "Invalid Parameter", + "Make sure to provide a value for this parameter.", + "warning", + ); + else { + if ("time" === s.valueType) { + if (!Number.isInteger(s.value)) + return void n.showToast( + "Invalid Parameter", + "Only integers are allowed while you use time.", + "warning", + ); + if ( + ("seconds" == s.timeUnit + ? (s.valueType = "seconds") + : "minutes" == s.timeUnit + ? (s.valueType = "minutes") + : "hours" == s.timeUnit + ? ((s.valueType = "minutes"), (s.value *= 60)) + : "days" == s.timeUnit && + ((s.valueType = "minutes"), (s.value *= 1440)), + (s.provideCounter = !1), + (s.punTier = ""), + s.punishTime && !Number.isInteger(s.punishTimeMinutes)) + ) + return void n.showToast( + "Invalid Parameter", + "Only integers are allowed if you want to use the 'punish' option.", + "warning", + ); + } else if ("others" === s.valueType) { + if ( + ((s.valueType = $( + a + " .paramModal-valueType-others-text", + ).val()), + ("" + s.valueType).length <= 0) + ) + return void n.showToast( + "Invalid Parameter", + "If you use a custom type make sure to provide a name for it!", + "warning", + ); + if ( + ((s.spawnTimer = !1), + (s.startTimerAutomatically = !1), + (s.punishTime = !1), + (s.punishTimeMinutes = 0), + (s.punTier = ""), + s.provideCounter && !Number.isInteger(s.value)) + ) + return void n.showToast( + "Invalid Parameter", + "Only integers are allowed if you want to use the 'counter' option.", + "warning", + ); + } else + "punishments" === s.valueType && + ((s.spawnTimer = !1), + (s.startTimerAutomatically = !1), + (s.punishTime = !1), + (s.punishTimeMinutes = 0), + (s.provideCounter = !1), + (s.hiddenTask = !1)); + (Y.removeParam(e), V.params.push(s), Y.autoSaveUpdate("param")); + } + } + static openCustomExport(e) { + ($("#modalContainer").append(J.generateCustomExportModal(e)), + $("#customExportModal") + .modal({ keyboard: !0 }) + .modal("show") + .on("shown.bs.modal", function () { + ($("#customExportModal .customExportModal-moduleTitle").trigger( + "focus", + ), + $("#customExportModal select[multiple]").selectpicker()); + }) + .on("hidden.bs.modal", function (e) { + $("#customExportModal").modal("dispose").remove(); + })); + } + static addTask(e) { + let t = V.globalIndex++; + (Y.openTask({ id: t, description: "", tags: [] }), + Y.enableTaskReference(t, e)); + } + static enableTaskReference(e, t) { + if (!e || !t) return !1; + ($( + `#taskModal${e} .save-button, #taskModal${e} .save-button-area a.customLink`, + ).on("click", function (a) { + ($(t).append( + ``, + ), + $(t).selectpicker("refresh").selectpicker("refresh")); + }), + $("#taskModal" + e).attr("data-ref", t)); + } + static editTask(e) { + Y.openTask( + V.tasks.find(function (t) { + return t.id == e; + }), + ); + } + static openTask(e) { + let t = "#taskModal" + e.id; + ($("#modalContainer").append(J.generateTaskModal(e)), + $(t) + .modal({ keyboard: !0 }) + .modal("show") + .on("keydown", Y.handleModalKeyDown) + .on("shown.bs.modal", function () { + ($(t + " .taskModal-description").trigger("focus"), + $(t + " select[multiple]").selectpicker()); + }) + .on("hidden.bs.modal", function (e) { + (Y.refreshView(), + $("" + t) + .modal("dispose") + .remove()); + }), + $(t + " .taskModal-description").on("input", function (a) { + $(t + " .taskModal-description-preview").html( + "Preview: " + Y.applyParamsToString(e.id, a.target.value), + ); + })); + } + static removeTask(e) { + ((V.tasks = V.tasks.filter(function (t) { + return t.id != e; + })), + $("#taskModal" + e).is(":visible") + ? $("#taskModal" + e).modal("hide") + : Y.refreshView()); + } + static saveTaskAndNew(e) { + if (Y.saveTask(e)) { + const t = $("#taskModal" + e).attr("data-ref"); + Y.addTask(t); + } + } + static saveTaskAndDuplicate(e) { + if (Y.saveTask(e)) { + let t = JSON.parse( + JSON.stringify( + V.tasks.find(function (t) { + return t.id == e; + }), + ), + ); + t.id = V.globalIndex++; + let a = JSON.parse( + JSON.stringify( + V.params.filter(function (t) { + return t.taskId == e; + }), + ), + ); + for (const e of a) { + const a = e.id; + ((e.id = V.globalIndex++), + (e.taskId = t.id), + (t.description = t.description.replace( + new RegExp("\\$param" + a, "g"), + "$param" + e.id, + )), + V.params.push(e)); + } + (Y.openTask(t), + Y.enableTaskReference(t.id, $("#taskModal" + e).attr("data-ref"))); + } + } + static saveTask(e) { + let t = { + id: e, + description: $(`#taskModal${e} .taskModal-description`).val(), + tags: $(`#taskModal${e} select.taskModal-tags`).val(), + }; + return void 0 === t.description || t.description.length <= 0 + ? (n.showToast( + "Invalid description", + "Please provide a description.", + "warning", + ), + !1) + : (Y.removeTask(e), V.tasks.push(t), Y.autoSaveUpdate("task"), !0); + } + static handleImageSelection(e) { + ($(".image-selection-btn", e).on("click", function (t) { + $(".image-selection", e).click(); + }), + $(".image-selection", e).on("change", function (t) { + if (void 0 !== t.target.files && 1 === t.target.files.length) { + const a = new FileReader(); + ((a.onload = function (a) { + ((t.target.value = ""), Y.optimizeImage(a.target.result, e)); + }), + a.readAsDataURL(t.target.files[0])); + } + })); + } + static optimizeImage(e, t) { + let a = function (e, a) { + ($(".image-preview", t).attr("src", e), + $(".image-preview", t).attr("data-optimized-url", "")); + }.bind(this); + n.optimizeImage(e, a); + } + static addClass(e) { + let t = V.globalIndex++; + (Y.openClass({ + id: t, + title: "", + subtitle: "", + comment: "", + prerequisites: [], + days: [], + description: "", + tier: "beginner", + tasks: [], + exams: [], + image: void 0, + imageUrl: void 0, + taskListSize: o.defaultTaskListSize, + disableBonusAttendance: !1, + }), + e && + ($( + `#classModal${t} .save-button, #classModal${t} .save-button-area a.customLink`, + ).on("click", function (a) { + ($(e).append( + ``, + ), + $(e).selectpicker("refresh").selectpicker("refresh")); + }), + $("#classModal" + t).attr("data-ref", e))); + } + static editClass(e) { + Y.openClass( + V.classes.find(function (t) { + return t.id == e; + }), + ); + } + static openClass(e) { + let t = "#classModal" + e.id; + ($("#modalContainer").append(J.generateClassModal(e)), + $(t) + .modal({ keyboard: !0 }) + .modal("show") + .on("keydown", Y.handleModalKeyDown) + .on("shown.bs.modal", function () { + ($(t + " .classModal-title").trigger("focus"), + $(t + " select[multiple]").selectpicker()); + }) + .on("hidden.bs.modal", function (e) { + (Y.refreshView(), $(t).modal("dispose").remove()); + }), + Y.handleImageSelection(t)); + } + static removeClass(e) { + ((V.classes = V.classes.filter(function (t) { + return t.id != e; + })), + $("#classModal" + e).is(":visible") + ? $("#classModal" + e).modal("hide") + : Y.refreshView()); + } + static saveClassAndNew(e) { + if (Y.saveClass(e)) { + const t = $("#classModal" + e).attr("data-ref"); + Y.addClass(t); + } + } + static saveClass(e) { + let t = "#classModal" + e, + a = { + id: e, + title: $(t + " .classModal-title").val(), + subtitle: $(t + " .classModal-subtitle").val(), + comment: $(t + " .classModal-comment").val(), + prerequisites: $(t + " select.classModal-prerequisites") + .val() + .map((e) => Number.parseInt(e)), + days: $(t + " select.classModal-days") + .val() + .map((e) => Number.parseInt(e)), + description: $(t + " .classModal-description").val(), + tier: $(`${t} input[name='classModal-tier${e}']:checked`).val(), + tasks: $(t + " select.classModal-tasks") + .val() + .map((e) => Number.parseInt(e)), + exams: $(t + " select.classModal-exams") + .val() + .map((e) => Number.parseInt(e)), + image: $(t + " .image-preview").attr("src"), + imageUrl: $(t + " .image-preview").attr("data-optimized-url"), + taskListSize: Number.parseInt( + $(t + " .classModal-task-list-size").val(), + ), + disableBonusAttendance: $( + `${t} #classModal-disable-bonus-attendance${e}`, + )[0].checked, + }; + return void 0 === a.title || a.title.length <= 0 + ? (n.showToast("Invalid Title", "Please provide a title.", "warning"), + !1) + : void 0 === a.days || a.days.length <= 0 + ? (n.showToast( + "Invalid Selection", + "Please choose at least one day on which this class will be available.", + "warning", + ), + !1) + : (Y.removeClass(e), + V.classes.push(a), + Y.autoSaveUpdate("class"), + !0); + } + static addMajor() { + Y.openMajor({ + id: V.globalIndex++, + title: "", + subtitle: "", + description: "", + prerequisites: [], + exams: [], + image: void 0, + imageUrl: void 0, + }); + } + static editMajor(e) { + Y.openMajor( + V.majors.find(function (t) { + return t.id == e; + }), + ); + } + static openMajor(e) { + let t = "#majorModal" + e.id; + ($("#modalContainer").append(J.generateMajorModal(e)), + $(t) + .modal({ keyboard: !0 }) + .modal("show") + .on("keydown", Y.handleModalKeyDown) + .on("shown.bs.modal", function () { + ($(t + " .majorModal-title").trigger("focus"), + $(t + " select[multiple]").selectpicker()); + }) + .on("hidden.bs.modal", function (e) { + (Y.refreshView(), $(t).modal("dispose").remove()); + }), + Y.handleImageSelection(t)); + } + static removeMajor(e) { + ((V.majors = V.majors.filter(function (t) { + return t.id != e; + })), + $("#majorModal" + e).is(":visible") + ? $("#majorModal" + e).modal("hide") + : Y.refreshView()); + } + static saveMajorAndNew(e) { + Y.saveMajor(e) && Y.addMajor(); + } + static saveMajor(e) { + let t = "#majorModal" + e, + a = { + id: e, + title: $(t + " .majorModal-title").val(), + subtitle: $(t + " .majorModal-subtitle").val(), + description: $(t + " .majorModal-description").val(), + prerequisites: $(t + " select.majorModal-prerequisites") + .val() + .map((e) => Number.parseInt(e)), + exams: $(t + " select.majorModal-exams") + .val() + .map((e) => Number.parseInt(e)), + image: $(t + " .image-preview").attr("src"), + imageUrl: $(t + " .image-preview").attr("data-optimized-url"), + }; + return void 0 === a.title || a.title.length <= 0 + ? (n.showToast("Invalid title", "Please provide a title.", "warning"), + !1) + : (Y.removeMajor(e), V.majors.push(a), Y.autoSaveUpdate("major"), !0); + } + static addPunishment() { + Y.openPunishment({ + id: V.globalIndex++, + title: "", + tier: "", + punishment: "", + image: void 0, + imageUrl: void 0, + }); + } + static editPunishment(e) { + Y.openPunishment( + V.punishments.find(function (t) { + return t.id == e; + }), + ); + } + static openPunishment(e) { + let t = "#punishmentModal" + e.id; + ($("#modalContainer").append(J.generatePunishmentModal(e)), + $(t) + .modal({ keyboard: !0 }) + .modal("show") + .on("keydown", Y.handleModalKeyDown) + .on("shown.bs.modal", function () { + ($(t + " .punishmentModal-title").trigger("focus"), + $(t + " select[multiple]").selectpicker()); + }) + .on("hidden.bs.modal", function (e) { + (Y.refreshView(), $(t).modal("dispose").remove()); + }), + Y.handleImageSelection(t)); + } + static removePunishment(e) { + ((V.punishments = V.punishments.filter(function (t) { + return t.id != e; + })), + $("#punishmentModal" + e).is(":visible") + ? $("#punishmentModal" + e).modal("hide") + : Y.refreshView()); + } + static savePunishmentAndNew(e) { + Y.savePunishment(e) && Y.addPunishment(); + } + static savePunishment(e) { + let t = "#punishmentModal" + e, + a = { + id: e, + title: $(t + " .punishmentModal-title").val(), + tier: $( + `${t} input[name='punishmentModal-tier${e}']:checked`, + ).val(), + punishment: Number.parseInt( + $(t + " select.punishmentModal-punishment").val(), + ), + image: $(t + " .image-preview").attr("src"), + imageUrl: $(t + " .image-preview").attr("data-optimized-url"), + }; + return void 0 === a.title || a.title.length <= 0 + ? (n.showToast("Invalid title", "Please provide a title.", "warning"), + !1) + : void 0 === a.punishment || Number.isNaN(a.punishment) + ? (n.showToast( + "Invalid punishment", + "Please select a punishment!", + "warning", + ), + !1) + : (Y.removePunishment(e), + V.punishments.push(a), + Y.autoSaveUpdate("punishment"), + !0); + } + static addPartner() { + Y.openPartner({ + id: V.globalIndex++, + name: "", + description: "", + modifiers: [], + image: void 0, + imageUrl: void 0, + }); + } + static editPartner(e) { + Y.openPartner(V.partners.find((t) => t.id == e)); + } + static openPartner(e) { + let t = "#partnerModal" + e.id; + ($("#modalContainer").append(J.generatePartnerModal(e)), + $(t) + .modal({ keyboard: !0 }) + .modal("show") + .on("keydown", Y.handleModalKeyDown) + .on("shown.bs.modal", function () { + ($(t + " .partnerModal-name").trigger("focus"), + $(t + " select[multiple]").selectpicker()); + }) + .on("hidden.bs.modal", function (e) { + (Y.refreshView(), $(t).modal("dispose").remove()); + }), + Y.handleImageSelection(t)); + } + static removePartner(e) { + ((V.partners = V.partners.filter((t) => t.id != e)), + $("#partnerModal" + e).is(":visible") + ? $("#partnerModal" + e).modal("hide") + : Y.refreshView()); + } + static savePartnerAndNew(e) { + Y.savePartner(e) && Y.addPartner(); + } + static savePartner(e) { + let t = "#partnerModal" + e, + a = { + id: e, + name: $(t + " .partnerModal-name").val(), + description: $(t + " .partnerModal-description").val(), + modifiers: $(t + " select.partnerModal-modifiers") + .val() + .map((e) => Number.parseInt(e)), + image: $(t + " .image-preview").attr("src"), + imageUrl: $(t + " .image-preview").attr("data-optimized-url"), + }; + return void 0 === a.name || a.name.length <= 0 + ? (n.showToast( + "Invalid name", + "Please provide a name for your partner.", + "warning", + ), + !1) + : (Y.removePartner(e), + V.partners.push(a), + Y.autoSaveUpdate("partner"), + !0); + } + static addClub() { + Y.openClub({ + id: V.globalIndex++, + name: "", + description: "", + tier: "normal", + modifiers: [], + comment: "", + image: void 0, + imageUrl: void 0, + }); + } + static editClub(e) { + Y.openClub(V.clubs.find((t) => t.id == e)); + } + static openClub(e) { + let t = "#clubModal" + e.id; + ($("#modalContainer").append(J.generateClubModal(e)), + $(t) + .modal({ keyboard: !0 }) + .modal("show") + .on("keydown", Y.handleModalKeyDown) + .on("shown.bs.modal", function () { + ($(t + " .clubModal-name").trigger("focus"), + $(t + " select[multiple]").selectpicker()); + }) + .on("hidden.bs.modal", function (e) { + (Y.refreshView(), $(t).modal("dispose").remove()); + }), + Y.handleImageSelection(t)); + } + static removeClub(e) { + ((V.clubs = V.clubs.filter((t) => t.id != e)), + $("#clubModal" + e).is(":visible") + ? $("#clubModal" + e).modal("hide") + : Y.refreshView()); + } + static saveClubAndNew(e) { + Y.saveClub(e) && Y.addClub(); + } + static saveClub(e) { + let t = "#clubModal" + e, + a = { + id: e, + name: $(t + " .clubModal-name").val(), + comment: $(t + " .clubModal-comment").val(), + description: $(t + " .clubModal-description").val(), + tier: $(`${t} input[name='clubModal-tier${e}']:checked`).val(), + modifiers: $(t + " select.clubModal-modifiers") + .val() + .map((e) => Number.parseInt(e)), + image: $(t + " .image-preview").attr("src"), + imageUrl: $(t + " .image-preview").attr("data-optimized-url"), + }; + return void 0 === a.name || a.name.length <= 0 + ? (n.showToast( + "Invalid name", + "Please provide a name for your club.", + "warning", + ), + !1) + : (Y.removeClub(e), V.clubs.push(a), Y.autoSaveUpdate("club"), !0); + } + static addModifier(e) { + let t = V.globalIndex++; + (Y.openModifier({ + id: t, + modType: "", + modVal: "", + perkType: "", + perkVal: "", + tags: [], + }), + Y.enableModifierReference(t, e)); + } + static enableModifierReference(e, t) { + if (!e || !t) return !1; + ($( + `#modifierModal${e} .save-button, #modifierModal${e} .save-button-area a.customLink`, + ).on("click", function (a) { + ($(t).append(``), + $(t).selectpicker("refresh").selectpicker("refresh")); + }), + $("#modifierModal" + e).attr("data-ref", t)); + } + static editModifier(e) { + Y.openModifier(V.modifiers.find((t) => t.id == e)); + } + static openModifier(e) { + let t = "#modifierModal" + e.id; + ($("#modalContainer").append(J.generateModifierModal(e)), + $(t) + .modal({ keyboard: !0 }) + .modal("show") + .on("keydown", Y.handleModalKeyDown) + .on("shown.bs.modal", function () { + ($(t + " .modifierModal-modType").trigger("focus"), + $(t + " select[multiple]").selectpicker()); + }) + .on("hidden.bs.modal", function (e) { + (Y.refreshView(), $(t).modal("dispose").remove()); + }), + $(t + " .modifierModal-modVal-text").on("change", function (e) { + $(t + " .modifierModal-modifier-text") + .prop("checked", !0) + .trigger("change"); + }), + $(t + " .modifierModal-modVal-difficulty").on("change", function (e) { + $(t + " .modifierModal-modifier-difficulty") + .prop("checked", !0) + .trigger("change"); + }), + $(t + " .modifierModal-perkVal-text").on("change", function (e) { + $(t + " .modifierModal-perk-text") + .prop("checked", !0) + .trigger("change"); + }), + $(t + " .modifierModal-perkVal-difficulty").on( + "change", + function (e) { + $(t + " .modifierModal-perk-difficulty") + .prop("checked", !0) + .trigger("change"); + }, + )); + } + static removeModifier(e) { + ((V.modifiers = V.modifiers.filter((t) => t.id != e)), + $("#modifierModal" + e).is(":visible") + ? $("#modifierModal" + e).modal("hide") + : Y.refreshView()); + } + static saveModifierAndNew(e) { + if (Y.saveModifier(e)) { + const t = $("#modifierModal" + e).attr("data-ref"); + Y.addModifier(t); + } + } + static saveModifierAndDuplicate(e) { + if (Y.saveModifier(e)) { + const t = $("#modifierModal" + e).attr("data-ref"); + let a = JSON.parse( + JSON.stringify( + V.modifiers.find(function (t) { + return t.id == e; + }), + ), + ); + ((a.id = V.globalIndex++), + Y.openModifier(a), + Y.enableModifierReference(a.id, t)); + } + } + static saveModifier(e) { + let t = "#modifierModal" + e, + a = { + id: e, + tags: $(t + " select.modifierModal-tags").val(), + modType: $( + `${t} input[name='modifierModal-modifier${e}']:checked`, + ).val(), + modVal: "", + perkType: $( + `${t} input[name='modifierModal-perk${e}']:checked`, + ).val(), + perkVal: "", + }; + if ("difficulty" === a.modType) { + if ( + ((a.modVal = Number.parseInt( + $(t + " .modifierModal-modVal-difficulty").val(), + )), + Number.isNaN(a.modVal)) + ) + return ( + n.showToast( + "Invalid difficulty", + "Make sure to provide an integer value for the difficulty.", + "warning", + ), + !1 + ); + if (a.modVal > 100 || a.modVal < 1) + return ( + n.showToast( + "Invalid difficulty", + "Make sure to provide a value between 1 and 100 for the difficulty.", + "warning", + ), + !1 + ); + } else if ( + "text" === a.modType && + ((a.modVal = $(t + " .modifierModal-modVal-text").val()), + void 0 === a.modVal || a.modVal.length <= 0) + ) + return ( + n.showToast( + "Invalid text", + "Make sure to provide a value for the text.", + "warning", + ), + !1 + ); + if ("difficulty" === a.perkType) { + if ( + ((a.perkVal = Number.parseInt( + $(t + " .modifierModal-perkVal-difficulty").val(), + )), + Number.isNaN(a.perkVal)) + ) + return ( + n.showToast( + "Invalid difficulty", + "Make sure to provide an integer value for the difficulty.", + "warning", + ), + !1 + ); + if (a.perkVal < -100 || a.perkVal > -1) + return ( + n.showToast( + "Invalid difficulty", + "Make sure to provide a value between -1 and -100 for the difficulty.", + "warning", + ), + !1 + ); + } else if ( + "text" === a.perkType && + ((a.perkVal = $(t + " .modifierModal-perkVal-text").val()), + void 0 === a.perkVal || a.perkVal.length <= 0) + ) + return ( + n.showToast( + "Invalid text", + "Make sure to provide a value for the text.", + "warning", + ), + !1 + ); + return ( + Y.removeModifier(e), + V.modifiers.push(a), + Y.autoSaveUpdate("modifier"), + !0 + ); + } + static getParams(e) { + let t = ""; + for (const a of V.params + .filter((t) => t.taskId == e) + .sort((e, t) => e.id - t.id)) + t += J.generateParamCard(a); + return ( + t.length <= 0 && (t = '

    No params defined yet.

    '), + `
    ${t}
    ` + ); + } + static getTableColumns(e, t) { + let a = ""; + for (const s of e) + ((a += `${s.text}`)); + return a; + } + static getTasksTable() { + let e = "", + t = Y.restoredTableSettings("tasksTable"); + for (const t of V.tasks.sort((e, t) => e.id - t.id)) + e += J.generateTaskTableEntry(t); + return `\n
    \n
    \n \n
    \n \n \n \n ${Y.getTableColumns( + [ + { id: "id", text: "ID", additional: 'data-sortable="true"' }, + { id: "title", text: "Title", additional: "" }, + { id: "description", text: "Description", additional: "" }, + { id: "tags", text: "Tags", additional: "" }, + { + id: "actions", + text: "Actions", + additional: + 'data-switchable="false" data-width="25" class="actionsTableField"', + }, + ], + t.visibleColumns, + )}\n \n \n \n ${e}\n \n \n
    \n `; + } + static getTasks() { + let e = ""; + for (const t of V.tasks.sort((e, t) => e.id - t.id)) + e += J.generateTaskCard(t); + return ( + e.length <= 0 && (e = "No tasks defined yet."), + `
    ${e}
    ` + ); + } + static getClassesTable() { + let e = "", + t = Y.restoredTableSettings("classesTable"); + for (const t of V.classes.sort((e, t) => e.id - t.id)) + e += J.generateClassTableEntry(t); + return `\n
    \n
    \n \n
    \n \n \n \n ${Y.getTableColumns( + [ + { id: "id", text: "ID", additional: 'data-sortable="true"' }, + { id: "tier", text: "Tier", additional: 'data-sortable="true"' }, + { id: "title", text: "Title", additional: 'data-sortable="true"' }, + { + id: "subtitle", + text: "Subtitle", + additional: 'data-sortable="true"', + }, + { id: "comment", text: "Comment", additional: "" }, + { id: "description", text: "Description", additional: "" }, + { id: "available", text: "Available On", additional: "" }, + { + id: "prerequisite", + text: "Prerequisite classes", + additional: "", + }, + { id: "tasks", text: "Tasks", additional: "" }, + { id: "exams", text: "Exam tasks", additional: "" }, + { + id: "actions", + text: "Actions", + additional: 'data-switchable="false" class="actionsTableField"', + }, + ], + t.visibleColumns, + )}\n \n \n \n ${e}\n \n \n
    \n `; + } + static getClasses() { + let e = ""; + for (const t of V.classes.sort((e, t) => e.id - t.id)) + e += J.generateClassCard(t); + return ( + e.length <= 0 && (e = "No classes defined yet."), + `
    ${e}
    ` + ); + } + static getRouletteTable() { + let e = "", + t = Y.restoredTableSettings("rouletteTable"); + for (const t of V.rouletteOptions) e += J.generateRouletteTableEntry(t); + return `\n
    \n
    \n \n
    \n \n \n \n ${Y.getTableColumns( + [ + { id: "id", text: "ID", additional: 'data-sortable="true"' }, + { id: "title", text: "Title", additional: 'data-sortable="true"' }, + { id: "description", text: "Description", additional: "" }, + { id: "probability", text: "Probability", additional: "" }, + { id: "rollPunishment", text: "Roll Punishment", additional: "" }, + { + id: "actions", + text: "Actions", + additional: 'data-switchable="false" class="actionsTableField"', + }, + ], + t.visibleColumns, + )}\n \n \n \n ${e}\n \n \n
    \n `; + } + static getHelpTable() { + let e = "", + t = Y.restoredTableSettings("helpTable"); + for (const t of V.help) e += J.generateHelpTableEntry(t); + return `\n
    \n
    \n \n
    \n \n \n \n ${Y.getTableColumns( + [ + { id: "id", text: "ID", additional: 'data-sortable="true"' }, + { id: "title", text: "Title", additional: 'data-sortable="true"' }, + { id: "text", text: "Content", additional: "" }, + { + id: "actions", + text: "Actions", + additional: 'data-switchable="false" class="actionsTableField"', + }, + ], + t.visibleColumns, + )}\n \n \n \n ${e}\n \n \n
    \n `; + } + static getTagsTable() { + let e = "", + t = Y.restoredTableSettings("tagsTable"); + for (const t of V.tags) e += J.generateTagTableEntry(t); + return `\n
    \n
    \n \n
    \n \n \n \n ${Y.getTableColumns( + [ + { + id: "tag", + text: "Tag", + additional: 'data-sortable="true" data-switchable="false"', + }, + { + id: "actions", + text: "Actions", + additional: 'data-switchable="false" class="actionsTableField"', + }, + ], + t.visibleColumns, + )}\n \n \n \n ${e}\n \n \n
    \n `; + } + static getRoulette() { + let e = ""; + for (const t of V.rouletteOptions) e += J.generateRouletteCard(t); + return ( + e.length <= 0 && (e = "No roulette options defined yet."), + `
    ${e}
    ` + ); + } + static getHelp() { + let e = ""; + for (const t of V.help) e += J.generateHelpCard(t); + return ( + e.length <= 0 && (e = "No help defined yet."), + `
    ${e}
    ` + ); + } + static getTags() { + let e = ""; + for (const t of V.tags) e += J.generateTagCard(t); + return ( + e.length <= 0 && (e = "No tags defined yet."), + `
    ${e}
    ` + ); + } + static getMajorsTable() { + let e = "", + t = Y.restoredTableSettings("majorsTable"); + for (const t of V.majors.sort((e, t) => e.id - t.id)) + e += J.generateMajorTableEntry(t); + return `\n
    \n
    \n \n
    \n \n \n \n ${Y.getTableColumns( + [ + { id: "id", text: "ID", additional: 'data-sortable="true"' }, + { id: "title", text: "Title", additional: 'data-sortable="true"' }, + { + id: "subtitle", + text: "Subtitle", + additional: 'data-sortable="true"', + }, + { id: "description", text: "Description", additional: "" }, + { + id: "prerequisite", + text: "Prerequisite classes", + additional: "", + }, + { id: "exams", text: "Exam tasks", additional: "" }, + { + id: "actions", + text: "Actions", + additional: 'data-switchable="false" class="actionsTableField"', + }, + ], + t.visibleColumns, + )}\n \n \n \n ${e}\n \n \n
    \n `; + } + static getMajors() { + let e = ""; + for (const t of V.majors.sort((e, t) => e.id - t.id)) + e += J.generateMajorCard(t); + return ( + e.length <= 0 && (e = "No majors defined yet."), + `
    ${e}
    ` + ); + } + static getPunishmentsTable() { + let e = "", + t = Y.restoredTableSettings("punishmentsTable"); + V.punishments = V.punishments.filter( + (e) => void 0 !== V.tasks.find((t) => t.id === e.punishment), + ); + for (const t of V.punishments.sort((e, t) => e.id - t.id)) + e += J.generatePunishmentTableEntry(t); + return `\n
    \n
    \n \n
    \n \n \n \n ${Y.getTableColumns( + [ + { id: "id", text: "ID", additional: 'data-sortable="true"' }, + { id: "tier", text: "Tier", additional: 'data-sortable="true"' }, + { id: "title", text: "Title", additional: 'data-sortable="true"' }, + { id: "task", text: "Punishment task", additional: "" }, + { + id: "actions", + text: "Actions", + additional: 'data-switchable="false" class="actionsTableField"', + }, + ], + t.visibleColumns, + )}\n \n \n \n ${e}\n \n \n
    \n `; + } + static getPunishments() { + let e = ""; + for (const t of V.punishments.sort((e, t) => e.id - t.id)) + e += J.generatePunishmentCard(t); + return ( + e.length <= 0 && (e = "No punishments defined yet."), + `
    ${e}
    ` + ); + } + static getPartnersTable() { + let e = "", + t = Y.restoredTableSettings("partnersTable"); + for (const t of V.partners.sort((e, t) => e.id - t.id)) + e += J.generatePartnerTableEntry(t); + return `\n
    \n
    \n \n
    \n \n \n \n ${Y.getTableColumns( + [ + { id: "id", text: "ID", additional: 'data-sortable="true"' }, + { id: "name", text: "Name", additional: 'data-sortable="true"' }, + { id: "description", text: "Description", additional: "" }, + { id: "modifiers", text: "Available modifiers", additional: "" }, + { + id: "actions", + text: "Actions", + additional: 'data-switchable="false" class="actionsTableField"', + }, + ], + t.visibleColumns, + )}\n \n \n \n ${e}\n \n \n
    \n `; + } + static getPartners() { + let e = ""; + for (const t of V.partners.sort((e, t) => e.id - t.id)) + e += J.generatePartnerCard(t); + return ( + e.length <= 0 && (e = "No partners defined yet."), + `
    ${e}
    ` + ); + } + static getClubsTable() { + let e = "", + t = Y.restoredTableSettings("clubsTable"); + for (const t of V.clubs.sort((e, t) => e.id - t.id)) + e += J.generateClubTableEntry(t); + return `\n
    \n
    \n \n
    \n \n \n \n ${Y.getTableColumns( + [ + { id: "id", text: "ID", additional: 'data-sortable="true"' }, + { id: "tier", text: "Tier", additional: 'data-sortable="true"' }, + { id: "name", text: "Name", additional: 'data-sortable="true"' }, + { id: "comment", text: "Comment", additional: "" }, + { id: "description", text: "Description", additional: "" }, + { id: "modifiers", text: "Available modifiers", additional: "" }, + { + id: "actions", + text: "Actions", + additional: 'data-switchable="false" class="actionsTableField"', + }, + ], + t.visibleColumns, + )}\n \n \n \n ${e}\n \n \n
    \n `; + } + static getClubs() { + let e = ""; + for (const t of V.clubs.sort((e, t) => e.id - t.id)) + e += J.generateClubCard(t); + return ( + e.length <= 0 && (e = "No clubs defined yet."), + `
    ${e}
    ` + ); + } + static getModifiersTable() { + let e = "", + t = Y.restoredTableSettings("modifiersTable"); + for (const t of V.modifiers.sort((e, t) => e.id - t.id)) + e += J.generateModifierTableEntry(t); + return `\n
    \n
    \n \n
    \n \n \n \n ${Y.getTableColumns( + [ + { id: "id", text: "ID", additional: 'data-sortable="true"' }, + { id: "title", text: "Title", additional: "" }, + { id: "modifier", text: "Modifier", additional: "" }, + { id: "perk", text: "Perk", additional: "" }, + { + id: "actions", + text: "Actions", + additional: 'data-switchable="false" class="actionsTableField"', + }, + ], + t.visibleColumns, + )}\n \n \n \n ${e}\n \n \n
    \n `; + } + static getModifiers() { + let e = ""; + for (const t of V.modifiers.sort((e, t) => e.id - t.id)) + e += J.generateModifierCard(t); + return ( + e.length <= 0 && (e = "No modifiers defined yet."), + `
    ${e}
    ` + ); + } + static refreshView() { + let e = $(window).scrollTop(); + (n.getSetting("useTableView") + ? ($("#tagsCardContainer").html(Y.getTagsTable()), + $("#tasksCardContainer").html(Y.getTasksTable()), + $("#classesCardContainer").html(Y.getClassesTable()), + $("#majorsCardContainer").html(Y.getMajorsTable()), + $("#punishmentsCardContainer").html(Y.getPunishmentsTable()), + $("#clubsCardContainer").html(Y.getClubsTable()), + $("#partnersCardContainer").html(Y.getPartnersTable()), + $("#modifiersCardContainer").html(Y.getModifiersTable()), + $("#helpCardContainer").html(Y.getHelpTable()), + $("#rouletteCardContainer").html(Y.getRouletteTable())) + : ($("#tagsCardContainer").html(Y.getTags()), + $("#tasksCardContainer").html(Y.getTasks()), + $("#classesCardContainer").html(Y.getClasses()), + $("#majorsCardContainer").html(Y.getMajors()), + $("#punishmentsCardContainer").html(Y.getPunishments()), + $("#clubsCardContainer").html(Y.getClubs()), + $("#partnersCardContainer").html(Y.getPartners()), + $("#modifiersCardContainer").html(Y.getModifiers()), + $("#helpCardContainer").html(Y.getHelp()), + $("#rouletteCardContainer").html(Y.getRoulette())), + Y.resetGeneral(), + window.scrollTo(0, e), + document + .querySelector("html") + .dispatchEvent(new CustomEvent("mappingRefreshed", {}))); + } + static async import(e) { + const t = s.getInstance(), + a = { + title: t.T( + "mapping-import-confirmation-header", + "Import an editable map", + ), + text: t.T( + "mapping-import-confirmation-conent", + "Are you sure that you want to import this map? Make sure to only load maps from trusted sources. Proceed at your own risk.", + ), + }, + i = { + title: t.T("mapping-import-failed-header", "Map import failed"), + text: t.T( + "mapping-import-failed-content", + "During the import for the selected file an error occured. You can check the console for more information.", + ), + }, + n = { + title: t.T( + "mapping-file-import-compression-error-header", + "Compression unavailable", + ), + text: t.T( + "mapping-file-import-compression-error-content", + "The file you tried to import is compressed. Sadly a library required to uncompress it is unavailable.", + ), + }, + o = { + title: t.T("mapping-file-import-aborted-header", "Import aborted"), + text: t.T( + "mapping-file-import-aborted-content", + "The file you tried to import included untrusted code. To protect you the import was aborted.", + ), + }, + r = await _.runImport(e, i, a, n, o); + (Y.autoSaveReset(), Y.importMapStorage(r)); + } + static importMapStorage(e) { + (Y.reset(), + (V = e), + null == V.help && (V.help = []), + null == V.rouletteOptions && (V.rouletteOptions = []), + Y.refreshView()); + } + static async export() { + ((G = V.globalIndex), await _.runExport("pu_map", V)); + } + static prepareModifierForExport(e) { + const t = Object.assign( + {}, + V.modifiers.find((t) => t.id == e), + ); + let a = "", + s = { + id: "" + e, + job: "", + perk: "", + tags: t.tags, + modType: t.modType, + modVal: t.modVal, + perkType: t.perkType, + perkVal: t.perkVal, + }; + return ( + (a = + void 0 !== t.tags && t.tags.length > 0 ? t.tags.join(", ") : "all"), + "difficulty" == t.modType + ? (t.modVal < 0 && (t.modVal *= -1), + (s.job = `Increase difficulty for ${a} tasks by ${t.modVal}%.`)) + : "punishment" == t.modType + ? ((s.modVal = 1), (s.job = "Roll a random punishment.")) + : (s.job += "" + t.modVal), + "difficulty" == t.perkType + ? (t.perkVal < 0 && (t.perkVal *= -1), + (s.perk = `Decrease difficulty for ${a} tasks by ${t.perkVal}%.`)) + : "skip" == t.perkType + ? ((s.perkVal = 1), (s.perk = "Skip 1 class every day.")) + : "attendance" == t.perkType + ? ((s.perkVal = 1), + (s.perk = `Add an additional attendance for ${a} classes.`)) + : "resetRoulette" == t.perkType + ? ((s.perkVal = 1), + (s.perk = "Reset roulette and roll again.")) + : (s.perk = "" + t.perkVal), + s + ); + } + static prepareTaskForExport(e) { + const t = Object.assign( + {}, + V.tasks.find((t) => t.id == e), + ), + a = { id: "" + e, task: t.description, tags: t.tags, parameters: {} }; + for (const t of V.params.filter((t) => t.taskId == e)) + a.parameters[t.id] = { + value: t.value, + unit: t.valueType, + timerInfo: t.description, + applyMultiplier: t.applyMultiplier, + spawnTimer: t.spawnTimer, + startTimerAutomatically: t.startTimerAutomatically, + provideCounter: t.provideCounter, + hiddenTask: t.hiddenTask, + punTier: t.punTier, + punishTime: t.punishTime, + punishTimeMinutes: t.punishTimeMinutes, + }; + return a; + } + static async directExportTask(e) { + let t = Y.prepareTaskForExport(e); + ((t.id = t.id + "_CUST"), await _.runExport("pu_task", t)); + } + static exportPlayableModule(e) { + let t = { + mapId: V.mapId || Y.uuidv4(), + moduleId: $("#customExportModal .customExportModal-moduleId").val(), + general: { + title: $("#customExportModal .customExportModal-moduleTitle").val(), + description: $( + "#customExportModal .customExportModal-moduleDescription", + ).val(), + }, + majors: $("#customExportModal select.customExportModal-majors") + .val() + .map((e) => Number.parseInt(e)), + classes: $("#customExportModal select.customExportModal-classes") + .val() + .map((e) => Number.parseInt(e)), + clubs: $("#customExportModal select.customExportModal-clubs") + .val() + .map((e) => Number.parseInt(e)), + partners: $("#customExportModal select.customExportModal-partners") + .val() + .map((e) => Number.parseInt(e)), + punishments: $( + "#customExportModal select.customExportModal-punishments", + ) + .val() + .map((e) => Number.parseInt(e)), + rouletteOptions: $( + "#customExportModal select.customExportModal-rouletteOptions", + ) + .val() + .map((e) => Number.parseInt(e)), + }; + if (void 0 === t.moduleId || t.moduleId.length <= 0) + n.showToast( + "Invalid module ID", + "Please provide a module ID.", + "warning", + ); + else if ( + !t.general || + void 0 === t.general.title || + t.general.title.length <= 0 + ) + n.showToast("Invalid Title", "Please provide a title.", "warning"); + else { + $("#customExportModal").is(":visible") && + $("#customExportModal").modal("hide"); + for (const e of V.majors.filter((e) => t.majors.includes(e.id))) + t.classes = t.classes.concat(e.prerequisites); + for (const e of t.classes) + t.classes = t.classes.concat(Y.recursiveGetPrerequisites(e)); + ((t.classes = [...new Set(t.classes)]), e(Y.getPlayable(t))); + } + } + static getPlayableImage(e) { + return void 0 !== e.imageUrl && e.imageUrl.length > 0 + ? e.imageUrl + : void 0 !== e.image && e.image.length > 0 + ? e.image + : n.extendDistPath() + "img/unknown.jpg"; + } + static recursiveGetPrerequisites(e) { + let t = []; + const a = V.classes.find((t) => t.id == e); + if (!a) return t; + t = t.concat(a.prerequisites); + for (const e of t) t = t.concat(Y.recursiveGetPrerequisites(e)); + return t; + } + static getPlayable(e) { + let t = { + mapId: V.mapId || Y.uuidv4(), + general: V.general, + classes: {}, + majors: {}, + partners: {}, + clubs: {}, + punishments: {}, + rouletteOptions: {}, + }; + (void 0 !== e && + ((t.mapId = e.mapId), + (t.moduleId = e.moduleId), + (t.general = e.general)), + (t.general.help = []), + void 0 !== V.help && + V.help.length > 0 && + (t.general.help = t.general.help.concat(V.help))); + for (const a of V.rouletteOptions.filter( + (t) => void 0 === e || e.rouletteOptions.includes(t.id), + )) + t.rouletteOptions[a.id] = { + id: "" + a.id, + type: "roulette_option", + title: a.title, + description: a.description, + probability: a.probability, + rollPunishment: a.rollPunishment, + }; + for (const a of V.classes.filter( + (t) => void 0 === e || e.classes.includes(t.id), + )) { + t.classes[a.id] = { + id: "" + a.id, + type: "class", + name: a.title, + name2: a.subtitle, + comment: a.comment, + prerequisites: a.prerequisites, + days: a.days, + description: a.description, + tier: a.tier, + image: Y.getPlayableImage(a), + tasks: {}, + taskListSize: a.taskListSize, + disableBonusAttendance: a.disableBonusAttendance, + }; + for (const e of a.tasks) + t.classes[a.id].tasks[e] = Y.prepareTaskForExport(e); + for (const e of a.exams) + ((t.classes[a.id].tasks[e] = Y.prepareTaskForExport(e)), + (t.classes[a.id].tasks[e].isExam = !0)); + } + for (const a of V.majors.filter( + (t) => void 0 === e || e.majors.includes(t.id), + )) { + t.majors[a.id] = { + id: "" + a.id, + type: "major", + name: a.title, + name2: a.subtitle, + description: a.description, + prerequisites: a.prerequisites, + image: Y.getPlayableImage(a), + tasks: {}, + }; + for (const e of a.exams) + ((t.majors[a.id].tasks[e] = Y.prepareTaskForExport(e)), + (t.majors[a.id].tasks[e].isExam = !0)); + } + for (const a of V.partners.filter( + (t) => void 0 === e || e.partners.includes(t.id), + )) { + t.partners[a.id] = { + id: "" + a.id, + type: "partner", + name: a.name, + name2: "", + tier: "1", + description: a.description, + image: Y.getPlayableImage(a), + perks: {}, + }; + for (const e of a.modifiers) + t.partners[a.id].perks[e] = Y.prepareModifierForExport(e); + } + for (const a of V.clubs.filter( + (t) => void 0 === e || e.clubs.includes(t.id), + )) { + t.clubs[a.id] = { + id: "" + a.id, + type: "club", + name: a.name, + comment: a.comment, + tier: a.tier, + description: a.description, + image: Y.getPlayableImage(a), + perks: {}, + }; + for (const e of a.modifiers) + t.clubs[a.id].perks[e] = Y.prepareModifierForExport(e); + } + for (const a of V.punishments.filter( + (t) => void 0 === e || e.punishments.includes(t.id), + )) + ((t.punishments[a.id] = { + id: "" + a.id, + type: "punishment", + name: a.title, + tier: a.tier, + image: Y.getPlayableImage(a), + tasks: {}, + }), + (t.punishments[a.id].tasks[a.punishment] = Y.prepareTaskForExport( + a.punishment, + ))); + return t; + } + static openImageSelection(e = { id: "", image: "", imageUrl: "" }, t) { + let a = "#imageModal" + e.id; + ($("#modalContainer").append(J.generateImageModal(e, t)), + $(a) + .modal({ keyboard: !0 }) + .modal("show") + .on("keydown", Y.handleModalKeyDown) + .on("shown.bs.modal", function () {}) + .on("hidden.bs.modal", function (e) { + (Y.refreshView(), $(a).modal("dispose").remove()); + }), + Y.handleImageSelection(a)); + } + static exportPlayableWithCustomImage(e) { + const t = { id: Y.uuidv4(), image: "", imageUrl: "" }; + Y.openImageSelection(t, (t) => { + let a = "#imageModal" + t; + const s = n.dataURLtoFile( + $(a + " .image-preview").attr("src"), + "example.jpg", + ); + (_.runExport("pu_game_map", e, s), + $("" + a).is(":visible") + ? $("" + a).modal("hide") + : Y.refreshView()); + }); + } + static async exportPlayable(e) { + await _.runExport("pu_game_map", e); + } + static uuidv4() { + return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (e) => + ( + e ^ + (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (e / 4))) + ).toString(16), + ); + } + static resetButton() { + n.requestUserConfirmation( + "Reset current map", + "Are you sure that you want to reset the current map? Make sure you exported your progress!", + () => { + (Y.autoSaveReset(), Y.reset()); + }, + ); + } + static gotoFullPage() { + n.requestUserConfirmation( + "Goto Mapping Tool", + "Do you want to open the Mapping Tool in a separat tab? It's not recommended that you bookmark the Mapping Tool by itself, since you will not receive any updates!", + () => { + window.open(window.location.href, "_blank"); + }, + ); + } + static reset() { + ((V = { + version: 1, + mapId: Y.uuidv4(), + globalIndex: 0, + general: {}, + tags: [], + majors: [], + classes: [], + tasks: [], + params: [], + punishments: [], + clubs: [], + partners: [], + modifiers: [], + help: [], + rouletteOptions: [], + }), + Y.refreshView()); + } + static isChanged() { + return V.globalIndex > 0 && G < V.globalIndex; + } + static autoSaveUpdate(e = "") { + try { + localStorage.setItem( + "mappingAutoSave", + n.compressJSObjectToString(V), + ); + } catch (e) { + console.error(e); + } + } + static autoSaveReset() { + localStorage.removeItem("mappingAutoSave"); + } + static autoSaveRestore() { + try { + const e = localStorage.getItem("mappingAutoSave"); + if (!e) return; + Y.importMapStorage(JSON.parse(n.decompressJsonFromString(e))); + } catch (e) { + console.error(e); + } + } + static registerWarning() { + window.addEventListener("beforeunload", function (e) { + Y.isChanged() && Y.autoSaveUpdate("unload"); + }); + } + } + class _ { + constructor() { + (this.inAppNavigation( + `${window.location.search}${window.location.hash}`, + ), + (window.onpopstate = function (e) { + e.state && e.state.url + ? this.inAppNavigation(e.state.url) + : e.path && + Array.isArray(e.path) && + e.path.length > 0 && + this.inAppNavigation( + `${e.path[0].location.search}${e.path[0].location.hash}`, + ); + }.bind(this))); + } + static getInstance() { + return ( + void 0 === this.instance && (this.instance = new _()), + this.instance + ); + } + static get navigationData() { + const e = s.getInstance(); + return { + home: { + id: "home", + text: e.T("navigation-home", "Home"), + enabled: !0, + isInNav: !1, + autoHideAllowed: !0, + handledBy: N, + requirements: [], + }, + majors: { + id: "majors", + text: e.T("navigation-majors", "Majors"), + enabled: !0, + isInNav: !0, + autoHideAllowed: !0, + handledBy: C, + requirements: ["map"], + }, + major: { + id: "major", + text: e.T("navigation-major", "Major"), + enabled: !0, + isInNav: !1, + autoHideAllowed: !0, + handledBy: M, + requirements: ["map"], + }, + classes: { + id: "classes", + text: e.T("navigation-classes", "Classes"), + enabled: !0, + isInNav: !0, + autoHideAllowed: !0, + handledBy: P, + requirements: ["map", "major"], + }, + class: { + id: "class", + text: e.T("navigation-class", "Class"), + enabled: !0, + isInNav: !1, + autoHideAllowed: !0, + handledBy: A, + requirements: ["map", "major"], + }, + clubs: { + id: "clubs", + text: e.T("navigation-clubs", "Clubs"), + enabled: !0, + isInNav: !0, + autoHideAllowed: !0, + handledBy: m, + requirements: ["map", "major"], + }, + club: { + id: "club", + text: e.T("navigation-club", "Club"), + enabled: !0, + isInNav: !1, + autoHideAllowed: !0, + handledBy: g, + requirements: ["map", "major"], + }, + partners: { + id: "partners", + text: e.T("navigation-partners", "Partners"), + enabled: !0, + isInNav: !0, + autoHideAllowed: !0, + handledBy: v, + requirements: ["map", "major"], + }, + partner: { + id: "partner", + text: e.T("navigation-partner", "Partner"), + enabled: !0, + isInNav: !1, + autoHideAllowed: !0, + handledBy: b, + requirements: ["map", "major"], + }, + punishments: { + id: "punishments", + text: e.T("navigation-punishments", "Punishments"), + enabled: !0, + isInNav: !0, + autoHideAllowed: !0, + handledBy: y, + requirements: ["map", "major"], + }, + punishment: { + id: "punishment", + text: e.T("navigation-punishment", "Punishment"), + enabled: !0, + isInNav: !1, + autoHideAllowed: !0, + handledBy: w, + requirements: ["map", "major"], + }, + schedule: { + id: "schedule", + text: e.T("navigation-schedule", "Schedule"), + enabled: !0, + isInNav: !0, + autoHideAllowed: !0, + handledBy: R, + requirements: ["map", "major"], + }, + progress: { + id: "progress", + text: e.T("navigation-progress", "Progress"), + enabled: !0, + isInNav: !0, + autoHideAllowed: !0, + handledBy: k, + requirements: ["map", "major"], + }, + roulette: { + id: "roulette", + text: e.T("navigation-roulette", "Roulette"), + enabled: !0, + isInNav: !0, + autoHideAllowed: !0, + handledBy: q, + requirements: ["map", "major", "rouletteEnabled"], + }, + help: { + id: "help", + text: e.T("navigation-help", "Help"), + enabled: !0, + isInNav: !0, + autoHideAllowed: !0, + handledBy: j, + requirements: ["map"], + }, + settings: { + id: "settings", + text: e.T("navigation-settings", "Settings"), + enabled: !0, + isInNav: !0, + autoHideAllowed: !0, + handledBy: D, + requirements: [], + }, + mapping: { + id: "mapping", + text: e.T("navigation-mapping", "Mapping"), + enabled: !0, + isInNav: !1, + autoHideAllowed: !1, + handledBy: J, + requirements: [], + }, + graduated: { + id: "graduated", + text: e.T("navigation-graduated", "Graduated"), + enabled: !0, + isInNav: !1, + autoHideAllowed: !0, + handledBy: F, + requirements: ["map", "majorFinished"], + }, + disclaimer: { + id: "disclaimer", + text: e.T("navigation-disclaimer", "Disclaimer"), + enabled: !0, + isInNav: !1, + autoHideAllowed: !1, + handledBy: U, + requirements: [], + }, + }; + } + setParams(e) { + const t = new URLSearchParams(e.replace(/#.*?$/, "")); + this.allParams = {}; + for (const [e, a] of t) this.allParams[e] = a; + } + get params() { + return this.allParams; + } + hasParameter(e) { + return this.allParams.hasOwnProperty(e); + } + getParameter(e) { + return this.allParams[e]; + } + navigationCheck(e) { + if (!this.params) return; + const t = this.hasParameter("pageType") + ? this.getParameter("pageType") + : "getView", + a = e.expectedParameters[t]; + if (a) { + if (!(a.length > 0)) + return ($("main").html(e[t]()), void this.scrollToAnchor()); + { + let s = {}; + if ( + (a.forEach((e) => { + this.params.hasOwnProperty(e) && (s[e] = this.params[e]); + }), + a.length === Object.keys(s).length) + ) + return ($("main").html(e[t](s)), void this.scrollToAnchor()); + this.navigateBack(); + } + } else this.navigateBack(); + } + navigatePage(e) { + if ("back" === e) return void this.navigateBack(); + const t = _.navigationData[e]; + t && t.enabled && this.requirementsMet(t.requirements) + ? this.navigationCheck(t.handledBy) + : _.navigate("?page=home"); + } + inAppNavigation(e) { + _.checkForUnsavedChanges(() => { + (wi.reset(), u.getInstance().resetTaskIntervals(), this.setParams(e)); + const t = this.getParameter("page"), + a = this.getParameter("pageType"); + if ( + !( + n.getAcceptedDisclaimer() || + (this.hasParameter("page") && "disclaimer" === t) + ) + ) { + let e = ""; + return ( + window.location.search.length > 0 && + (e = + "&redirect=" + + encodeURIComponent(btoa(window.location.search))), + void _.navigate("?page=disclaimer" + e) + ); + } + ($("#nav-auto").html(this.getNavigationBarHtml()), + this.hasParameter("page") + ? ($("#nav-" + t).addClass("active"), + window.location.search.includes("page=back") || + (a && "getView" != a) || + (e !== `${window.location.search}${window.location.hash}` + ? window.history.pushState(_.getHistoryObj(e), t, e) + : e == `${window.location.search}${window.location.hash}` && + window.history.replaceState( + _.getHistoryObj(e, !0), + t, + e, + )), + this.navigatePage(t)) + : _.navigate("?page=home"), + document + .querySelector("html") + .dispatchEvent(new CustomEvent("navigationFinished", {})), + n.getTutorial().includes(t.concat(";")) || H.startTour(t), + $("#customCarousel").on("slid.bs.carousel", function (e) { + let t = `${window.location.search}#slide${e.to}`; + window.history.pushState(_.getHistoryObj(t), null, t); + })); + }); + } + navigateBack() { + _.navigateBack(); + } + scrollToAnchor() { + _.scrollToAnchor(); + } + getNavigationBarHtml() { + return _.getNavigationBarHtml(); + } + requirementsMet(e) { + return _.requirementsMet(e); + } + getCreditsHtml() { + return _.getCreditsHtml(); + } + reload() { + _.reload(); + } + inAppReload() { + _.inAppReload(); + } + static getHistoryObj(e, t) { + if ( + t && + window.history.state && + window.history.state.url && + window.history.state.prevUrl + ) + return { + url: window.history.state.url, + prevUrl: window.history.state.url.prevUrl, + scrollHeight: $(window).scrollTop(), + scrollHeightNew: $(window).scrollTop(), + }; + { + let t = 0; + return ( + window.history.state && + window.history.state.scrollHeightNew && + window.history.state.scrollHeightNew > 0 && + (t = window.history.state.scrollHeightNew), + { + url: e, + prevUrl: `${window.location.search}${window.location.hash}`, + scrollHeight: t, + scrollHeightNew: $(window).scrollTop(), + } + ); + } + } + static getCreditsHtml() { + const e = S.collectedCredits; + return !e || e <= 0 + ? "" + : ``; + } + static getNavigationBarHtml() { + let e = "" + _.getCreditsHtml(), + t = _.navigationData, + a = 0; + for (let s in t) { + let i = t[s]; + i.enabled && + i.isInNav && + _.requirementsMet(i.requirements) && + ((e += ` `), + a++); + } + return ( + a <= 0 && $("nav.navbar .navbar-toggler").addClass("collapse"), + e + ); + } + static requirementsMet(e) { + if (!e || null == e || e.length <= 0) return !0; + for (let t of e) { + if ("major" === t && !I.isAnyMajorActive()) return !1; + if ("map" === t && !u.getInstance().isMapLoaded) return !1; + if ("rouletteEnabled" === t && !p.rouletteData) return !1; + if ("majorFinished" === t && !u.getInstance().anyMajorFinished) + return !1; + } + return !0; + } + static scrollToAnchor() { + if ( + window.history.state && + window.history.state.scrollHeight && + window.history.state.scrollHeight > 0 + ) + window.scrollTo(0, window.history.state.scrollHeight); + else { + { + const t = window.location.hash; + if (t.length > 0) { + let a = t.match(/^#slide(\d)+$/); + if (null === a) { + var e = $("" + t); + return void $("html,body").animate( + { scrollTop: e.offset().top }, + "slow", + ); + } + return void $("#customCarousel").carousel(Number.parseInt(a[1])); + } + } + window.scrollTo(0, 0); + } + } + static checkForUnsavedChanges(e) { + const t = u.getInstance(); + t.wasSavegameChanged ? t.setSavegame(e) : e(); + } + static reload() { + _.checkForUnsavedChanges(() => { + location.reload(); + }); + } + static inAppReload() { + _.getInstance().inAppNavigation(window.location.search); + } + static replaceHistory(e) { + try { + window.history.replaceState(_.getHistoryObj(e), null, e); + } catch (e) { + console.error("failed to update history"); + } + } + static navigateBack() { + _.checkForUnsavedChanges(() => { + null !== window.history.state && + void 0 !== window.history.state.prevUrl + ? _.getInstance().inAppNavigation(window.history.state.prevUrl) + : history.back(); + }); + } + static navigate(e) { + _.checkForUnsavedChanges(() => { + window.location.href = e; + }); + } + static removeModuleFromMapId(e) { + return e.replace(/\(.*?\)/gm, ""); + } + static async getSavegameData(e) { + if (n.shouldExportComplete()) { + const t = u.getInstance().mapId, + a = u.getInstance().subMaps; + let s = { + mapId: t, + primaryMapData: {}, + subMapData: [], + subMaps: a, + saveGame: u.getInstance().getSavegame(), + settings: n.getSettings(), + }; + const i = () => + new Promise((e, t) => { + u.getDBInstance().getMaps(e, t); + }); + try { + const e = await i(); + for (const i of e) + i.mapData.mapId === t + ? (s.primaryMapData = i.mapData) + : a.includes(i.mapData.mapId) && s.subMapData.push(i.mapData); + s.primaryMapData.mapId = _.removeModuleFromMapId( + s.primaryMapData.mapId, + ); + for (const e of s.subMapData) + e.mapId = _.removeModuleFromMapId(e.mapId); + return s; + } catch (t) { + throw ( + n.showToast(e.title, e.text, "danger"), + "loading maps failed" + ); + } + } + return { + mapId: u.getInstance().mapId, + saveGame: u.getInstance().getSavegame(), + }; + } + static async runClipboardExport( + e, + t = { title: "", text: "" }, + a = { title: "", text: "" }, + s = { title: "", text: "" }, + ) { + const i = async () => { + try { + const a = await _.getSavegameData(t); + return `${e}:${n.compressJSObjectToString(a)}`; + } catch (e) { + throw e; + } + }; + try { + const e = new ClipboardItem({ + "text/plain": i().then( + (e) => new Blob([e], { type: "text/plain" }), + ), + }); + return ( + await navigator.clipboard.write([e]), + void n.showToast(a.title, a.text, "success") + ); + } catch (e) { + try { + (await navigator.clipboard.writeText(await i()), + n.showToast(a.title, a.text, "success")); + } catch (t) { + n.showToast(s.title, `${s.text} [${e}][${t}]`, "danger"); + } + } + } + static async runClipboardImport( + e, + t = { title: "", text: "" }, + a = { title: "", text: "" }, + s = { title: "", text: "" }, + ) { + try { + a && + (await ((i = a.title), + (o = a.text), + new Promise((e) => { + n.requestUserConfirmation(i, o, e); + }))); + let t = await navigator.clipboard.readText(); + if (!t) throw "Empty file."; + let r = t.split(":"); + if (2 !== r.length) throw "Invalid clipboard"; + if (r[0] !== e) throw "Invalid import action"; + let l = n.decompressJsonFromString(r[1]); + if (n.hasScript(l)) + throw (n.showToast(s.title, s.text, "danger"), "Script found!"); + return JSON.parse(l); + } catch (e) { + throw ( + n.showToast(t.title, t.text), + "Failed to import the clipboard." + ); + } + var i, o; + } + static async runExport(e, t, a) { + const s = n.isCompleteSavegame(t); + "pu_save" == e && s && (e = "pu_complete"); + const i = o.exportOptions[e]; + let r, l, d, c, p; + if (n.getSetting("useImageExport")) { + ((r = i.imageExportExtension), + a || + (a = await n.loadImageFile( + `/${n.extendDistPath()}img/${i.srcImage}.jpg`, + ))); + let e = await n.encryptExportImage(t, a); + ((l = e.ImageType), + (c = new Blob([e.imageData], { type: e.ImageType }))); + } else + ((t = + n.shouldCompress() || s + ? n.compressJSObjectToString(t) + : JSON.stringify(t)), + (r = i.textExportExtension), + (l = + n.shouldCompress() || s + ? o.exportCompressedType + : o.exportTextType), + (d = t), + (c = new Blob([t], { type: l }))); + let m = n.getNow().format("YYYY-MM-DD_HH-mm"), + g = `${i.exportFilenamePrefix}${m}.${r}`, + h = ""; + n.getSetting("useBase64Export") + ? ((h = `download="${g}"`), (p = `data:${l};base64,${btoa(d)}`)) + : n.getSetting("useDynamicExport") + ? ((p = "/dynamic/" + g), + u.getInstance().setExportStorageItem(g, c, l)) + : ((h = `download="${g}"`), (p = window.URL.createObjectURL(c))); + let v = $( + ``, + ); + ($("body").append(v), + v[0].click(), + setTimeout( + function () { + (window.URL.revokeObjectURL(p), v.remove()); + }.bind(this), + 5e3, + )); + } + static async runImport( + e, + t = { title: "", text: "" }, + a = { title: "", text: "" }, + s = { title: "", text: "" }, + i = { title: "", text: "" }, + ) { + let r = e.target.files[0]; + if (!r) return; + e.target.value = ""; + try { + let e; + if ( + (a && + (await ((c = a.title), + (u = a.text), + new Promise((e) => { + n.requestUserConfirmation(c, u, e); + }))), + o.isImage(r.type)) + ) { + if (!n.canCompress()) + throw ( + n.showToast(s.title, s.text, "warning"), + "Compression not available!" + ); + if ( + ((e = await ((l = r), + (d = !0), + new Promise((e, t) => { + const a = new FileReader(); + ((a.onload = (t) => + e( + d + ? n.decryptExportImage(t.target.result) + : new Uint8Array(t.target.result), + )), + (a.onerror = (e) => t(e)), + a.readAsArrayBuffer(l)); + }))), + n.hasScript(e)) + ) + throw (n.showToast(i.title, i.text, "danger"), "Script found!"); + return JSON.parse(e); + } + if ( + ((e = await ((e) => + new Promise((t, a) => { + const s = new FileReader(); + ((s.onload = (e) => t(e.target.result)), + (s.onerror = (e) => a(e)), + s.readAsText(e)); + }))(r)), + !e) + ) + throw "Empty file."; + if (n.hasScript(e)) + throw (n.showToast(i.title, i.text, "danger"), "Script found!"); + if ("string" == typeof e && e.startsWith("{")) return JSON.parse(e); + if (!n.canCompress()) + throw ( + n.showToast(s.title, s.text, "warning"), + "Compression not available!" + ); + if (((e = n.decompressJsonFromString(e)), n.hasScript(e))) + throw (n.showToast(i.title, i.text, "danger"), "Script found!"); + return JSON.parse(e); + } catch (e) { + throw ( + n.showToast(t.title, t.text), + "Failed to import the selected file." + ); + } + var l, d, c, u; + } + } + $(document).ready(() => { + (!(function (e) { + const t = document.querySelectorAll( + `link[title="${e}"][rel="stylesheet"]`, + ); + (!e || e.length <= 0 || t.length <= 0) && (e = "darkly"); + const a = document.querySelectorAll('link[title][rel="stylesheet"]'); + for (const t of a) t.title == e ? (t.disabled = !1) : (t.disabled = !0); + const s = o.styles[e], + i = document.querySelector("body nav.navbar"); + if (i) + for (let e = 0; e < i.classList.length; e++) { + const t = i.classList[e]; + "navbar-expand-lg" !== t && t.startsWith("navbar-") + ? i.classList.replace(t, "navbar-" + s.navbar) + : t.startsWith("bg-") && i.classList.replace(t, "bg-" + s.bg); + } + })(n.getSetting("style")), + moment.relativeTimeThreshold("s", 60), + moment.relativeTimeThreshold("m", 60), + moment.relativeTimeThreshold("h", 24), + moment.relativeTimeThreshold("d", 31), + moment.relativeTimeThreshold("M", 12), + moment.relativeTimeThreshold("y", 365), + moment.relativeTimeRounding(Math.floor)); + const e = (function (e) { + const t = new URLSearchParams(e.replace(/#.*?$/, "")); + let a = []; + for (const [e, s] of t) a[e] = s; + return a; + })(window.location.search); + (e.hasOwnProperty("lang") + ? (n.setSetting("language", "en"), s.createInstance(e.lang)) + : n.getSetting("language") + ? s.createInstance(n.getSetting("language")) + : s.createInstance(n.getLanguage()), + (document.getElementById("newUpdateAvailable").innerHTML = + ' ' + + s + .getInstance() + .T( + "update-notification", + "A new update is available, click to activate it now.", + )), + document + .querySelector("html") + .addEventListener("navigationFinished", () => { + ($('[data-toggle="popover"]') + .popover({ + html: !0, + placement: "auto", + delay: { show: 0, hide: 100 }, + }) + .click(function (e) { + setTimeout(function () { + let t = void 0; + (t = e.currentTarget.attributes["aria-describedby"]) && + $("#" + t.value).popover("hide"); + }, 5e3); + }), + n.showScheduledToast(), + x.checkForFinishedTasks(), + (function () { + let e = function () { + $("nav.navbar .navbar-toggler").is(":visible") && + $("nav.navbar .navbar-collapse").collapse("hide"); + }; + document.querySelectorAll("nav.navbar li a").forEach((t) => { + t.addEventListener("click", e); + }); + })()); + })); + let t = function () { + (_.getInstance(), + x.checkForSkippedClasses(), + $("#backToTop").on("click", () => { + n.scrollBackToTop(); + }), + (window.getFileData = async function (e) { + const t = u.getInstance().getExportStorageItem(e); + return t || { error: "Unknown filename" }; + }), + window.addEventListener("beforeunload", function (e) { + _.checkForUnsavedChanges(() => {}); + }), + n.getSetting("enableAutoHide") && + _.navigationData[_.getInstance().getParameter("page")] + .autoHideAllowed && + (function () { + var e; + function t() { + document.body.className = "hidden"; + } + function a() { + ((document.body.className = ""), + clearTimeout(e), + (e = setTimeout(t, 60 * o.autoHideTimer * 1e3))); + } + ((window.onload = a), + (window.onmousemove = a), + (window.onmousedown = a), + (window.ontouchstart = a), + (window.onclick = a), + (window.onkeypress = a), + window.addEventListener("scroll", a, !0)); + })(), + n.getSetting("enableBackToTop") && + window.addEventListener("scroll", function (e) { + document.body.scrollTop > 100 || + document.documentElement.scrollTop > 100 + ? $("#backToTop").fadeIn() + : $("#backToTop").fadeOut(); + }), + n.getSetting("autoExtendCarousel") && + window.addEventListener("scroll", function (e) { + $("#customCarousel").length > 0 && + document.documentElement.scrollTop == + document.documentElement.scrollHeight - window.innerHeight && + ($("#customCarousel").carousel("next"), window.scrollTo(0, 0)); + })); + }; + try { + u.getInstance(t); + } catch (e) { + console.error(e); + } + }); + }, +]); diff --git a/img/logo_192.png b/img/logo_192.png new file mode 100644 index 0000000000000000000000000000000000000000..4dec3f442e9015892f0a02f4d084062e4ea31b25 GIT binary patch literal 7425 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 Re10ec6y#K7YoyIW{vS~60^|Sy literal 0 HcmV?d00001 diff --git a/img/logo_512.jpg b/img/logo_512.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4567968769565c6ef82516b362b7c7aa6ff81200 GIT binary patch literal 34648 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 literal 0 HcmV?d00001 diff --git a/img/logo_512.png b/img/logo_512.png new file mode 100644 index 0000000000000000000000000000000000000000..73aa6b12fa2f2138c92e772a04536c8e453aff72 GIT binary patch literal 12996 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 M(r1nh?y)ES4K%Z#_5c6? literal 0 HcmV?d00001 diff --git a/img/logo_mono.png b/img/logo_mono.png new file mode 100644 index 0000000000000000000000000000000000000000..a5e254bdea29a36426ff7266d693adf60293a28d GIT binary patch literal 16314 zcmeJDg;!Qh)CUY7LO>b;6(l7Uq+3!-8U&F>L`u3lM5L5Px&#TO6r@{_PEk-=8j+B0 z-Z|HG@jUnU4}5FA?|N7ZJ)D`@@!K(b_M9+vRe1tjN?Ztn2o&ziJb)mKW%w5d3%pUu z`92RpgmPY5IxY`P-02*g?9Hug%;;P^9n9#=Jgm$i$YX3RS>J75BvSTVIGhH3nl7Yu zNss>pji0T$laP(P&_;2iam84SRo4~Sd(AB^Xst!(r=tSrt!l~wsY&nVQ_2@uMs$4V z-u+z7&zSCS-#$JmdeZ8<+vB=j{k!I!#i+6Nn5#>~>dN->D1L);ugUo1NX~tk{fMZ` zFG~IjClAOuO&X6H*0X$A73r$zEPp>~+~G(hnm2L2ziH9sZUAq;bgE{ArY4P9K1y@>JCJa1U%#ZnH)z(S%f42#9aX8jL=%h&A z$E*&mAZ@Rf#I$jvulZZ#!P)=2<6Zz|g0-E?&6x*Vqzu0J^xh1O9)_tFZRwxH5C87+ zOvunZ=$zN2zZdcNYf^Jm8+x!F?ybCdr&ulJ5APSEO;v?0x)hyM0%a6pW#8R@qkS)o z>5aj=_y?TPTx6p3<|EH78Qw z6rVID$+MfiyuUI{m+NadTXFr(v z*qNa6cl}>(>m)~RIMGvcAGnG%0@E8yZ&9RG{4M)Ss6FFwo%1TqN3_~EOhdIp`AUV7 zF4gs48%6Vn_iFk|-YyjjVnN?c6>yamyKh^?(7U<~t>R7SR6WfJN+G{<;FsvME?b~2 z@F~;qd?JZ#&*@Wls8lH*%Ti>b=s;*$G|z+m){jKxum8O9!!pc!Un!I)hOg5tDXaTLO;->TVcd3))QAswXnycpi%m8?n8PRvOp!8o%`W+XLH_hgx6wvm7Z1%>Pwi%FeiQe=NoDRh&Ot z-<#E~v}&=(fiyQsb}+Q{q;J3Uh$&L3{LCe=+ACJx_KR9v!5r(6b`e7xUuR8l7n{jq zf2FBdLdN~shfnDBN-Y#Vc9wkXOuOZh^>S5(&{~LIrYJiqAX7)@a`^ZC%hF%<3_b+B ze>C%o_juOQ$NFKJt)=kaGJ+R=$~OEX#Z4c#T5*N+JJvw+!7=55GOFO5uUTg2sA%#z`f>w3ZW)c%E1CoGUp zD9@0-;ZX4=bSjFP(PKgLDx-gerlaN2#8~vbi*aCKs#b=UGDyq~N=lbUr&1O8Dx2F? zafFW%$3t`f&eX5J@n0}WZ&2BsG#Gw0`{{dgq=Ck}r=d_Je)j5bm$$d>-Fi;{hTA$% z@%j}jo_C>*0yUqxUeyczRv|xEMQ<+_#0lS3bg^)A;QEDI*I%z$dF^d<-ix%Hpy(IA zepoHJ#stw~41C|BB@9aVhGb6DHuF!+&9jaf!#R~laYaa_#Pe~W^qPx!mfrUr6~ zr6tPk1&nj*R684jGBr80|8%Uv>vXE(TgwPI@ViHHEpab-*F0z_uV8#ft+f*LlU_X6 zml01zw*8l4?$jvbjoCkZIB374qnR5@aPW>bu}YEyAGpq%-^8c-6Msqh?(JqS`KWK! zu401gWJhR{3rATEXwBcVe^`Xy&JZndS2K&uYUyU$-fMlQO8RY;ade0yD3_Od;q}L@ zt!0f6|w_bxNZ?n+RiRLz7`ZU z#hCVT{e!c&x!w!nk)p0b`xrl6=g}%b{@SDW3)mj-IWO-M+Lj2UB`{&Ct)$iu`fzPw zN=y$MIuAY3B2v$M98NRO+%#|Y@8^ACAGK>aEdH2`N(@BniUOYnMrADt|JBH-+As&o zqm6qgt9eqVM&IJxb1)l`@utyd;LB0maE@+lB)ltB+x{;gvX$J;Z@|^2zpOnYesydw zML3Q^>q!*Z?yzQ=bY6DiAB_|;K^=WOtL8SHghnE>1a%Itx48=Ch7(*IwUstnWO#Tv_OhO+<({8ul3H|9DOnErI$lAeV=u{o zgs@y;XDQ?M%yn&X_7_ru1Dj>nh9^W#?XnLQc?G*zZBHI2=T5bT+0l?sVf)^*9ac7a zC3xL3mg4bMHOZl$t(vju&u@;By1b3U349Tow{Y7!3>WRNoUD22$336g!nH3;zPY2( zS#Kp&=K{kDO8nN_A1`THamNN}^lOjMUnU-Jjk(DhpS}C)g<=g|rP95BuLh}x>ukGR z+Gi{b(3RdD*UAbCjh@geJ-#N>r~Nm-T;roN)kuIJU(kMIMAD1Ccga0$e-<63=M$CX zc_MXkmWT8ntA*H*+6D9CrNtDw;mNtLLtZj!!*_c%HGHAz`--&{GNS<=OkqBKW6^{5 zE=fWoAGOnTXgLA}?Z2mqY`#hIW?SeTa>D*I{dq!`(_f>TM;%N2-i*7O zm^hsN)b?~pU{mUk+s;t$wOMkZ859Nn`!&j8<%n0km=R;37X`!3s%~S_{DX0mUc^zUglOXtZE$Js-vt36@RSt=*e4_ zj2~7Ruk1#K*vQr~zuRTd=6*kUp!6!?vNmgYZ7lyyi#ir;CZEK3l7`N2ds!6NOoNt0 zkJ@i>GDulpW6EHjqfKHJ3^#c{7`iT8on+GIVhxeih|bML%dMBTQBt(h z>u4gm?>{_xPhL7n)|Rs++moJF*7)tdbKV93_`l-Xe{4{ z%S=<<&sbH%X7+8FZ`x12Jc}ssi<`Adwb1ZY*r4q`&M)vAV|(7-(Rr00J=s?6Zg4)2 zO358Y(_CX_G~QUohqw)PXwl?!PAi|+yx*{VXO_7`SKs%kK%U3-OBBwZ=kI=~EEX@k zPcJR-#bEnDmG|S$uceyTN2YDhncmxlC;r&Dn(gN*<$)1xQ$ZkA@n~|fX?^M`DZBDg$dfgmIb8{7(TqRP z$Ks5<>3Jn0u~&<<_~uBRWad5LR85B5;=ey6uI1|~SG8j%1XXKAePDi@S>uK?_F+Bt zBbLOv+x>)*hpDz?E%jNC83v_q5r+0Dv=bj)dS|fVCxkv|nBU3iwPO>KV3RWD<`ycK zwowV<7b5X_@-Ns=Q-xMs$`F0->Vo|)o|4Fo?5ejod`^FlPAMJpb)PeFh-h?FzkG3J zAwuA2EQENA?5n6{q}ju#J#s~?s@!4M=L2{L#|K@8np`@P_6sF(L@W!wt(4I{PbN%H zXU)ReAT^io)44WB5Ut?M|Yq6yPmxzn@Cfr$hffgBr9D4?s3sv?5(a|@=KQ-%b^~kLmi_qzC&t=J@+1VI1zAZ;t1C!L zUz{kxIWo;RM(lp8B-K}A&D;mKssF0C(M!9Q(cS*0@j(X@FSmH`!;7w5Ndv4V*&B8PD*ctyeQyiLjj7P#sux!1mXt~u& z+I|>A(d}DpOKo#lhS3Kxt7Sd*X>5deqP$P$%bnXuo_zY&>O@rj;q4VQ(hjnRIX-V^ z%D#BMD%Z3B*e`a7C(UFl+~JzSaNmT)>M7klISl^qCiJR>a^Yd@Yb;_Xt&tMa9LWa! zTu!~F7`GWah|aK^>iBy!5@@*q5}oKhId%*~fT$;8bgEsyqb_`dCkt^P%r$6L*w(PpxWQakn3(+l>scZx;;=ulP+WykrI3Upf z{rn#S|1U&f@-3ItfO_euf9!lt!>0cj%gM?j2dUQh$>Fwy#+T_s7dN-O@^ao?FEMIr zYX8%Lky7JK*VPfTwXq7_Iyc*~@$vJc3a{Ni?8c3vN{JkOvtM6r|1BR_{MSJ{(EWz( zRO;K@k7xY*cLpQ$^z{B{JE-J(+nR$zwDgn8(XAytN9hp4wSVU~MoJ7*`K?Eu{`l}v z_tO(u?IN8Rvz`RAm2bJaWlt3{yw_`bGsN!hPy07XI6%;ILdi!fqou}2yQ_(JswQ~u z{{7f$eKuWe+$7$U$f>5Uub;qSm~ze7ha2x2M=zZ=^LJN|Hf8cxo(HT#Nl@#Qt6PUiu!#2V)%^RdrXo|`S$5!lcs;o*c7kw)pL zy~-Aa67=x%lds{T=O^2`A0JCC_N68!^IDjHd#9jVWtZ;w^Qn)~mDSWC4k=7q11)ob|7lbeLBrd^d zzoy{bs+&ILa9-@?#wbnMGC4~mZ$z)?jMn?{*}Y7su5 zyv=&U{*-~sknAtt{mBS)2*(9t?HSRxPbXoJdwO#4ujXI-4Y4yq#Cy%@Mqgf^gG~dE z-!GGe9G^rA&En)h5IQx~{eVn%51^6eyZ5W+bZ^}G@23vROR!t1=K)#My#Bn0WtEGh zvLc2gvoIu+gYhY1H~i0!lX=V(Bk!&Yy+G3WJgj&9~t|)1`|?0L%!BcNl9^PM#G-pZ#wt&+sUD&Ktz#x9vTMLe3EHoS8>%;3P7WS z4#AaYt?_uh=Ff*hr@dbmH!zUMoShyog)&5Tu2oHEydV<)iJDqbS-JR4iPJR&iMoE1 z->Fj@iTpgUN*{;=Ta;XG)4ux#&VBsCzk^6$qah45d{y5j#{Veazk7GoIJ4yi_6KIw5OfdA-X}d03Lop!6jID*HOd7=NQS;{IZD#Ej& z3{I1-qh_z}RC3`UUmvek8T;+mO`HAvXwnX+E-3zeMFqcUM`YjG@rFGWn)>btF#?OSwWjkk5L?#xNbSZuB+mXB zxc+z;jFfk+8H1>|)Nhwf8VQKopcMAP^x4|<#eDh@s@UxTiD?u$YQKZu!rQ&P1SoQ& zje8Yo9uAG=u1G(WFd&VF^FmR;Ri0=H@Vb#w&nN@*f7zUi~QDwJBg?O7o3 zHoT{Muq6(pE_~&2bHHmFv9Swa!Tur)c8UumLP;35-jw=$MGo`u^Yfd{cg9eNdVJ)D za|L8J26)0jK7k_Odoo8mFeFcFixL``7UcTOx6&aOzHM9ii+L%{Ig%bp;D)%5N8@g> zJq1$eylhq{kf6+gW*0~gW=S2csQEwpk1J5Q{WL)t=l%Qlw^-6$Vo~JAJ(tp*+bJwA zFc|P%ceb*!;>JWeHwG4dCrDN1C|Y~d{^veN!)~~pzklJrGtaT}a&s??VB2`OD7^A6?n27v*fdG>(!nT=^V}O& z4gae|3pQ<9qwg^#3SZl*$q@@ApNE?O)-fDZNP+Y&{HGx2g6fj^zAytad@7IE>nsj7 zfB!GyU8d`ZRkwe-Py3c1E~efEo$=K&8}#msE14gb&R=%RY9I@l^1nT(~QM zah&CsU8_H#*q65$giYh|I8QnG2_k7UC~1)O#Ih@GdBl1fk!)-zZpAPjGaoJom#!7dg_Vx_tSA{@ zS%!tA4Epwh%J1!&hv1z!Z6`!!^59iz`Z087MQsce3YHd+88%~s=%xhq+$Xpo<8rX zZ5o7s%-9AU8HZ;dNGK30^Yq-TC++L&6W;1%KzM0@JMkaQxWDQ1X&!&m-J4OomSU!i z$i5aZ(yH>b-mIstTdPd%n1EgHW7xgZw~VwZPH*`=3gKcEB+){I*_)ZecU)yP(vs%4 z6%urVs-6IUKx)oRxcg7xOuQ?zxFvPBalc^z;ZVzg_e+@$Jz~d;T2enPBMVJSQ&AieReqc>3Ir0hmt(lDrmj z6cu+Op|t7cHsRRuw`M6L7*VHOlRsJ(QdrtGW}x7H5(LwR1_{vi<`|cB0!O!6i2Mc- zJKA#IecCtkJW89-^z`*35Ieq|%e~mUz0GU{lzgnT$3Hvp(ctQ1U7hUf5u>pp&p2iM zH{hMm5Id}k>ANZ>ikPQi{0I7ela%moS}XBwiTN;r=|KPPMtwO6%vk;2JGJ{f?N@C0 z9A=t*W-w^EFyWbsn=crNQlCfo5K_Y_o{2U5iAroKqg54_LfKM=HzgY4t?ZGhf}DOJ z<1e#B!`BD_uSBSBUE}>Y7kSql-kA}!x`B9Oj2*gxAea~9GEd$iG**A|ZaVI15z|lW z(gx((*a*e4G5m;PkT4MXvubLP;l&!*gtb?KU6=yFl6ZS71_UN|aE$#5=FuJvh9Iezk<0#j5Zl8(RP8q9X#raZE$b$S!Z*9% z_RnA|ypACM5Qw_1P*N^qN(u5Ik^y}amz3$4+qf;#1RnqtZm|-2+5h0051ZO08mSKb zqtq2{Y&f~6=p4y7Y$bC0HE{lljcLK?gv zNrG9|Cb)f;r3M2Q?@4&}@_na5CQ7(=wnZ3KYj8tlPzP+N<**fysyche{xG*>_xpjc z@$Ed;@WfcA$!MG}!(s{)%Pa@FPqMiz|81 zVbgyA1a=kjbh908Y8DcZD`ZcHFu@R9G;a(rTT*R+ItxiU+^Z8aBFF#y3^|b;pzIRM zlwgT}dbEoW8wXyc6|cF2Rkm7Ehjbir{$b1r(-3MmE(FKhe=d{qMM}NELfM#q0F0*E zR&pappEX{l>;QE%!j8~$)n6wc_z^_4G{_2L*~@}J=?F}|p#M0qeQ;vJ1_{*9C!~DA zey2xBn&|0e;D7=WMSx^JdRi6?uVj`cn(y%*KY|ISNbdB<9mgJYIG%3no1z1PK;iDH z5tQCIEtS*kr?Z==OfWSFG z5}f$plKHtR=nEh$0Rw|nEGzrZu2;;wziu{nk#2cAQjP+8g_OR*>!P!Su!eu0aZAlP z1j5f?-6eMY%3jnoL*+ps_;iSf=5Vhj0R1b@MoXlU-=~1>@vgEX&GsSBsMMZ1s#-8! zx7-|Mx*d98$-TY3BBKUSnE^x!=%T6wi5-z#j|u>}4-X5G)IYo*U6qYJw+(CmfD+N$PgaT5gphppggo$a_tHC%eOE3*IABK>^CrQWJm<6|Q z_3{oN!?$sbp*OkaVD|UIvXQMfdXimtOTUzQY8Evkx=A$HJrICL{`a|ri%O4BHxu|GObt#w^uy- z@!@3O|GWyBq!PRu8jWK)b+SL*F{nl+9airCV@BcWE27{SfsEm>#?+^@yqj&LYDn13 zfI4?sggdS12~Y8OKZ17D1jvlRh?M7EIJ#=Awq>OheQ+X-h@S9m6NPr2 zz=&rRDF~?s`y8jzo*KlWjXcf)tsG=BnEZQ9VNU?#hO3(!+}lCX0={9~)zhR+aQ18{ zTh{Z>`+VeHXBWPG8f##B*~n_D-V-UW;8#zj*vkqj#Vu@yNXE4+{Z$G)x4P)8H*c3l zDW?g6S{3->^6bIb?Jipdw{on~MX($9fbc+4<#@e)C+>v4%fWh6Z?QMo6al`ANg7dS z56jZA&Wq9Qe2LR81pLd{LbUPok&MTBFGkBjemU8zYU0O)2yA)bO2AQ^z004;sshV? zzKbQZ_sdH>0yIf!=RnX#YdiE)$P06xDhi?TLRAhQ!{$zID6EGY=eFx}S$$(T$}ok(fwpCL!EKbMyOO!)YdA(JsMQpXQq`iJ)k1Mv|fw=@jhg$z-AZ z^xImnP(3)+zVR2LRHMAzS*5f!RDW{Zy{`ny=#4UbGtd;ucLJRNL|rdg`fAfQ)+Tel zL1C)uw{;c4In@*T4{*N`Q31XgHURBdGpwn$idtcXbAodl)v|?P)@gAC3DP0WBK<0k zQ3K})SVw6lYFqRy4N*{?0>1?(z?p|T+-T6CVS5xUh*XgFC6hBiW9H;&wCUnVwm;z< zMFIx~WTw~P<;u~p^8iuyLft#yl>hYimzRk86pGIUU0=|oK%$VP93_5ai8MHZENHHr zwIYu?JbkHxYRJ6b?bdUr3WO)v7u54)UtL`QZHQdd`7MRZB=CYUa2~&ZuZ%B_SeHqe zpH9}gq8NW&5r%=!Lbt0~xSGENn=OC`BnGafboUGtvD)9kH_|c?drdc=`}%}|*Gle% z+(xBK-E5_Ns3Rz^MSpL#;~eT3)&q)g=Psti3(lag%mR*FAP*rB(XF)6?H5^Pzd$5) z`h*$YSdg^XEA;M29RC_X(NeOo$fw1Joe*Lj|NdT+*W?Q(YGK*auGrU<{N2d2D377% z!W-Rchqov$$=s%L98D)q7n7g;xZSi(g#fMchFvv1k;KWxq1SWyZOBQ#Gt!g^oW|?< zl}M%CzLGzBI#Q&IQhEWj+7uCnW(noGKNwJUkb zNn9Cgp4>nklfiyjc`}17(fQ{`VFZ$Zw70i6z`98EWV5v$*=Ks2lfwY^O-Hyv zjcjGHJK;+6yFwoy{9h*X%FE6n0*m2R6$?4SOD~$dr zUv$gZ^**z9(E9uQFA@~+RY44cyg5MgLXP6%JNao&itA11ex}GXd-!&onz(QriyEri zhYxq`Z{?@m>_@g3+7I97XQY5e_V{(A!-AcfFF(WU*?Rr9swpH%^f~!5l(nP}JRkJ$ zR~TvVmH){1v`Z7h4lwG3Ul3c5mh>$o8fU!XsJ-ZV zf|`mwM?R`wMR4*d5@HIte-0~0Bz};E>Oxg-G#)#F!=c$i_nUS=zn>@!BLEk^M<5WK zh%WU%U7e+ZC}BAYl7M9m99k~boE@#AG-w4Im{a$yeAqvch`LloMn-}Sk6YrPg$U(9 z(%_b+U*h}(k(`h%RD96B?j-U*X#M_-ABlVIxDsbWJUEL9fP+N|H^NQKJWl>~z&$DW z8U@e?$;PD$6nC#_CB$>&B6zT117zWsTMYE8`EA8bfcUhDrPNF?O=DQ?<^02unv|&NH}Q=s(_lUZZ_w+2tm-N0~vF0(g<{8U*8bqxMtw+9I42pEr2(f z&*}l3ax!_bk(z+-k#7M%>j#auMBqT(C`O;n`%(}wmhNr@3KtZk_YDnV{-8zZe0I3B z#OZ(d3iaL!rVMT&{0@7J&HK}Ykyi^Y`AkX)^PuzE2`*)lKz>Fx@(0s1JQtJUib;5* ze!I+WQUrNJQL7{`FHZw{xo|Pj2Q2>>*^YPD12=SeDya#^r+*&(M{9V;P!s(pvksDx zf!i-L-5RG{4J06DU9n8b;=W!bO=m~2K~VA}0#xTgce4+^0`WiJ_ZLKLDOoof;^z|> z1*t#}uZrEM{^w0(o8k4A1Y^yut~;_CMT)Tr30Hd%7b&$rXBn%QDKh8xvRSoLIX9}# zAc#m8{uThS1rCatGaZ%^n21-fh7*E|dXTPbr^*=JnQHEI*~)5&+FpTkzvQTX@>9Lo zTMFw6PEDFls8_M`jRaESOkJF3c-GH!IHU&s^nWD-^WtL)Rbq z72p4skSIag=rY%|r;E52t#1S%5OQNc&|n89xQzzFfq%iN5urB(d*c6pUuN++TgwaR zqQRWi%Whh@=^-8=L{{~xN=QhkB}YmH=R>GAibdP2O0QU3M+#IZD4{`sqlAVx>HmG% z%slr<0u5F%Ab9462}0NZnIQl!7PWQ$%S=L|8FyxFynO0&6gf;%-LVmE7m{l)pZ*aZ_Qi+&D$Az$ z&ZwIXngD@>2MI#z$u?4RFn|DF(th!i0UYDdAlrf5HIRKE*rT9^m%|e9YptYAExgTk zpBH$@rJaH$mqZ}RDhFH~1U6ob(?8)uK7^=_s+=fs&Kki$KzNFNp=T!IrYpYqei||V z_548Se0X9kMnxO8x8&CYIqkVyPUiXlqh^5IybJNkDbg{3ARhb`dc_~_%{eOKoEagQ zW%2mr=mFv4`>p5?j$!4H&T~VUAJd-*h%Nc@;Dj0hnd0IOaj8G$8+&!oM1W$@$<@`` zC}8biIPRot!(7ybRfqn0VZ&Mm4E#nE09iNFZqK@^=4?h-feCa*&8s&qyfbS{biG4P zmEvD57FZFGgjQ-%8*hIfCa;0P^fM=SSCtJRrD7%Xu9^;PogE>Xk&iFzXl$ zqbi#RjU;z~bF>k9G=R%&NOEV!6&DOHJBpr#9JH*G!tBJFP3rJ(*j;K97K^Z#1RMg4 zmWHzD&b(&juEByE7W;?S6*aF~*;=iTt!TX*b_S~kt;Mucy+g@~SF{YpZnX*92X~Ca zrg|ZBl)Rq2>~`nQo!yay1XU$i$eGd@Kid#mDtY%Ygy52M|E|mY&&LEiB5Sf5JAxST z9XUDm4`~>_x`us7)-T+>b)_`bs2S|y0UlpgU(qP1!OD|dGI|7CT%~ocJM>n4M!<)k zy&%f%B|hvG39j*iQ|!u!WRfP;dWN6f*81}EM)EXxfEq%H*>tWv+)YFE*! zY4`|PV4Knr?qA?>m1F@nLY54SMAhfdC%e;k6-XB(H|D-fNqe+4jBbVAt=0{3S1vmC zj%-@mAyfq(5fs)Ws&OS5RTDK7W*^8xeYF{Fjxz$ z*WahyT8-7hVT1dR!R9e~X1CUvHn_>%&aFj!1ty0!?prGeic2S#oJ`89>@IS-+(5Co*hF!og=YNKU!Ro;OUHushv;1dR46Odo z@D3QJ1;YiQH5Cl0MNo69|8xPk00dRnOGG{o5Ik>;sU?TwLRRzxPQX4ge}N^B8S-yJ z9+`+t3R^+INd!G$AI<{Rmob`;;h;olq|U9X1a11kQv}T*4_d?mIOp7MU%4Ex3Ty5V zhZV3Y{+|V!kiiDnBLY$dAcH0Fl?!4=2?%$rMV~n$1oI}^&}M4E*DKIOFIsg50*#+- zaG020g3|@Msv+c68MeKsTm_3EBLbC712)YnGy$su;9>ctPb7(C8Ur|c;%*Ad!MIDx z3cW#dNS6bFWp@TS_#z(A(F_s+_kdI>$RG+lG+QU@-!1FHg=VRMY2u4IlR*L`UV=#z z+?165lR3-52Jav-gz9A-&zy-q!Q6>gppq&CcZPsfcKD$WJg|Wg2hz(kwYcyD@8ub< za9ABJ^y*01JQD`!)qXbtDZyl@Bo(G9maoKyt?2>9kKBD$aplKibp7x~?W{!dm6@D)36>)DA+$;jGtVRc z*bhEXf^3Y?A}cF(rvZck5$w&q)+x6T^YozA>+rnAs~`Q~d9`En88S!aS0vf26NK{R zIsVASKWLO|V~Jbtw^dweyB?5&->R;RRv_H3^4tit%^@4V=YMRs7RHWbHVkGW90I5A zuq;b9>}Q1X5w`X-2Gm@3PWS@CY4g#o?4M*9vs6I&$IkfdK5L)OU;%96pC^w}X~ND{ z|IunsSYRgF`n8Znm%&NIW^A>crvlX=d!{MI9`#aQ^Ea5^RDJT)d{2b}bY7Pb>Ri3u zj{^l%DRQsfly^!YJSkM^FC;TrgCp|q@aamTI<`@rxe!lC2WXu^e_e-twMUki(L^ic zJkqE$7Bh25jINB{;S9s5UErhkxW1SNae{svL}epwr%9-TJ+pg)MGXmcFHVGs;5frF zzOflmlA#PSv7n^uMFUKFS!Lsi{~({gU;Q)ujH;xP8T|{@W~>nOctkzZO}r0lEx1M~ z#CQ6dRp3C8YmdbUL^HJ^dPJxaRCBA@#G{QGDri5=*&vxZBK!iQBl(bbH94vrx zH_YYYZ%aD5HXsPFAw(|wb%o1lTBe4Jgm__)=R7`QGr7XOgV~5Z)+N9U)nel!bS*SG$`}#lF~szu`ntz~R*<5=ey*2rK6CQc{2S z(MivSv4k=@&;$xhrzrhoLj`jo{@d$JfCfYfz-SvmNlwuww5fMBT<)M(ugb@q;IUL% z*(=9@C2+q1B?(Uid8gKQ62PRtq%(}o*DI1lon1AW$AW3R45{;wST7PQB?Ny#Q)Kb` xipqtK)nh4dri0+(^#6YT4}t&BBG9~j2K|G28In`3n7~RZ$g0Ye+z7b3S5JadpW`>4GLhJ>x-tNfIMSKEcF=hb6 z2jVh_Rm0%}LOif2_x^?_7qR~mMnVY0!krw<;NHX_Ci?$^y??>Xfbd{AM+eR!`2@3| zf28X-?6ZjXF5=*zDEMqkV{wNGg2)scQ*a3n-B%r`63rZq@ z1Js-T#$IO0o(`?Nq16t+gcjx?1Ox-dl08_A0h|NJPi`apw6&H*2q9AdFi&{A4@v-F zvjCXS;PJk2dA#{T08oDe(8&5}AHo4Z{}YsF{FIRj09d{sfa+U6W!~8UTs;JU)LVPUyaT*MJL^V>N+vDv3?uMpAwH%p2=+~-|#7u-`;QRvej+N+^NA1)ibw|c`CF{OA4gxkej8Gbm6_gm>uX}D&>d4o=4hfe>F_dOg4!yUDmW0I z@`vg{Q#F7b_poT?%13H9{q0vc^^GPJ&aR2ut^Qb$9q5h-rb?!!^HL|%ueVUkcWB`PMasb%j#&*Uz#4s+KC zF<@Sgq|Im}>J8WXzuOrsdS<`Kr*ylVuV!gkzWeVRR{yP+ji+>oh%eU>AiuZXA;W#y z+kUp>%d>08ci)U!He^{6^YQYz^P6T_1a)`zFSjb;DX(TrC-r)D&AQJVv$daTX60;_ zE^T{A+8^W|f>XK^tmw3H@_b-=y=L50>5x-oy26>N;)J2!KctUY#$ zN)#3fTVAQ(wmw^CJIeN$cmrC&lWqQW$f|1JO4%H%q{}tSc6<`a`*5)isA2tMvR* zCUyPR)G&5A@{R^7|hR)m$=uXU6n^SGRfiHh^p=aHe z4LBa4e%X>LRv&5j_u8F%+SJp+ZRv8{R! z&RY&$aC`gc;PuaByZ3^Rdz(G$aa6fu)qA@?6w1vWpZJ6(?#HIadmb9kBX60t( zBz|l(oO!RrR;CvmNs~qAk4rETHk7IzcrV2En^p-IQpg@D?BC9`8To5Lya05VHlQPu}iVSvk{Tmhe?^QL>x@eY*JC8F^NVafi^Z9w<1%C zB;xyG+aIKW&8qPG3MWE4qKi^geK#;G1;pY-z z#V2HH+@s%oHuWw3i>(tsY@vYWL|S$#*t&Z=ME9lK8e3)OV+$|#^fUHdHi%nnhjOqTE`8PfXov_r zAQ0s>H0|j>S|YxMeRRTg*rNG@1btXS+AKl0n*MC6UAll>qIJ-}Pe3^)C+hCm{$cUC zrM9WOR61x3=Et|v_tIey?ZdcJ37Hi)@4YjA_M>+2#TRkP_WN&aTQyO;`N0}v1Hnlh zTao8^^WMc&NM25qtyD% zzD`PStE^_qLcyD&k3}cHkT|9YfXB%A26;X-3}0VcF&QTnBdf3OV|~g?J8A1e^K=Hq z05fBnFW~w-UwXrwL!*J)b_3?X-tUVr!}10UU%p1ZBdh1^H?$dXaY3$CPkibjIlIZV zZob_hjo<5!-2P^q?RwF-5rZ7~Mln63k`YsR{(Sp$Wl9B2kZVOTQdYG_C9T$7xaj0r zT0;)>y8Ahtn^njzpctkdUHSR`&Z1M{@pglKv7S;97O_rkQeAX8Ys<_dXT%yir2TD& z1c}L~Y0}ky?dqnGU1R$=M0T>TS5%Y6hs2(Y2m(9w<(oTSa}=ydUYp(TQ1O|%rb$GW zQ{}_SS|fD}v53cgt(+vTy~2vdw6mSg?Fz|CoR8%ekzoixyWAsltBfPyoJT=$^pGr| zsCdvDZ*!PP0$s1JWxVteDaq^js|G{f%QP{~Ieut|LqU-sSS?y&cY*(24N}WsYv@3+ ot(NLxlO7prqP_XeQabamBm6cIhuaGy5eOYGPexw$tPyYUU&RrEZ~y=R literal 0 HcmV?d00001 diff --git a/img/logo_task.jpg b/img/logo_task.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e7f6f0ea67dd0b8a1cab9a89c98dc83afd36c045 GIT binary patch literal 3764 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 QR&+ZVioPfv(s9qf04zIdp8x;= literal 0 HcmV?d00001 diff --git a/img/logo_unix.png b/img/logo_unix.png new file mode 100644 index 0000000000000000000000000000000000000000..16dcfaa9652e18b09f9d6b1d88eba1a5a087f8c4 GIT binary patch literal 26271 zcmeFX^;eW%*giUlf`Oo5fKti~-60)H&QLOxbV#RkmneKd@)<(9OG-&;6a%$KGKtRpf8qd~_26f!u~G$RHsQ!d2Ygbt3SK za?S__0wEvr)_CQLH1VK+h;E)-rUpL0s`@z+Daaer*60#GJp5|i$J!I zZ;WrQFcZEnFCXCR&Rc03N@;&mYdK9|uq_M^-KeE)`?)vJxKD6W{r!yEmycs(YP_vdx{MeMu*Gw)dj+!-gIZA$V+V zqUSS?lb(BD+`iEC?}!uTn%Q}B-$QW65=L(%KIgM>z5?;Pk2w@PwBMI(_MUK-{8uc9H&fGBWqWKhpWSWKjWtG zZ1>HKF3AO-ri{LV3wIe8zOqch>zMdQ$pdil1TXY9^@uNj^PC+RsV@!pa7Z2|BUXk-_Ek$s$EYx8wQ zE(|v1@HtFIfpuSX%b{s6u*T=sXr(=<3|5y0IQY9A9)H1L? z5OANdCZuTCte@WYv3he8X{9xot(oFZ6RIn^hG8g3^`2U@^flXxAKj4%cw)N{U+u|f zzA_qJ@@0JVq*<0*=x#R^)d%62T^p**%$%j3+8CFr9-ThlX#V#yj4TO{YlF=r?pfSc zQ#txMo7i)%HkVo@*`;@8u$-E=-4ZJ-zuw$GO;%A8xiZ!}G5r34dd8|ml)R!qvdQNDz?XW513r>We2ooU;!U2wlqv?~tM!7h2BeHalYAOAtuvA%Xs7 z9_3dZ^P}%1*Ng5G4EwUBOXMo~UklTV89thO`9FmEJQ)jX)==ch$RH$BWkGJ3%gv#a z!rMHLD2424gR^C{_iw+M=JAHK<_aTi?o1^`gIVkZvToSDDm51&tL^7; z?e0+<>sghXq;PAgKx!|$C8N9f-Qvh*`mdO`7cX7Q61rEWtgYnJ2BH`Qyfb(qU!FwV zZdM+lG0YB(SHmj>^X{cA+u7fE z_<+o7pf<_EB>eR%uPti+ zM=oZ(87z-jH$BxEO1C~9{iZq+f&KY(I7|`$=-v02WW^+n!Xf8@CG@YEeBP!Kgbz_y z%xB?Gw!0H=B`I#q+>@C8vx#P`E=nX-W!sfdToe-PLi-%t6O8%U_BMnl<{L~j9q!9yZlWp;s*N5 zVd~uPW);TXzg2gortAcN7}iEekR5&u-Qpppnke2u>hC#@{NA~Poh0I}zgyd=`$*~= zFN+<`qi1HNX$SLGTTDzVRp63 zq}TeJ7+MpOeb~K<>$jF}9_g~b6mjbqeCzz7z^2d6GTzHzGiL4y8eR7*j4;#szdO%j zcjyMI_XZHq*q=drW?_vBVXm7u>uL;Q5I0t5fB7V<8&vKGhw5uv{4ymnerkINIg@fm zb1on6j(&4kb;B4Cd=i%55heR{J;e2K*%K1W@|(-N7PaKxlf7=I)$@|m-KG9@MkwL_ zGo(Ux$Zg}AED1zSZRS?CyINs;G#kU&{6xK^Sgg{Ki&G_G5W!kK@BUp3rG7f_=jks` z`6q`+*kHKS0}_bjCS_Sfl|&NXcKDx&sV$aBwNuUOGXCl_LBs zgLsNx2>)C@Ozj)iT&{TjneM-A%Mb4cGUK@86_n~due)^Et;Pnu3|20AkvINmRWM8R zcCXy339{{Pq>YpujRm~(c|~zo*nLWe3;R=uvzE&M&chs$t{nPr))hpj`*fr z=5wz$hR*;IqGo;EN3UeH8>~xhkz_0nm7&Wd4zYO!#~xK?>qd-zRI|huEj_mI_zi$vrBcd43h_w3JO$pmmhX^a8ceMJ~1>66-t~rwO zLqvK>N{am@NklF)TqwieapN~CGQ(#JGB+I ze|H03_>*pM`jy59wz>y5X>@`$Q}czda@={EZ9B#jJ|sl-vX-YwNA|=eMUu*O@fp)| zf}Ki|jX~hme>b%SlZj!F=iVZHFZ^CVhb&uZMSS>rts=uxi}LZY@?B+U*H!nnQHfQC zx61!j*8V8I#TjmqbgJ0)WI)~FCdq3_Ex&z&cLcCa857PKd)Mb#lUUOujtz-gXovDO zme5DSt0)^r_wv`b1Cg0tf>RU*29FQEsuV@t=wZzY)MviOKKA@ZEA^yS2fbL=lkCMM z)|Av+36E_k(@7KHS>?vVd!t!Pe^zMkhp@EvlwOmfAA|56LCOf|1Qo7!U2~nafypG@ zAy{4+DcEsen|q%gS~`5~Y3j4=lvqzIGB(Y;f!101VqY~);&}O8fZk5>WaXajph@ey z1!TQ}ee?I6)X%qG_1iB+SrNaEUAZzK{rB^D0^4OFf@l7^%klD^v1a4MK=rB(t{Cj| zX2I>Im;DLU!Su=t7xVNv$B}34PlrUR#-3DJg!h;s?J3{h*l2kD`CH$|!MpCVyIgB= zgvwIpe)P4yE8i*~CO0kfZGAqa`rWil5goL?FW zc$vj#%`T=J^7gPj19Cgd&G_)GogCA|&?!$Ix5@9ocRQ(A_QBZyj>d76{rAx^|0|dc<(1Da@)2ocre!c!;&(EwB`-3s!ETYYE>Zp$ zX^h#;3ES4pdim?-yZEsa_JNzmBI2}nP&FQ_-zKZAWL;m$>6+1#M#hsv=^=)D|ApAw zIA=qOT=gzzFG9*dVj5!oNC%G!ZOwAk3zqHp5%rE%u7}DH^nlIn{(q%(8rI^chdTe7uhi*c2r-Y++5q(`l_#Qj_*!moMODH zgOw08PD>r>4b^{c;lFe?hN!r$lL$o!qXz$^sZP|8av#c0zxjRmR`aG|e2~f2-Ji+U z{Sr=gF;DcbOH8C@zKQrS^|tr@*DjLJGOQN*O?SRLce?hctc{_m;d_o z77d4E9E-C&A!3?a$h+$H6C=M`5(|dy4U+5EDJxYzJR!gJb%5fN-v7UAdS!dv>Blh41X1rcT_ z?8xXD?8op6-KFoTPkctfcHdj>Ui7-l)r~^i9%$V&O@$PSkWIUb*2++`-2^0rcam9y zmUh0^sByB*R^K%6zuqbV0}Zn$b*A5PCmV8JmQ7KfDC~c?^Ssv;n{$2eP4ru%nn(8f zS|z)8^dY_ifi3$~Ic*&C2)T^IP|0iGXqtt$h%KE2eXDfVMU4bw_73lfUj!k^#5ENe z)q&?Z(mrjgxBW+~4bG{%tXOW=O0c%Z(wMcDAAO^YRb0-|3=BWM8f;93j{a{@h~}Gw z{g(^ACymFyeh~f2IACP{?%vmI-zzY|djEH-A*loMGT-DTX3Xi(q(Ok$%O+s* zX-(l&y_F7)+!r^spy%8cHfQ`><_dB>a(b^AnU=gONWyc5tYaP6x@q*>BZL>EukiBP zhc{kf!QQ9%`vSu3%Oy4)j;V07gg@@cE!*4@LA^ceA(|Ar<7#g6(|yF~`T8WUNLz%t z;@&_YhdW;%V_F@_2K74~_wsRB-4=tapuu zYI~zQbWOIxbq+CaazdK_E@WAYQb?aVm|nYGO3vy@5GF-+K$VvKUaS6t5&X2#HfDA3?UzUm z&1yl@v{&y#O!F|@^-XRQyy`6qIoQwCO(E-~!*6}={kWc!AG92p{t`W4q3-$kV5ZdT zyD4W*Pu~6TKE(p7{S+^eZww17zrH_d<+C6oyt;OsI=kTc>IIx&Iow~VW>e$n?Pc2t zMQV_>oh{#GN)E+-65L}{iX|^2c(Y3CumAR$=yQXV zt@fyCtOd^@du5(gQ&ql`&{1CPV$7w@Ef*h=7+C1?-dly$DO1)MPZB-(?{|?6FM%c+ z8w=$>H)K3N+6MmKVMBb0CzYjr{5dM>tIRcyse67-YV{KG7UhT6LI>}CX{MjP`(exf z!?(;mZc9tsLH$TOw)Y9%2R;R(^Na@CV{*R=-7LFCEcu|Al(Vm1)F?Yc3L^ad?{G>_S%})ZyD~3K^V9n{Fbl%X+Y5^u2C0@_ z8K*8JtS}UTM674RT8M0;idd!fTIyjKLkTNO`%3#FkwMH+>_$bmV=5czEipb*Or=Zv zUDGc^ZO&wspR&kRDLU_I=J;m)s`&2pp;FiJbD#L}Eoqp&aHm@`gM!IjYcu*6a)bgS zCQnp~<-)_*x0uAw+M*<-Ig|7SxSe}m6S6`($u5Xn8U(u4Q4UDv8~ZI2e><7)OkA5% zp1zQ%+4_6qR{&92RarpJHK+vK(Y<=&?wvUz&a#H&Mq>SK$RLveFH{~oe6P#=*Lg&9 z(RGs9E8jG0Yx^Wr=mN#us$B`Gsjs}g-(|Sxc_`)Rc$vPoe@K{hkQaAjFy3^66yojW3V_w^wVdI((R zxrXP|=B(G(R5z2u%l<>CiQ?x?-D~7p4-NLCcYrw?SL^P24g(CBW3wfYL+cam-OszMT&oxuB z)9bY^@&U`2L7#yD?mnIYg1}vO1mI&vIoyo?v}m5G+N+4Ars~-5Hro<4&(!lwqK3G} zCJQ^l!}-=;H%OulVZEYxnE~4rq_e_F7j00{Pdv*rN!k_rZ6X64sn3Z6%PKZML5+q% z9heTTP_1(D^$GL|u1}-=wY#JQop53)DZg%kUdFfkly&-h?+qR7Ooke^aCtfa8;iNq zuR?$zNoE~v26908jGIuZwzr?ZB?A+Tuyd`^*Q#uFp+5O$+P@;WeshtUkOuOReFa*l z8NwqjShveewQ4R9InLx&ME<&-4^7285ZTxco_BcTq!{I^3%Ud`wxwBteTW?Jkvw%w zO)9AqMh}lr4jaYuU&4v%WBFDg19^z#40y$hFrKYAC7%|O{rpf>K~R3h4q+k@2)AsA zib92M=$E*bvZQlgnpK#9O8{FD6AMqiJV4Dsh+85+!O!NP+LeT`+w|&d{k_iNw;#9g z0cBU(_K}m>dX62x=>2+jgzx5~oF?WZmv*T_CX!QA3xXd#t zMtkO%&`zLUc+le2$Z}(X)v1Dh{~$ki6GC%%?;L>gxl)=lQ+?E~Fn)Ctx6vu1mDWrw z#ue0|$LyepcK|-tQn9Fsi13Pb_d)}gBLpB`S4~fi(lH`59lqZKYbgQ&rP2NslLn??{}{9UM>)P`mnZu!gXX5*K51MfqB5`z7@=cZ9PdkTy!W zgo5=-n`h1o1(QPjirAH~gfty?E;`DulS!4n+ix{>9Dk%$aDGcdxeAdA=y}Ue2VWNh z%`OVBGI=rDbCH(YY!Jq?k*Yp)mPCqMLl?PkKF)ajmHf3x!LnP!&(^CFw~gZ3*#zVo zSSHs@@h0$hbq0LQDa||0W{J&=pN{Y^GkVpLzh;q7)UVSb#yR*h{bqre2jBrld+k_{ zUl2*ej*z5T15|>;cvFOq4Tn;kEhWaz6adFnZUj6;Qp0ck_M*-7FtC}`#(c=Ql*Vfe zhR%8O3tL`a4ZzJN0{b?1SBr|0Od!&d@qh*qp|etTP`-*s%3*BtnGd{9BaEl1Ww~1P zXRFXxX7n@O2<#RnF#0D1 zi#{8oJLwd)<6&i=0APN=B#tYA{rnvXPWx!v&=0^&VH>lmvU5I(U3l_j zziO9W9OY6hv=gt^=NpJJ{S-4p;8O=P(-{BXgdiiyKJ_u9+RQ?pu4}N~6mtj|NfVgZ zxwFGue~mCT3#gN<18wK86rfQd6vQD$p9&X6&!z`h;M;>HaoS`2r13#tM$Ufxg`Wq4 zASlZ{j={^4Qe?Ko1$c*p38OIoODRc2&1e!lJ-dyWO))tm7O(aPjs{lrxGUun6?_gx z`1n&&gEms-rD+^7U|o;1oY-A+%nK)Zm`-sAbHNCIItyV7uPQn9Q~nFxmo zCb6NEc~$IlnA{{I`Uh_eR3JDMD*P%;%>l9f*X0T>Z$$OMor_6w&dhs%6`QRdI{E(@ zgEuLJ@eJkmvDLY!-NTt~(d;}vFRIBg3*U2~!P$;c0UbV#a?U5u=~3!>&$~Z)wfC1I&}bN@)|^KD=Ps483*Bo1$TOcf z{(M*+C)x#!*-T(r+iW#7BlsF2T6r9HEG{rb0&C-9*14czG2X+4vRw_Z{1OLz6EFic zUOc4SZ+v{&Aw;)F``dYu8iz5Y{0Y_(c7TA%d8z1cHLr{|`gi6ws)ng;D_EpH!ONbj z=b;N+7PK*2j#JmCkTltC3B%n77ru0%VcPQr_$6kN_xqUwl15PRluLpD6>w%%NTM~PIIJadaRN&fh{^VA+5+AYpwobo zJtuvGvgOYOOkM@#IVJ2mCtSSvBs8O7^w$xdz|3Pa*VJUOy|X^hn{N3qCGr951_3`UP!;b+w|7E^W-DGiZeY~OY%k=!d|9z+i)RJbUIj`NjQe!bIB31J6kca4jNt3YW$<|mTKY~e#m$nL~387Lc|%HC7ti} zsNcQ!9Zz>Ezq9xaTqt?JPA@oCK(2sJcp~6Jnvlhy516r0P5EY-O$y*WyAOKS-Jbm6 z{3C_Xvun+B72fI<(-sTES{v{|AQy z#j3}Z*s|R8{Px16qwVCj!vPb-RK`a$F7Q{-q7^jWhIKG2fptlRiyL^g=(R{={Y+kuSA*}P$ z2V2tQvNmX($|4!6@p;%YGU%`hK4)ZJrp9BQQB7@TY`UkCP>AZc&E!<$uM3qiF<{ti}SC07HB%QJXo0mj}IJsGqYoi@KaI{Ee zyk2JmgADN4JmONuYWAy5ojt{MLz+mj!RhhTHlRX3?AbgbIp7t*dQC~(5@h`-wV{6* z>X|6hfj(9Gs*t2s3yic6Q3qyn+CsWw1u6qnLz#XDsRLrtp|?lL z;@K~wNO3@n5SOjQK7_k{`=r)CNyJ%fc+z6d#~&$Y9Jg~wxi0dtQ)=p5i!K&uGBo46mg(bH4&_N#ry5|q2|nFox&?;aEihd}I!sJ+h2u!5<8wa^R=5F* zW}dF8Elw7|dqhv}=mZNpWnT+18VV%VVFwX(hzb!>(3E@a1^@29=wu z37x`_z%pIx^4TXzPA}1b0trZj znh1&G?%dQ8nUr~iMRR2f1&NVeYAqh2nbWk35J>$?<;4&13x%)*V$`PI(3#HV>;tfS z9Oeu~}SFHS~iV$ZB#_^Ip;4GT-G3y5#(&Ra^d28iG7Pw#Z z>p86@X;^nl4&H|-QCXMKe!E;xzu_0i#?Kx&yxir`3(my@HvZLlL8dnNSi(t=s5o;Z$iSMU96vUCwh z&SISb_5MSfi*-0$ynn&IxZ<-JnggGf2A48*ql9L>eu`y7g&f6s4_nB1R26UZCYA{$Q4t)8a^kubIliac6u_ySF?`R5I?#ir3 zs}S;!F9S*G))W&NkF{Y_>3arR4f|V>0$_7ELM9SnUyHp4V{;hC)ue$Ap2;psfPhF< zBRD^h@$g^cn@_^%keYNyq74#%LYg{de?tP(HTjOxbJKHVx((oeS*2>O z;b94G=+>Qh_PQ^(qGp5O=i$<06|86pSZ_mK;2Z`A-(f_8zi`oIp-lI_nWxiA^j=3* zE~oR?sZ@)9R#*yAQE@IO-T+O>NnH$7Oc@euLCiL07_P zNFSdLA>u{3bt32+II+Jj|7V}?o=R6?faH9`u1l*z6cvwmn<3pA8*UJlV97|9%3E#p zy`}&*Ih*CFVeqN~^MEFEo;CvlIdQtcfVJOnbB39y001R}NuMT^9IavKK6LP*d?nG( zNTmTxC%Wfcu}qiY+WtdaqG{&mmFX5nRN18{HF$e(@rSzuVecOwydj z*TMQsswHZFxrON<2T`?&n(_IKIn!*QNi;J;>(zEtDr(J?5$^B3CWlC66brkqn4R>( z-L)9t&H=nt9$>UGem-_U@9P0)Av18`G0>2q?Yt$zk{KWjvebSP5Z|KE#R3YSq15ok z^fKIfN3c)N2FQtYX$8|zVC;JhphFvIREpG!Csa)Evp>`8_xI=hW8W{Ur;3);t=KOW zf#5(I!Tuweq+hW@3tad^AkunKv`-xf`qAOl{mCp@+Ywj(NS!Je`Ku$jkl9Nfe9rNw zPW(stP%faxt=LB!&9ps8K~=RDUTfoe97 z*Z}HJ?I+Y!o+jWZsB$Twb*2eec#P_a;e$I{!}nyU0&nBY!JVJAh$T$BT{TZoID9B)F!DI|`93$aLTfqt#R` z0bBR!0Mz)-$GAi5Vb+RFvmaak1pk`iW(ZskK7m(g@-`Npx9Iw)00y~mU?yh9rRd*2 z1ah4Fntllf<&B^6oveTnd_M{21sH_uF;i|xNXi8zA!vb;@(uy`GHWcfP5|u>mq20e zJ44~eR_LMHb%-4)7^{$)p95#m!?hTwmmIJWv6rBUu2MIH;8-30vf_7CZhDqXw?BE6 z1I-TWal80G`ErGSNyE#=gKqos>73N^;*AYu)!|Mhp^GP8wE6EIX5sKB9!lzknDtYjM?1SbO#|D1*bNc;(n$eaRf|2(#MIY9tvZSVP-3ymyi@``;Vz8HepUcuK~ z#*O$WdX7M%f^q;#m!>R6^K>WN5D;P@Je24wh<*z5{%vKbS+OtaikD;CO$(SdTeT?$ ztPB3BWl-{u%3TlCeE-qH$BE8c5C|h^nPIqLsm%DX+>kH&r@%D`V-(IdD2u5taN3cq zViFi381r~Vo`C&!GNuXPI;y7Ec<~|tPd|>6yTNdWp)9sDF&&qDJg^3Wal@_=uU%lx zK}dH`@#5H@2G`DHTFRePl*5)-VIos2iV2+Yc;kA{O?faLzbB5TLLz)p7io6ii?SI&=NaJB#$yWnn z{I5@An>UByTC6-U2ZilA4ZP=!oA6v_f*j55!H=+T0VxHTohz2~BTbQq$MT8^7onuM zudS~Qk}(auO5vL52z7IuUm$WU)}$~(d03H+QkAz2o}F=2H1Six2&@+Li`w6v$W?6a z;6n#O+qpjs%;dGbqeKub-!Dhvcc2B+!)ywM2BD-d`va!f*iX0Gdg>2>h-fJpzmkydJ?m+zd9bHv?romm2pT5%Hlvk==k559iPC zYeWUn(XO5^{x3sLn8LJ6;o(ll?WzBq0P-P3^-V6<`FO6k*WZL=HQv2*yaB->-cdV9 z0G}tLXuR%U!D}zX431=w{Vz=`+1dU#6pT}8{$xSNH$KC)n1ug@g7Hi|J0(cU2;P#8 zMUmp%_b-Fh*^>EBS;I?>{xdv~V5xT5)S9PwzBeM1C)WH$7 zC8upsq}ifI1%LKYvG7?D`~mY9cs>&$U74XZ{;-G^w}(uVhM~%TLnXpVS0DJNT!#$6 zY#s$9W9H)~?23U+^`S<+o0%wFL=4D+k&i);o%Xq|28(d1 z&>|{dX{2OX`#Zfvl1qOyb_Y)2dIgt#L~K$8{TYfLvhuKi#?sbcD#dX~AP?h79X!3H zE!WG5_vjh8&9B<`pr*XNe1~4>KbK)BW|X}quip-!I>T^{JAUREB=vS7BkmXyqlM$i zxCs`W4f|_2@uh&7BSH8DC;@U#pU*Rsv^8#y0(|wsU2S7nt5~tU3>7Wn$!pHoJemR6 z#t{Tc*Kkth&(wq0QBj|boOjT?5cMB8wOBOxj(}YM-o1*bU1MJROTgA4{>n!?T&1Tp zDI{s-jV$Nx6YX+G519Vr!SYS#7r@HufRmy6u#g6kamBGc2c-30p|uzXnhXF32Mn_b zc9o9cZAi?OkL>t;A{D_?Yvi#5pyklG_N5hCoV3@Kdsa+N<7fb^#Pd6XYf12H*M%fK zH*)p!Wwbx0W7|4BR@#OVm+kHKYcMKhUWy2?QTW{2yPJ8o#{{ z6;=IhB%Bjhq2krC^fzU)A3@}RsEB-IVE%s%8he5z@h&|eM7fUr=pGkY`BCm#;0BkqvUzNeBfg5^-A@+OjidTYD<_$d7XIHRL!w0jXHH!Hh3HVe~ zub{jb2{$a0=@-tm_*4Bq=S1v{Z^yLDyBuuaZFa@{{+HH5r`Knos$*G}TXh%z^QqvI z^_f318kxP)Tb|?-_%EBpF8Y3x0@%d**KZA@7RbhP6$tQU#7cfGlUER_-y#gYSo-fE z;v!+!TIdSvphsW1u&d=i)n6;=eKeD&IqB;|lW1?^?&JbhUJiR&Bj<8u=I5?NQP$nY zE2A#dN0yu(d#kPP)vHTZcv+#abI3g$I=Ri=MR~%ar+){Ujr!vEG`=|kPL`1U$hUWw zdXhWR|EJzcafbssBA@4apdauQ8wl4JKB|OP#{c5E$hPP+`bQ8b-oEGw#=ba*SC}K{ z%IcrOibAksb;FkxH)>Btp#5MW@BA9csfrDPO2#w5D=aHIs&C*T&iLtQ&v|KXqheSB z1tM7*)*A|VgD(j7Y?tfnCGllk>cS6r4Xz|@%stMNzm!H-+=n;QD*|TTyuPwD#}TgJ zHi2_U#AKdQncJtztmJQ#a8j+OaO_K7S1hF}Pqb=<7TDz~qQ2GsD{B@-`sRiBiV~Rz zou8w_)pmrrbg=Vq9jNL?LgnY>fwX^eJM9g;g*I%&K#z6gIB(Y8we3@JE>MC4X(;Pk z|4iZZlF#QdH?>fv_@^kiM6d=3XqH5?h*XC+=2`rK{j(rNz?7>OuqFb9mvQKf`JM%o z9!JBQImds#P+bqTC3Sv$1?N2uO}-UnIH|@{IBy*0NZBA4{pSlj#9R@ej@cA3!WR(} z*-jVWy9MVU^3tbtoYr%ni!R+kK7$@0W_9~MS#Pr7la^f#)e3A*X2C3PUWIhAS(Og zTeQ>wPj6KmJ#64bdzjhHet$4dU6F>bRQ`N*5MxE}xp`^`H|Gjh{kYr!Q}X&3_@@N0 z1!0;_hvDTpdn6FLoe<{|Z>58**e_P~{B1cojylUpE!CSkOP)Oa7j%yW&c8!NSHV_* zo65UW=)$W2T4yu{MMs$Z3QxYrg2Tx#9vdPuC9E7wS9Z>*;`iU(6Wo0W&;xeL{*z2l3|BeFLBporBsK) z$!z0{OP*eO?(mA2_)Qd$E)(1EK8@_9Td>}Eii6NZ_VX9Oecsx}YKuNF3UFycsevEO zP6I$UfK=|?fZhQ(oE8uTTUG2rY^@Hy!p#8VUI%E4vpRkW-#euMyVWy(G%?1(OQm8u z41d`%P_TIRpFIE)Y4Kf{ByjTAthN+^~A@-IH>AW;CuF5+ZAS{3#bI{Ogs&Iji zP?)wHyTSW05u?L|B=o>js!U0*=vz{N?nV{V2R12+t^~yR(6m%_72BL}cclttpcK`k zfK>p91&>yOpog$y9Uz0T&Mo-zbP?J0xoaRu^3+;P6kUX<($CmD^gvy(1+kxA+C0io z#9ER*2gf4A_vFx%imH7ed*rJD;T-N!O#sM-1{mmaJ`52442&`u?+(EP`T zjCJ&ARZ!Bh>U4eE*>7sW@W(5afPRTg_qtgoVThBTBak6V9nH!#%Kvv598_gW5^v3q zg?Y3>ed&D0b-57E@_;JL%MVDRNxirR=TvgmD?JFV9-EzgM0ZF@Cvl@zlg@2qy3O)A zxuk82vjbW{T_OVP*-?$d3sy<77#x58i*hGXB~_}cPwh7j<6OU@yQ(DLXhz5$N&;xNUeirqo*#a?b)UrGBzP@ev1OS#%ZD;my|Bsj*U~@Wnez^wTr;MG|-C(13qa=$Iw8RWQrrfOq@-o)H8c~@Y9|HOd zf2uZ<{o}eGPPTy@yFb0)?xPE8 z=4$Z0<*4&@tm+}-0e`1;FqB1mgc`F&1ttciHSYP!v3fCdA|O`Y@6z}beNa6%@6jFD z`;`to^ANhE0Mp%8vPd01Hd-bK$cQ!S;r;Ca80i1HL*g39Lba?nsym;CX+crvD|DyB zn~}B$61o$)PR+*jRL$S_(w`N?>-!lM1jOQQb{AfwG(t->&7b!!_~7okTg{^O9x@*H zN9aTCMP=oZk}yU#rChOBX!{RWV7s4CM#t_$XRpS42H7vQkY&yjx)w0$#4h{~N%rhP zH!EQepr>qDPt_spr0&Lt+`!100*srg%KB;C1U=kYf32Qx$aX#+6F}398&{SmfM^U1 zqh4vrh^<^^stcGhn`Sy5*WK_(wtj5e#&PEW_6x9F+pzV4Q^!jisHARwmN?2^gB!Pk z_cP0c)nmgbUj_y`mX2jFB(PLHwv`unds}bF(+fG5DbsxpuRr><>Jh+TkyF=vyi8Hb{WtBCPFchzG(1*+8OptqmRXUZnE0QugoAZZjq+*8Phm_ z<6H0rSfCTtN6g%>+$BIXpSy8-8w0?x3x(2(x(nbggJgNF~mH$qFfoNhvTXHWm< z2O!JULRGb1>!%sn`bClKADkWY&ZeTk> zUTIU>3tg!rOa5qC2InlVe!#M7B%Nr1$+=Foy9QoIY{fg~W0I!<=d!l?Ebr&aubFU< zIwthlP(86GFPiw#cXkNX;2Rm-1(97@fdV&6 zUwO4i%8QK1J%$>1mpOjCojd6wU4yA4V-gnVTn1cmOpv+PSUOh!fn+~8d9o!fPCd?Q+O{BpU;FS# zeUbtY+k91f=1@@_ogK`%ENCYssf)riz#Wvpr(txAbuQt&q$;9f zh3Ha@0euS)Ym#p1-vUx&+DA*)2niEmle(b^fNIIg+UaXArt zkBY-Do}r6ToB9YZWtOGi$S#j(PN|L+$gZ@!xcIy{3e;vgMir$WA6v|%T1|s$ob3$) zue~C5aPNO=eDYejtPSS{=j|mfq>yt9Uu%U+EdKQ4sK}VLR1u4g@NFMbS7ZrLM;s?2 zyK-+YA-mqNEZxeBtA&E8u@fLsc1mQJYVB78+^| zPiWzIiE-Kh$Ab~buB^N`)db|2$}vR;(t#t7Iu=t0Zx(!S)a5v?YxK+FMSpKJe>$rD z+Lx(fcJN8-Y{vZQA1A6~Sq_Huq7xjKdyO?O^YRd^WF3ESD_y$zti*mEFtMCgx@JP*OUQJfdfdU5?zi`#Hj9_54u^| zc}l!YPteD+l79y+EO(gOG2%W)zGEWY)n_Z>zWphFe_j60?cCyDmPGZyu_eeZcwSt_ z;i8}pqK*Z<4PRFMUAz0B;8vSJpE~1(a$S1g<};n28t|+iAb&6*Z?J#r5tOciBHyL ztKFZ4*w9+MXHykW`K~`~AGj2;$}}SWd%j`xz^uX#Jl(R=6^*% z=dF%Dmb)W(R&8|46;2sAOP)0&I{ZJi$wcNdF1idg(}~&Z!PxrnZ0qKx3_OfOMzQCe zIj^Qm)y!Y}GX^Dl<~i|jOt;q6hUe?z*$DW8*Yjd%A$`CO zqPF!G!Vaz?>pEj*uv%|9*RcSi^UgmVk237f`#DVo#94LGst6G65tv?arGx!5D2y3Qq>-7$1s4;)1dk7)mj!XoUhoaS$7Qe7erFi`YE)TS1qP9@x^q2$}^EmlFo zD%tr&vxhVysrt?bO}t`v)uUCgpGk|^_H1-ha9qnhr2@yEfCPecJsmxfi4~nsjj*9Of8Ew|lV^Tv1V>jeDaXTsX9ZQsvER)Po z$}V&`IbXs^jVzf{#*#tSVaE1cbMEJlc%Ikm{(a_JKA+F^*{=8d`T|5LoqW-!U}W3d zT)>(C8C^HSSsa;ql241~f*2~*NNXq>w{{2=ClX3mnUK)!vA^@}Z2j%0ih_$q{+Sp{ z=X6CiZTDtP8Svw{t260qM~MSG(6@7u9BD=mM1q$e zkdH)FZp91wsA2oeOjDrnlaIvXT}^xxs%K6+w)}cFL{9kJn)ezZrmD^hXwGyS5Y~Z<@{esGn`*8 zGcgVBX^N&n0rMEin3};~&Id)SO=sNk2z6ab!%^3LmwwCa=5WSCDrq_Z>qN~KUF|uZ zcmb%vcxm2*qx!u$+W?NcqvWG#U>WJ1s&(6k!I#y*Ss#l9=usekl}MN7pXU#Ut+b!O zTOm0(s+q_c`FM*An>FL0_N;Irnq zuI8q))gL6zz?gIC@9*EnMZz*!)6Wj)h2NLoI{HqTcNb)UjZy8GxgbZdHZYisbuZ7x zpnN%N`p9xWe6wzvlY0kRx+|~Y3%|GjD@JFr?%wzu!E*y3)uMJE$kHWs`z$u<3UMo; zvHPL#3tp6D7~>=732nyZvCA*$;jog=X&u#gyVS(m-+zai+lvM=$eTa?rHZ{3Xuo>r zR~87JI(^+AD}+?VUP!4PjJ=R<{^5KN3*RqEeBJ)sOHG}kBm}gWAY%m9JxrdLHzvXE zl=!iL?p=CfkYZgm`N&1mKl1x1lE>Ls|K#;RYeJJiZD=OX7Lrxa6?dGg&!#C_p)(me z5?!_VS(qR~EH%c$Ba$VbQp$e{;8koOd=qnafn*%1=_%%1-Yb7VvzX40yOQI*O2WxM z)-HU&XX2ZQcP>&@xf-!?N*7{CmYbw@6D!*RbT`3Rrn#Xgdlj}+}mz+@ui zTX7;+lknyM{nA|r@s}Vt!8g4UJN039`7F>3X>CgJ*`*98sSKe7Fa8v<*Zpz#6yZ%J z{gMvD7M0V1^27xfIB!VCtI}IjdDHOyv*XTqO(Y6ffPP+hy?lES`7;}8IFoL;Qw5X_ zR`zY`#|h296-QS#C7Byn2L`n2AnKS#@An5H<@<*cPr;;V&Z@Tn&gY)hZM!i$_~YeA zYnkQtQ6bVRLl&;k8)dWg7%QE5=bXYr?bmfx<1OZioNlKtnN&Z!N|~xhR)ca|qu))N zvRfUO(JyAJN2bh}7kO7__7?0V$`qHC z)trQ1WKS>kko!s9#&6&3zK!p#qMX9cn~MD&;SV{f;d-geizw?bR%9Ifj`R7zIdv7A ziHB&f8IDMxofm#JZ0i1J+vOMh4RAZsA1SU24A@Es_P;jrFDz%HT}wgZN^@5A*$}^% z=ci{cNcaa-m%47kzC^DyH{&@zdJSxR+W3EsWot2p{734cRuA_ioy8eTV*trAkNoo6 z^^><1cWb$4=3X+(@?PvN5ywW49Ex54n?$b6wP-^cP!PC%{SdK zXxEATtW5_bfc!2K^B2+YrR7%=Rf(=)zpmcw*^ldO2fKef*)yVL>631VcV-BGR6TVq zb@KfpIpMT-grCa*eNhCC^7e=|hZ7cH@w@mZcYNALiR`J)Q&Y?a{0+r-XRVs~#OM_j z1UQ}tP=j;2VO2RrL*jY1j7yG2gLw?VJg>k!kIHHsh-<)#YB0B24z}xfg?Z=4AG&(? zA!%T#Sw(&YLJ_^d48P^rNBK%SPg?LS0FJy--?dC#xBaSKgSZmS)ak!00I*IFd*bmi zIZJ+Uwt{+~C;P+5juvk~4R^+1kmU6dTfr%s036Po?b$0aL;BMh_bwbtA`y)E7>K6#K+xE^d(=3Mkem0-g!|l z@D{lB^?&4Z#~{!-&rQ+X2R;-D`uQ2@BWB;pic2!eui$#LJ_!{xrWDJQ z4{1z2&}wi@HylU)8G5;l3F{^0{1Zi+uJyo9NZeB)%VgD?IfS+?XGPM@)=Xq%G*r0d zi`!;voxR7!2FvO2OZD%aC7^j=RFBqtu5NEI#C42>Nscd7*|Ib@^4setA8QdkZKH zSejE=qu&8R3Ew>vJ)wh%vz-B!IqVH0R4b1Yw*9gEsIKtpw1pl#dia>JI!Fr;>CE-~_Hq)HiC@zo9Al+L(U1Ho72#H|Dc`ILNoQXIHA zc{~+k(Z~-y@FAHea_)j347AV=`81KcFy_qD_r8;%okbmVYOq0!z{Y$}*U1)=xs4I< z6?1BRlAF4UqFMo+{}o3S4R?6aFVQS9h!2(;>k&>Dko+EH)`tSo*aWf%CPLn-?YHLQ z5e50id@c$t+J$Lk5#CI7wTaJSg?7YDiAGF=#%2|jRHij&Q-Nt@p_2@w{l|tmVL4i& z%F(tPnakxAl1k;1e)D~{=d1Y}xM$l2E&4sL&X_qKbt>~c2(~ya?v%}($WGT{T;(=; z!OF*|^=eMKdS~TiH}5TT&_?fyx@i!tRsP!FG3ChmL-cqcHP2^Y*j-kBrGKTzEE>}@ z_};V7KqR|XE1S8h&;U$mGIqHZ#Qbzd~ap;>ll^gFfi+Ymf}|AdsMk#y}(R48EiON0eIduw53Nn zBa_(qVRj<{u+<#;l!08ikYbJpVJuHd>c=w4y8sC?*1rtmFc3Y7vgHY^Vi2D2t452Ieb0-JZlkM7`$+I1RYzqByeTdpe>&x z_F4^|v3>_prZ0Fx1$=-a96_ku%#%06zf(@KLG}_>SP_Xm$(7m3$+rK!&pe@-9tcq0 zv{$hXun$;5os%x3OwJ^YygTtw|^klX&(tALt8Lf{j0Q! zsPiU9Jl*;^+4d*fu@&C;us1R2(?xOQ=3ef$Oy|h{B&7>o!80-`SLkcnvEVNGyw-Rc zVuuIWpnm%D^SWH^W2nQxPM=sG%vpMc<^`@lGja^C6${LIkGU=lQg(`pp~5pLmHN)N zvrQ53nl5mdn=s~>Kth1*(*_(@MlXvJtSK?|^^a)v-B=P#(!XT)9dS%jQz$p+j`)K%oDCWC~C_|b=v=mc7snUBQs<< zNSObZKf0gGe+^m8N6-_>xs5kbuRS|OYOptB5+BV#7al1c{mPV*&)IuLYcaNm(KQOY zcSb%6?c-z^xPaPjWo46(bRu9!KkQB|wKg_+r`>)F_Qr>WhT=L!AWhCDV=LoYkIaoU zNXz$*2MB2p(Py!~PLHr}t5|+z$B~q94i;ns8>!Fdg2%4xPzqC84WaNIzzaV1-ZOf^ ze|^;=$qNpmJ9EAA4E0LuwRMf{B=uYMLFBA?qqT&1tMZ6B8$oArin_I+Ny$I+bwWwY-Lr$FFuC`;eBa6?T*4*YFpw#i~Is=KeiK^1bb7XrJ(P zU3EPC?Y(DTWsTw->F+^os}G)4PD@{3@{Su1P38~}EE!3w-0$pvD{e12P;$bRq@&t& zURHMS;{+7KDVi$g9Rkgzr;;#aVU29j7HHQV@;{>Sl{LNWnh@NH_Jk%+fx|%JhfM|A zQm~H~p<(#zZuwq|P#2e(P3K;=&c>%-$(z?zRmlJL+#$O^1_xpjp`LP~f~=T>SE>C* zvteeol(J#(EWXfFkY2-O%f{UQMhx2OM&n(U#?Wf3NL^H@Qk~X!vUA6{qv)ouoB;hAj{ln&cRMg}u6`hD!@%KUnM6Ns3~x7SwQCUBaV>>s&U9ZMQ6qbV?Jr zUlrwZvX#+!MfOG$zre2eCo=XCr>17&>EVx+Y=RlAdOHxoz@fZG(!Uk}J8Z0vB*ek3 zj^UATd=PubJIJPr+el)s#@28Zwi`M;1uLF{?jZKJymkNAne@>d{y4O4wzU>0n%Tx6 z8xQB&4wh5q^0Fj$H3upeq-`PgHE1?h*!NwT+ZcSCa9dIS@ojX>Z<+Cz$F(hfCm(5)`{(St4!MtF83$n$upShULzd`J(E0L0g zTm+Vojc+>R0Ac1i*7&v48}gd4ouB*?2KF_|)XjzEFC~=r?thGbm`I zz>R8EOrAZhsv@2$QEeK~Q0E5H(aYdf093)f7A!K0Cb{|h0o+(=R(GkC>^JFaTw4k$ zh8|L<<=S)x6hQlwwHr>RF?=r!BpCV>$!JErnR>Su%B$$`^f?ppXMkjhy^cv{$QV@V=6}#ShkRc5_u%Lo z(&k%yblB?zaVv+j8w5c>G%BZwH zK+3r7&0pcDkJq7`qc6Irm@(UW!#grwQWsPH_XO{j75`mvbr;-x2(bxVx!vlr)J5#d z1kyPNdPtJXbDOOT#8)@>F7YGin`hG)iTH-Eev(5PQId2B0bqFh+fdD6#0?S}mRcW_ zGp-+Ru8Ae$Ssk7lURdEX`Ham7j(4qox$Vqz;ZLY1LrFoB%qgOTcTcFN!E}~CnI9Ph z$eopQrC9^?W_=|3 zpOlWLXcS@TF|ZiElaF03Ek(uTQn@!Ryai4RYpgZ432ZeJDH0xgopJdaie+xn+!d zd}Z9qOLrpRugDZ+5$6p{o2`&tbp4FFi7mr<*A3Hcs~n>3*B6s*XKZSEx4pC`QV6Wo zV>1-MI4qT6O^_TneoJ@Id(L$j+7lS??GbqUq;>xcUcYoUmt2Rw&~cN`_}2#fFrU0Z z?D|@om4=p1?d#f&8Tu)W5dzJN|0TcR`I0hbpB}i zA{2^u48IQVoFiEFum^5jI%g^X6jYb=ntixteuZA-jZXhf&id7f;Z3NANSlIT{+i>GS$gP+eMA(<)CL8mx z&*a~26tI_1y8?xbBCwYrwV7@w-3vKHp>s72)})W#?H9Ae#gOd-J{zjlEp29JE$zJ` zXS}~Q{{erEI!%eiCYH!AoN%$SL~MXyeX1ApupDKtGe5s}3;J{vQKL5-0vJn6A7xK7( zd%x7VRtLju?G~VN3KW1Iy7nchFpKO7-_~j=E87}c%dVgqxGtR;Rt}BVK~kXk)8T_1 zgGsI#OC#_mE9=XVrvLvhI{jw{|B=9dB=8>z{GXSA%leN0L}u$DyX(J5)(V|GeWLOw Hzn}jH(C34| literal 0 HcmV?d00001 diff --git a/img/roulette.png b/img/roulette.png new file mode 100644 index 0000000000000000000000000000000000000000..8d83a27038a1d5ac0ec0f71c7d3de3341ddfbb47 GIT binary patch literal 243868 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

    CoeG!dsDd&#L&f9C?M}(YSDOWdF(s9*p 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
    JkIq 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 z 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 literal 0 HcmV?d00001 diff --git a/img/unknown.jpg b/img/unknown.jpg new file mode 100644 index 0000000000000000000000000000000000000000..03745c06a1287cb761d3e8179e353e2008995678 GIT binary patch literal 11868 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 new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}};u.jQueryDetection(),i.default.fn.emulateTransitionEnd=function(t){var e=this,n=!1;return i.default(this).one(u.TRANSITION_END,(function(){n=!0})),setTimeout((function(){n||u.triggerTransitionEnd(e)}),t),this},i.default.event.special[u.TRANSITION_END]={bindType:l,delegateType:l,handle:function(t){if(i.default(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var f="bs.alert",d=i.default.fn.alert,c=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){i.default.removeData(this._element,f),this._element=null},e._getRootElement=function(t){var e=u.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=i.default(t).closest(".alert")[0]),n},e._triggerCloseEvent=function(t){var e=i.default.Event("close.bs.alert");return i.default(t).trigger(e),e},e._removeElement=function(t){var e=this;if(i.default(t).removeClass("show"),i.default(t).hasClass("fade")){var n=u.getTransitionDurationFromElement(t);i.default(t).one(u.TRANSITION_END,(function(n){return e._destroyElement(t,n)})).emulateTransitionEnd(n)}else this._destroyElement(t)},e._destroyElement=function(t){i.default(t).detach().trigger("closed.bs.alert").remove()},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data(f);o||(o=new t(this),n.data(f,o)),"close"===e&&o[e](this)}))},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},r(t,null,[{key:"VERSION",get:function(){return"4.6.2"}}]),t}();i.default(document).on("click.bs.alert.data-api",'[data-dismiss="alert"]',c._handleDismiss(new c)),i.default.fn.alert=c._jQueryInterface,i.default.fn.alert.Constructor=c,i.default.fn.alert.noConflict=function(){return i.default.fn.alert=d,c._jQueryInterface};var h="bs.button",p=i.default.fn.button,m="active",g='[data-toggle^="button"]',_='input:not([type="hidden"])',v=".btn",b=function(){function t(t){this._element=t,this.shouldAvoidTriggerChange=!1}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=i.default(this._element).closest('[data-toggle="buttons"]')[0];if(n){var o=this._element.querySelector(_);if(o){if("radio"===o.type)if(o.checked&&this._element.classList.contains(m))t=!1;else{var r=n.querySelector(".active");r&&i.default(r).removeClass(m)}t&&("checkbox"!==o.type&&"radio"!==o.type||(o.checked=!this._element.classList.contains(m)),this.shouldAvoidTriggerChange||i.default(o).trigger("change")),o.focus(),e=!1}}this._element.hasAttribute("disabled")||this._element.classList.contains("disabled")||(e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(m)),t&&i.default(this._element).toggleClass(m))},e.dispose=function(){i.default.removeData(this._element,h),this._element=null},t._jQueryInterface=function(e,n){return this.each((function(){var o=i.default(this),r=o.data(h);r||(r=new t(this),o.data(h,r)),r.shouldAvoidTriggerChange=n,"toggle"===e&&r[e]()}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.2"}}]),t}();i.default(document).on("click.bs.button.data-api",g,(function(t){var e=t.target,n=e;if(i.default(e).hasClass("btn")||(e=i.default(e).closest(v)[0]),!e||e.hasAttribute("disabled")||e.classList.contains("disabled"))t.preventDefault();else{var o=e.querySelector(_);if(o&&(o.hasAttribute("disabled")||o.classList.contains("disabled")))return void t.preventDefault();"INPUT"!==n.tagName&&"LABEL"===e.tagName||b._jQueryInterface.call(i.default(e),"toggle","INPUT"===n.tagName)}})).on("focus.bs.button.data-api blur.bs.button.data-api",g,(function(t){var e=i.default(t.target).closest(v)[0];i.default(e).toggleClass("focus",/^focus(in)?$/.test(t.type))})),i.default(window).on("load.bs.button.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-toggle="buttons"] .btn')),e=0,n=t.length;e0,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var e=t.prototype;return e.next=function(){this._isSliding||this._slide(C)},e.nextWhenVisible=function(){var t=i.default(this._element);!document.hidden&&t.is(":visible")&&"hidden"!==t.css("visibility")&&this.next()},e.prev=function(){this._isSliding||this._slide(S)},e.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(".carousel-item-next, .carousel-item-prev")&&(u.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},e.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},e.to=function(t){var e=this;this._activeElement=this._element.querySelector(D);var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)i.default(this._element).one(N,(function(){return e.to(t)}));else{if(n===t)return this.pause(),void this.cycle();var o=t>n?C:S;this._slide(o,this._items[t])}},e.dispose=function(){i.default(this._element).off(".bs.carousel"),i.default.removeData(this._element,E),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},e._getConfig=function(t){return t=a({},A,t),u.typeCheckConfig(y,t,k),t},e._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;this.touchDeltaX=0,e>0&&this.prev(),e<0&&this.next()}},e._addEventListeners=function(){var t=this;this._config.keyboard&&i.default(this._element).on("keydown.bs.carousel",(function(e){return t._keydown(e)})),"hover"===this._config.pause&&i.default(this._element).on("mouseenter.bs.carousel",(function(e){return t.pause(e)})).on("mouseleave.bs.carousel",(function(e){return t.cycle(e)})),this._config.touch&&this._addTouchEventListeners()},e._addTouchEventListeners=function(){var t=this;if(this._touchSupported){var e=function(e){t._pointerEvent&&I[e.originalEvent.pointerType.toUpperCase()]?t.touchStartX=e.originalEvent.clientX:t._pointerEvent||(t.touchStartX=e.originalEvent.touches[0].clientX)},n=function(e){t._pointerEvent&&I[e.originalEvent.pointerType.toUpperCase()]&&(t.touchDeltaX=e.originalEvent.clientX-t.touchStartX),t._handleSwipe(),"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout((function(e){return t.cycle(e)}),500+t._config.interval))};i.default(this._element.querySelectorAll(".carousel-item img")).on("dragstart.bs.carousel",(function(t){return t.preventDefault()})),this._pointerEvent?(i.default(this._element).on("pointerdown.bs.carousel",(function(t){return e(t)})),i.default(this._element).on("pointerup.bs.carousel",(function(t){return n(t)})),this._element.classList.add("pointer-event")):(i.default(this._element).on("touchstart.bs.carousel",(function(t){return e(t)})),i.default(this._element).on("touchmove.bs.carousel",(function(e){return function(e){t.touchDeltaX=e.originalEvent.touches&&e.originalEvent.touches.length>1?0:e.originalEvent.touches[0].clientX-t.touchStartX}(e)})),i.default(this._element).on("touchend.bs.carousel",(function(t){return n(t)})))}},e._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},e._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(".carousel-item")):[],this._items.indexOf(t)},e._getItemByDirection=function(t,e){var n=t===C,i=t===S,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var a=(o+(t===S?-1:1))%this._items.length;return-1===a?this._items[this._items.length-1]:this._items[a]},e._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),o=this._getItemIndex(this._element.querySelector(D)),r=i.default.Event("slide.bs.carousel",{relatedTarget:t,direction:e,from:o,to:n});return i.default(this._element).trigger(r),r},e._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll(".active"));i.default(e).removeClass(T);var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&i.default(n).addClass(T)}},e._updateInterval=function(){var t=this._activeElement||this._element.querySelector(D);if(t){var e=parseInt(t.getAttribute("data-interval"),10);e?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=e):this._config.interval=this._config.defaultInterval||this._config.interval}},e._slide=function(t,e){var n,o,r,a=this,s=this._element.querySelector(D),l=this._getItemIndex(s),f=e||s&&this._getItemByDirection(t,s),d=this._getItemIndex(f),c=Boolean(this._interval);if(t===C?(n="carousel-item-left",o="carousel-item-next",r="left"):(n="carousel-item-right",o="carousel-item-prev",r="right"),f&&i.default(f).hasClass(T))this._isSliding=!1;else if(!this._triggerSlideEvent(f,r).isDefaultPrevented()&&s&&f){this._isSliding=!0,c&&this.pause(),this._setActiveIndicatorElement(f),this._activeElement=f;var h=i.default.Event(N,{relatedTarget:f,direction:r,from:l,to:d});if(i.default(this._element).hasClass("slide")){i.default(f).addClass(o),u.reflow(f),i.default(s).addClass(n),i.default(f).addClass(n);var p=u.getTransitionDurationFromElement(s);i.default(s).one(u.TRANSITION_END,(function(){i.default(f).removeClass(n+" "+o).addClass(T),i.default(s).removeClass("active "+o+" "+n),a._isSliding=!1,setTimeout((function(){return i.default(a._element).trigger(h)}),0)})).emulateTransitionEnd(p)}else i.default(s).removeClass(T),i.default(f).addClass(T),this._isSliding=!1,i.default(this._element).trigger(h);c&&this.cycle()}},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this).data(E),o=a({},A,i.default(this).data());"object"==typeof e&&(o=a({},o,e));var r="string"==typeof e?e:o.slide;if(n||(n=new t(this,o),i.default(this).data(E,n)),"number"==typeof e)n.to(e);else if("string"==typeof r){if("undefined"==typeof n[r])throw new TypeError('No method named "'+r+'"');n[r]()}else o.interval&&o.ride&&(n.pause(),n.cycle())}))},t._dataApiClickHandler=function(e){var n=u.getSelectorFromElement(this);if(n){var o=i.default(n)[0];if(o&&i.default(o).hasClass("carousel")){var r=a({},i.default(o).data(),i.default(this).data()),s=this.getAttribute("data-slide-to");s&&(r.interval=!1),t._jQueryInterface.call(i.default(o),r),s&&i.default(o).data(E).to(s),e.preventDefault()}}},r(t,null,[{key:"VERSION",get:function(){return"4.6.2"}},{key:"Default",get:function(){return A}}]),t}();i.default(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",O._dataApiClickHandler),i.default(window).on("load.bs.carousel.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-ride="carousel"]')),e=0,n=t.length;e0&&(this._selector=a,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var e=t.prototype;return e.toggle=function(){i.default(this._element).hasClass(P)?this.hide():this.show()},e.show=function(){var e,n,o=this;if(!(this._isTransitioning||i.default(this._element).hasClass(P)||(this._parent&&0===(e=[].slice.call(this._parent.querySelectorAll(".show, .collapsing")).filter((function(t){return"string"==typeof o._config.parent?t.getAttribute("data-parent")===o._config.parent:t.classList.contains(F)}))).length&&(e=null),e&&(n=i.default(e).not(this._selector).data(j))&&n._isTransitioning))){var r=i.default.Event("show.bs.collapse");if(i.default(this._element).trigger(r),!r.isDefaultPrevented()){e&&(t._jQueryInterface.call(i.default(e).not(this._selector),"hide"),n||i.default(e).data(j,null));var a=this._getDimension();i.default(this._element).removeClass(F).addClass(R),this._element.style[a]=0,this._triggerArray.length&&i.default(this._triggerArray).removeClass(B).attr("aria-expanded",!0),this.setTransitioning(!0);var s="scroll"+(a[0].toUpperCase()+a.slice(1)),l=u.getTransitionDurationFromElement(this._element);i.default(this._element).one(u.TRANSITION_END,(function(){i.default(o._element).removeClass(R).addClass("collapse show"),o._element.style[a]="",o.setTransitioning(!1),i.default(o._element).trigger("shown.bs.collapse")})).emulateTransitionEnd(l),this._element.style[a]=this._element[s]+"px"}}},e.hide=function(){var t=this;if(!this._isTransitioning&&i.default(this._element).hasClass(P)){var e=i.default.Event("hide.bs.collapse");if(i.default(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",u.reflow(this._element),i.default(this._element).addClass(R).removeClass("collapse show");var o=this._triggerArray.length;if(o>0)for(var r=0;r=0)return 1;return 0}(),Y=U&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then((function(){e=!1,t()})))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout((function(){e=!1,t()}),V))}};function z(t){return t&&"[object Function]"==={}.toString.call(t)}function K(t,e){if(1!==t.nodeType)return[];var n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function X(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function G(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=K(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/(auto|scroll|overlay)/.test(n+o+i)?t:G(X(t))}function $(t){return t&&t.referenceNode?t.referenceNode:t}var J=U&&!(!window.MSInputMethodContext||!document.documentMode),Z=U&&/MSIE 10/.test(navigator.userAgent);function tt(t){return 11===t?J:10===t?Z:J||Z}function et(t){if(!t)return document.documentElement;for(var e=tt(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===K(n,"position")?et(n):n:t?t.ownerDocument.documentElement:document.documentElement}function nt(t){return null!==t.parentNode?nt(t.parentNode):t}function it(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?t:e,o=n?e:t,r=document.createRange();r.setStart(i,0),r.setEnd(o,0);var a,s,l=r.commonAncestorContainer;if(t!==l&&e!==l||i.contains(o))return"BODY"===(s=(a=l).nodeName)||"HTML"!==s&&et(a.firstElementChild)!==a?et(l):l;var u=nt(t);return u.host?it(u.host,e):it(t,nt(e).host)}function ot(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top",n="top"===e?"scrollTop":"scrollLeft",i=t.nodeName;if("BODY"===i||"HTML"===i){var o=t.ownerDocument.documentElement,r=t.ownerDocument.scrollingElement||o;return r[n]}return t[n]}function rt(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=ot(e,"top"),o=ot(e,"left"),r=n?-1:1;return t.top+=i*r,t.bottom+=i*r,t.left+=o*r,t.right+=o*r,t}function at(t,e){var n="x"===e?"Left":"Top",i="Left"===n?"Right":"Bottom";return parseFloat(t["border"+n+"Width"])+parseFloat(t["border"+i+"Width"])}function st(t,e,n,i){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],tt(10)?parseInt(n["offset"+t])+parseInt(i["margin"+("Height"===t?"Top":"Left")])+parseInt(i["margin"+("Height"===t?"Bottom":"Right")]):0)}function lt(t){var e=t.body,n=t.documentElement,i=tt(10)&&getComputedStyle(n);return{height:st("Height",e,n,i),width:st("Width",e,n,i)}}var ut=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},ft=function(){function t(t,e){for(var n=0;n2&&void 0!==arguments[2]&&arguments[2],i=tt(10),o="HTML"===e.nodeName,r=pt(t),a=pt(e),s=G(t),l=K(e),u=parseFloat(l.borderTopWidth),f=parseFloat(l.borderLeftWidth);n&&o&&(a.top=Math.max(a.top,0),a.left=Math.max(a.left,0));var d=ht({top:r.top-a.top-u,left:r.left-a.left-f,width:r.width,height:r.height});if(d.marginTop=0,d.marginLeft=0,!i&&o){var c=parseFloat(l.marginTop),h=parseFloat(l.marginLeft);d.top-=u-c,d.bottom-=u-c,d.left-=f-h,d.right-=f-h,d.marginTop=c,d.marginLeft=h}return(i&&!n?e.contains(s):e===s&&"BODY"!==s.nodeName)&&(d=rt(d,e)),d}function gt(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=t.ownerDocument.documentElement,i=mt(t,n),o=Math.max(n.clientWidth,window.innerWidth||0),r=Math.max(n.clientHeight,window.innerHeight||0),a=e?0:ot(n),s=e?0:ot(n,"left"),l={top:a-i.top+i.marginTop,left:s-i.left+i.marginLeft,width:o,height:r};return ht(l)}function _t(t){var e=t.nodeName;if("BODY"===e||"HTML"===e)return!1;if("fixed"===K(t,"position"))return!0;var n=X(t);return!!n&&_t(n)}function vt(t){if(!t||!t.parentElement||tt())return document.documentElement;for(var e=t.parentElement;e&&"none"===K(e,"transform");)e=e.parentElement;return e||document.documentElement}function bt(t,e,n,i){var o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],r={top:0,left:0},a=o?vt(t):it(t,$(e));if("viewport"===i)r=gt(a,o);else{var s=void 0;"scrollParent"===i?"BODY"===(s=G(X(e))).nodeName&&(s=t.ownerDocument.documentElement):s="window"===i?t.ownerDocument.documentElement:i;var l=mt(s,a,o);if("HTML"!==s.nodeName||_t(a))r=l;else{var u=lt(t.ownerDocument),f=u.height,d=u.width;r.top+=l.top-l.marginTop,r.bottom=f+l.top,r.left+=l.left-l.marginLeft,r.right=d+l.left}}var c="number"==typeof(n=n||0);return r.left+=c?n:n.left||0,r.top+=c?n:n.top||0,r.right-=c?n:n.right||0,r.bottom-=c?n:n.bottom||0,r}function yt(t){return t.width*t.height}function Et(t,e,n,i,o){var r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var a=bt(n,i,r,o),s={top:{width:a.width,height:e.top-a.top},right:{width:a.right-e.right,height:a.height},bottom:{width:a.width,height:a.bottom-e.bottom},left:{width:e.left-a.left,height:a.height}},l=Object.keys(s).map((function(t){return ct({key:t},s[t],{area:yt(s[t])})})).sort((function(t,e){return e.area-t.area})),u=l.filter((function(t){var e=t.width,i=t.height;return e>=n.clientWidth&&i>=n.clientHeight})),f=u.length>0?u[0].key:l[0].key,d=t.split("-")[1];return f+(d?"-"+d:"")}function wt(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=i?vt(e):it(e,$(n));return mt(n,o,i)}function Tt(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),i=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+i,height:t.offsetHeight+n}}function Ct(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,(function(t){return e[t]}))}function St(t,e,n){n=n.split("-")[0];var i=Tt(t),o={width:i.width,height:i.height},r=-1!==["right","left"].indexOf(n),a=r?"top":"left",s=r?"left":"top",l=r?"height":"width",u=r?"width":"height";return o[a]=e[a]+e[l]/2-i[l]/2,o[s]=n===s?e[s]-i[u]:e[Ct(s)],o}function Nt(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function Dt(t,e,n){return(void 0===n?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex((function(t){return t.name===n}));var i=Nt(t,(function(t){return t.name===n}));return t.indexOf(i)}(t,0,n))).forEach((function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=t.function||t.fn;t.enabled&&z(n)&&(e.offsets.popper=ht(e.offsets.popper),e.offsets.reference=ht(e.offsets.reference),e=n(e,t))})),e}function At(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=wt(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=Et(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=St(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=Dt(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}function kt(t,e){return t.some((function(t){var n=t.name;return t.enabled&&n===e}))}function It(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),i=0;i1&&void 0!==arguments[1]&&arguments[1],n=Qt.indexOf(t),i=Qt.slice(n+1).concat(Qt.slice(0,n));return e?i.reverse():i}var Ut={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split("-")[0],i=e.split("-")[1];if(i){var o=t.offsets,r=o.reference,a=o.popper,s=-1!==["bottom","top"].indexOf(n),l=s?"left":"top",u=s?"width":"height",f={start:dt({},l,r[l]),end:dt({},l,r[l]+r[u]-a[u])};t.offsets.popper=ct({},a,f[i])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n,i=e.offset,o=t.placement,r=t.offsets,a=r.popper,s=r.reference,l=o.split("-")[0];return n=Rt(+i)?[+i,0]:function(t,e,n,i){var o=[0,0],r=-1!==["right","left"].indexOf(i),a=t.split(/(\+|\-)/).map((function(t){return t.trim()})),s=a.indexOf(Nt(a,(function(t){return-1!==t.search(/,|\s/)})));a[s]&&-1===a[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,u=-1!==s?[a.slice(0,s).concat([a[s].split(l)[0]]),[a[s].split(l)[1]].concat(a.slice(s+1))]:[a];return u=u.map((function(t,i){var o=(1===i?!r:r)?"height":"width",a=!1;return t.reduce((function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,a=!0,t):a?(t[t.length-1]+=e,a=!1,t):t.concat(e)}),[]).map((function(t){return function(t,e,n,i){var o=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+o[1],a=o[2];return r?0===a.indexOf("%")?ht("%p"===a?n:i)[e]/100*r:"vh"===a||"vw"===a?("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*r:r:t}(t,o,e,n)}))})),u.forEach((function(t,e){t.forEach((function(n,i){Rt(n)&&(o[e]+=n*("-"===t[i-1]?-1:1))}))})),o}(i,a,s,l),"left"===l?(a.top+=n[0],a.left-=n[1]):"right"===l?(a.top+=n[0],a.left+=n[1]):"top"===l?(a.left+=n[0],a.top-=n[1]):"bottom"===l&&(a.left+=n[0],a.top+=n[1]),t.popper=a,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,e){var n=e.boundariesElement||et(t.instance.popper);t.instance.reference===n&&(n=et(n));var i=It("transform"),o=t.instance.popper.style,r=o.top,a=o.left,s=o[i];o.top="",o.left="",o[i]="";var l=bt(t.instance.popper,t.instance.reference,e.padding,n,t.positionFixed);o.top=r,o.left=a,o[i]=s,e.boundaries=l;var u=e.priority,f=t.offsets.popper,d={primary:function(t){var n=f[t];return f[t]l[t]&&!e.escapeWithReference&&(i=Math.min(f[n],l[t]-("right"===t?f.width:f.height))),dt({},n,i)}};return u.forEach((function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";f=ct({},f,d[e](t))})),t.offsets.popper=f,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,o=t.placement.split("-")[0],r=Math.floor,a=-1!==["top","bottom"].indexOf(o),s=a?"right":"bottom",l=a?"left":"top",u=a?"width":"height";return n[s]r(i[s])&&(t.offsets.popper[l]=r(i[s])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!Mt(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var o=t.placement.split("-")[0],r=t.offsets,a=r.popper,s=r.reference,l=-1!==["left","right"].indexOf(o),u=l?"height":"width",f=l?"Top":"Left",d=f.toLowerCase(),c=l?"left":"top",h=l?"bottom":"right",p=Tt(i)[u];s[h]-pa[h]&&(t.offsets.popper[d]+=s[d]+p-a[h]),t.offsets.popper=ht(t.offsets.popper);var m=s[d]+s[u]/2-p/2,g=K(t.instance.popper),_=parseFloat(g["margin"+f]),v=parseFloat(g["border"+f+"Width"]),b=m-t.offsets.popper[d]-_-v;return b=Math.max(Math.min(a[u]-p,b),0),t.arrowElement=i,t.offsets.arrow=(dt(n={},d,Math.round(b)),dt(n,c,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(t,e){if(kt(t.instance.modifiers,"inner"))return t;if(t.flipped&&t.placement===t.originalPlacement)return t;var n=bt(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),i=t.placement.split("-")[0],o=Ct(i),r=t.placement.split("-")[1]||"",a=[];switch(e.behavior){case"flip":a=[i,o];break;case"clockwise":a=Wt(i);break;case"counterclockwise":a=Wt(i,!0);break;default:a=e.behavior}return a.forEach((function(s,l){if(i!==s||a.length===l+1)return t;i=t.placement.split("-")[0],o=Ct(i);var u=t.offsets.popper,f=t.offsets.reference,d=Math.floor,c="left"===i&&d(u.right)>d(f.left)||"right"===i&&d(u.left)d(f.top)||"bottom"===i&&d(u.top)d(n.right),m=d(u.top)d(n.bottom),_="left"===i&&h||"right"===i&&p||"top"===i&&m||"bottom"===i&&g,v=-1!==["top","bottom"].indexOf(i),b=!!e.flipVariations&&(v&&"start"===r&&h||v&&"end"===r&&p||!v&&"start"===r&&m||!v&&"end"===r&&g),y=!!e.flipVariationsByContent&&(v&&"start"===r&&p||v&&"end"===r&&h||!v&&"start"===r&&g||!v&&"end"===r&&m),E=b||y;(c||_||E)&&(t.flipped=!0,(c||_)&&(i=a[l+1]),E&&(r=function(t){return"end"===t?"start":"start"===t?"end":t}(r)),t.placement=i+(r?"-"+r:""),t.offsets.popper=ct({},t.offsets.popper,St(t.instance.popper,t.offsets.reference,t.placement)),t=Dt(t.instance.modifiers,t,"flip"))})),t},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,o=i.popper,r=i.reference,a=-1!==["left","right"].indexOf(n),s=-1===["top","left"].indexOf(n);return o[a?"left":"top"]=r[n]-(s?o[a?"width":"height"]:0),t.placement=Ct(e),t.offsets.popper=ht(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!Mt(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=Nt(t.instance.modifiers,(function(t){return"preventOverflow"===t.name})).boundaries;if(e.bottomn.right||e.top>n.bottom||e.right2&&void 0!==arguments[2]?arguments[2]:{};ut(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=Y(this.update.bind(this)),this.options=ct({},t.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(ct({},t.Defaults.modifiers,o.modifiers)).forEach((function(e){i.options.modifiers[e]=ct({},t.Defaults.modifiers[e]||{},o.modifiers?o.modifiers[e]:{})})),this.modifiers=Object.keys(this.options.modifiers).map((function(t){return ct({name:t},i.options.modifiers[t])})).sort((function(t,e){return t.order-e.order})),this.modifiers.forEach((function(t){t.enabled&&z(t.onLoad)&&t.onLoad(i.reference,i.popper,i.options,t,i.state)})),this.update();var r=this.options.eventsEnabled;r&&this.enableEventListeners(),this.state.eventsEnabled=r}return ft(t,[{key:"update",value:function(){return At.call(this)}},{key:"destroy",value:function(){return Ot.call(this)}},{key:"enableEventListeners",value:function(){return Pt.call(this)}},{key:"disableEventListeners",value:function(){return Ft.call(this)}}]),t}();Vt.Utils=("undefined"!=typeof window?window:global).PopperUtils,Vt.placements=qt,Vt.Defaults=Ut;var Yt=Vt,zt="dropdown",Kt="bs.dropdown",Xt=i.default.fn[zt],Gt=new RegExp("38|40|27"),$t="disabled",Jt="show",Zt="dropdown-menu-right",te="hide.bs.dropdown",ee="hidden.bs.dropdown",ne="click.bs.dropdown.data-api",ie="keydown.bs.dropdown.data-api",oe='[data-toggle="dropdown"]',re=".dropdown-menu",ae={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic",popperConfig:null},se={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string",popperConfig:"(null|object)"},le=function(){function t(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var e=t.prototype;return e.toggle=function(){if(!this._element.disabled&&!i.default(this._element).hasClass($t)){var e=i.default(this._menu).hasClass(Jt);t._clearMenus(),e||this.show(!0)}},e.show=function(e){if(void 0===e&&(e=!1),!(this._element.disabled||i.default(this._element).hasClass($t)||i.default(this._menu).hasClass(Jt))){var n={relatedTarget:this._element},o=i.default.Event("show.bs.dropdown",n),r=t._getParentFromElement(this._element);if(i.default(r).trigger(o),!o.isDefaultPrevented()){if(!this._inNavbar&&e){if("undefined"==typeof Yt)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");var a=this._element;"parent"===this._config.reference?a=r:u.isElement(this._config.reference)&&(a=this._config.reference,"undefined"!=typeof this._config.reference.jquery&&(a=this._config.reference[0])),"scrollParent"!==this._config.boundary&&i.default(r).addClass("position-static"),this._popper=new Yt(a,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===i.default(r).closest(".navbar-nav").length&&i.default(document.body).children().on("mouseover",null,i.default.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),i.default(this._menu).toggleClass(Jt),i.default(r).toggleClass(Jt).trigger(i.default.Event("shown.bs.dropdown",n))}}},e.hide=function(){if(!this._element.disabled&&!i.default(this._element).hasClass($t)&&i.default(this._menu).hasClass(Jt)){var e={relatedTarget:this._element},n=i.default.Event(te,e),o=t._getParentFromElement(this._element);i.default(o).trigger(n),n.isDefaultPrevented()||(this._popper&&this._popper.destroy(),i.default(this._menu).toggleClass(Jt),i.default(o).toggleClass(Jt).trigger(i.default.Event(ee,e)))}},e.dispose=function(){i.default.removeData(this._element,Kt),i.default(this._element).off(".bs.dropdown"),this._element=null,this._menu=null,null!==this._popper&&(this._popper.destroy(),this._popper=null)},e.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},e._addEventListeners=function(){var t=this;i.default(this._element).on("click.bs.dropdown",(function(e){e.preventDefault(),e.stopPropagation(),t.toggle()}))},e._getConfig=function(t){return t=a({},this.constructor.Default,i.default(this._element).data(),t),u.typeCheckConfig(zt,t,this.constructor.DefaultType),t},e._getMenuElement=function(){if(!this._menu){var e=t._getParentFromElement(this._element);e&&(this._menu=e.querySelector(re))}return this._menu},e._getPlacement=function(){var t=i.default(this._element.parentNode),e="bottom-start";return t.hasClass("dropup")?e=i.default(this._menu).hasClass(Zt)?"top-end":"top-start":t.hasClass("dropright")?e="right-start":t.hasClass("dropleft")?e="left-start":i.default(this._menu).hasClass(Zt)&&(e="bottom-end"),e},e._detectNavbar=function(){return i.default(this._element).closest(".navbar").length>0},e._getOffset=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=a({},e.offsets,t._config.offset(e.offsets,t._element)),e}:e.offset=this._config.offset,e},e._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),a({},t,this._config.popperConfig)},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this).data(Kt);if(n||(n=new t(this,"object"==typeof e?e:null),i.default(this).data(Kt,n)),"string"==typeof e){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},t._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=[].slice.call(document.querySelectorAll(oe)),o=0,r=n.length;o0&&a--,40===e.which&&adocument.documentElement.clientHeight;n||(this._element.style.overflowY="hidden"),this._element.classList.add(pe);var o=u.getTransitionDurationFromElement(this._dialog);i.default(this._element).off(u.TRANSITION_END),i.default(this._element).one(u.TRANSITION_END,(function(){t._element.classList.remove(pe),n||i.default(t._element).one(u.TRANSITION_END,(function(){t._element.style.overflowY=""})).emulateTransitionEnd(t._element,o)})).emulateTransitionEnd(o),this._element.focus()}},e._showElement=function(t){var e=this,n=i.default(this._element).hasClass(ce),o=this._dialog?this._dialog.querySelector(".modal-body"):null;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),i.default(this._dialog).hasClass("modal-dialog-scrollable")&&o?o.scrollTop=0:this._element.scrollTop=0,n&&u.reflow(this._element),i.default(this._element).addClass(he),this._config.focus&&this._enforceFocus();var r=i.default.Event("shown.bs.modal",{relatedTarget:t}),a=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,i.default(e._element).trigger(r)};if(n){var s=u.getTransitionDurationFromElement(this._dialog);i.default(this._dialog).one(u.TRANSITION_END,a).emulateTransitionEnd(s)}else a()},e._enforceFocus=function(){var t=this;i.default(document).off(_e).on(_e,(function(e){document!==e.target&&t._element!==e.target&&0===i.default(t._element).has(e.target).length&&t._element.focus()}))},e._setEscapeEvent=function(){var t=this;this._isShown?i.default(this._element).on(ye,(function(e){t._config.keyboard&&27===e.which?(e.preventDefault(),t.hide()):t._config.keyboard||27!==e.which||t._triggerBackdropTransition()})):this._isShown||i.default(this._element).off(ye)},e._setResizeEvent=function(){var t=this;this._isShown?i.default(window).on(ve,(function(e){return t.handleUpdate(e)})):i.default(window).off(ve)},e._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._showBackdrop((function(){i.default(document.body).removeClass(de),t._resetAdjustments(),t._resetScrollbar(),i.default(t._element).trigger(me)}))},e._removeBackdrop=function(){this._backdrop&&(i.default(this._backdrop).remove(),this._backdrop=null)},e._showBackdrop=function(t){var e=this,n=i.default(this._element).hasClass(ce)?ce:"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className="modal-backdrop",n&&this._backdrop.classList.add(n),i.default(this._backdrop).appendTo(document.body),i.default(this._element).on(be,(function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===e._config.backdrop?e._triggerBackdropTransition():e.hide())})),n&&u.reflow(this._backdrop),i.default(this._backdrop).addClass(he),!t)return;if(!n)return void t();var o=u.getTransitionDurationFromElement(this._backdrop);i.default(this._backdrop).one(u.TRANSITION_END,t).emulateTransitionEnd(o)}else if(!this._isShown&&this._backdrop){i.default(this._backdrop).removeClass(he);var r=function(){e._removeBackdrop(),t&&t()};if(i.default(this._element).hasClass(ce)){var a=u.getTransitionDurationFromElement(this._backdrop);i.default(this._backdrop).one(u.TRANSITION_END,r).emulateTransitionEnd(a)}else r()}else t&&t()},e._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},e._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},e._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)
    ',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",customClass:"",sanitize:!0,sanitizeFn:null,whiteList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},We={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object",popperConfig:"(null|object)"},Ue={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},Ve=function(){function t(t,e){if("undefined"==typeof Yt)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var e=t.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=i.default(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),i.default(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(i.default(this.getTipElement()).hasClass(Fe))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),i.default.removeData(this.element,this.constructor.DATA_KEY),i.default(this.element).off(this.constructor.EVENT_KEY),i.default(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&i.default(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var t=this;if("none"===i.default(this.element).css("display"))throw new Error("Please use show on visible elements");var e=i.default.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){i.default(this.element).trigger(e);var n=u.findShadowRoot(this.element),o=i.default.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(e.isDefaultPrevented()||!o)return;var r=this.getTipElement(),a=u.getUID(this.constructor.NAME);r.setAttribute("id",a),this.element.setAttribute("aria-describedby",a),this.setContent(),this.config.animation&&i.default(r).addClass(Pe);var s="function"==typeof this.config.placement?this.config.placement.call(this,r,this.element):this.config.placement,l=this._getAttachment(s);this.addAttachmentClass(l);var f=this._getContainer();i.default(r).data(this.constructor.DATA_KEY,this),i.default.contains(this.element.ownerDocument.documentElement,this.tip)||i.default(r).appendTo(f),i.default(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new Yt(this.element,r,this._getPopperConfig(l)),i.default(r).addClass(Fe),i.default(r).addClass(this.config.customClass),"ontouchstart"in document.documentElement&&i.default(document.body).children().on("mouseover",null,i.default.noop);var d=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,i.default(t.element).trigger(t.constructor.Event.SHOWN),e===Be&&t._leave(null,t)};if(i.default(this.tip).hasClass(Pe)){var c=u.getTransitionDurationFromElement(this.tip);i.default(this.tip).one(u.TRANSITION_END,d).emulateTransitionEnd(c)}else d()}},e.hide=function(t){var e=this,n=this.getTipElement(),o=i.default.Event(this.constructor.Event.HIDE),r=function(){e._hoverState!==Re&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),i.default(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(i.default(this.element).trigger(o),!o.isDefaultPrevented()){if(i.default(n).removeClass(Fe),"ontouchstart"in document.documentElement&&i.default(document.body).children().off("mouseover",null,i.default.noop),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,i.default(this.tip).hasClass(Pe)){var a=u.getTransitionDurationFromElement(n);i.default(n).one(u.TRANSITION_END,r).emulateTransitionEnd(a)}else r();this._hoverState=""}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(t){i.default(this.getTipElement()).addClass("bs-tooltip-"+t)},e.getTipElement=function(){return this.tip=this.tip||i.default(this.config.template)[0],this.tip},e.setContent=function(){var t=this.getTipElement();this.setElementContent(i.default(t.querySelectorAll(".tooltip-inner")),this.getTitle()),i.default(t).removeClass("fade show")},e.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=ke(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?i.default(e).parent().is(t)||t.empty().append(e):t.text(i.default(e).text())},e.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},e._getPopperConfig=function(t){var e=this;return a({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}},this.config.popperConfig)},e._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=a({},e.offsets,t.config.offset(e.offsets,t.element)),e}:e.offset=this.config.offset,e},e._getContainer=function(){return!1===this.config.container?document.body:u.isElement(this.config.container)?i.default(this.config.container):i.default(document).find(this.config.container)},e._getAttachment=function(t){return qe[t.toUpperCase()]},e._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(e){if("click"===e)i.default(t.element).on(t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==e){var n=e===He?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,o=e===He?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;i.default(t.element).on(n,t.config.selector,(function(e){return t._enter(e)})).on(o,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t.element&&t.hide()},i.default(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=a({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},e._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},e._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||i.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),i.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Me:He]=!0),i.default(e.getTipElement()).hasClass(Fe)||e._hoverState===Re?e._hoverState=Re:(clearTimeout(e._timeout),e._hoverState=Re,e.config.delay&&e.config.delay.show?e._timeout=setTimeout((function(){e._hoverState===Re&&e.show()}),e.config.delay.show):e.show())},e._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||i.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),i.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Me:He]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=Be,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout((function(){e._hoverState===Be&&e.hide()}),e.config.delay.hide):e.hide())},e._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},e._getConfig=function(t){var e=i.default(this.element).data();return Object.keys(e).forEach((function(t){-1!==Le.indexOf(t)&&delete e[t]})),"number"==typeof(t=a({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),u.typeCheckConfig(Ie,t,this.constructor.DefaultType),t.sanitize&&(t.template=ke(t.template,t.whiteList,t.sanitizeFn)),t},e._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},e._cleanTipClass=function(){var t=i.default(this.getTipElement()),e=t.attr("class").match(je);null!==e&&e.length&&t.removeClass(e.join(""))},e._handlePopperPlacementChange=function(t){this.tip=t.instance.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},e._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(i.default(t).removeClass(Pe),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data(Oe),r="object"==typeof e&&e;if((o||!/dispose|hide/.test(e))&&(o||(o=new t(this,r),n.data(Oe,o)),"string"==typeof e)){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e]()}}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.2"}},{key:"Default",get:function(){return Qe}},{key:"NAME",get:function(){return Ie}},{key:"DATA_KEY",get:function(){return Oe}},{key:"Event",get:function(){return Ue}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return We}}]),t}();i.default.fn.tooltip=Ve._jQueryInterface,i.default.fn.tooltip.Constructor=Ve,i.default.fn.tooltip.noConflict=function(){return i.default.fn.tooltip=xe,Ve._jQueryInterface};var Ye="bs.popover",ze=i.default.fn.popover,Ke=new RegExp("(^|\\s)bs-popover\\S+","g"),Xe=a({},Ve.Default,{placement:"right",trigger:"click",content:"",template:''}),Ge=a({},Ve.DefaultType,{content:"(string|element|function)"}),$e={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},Je=function(t){var e,n;function o(){return t.apply(this,arguments)||this}n=t,(e=o).prototype=Object.create(n.prototype),e.prototype.constructor=e,s(e,n);var a=o.prototype;return a.isWithContent=function(){return this.getTitle()||this._getContent()},a.addAttachmentClass=function(t){i.default(this.getTipElement()).addClass("bs-popover-"+t)},a.getTipElement=function(){return this.tip=this.tip||i.default(this.config.template)[0],this.tip},a.setContent=function(){var t=i.default(this.getTipElement());this.setElementContent(t.find(".popover-header"),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(".popover-body"),e),t.removeClass("fade show")},a._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},a._cleanTipClass=function(){var t=i.default(this.getTipElement()),e=t.attr("class").match(Ke);null!==e&&e.length>0&&t.removeClass(e.join(""))},o._jQueryInterface=function(t){return this.each((function(){var e=i.default(this).data(Ye),n="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new o(this,n),i.default(this).data(Ye,e)),"string"==typeof t)){if("undefined"==typeof e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},r(o,null,[{key:"VERSION",get:function(){return"4.6.2"}},{key:"Default",get:function(){return Xe}},{key:"NAME",get:function(){return"popover"}},{key:"DATA_KEY",get:function(){return Ye}},{key:"Event",get:function(){return $e}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return Ge}}]),o}(Ve);i.default.fn.popover=Je._jQueryInterface,i.default.fn.popover.Constructor=Je,i.default.fn.popover.noConflict=function(){return i.default.fn.popover=ze,Je._jQueryInterface};var Ze="scrollspy",tn="bs.scrollspy",en=i.default.fn[Ze],nn="active",on="position",rn=".nav, .list-group",an={offset:10,method:"auto",target:""},sn={offset:"number",method:"string",target:"(string|element)"},ln=function(){function t(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" .nav-link,"+this._config.target+" .list-group-item,"+this._config.target+" .dropdown-item",this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,i.default(this._scrollElement).on("scroll.bs.scrollspy",(function(t){return n._process(t)})),this.refresh(),this._process()}var e=t.prototype;return e.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?"offset":on,n="auto"===this._config.method?e:this._config.method,o=n===on?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map((function(t){var e,r=u.getSelectorFromElement(t);if(r&&(e=document.querySelector(r)),e){var a=e.getBoundingClientRect();if(a.width||a.height)return[i.default(e)[n]().top+o,r]}return null})).filter(Boolean).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},e.dispose=function(){i.default.removeData(this._element,tn),i.default(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},e._getConfig=function(t){if("string"!=typeof(t=a({},an,"object"==typeof t&&t?t:{})).target&&u.isElement(t.target)){var e=i.default(t.target).attr("id");e||(e=u.getUID(Ze),i.default(t.target).attr("id",e)),t.target="#"+e}return u.typeCheckConfig(Ze,t,sn),t},e._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},e._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},e._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},e._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;)this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t li > .active",gn=function(){function t(t){this._element=t}var e=t.prototype;return e.show=function(){var t=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&i.default(this._element).hasClass(dn)||i.default(this._element).hasClass("disabled")||this._element.hasAttribute("disabled"))){var e,n,o=i.default(this._element).closest(".nav, .list-group")[0],r=u.getSelectorFromElement(this._element);if(o){var a="UL"===o.nodeName||"OL"===o.nodeName?mn:pn;n=(n=i.default.makeArray(i.default(o).find(a)))[n.length-1]}var s=i.default.Event("hide.bs.tab",{relatedTarget:this._element}),l=i.default.Event("show.bs.tab",{relatedTarget:n});if(n&&i.default(n).trigger(s),i.default(this._element).trigger(l),!l.isDefaultPrevented()&&!s.isDefaultPrevented()){r&&(e=document.querySelector(r)),this._activate(this._element,o);var f=function(){var e=i.default.Event("hidden.bs.tab",{relatedTarget:t._element}),o=i.default.Event("shown.bs.tab",{relatedTarget:n});i.default(n).trigger(e),i.default(t._element).trigger(o)};e?this._activate(e,e.parentNode,f):f()}}},e.dispose=function(){i.default.removeData(this._element,un),this._element=null},e._activate=function(t,e,n){var o=this,r=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?i.default(e).children(pn):i.default(e).find(mn))[0],a=n&&r&&i.default(r).hasClass(cn),s=function(){return o._transitionComplete(t,r,n)};if(r&&a){var l=u.getTransitionDurationFromElement(r);i.default(r).removeClass(hn).one(u.TRANSITION_END,s).emulateTransitionEnd(l)}else s()},e._transitionComplete=function(t,e,n){if(e){i.default(e).removeClass(dn);var o=i.default(e.parentNode).find("> .dropdown-menu .active")[0];o&&i.default(o).removeClass(dn),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}i.default(t).addClass(dn),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),u.reflow(t),t.classList.contains(cn)&&t.classList.add(hn);var r=t.parentNode;if(r&&"LI"===r.nodeName&&(r=r.parentNode),r&&i.default(r).hasClass("dropdown-menu")){var a=i.default(t).closest(".dropdown")[0];if(a){var s=[].slice.call(a.querySelectorAll(".dropdown-toggle"));i.default(s).addClass(dn)}t.setAttribute("aria-expanded",!0)}n&&n()},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data(un);if(o||(o=new t(this),n.data(un,o)),"string"==typeof e){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e]()}}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.2"}}]),t}();i.default(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',(function(t){t.preventDefault(),gn._jQueryInterface.call(i.default(this),"show")})),i.default.fn.tab=gn._jQueryInterface,i.default.fn.tab.Constructor=gn,i.default.fn.tab.noConflict=function(){return i.default.fn.tab=fn,gn._jQueryInterface};var _n="bs.toast",vn=i.default.fn.toast,bn="hide",yn="show",En="showing",wn="click.dismiss.bs.toast",Tn={animation:!0,autohide:!0,delay:500},Cn={animation:"boolean",autohide:"boolean",delay:"number"},Sn=function(){function t(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var e=t.prototype;return e.show=function(){var t=this,e=i.default.Event("show.bs.toast");if(i.default(this._element).trigger(e),!e.isDefaultPrevented()){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var n=function(){t._element.classList.remove(En),t._element.classList.add(yn),i.default(t._element).trigger("shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove(bn),u.reflow(this._element),this._element.classList.add(En),this._config.animation){var o=u.getTransitionDurationFromElement(this._element);i.default(this._element).one(u.TRANSITION_END,n).emulateTransitionEnd(o)}else n()}},e.hide=function(){if(this._element.classList.contains(yn)){var t=i.default.Event("hide.bs.toast");i.default(this._element).trigger(t),t.isDefaultPrevented()||this._close()}},e.dispose=function(){this._clearTimeout(),this._element.classList.contains(yn)&&this._element.classList.remove(yn),i.default(this._element).off(wn),i.default.removeData(this._element,_n),this._element=null,this._config=null},e._getConfig=function(t){return t=a({},Tn,i.default(this._element).data(),"object"==typeof t&&t?t:{}),u.typeCheckConfig("toast",t,this.constructor.DefaultType),t},e._setListeners=function(){var t=this;i.default(this._element).on(wn,'[data-dismiss="toast"]',(function(){return t.hide()}))},e._close=function(){var t=this,e=function(){t._element.classList.add(bn),i.default(t._element).trigger("hidden.bs.toast")};if(this._element.classList.remove(yn),this._config.animation){var n=u.getTransitionDurationFromElement(this._element);i.default(this._element).one(u.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},e._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data(_n);if(o||(o=new t(this,"object"==typeof e&&e),n.data(_n,o)),"string"==typeof e){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e](this)}}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.2"}},{key:"DefaultType",get:function(){return Cn}},{key:"Default",get:function(){return Tn}}]),t}();i.default.fn.toast=Sn._jQueryInterface,i.default.fn.toast.Constructor=Sn,i.default.fn.toast.noConflict=function(){return i.default.fn.toast=vn,Sn._jQueryInterface},t.Alert=c,t.Button=b,t.Carousel=O,t.Collapse=W,t.Dropdown=le,t.Modal=Se,t.Popover=Je,t.Scrollspy=ln,t.Tab=gn,t.Toast=Sn,t.Tooltip=Ve,t.Util=u,Object.defineProperty(t,"__esModule",{value:!0})})); \ No newline at end of file + * Bootstrap v4.6.2 (https://getbootstrap.com/) + * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!(function (t, e) { + "object" == typeof exports && "undefined" != typeof module + ? e(exports, require("jquery")) + : "function" == typeof define && define.amd + ? define(["exports", "jquery"], e) + : e( + ((t = + "undefined" != typeof globalThis + ? globalThis + : t || self).bootstrap = {}), + t.jQuery, + ); +})(this, function (t, e) { + "use strict"; + function n(t) { + return t && "object" == typeof t && "default" in t ? t : { default: t }; + } + var i = n(e); + function o(t, e) { + for (var n = 0; n < e.length; n++) { + var i = e[n]; + ((i.enumerable = i.enumerable || !1), + (i.configurable = !0), + "value" in i && (i.writable = !0), + Object.defineProperty(t, i.key, i)); + } + } + function r(t, e, n) { + return ( + e && o(t.prototype, e), + n && o(t, n), + Object.defineProperty(t, "prototype", { writable: !1 }), + t + ); + } + function a() { + return ( + (a = Object.assign + ? Object.assign.bind() + : function (t) { + for (var e = 1; e < arguments.length; e++) { + var n = arguments[e]; + for (var i in n) + Object.prototype.hasOwnProperty.call(n, i) && (t[i] = n[i]); + } + return t; + }), + a.apply(this, arguments) + ); + } + function s(t, e) { + return ( + (s = Object.setPrototypeOf + ? Object.setPrototypeOf.bind() + : function (t, e) { + return ((t.__proto__ = e), t); + }), + s(t, e) + ); + } + var l = "transitionend"; + var u = { + TRANSITION_END: "bsTransitionEnd", + getUID: function (t) { + do { + t += ~~(1e6 * Math.random()); + } while (document.getElementById(t)); + return t; + }, + getSelectorFromElement: function (t) { + var e = t.getAttribute("data-target"); + if (!e || "#" === e) { + var n = t.getAttribute("href"); + e = n && "#" !== n ? n.trim() : ""; + } + try { + return document.querySelector(e) ? e : null; + } catch (t) { + return null; + } + }, + getTransitionDurationFromElement: function (t) { + if (!t) return 0; + var e = i.default(t).css("transition-duration"), + n = i.default(t).css("transition-delay"), + o = parseFloat(e), + r = parseFloat(n); + return o || r + ? ((e = e.split(",")[0]), + (n = n.split(",")[0]), + 1e3 * (parseFloat(e) + parseFloat(n))) + : 0; + }, + reflow: function (t) { + return t.offsetHeight; + }, + triggerTransitionEnd: function (t) { + i.default(t).trigger(l); + }, + supportsTransitionEnd: function () { + return Boolean(l); + }, + isElement: function (t) { + return (t[0] || t).nodeType; + }, + typeCheckConfig: function (t, e, n) { + for (var i in n) + if (Object.prototype.hasOwnProperty.call(n, i)) { + var o = n[i], + r = e[i], + a = + r && u.isElement(r) + ? "element" + : null === (s = r) || "undefined" == typeof s + ? "" + s + : {}.toString + .call(s) + .match(/\s([a-z]+)/i)[1] + .toLowerCase(); + if (!new RegExp(o).test(a)) + throw new Error( + t.toUpperCase() + + ': Option "' + + i + + '" provided type "' + + a + + '" but expected type "' + + o + + '".', + ); + } + var s; + }, + findShadowRoot: function (t) { + if (!document.documentElement.attachShadow) return null; + if ("function" == typeof t.getRootNode) { + var e = t.getRootNode(); + return e instanceof ShadowRoot ? e : null; + } + return t instanceof ShadowRoot + ? t + : t.parentNode + ? u.findShadowRoot(t.parentNode) + : null; + }, + jQueryDetection: function () { + if ("undefined" == typeof i.default) + throw new TypeError( + "Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.", + ); + var t = i.default.fn.jquery.split(" ")[0].split("."); + if ( + (t[0] < 2 && t[1] < 9) || + (1 === t[0] && 9 === t[1] && t[2] < 1) || + t[0] >= 4 + ) + throw new Error( + "Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0", + ); + }, + }; + (u.jQueryDetection(), + (i.default.fn.emulateTransitionEnd = function (t) { + var e = this, + n = !1; + return ( + i.default(this).one(u.TRANSITION_END, function () { + n = !0; + }), + setTimeout(function () { + n || u.triggerTransitionEnd(e); + }, t), + this + ); + }), + (i.default.event.special[u.TRANSITION_END] = { + bindType: l, + delegateType: l, + handle: function (t) { + if (i.default(t.target).is(this)) + return t.handleObj.handler.apply(this, arguments); + }, + })); + var f = "bs.alert", + d = i.default.fn.alert, + c = (function () { + function t(t) { + this._element = t; + } + var e = t.prototype; + return ( + (e.close = function (t) { + var e = this._element; + (t && (e = this._getRootElement(t)), + this._triggerCloseEvent(e).isDefaultPrevented() || + this._removeElement(e)); + }), + (e.dispose = function () { + (i.default.removeData(this._element, f), (this._element = null)); + }), + (e._getRootElement = function (t) { + var e = u.getSelectorFromElement(t), + n = !1; + return ( + e && (n = document.querySelector(e)), + n || (n = i.default(t).closest(".alert")[0]), + n + ); + }), + (e._triggerCloseEvent = function (t) { + var e = i.default.Event("close.bs.alert"); + return (i.default(t).trigger(e), e); + }), + (e._removeElement = function (t) { + var e = this; + if ( + (i.default(t).removeClass("show"), i.default(t).hasClass("fade")) + ) { + var n = u.getTransitionDurationFromElement(t); + i.default(t) + .one(u.TRANSITION_END, function (n) { + return e._destroyElement(t, n); + }) + .emulateTransitionEnd(n); + } else this._destroyElement(t); + }), + (e._destroyElement = function (t) { + i.default(t).detach().trigger("closed.bs.alert").remove(); + }), + (t._jQueryInterface = function (e) { + return this.each(function () { + var n = i.default(this), + o = n.data(f); + (o || ((o = new t(this)), n.data(f, o)), + "close" === e && o[e](this)); + }); + }), + (t._handleDismiss = function (t) { + return function (e) { + (e && e.preventDefault(), t.close(this)); + }; + }), + r(t, null, [ + { + key: "VERSION", + get: function () { + return "4.6.2"; + }, + }, + ]), + t + ); + })(); + (i + .default(document) + .on( + "click.bs.alert.data-api", + '[data-dismiss="alert"]', + c._handleDismiss(new c()), + ), + (i.default.fn.alert = c._jQueryInterface), + (i.default.fn.alert.Constructor = c), + (i.default.fn.alert.noConflict = function () { + return ((i.default.fn.alert = d), c._jQueryInterface); + })); + var h = "bs.button", + p = i.default.fn.button, + m = "active", + g = '[data-toggle^="button"]', + _ = 'input:not([type="hidden"])', + v = ".btn", + b = (function () { + function t(t) { + ((this._element = t), (this.shouldAvoidTriggerChange = !1)); + } + var e = t.prototype; + return ( + (e.toggle = function () { + var t = !0, + e = !0, + n = i.default(this._element).closest('[data-toggle="buttons"]')[0]; + if (n) { + var o = this._element.querySelector(_); + if (o) { + if ("radio" === o.type) + if (o.checked && this._element.classList.contains(m)) t = !1; + else { + var r = n.querySelector(".active"); + r && i.default(r).removeClass(m); + } + (t && + (("checkbox" !== o.type && "radio" !== o.type) || + (o.checked = !this._element.classList.contains(m)), + this.shouldAvoidTriggerChange || + i.default(o).trigger("change")), + o.focus(), + (e = !1)); + } + } + this._element.hasAttribute("disabled") || + this._element.classList.contains("disabled") || + (e && + this._element.setAttribute( + "aria-pressed", + !this._element.classList.contains(m), + ), + t && i.default(this._element).toggleClass(m)); + }), + (e.dispose = function () { + (i.default.removeData(this._element, h), (this._element = null)); + }), + (t._jQueryInterface = function (e, n) { + return this.each(function () { + var o = i.default(this), + r = o.data(h); + (r || ((r = new t(this)), o.data(h, r)), + (r.shouldAvoidTriggerChange = n), + "toggle" === e && r[e]()); + }); + }), + r(t, null, [ + { + key: "VERSION", + get: function () { + return "4.6.2"; + }, + }, + ]), + t + ); + })(); + (i + .default(document) + .on("click.bs.button.data-api", g, function (t) { + var e = t.target, + n = e; + if ( + (i.default(e).hasClass("btn") || (e = i.default(e).closest(v)[0]), + !e || e.hasAttribute("disabled") || e.classList.contains("disabled")) + ) + t.preventDefault(); + else { + var o = e.querySelector(_); + if ( + o && + (o.hasAttribute("disabled") || o.classList.contains("disabled")) + ) + return void t.preventDefault(); + ("INPUT" !== n.tagName && "LABEL" === e.tagName) || + b._jQueryInterface.call( + i.default(e), + "toggle", + "INPUT" === n.tagName, + ); + } + }) + .on("focus.bs.button.data-api blur.bs.button.data-api", g, function (t) { + var e = i.default(t.target).closest(v)[0]; + i.default(e).toggleClass("focus", /^focus(in)?$/.test(t.type)); + }), + i.default(window).on("load.bs.button.data-api", function () { + for ( + var t = [].slice.call( + document.querySelectorAll('[data-toggle="buttons"] .btn'), + ), + e = 0, + n = t.length; + e < n; + e++ + ) { + var i = t[e], + o = i.querySelector(_); + o.checked || o.hasAttribute("checked") + ? i.classList.add(m) + : i.classList.remove(m); + } + for ( + var r = 0, + a = (t = [].slice.call( + document.querySelectorAll('[data-toggle="button"]'), + )).length; + r < a; + r++ + ) { + var s = t[r]; + "true" === s.getAttribute("aria-pressed") + ? s.classList.add(m) + : s.classList.remove(m); + } + }), + (i.default.fn.button = b._jQueryInterface), + (i.default.fn.button.Constructor = b), + (i.default.fn.button.noConflict = function () { + return ((i.default.fn.button = p), b._jQueryInterface); + })); + var y = "carousel", + E = "bs.carousel", + w = i.default.fn[y], + T = "active", + C = "next", + S = "prev", + N = "slid.bs.carousel", + D = ".active.carousel-item", + A = { + interval: 5e3, + keyboard: !0, + slide: !1, + pause: "hover", + wrap: !0, + touch: !0, + }, + k = { + interval: "(number|boolean)", + keyboard: "boolean", + slide: "(boolean|string)", + pause: "(string|boolean)", + wrap: "boolean", + touch: "boolean", + }, + I = { TOUCH: "touch", PEN: "pen" }, + O = (function () { + function t(t, e) { + ((this._items = null), + (this._interval = null), + (this._activeElement = null), + (this._isPaused = !1), + (this._isSliding = !1), + (this.touchTimeout = null), + (this.touchStartX = 0), + (this.touchDeltaX = 0), + (this._config = this._getConfig(e)), + (this._element = t), + (this._indicatorsElement = this._element.querySelector( + ".carousel-indicators", + )), + (this._touchSupported = + "ontouchstart" in document.documentElement || + navigator.maxTouchPoints > 0), + (this._pointerEvent = Boolean( + window.PointerEvent || window.MSPointerEvent, + )), + this._addEventListeners()); + } + var e = t.prototype; + return ( + (e.next = function () { + this._isSliding || this._slide(C); + }), + (e.nextWhenVisible = function () { + var t = i.default(this._element); + !document.hidden && + t.is(":visible") && + "hidden" !== t.css("visibility") && + this.next(); + }), + (e.prev = function () { + this._isSliding || this._slide(S); + }), + (e.pause = function (t) { + (t || (this._isPaused = !0), + this._element.querySelector( + ".carousel-item-next, .carousel-item-prev", + ) && (u.triggerTransitionEnd(this._element), this.cycle(!0)), + clearInterval(this._interval), + (this._interval = null)); + }), + (e.cycle = function (t) { + (t || (this._isPaused = !1), + this._interval && + (clearInterval(this._interval), (this._interval = null)), + this._config.interval && + !this._isPaused && + (this._updateInterval(), + (this._interval = setInterval( + (document.visibilityState + ? this.nextWhenVisible + : this.next + ).bind(this), + this._config.interval, + )))); + }), + (e.to = function (t) { + var e = this; + this._activeElement = this._element.querySelector(D); + var n = this._getItemIndex(this._activeElement); + if (!(t > this._items.length - 1 || t < 0)) + if (this._isSliding) + i.default(this._element).one(N, function () { + return e.to(t); + }); + else { + if (n === t) return (this.pause(), void this.cycle()); + var o = t > n ? C : S; + this._slide(o, this._items[t]); + } + }), + (e.dispose = function () { + (i.default(this._element).off(".bs.carousel"), + i.default.removeData(this._element, E), + (this._items = null), + (this._config = null), + (this._element = null), + (this._interval = null), + (this._isPaused = null), + (this._isSliding = null), + (this._activeElement = null), + (this._indicatorsElement = null)); + }), + (e._getConfig = function (t) { + return ((t = a({}, A, t)), u.typeCheckConfig(y, t, k), t); + }), + (e._handleSwipe = function () { + var t = Math.abs(this.touchDeltaX); + if (!(t <= 40)) { + var e = t / this.touchDeltaX; + ((this.touchDeltaX = 0), + e > 0 && this.prev(), + e < 0 && this.next()); + } + }), + (e._addEventListeners = function () { + var t = this; + (this._config.keyboard && + i.default(this._element).on("keydown.bs.carousel", function (e) { + return t._keydown(e); + }), + "hover" === this._config.pause && + i + .default(this._element) + .on("mouseenter.bs.carousel", function (e) { + return t.pause(e); + }) + .on("mouseleave.bs.carousel", function (e) { + return t.cycle(e); + }), + this._config.touch && this._addTouchEventListeners()); + }), + (e._addTouchEventListeners = function () { + var t = this; + if (this._touchSupported) { + var e = function (e) { + t._pointerEvent && I[e.originalEvent.pointerType.toUpperCase()] + ? (t.touchStartX = e.originalEvent.clientX) + : t._pointerEvent || + (t.touchStartX = e.originalEvent.touches[0].clientX); + }, + n = function (e) { + (t._pointerEvent && + I[e.originalEvent.pointerType.toUpperCase()] && + (t.touchDeltaX = e.originalEvent.clientX - t.touchStartX), + t._handleSwipe(), + "hover" === t._config.pause && + (t.pause(), + t.touchTimeout && clearTimeout(t.touchTimeout), + (t.touchTimeout = setTimeout(function (e) { + return t.cycle(e); + }, 500 + t._config.interval)))); + }; + (i + .default(this._element.querySelectorAll(".carousel-item img")) + .on("dragstart.bs.carousel", function (t) { + return t.preventDefault(); + }), + this._pointerEvent + ? (i + .default(this._element) + .on("pointerdown.bs.carousel", function (t) { + return e(t); + }), + i + .default(this._element) + .on("pointerup.bs.carousel", function (t) { + return n(t); + }), + this._element.classList.add("pointer-event")) + : (i + .default(this._element) + .on("touchstart.bs.carousel", function (t) { + return e(t); + }), + i + .default(this._element) + .on("touchmove.bs.carousel", function (e) { + return (function (e) { + t.touchDeltaX = + e.originalEvent.touches && + e.originalEvent.touches.length > 1 + ? 0 + : e.originalEvent.touches[0].clientX - + t.touchStartX; + })(e); + }), + i + .default(this._element) + .on("touchend.bs.carousel", function (t) { + return n(t); + }))); + } + }), + (e._keydown = function (t) { + if (!/input|textarea/i.test(t.target.tagName)) + switch (t.which) { + case 37: + (t.preventDefault(), this.prev()); + break; + case 39: + (t.preventDefault(), this.next()); + } + }), + (e._getItemIndex = function (t) { + return ( + (this._items = + t && t.parentNode + ? [].slice.call(t.parentNode.querySelectorAll(".carousel-item")) + : []), + this._items.indexOf(t) + ); + }), + (e._getItemByDirection = function (t, e) { + var n = t === C, + i = t === S, + o = this._getItemIndex(e), + r = this._items.length - 1; + if (((i && 0 === o) || (n && o === r)) && !this._config.wrap) + return e; + var a = (o + (t === S ? -1 : 1)) % this._items.length; + return -1 === a + ? this._items[this._items.length - 1] + : this._items[a]; + }), + (e._triggerSlideEvent = function (t, e) { + var n = this._getItemIndex(t), + o = this._getItemIndex(this._element.querySelector(D)), + r = i.default.Event("slide.bs.carousel", { + relatedTarget: t, + direction: e, + from: o, + to: n, + }); + return (i.default(this._element).trigger(r), r); + }), + (e._setActiveIndicatorElement = function (t) { + if (this._indicatorsElement) { + var e = [].slice.call( + this._indicatorsElement.querySelectorAll(".active"), + ); + i.default(e).removeClass(T); + var n = this._indicatorsElement.children[this._getItemIndex(t)]; + n && i.default(n).addClass(T); + } + }), + (e._updateInterval = function () { + var t = this._activeElement || this._element.querySelector(D); + if (t) { + var e = parseInt(t.getAttribute("data-interval"), 10); + e + ? ((this._config.defaultInterval = + this._config.defaultInterval || this._config.interval), + (this._config.interval = e)) + : (this._config.interval = + this._config.defaultInterval || this._config.interval); + } + }), + (e._slide = function (t, e) { + var n, + o, + r, + a = this, + s = this._element.querySelector(D), + l = this._getItemIndex(s), + f = e || (s && this._getItemByDirection(t, s)), + d = this._getItemIndex(f), + c = Boolean(this._interval); + if ( + (t === C + ? ((n = "carousel-item-left"), + (o = "carousel-item-next"), + (r = "left")) + : ((n = "carousel-item-right"), + (o = "carousel-item-prev"), + (r = "right")), + f && i.default(f).hasClass(T)) + ) + this._isSliding = !1; + else if ( + !this._triggerSlideEvent(f, r).isDefaultPrevented() && + s && + f + ) { + ((this._isSliding = !0), + c && this.pause(), + this._setActiveIndicatorElement(f), + (this._activeElement = f)); + var h = i.default.Event(N, { + relatedTarget: f, + direction: r, + from: l, + to: d, + }); + if (i.default(this._element).hasClass("slide")) { + (i.default(f).addClass(o), + u.reflow(f), + i.default(s).addClass(n), + i.default(f).addClass(n)); + var p = u.getTransitionDurationFromElement(s); + i.default(s) + .one(u.TRANSITION_END, function () { + (i + .default(f) + .removeClass(n + " " + o) + .addClass(T), + i.default(s).removeClass("active " + o + " " + n), + (a._isSliding = !1), + setTimeout(function () { + return i.default(a._element).trigger(h); + }, 0)); + }) + .emulateTransitionEnd(p); + } else + (i.default(s).removeClass(T), + i.default(f).addClass(T), + (this._isSliding = !1), + i.default(this._element).trigger(h)); + c && this.cycle(); + } + }), + (t._jQueryInterface = function (e) { + return this.each(function () { + var n = i.default(this).data(E), + o = a({}, A, i.default(this).data()); + "object" == typeof e && (o = a({}, o, e)); + var r = "string" == typeof e ? e : o.slide; + if ( + (n || ((n = new t(this, o)), i.default(this).data(E, n)), + "number" == typeof e) + ) + n.to(e); + else if ("string" == typeof r) { + if ("undefined" == typeof n[r]) + throw new TypeError('No method named "' + r + '"'); + n[r](); + } else o.interval && o.ride && (n.pause(), n.cycle()); + }); + }), + (t._dataApiClickHandler = function (e) { + var n = u.getSelectorFromElement(this); + if (n) { + var o = i.default(n)[0]; + if (o && i.default(o).hasClass("carousel")) { + var r = a({}, i.default(o).data(), i.default(this).data()), + s = this.getAttribute("data-slide-to"); + (s && (r.interval = !1), + t._jQueryInterface.call(i.default(o), r), + s && i.default(o).data(E).to(s), + e.preventDefault()); + } + } + }), + r(t, null, [ + { + key: "VERSION", + get: function () { + return "4.6.2"; + }, + }, + { + key: "Default", + get: function () { + return A; + }, + }, + ]), + t + ); + })(); + (i + .default(document) + .on( + "click.bs.carousel.data-api", + "[data-slide], [data-slide-to]", + O._dataApiClickHandler, + ), + i.default(window).on("load.bs.carousel.data-api", function () { + for ( + var t = [].slice.call( + document.querySelectorAll('[data-ride="carousel"]'), + ), + e = 0, + n = t.length; + e < n; + e++ + ) { + var o = i.default(t[e]); + O._jQueryInterface.call(o, o.data()); + } + }), + (i.default.fn[y] = O._jQueryInterface), + (i.default.fn[y].Constructor = O), + (i.default.fn[y].noConflict = function () { + return ((i.default.fn[y] = w), O._jQueryInterface); + })); + var x = "collapse", + j = "bs.collapse", + L = i.default.fn[x], + P = "show", + F = "collapse", + R = "collapsing", + B = "collapsed", + H = "width", + M = '[data-toggle="collapse"]', + q = { toggle: !0, parent: "" }, + Q = { toggle: "boolean", parent: "(string|element)" }, + W = (function () { + function t(t, e) { + ((this._isTransitioning = !1), + (this._element = t), + (this._config = this._getConfig(e)), + (this._triggerArray = [].slice.call( + document.querySelectorAll( + '[data-toggle="collapse"][href="#' + + t.id + + '"],[data-toggle="collapse"][data-target="#' + + t.id + + '"]', + ), + ))); + for ( + var n = [].slice.call(document.querySelectorAll(M)), + i = 0, + o = n.length; + i < o; + i++ + ) { + var r = n[i], + a = u.getSelectorFromElement(r), + s = [].slice + .call(document.querySelectorAll(a)) + .filter(function (e) { + return e === t; + }); + null !== a && + s.length > 0 && + ((this._selector = a), this._triggerArray.push(r)); + } + ((this._parent = this._config.parent ? this._getParent() : null), + this._config.parent || + this._addAriaAndCollapsedClass(this._element, this._triggerArray), + this._config.toggle && this.toggle()); + } + var e = t.prototype; + return ( + (e.toggle = function () { + i.default(this._element).hasClass(P) ? this.hide() : this.show(); + }), + (e.show = function () { + var e, + n, + o = this; + if ( + !( + this._isTransitioning || + i.default(this._element).hasClass(P) || + (this._parent && + 0 === + (e = [].slice + .call(this._parent.querySelectorAll(".show, .collapsing")) + .filter(function (t) { + return "string" == typeof o._config.parent + ? t.getAttribute("data-parent") === o._config.parent + : t.classList.contains(F); + })).length && + (e = null), + e && + (n = i.default(e).not(this._selector).data(j)) && + n._isTransitioning) + ) + ) { + var r = i.default.Event("show.bs.collapse"); + if ( + (i.default(this._element).trigger(r), !r.isDefaultPrevented()) + ) { + e && + (t._jQueryInterface.call( + i.default(e).not(this._selector), + "hide", + ), + n || i.default(e).data(j, null)); + var a = this._getDimension(); + (i.default(this._element).removeClass(F).addClass(R), + (this._element.style[a] = 0), + this._triggerArray.length && + i + .default(this._triggerArray) + .removeClass(B) + .attr("aria-expanded", !0), + this.setTransitioning(!0)); + var s = "scroll" + (a[0].toUpperCase() + a.slice(1)), + l = u.getTransitionDurationFromElement(this._element); + (i + .default(this._element) + .one(u.TRANSITION_END, function () { + (i + .default(o._element) + .removeClass(R) + .addClass("collapse show"), + (o._element.style[a] = ""), + o.setTransitioning(!1), + i.default(o._element).trigger("shown.bs.collapse")); + }) + .emulateTransitionEnd(l), + (this._element.style[a] = this._element[s] + "px")); + } + } + }), + (e.hide = function () { + var t = this; + if (!this._isTransitioning && i.default(this._element).hasClass(P)) { + var e = i.default.Event("hide.bs.collapse"); + if ( + (i.default(this._element).trigger(e), !e.isDefaultPrevented()) + ) { + var n = this._getDimension(); + ((this._element.style[n] = + this._element.getBoundingClientRect()[n] + "px"), + u.reflow(this._element), + i + .default(this._element) + .addClass(R) + .removeClass("collapse show")); + var o = this._triggerArray.length; + if (o > 0) + for (var r = 0; r < o; r++) { + var a = this._triggerArray[r], + s = u.getSelectorFromElement(a); + null !== s && + (i + .default([].slice.call(document.querySelectorAll(s))) + .hasClass(P) || + i.default(a).addClass(B).attr("aria-expanded", !1)); + } + (this.setTransitioning(!0), (this._element.style[n] = "")); + var l = u.getTransitionDurationFromElement(this._element); + i.default(this._element) + .one(u.TRANSITION_END, function () { + (t.setTransitioning(!1), + i + .default(t._element) + .removeClass(R) + .addClass(F) + .trigger("hidden.bs.collapse")); + }) + .emulateTransitionEnd(l); + } + } + }), + (e.setTransitioning = function (t) { + this._isTransitioning = t; + }), + (e.dispose = function () { + (i.default.removeData(this._element, j), + (this._config = null), + (this._parent = null), + (this._element = null), + (this._triggerArray = null), + (this._isTransitioning = null)); + }), + (e._getConfig = function (t) { + return ( + ((t = a({}, q, t)).toggle = Boolean(t.toggle)), + u.typeCheckConfig(x, t, Q), + t + ); + }), + (e._getDimension = function () { + return i.default(this._element).hasClass(H) ? H : "height"; + }), + (e._getParent = function () { + var e, + n = this; + u.isElement(this._config.parent) + ? ((e = this._config.parent), + "undefined" != typeof this._config.parent.jquery && + (e = this._config.parent[0])) + : (e = document.querySelector(this._config.parent)); + var o = + '[data-toggle="collapse"][data-parent="' + + this._config.parent + + '"]', + r = [].slice.call(e.querySelectorAll(o)); + return ( + i.default(r).each(function (e, i) { + n._addAriaAndCollapsedClass(t._getTargetFromElement(i), [i]); + }), + e + ); + }), + (e._addAriaAndCollapsedClass = function (t, e) { + var n = i.default(t).hasClass(P); + e.length && i.default(e).toggleClass(B, !n).attr("aria-expanded", n); + }), + (t._getTargetFromElement = function (t) { + var e = u.getSelectorFromElement(t); + return e ? document.querySelector(e) : null; + }), + (t._jQueryInterface = function (e) { + return this.each(function () { + var n = i.default(this), + o = n.data(j), + r = a({}, q, n.data(), "object" == typeof e && e ? e : {}); + if ( + (!o && + r.toggle && + "string" == typeof e && + /show|hide/.test(e) && + (r.toggle = !1), + o || ((o = new t(this, r)), n.data(j, o)), + "string" == typeof e) + ) { + if ("undefined" == typeof o[e]) + throw new TypeError('No method named "' + e + '"'); + o[e](); + } + }); + }), + r(t, null, [ + { + key: "VERSION", + get: function () { + return "4.6.2"; + }, + }, + { + key: "Default", + get: function () { + return q; + }, + }, + ]), + t + ); + })(); + (i.default(document).on("click.bs.collapse.data-api", M, function (t) { + "A" === t.currentTarget.tagName && t.preventDefault(); + var e = i.default(this), + n = u.getSelectorFromElement(this), + o = [].slice.call(document.querySelectorAll(n)); + i.default(o).each(function () { + var t = i.default(this), + n = t.data(j) ? "toggle" : e.data(); + W._jQueryInterface.call(t, n); + }); + }), + (i.default.fn[x] = W._jQueryInterface), + (i.default.fn[x].Constructor = W), + (i.default.fn[x].noConflict = function () { + return ((i.default.fn[x] = L), W._jQueryInterface); + })); + var U = + "undefined" != typeof window && + "undefined" != typeof document && + "undefined" != typeof navigator, + V = (function () { + for (var t = ["Edge", "Trident", "Firefox"], e = 0; e < t.length; e += 1) + if (U && navigator.userAgent.indexOf(t[e]) >= 0) return 1; + return 0; + })(), + Y = + U && window.Promise + ? function (t) { + var e = !1; + return function () { + e || + ((e = !0), + window.Promise.resolve().then(function () { + ((e = !1), t()); + })); + }; + } + : function (t) { + var e = !1; + return function () { + e || + ((e = !0), + setTimeout(function () { + ((e = !1), t()); + }, V)); + }; + }; + function z(t) { + return t && "[object Function]" === {}.toString.call(t); + } + function K(t, e) { + if (1 !== t.nodeType) return []; + var n = t.ownerDocument.defaultView.getComputedStyle(t, null); + return e ? n[e] : n; + } + function X(t) { + return "HTML" === t.nodeName ? t : t.parentNode || t.host; + } + function G(t) { + if (!t) return document.body; + switch (t.nodeName) { + case "HTML": + case "BODY": + return t.ownerDocument.body; + case "#document": + return t.body; + } + var e = K(t), + n = e.overflow, + i = e.overflowX, + o = e.overflowY; + return /(auto|scroll|overlay)/.test(n + o + i) ? t : G(X(t)); + } + function $(t) { + return t && t.referenceNode ? t.referenceNode : t; + } + var J = U && !(!window.MSInputMethodContext || !document.documentMode), + Z = U && /MSIE 10/.test(navigator.userAgent); + function tt(t) { + return 11 === t ? J : 10 === t ? Z : J || Z; + } + function et(t) { + if (!t) return document.documentElement; + for ( + var e = tt(10) ? document.body : null, n = t.offsetParent || null; + n === e && t.nextElementSibling; + ) + n = (t = t.nextElementSibling).offsetParent; + var i = n && n.nodeName; + return i && "BODY" !== i && "HTML" !== i + ? -1 !== ["TH", "TD", "TABLE"].indexOf(n.nodeName) && + "static" === K(n, "position") + ? et(n) + : n + : t + ? t.ownerDocument.documentElement + : document.documentElement; + } + function nt(t) { + return null !== t.parentNode ? nt(t.parentNode) : t; + } + function it(t, e) { + if (!(t && t.nodeType && e && e.nodeType)) return document.documentElement; + var n = t.compareDocumentPosition(e) & Node.DOCUMENT_POSITION_FOLLOWING, + i = n ? t : e, + o = n ? e : t, + r = document.createRange(); + (r.setStart(i, 0), r.setEnd(o, 0)); + var a, + s, + l = r.commonAncestorContainer; + if ((t !== l && e !== l) || i.contains(o)) + return "BODY" === (s = (a = l).nodeName) || + ("HTML" !== s && et(a.firstElementChild) !== a) + ? et(l) + : l; + var u = nt(t); + return u.host ? it(u.host, e) : it(t, nt(e).host); + } + function ot(t) { + var e = + arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "top", + n = "top" === e ? "scrollTop" : "scrollLeft", + i = t.nodeName; + if ("BODY" === i || "HTML" === i) { + var o = t.ownerDocument.documentElement, + r = t.ownerDocument.scrollingElement || o; + return r[n]; + } + return t[n]; + } + function rt(t, e) { + var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], + i = ot(e, "top"), + o = ot(e, "left"), + r = n ? -1 : 1; + return ( + (t.top += i * r), + (t.bottom += i * r), + (t.left += o * r), + (t.right += o * r), + t + ); + } + function at(t, e) { + var n = "x" === e ? "Left" : "Top", + i = "Left" === n ? "Right" : "Bottom"; + return ( + parseFloat(t["border" + n + "Width"]) + + parseFloat(t["border" + i + "Width"]) + ); + } + function st(t, e, n, i) { + return Math.max( + e["offset" + t], + e["scroll" + t], + n["client" + t], + n["offset" + t], + n["scroll" + t], + tt(10) + ? parseInt(n["offset" + t]) + + parseInt(i["margin" + ("Height" === t ? "Top" : "Left")]) + + parseInt(i["margin" + ("Height" === t ? "Bottom" : "Right")]) + : 0, + ); + } + function lt(t) { + var e = t.body, + n = t.documentElement, + i = tt(10) && getComputedStyle(n); + return { height: st("Height", e, n, i), width: st("Width", e, n, i) }; + } + var ut = function (t, e) { + if (!(t instanceof e)) + throw new TypeError("Cannot call a class as a function"); + }, + ft = (function () { + function t(t, e) { + for (var n = 0; n < e.length; n++) { + var i = e[n]; + ((i.enumerable = i.enumerable || !1), + (i.configurable = !0), + "value" in i && (i.writable = !0), + Object.defineProperty(t, i.key, i)); + } + } + return function (e, n, i) { + return (n && t(e.prototype, n), i && t(e, i), e); + }; + })(), + dt = function (t, e, n) { + return ( + e in t + ? Object.defineProperty(t, e, { + value: n, + enumerable: !0, + configurable: !0, + writable: !0, + }) + : (t[e] = n), + t + ); + }, + ct = + Object.assign || + function (t) { + for (var e = 1; e < arguments.length; e++) { + var n = arguments[e]; + for (var i in n) + Object.prototype.hasOwnProperty.call(n, i) && (t[i] = n[i]); + } + return t; + }; + function ht(t) { + return ct({}, t, { right: t.left + t.width, bottom: t.top + t.height }); + } + function pt(t) { + var e = {}; + try { + if (tt(10)) { + e = t.getBoundingClientRect(); + var n = ot(t, "top"), + i = ot(t, "left"); + ((e.top += n), (e.left += i), (e.bottom += n), (e.right += i)); + } else e = t.getBoundingClientRect(); + } catch (t) {} + var o = { + left: e.left, + top: e.top, + width: e.right - e.left, + height: e.bottom - e.top, + }, + r = "HTML" === t.nodeName ? lt(t.ownerDocument) : {}, + a = r.width || t.clientWidth || o.width, + s = r.height || t.clientHeight || o.height, + l = t.offsetWidth - a, + u = t.offsetHeight - s; + if (l || u) { + var f = K(t); + ((l -= at(f, "x")), (u -= at(f, "y")), (o.width -= l), (o.height -= u)); + } + return ht(o); + } + function mt(t, e) { + var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], + i = tt(10), + o = "HTML" === e.nodeName, + r = pt(t), + a = pt(e), + s = G(t), + l = K(e), + u = parseFloat(l.borderTopWidth), + f = parseFloat(l.borderLeftWidth); + n && o && ((a.top = Math.max(a.top, 0)), (a.left = Math.max(a.left, 0))); + var d = ht({ + top: r.top - a.top - u, + left: r.left - a.left - f, + width: r.width, + height: r.height, + }); + if (((d.marginTop = 0), (d.marginLeft = 0), !i && o)) { + var c = parseFloat(l.marginTop), + h = parseFloat(l.marginLeft); + ((d.top -= u - c), + (d.bottom -= u - c), + (d.left -= f - h), + (d.right -= f - h), + (d.marginTop = c), + (d.marginLeft = h)); + } + return ( + (i && !n ? e.contains(s) : e === s && "BODY" !== s.nodeName) && + (d = rt(d, e)), + d + ); + } + function gt(t) { + var e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], + n = t.ownerDocument.documentElement, + i = mt(t, n), + o = Math.max(n.clientWidth, window.innerWidth || 0), + r = Math.max(n.clientHeight, window.innerHeight || 0), + a = e ? 0 : ot(n), + s = e ? 0 : ot(n, "left"), + l = { + top: a - i.top + i.marginTop, + left: s - i.left + i.marginLeft, + width: o, + height: r, + }; + return ht(l); + } + function _t(t) { + var e = t.nodeName; + if ("BODY" === e || "HTML" === e) return !1; + if ("fixed" === K(t, "position")) return !0; + var n = X(t); + return !!n && _t(n); + } + function vt(t) { + if (!t || !t.parentElement || tt()) return document.documentElement; + for (var e = t.parentElement; e && "none" === K(e, "transform"); ) + e = e.parentElement; + return e || document.documentElement; + } + function bt(t, e, n, i) { + var o = arguments.length > 4 && void 0 !== arguments[4] && arguments[4], + r = { top: 0, left: 0 }, + a = o ? vt(t) : it(t, $(e)); + if ("viewport" === i) r = gt(a, o); + else { + var s = void 0; + "scrollParent" === i + ? "BODY" === (s = G(X(e))).nodeName && + (s = t.ownerDocument.documentElement) + : (s = "window" === i ? t.ownerDocument.documentElement : i); + var l = mt(s, a, o); + if ("HTML" !== s.nodeName || _t(a)) r = l; + else { + var u = lt(t.ownerDocument), + f = u.height, + d = u.width; + ((r.top += l.top - l.marginTop), + (r.bottom = f + l.top), + (r.left += l.left - l.marginLeft), + (r.right = d + l.left)); + } + } + var c = "number" == typeof (n = n || 0); + return ( + (r.left += c ? n : n.left || 0), + (r.top += c ? n : n.top || 0), + (r.right -= c ? n : n.right || 0), + (r.bottom -= c ? n : n.bottom || 0), + r + ); + } + function yt(t) { + return t.width * t.height; + } + function Et(t, e, n, i, o) { + var r = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : 0; + if (-1 === t.indexOf("auto")) return t; + var a = bt(n, i, r, o), + s = { + top: { width: a.width, height: e.top - a.top }, + right: { width: a.right - e.right, height: a.height }, + bottom: { width: a.width, height: a.bottom - e.bottom }, + left: { width: e.left - a.left, height: a.height }, + }, + l = Object.keys(s) + .map(function (t) { + return ct({ key: t }, s[t], { area: yt(s[t]) }); + }) + .sort(function (t, e) { + return e.area - t.area; + }), + u = l.filter(function (t) { + var e = t.width, + i = t.height; + return e >= n.clientWidth && i >= n.clientHeight; + }), + f = u.length > 0 ? u[0].key : l[0].key, + d = t.split("-")[1]; + return f + (d ? "-" + d : ""); + } + function wt(t, e, n) { + var i = + arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : null, + o = i ? vt(e) : it(e, $(n)); + return mt(n, o, i); + } + function Tt(t) { + var e = t.ownerDocument.defaultView.getComputedStyle(t), + n = parseFloat(e.marginTop || 0) + parseFloat(e.marginBottom || 0), + i = parseFloat(e.marginLeft || 0) + parseFloat(e.marginRight || 0); + return { width: t.offsetWidth + i, height: t.offsetHeight + n }; + } + function Ct(t) { + var e = { left: "right", right: "left", bottom: "top", top: "bottom" }; + return t.replace(/left|right|bottom|top/g, function (t) { + return e[t]; + }); + } + function St(t, e, n) { + n = n.split("-")[0]; + var i = Tt(t), + o = { width: i.width, height: i.height }, + r = -1 !== ["right", "left"].indexOf(n), + a = r ? "top" : "left", + s = r ? "left" : "top", + l = r ? "height" : "width", + u = r ? "width" : "height"; + return ( + (o[a] = e[a] + e[l] / 2 - i[l] / 2), + (o[s] = n === s ? e[s] - i[u] : e[Ct(s)]), + o + ); + } + function Nt(t, e) { + return Array.prototype.find ? t.find(e) : t.filter(e)[0]; + } + function Dt(t, e, n) { + return ( + (void 0 === n + ? t + : t.slice( + 0, + (function (t, e, n) { + if (Array.prototype.findIndex) + return t.findIndex(function (t) { + return t.name === n; + }); + var i = Nt(t, function (t) { + return t.name === n; + }); + return t.indexOf(i); + })(t, 0, n), + ) + ).forEach(function (t) { + t.function && + console.warn("`modifier.function` is deprecated, use `modifier.fn`!"); + var n = t.function || t.fn; + t.enabled && + z(n) && + ((e.offsets.popper = ht(e.offsets.popper)), + (e.offsets.reference = ht(e.offsets.reference)), + (e = n(e, t))); + }), + e + ); + } + function At() { + if (!this.state.isDestroyed) { + var t = { + instance: this, + styles: {}, + arrowStyles: {}, + attributes: {}, + flipped: !1, + offsets: {}, + }; + ((t.offsets.reference = wt( + this.state, + this.popper, + this.reference, + this.options.positionFixed, + )), + (t.placement = Et( + this.options.placement, + t.offsets.reference, + this.popper, + this.reference, + this.options.modifiers.flip.boundariesElement, + this.options.modifiers.flip.padding, + )), + (t.originalPlacement = t.placement), + (t.positionFixed = this.options.positionFixed), + (t.offsets.popper = St(this.popper, t.offsets.reference, t.placement)), + (t.offsets.popper.position = this.options.positionFixed + ? "fixed" + : "absolute"), + (t = Dt(this.modifiers, t)), + this.state.isCreated + ? this.options.onUpdate(t) + : ((this.state.isCreated = !0), this.options.onCreate(t))); + } + } + function kt(t, e) { + return t.some(function (t) { + var n = t.name; + return t.enabled && n === e; + }); + } + function It(t) { + for ( + var e = [!1, "ms", "Webkit", "Moz", "O"], + n = t.charAt(0).toUpperCase() + t.slice(1), + i = 0; + i < e.length; + i++ + ) { + var o = e[i], + r = o ? "" + o + n : t; + if ("undefined" != typeof document.body.style[r]) return r; + } + return null; + } + function Ot() { + return ( + (this.state.isDestroyed = !0), + kt(this.modifiers, "applyStyle") && + (this.popper.removeAttribute("x-placement"), + (this.popper.style.position = ""), + (this.popper.style.top = ""), + (this.popper.style.left = ""), + (this.popper.style.right = ""), + (this.popper.style.bottom = ""), + (this.popper.style.willChange = ""), + (this.popper.style[It("transform")] = "")), + this.disableEventListeners(), + this.options.removeOnDestroy && + this.popper.parentNode.removeChild(this.popper), + this + ); + } + function xt(t) { + var e = t.ownerDocument; + return e ? e.defaultView : window; + } + function jt(t, e, n, i) { + var o = "BODY" === t.nodeName, + r = o ? t.ownerDocument.defaultView : t; + (r.addEventListener(e, n, { passive: !0 }), + o || jt(G(r.parentNode), e, n, i), + i.push(r)); + } + function Lt(t, e, n, i) { + ((n.updateBound = i), + xt(t).addEventListener("resize", n.updateBound, { passive: !0 })); + var o = G(t); + return ( + jt(o, "scroll", n.updateBound, n.scrollParents), + (n.scrollElement = o), + (n.eventsEnabled = !0), + n + ); + } + function Pt() { + this.state.eventsEnabled || + (this.state = Lt( + this.reference, + this.options, + this.state, + this.scheduleUpdate, + )); + } + function Ft() { + var t, e; + this.state.eventsEnabled && + (cancelAnimationFrame(this.scheduleUpdate), + (this.state = + ((t = this.reference), + (e = this.state), + xt(t).removeEventListener("resize", e.updateBound), + e.scrollParents.forEach(function (t) { + t.removeEventListener("scroll", e.updateBound); + }), + (e.updateBound = null), + (e.scrollParents = []), + (e.scrollElement = null), + (e.eventsEnabled = !1), + e))); + } + function Rt(t) { + return "" !== t && !isNaN(parseFloat(t)) && isFinite(t); + } + function Bt(t, e) { + Object.keys(e).forEach(function (n) { + var i = ""; + (-1 !== + ["width", "height", "top", "right", "bottom", "left"].indexOf(n) && + Rt(e[n]) && + (i = "px"), + (t.style[n] = e[n] + i)); + }); + } + var Ht = U && /Firefox/i.test(navigator.userAgent); + function Mt(t, e, n) { + var i = Nt(t, function (t) { + return t.name === e; + }), + o = + !!i && + t.some(function (t) { + return t.name === n && t.enabled && t.order < i.order; + }); + if (!o) { + var r = "`" + e + "`", + a = "`" + n + "`"; + console.warn( + a + + " modifier is required by " + + r + + " modifier in order to work, be sure to include it before " + + r + + "!", + ); + } + return o; + } + var qt = [ + "auto-start", + "auto", + "auto-end", + "top-start", + "top", + "top-end", + "right-start", + "right", + "right-end", + "bottom-end", + "bottom", + "bottom-start", + "left-end", + "left", + "left-start", + ], + Qt = qt.slice(3); + function Wt(t) { + var e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], + n = Qt.indexOf(t), + i = Qt.slice(n + 1).concat(Qt.slice(0, n)); + return e ? i.reverse() : i; + } + var Ut = { + placement: "bottom", + positionFixed: !1, + eventsEnabled: !0, + removeOnDestroy: !1, + onCreate: function () {}, + onUpdate: function () {}, + modifiers: { + shift: { + order: 100, + enabled: !0, + fn: function (t) { + var e = t.placement, + n = e.split("-")[0], + i = e.split("-")[1]; + if (i) { + var o = t.offsets, + r = o.reference, + a = o.popper, + s = -1 !== ["bottom", "top"].indexOf(n), + l = s ? "left" : "top", + u = s ? "width" : "height", + f = { + start: dt({}, l, r[l]), + end: dt({}, l, r[l] + r[u] - a[u]), + }; + t.offsets.popper = ct({}, a, f[i]); + } + return t; + }, + }, + offset: { + order: 200, + enabled: !0, + fn: function (t, e) { + var n, + i = e.offset, + o = t.placement, + r = t.offsets, + a = r.popper, + s = r.reference, + l = o.split("-")[0]; + return ( + (n = Rt(+i) + ? [+i, 0] + : (function (t, e, n, i) { + var o = [0, 0], + r = -1 !== ["right", "left"].indexOf(i), + a = t.split(/(\+|\-)/).map(function (t) { + return t.trim(); + }), + s = a.indexOf( + Nt(a, function (t) { + return -1 !== t.search(/,|\s/); + }), + ); + a[s] && + -1 === a[s].indexOf(",") && + console.warn( + "Offsets separated by white space(s) are deprecated, use a comma (,) instead.", + ); + var l = /\s*,\s*|\s+/, + u = + -1 !== s + ? [ + a.slice(0, s).concat([a[s].split(l)[0]]), + [a[s].split(l)[1]].concat(a.slice(s + 1)), + ] + : [a]; + return ( + (u = u.map(function (t, i) { + var o = (1 === i ? !r : r) ? "height" : "width", + a = !1; + return t + .reduce(function (t, e) { + return "" === t[t.length - 1] && + -1 !== ["+", "-"].indexOf(e) + ? ((t[t.length - 1] = e), (a = !0), t) + : a + ? ((t[t.length - 1] += e), (a = !1), t) + : t.concat(e); + }, []) + .map(function (t) { + return (function (t, e, n, i) { + var o = t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/), + r = +o[1], + a = o[2]; + return r + ? 0 === a.indexOf("%") + ? (ht("%p" === a ? n : i)[e] / 100) * r + : "vh" === a || "vw" === a + ? (("vh" === a + ? Math.max( + document.documentElement + .clientHeight, + window.innerHeight || 0, + ) + : Math.max( + document.documentElement + .clientWidth, + window.innerWidth || 0, + )) / + 100) * + r + : r + : t; + })(t, o, e, n); + }); + })), + u.forEach(function (t, e) { + t.forEach(function (n, i) { + Rt(n) && (o[e] += n * ("-" === t[i - 1] ? -1 : 1)); + }); + }), + o + ); + })(i, a, s, l)), + "left" === l + ? ((a.top += n[0]), (a.left -= n[1])) + : "right" === l + ? ((a.top += n[0]), (a.left += n[1])) + : "top" === l + ? ((a.left += n[0]), (a.top -= n[1])) + : "bottom" === l && ((a.left += n[0]), (a.top += n[1])), + (t.popper = a), + t + ); + }, + offset: 0, + }, + preventOverflow: { + order: 300, + enabled: !0, + fn: function (t, e) { + var n = e.boundariesElement || et(t.instance.popper); + t.instance.reference === n && (n = et(n)); + var i = It("transform"), + o = t.instance.popper.style, + r = o.top, + a = o.left, + s = o[i]; + ((o.top = ""), (o.left = ""), (o[i] = "")); + var l = bt( + t.instance.popper, + t.instance.reference, + e.padding, + n, + t.positionFixed, + ); + ((o.top = r), (o.left = a), (o[i] = s), (e.boundaries = l)); + var u = e.priority, + f = t.offsets.popper, + d = { + primary: function (t) { + var n = f[t]; + return ( + f[t] < l[t] && + !e.escapeWithReference && + (n = Math.max(f[t], l[t])), + dt({}, t, n) + ); + }, + secondary: function (t) { + var n = "right" === t ? "left" : "top", + i = f[n]; + return ( + f[t] > l[t] && + !e.escapeWithReference && + (i = Math.min( + f[n], + l[t] - ("right" === t ? f.width : f.height), + )), + dt({}, n, i) + ); + }, + }; + return ( + u.forEach(function (t) { + var e = + -1 !== ["left", "top"].indexOf(t) ? "primary" : "secondary"; + f = ct({}, f, d[e](t)); + }), + (t.offsets.popper = f), + t + ); + }, + priority: ["left", "right", "top", "bottom"], + padding: 5, + boundariesElement: "scrollParent", + }, + keepTogether: { + order: 400, + enabled: !0, + fn: function (t) { + var e = t.offsets, + n = e.popper, + i = e.reference, + o = t.placement.split("-")[0], + r = Math.floor, + a = -1 !== ["top", "bottom"].indexOf(o), + s = a ? "right" : "bottom", + l = a ? "left" : "top", + u = a ? "width" : "height"; + return ( + n[s] < r(i[l]) && (t.offsets.popper[l] = r(i[l]) - n[u]), + n[l] > r(i[s]) && (t.offsets.popper[l] = r(i[s])), + t + ); + }, + }, + arrow: { + order: 500, + enabled: !0, + fn: function (t, e) { + var n; + if (!Mt(t.instance.modifiers, "arrow", "keepTogether")) return t; + var i = e.element; + if ("string" == typeof i) { + if (!(i = t.instance.popper.querySelector(i))) return t; + } else if (!t.instance.popper.contains(i)) + return ( + console.warn( + "WARNING: `arrow.element` must be child of its popper element!", + ), + t + ); + var o = t.placement.split("-")[0], + r = t.offsets, + a = r.popper, + s = r.reference, + l = -1 !== ["left", "right"].indexOf(o), + u = l ? "height" : "width", + f = l ? "Top" : "Left", + d = f.toLowerCase(), + c = l ? "left" : "top", + h = l ? "bottom" : "right", + p = Tt(i)[u]; + (s[h] - p < a[d] && (t.offsets.popper[d] -= a[d] - (s[h] - p)), + s[d] + p > a[h] && (t.offsets.popper[d] += s[d] + p - a[h]), + (t.offsets.popper = ht(t.offsets.popper))); + var m = s[d] + s[u] / 2 - p / 2, + g = K(t.instance.popper), + _ = parseFloat(g["margin" + f]), + v = parseFloat(g["border" + f + "Width"]), + b = m - t.offsets.popper[d] - _ - v; + return ( + (b = Math.max(Math.min(a[u] - p, b), 0)), + (t.arrowElement = i), + (t.offsets.arrow = + (dt((n = {}), d, Math.round(b)), dt(n, c, ""), n)), + t + ); + }, + element: "[x-arrow]", + }, + flip: { + order: 600, + enabled: !0, + fn: function (t, e) { + if (kt(t.instance.modifiers, "inner")) return t; + if (t.flipped && t.placement === t.originalPlacement) return t; + var n = bt( + t.instance.popper, + t.instance.reference, + e.padding, + e.boundariesElement, + t.positionFixed, + ), + i = t.placement.split("-")[0], + o = Ct(i), + r = t.placement.split("-")[1] || "", + a = []; + switch (e.behavior) { + case "flip": + a = [i, o]; + break; + case "clockwise": + a = Wt(i); + break; + case "counterclockwise": + a = Wt(i, !0); + break; + default: + a = e.behavior; + } + return ( + a.forEach(function (s, l) { + if (i !== s || a.length === l + 1) return t; + ((i = t.placement.split("-")[0]), (o = Ct(i))); + var u = t.offsets.popper, + f = t.offsets.reference, + d = Math.floor, + c = + ("left" === i && d(u.right) > d(f.left)) || + ("right" === i && d(u.left) < d(f.right)) || + ("top" === i && d(u.bottom) > d(f.top)) || + ("bottom" === i && d(u.top) < d(f.bottom)), + h = d(u.left) < d(n.left), + p = d(u.right) > d(n.right), + m = d(u.top) < d(n.top), + g = d(u.bottom) > d(n.bottom), + _ = + ("left" === i && h) || + ("right" === i && p) || + ("top" === i && m) || + ("bottom" === i && g), + v = -1 !== ["top", "bottom"].indexOf(i), + b = + !!e.flipVariations && + ((v && "start" === r && h) || + (v && "end" === r && p) || + (!v && "start" === r && m) || + (!v && "end" === r && g)), + y = + !!e.flipVariationsByContent && + ((v && "start" === r && p) || + (v && "end" === r && h) || + (!v && "start" === r && g) || + (!v && "end" === r && m)), + E = b || y; + (c || _ || E) && + ((t.flipped = !0), + (c || _) && (i = a[l + 1]), + E && + (r = (function (t) { + return "end" === t ? "start" : "start" === t ? "end" : t; + })(r)), + (t.placement = i + (r ? "-" + r : "")), + (t.offsets.popper = ct( + {}, + t.offsets.popper, + St(t.instance.popper, t.offsets.reference, t.placement), + )), + (t = Dt(t.instance.modifiers, t, "flip"))); + }), + t + ); + }, + behavior: "flip", + padding: 5, + boundariesElement: "viewport", + flipVariations: !1, + flipVariationsByContent: !1, + }, + inner: { + order: 700, + enabled: !1, + fn: function (t) { + var e = t.placement, + n = e.split("-")[0], + i = t.offsets, + o = i.popper, + r = i.reference, + a = -1 !== ["left", "right"].indexOf(n), + s = -1 === ["top", "left"].indexOf(n); + return ( + (o[a ? "left" : "top"] = + r[n] - (s ? o[a ? "width" : "height"] : 0)), + (t.placement = Ct(e)), + (t.offsets.popper = ht(o)), + t + ); + }, + }, + hide: { + order: 800, + enabled: !0, + fn: function (t) { + if (!Mt(t.instance.modifiers, "hide", "preventOverflow")) return t; + var e = t.offsets.reference, + n = Nt(t.instance.modifiers, function (t) { + return "preventOverflow" === t.name; + }).boundaries; + if ( + e.bottom < n.top || + e.left > n.right || + e.top > n.bottom || + e.right < n.left + ) { + if (!0 === t.hide) return t; + ((t.hide = !0), (t.attributes["x-out-of-boundaries"] = "")); + } else { + if (!1 === t.hide) return t; + ((t.hide = !1), (t.attributes["x-out-of-boundaries"] = !1)); + } + return t; + }, + }, + computeStyle: { + order: 850, + enabled: !0, + fn: function (t, e) { + var n = e.x, + i = e.y, + o = t.offsets.popper, + r = Nt(t.instance.modifiers, function (t) { + return "applyStyle" === t.name; + }).gpuAcceleration; + void 0 !== r && + console.warn( + "WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!", + ); + var a, + s, + l = void 0 !== r ? r : e.gpuAcceleration, + u = et(t.instance.popper), + f = pt(u), + d = { position: o.position }, + c = (function (t, e) { + var n = t.offsets, + i = n.popper, + o = n.reference, + r = Math.round, + a = Math.floor, + s = function (t) { + return t; + }, + l = r(o.width), + u = r(i.width), + f = -1 !== ["left", "right"].indexOf(t.placement), + d = -1 !== t.placement.indexOf("-"), + c = e ? (f || d || l % 2 == u % 2 ? r : a) : s, + h = e ? r : s; + return { + left: c( + l % 2 == 1 && u % 2 == 1 && !d && e ? i.left - 1 : i.left, + ), + top: h(i.top), + bottom: h(i.bottom), + right: c(i.right), + }; + })(t, window.devicePixelRatio < 2 || !Ht), + h = "bottom" === n ? "top" : "bottom", + p = "right" === i ? "left" : "right", + m = It("transform"); + if ( + ((s = + "bottom" === h + ? "HTML" === u.nodeName + ? -u.clientHeight + c.bottom + : -f.height + c.bottom + : c.top), + (a = + "right" === p + ? "HTML" === u.nodeName + ? -u.clientWidth + c.right + : -f.width + c.right + : c.left), + l && m) + ) + ((d[m] = "translate3d(" + a + "px, " + s + "px, 0)"), + (d[h] = 0), + (d[p] = 0), + (d.willChange = "transform")); + else { + var g = "bottom" === h ? -1 : 1, + _ = "right" === p ? -1 : 1; + ((d[h] = s * g), (d[p] = a * _), (d.willChange = h + ", " + p)); + } + var v = { "x-placement": t.placement }; + return ( + (t.attributes = ct({}, v, t.attributes)), + (t.styles = ct({}, d, t.styles)), + (t.arrowStyles = ct({}, t.offsets.arrow, t.arrowStyles)), + t + ); + }, + gpuAcceleration: !0, + x: "bottom", + y: "right", + }, + applyStyle: { + order: 900, + enabled: !0, + fn: function (t) { + var e, n; + return ( + Bt(t.instance.popper, t.styles), + (e = t.instance.popper), + (n = t.attributes), + Object.keys(n).forEach(function (t) { + !1 !== n[t] ? e.setAttribute(t, n[t]) : e.removeAttribute(t); + }), + t.arrowElement && + Object.keys(t.arrowStyles).length && + Bt(t.arrowElement, t.arrowStyles), + t + ); + }, + onLoad: function (t, e, n, i, o) { + var r = wt(o, e, t, n.positionFixed), + a = Et( + n.placement, + r, + e, + t, + n.modifiers.flip.boundariesElement, + n.modifiers.flip.padding, + ); + return ( + e.setAttribute("x-placement", a), + Bt(e, { position: n.positionFixed ? "fixed" : "absolute" }), + n + ); + }, + gpuAcceleration: void 0, + }, + }, + }, + Vt = (function () { + function t(e, n) { + var i = this, + o = + arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; + (ut(this, t), + (this.scheduleUpdate = function () { + return requestAnimationFrame(i.update); + }), + (this.update = Y(this.update.bind(this))), + (this.options = ct({}, t.Defaults, o)), + (this.state = { isDestroyed: !1, isCreated: !1, scrollParents: [] }), + (this.reference = e && e.jquery ? e[0] : e), + (this.popper = n && n.jquery ? n[0] : n), + (this.options.modifiers = {}), + Object.keys(ct({}, t.Defaults.modifiers, o.modifiers)).forEach( + function (e) { + i.options.modifiers[e] = ct( + {}, + t.Defaults.modifiers[e] || {}, + o.modifiers ? o.modifiers[e] : {}, + ); + }, + ), + (this.modifiers = Object.keys(this.options.modifiers) + .map(function (t) { + return ct({ name: t }, i.options.modifiers[t]); + }) + .sort(function (t, e) { + return t.order - e.order; + })), + this.modifiers.forEach(function (t) { + t.enabled && + z(t.onLoad) && + t.onLoad(i.reference, i.popper, i.options, t, i.state); + }), + this.update()); + var r = this.options.eventsEnabled; + (r && this.enableEventListeners(), (this.state.eventsEnabled = r)); + } + return ( + ft(t, [ + { + key: "update", + value: function () { + return At.call(this); + }, + }, + { + key: "destroy", + value: function () { + return Ot.call(this); + }, + }, + { + key: "enableEventListeners", + value: function () { + return Pt.call(this); + }, + }, + { + key: "disableEventListeners", + value: function () { + return Ft.call(this); + }, + }, + ]), + t + ); + })(); + ((Vt.Utils = ("undefined" != typeof window ? window : global).PopperUtils), + (Vt.placements = qt), + (Vt.Defaults = Ut)); + var Yt = Vt, + zt = "dropdown", + Kt = "bs.dropdown", + Xt = i.default.fn[zt], + Gt = new RegExp("38|40|27"), + $t = "disabled", + Jt = "show", + Zt = "dropdown-menu-right", + te = "hide.bs.dropdown", + ee = "hidden.bs.dropdown", + ne = "click.bs.dropdown.data-api", + ie = "keydown.bs.dropdown.data-api", + oe = '[data-toggle="dropdown"]', + re = ".dropdown-menu", + ae = { + offset: 0, + flip: !0, + boundary: "scrollParent", + reference: "toggle", + display: "dynamic", + popperConfig: null, + }, + se = { + offset: "(number|string|function)", + flip: "boolean", + boundary: "(string|element)", + reference: "(string|element)", + display: "string", + popperConfig: "(null|object)", + }, + le = (function () { + function t(t, e) { + ((this._element = t), + (this._popper = null), + (this._config = this._getConfig(e)), + (this._menu = this._getMenuElement()), + (this._inNavbar = this._detectNavbar()), + this._addEventListeners()); + } + var e = t.prototype; + return ( + (e.toggle = function () { + if ( + !this._element.disabled && + !i.default(this._element).hasClass($t) + ) { + var e = i.default(this._menu).hasClass(Jt); + (t._clearMenus(), e || this.show(!0)); + } + }), + (e.show = function (e) { + if ( + (void 0 === e && (e = !1), + !( + this._element.disabled || + i.default(this._element).hasClass($t) || + i.default(this._menu).hasClass(Jt) + )) + ) { + var n = { relatedTarget: this._element }, + o = i.default.Event("show.bs.dropdown", n), + r = t._getParentFromElement(this._element); + if ((i.default(r).trigger(o), !o.isDefaultPrevented())) { + if (!this._inNavbar && e) { + if ("undefined" == typeof Yt) + throw new TypeError( + "Bootstrap's dropdowns require Popper (https://popper.js.org)", + ); + var a = this._element; + ("parent" === this._config.reference + ? (a = r) + : u.isElement(this._config.reference) && + ((a = this._config.reference), + "undefined" != typeof this._config.reference.jquery && + (a = this._config.reference[0])), + "scrollParent" !== this._config.boundary && + i.default(r).addClass("position-static"), + (this._popper = new Yt( + a, + this._menu, + this._getPopperConfig(), + ))); + } + ("ontouchstart" in document.documentElement && + 0 === i.default(r).closest(".navbar-nav").length && + i + .default(document.body) + .children() + .on("mouseover", null, i.default.noop), + this._element.focus(), + this._element.setAttribute("aria-expanded", !0), + i.default(this._menu).toggleClass(Jt), + i + .default(r) + .toggleClass(Jt) + .trigger(i.default.Event("shown.bs.dropdown", n))); + } + } + }), + (e.hide = function () { + if ( + !this._element.disabled && + !i.default(this._element).hasClass($t) && + i.default(this._menu).hasClass(Jt) + ) { + var e = { relatedTarget: this._element }, + n = i.default.Event(te, e), + o = t._getParentFromElement(this._element); + (i.default(o).trigger(n), + n.isDefaultPrevented() || + (this._popper && this._popper.destroy(), + i.default(this._menu).toggleClass(Jt), + i.default(o).toggleClass(Jt).trigger(i.default.Event(ee, e)))); + } + }), + (e.dispose = function () { + (i.default.removeData(this._element, Kt), + i.default(this._element).off(".bs.dropdown"), + (this._element = null), + (this._menu = null), + null !== this._popper && + (this._popper.destroy(), (this._popper = null))); + }), + (e.update = function () { + ((this._inNavbar = this._detectNavbar()), + null !== this._popper && this._popper.scheduleUpdate()); + }), + (e._addEventListeners = function () { + var t = this; + i.default(this._element).on("click.bs.dropdown", function (e) { + (e.preventDefault(), e.stopPropagation(), t.toggle()); + }); + }), + (e._getConfig = function (t) { + return ( + (t = a( + {}, + this.constructor.Default, + i.default(this._element).data(), + t, + )), + u.typeCheckConfig(zt, t, this.constructor.DefaultType), + t + ); + }), + (e._getMenuElement = function () { + if (!this._menu) { + var e = t._getParentFromElement(this._element); + e && (this._menu = e.querySelector(re)); + } + return this._menu; + }), + (e._getPlacement = function () { + var t = i.default(this._element.parentNode), + e = "bottom-start"; + return ( + t.hasClass("dropup") + ? (e = i.default(this._menu).hasClass(Zt) + ? "top-end" + : "top-start") + : t.hasClass("dropright") + ? (e = "right-start") + : t.hasClass("dropleft") + ? (e = "left-start") + : i.default(this._menu).hasClass(Zt) && (e = "bottom-end"), + e + ); + }), + (e._detectNavbar = function () { + return i.default(this._element).closest(".navbar").length > 0; + }), + (e._getOffset = function () { + var t = this, + e = {}; + return ( + "function" == typeof this._config.offset + ? (e.fn = function (e) { + return ( + (e.offsets = a( + {}, + e.offsets, + t._config.offset(e.offsets, t._element), + )), + e + ); + }) + : (e.offset = this._config.offset), + e + ); + }), + (e._getPopperConfig = function () { + var t = { + placement: this._getPlacement(), + modifiers: { + offset: this._getOffset(), + flip: { enabled: this._config.flip }, + preventOverflow: { boundariesElement: this._config.boundary }, + }, + }; + return ( + "static" === this._config.display && + (t.modifiers.applyStyle = { enabled: !1 }), + a({}, t, this._config.popperConfig) + ); + }), + (t._jQueryInterface = function (e) { + return this.each(function () { + var n = i.default(this).data(Kt); + if ( + (n || + ((n = new t(this, "object" == typeof e ? e : null)), + i.default(this).data(Kt, n)), + "string" == typeof e) + ) { + if ("undefined" == typeof n[e]) + throw new TypeError('No method named "' + e + '"'); + n[e](); + } + }); + }), + (t._clearMenus = function (e) { + if (!e || (3 !== e.which && ("keyup" !== e.type || 9 === e.which))) + for ( + var n = [].slice.call(document.querySelectorAll(oe)), + o = 0, + r = n.length; + o < r; + o++ + ) { + var a = t._getParentFromElement(n[o]), + s = i.default(n[o]).data(Kt), + l = { relatedTarget: n[o] }; + if ((e && "click" === e.type && (l.clickEvent = e), s)) { + var u = s._menu; + if ( + i.default(a).hasClass(Jt) && + !( + e && + (("click" === e.type && + /input|textarea/i.test(e.target.tagName)) || + ("keyup" === e.type && 9 === e.which)) && + i.default.contains(a, e.target) + ) + ) { + var f = i.default.Event(te, l); + (i.default(a).trigger(f), + f.isDefaultPrevented() || + ("ontouchstart" in document.documentElement && + i + .default(document.body) + .children() + .off("mouseover", null, i.default.noop), + n[o].setAttribute("aria-expanded", "false"), + s._popper && s._popper.destroy(), + i.default(u).removeClass(Jt), + i + .default(a) + .removeClass(Jt) + .trigger(i.default.Event(ee, l)))); + } + } + } + }), + (t._getParentFromElement = function (t) { + var e, + n = u.getSelectorFromElement(t); + return (n && (e = document.querySelector(n)), e || t.parentNode); + }), + (t._dataApiKeydownHandler = function (e) { + if ( + !(/input|textarea/i.test(e.target.tagName) + ? 32 === e.which || + (27 !== e.which && + ((40 !== e.which && 38 !== e.which) || + i.default(e.target).closest(re).length)) + : !Gt.test(e.which)) && + !this.disabled && + !i.default(this).hasClass($t) + ) { + var n = t._getParentFromElement(this), + o = i.default(n).hasClass(Jt); + if (o || 27 !== e.which) { + if ( + (e.preventDefault(), + e.stopPropagation(), + !o || 27 === e.which || 32 === e.which) + ) + return ( + 27 === e.which && + i.default(n.querySelector(oe)).trigger("focus"), + void i.default(this).trigger("click") + ); + var r = [].slice + .call( + n.querySelectorAll( + ".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)", + ), + ) + .filter(function (t) { + return i.default(t).is(":visible"); + }); + if (0 !== r.length) { + var a = r.indexOf(e.target); + (38 === e.which && a > 0 && a--, + 40 === e.which && a < r.length - 1 && a++, + a < 0 && (a = 0), + r[a].focus()); + } + } + } + }), + r(t, null, [ + { + key: "VERSION", + get: function () { + return "4.6.2"; + }, + }, + { + key: "Default", + get: function () { + return ae; + }, + }, + { + key: "DefaultType", + get: function () { + return se; + }, + }, + ]), + t + ); + })(); + (i + .default(document) + .on(ie, oe, le._dataApiKeydownHandler) + .on(ie, re, le._dataApiKeydownHandler) + .on(ne + " keyup.bs.dropdown.data-api", le._clearMenus) + .on(ne, oe, function (t) { + (t.preventDefault(), + t.stopPropagation(), + le._jQueryInterface.call(i.default(this), "toggle")); + }) + .on(ne, ".dropdown form", function (t) { + t.stopPropagation(); + }), + (i.default.fn[zt] = le._jQueryInterface), + (i.default.fn[zt].Constructor = le), + (i.default.fn[zt].noConflict = function () { + return ((i.default.fn[zt] = Xt), le._jQueryInterface); + })); + var ue = "bs.modal", + fe = i.default.fn.modal, + de = "modal-open", + ce = "fade", + he = "show", + pe = "modal-static", + me = "hidden.bs.modal", + ge = "show.bs.modal", + _e = "focusin.bs.modal", + ve = "resize.bs.modal", + be = "click.dismiss.bs.modal", + ye = "keydown.dismiss.bs.modal", + Ee = "mousedown.dismiss.bs.modal", + we = ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top", + Te = { backdrop: !0, keyboard: !0, focus: !0, show: !0 }, + Ce = { + backdrop: "(boolean|string)", + keyboard: "boolean", + focus: "boolean", + show: "boolean", + }, + Se = (function () { + function t(t, e) { + ((this._config = this._getConfig(e)), + (this._element = t), + (this._dialog = t.querySelector(".modal-dialog")), + (this._backdrop = null), + (this._isShown = !1), + (this._isBodyOverflowing = !1), + (this._ignoreBackdropClick = !1), + (this._isTransitioning = !1), + (this._scrollbarWidth = 0)); + } + var e = t.prototype; + return ( + (e.toggle = function (t) { + return this._isShown ? this.hide() : this.show(t); + }), + (e.show = function (t) { + var e = this; + if (!this._isShown && !this._isTransitioning) { + var n = i.default.Event(ge, { relatedTarget: t }); + (i.default(this._element).trigger(n), + n.isDefaultPrevented() || + ((this._isShown = !0), + i.default(this._element).hasClass(ce) && + (this._isTransitioning = !0), + this._checkScrollbar(), + this._setScrollbar(), + this._adjustDialog(), + this._setEscapeEvent(), + this._setResizeEvent(), + i + .default(this._element) + .on(be, '[data-dismiss="modal"]', function (t) { + return e.hide(t); + }), + i.default(this._dialog).on(Ee, function () { + i.default(e._element).one( + "mouseup.dismiss.bs.modal", + function (t) { + i.default(t.target).is(e._element) && + (e._ignoreBackdropClick = !0); + }, + ); + }), + this._showBackdrop(function () { + return e._showElement(t); + }))); + } + }), + (e.hide = function (t) { + var e = this; + if ( + (t && t.preventDefault(), this._isShown && !this._isTransitioning) + ) { + var n = i.default.Event("hide.bs.modal"); + if ( + (i.default(this._element).trigger(n), + this._isShown && !n.isDefaultPrevented()) + ) { + this._isShown = !1; + var o = i.default(this._element).hasClass(ce); + if ( + (o && (this._isTransitioning = !0), + this._setEscapeEvent(), + this._setResizeEvent(), + i.default(document).off(_e), + i.default(this._element).removeClass(he), + i.default(this._element).off(be), + i.default(this._dialog).off(Ee), + o) + ) { + var r = u.getTransitionDurationFromElement(this._element); + i.default(this._element) + .one(u.TRANSITION_END, function (t) { + return e._hideModal(t); + }) + .emulateTransitionEnd(r); + } else this._hideModal(); + } + } + }), + (e.dispose = function () { + ([window, this._element, this._dialog].forEach(function (t) { + return i.default(t).off(".bs.modal"); + }), + i.default(document).off(_e), + i.default.removeData(this._element, ue), + (this._config = null), + (this._element = null), + (this._dialog = null), + (this._backdrop = null), + (this._isShown = null), + (this._isBodyOverflowing = null), + (this._ignoreBackdropClick = null), + (this._isTransitioning = null), + (this._scrollbarWidth = null)); + }), + (e.handleUpdate = function () { + this._adjustDialog(); + }), + (e._getConfig = function (t) { + return ((t = a({}, Te, t)), u.typeCheckConfig("modal", t, Ce), t); + }), + (e._triggerBackdropTransition = function () { + var t = this, + e = i.default.Event("hidePrevented.bs.modal"); + if ((i.default(this._element).trigger(e), !e.isDefaultPrevented())) { + var n = + this._element.scrollHeight > + document.documentElement.clientHeight; + (n || (this._element.style.overflowY = "hidden"), + this._element.classList.add(pe)); + var o = u.getTransitionDurationFromElement(this._dialog); + (i.default(this._element).off(u.TRANSITION_END), + i + .default(this._element) + .one(u.TRANSITION_END, function () { + (t._element.classList.remove(pe), + n || + i + .default(t._element) + .one(u.TRANSITION_END, function () { + t._element.style.overflowY = ""; + }) + .emulateTransitionEnd(t._element, o)); + }) + .emulateTransitionEnd(o), + this._element.focus()); + } + }), + (e._showElement = function (t) { + var e = this, + n = i.default(this._element).hasClass(ce), + o = this._dialog ? this._dialog.querySelector(".modal-body") : null; + ((this._element.parentNode && + this._element.parentNode.nodeType === Node.ELEMENT_NODE) || + document.body.appendChild(this._element), + (this._element.style.display = "block"), + this._element.removeAttribute("aria-hidden"), + this._element.setAttribute("aria-modal", !0), + this._element.setAttribute("role", "dialog"), + i.default(this._dialog).hasClass("modal-dialog-scrollable") && o + ? (o.scrollTop = 0) + : (this._element.scrollTop = 0), + n && u.reflow(this._element), + i.default(this._element).addClass(he), + this._config.focus && this._enforceFocus()); + var r = i.default.Event("shown.bs.modal", { relatedTarget: t }), + a = function () { + (e._config.focus && e._element.focus(), + (e._isTransitioning = !1), + i.default(e._element).trigger(r)); + }; + if (n) { + var s = u.getTransitionDurationFromElement(this._dialog); + i.default(this._dialog) + .one(u.TRANSITION_END, a) + .emulateTransitionEnd(s); + } else a(); + }), + (e._enforceFocus = function () { + var t = this; + i.default(document) + .off(_e) + .on(_e, function (e) { + document !== e.target && + t._element !== e.target && + 0 === i.default(t._element).has(e.target).length && + t._element.focus(); + }); + }), + (e._setEscapeEvent = function () { + var t = this; + this._isShown + ? i.default(this._element).on(ye, function (e) { + t._config.keyboard && 27 === e.which + ? (e.preventDefault(), t.hide()) + : t._config.keyboard || + 27 !== e.which || + t._triggerBackdropTransition(); + }) + : this._isShown || i.default(this._element).off(ye); + }), + (e._setResizeEvent = function () { + var t = this; + this._isShown + ? i.default(window).on(ve, function (e) { + return t.handleUpdate(e); + }) + : i.default(window).off(ve); + }), + (e._hideModal = function () { + var t = this; + ((this._element.style.display = "none"), + this._element.setAttribute("aria-hidden", !0), + this._element.removeAttribute("aria-modal"), + this._element.removeAttribute("role"), + (this._isTransitioning = !1), + this._showBackdrop(function () { + (i.default(document.body).removeClass(de), + t._resetAdjustments(), + t._resetScrollbar(), + i.default(t._element).trigger(me)); + })); + }), + (e._removeBackdrop = function () { + this._backdrop && + (i.default(this._backdrop).remove(), (this._backdrop = null)); + }), + (e._showBackdrop = function (t) { + var e = this, + n = i.default(this._element).hasClass(ce) ? ce : ""; + if (this._isShown && this._config.backdrop) { + if ( + ((this._backdrop = document.createElement("div")), + (this._backdrop.className = "modal-backdrop"), + n && this._backdrop.classList.add(n), + i.default(this._backdrop).appendTo(document.body), + i.default(this._element).on(be, function (t) { + e._ignoreBackdropClick + ? (e._ignoreBackdropClick = !1) + : t.target === t.currentTarget && + ("static" === e._config.backdrop + ? e._triggerBackdropTransition() + : e.hide()); + }), + n && u.reflow(this._backdrop), + i.default(this._backdrop).addClass(he), + !t) + ) + return; + if (!n) return void t(); + var o = u.getTransitionDurationFromElement(this._backdrop); + i.default(this._backdrop) + .one(u.TRANSITION_END, t) + .emulateTransitionEnd(o); + } else if (!this._isShown && this._backdrop) { + i.default(this._backdrop).removeClass(he); + var r = function () { + (e._removeBackdrop(), t && t()); + }; + if (i.default(this._element).hasClass(ce)) { + var a = u.getTransitionDurationFromElement(this._backdrop); + i.default(this._backdrop) + .one(u.TRANSITION_END, r) + .emulateTransitionEnd(a); + } else r(); + } else t && t(); + }), + (e._adjustDialog = function () { + var t = + this._element.scrollHeight > document.documentElement.clientHeight; + (!this._isBodyOverflowing && + t && + (this._element.style.paddingLeft = this._scrollbarWidth + "px"), + this._isBodyOverflowing && + !t && + (this._element.style.paddingRight = this._scrollbarWidth + "px")); + }), + (e._resetAdjustments = function () { + ((this._element.style.paddingLeft = ""), + (this._element.style.paddingRight = "")); + }), + (e._checkScrollbar = function () { + var t = document.body.getBoundingClientRect(); + ((this._isBodyOverflowing = + Math.round(t.left + t.right) < window.innerWidth), + (this._scrollbarWidth = this._getScrollbarWidth())); + }), + (e._setScrollbar = function () { + var t = this; + if (this._isBodyOverflowing) { + var e = [].slice.call(document.querySelectorAll(we)), + n = [].slice.call(document.querySelectorAll(".sticky-top")); + (i.default(e).each(function (e, n) { + var o = n.style.paddingRight, + r = i.default(n).css("padding-right"); + i.default(n) + .data("padding-right", o) + .css("padding-right", parseFloat(r) + t._scrollbarWidth + "px"); + }), + i.default(n).each(function (e, n) { + var o = n.style.marginRight, + r = i.default(n).css("margin-right"); + i.default(n) + .data("margin-right", o) + .css( + "margin-right", + parseFloat(r) - t._scrollbarWidth + "px", + ); + })); + var o = document.body.style.paddingRight, + r = i.default(document.body).css("padding-right"); + i.default(document.body) + .data("padding-right", o) + .css( + "padding-right", + parseFloat(r) + this._scrollbarWidth + "px", + ); + } + i.default(document.body).addClass(de); + }), + (e._resetScrollbar = function () { + var t = [].slice.call(document.querySelectorAll(we)); + i.default(t).each(function (t, e) { + var n = i.default(e).data("padding-right"); + (i.default(e).removeData("padding-right"), + (e.style.paddingRight = n || "")); + }); + var e = [].slice.call(document.querySelectorAll(".sticky-top")); + i.default(e).each(function (t, e) { + var n = i.default(e).data("margin-right"); + "undefined" != typeof n && + i.default(e).css("margin-right", n).removeData("margin-right"); + }); + var n = i.default(document.body).data("padding-right"); + (i.default(document.body).removeData("padding-right"), + (document.body.style.paddingRight = n || "")); + }), + (e._getScrollbarWidth = function () { + var t = document.createElement("div"); + ((t.className = "modal-scrollbar-measure"), + document.body.appendChild(t)); + var e = t.getBoundingClientRect().width - t.clientWidth; + return (document.body.removeChild(t), e); + }), + (t._jQueryInterface = function (e, n) { + return this.each(function () { + var o = i.default(this).data(ue), + r = a( + {}, + Te, + i.default(this).data(), + "object" == typeof e && e ? e : {}, + ); + if ( + (o || ((o = new t(this, r)), i.default(this).data(ue, o)), + "string" == typeof e) + ) { + if ("undefined" == typeof o[e]) + throw new TypeError('No method named "' + e + '"'); + o[e](n); + } else r.show && o.show(n); + }); + }), + r(t, null, [ + { + key: "VERSION", + get: function () { + return "4.6.2"; + }, + }, + { + key: "Default", + get: function () { + return Te; + }, + }, + ]), + t + ); + })(); + (i + .default(document) + .on("click.bs.modal.data-api", '[data-toggle="modal"]', function (t) { + var e, + n = this, + o = u.getSelectorFromElement(this); + o && (e = document.querySelector(o)); + var r = i.default(e).data(ue) + ? "toggle" + : a({}, i.default(e).data(), i.default(this).data()); + ("A" !== this.tagName && "AREA" !== this.tagName) || t.preventDefault(); + var s = i.default(e).one(ge, function (t) { + t.isDefaultPrevented() || + s.one(me, function () { + i.default(n).is(":visible") && n.focus(); + }); + }); + Se._jQueryInterface.call(i.default(e), r, this); + }), + (i.default.fn.modal = Se._jQueryInterface), + (i.default.fn.modal.Constructor = Se), + (i.default.fn.modal.noConflict = function () { + return ((i.default.fn.modal = fe), Se._jQueryInterface); + })); + var Ne = [ + "background", + "cite", + "href", + "itemtype", + "longdesc", + "poster", + "src", + "xlink:href", + ], + De = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i, + Ae = + /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i; + function ke(t, e, n) { + if (0 === t.length) return t; + if (n && "function" == typeof n) return n(t); + for ( + var i = new window.DOMParser().parseFromString(t, "text/html"), + o = Object.keys(e), + r = [].slice.call(i.body.querySelectorAll("*")), + a = function (t, n) { + var i = r[t], + a = i.nodeName.toLowerCase(); + if (-1 === o.indexOf(i.nodeName.toLowerCase())) + return (i.parentNode.removeChild(i), "continue"); + var s = [].slice.call(i.attributes), + l = [].concat(e["*"] || [], e[a] || []); + s.forEach(function (t) { + (function (t, e) { + var n = t.nodeName.toLowerCase(); + if (-1 !== e.indexOf(n)) + return ( + -1 === Ne.indexOf(n) || + Boolean(De.test(t.nodeValue) || Ae.test(t.nodeValue)) + ); + for ( + var i = e.filter(function (t) { + return t instanceof RegExp; + }), + o = 0, + r = i.length; + o < r; + o++ + ) + if (i[o].test(n)) return !0; + return !1; + })(t, l) || i.removeAttribute(t.nodeName); + }); + }, + s = 0, + l = r.length; + s < l; + s++ + ) + a(s); + return i.body.innerHTML; + } + var Ie = "tooltip", + Oe = "bs.tooltip", + xe = i.default.fn.tooltip, + je = new RegExp("(^|\\s)bs-tooltip\\S+", "g"), + Le = ["sanitize", "whiteList", "sanitizeFn"], + Pe = "fade", + Fe = "show", + Re = "show", + Be = "out", + He = "hover", + Me = "focus", + qe = { + AUTO: "auto", + TOP: "top", + RIGHT: "right", + BOTTOM: "bottom", + LEFT: "left", + }, + Qe = { + animation: !0, + template: + '', + trigger: "hover focus", + title: "", + delay: 0, + html: !1, + selector: !1, + placement: "top", + offset: 0, + container: !1, + fallbackPlacement: "flip", + boundary: "scrollParent", + customClass: "", + sanitize: !0, + sanitizeFn: null, + whiteList: { + "*": ["class", "dir", "id", "lang", "role", /^aria-[\w-]*$/i], + a: ["target", "href", "title", "rel"], + area: [], + b: [], + br: [], + col: [], + code: [], + div: [], + em: [], + hr: [], + h1: [], + h2: [], + h3: [], + h4: [], + h5: [], + h6: [], + i: [], + img: ["src", "srcset", "alt", "title", "width", "height"], + li: [], + ol: [], + p: [], + pre: [], + s: [], + small: [], + span: [], + sub: [], + sup: [], + strong: [], + u: [], + ul: [], + }, + popperConfig: null, + }, + We = { + animation: "boolean", + template: "string", + title: "(string|element|function)", + trigger: "string", + delay: "(number|object)", + html: "boolean", + selector: "(string|boolean)", + placement: "(string|function)", + offset: "(number|string|function)", + container: "(string|element|boolean)", + fallbackPlacement: "(string|array)", + boundary: "(string|element)", + customClass: "(string|function)", + sanitize: "boolean", + sanitizeFn: "(null|function)", + whiteList: "object", + popperConfig: "(null|object)", + }, + Ue = { + HIDE: "hide.bs.tooltip", + HIDDEN: "hidden.bs.tooltip", + SHOW: "show.bs.tooltip", + SHOWN: "shown.bs.tooltip", + INSERTED: "inserted.bs.tooltip", + CLICK: "click.bs.tooltip", + FOCUSIN: "focusin.bs.tooltip", + FOCUSOUT: "focusout.bs.tooltip", + MOUSEENTER: "mouseenter.bs.tooltip", + MOUSELEAVE: "mouseleave.bs.tooltip", + }, + Ve = (function () { + function t(t, e) { + if ("undefined" == typeof Yt) + throw new TypeError( + "Bootstrap's tooltips require Popper (https://popper.js.org)", + ); + ((this._isEnabled = !0), + (this._timeout = 0), + (this._hoverState = ""), + (this._activeTrigger = {}), + (this._popper = null), + (this.element = t), + (this.config = this._getConfig(e)), + (this.tip = null), + this._setListeners()); + } + var e = t.prototype; + return ( + (e.enable = function () { + this._isEnabled = !0; + }), + (e.disable = function () { + this._isEnabled = !1; + }), + (e.toggleEnabled = function () { + this._isEnabled = !this._isEnabled; + }), + (e.toggle = function (t) { + if (this._isEnabled) + if (t) { + var e = this.constructor.DATA_KEY, + n = i.default(t.currentTarget).data(e); + (n || + ((n = new this.constructor( + t.currentTarget, + this._getDelegateConfig(), + )), + i.default(t.currentTarget).data(e, n)), + (n._activeTrigger.click = !n._activeTrigger.click), + n._isWithActiveTrigger() + ? n._enter(null, n) + : n._leave(null, n)); + } else { + if (i.default(this.getTipElement()).hasClass(Fe)) + return void this._leave(null, this); + this._enter(null, this); + } + }), + (e.dispose = function () { + (clearTimeout(this._timeout), + i.default.removeData(this.element, this.constructor.DATA_KEY), + i.default(this.element).off(this.constructor.EVENT_KEY), + i + .default(this.element) + .closest(".modal") + .off("hide.bs.modal", this._hideModalHandler), + this.tip && i.default(this.tip).remove(), + (this._isEnabled = null), + (this._timeout = null), + (this._hoverState = null), + (this._activeTrigger = null), + this._popper && this._popper.destroy(), + (this._popper = null), + (this.element = null), + (this.config = null), + (this.tip = null)); + }), + (e.show = function () { + var t = this; + if ("none" === i.default(this.element).css("display")) + throw new Error("Please use show on visible elements"); + var e = i.default.Event(this.constructor.Event.SHOW); + if (this.isWithContent() && this._isEnabled) { + i.default(this.element).trigger(e); + var n = u.findShadowRoot(this.element), + o = i.default.contains( + null !== n ? n : this.element.ownerDocument.documentElement, + this.element, + ); + if (e.isDefaultPrevented() || !o) return; + var r = this.getTipElement(), + a = u.getUID(this.constructor.NAME); + (r.setAttribute("id", a), + this.element.setAttribute("aria-describedby", a), + this.setContent(), + this.config.animation && i.default(r).addClass(Pe)); + var s = + "function" == typeof this.config.placement + ? this.config.placement.call(this, r, this.element) + : this.config.placement, + l = this._getAttachment(s); + this.addAttachmentClass(l); + var f = this._getContainer(); + (i.default(r).data(this.constructor.DATA_KEY, this), + i.default.contains( + this.element.ownerDocument.documentElement, + this.tip, + ) || i.default(r).appendTo(f), + i.default(this.element).trigger(this.constructor.Event.INSERTED), + (this._popper = new Yt( + this.element, + r, + this._getPopperConfig(l), + )), + i.default(r).addClass(Fe), + i.default(r).addClass(this.config.customClass), + "ontouchstart" in document.documentElement && + i + .default(document.body) + .children() + .on("mouseover", null, i.default.noop)); + var d = function () { + t.config.animation && t._fixTransition(); + var e = t._hoverState; + ((t._hoverState = null), + i.default(t.element).trigger(t.constructor.Event.SHOWN), + e === Be && t._leave(null, t)); + }; + if (i.default(this.tip).hasClass(Pe)) { + var c = u.getTransitionDurationFromElement(this.tip); + i.default(this.tip) + .one(u.TRANSITION_END, d) + .emulateTransitionEnd(c); + } else d(); + } + }), + (e.hide = function (t) { + var e = this, + n = this.getTipElement(), + o = i.default.Event(this.constructor.Event.HIDE), + r = function () { + (e._hoverState !== Re && + n.parentNode && + n.parentNode.removeChild(n), + e._cleanTipClass(), + e.element.removeAttribute("aria-describedby"), + i.default(e.element).trigger(e.constructor.Event.HIDDEN), + null !== e._popper && e._popper.destroy(), + t && t()); + }; + if ((i.default(this.element).trigger(o), !o.isDefaultPrevented())) { + if ( + (i.default(n).removeClass(Fe), + "ontouchstart" in document.documentElement && + i + .default(document.body) + .children() + .off("mouseover", null, i.default.noop), + (this._activeTrigger.click = !1), + (this._activeTrigger.focus = !1), + (this._activeTrigger.hover = !1), + i.default(this.tip).hasClass(Pe)) + ) { + var a = u.getTransitionDurationFromElement(n); + i.default(n).one(u.TRANSITION_END, r).emulateTransitionEnd(a); + } else r(); + this._hoverState = ""; + } + }), + (e.update = function () { + null !== this._popper && this._popper.scheduleUpdate(); + }), + (e.isWithContent = function () { + return Boolean(this.getTitle()); + }), + (e.addAttachmentClass = function (t) { + i.default(this.getTipElement()).addClass("bs-tooltip-" + t); + }), + (e.getTipElement = function () { + return ( + (this.tip = this.tip || i.default(this.config.template)[0]), + this.tip + ); + }), + (e.setContent = function () { + var t = this.getTipElement(); + (this.setElementContent( + i.default(t.querySelectorAll(".tooltip-inner")), + this.getTitle(), + ), + i.default(t).removeClass("fade show")); + }), + (e.setElementContent = function (t, e) { + "object" != typeof e || (!e.nodeType && !e.jquery) + ? this.config.html + ? (this.config.sanitize && + (e = ke(e, this.config.whiteList, this.config.sanitizeFn)), + t.html(e)) + : t.text(e) + : this.config.html + ? i.default(e).parent().is(t) || t.empty().append(e) + : t.text(i.default(e).text()); + }), + (e.getTitle = function () { + var t = this.element.getAttribute("data-original-title"); + return ( + t || + (t = + "function" == typeof this.config.title + ? this.config.title.call(this.element) + : this.config.title), + t + ); + }), + (e._getPopperConfig = function (t) { + var e = this; + return a( + {}, + { + placement: t, + modifiers: { + offset: this._getOffset(), + flip: { behavior: this.config.fallbackPlacement }, + arrow: { element: ".arrow" }, + preventOverflow: { boundariesElement: this.config.boundary }, + }, + onCreate: function (t) { + t.originalPlacement !== t.placement && + e._handlePopperPlacementChange(t); + }, + onUpdate: function (t) { + return e._handlePopperPlacementChange(t); + }, + }, + this.config.popperConfig, + ); + }), + (e._getOffset = function () { + var t = this, + e = {}; + return ( + "function" == typeof this.config.offset + ? (e.fn = function (e) { + return ( + (e.offsets = a( + {}, + e.offsets, + t.config.offset(e.offsets, t.element), + )), + e + ); + }) + : (e.offset = this.config.offset), + e + ); + }), + (e._getContainer = function () { + return !1 === this.config.container + ? document.body + : u.isElement(this.config.container) + ? i.default(this.config.container) + : i.default(document).find(this.config.container); + }), + (e._getAttachment = function (t) { + return qe[t.toUpperCase()]; + }), + (e._setListeners = function () { + var t = this; + (this.config.trigger.split(" ").forEach(function (e) { + if ("click" === e) + i.default(t.element).on( + t.constructor.Event.CLICK, + t.config.selector, + function (e) { + return t.toggle(e); + }, + ); + else if ("manual" !== e) { + var n = + e === He + ? t.constructor.Event.MOUSEENTER + : t.constructor.Event.FOCUSIN, + o = + e === He + ? t.constructor.Event.MOUSELEAVE + : t.constructor.Event.FOCUSOUT; + i.default(t.element) + .on(n, t.config.selector, function (e) { + return t._enter(e); + }) + .on(o, t.config.selector, function (e) { + return t._leave(e); + }); + } + }), + (this._hideModalHandler = function () { + t.element && t.hide(); + }), + i + .default(this.element) + .closest(".modal") + .on("hide.bs.modal", this._hideModalHandler), + this.config.selector + ? (this.config = a({}, this.config, { + trigger: "manual", + selector: "", + })) + : this._fixTitle()); + }), + (e._fixTitle = function () { + var t = typeof this.element.getAttribute("data-original-title"); + (this.element.getAttribute("title") || "string" !== t) && + (this.element.setAttribute( + "data-original-title", + this.element.getAttribute("title") || "", + ), + this.element.setAttribute("title", "")); + }), + (e._enter = function (t, e) { + var n = this.constructor.DATA_KEY; + ((e = e || i.default(t.currentTarget).data(n)) || + ((e = new this.constructor( + t.currentTarget, + this._getDelegateConfig(), + )), + i.default(t.currentTarget).data(n, e)), + t && (e._activeTrigger["focusin" === t.type ? Me : He] = !0), + i.default(e.getTipElement()).hasClass(Fe) || e._hoverState === Re + ? (e._hoverState = Re) + : (clearTimeout(e._timeout), + (e._hoverState = Re), + e.config.delay && e.config.delay.show + ? (e._timeout = setTimeout(function () { + e._hoverState === Re && e.show(); + }, e.config.delay.show)) + : e.show())); + }), + (e._leave = function (t, e) { + var n = this.constructor.DATA_KEY; + ((e = e || i.default(t.currentTarget).data(n)) || + ((e = new this.constructor( + t.currentTarget, + this._getDelegateConfig(), + )), + i.default(t.currentTarget).data(n, e)), + t && (e._activeTrigger["focusout" === t.type ? Me : He] = !1), + e._isWithActiveTrigger() || + (clearTimeout(e._timeout), + (e._hoverState = Be), + e.config.delay && e.config.delay.hide + ? (e._timeout = setTimeout(function () { + e._hoverState === Be && e.hide(); + }, e.config.delay.hide)) + : e.hide())); + }), + (e._isWithActiveTrigger = function () { + for (var t in this._activeTrigger) + if (this._activeTrigger[t]) return !0; + return !1; + }), + (e._getConfig = function (t) { + var e = i.default(this.element).data(); + return ( + Object.keys(e).forEach(function (t) { + -1 !== Le.indexOf(t) && delete e[t]; + }), + "number" == + typeof (t = a( + {}, + this.constructor.Default, + e, + "object" == typeof t && t ? t : {}, + )).delay && (t.delay = { show: t.delay, hide: t.delay }), + "number" == typeof t.title && (t.title = t.title.toString()), + "number" == typeof t.content && (t.content = t.content.toString()), + u.typeCheckConfig(Ie, t, this.constructor.DefaultType), + t.sanitize && + (t.template = ke(t.template, t.whiteList, t.sanitizeFn)), + t + ); + }), + (e._getDelegateConfig = function () { + var t = {}; + if (this.config) + for (var e in this.config) + this.constructor.Default[e] !== this.config[e] && + (t[e] = this.config[e]); + return t; + }), + (e._cleanTipClass = function () { + var t = i.default(this.getTipElement()), + e = t.attr("class").match(je); + null !== e && e.length && t.removeClass(e.join("")); + }), + (e._handlePopperPlacementChange = function (t) { + ((this.tip = t.instance.popper), + this._cleanTipClass(), + this.addAttachmentClass(this._getAttachment(t.placement))); + }), + (e._fixTransition = function () { + var t = this.getTipElement(), + e = this.config.animation; + null === t.getAttribute("x-placement") && + (i.default(t).removeClass(Pe), + (this.config.animation = !1), + this.hide(), + this.show(), + (this.config.animation = e)); + }), + (t._jQueryInterface = function (e) { + return this.each(function () { + var n = i.default(this), + o = n.data(Oe), + r = "object" == typeof e && e; + if ( + (o || !/dispose|hide/.test(e)) && + (o || ((o = new t(this, r)), n.data(Oe, o)), "string" == typeof e) + ) { + if ("undefined" == typeof o[e]) + throw new TypeError('No method named "' + e + '"'); + o[e](); + } + }); + }), + r(t, null, [ + { + key: "VERSION", + get: function () { + return "4.6.2"; + }, + }, + { + key: "Default", + get: function () { + return Qe; + }, + }, + { + key: "NAME", + get: function () { + return Ie; + }, + }, + { + key: "DATA_KEY", + get: function () { + return Oe; + }, + }, + { + key: "Event", + get: function () { + return Ue; + }, + }, + { + key: "EVENT_KEY", + get: function () { + return ".bs.tooltip"; + }, + }, + { + key: "DefaultType", + get: function () { + return We; + }, + }, + ]), + t + ); + })(); + ((i.default.fn.tooltip = Ve._jQueryInterface), + (i.default.fn.tooltip.Constructor = Ve), + (i.default.fn.tooltip.noConflict = function () { + return ((i.default.fn.tooltip = xe), Ve._jQueryInterface); + })); + var Ye = "bs.popover", + ze = i.default.fn.popover, + Ke = new RegExp("(^|\\s)bs-popover\\S+", "g"), + Xe = a({}, Ve.Default, { + placement: "right", + trigger: "click", + content: "", + template: + '', + }), + Ge = a({}, Ve.DefaultType, { content: "(string|element|function)" }), + $e = { + HIDE: "hide.bs.popover", + HIDDEN: "hidden.bs.popover", + SHOW: "show.bs.popover", + SHOWN: "shown.bs.popover", + INSERTED: "inserted.bs.popover", + CLICK: "click.bs.popover", + FOCUSIN: "focusin.bs.popover", + FOCUSOUT: "focusout.bs.popover", + MOUSEENTER: "mouseenter.bs.popover", + MOUSELEAVE: "mouseleave.bs.popover", + }, + Je = (function (t) { + var e, n; + function o() { + return t.apply(this, arguments) || this; + } + ((n = t), + ((e = o).prototype = Object.create(n.prototype)), + (e.prototype.constructor = e), + s(e, n)); + var a = o.prototype; + return ( + (a.isWithContent = function () { + return this.getTitle() || this._getContent(); + }), + (a.addAttachmentClass = function (t) { + i.default(this.getTipElement()).addClass("bs-popover-" + t); + }), + (a.getTipElement = function () { + return ( + (this.tip = this.tip || i.default(this.config.template)[0]), + this.tip + ); + }), + (a.setContent = function () { + var t = i.default(this.getTipElement()); + this.setElementContent(t.find(".popover-header"), this.getTitle()); + var e = this._getContent(); + ("function" == typeof e && (e = e.call(this.element)), + this.setElementContent(t.find(".popover-body"), e), + t.removeClass("fade show")); + }), + (a._getContent = function () { + return ( + this.element.getAttribute("data-content") || this.config.content + ); + }), + (a._cleanTipClass = function () { + var t = i.default(this.getTipElement()), + e = t.attr("class").match(Ke); + null !== e && e.length > 0 && t.removeClass(e.join("")); + }), + (o._jQueryInterface = function (t) { + return this.each(function () { + var e = i.default(this).data(Ye), + n = "object" == typeof t ? t : null; + if ( + (e || !/dispose|hide/.test(t)) && + (e || ((e = new o(this, n)), i.default(this).data(Ye, e)), + "string" == typeof t) + ) { + if ("undefined" == typeof e[t]) + throw new TypeError('No method named "' + t + '"'); + e[t](); + } + }); + }), + r(o, null, [ + { + key: "VERSION", + get: function () { + return "4.6.2"; + }, + }, + { + key: "Default", + get: function () { + return Xe; + }, + }, + { + key: "NAME", + get: function () { + return "popover"; + }, + }, + { + key: "DATA_KEY", + get: function () { + return Ye; + }, + }, + { + key: "Event", + get: function () { + return $e; + }, + }, + { + key: "EVENT_KEY", + get: function () { + return ".bs.popover"; + }, + }, + { + key: "DefaultType", + get: function () { + return Ge; + }, + }, + ]), + o + ); + })(Ve); + ((i.default.fn.popover = Je._jQueryInterface), + (i.default.fn.popover.Constructor = Je), + (i.default.fn.popover.noConflict = function () { + return ((i.default.fn.popover = ze), Je._jQueryInterface); + })); + var Ze = "scrollspy", + tn = "bs.scrollspy", + en = i.default.fn[Ze], + nn = "active", + on = "position", + rn = ".nav, .list-group", + an = { offset: 10, method: "auto", target: "" }, + sn = { offset: "number", method: "string", target: "(string|element)" }, + ln = (function () { + function t(t, e) { + var n = this; + ((this._element = t), + (this._scrollElement = "BODY" === t.tagName ? window : t), + (this._config = this._getConfig(e)), + (this._selector = + this._config.target + + " .nav-link," + + this._config.target + + " .list-group-item," + + this._config.target + + " .dropdown-item"), + (this._offsets = []), + (this._targets = []), + (this._activeTarget = null), + (this._scrollHeight = 0), + i + .default(this._scrollElement) + .on("scroll.bs.scrollspy", function (t) { + return n._process(t); + }), + this.refresh(), + this._process()); + } + var e = t.prototype; + return ( + (e.refresh = function () { + var t = this, + e = + this._scrollElement === this._scrollElement.window + ? "offset" + : on, + n = "auto" === this._config.method ? e : this._config.method, + o = n === on ? this._getScrollTop() : 0; + ((this._offsets = []), + (this._targets = []), + (this._scrollHeight = this._getScrollHeight()), + [].slice + .call(document.querySelectorAll(this._selector)) + .map(function (t) { + var e, + r = u.getSelectorFromElement(t); + if ((r && (e = document.querySelector(r)), e)) { + var a = e.getBoundingClientRect(); + if (a.width || a.height) + return [i.default(e)[n]().top + o, r]; + } + return null; + }) + .filter(Boolean) + .sort(function (t, e) { + return t[0] - e[0]; + }) + .forEach(function (e) { + (t._offsets.push(e[0]), t._targets.push(e[1])); + })); + }), + (e.dispose = function () { + (i.default.removeData(this._element, tn), + i.default(this._scrollElement).off(".bs.scrollspy"), + (this._element = null), + (this._scrollElement = null), + (this._config = null), + (this._selector = null), + (this._offsets = null), + (this._targets = null), + (this._activeTarget = null), + (this._scrollHeight = null)); + }), + (e._getConfig = function (t) { + if ( + "string" != + typeof (t = a({}, an, "object" == typeof t && t ? t : {})) + .target && + u.isElement(t.target) + ) { + var e = i.default(t.target).attr("id"); + (e || ((e = u.getUID(Ze)), i.default(t.target).attr("id", e)), + (t.target = "#" + e)); + } + return (u.typeCheckConfig(Ze, t, sn), t); + }), + (e._getScrollTop = function () { + return this._scrollElement === window + ? this._scrollElement.pageYOffset + : this._scrollElement.scrollTop; + }), + (e._getScrollHeight = function () { + return ( + this._scrollElement.scrollHeight || + Math.max( + document.body.scrollHeight, + document.documentElement.scrollHeight, + ) + ); + }), + (e._getOffsetHeight = function () { + return this._scrollElement === window + ? window.innerHeight + : this._scrollElement.getBoundingClientRect().height; + }), + (e._process = function () { + var t = this._getScrollTop() + this._config.offset, + e = this._getScrollHeight(), + n = this._config.offset + e - this._getOffsetHeight(); + if ((this._scrollHeight !== e && this.refresh(), t >= n)) { + var i = this._targets[this._targets.length - 1]; + this._activeTarget !== i && this._activate(i); + } else { + if ( + this._activeTarget && + t < this._offsets[0] && + this._offsets[0] > 0 + ) + return ((this._activeTarget = null), void this._clear()); + for (var o = this._offsets.length; o--; ) + this._activeTarget !== this._targets[o] && + t >= this._offsets[o] && + ("undefined" == typeof this._offsets[o + 1] || + t < this._offsets[o + 1]) && + this._activate(this._targets[o]); + } + }), + (e._activate = function (t) { + ((this._activeTarget = t), this._clear()); + var e = this._selector.split(",").map(function (e) { + return ( + e + '[data-target="' + t + '"],' + e + '[href="' + t + '"]' + ); + }), + n = i.default( + [].slice.call(document.querySelectorAll(e.join(","))), + ); + (n.hasClass("dropdown-item") + ? (n.closest(".dropdown").find(".dropdown-toggle").addClass(nn), + n.addClass(nn)) + : (n.addClass(nn), + n.parents(rn).prev(".nav-link, .list-group-item").addClass(nn), + n + .parents(rn) + .prev(".nav-item") + .children(".nav-link") + .addClass(nn)), + i + .default(this._scrollElement) + .trigger("activate.bs.scrollspy", { relatedTarget: t })); + }), + (e._clear = function () { + [].slice + .call(document.querySelectorAll(this._selector)) + .filter(function (t) { + return t.classList.contains(nn); + }) + .forEach(function (t) { + return t.classList.remove(nn); + }); + }), + (t._jQueryInterface = function (e) { + return this.each(function () { + var n = i.default(this).data(tn); + if ( + (n || + ((n = new t(this, "object" == typeof e && e)), + i.default(this).data(tn, n)), + "string" == typeof e) + ) { + if ("undefined" == typeof n[e]) + throw new TypeError('No method named "' + e + '"'); + n[e](); + } + }); + }), + r(t, null, [ + { + key: "VERSION", + get: function () { + return "4.6.2"; + }, + }, + { + key: "Default", + get: function () { + return an; + }, + }, + ]), + t + ); + })(); + (i.default(window).on("load.bs.scrollspy.data-api", function () { + for ( + var t = [].slice.call(document.querySelectorAll('[data-spy="scroll"]')), + e = t.length; + e--; + ) { + var n = i.default(t[e]); + ln._jQueryInterface.call(n, n.data()); + } + }), + (i.default.fn[Ze] = ln._jQueryInterface), + (i.default.fn[Ze].Constructor = ln), + (i.default.fn[Ze].noConflict = function () { + return ((i.default.fn[Ze] = en), ln._jQueryInterface); + })); + var un = "bs.tab", + fn = i.default.fn.tab, + dn = "active", + cn = "fade", + hn = "show", + pn = ".active", + mn = "> li > .active", + gn = (function () { + function t(t) { + this._element = t; + } + var e = t.prototype; + return ( + (e.show = function () { + var t = this; + if ( + !( + (this._element.parentNode && + this._element.parentNode.nodeType === Node.ELEMENT_NODE && + i.default(this._element).hasClass(dn)) || + i.default(this._element).hasClass("disabled") || + this._element.hasAttribute("disabled") + ) + ) { + var e, + n, + o = i.default(this._element).closest(".nav, .list-group")[0], + r = u.getSelectorFromElement(this._element); + if (o) { + var a = "UL" === o.nodeName || "OL" === o.nodeName ? mn : pn; + n = (n = i.default.makeArray(i.default(o).find(a)))[n.length - 1]; + } + var s = i.default.Event("hide.bs.tab", { + relatedTarget: this._element, + }), + l = i.default.Event("show.bs.tab", { relatedTarget: n }); + if ( + (n && i.default(n).trigger(s), + i.default(this._element).trigger(l), + !l.isDefaultPrevented() && !s.isDefaultPrevented()) + ) { + (r && (e = document.querySelector(r)), + this._activate(this._element, o)); + var f = function () { + var e = i.default.Event("hidden.bs.tab", { + relatedTarget: t._element, + }), + o = i.default.Event("shown.bs.tab", { relatedTarget: n }); + (i.default(n).trigger(e), i.default(t._element).trigger(o)); + }; + e ? this._activate(e, e.parentNode, f) : f(); + } + } + }), + (e.dispose = function () { + (i.default.removeData(this._element, un), (this._element = null)); + }), + (e._activate = function (t, e, n) { + var o = this, + r = ( + !e || ("UL" !== e.nodeName && "OL" !== e.nodeName) + ? i.default(e).children(pn) + : i.default(e).find(mn) + )[0], + a = n && r && i.default(r).hasClass(cn), + s = function () { + return o._transitionComplete(t, r, n); + }; + if (r && a) { + var l = u.getTransitionDurationFromElement(r); + i.default(r) + .removeClass(hn) + .one(u.TRANSITION_END, s) + .emulateTransitionEnd(l); + } else s(); + }), + (e._transitionComplete = function (t, e, n) { + if (e) { + i.default(e).removeClass(dn); + var o = i.default(e.parentNode).find("> .dropdown-menu .active")[0]; + (o && i.default(o).removeClass(dn), + "tab" === e.getAttribute("role") && + e.setAttribute("aria-selected", !1)); + } + (i.default(t).addClass(dn), + "tab" === t.getAttribute("role") && + t.setAttribute("aria-selected", !0), + u.reflow(t), + t.classList.contains(cn) && t.classList.add(hn)); + var r = t.parentNode; + if ( + (r && "LI" === r.nodeName && (r = r.parentNode), + r && i.default(r).hasClass("dropdown-menu")) + ) { + var a = i.default(t).closest(".dropdown")[0]; + if (a) { + var s = [].slice.call(a.querySelectorAll(".dropdown-toggle")); + i.default(s).addClass(dn); + } + t.setAttribute("aria-expanded", !0); + } + n && n(); + }), + (t._jQueryInterface = function (e) { + return this.each(function () { + var n = i.default(this), + o = n.data(un); + if ( + (o || ((o = new t(this)), n.data(un, o)), "string" == typeof e) + ) { + if ("undefined" == typeof o[e]) + throw new TypeError('No method named "' + e + '"'); + o[e](); + } + }); + }), + r(t, null, [ + { + key: "VERSION", + get: function () { + return "4.6.2"; + }, + }, + ]), + t + ); + })(); + (i + .default(document) + .on( + "click.bs.tab.data-api", + '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]', + function (t) { + (t.preventDefault(), gn._jQueryInterface.call(i.default(this), "show")); + }, + ), + (i.default.fn.tab = gn._jQueryInterface), + (i.default.fn.tab.Constructor = gn), + (i.default.fn.tab.noConflict = function () { + return ((i.default.fn.tab = fn), gn._jQueryInterface); + })); + var _n = "bs.toast", + vn = i.default.fn.toast, + bn = "hide", + yn = "show", + En = "showing", + wn = "click.dismiss.bs.toast", + Tn = { animation: !0, autohide: !0, delay: 500 }, + Cn = { animation: "boolean", autohide: "boolean", delay: "number" }, + Sn = (function () { + function t(t, e) { + ((this._element = t), + (this._config = this._getConfig(e)), + (this._timeout = null), + this._setListeners()); + } + var e = t.prototype; + return ( + (e.show = function () { + var t = this, + e = i.default.Event("show.bs.toast"); + if ((i.default(this._element).trigger(e), !e.isDefaultPrevented())) { + (this._clearTimeout(), + this._config.animation && this._element.classList.add("fade")); + var n = function () { + (t._element.classList.remove(En), + t._element.classList.add(yn), + i.default(t._element).trigger("shown.bs.toast"), + t._config.autohide && + (t._timeout = setTimeout(function () { + t.hide(); + }, t._config.delay))); + }; + if ( + (this._element.classList.remove(bn), + u.reflow(this._element), + this._element.classList.add(En), + this._config.animation) + ) { + var o = u.getTransitionDurationFromElement(this._element); + i.default(this._element) + .one(u.TRANSITION_END, n) + .emulateTransitionEnd(o); + } else n(); + } + }), + (e.hide = function () { + if (this._element.classList.contains(yn)) { + var t = i.default.Event("hide.bs.toast"); + (i.default(this._element).trigger(t), + t.isDefaultPrevented() || this._close()); + } + }), + (e.dispose = function () { + (this._clearTimeout(), + this._element.classList.contains(yn) && + this._element.classList.remove(yn), + i.default(this._element).off(wn), + i.default.removeData(this._element, _n), + (this._element = null), + (this._config = null)); + }), + (e._getConfig = function (t) { + return ( + (t = a( + {}, + Tn, + i.default(this._element).data(), + "object" == typeof t && t ? t : {}, + )), + u.typeCheckConfig("toast", t, this.constructor.DefaultType), + t + ); + }), + (e._setListeners = function () { + var t = this; + i.default(this._element).on( + wn, + '[data-dismiss="toast"]', + function () { + return t.hide(); + }, + ); + }), + (e._close = function () { + var t = this, + e = function () { + (t._element.classList.add(bn), + i.default(t._element).trigger("hidden.bs.toast")); + }; + if ((this._element.classList.remove(yn), this._config.animation)) { + var n = u.getTransitionDurationFromElement(this._element); + i.default(this._element) + .one(u.TRANSITION_END, e) + .emulateTransitionEnd(n); + } else e(); + }), + (e._clearTimeout = function () { + (clearTimeout(this._timeout), (this._timeout = null)); + }), + (t._jQueryInterface = function (e) { + return this.each(function () { + var n = i.default(this), + o = n.data(_n); + if ( + (o || + ((o = new t(this, "object" == typeof e && e)), n.data(_n, o)), + "string" == typeof e) + ) { + if ("undefined" == typeof o[e]) + throw new TypeError('No method named "' + e + '"'); + o[e](this); + } + }); + }), + r(t, null, [ + { + key: "VERSION", + get: function () { + return "4.6.2"; + }, + }, + { + key: "DefaultType", + get: function () { + return Cn; + }, + }, + { + key: "Default", + get: function () { + return Tn; + }, + }, + ]), + t + ); + })(); + ((i.default.fn.toast = Sn._jQueryInterface), + (i.default.fn.toast.Constructor = Sn), + (i.default.fn.toast.noConflict = function () { + return ((i.default.fn.toast = vn), Sn._jQueryInterface); + }), + (t.Alert = c), + (t.Button = b), + (t.Carousel = O), + (t.Collapse = W), + (t.Dropdown = le), + (t.Modal = Se), + (t.Popover = Je), + (t.Scrollspy = ln), + (t.Tab = gn), + (t.Toast = Sn), + (t.Tooltip = Ve), + (t.Util = u), + Object.defineProperty(t, "__esModule", { value: !0 })); +}); diff --git a/libs/bootstrap-select-1.13.18.min.js b/libs/bootstrap-select-1.13.18.min.js index 46cf10e..e8e2aaa 100644 --- a/libs/bootstrap-select-1.13.18.min.js +++ b/libs/bootstrap-select-1.13.18.min.js @@ -5,4 +5,2687 @@ * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE) */ -!function(e,t){void 0===e&&void 0!==window&&(e=window),"function"==typeof define&&define.amd?define(["jquery"],function(e){return t(e)}):"object"==typeof module&&module.exports?module.exports=t(require("jquery")):t(e.jQuery)}(this,function(e){!function(P){"use strict";var d=["sanitize","whiteList","sanitizeFn"],r=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],e={"*":["class","dir","id","lang","role","tabindex","style",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},l=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,a=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;function v(e,t){var i=e.nodeName.toLowerCase();if(-1!==P.inArray(i,t))return-1===P.inArray(i,r)||Boolean(e.nodeValue.match(l)||e.nodeValue.match(a));for(var s=P(t).filter(function(e,t){return t instanceof RegExp}),n=0,o=s.length;n]+>/g,"")),s&&(a=w(a)),a=a.toUpperCase(),o="contains"===i?0<=a.indexOf(t):a.startsWith(t)))break}return o}function N(e){return parseInt(e,10)||0}P.fn.triggerNative=function(e){var t,i=this[0];i.dispatchEvent?(u?t=new Event(e,{bubbles:!0}):(t=document.createEvent("Event")).initEvent(e,!0,!1),i.dispatchEvent(t)):i.fireEvent?((t=document.createEventObject()).eventType=e,i.fireEvent("on"+e,t)):this.trigger(e)};var f={"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C","\u0108":"C","\u010a":"C","\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g","\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i","\u012b":"i","\u012d":"i","\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O","\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r","\u015a":"S","\u015c":"S","\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij","\u0152":"Oe","\u0153":"oe","\u0149":"'n","\u017f":"s"},m=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,g=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\u1ab0-\\u1aff\\u1dc0-\\u1dff]","g");function b(e){return f[e]}function w(e){return(e=e.toString())&&e.replace(m,b).replace(g,"")}var I,x,y,$,S=(I={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},x="(?:"+Object.keys(I).join("|")+")",y=RegExp(x),$=RegExp(x,"g"),function(e){return e=null==e?"":""+e,y.test(e)?e.replace($,E):e});function E(e){return I[e]}var C={32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",65:"A",66:"B",67:"C",68:"D",69:"E",70:"F",71:"G",72:"H",73:"I",74:"J",75:"K",76:"L",77:"M",78:"N",79:"O",80:"P",81:"Q",82:"R",83:"S",84:"T",85:"U",86:"V",87:"W",88:"X",89:"Y",90:"Z",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9"},A=27,L=13,D=32,H=9,B=38,R=40,M={success:!1,major:"3"};try{M.full=(P.fn.dropdown.Constructor.VERSION||"").split(" ")[0].split("."),M.major=M.full[0],M.success=!0}catch(e){}var U=0,j=".bs.select",V={DISABLED:"disabled",DIVIDER:"divider",SHOW:"open",DROPUP:"dropup",MENU:"dropdown-menu",MENURIGHT:"dropdown-menu-right",MENULEFT:"dropdown-menu-left",BUTTONCLASS:"btn-default",POPOVERHEADER:"popover-title",ICONBASE:"glyphicon",TICKICON:"glyphicon-ok"},F={MENU:"."+V.MENU},_={div:document.createElement("div"),span:document.createElement("span"),i:document.createElement("i"),subtext:document.createElement("small"),a:document.createElement("a"),li:document.createElement("li"),whitespace:document.createTextNode("\xa0"),fragment:document.createDocumentFragment()};_.noResults=_.li.cloneNode(!1),_.noResults.className="no-results",_.a.setAttribute("role","option"),_.a.className="dropdown-item",_.subtext.className="text-muted",_.text=_.span.cloneNode(!1),_.text.className="text",_.checkMark=_.span.cloneNode(!1);var G=new RegExp(B+"|"+R),q=new RegExp("^"+H+"$|"+A),K={li:function(e,t,i){var s=_.li.cloneNode(!1);return e&&(1===e.nodeType||11===e.nodeType?s.appendChild(e):s.innerHTML=e),void 0!==t&&""!==t&&(s.className=t),null!=i&&s.classList.add("optgroup-"+i),s},a:function(e,t,i){var s=_.a.cloneNode(!0);return e&&(11===e.nodeType?s.appendChild(e):s.insertAdjacentHTML("beforeend",e)),void 0!==t&&""!==t&&s.classList.add.apply(s.classList,t.split(/\s+/)),i&&s.setAttribute("style",i),s},text:function(e,t){var i,s,n=_.text.cloneNode(!1);if(e.content)n.innerHTML=e.content;else{if(n.textContent=e.text,e.icon){var o=_.whitespace.cloneNode(!1);(s=(!0===t?_.i:_.span).cloneNode(!1)).className=this.options.iconBase+" "+e.icon,_.fragment.appendChild(s),_.fragment.appendChild(o)}e.subtext&&((i=_.subtext.cloneNode(!1)).textContent=e.subtext,n.appendChild(i))}if(!0===t)for(;0'},maxOptions:!1,mobile:!1,selectOnTab:!1,dropdownAlignRight:!1,windowPadding:0,virtualScroll:600,display:!1,sanitize:!0,sanitizeFn:null,whiteList:e},Y.prototype={constructor:Y,init:function(){var i=this,e=this.$element.attr("id"),t=this.$element[0],s=t.form;U++,this.selectId="bs-select-"+U,t.classList.add("bs-select-hidden"),this.multiple=this.$element.prop("multiple"),this.autofocus=this.$element.prop("autofocus"),t.classList.contains("show-tick")&&(this.options.showTick=!0),this.$newElement=this.createDropdown(),this.buildData(),this.$element.after(this.$newElement).prependTo(this.$newElement),s&&null===t.form&&(s.id||(s.id="form-"+this.selectId),t.setAttribute("form",s.id)),this.$button=this.$newElement.children("button"),this.$menu=this.$newElement.children(F.MENU),this.$menuInner=this.$menu.children(".inner"),this.$searchbox=this.$menu.find("input"),t.classList.remove("bs-select-hidden"),!0===this.options.dropdownAlignRight&&this.$menu[0].classList.add(V.MENURIGHT),void 0!==e&&this.$button.attr("data-id",e),this.checkDisabled(),this.clickListener(),this.options.liveSearch?(this.liveSearchListener(),this.focusedParent=this.$searchbox[0]):this.focusedParent=this.$menuInner[0],this.setStyle(),this.render(),this.setWidth(),this.options.container?this.selectPosition():this.$element.on("hide"+j,function(){if(i.isVirtual()){var e=i.$menuInner[0],t=e.firstChild.cloneNode(!1);e.replaceChild(t,e.firstChild),e.scrollTop=0}}),this.$menu.data("this",this),this.$newElement.data("this",this),this.options.mobile&&this.mobile(),this.$newElement.on({"hide.bs.dropdown":function(e){i.$element.trigger("hide"+j,e)},"hidden.bs.dropdown":function(e){i.$element.trigger("hidden"+j,e)},"show.bs.dropdown":function(e){i.$element.trigger("show"+j,e)},"shown.bs.dropdown":function(e){i.$element.trigger("shown"+j,e)}}),t.hasAttribute("required")&&this.$element.on("invalid"+j,function(){i.$button[0].classList.add("bs-invalid"),i.$element.on("shown"+j+".invalid",function(){i.$element.val(i.$element.val()).off("shown"+j+".invalid")}).on("rendered"+j,function(){this.validity.valid&&i.$button[0].classList.remove("bs-invalid"),i.$element.off("rendered"+j)}),i.$button.on("blur"+j,function(){i.$element.trigger("focus").trigger("blur"),i.$button.off("blur"+j)})}),setTimeout(function(){i.buildList(),i.$element.trigger("loaded"+j)})},createDropdown:function(){var e=this.multiple||this.options.showTick?" show-tick":"",t=this.multiple?' aria-multiselectable="true"':"",i="",s=this.autofocus?" autofocus":"";M.major<4&&this.$element.parent().hasClass("input-group")&&(i=" input-group-btn");var n,o="",r="",l="",a="";return this.options.header&&(o='
    '+this.options.header+"
    "),this.options.liveSearch&&(r=''),this.multiple&&this.options.actionsBox&&(l='
    "),this.multiple&&this.options.doneButton&&(a='
    "),n='",P(n)},setPositionData:function(){this.selectpicker.view.canHighlight=[],this.selectpicker.view.size=0,this.selectpicker.view.firstHighlightIndex=!1;for(var e=0;e=this.options.virtualScroll||!0===this.options.virtualScroll},createView:function(N,e,t){var A,L,D=this,i=0,H=[];if(this.selectpicker.isSearching=N,this.selectpicker.current=N?this.selectpicker.search:this.selectpicker.main,this.setPositionData(),e)if(t)i=this.$menuInner[0].scrollTop;else if(!D.multiple){var s=D.$element[0],n=(s.options[s.selectedIndex]||{}).liIndex;if("number"==typeof n&&!1!==D.options.size){var o=D.selectpicker.main.data[n],r=o&&o.position;r&&(i=r-(D.sizeInfo.menuInnerHeight+D.sizeInfo.liHeight)/2)}}function l(e,t){var i,s,n,o,r,l,a,c,d=D.selectpicker.current.elements.length,h=[],p=!0,u=D.isVirtual();D.selectpicker.view.scrollTop=e,i=Math.ceil(D.sizeInfo.menuInnerHeight/D.sizeInfo.liHeight*1.5),s=Math.round(d/i)||1;for(var f=0;fd-1?0:D.selectpicker.current.data[d-1].position-D.selectpicker.current.data[D.selectpicker.view.position1-1].position,b.firstChild.style.marginTop=v+"px",b.firstChild.style.marginBottom=g+"px"):(b.firstChild.style.marginTop=0,b.firstChild.style.marginBottom=0),b.firstChild.appendChild(w),!0===u&&D.sizeInfo.hasScrollBar){var C=b.firstChild.offsetWidth;if(t&&CD.sizeInfo.selectWidth)b.firstChild.style.minWidth=D.sizeInfo.menuInnerInnerWidth+"px";else if(C>D.sizeInfo.menuInnerInnerWidth){D.$menu[0].style.minWidth=0;var O=b.firstChild.offsetWidth;O>D.sizeInfo.menuInnerInnerWidth&&(D.sizeInfo.menuInnerInnerWidth=O,b.firstChild.style.minWidth=D.sizeInfo.menuInnerInnerWidth+"px"),D.$menu[0].style.minWidth=""}}}if(D.prevActiveIndex=D.activeIndex,D.options.liveSearch){if(N&&t){var z,T=0;D.selectpicker.view.canHighlight[T]||(T=1+D.selectpicker.view.canHighlight.slice(1).indexOf(!0)),z=D.selectpicker.view.visibleElements[T],D.defocusItem(D.selectpicker.view.currentActive),D.activeIndex=(D.selectpicker.current.data[T]||{}).index,D.focusItem(z)}}else D.$menuInner.trigger("focus")}l(i,!0),this.$menuInner.off("scroll.createView").on("scroll.createView",function(e,t){D.noScroll||l(this.scrollTop,t),D.noScroll=!1}),P(window).off("resize"+j+"."+this.selectId+".createView").on("resize"+j+"."+this.selectId+".createView",function(){D.$newElement.hasClass(V.SHOW)&&l(D.$menuInner[0].scrollTop)})},focusItem:function(e,t,i){if(e){t=t||this.selectpicker.main.data[this.activeIndex];var s=e.firstChild;s&&(s.setAttribute("aria-setsize",this.selectpicker.view.size),s.setAttribute("aria-posinset",t.posinset),!0!==i&&(this.focusedParent.setAttribute("aria-activedescendant",s.id),e.classList.add("active"),s.classList.add("active")))}},defocusItem:function(e){e&&(e.classList.remove("active"),e.firstChild&&e.firstChild.classList.remove("active"))},setPlaceholder:function(){var e=this,t=!1;if(this.options.title&&!this.multiple){this.selectpicker.view.titleOption||(this.selectpicker.view.titleOption=document.createElement("option")),t=!0;var i=this.$element[0],s=!1,n=!this.selectpicker.view.titleOption.parentNode,o=i.selectedIndex,r=i.options[o],l=window.performance&&window.performance.getEntriesByType("navigation"),a=l&&l.length?"back_forward"!==l[0].type:2!==window.performance.navigation.type;n&&(this.selectpicker.view.titleOption.className="bs-title-option",this.selectpicker.view.titleOption.value="",s=!r||0===o&&!1===r.defaultSelected&&void 0===this.$element.data("selected")),!n&&0===this.selectpicker.view.titleOption.index||i.insertBefore(this.selectpicker.view.titleOption,i.firstChild),s&&a?i.selectedIndex=0:"complete"!==document.readyState&&window.addEventListener("pageshow",function(){e.selectpicker.view.displayedValue!==i.value&&e.render()})}return t},buildData:function(){var p=':not([hidden]):not([data-hidden="true"])',u=[],f=0,m=this.setPlaceholder()?1:0;this.options.hideDisabled&&(p+=":not(:disabled)");var e=this.$element[0].querySelectorAll("select > *"+p);function v(e){var t=u[u.length-1];t&&"divider"===t.type&&(t.optID||e.optID)||((e=e||{}).type="divider",u.push(e))}function g(e,t){if((t=t||{}).divider="true"===e.getAttribute("data-divider"),t.divider)v({optID:t.optID});else{var i=u.length,s=e.style.cssText,n=s?S(s):"",o=(e.className||"")+(t.optgroupClass||"");t.optID&&(o="opt "+o),t.optionClass=o.trim(),t.inlineStyle=n,t.text=e.textContent,t.content=e.getAttribute("data-content"),t.tokens=e.getAttribute("data-tokens"),t.subtext=e.getAttribute("data-subtext"),t.icon=e.getAttribute("data-icon"),e.liIndex=i,t.display=t.content||t.text,t.type="option",t.index=i,t.option=e,t.selected=!!e.selected,t.disabled=t.disabled||!!e.disabled,u.push(t)}}function t(e,t){var i=t[e],s=!(e-1 li")},render:function(){var e,t=this,i=this.$element[0],s=this.setPlaceholder()&&0===i.selectedIndex,n=O(i,this.options.hideDisabled),o=n.length,r=this.$button[0],l=r.querySelector(".filter-option-inner-inner"),a=document.createTextNode(this.options.multipleSeparator),c=_.fragment.cloneNode(!1),d=!1;if(r.classList.toggle("bs-placeholder",t.multiple?!o:!z(i,n)),t.multiple||1!==n.length||(t.selectpicker.view.displayedValue=z(i,n)),"static"===this.options.selectedTextFormat)c=K.text.call(this,{text:this.options.title},!0);else if(!1===(this.multiple&&-1!==this.options.selectedTextFormat.indexOf("count")&&1")).length&&o>e[1]||1===e.length&&2<=o))){if(!s){for(var h=0;h option"+m+", optgroup"+m+" option"+m).length,g="function"==typeof this.options.countSelectedText?this.options.countSelectedText(o,v):this.options.countSelectedText;c=K.text.call(this,{text:g.replace("{0}",o.toString()).replace("{1}",v.toString())},!0)}if(null==this.options.title&&(this.options.title=this.$element.attr("title")),c.childNodes.length||(c=K.text.call(this,{text:void 0!==this.options.title?this.options.title:this.options.noneSelectedText},!0)),r.title=c.textContent.replace(/<[^>]*>?/g,"").trim(),this.options.sanitize&&d&&W([c],t.options.whiteList,t.options.sanitizeFn),l.innerHTML="",l.appendChild(c),M.major<4&&this.$newElement[0].classList.contains("bs3-has-addon")){var b=r.querySelector(".filter-expand"),w=l.cloneNode(!0);w.className="filter-expand",b?r.replaceChild(w,b):r.appendChild(w)}this.$element.trigger("rendered"+j)},setStyle:function(e,t){var i,s=this.$button[0],n=this.$newElement[0],o=this.options.style.trim();this.$element.attr("class")&&this.$newElement.addClass(this.$element.attr("class").replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi,"")),M.major<4&&(n.classList.add("bs3"),n.parentNode.classList&&n.parentNode.classList.contains("input-group")&&(n.previousElementSibling||n.nextElementSibling)&&(n.previousElementSibling||n.nextElementSibling).classList.contains("input-group-addon")&&n.classList.add("bs3-has-addon")),i=e?e.trim():o,"add"==t?i&&s.classList.add.apply(s.classList,i.split(" ")):"remove"==t?i&&s.classList.remove.apply(s.classList,i.split(" ")):(o&&s.classList.remove.apply(s.classList,o.split(" ")),i&&s.classList.add.apply(s.classList,i.split(" ")))},liHeight:function(e){if(e||!1!==this.options.size&&!Object.keys(this.sizeInfo).length){var t,i=_.div.cloneNode(!1),s=_.div.cloneNode(!1),n=_.div.cloneNode(!1),o=document.createElement("ul"),r=_.li.cloneNode(!1),l=_.li.cloneNode(!1),a=_.a.cloneNode(!1),c=_.span.cloneNode(!1),d=this.options.header&&0this.sizeInfo.menuExtras.vert&&l+this.sizeInfo.menuExtras.vert+50>this.sizeInfo.selectOffsetBot,!0===this.selectpicker.isSearching&&(a=this.selectpicker.dropup),this.$newElement.toggleClass(V.DROPUP,a),this.selectpicker.dropup=a),"auto"===this.options.size)n=3this.options.size){for(var b=0;bthis.sizeInfo.menuInnerHeight&&(this.sizeInfo.hasScrollBar=!0,this.sizeInfo.totalMenuWidth=this.sizeInfo.menuWidth+this.sizeInfo.scrollBarWidth),"auto"===this.options.dropdownAlignRight&&this.$menu.toggleClass(V.MENURIGHT,this.sizeInfo.selectOffsetLeft>this.sizeInfo.selectOffsetRight&&this.sizeInfo.selectOffsetRightthis.options.size&&i.off("resize"+j+"."+this.selectId+".setMenuSize scroll"+j+"."+this.selectId+".setMenuSize")}this.createView(!1,!0,e)},setWidth:function(){var i=this;"auto"===this.options.width?requestAnimationFrame(function(){i.$menu.css("min-width","0"),i.$element.on("loaded"+j,function(){i.liHeight(),i.setMenuSize();var e=i.$newElement.clone().appendTo("body"),t=e.css("width","auto").children("button").outerWidth();e.remove(),i.sizeInfo.selectWidth=Math.max(i.sizeInfo.totalMenuWidth,t),i.$newElement.css("width",i.sizeInfo.selectWidth+"px")})}):"fit"===this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width","").addClass("fit-width")):this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width",this.options.width)):(this.$menu.css("min-width",""),this.$newElement.css("width","")),this.$newElement.hasClass("fit-width")&&"fit"!==this.options.width&&this.$newElement[0].classList.remove("fit-width")},selectPosition:function(){this.$bsContainer=P('
    ');function e(e){var t={},i=r.options.display||!!P.fn.dropdown.Constructor.Default&&P.fn.dropdown.Constructor.Default.display;r.$bsContainer.addClass(e.attr("class").replace(/form-control|fit-width/gi,"")).toggleClass(V.DROPUP,e.hasClass(V.DROPUP)),s=e.offset(),l.is("body")?n={top:0,left:0}:((n=l.offset()).top+=parseInt(l.css("borderTopWidth"))-l.scrollTop(),n.left+=parseInt(l.css("borderLeftWidth"))-l.scrollLeft()),o=e.hasClass(V.DROPUP)?0:e[0].offsetHeight,(M.major<4||"static"===i)&&(t.top=s.top-n.top+o,t.left=s.left-n.left),t.width=e[0].offsetWidth,r.$bsContainer.css(t)}var s,n,o,r=this,l=P(this.options.container);this.$button.on("click.bs.dropdown.data-api",function(){r.isDisabled()||(e(r.$newElement),r.$bsContainer.appendTo(r.options.container).toggleClass(V.SHOW,!r.$button.hasClass(V.SHOW)).append(r.$menu))}),P(window).off("resize"+j+"."+this.selectId+" scroll"+j+"."+this.selectId).on("resize"+j+"."+this.selectId+" scroll"+j+"."+this.selectId,function(){r.$newElement.hasClass(V.SHOW)&&e(r.$newElement)}),this.$element.on("hide"+j,function(){r.$menu.data("height",r.$menu.height()),r.$bsContainer.detach()})},setOptionStatus:function(e){var t=this;if(t.noScroll=!1,t.selectpicker.view.visibleElements&&t.selectpicker.view.visibleElements.length)for(var i=0;i
    ');y[2]&&($=$.replace("{var}",y[2][1"+$+"")),d=!1,C.$element.trigger("maxReached"+j)),g&&w&&(E.append(P("
    "+S+"
    ")),d=!1,C.$element.trigger("maxReachedGrp"+j)),setTimeout(function(){C.setSelected(r,!1)},10),E[0].classList.add("fadeOut"),setTimeout(function(){E.remove()},1050)}}}else c&&(c.selected=!1),h.selected=!0,C.setSelected(r,!0);!C.multiple||C.multiple&&1===C.options.maxOptions?C.$button.trigger("focus"):C.options.liveSearch&&C.$searchbox.trigger("focus"),d&&(!C.multiple&&a===s.selectedIndex||(T=[h.index,p.prop("selected"),l],C.$element.triggerNative("change")))}}),this.$menu.on("click","li."+V.DISABLED+" a, ."+V.POPOVERHEADER+", ."+V.POPOVERHEADER+" :not(.close)",function(e){e.currentTarget==this&&(e.preventDefault(),e.stopPropagation(),C.options.liveSearch&&!P(e.target).hasClass("close")?C.$searchbox.trigger("focus"):C.$button.trigger("focus"))}),this.$menuInner.on("click",".divider, .dropdown-header",function(e){e.preventDefault(),e.stopPropagation(),C.options.liveSearch?C.$searchbox.trigger("focus"):C.$button.trigger("focus")}),this.$menu.on("click","."+V.POPOVERHEADER+" .close",function(){C.$button.trigger("click")}),this.$searchbox.on("click",function(e){e.stopPropagation()}),this.$menu.on("click",".actions-btn",function(e){C.options.liveSearch?C.$searchbox.trigger("focus"):C.$button.trigger("focus"),e.preventDefault(),e.stopPropagation(),P(this).hasClass("bs-select-all")?C.selectAll():C.deselectAll()}),this.$button.on("focus"+j,function(e){var t=C.$element[0].getAttribute("tabindex");void 0!==t&&e.originalEvent&&e.originalEvent.isTrusted&&(this.setAttribute("tabindex",t),C.$element[0].setAttribute("tabindex",-1),C.selectpicker.view.tabindex=t)}).on("blur"+j,function(e){void 0!==C.selectpicker.view.tabindex&&e.originalEvent&&e.originalEvent.isTrusted&&(C.$element[0].setAttribute("tabindex",C.selectpicker.view.tabindex),this.setAttribute("tabindex",-1),C.selectpicker.view.tabindex=void 0)}),this.$element.on("change"+j,function(){C.render(),C.$element.trigger("changed"+j,T),T=null}).on("focus"+j,function(){C.options.mobile||C.$button[0].focus()})},liveSearchListener:function(){var u=this;this.$button.on("click.bs.dropdown.data-api",function(){u.$searchbox.val()&&(u.$searchbox.val(""),u.selectpicker.search.previousValue=void 0)}),this.$searchbox.on("click.bs.dropdown.data-api focus.bs.dropdown.data-api touchend.bs.dropdown.data-api",function(e){e.stopPropagation()}),this.$searchbox.on("input propertychange",function(){var e=u.$searchbox[0].value;if(u.selectpicker.search.elements=[],u.selectpicker.search.data=[],e){var t=[],i=e.toUpperCase(),s={},n=[],o=u._searchStyle(),r=u.options.liveSearchNormalize;r&&(i=w(i));for(var l=0;l=a.selectpicker.view.canHighlight.length&&(t=a.selectpicker.view.firstHighlightIndex),a.selectpicker.view.canHighlight[t+f]||(t=t+1+a.selectpicker.view.canHighlight.slice(t+f+1).indexOf(!0))),e.preventDefault();var m=f+t;e.which===B?0===f&&t===c.length-1?(a.$menuInner[0].scrollTop=a.$menuInner[0].scrollHeight,m=a.selectpicker.current.elements.length-1):d=(o=(n=a.selectpicker.current.data[m]).position-n.height)u+a.sizeInfo.menuInnerHeight),s=a.selectpicker.main.elements[v],a.activeIndex=b[x],a.focusItem(s),s&&s.firstChild.focus(),d&&(a.$menuInner[0].scrollTop=o),r.trigger("focus")}}i&&(e.which===D&&!a.selectpicker.keydown.keyHistory||e.which===L||e.which===H&&a.options.selectOnTab)&&(e.which!==D&&e.preventDefault(),a.options.liveSearch&&e.which===D||(a.$menuInner.find(".active a").trigger("click",!0),r.trigger("focus"),a.options.liveSearch||(e.preventDefault(),P(document).data("spaceSelect",!0))))}},mobile:function(){this.options.mobile=!0,this.$element[0].classList.add("mobile-device")},refresh:function(){var e=P.extend({},this.options,this.$element.data());this.options=e,this.checkDisabled(),this.buildData(),this.setStyle(),this.render(),this.buildList(),this.setWidth(),this.setSize(!0),this.$element.trigger("refreshed"+j)},hide:function(){this.$newElement.hide()},show:function(){this.$newElement.show()},remove:function(){this.$newElement.remove(),this.$element.remove()},destroy:function(){this.$newElement.before(this.$element).remove(),this.$bsContainer?this.$bsContainer.remove():this.$menu.remove(),this.selectpicker.view.titleOption&&this.selectpicker.view.titleOption.parentNode&&this.selectpicker.view.titleOption.parentNode.removeChild(this.selectpicker.view.titleOption),this.$element.off(j).removeData("selectpicker").removeClass("bs-select-hidden selectpicker"),P(window).off(j+"."+this.selectId)}};var J=P.fn.selectpicker;function Q(){if(P.fn.dropdown)return(P.fn.dropdown.Constructor._dataApiKeydownHandler||P.fn.dropdown.Constructor.prototype.keydown).apply(this,arguments)}P.fn.selectpicker=Z,P.fn.selectpicker.Constructor=Y,P.fn.selectpicker.noConflict=function(){return P.fn.selectpicker=J,this},P(document).off("keydown.bs.dropdown.data-api").on("keydown.bs.dropdown.data-api",':not(.bootstrap-select) > [data-toggle="dropdown"]',Q).on("keydown.bs.dropdown.data-api",":not(.bootstrap-select) > .dropdown-menu",Q).on("keydown"+j,'.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bootstrap-select .bs-searchbox input',Y.prototype.keydown).on("focusin.modal",'.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bootstrap-select .bs-searchbox input',function(e){e.stopPropagation()}),P(window).on("load"+j+".data-api",function(){P(".selectpicker").each(function(){var e=P(this);Z.call(e,e.data())})})}(e)}); \ No newline at end of file +!(function (e, t) { + (void 0 === e && void 0 !== window && (e = window), + "function" == typeof define && define.amd + ? define(["jquery"], function (e) { + return t(e); + }) + : "object" == typeof module && module.exports + ? (module.exports = t(require("jquery"))) + : t(e.jQuery)); +})(this, function (e) { + !(function (P) { + "use strict"; + var d = ["sanitize", "whiteList", "sanitizeFn"], + r = [ + "background", + "cite", + "href", + "itemtype", + "longdesc", + "poster", + "src", + "xlink:href", + ], + e = { + "*": [ + "class", + "dir", + "id", + "lang", + "role", + "tabindex", + "style", + /^aria-[\w-]*$/i, + ], + a: ["target", "href", "title", "rel"], + area: [], + b: [], + br: [], + col: [], + code: [], + div: [], + em: [], + hr: [], + h1: [], + h2: [], + h3: [], + h4: [], + h5: [], + h6: [], + i: [], + img: ["src", "alt", "title", "width", "height"], + li: [], + ol: [], + p: [], + pre: [], + s: [], + small: [], + span: [], + sub: [], + sup: [], + strong: [], + u: [], + ul: [], + }, + l = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi, + a = + /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i; + function v(e, t) { + var i = e.nodeName.toLowerCase(); + if (-1 !== P.inArray(i, t)) + return ( + -1 === P.inArray(i, r) || + Boolean(e.nodeValue.match(l) || e.nodeValue.match(a)) + ); + for ( + var s = P(t).filter(function (e, t) { + return t instanceof RegExp; + }), + n = 0, + o = s.length; + n < o; + n++ + ) + if (i.match(s[n])) return !0; + return !1; + } + function W(e, t, i) { + if (i && "function" == typeof i) return i(e); + for (var s = Object.keys(t), n = 0, o = e.length; n < o; n++) + for ( + var r = e[n].querySelectorAll("*"), l = 0, a = r.length; + l < a; + l++ + ) { + var c = r[l], + d = c.nodeName.toLowerCase(); + if (-1 !== s.indexOf(d)) + for ( + var h = [].slice.call(c.attributes), + p = [].concat(t["*"] || [], t[d] || []), + u = 0, + f = h.length; + u < f; + u++ + ) { + var m = h[u]; + v(m, p) || c.removeAttribute(m.nodeName); + } + else c.parentNode.removeChild(c); + } + } + "classList" in document.createElement("_") || + (function (e) { + if ("Element" in e) { + var t = "classList", + i = "prototype", + s = e.Element[i], + n = Object, + o = function () { + var i = P(this); + return { + add: function (e) { + return ( + (e = Array.prototype.slice.call(arguments).join(" ")), + i.addClass(e) + ); + }, + remove: function (e) { + return ( + (e = Array.prototype.slice.call(arguments).join(" ")), + i.removeClass(e) + ); + }, + toggle: function (e, t) { + return i.toggleClass(e, t); + }, + contains: function (e) { + return i.hasClass(e); + }, + }; + }; + if (n.defineProperty) { + var r = { get: o, enumerable: !0, configurable: !0 }; + try { + n.defineProperty(s, t, r); + } catch (e) { + (void 0 !== e.number && -2146823252 !== e.number) || + ((r.enumerable = !1), n.defineProperty(s, t, r)); + } + } else n[i].__defineGetter__ && s.__defineGetter__(t, o); + } + })(window); + var t, + c, + i = document.createElement("_"); + if ((i.classList.add("c1", "c2"), !i.classList.contains("c2"))) { + var s = DOMTokenList.prototype.add, + n = DOMTokenList.prototype.remove; + ((DOMTokenList.prototype.add = function () { + Array.prototype.forEach.call(arguments, s.bind(this)); + }), + (DOMTokenList.prototype.remove = function () { + Array.prototype.forEach.call(arguments, n.bind(this)); + })); + } + if ((i.classList.toggle("c3", !1), i.classList.contains("c3"))) { + var o = DOMTokenList.prototype.toggle; + DOMTokenList.prototype.toggle = function (e, t) { + return 1 in arguments && !this.contains(e) == !t ? t : o.call(this, e); + }; + } + function h(e) { + if (null == this) throw new TypeError(); + var t = String(this); + if (e && "[object RegExp]" == c.call(e)) throw new TypeError(); + var i = t.length, + s = String(e), + n = s.length, + o = 1 < arguments.length ? arguments[1] : void 0, + r = o ? Number(o) : 0; + r != r && (r = 0); + var l = Math.min(Math.max(r, 0), i); + if (i < n + l) return !1; + for (var a = -1; ++a < n; ) + if (t.charCodeAt(l + a) != s.charCodeAt(a)) return !1; + return !0; + } + function O(e, t) { + var i, + s = e.selectedOptions, + n = []; + if (t) { + for (var o = 0, r = s.length; o < r; o++) + (i = s[o]).disabled || + ("OPTGROUP" === i.parentNode.tagName && i.parentNode.disabled) || + n.push(i); + return n; + } + return s; + } + function z(e, t) { + for ( + var i, s = [], n = t || e.selectedOptions, o = 0, r = n.length; + o < r; + o++ + ) + (i = n[o]).disabled || + ("OPTGROUP" === i.parentNode.tagName && i.parentNode.disabled) || + s.push(i.value); + return e.multiple ? s : s.length ? s[0] : null; + } + ((i = null), + String.prototype.startsWith || + ((t = (function () { + try { + var e = {}, + t = Object.defineProperty, + i = t(e, e, e) && t; + } catch (e) {} + return i; + })()), + (c = {}.toString), + t + ? t(String.prototype, "startsWith", { + value: h, + configurable: !0, + writable: !0, + }) + : (String.prototype.startsWith = h)), + Object.keys || + (Object.keys = function (e, t, i) { + for (t in ((i = []), e)) i.hasOwnProperty.call(e, t) && i.push(t); + return i; + }), + HTMLSelectElement && + !HTMLSelectElement.prototype.hasOwnProperty("selectedOptions") && + Object.defineProperty(HTMLSelectElement.prototype, "selectedOptions", { + get: function () { + return this.querySelectorAll(":checked"); + }, + })); + var p = { useDefault: !1, _set: P.valHooks.select.set }; + P.valHooks.select.set = function (e, t) { + return ( + t && !p.useDefault && P(e).data("selected", !0), + p._set.apply(this, arguments) + ); + }; + var T = null, + u = (function () { + try { + return (new Event("change"), !0); + } catch (e) { + return !1; + } + })(); + function k(e, t, i, s) { + for ( + var n = ["display", "subtext", "tokens"], o = !1, r = 0; + r < n.length; + r++ + ) { + var l = n[r], + a = e[l]; + if ( + a && + ((a = a.toString()), + "display" === l && (a = a.replace(/<[^>]+>/g, "")), + s && (a = w(a)), + (a = a.toUpperCase()), + (o = "contains" === i ? 0 <= a.indexOf(t) : a.startsWith(t))) + ) + break; + } + return o; + } + function N(e) { + return parseInt(e, 10) || 0; + } + P.fn.triggerNative = function (e) { + var t, + i = this[0]; + i.dispatchEvent + ? (u + ? (t = new Event(e, { bubbles: !0 })) + : (t = document.createEvent("Event")).initEvent(e, !0, !1), + i.dispatchEvent(t)) + : i.fireEvent + ? (((t = document.createEventObject()).eventType = e), + i.fireEvent("on" + e, t)) + : this.trigger(e); + }; + var f = { + "\xc0": "A", + "\xc1": "A", + "\xc2": "A", + "\xc3": "A", + "\xc4": "A", + "\xc5": "A", + "\xe0": "a", + "\xe1": "a", + "\xe2": "a", + "\xe3": "a", + "\xe4": "a", + "\xe5": "a", + "\xc7": "C", + "\xe7": "c", + "\xd0": "D", + "\xf0": "d", + "\xc8": "E", + "\xc9": "E", + "\xca": "E", + "\xcb": "E", + "\xe8": "e", + "\xe9": "e", + "\xea": "e", + "\xeb": "e", + "\xcc": "I", + "\xcd": "I", + "\xce": "I", + "\xcf": "I", + "\xec": "i", + "\xed": "i", + "\xee": "i", + "\xef": "i", + "\xd1": "N", + "\xf1": "n", + "\xd2": "O", + "\xd3": "O", + "\xd4": "O", + "\xd5": "O", + "\xd6": "O", + "\xd8": "O", + "\xf2": "o", + "\xf3": "o", + "\xf4": "o", + "\xf5": "o", + "\xf6": "o", + "\xf8": "o", + "\xd9": "U", + "\xda": "U", + "\xdb": "U", + "\xdc": "U", + "\xf9": "u", + "\xfa": "u", + "\xfb": "u", + "\xfc": "u", + "\xdd": "Y", + "\xfd": "y", + "\xff": "y", + "\xc6": "Ae", + "\xe6": "ae", + "\xde": "Th", + "\xfe": "th", + "\xdf": "ss", + "\u0100": "A", + "\u0102": "A", + "\u0104": "A", + "\u0101": "a", + "\u0103": "a", + "\u0105": "a", + "\u0106": "C", + "\u0108": "C", + "\u010a": "C", + "\u010c": "C", + "\u0107": "c", + "\u0109": "c", + "\u010b": "c", + "\u010d": "c", + "\u010e": "D", + "\u0110": "D", + "\u010f": "d", + "\u0111": "d", + "\u0112": "E", + "\u0114": "E", + "\u0116": "E", + "\u0118": "E", + "\u011a": "E", + "\u0113": "e", + "\u0115": "e", + "\u0117": "e", + "\u0119": "e", + "\u011b": "e", + "\u011c": "G", + "\u011e": "G", + "\u0120": "G", + "\u0122": "G", + "\u011d": "g", + "\u011f": "g", + "\u0121": "g", + "\u0123": "g", + "\u0124": "H", + "\u0126": "H", + "\u0125": "h", + "\u0127": "h", + "\u0128": "I", + "\u012a": "I", + "\u012c": "I", + "\u012e": "I", + "\u0130": "I", + "\u0129": "i", + "\u012b": "i", + "\u012d": "i", + "\u012f": "i", + "\u0131": "i", + "\u0134": "J", + "\u0135": "j", + "\u0136": "K", + "\u0137": "k", + "\u0138": "k", + "\u0139": "L", + "\u013b": "L", + "\u013d": "L", + "\u013f": "L", + "\u0141": "L", + "\u013a": "l", + "\u013c": "l", + "\u013e": "l", + "\u0140": "l", + "\u0142": "l", + "\u0143": "N", + "\u0145": "N", + "\u0147": "N", + "\u014a": "N", + "\u0144": "n", + "\u0146": "n", + "\u0148": "n", + "\u014b": "n", + "\u014c": "O", + "\u014e": "O", + "\u0150": "O", + "\u014d": "o", + "\u014f": "o", + "\u0151": "o", + "\u0154": "R", + "\u0156": "R", + "\u0158": "R", + "\u0155": "r", + "\u0157": "r", + "\u0159": "r", + "\u015a": "S", + "\u015c": "S", + "\u015e": "S", + "\u0160": "S", + "\u015b": "s", + "\u015d": "s", + "\u015f": "s", + "\u0161": "s", + "\u0162": "T", + "\u0164": "T", + "\u0166": "T", + "\u0163": "t", + "\u0165": "t", + "\u0167": "t", + "\u0168": "U", + "\u016a": "U", + "\u016c": "U", + "\u016e": "U", + "\u0170": "U", + "\u0172": "U", + "\u0169": "u", + "\u016b": "u", + "\u016d": "u", + "\u016f": "u", + "\u0171": "u", + "\u0173": "u", + "\u0174": "W", + "\u0175": "w", + "\u0176": "Y", + "\u0177": "y", + "\u0178": "Y", + "\u0179": "Z", + "\u017b": "Z", + "\u017d": "Z", + "\u017a": "z", + "\u017c": "z", + "\u017e": "z", + "\u0132": "IJ", + "\u0133": "ij", + "\u0152": "Oe", + "\u0153": "oe", + "\u0149": "'n", + "\u017f": "s", + }, + m = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g, + g = RegExp( + "[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\u1ab0-\\u1aff\\u1dc0-\\u1dff]", + "g", + ); + function b(e) { + return f[e]; + } + function w(e) { + return (e = e.toString()) && e.replace(m, b).replace(g, ""); + } + var I, + x, + y, + $, + S = + ((I = { + "&": "&", + "<": "<", + ">": ">", + '"': """, + "'": "'", + "`": "`", + }), + (x = "(?:" + Object.keys(I).join("|") + ")"), + (y = RegExp(x)), + ($ = RegExp(x, "g")), + function (e) { + return ( + (e = null == e ? "" : "" + e), + y.test(e) ? e.replace($, E) : e + ); + }); + function E(e) { + return I[e]; + } + var C = { + 32: " ", + 48: "0", + 49: "1", + 50: "2", + 51: "3", + 52: "4", + 53: "5", + 54: "6", + 55: "7", + 56: "8", + 57: "9", + 59: ";", + 65: "A", + 66: "B", + 67: "C", + 68: "D", + 69: "E", + 70: "F", + 71: "G", + 72: "H", + 73: "I", + 74: "J", + 75: "K", + 76: "L", + 77: "M", + 78: "N", + 79: "O", + 80: "P", + 81: "Q", + 82: "R", + 83: "S", + 84: "T", + 85: "U", + 86: "V", + 87: "W", + 88: "X", + 89: "Y", + 90: "Z", + 96: "0", + 97: "1", + 98: "2", + 99: "3", + 100: "4", + 101: "5", + 102: "6", + 103: "7", + 104: "8", + 105: "9", + }, + A = 27, + L = 13, + D = 32, + H = 9, + B = 38, + R = 40, + M = { success: !1, major: "3" }; + try { + ((M.full = (P.fn.dropdown.Constructor.VERSION || "") + .split(" ")[0] + .split(".")), + (M.major = M.full[0]), + (M.success = !0)); + } catch (e) {} + var U = 0, + j = ".bs.select", + V = { + DISABLED: "disabled", + DIVIDER: "divider", + SHOW: "open", + DROPUP: "dropup", + MENU: "dropdown-menu", + MENURIGHT: "dropdown-menu-right", + MENULEFT: "dropdown-menu-left", + BUTTONCLASS: "btn-default", + POPOVERHEADER: "popover-title", + ICONBASE: "glyphicon", + TICKICON: "glyphicon-ok", + }, + F = { MENU: "." + V.MENU }, + _ = { + div: document.createElement("div"), + span: document.createElement("span"), + i: document.createElement("i"), + subtext: document.createElement("small"), + a: document.createElement("a"), + li: document.createElement("li"), + whitespace: document.createTextNode("\xa0"), + fragment: document.createDocumentFragment(), + }; + ((_.noResults = _.li.cloneNode(!1)), + (_.noResults.className = "no-results"), + _.a.setAttribute("role", "option"), + (_.a.className = "dropdown-item"), + (_.subtext.className = "text-muted"), + (_.text = _.span.cloneNode(!1)), + (_.text.className = "text"), + (_.checkMark = _.span.cloneNode(!1))); + var G = new RegExp(B + "|" + R), + q = new RegExp("^" + H + "$|" + A), + K = { + li: function (e, t, i) { + var s = _.li.cloneNode(!1); + return ( + e && + (1 === e.nodeType || 11 === e.nodeType + ? s.appendChild(e) + : (s.innerHTML = e)), + void 0 !== t && "" !== t && (s.className = t), + null != i && s.classList.add("optgroup-" + i), + s + ); + }, + a: function (e, t, i) { + var s = _.a.cloneNode(!0); + return ( + e && + (11 === e.nodeType + ? s.appendChild(e) + : s.insertAdjacentHTML("beforeend", e)), + void 0 !== t && + "" !== t && + s.classList.add.apply(s.classList, t.split(/\s+/)), + i && s.setAttribute("style", i), + s + ); + }, + text: function (e, t) { + var i, + s, + n = _.text.cloneNode(!1); + if (e.content) n.innerHTML = e.content; + else { + if (((n.textContent = e.text), e.icon)) { + var o = _.whitespace.cloneNode(!1); + (((s = (!0 === t ? _.i : _.span).cloneNode(!1)).className = + this.options.iconBase + " " + e.icon), + _.fragment.appendChild(s), + _.fragment.appendChild(o)); + } + e.subtext && + (((i = _.subtext.cloneNode(!1)).textContent = e.subtext), + n.appendChild(i)); + } + if (!0 === t) + for (; 0 < n.childNodes.length; ) + _.fragment.appendChild(n.childNodes[0]); + else _.fragment.appendChild(n); + return _.fragment; + }, + label: function (e) { + var t, + i, + s = _.text.cloneNode(!1); + if (((s.innerHTML = e.display), e.icon)) { + var n = _.whitespace.cloneNode(!1); + (((i = _.span.cloneNode(!1)).className = + this.options.iconBase + " " + e.icon), + _.fragment.appendChild(i), + _.fragment.appendChild(n)); + } + return ( + e.subtext && + (((t = _.subtext.cloneNode(!1)).textContent = e.subtext), + s.appendChild(t)), + _.fragment.appendChild(s), + _.fragment + ); + }, + }; + var Y = function (e, t) { + var i = this; + (p.useDefault || ((P.valHooks.select.set = p._set), (p.useDefault = !0)), + (this.$element = P(e)), + (this.$newElement = null), + (this.$button = null), + (this.$menu = null), + (this.options = t), + (this.selectpicker = { + main: {}, + search: {}, + current: {}, + view: {}, + isSearching: !1, + keydown: { + keyHistory: "", + resetKeyHistory: { + start: function () { + return setTimeout(function () { + i.selectpicker.keydown.keyHistory = ""; + }, 800); + }, + }, + }, + }), + (this.sizeInfo = {}), + null === this.options.title && + (this.options.title = this.$element.attr("title"))); + var s = this.options.windowPadding; + ("number" == typeof s && (this.options.windowPadding = [s, s, s, s]), + (this.val = Y.prototype.val), + (this.render = Y.prototype.render), + (this.refresh = Y.prototype.refresh), + (this.setStyle = Y.prototype.setStyle), + (this.selectAll = Y.prototype.selectAll), + (this.deselectAll = Y.prototype.deselectAll), + (this.destroy = Y.prototype.destroy), + (this.remove = Y.prototype.remove), + (this.show = Y.prototype.show), + (this.hide = Y.prototype.hide), + this.init()); + }; + function Z(e) { + var l, + a = arguments, + c = e; + if (([].shift.apply(a), !M.success)) { + try { + M.full = (P.fn.dropdown.Constructor.VERSION || "") + .split(" ")[0] + .split("."); + } catch (e) { + Y.BootstrapVersion + ? (M.full = Y.BootstrapVersion.split(" ")[0].split(".")) + : ((M.full = [M.major, "0", "0"]), + console.warn( + "There was an issue retrieving Bootstrap's version. Ensure Bootstrap is being loaded before bootstrap-select and there is no namespace collision. If loading Bootstrap asynchronously, the version may need to be manually specified via $.fn.selectpicker.Constructor.BootstrapVersion.", + e, + )); + } + ((M.major = M.full[0]), (M.success = !0)); + } + if ("4" === M.major) { + var t = []; + (Y.DEFAULTS.style === V.BUTTONCLASS && + t.push({ name: "style", className: "BUTTONCLASS" }), + Y.DEFAULTS.iconBase === V.ICONBASE && + t.push({ name: "iconBase", className: "ICONBASE" }), + Y.DEFAULTS.tickIcon === V.TICKICON && + t.push({ name: "tickIcon", className: "TICKICON" }), + (V.DIVIDER = "dropdown-divider"), + (V.SHOW = "show"), + (V.BUTTONCLASS = "btn-light"), + (V.POPOVERHEADER = "popover-header"), + (V.ICONBASE = ""), + (V.TICKICON = "bs-ok-default")); + for (var i = 0; i < t.length; i++) { + e = t[i]; + Y.DEFAULTS[e.name] = V[e.className]; + } + } + var s = this.each(function () { + var e = P(this); + if (e.is("select")) { + var t = e.data("selectpicker"), + i = "object" == typeof c && c; + if (t) { + if (i) + for (var s in i) + Object.prototype.hasOwnProperty.call(i, s) && + (t.options[s] = i[s]); + } else { + var n = e.data(); + for (var o in n) + Object.prototype.hasOwnProperty.call(n, o) && + -1 !== P.inArray(o, d) && + delete n[o]; + var r = P.extend( + {}, + Y.DEFAULTS, + P.fn.selectpicker.defaults || {}, + n, + i, + ); + ((r.template = P.extend( + {}, + Y.DEFAULTS.template, + P.fn.selectpicker.defaults + ? P.fn.selectpicker.defaults.template + : {}, + n.template, + i.template, + )), + e.data("selectpicker", (t = new Y(this, r)))); + } + "string" == typeof c && + (l = t[c] instanceof Function ? t[c].apply(t, a) : t.options[c]); + } + }); + return void 0 !== l ? l : s; + } + ((Y.VERSION = "1.13.18"), + (Y.DEFAULTS = { + noneSelectedText: "Nothing selected", + noneResultsText: "No results matched {0}", + countSelectedText: function (e, t) { + return 1 == e ? "{0} item selected" : "{0} items selected"; + }, + maxOptionsText: function (e, t) { + return [ + 1 == e + ? "Limit reached ({n} item max)" + : "Limit reached ({n} items max)", + 1 == t + ? "Group limit reached ({n} item max)" + : "Group limit reached ({n} items max)", + ]; + }, + selectAllText: "Select All", + deselectAllText: "Deselect All", + doneButton: !1, + doneButtonText: "Close", + multipleSeparator: ", ", + styleBase: "btn", + style: V.BUTTONCLASS, + size: "auto", + title: null, + selectedTextFormat: "values", + width: !1, + container: !1, + hideDisabled: !1, + showSubtext: !1, + showIcon: !0, + showContent: !0, + dropupAuto: !0, + header: !1, + liveSearch: !1, + liveSearchPlaceholder: null, + liveSearchNormalize: !1, + liveSearchStyle: "contains", + actionsBox: !1, + iconBase: V.ICONBASE, + tickIcon: V.TICKICON, + showTick: !1, + template: { caret: '' }, + maxOptions: !1, + mobile: !1, + selectOnTab: !1, + dropdownAlignRight: !1, + windowPadding: 0, + virtualScroll: 600, + display: !1, + sanitize: !0, + sanitizeFn: null, + whiteList: e, + }), + (Y.prototype = { + constructor: Y, + init: function () { + var i = this, + e = this.$element.attr("id"), + t = this.$element[0], + s = t.form; + (U++, + (this.selectId = "bs-select-" + U), + t.classList.add("bs-select-hidden"), + (this.multiple = this.$element.prop("multiple")), + (this.autofocus = this.$element.prop("autofocus")), + t.classList.contains("show-tick") && (this.options.showTick = !0), + (this.$newElement = this.createDropdown()), + this.buildData(), + this.$element.after(this.$newElement).prependTo(this.$newElement), + s && + null === t.form && + (s.id || (s.id = "form-" + this.selectId), + t.setAttribute("form", s.id)), + (this.$button = this.$newElement.children("button")), + (this.$menu = this.$newElement.children(F.MENU)), + (this.$menuInner = this.$menu.children(".inner")), + (this.$searchbox = this.$menu.find("input")), + t.classList.remove("bs-select-hidden"), + !0 === this.options.dropdownAlignRight && + this.$menu[0].classList.add(V.MENURIGHT), + void 0 !== e && this.$button.attr("data-id", e), + this.checkDisabled(), + this.clickListener(), + this.options.liveSearch + ? (this.liveSearchListener(), + (this.focusedParent = this.$searchbox[0])) + : (this.focusedParent = this.$menuInner[0]), + this.setStyle(), + this.render(), + this.setWidth(), + this.options.container + ? this.selectPosition() + : this.$element.on("hide" + j, function () { + if (i.isVirtual()) { + var e = i.$menuInner[0], + t = e.firstChild.cloneNode(!1); + (e.replaceChild(t, e.firstChild), (e.scrollTop = 0)); + } + }), + this.$menu.data("this", this), + this.$newElement.data("this", this), + this.options.mobile && this.mobile(), + this.$newElement.on({ + "hide.bs.dropdown": function (e) { + i.$element.trigger("hide" + j, e); + }, + "hidden.bs.dropdown": function (e) { + i.$element.trigger("hidden" + j, e); + }, + "show.bs.dropdown": function (e) { + i.$element.trigger("show" + j, e); + }, + "shown.bs.dropdown": function (e) { + i.$element.trigger("shown" + j, e); + }, + }), + t.hasAttribute("required") && + this.$element.on("invalid" + j, function () { + (i.$button[0].classList.add("bs-invalid"), + i.$element + .on("shown" + j + ".invalid", function () { + i.$element + .val(i.$element.val()) + .off("shown" + j + ".invalid"); + }) + .on("rendered" + j, function () { + (this.validity.valid && + i.$button[0].classList.remove("bs-invalid"), + i.$element.off("rendered" + j)); + }), + i.$button.on("blur" + j, function () { + (i.$element.trigger("focus").trigger("blur"), + i.$button.off("blur" + j)); + })); + }), + setTimeout(function () { + (i.buildList(), i.$element.trigger("loaded" + j)); + })); + }, + createDropdown: function () { + var e = this.multiple || this.options.showTick ? " show-tick" : "", + t = this.multiple ? ' aria-multiselectable="true"' : "", + i = "", + s = this.autofocus ? " autofocus" : ""; + M.major < 4 && + this.$element.parent().hasClass("input-group") && + (i = " input-group-btn"); + var n, + o = "", + r = "", + l = "", + a = ""; + return ( + this.options.header && + (o = + '
    ' + + this.options.header + + "
    "), + this.options.liveSearch && + (r = + ''), + this.multiple && + this.options.actionsBox && + (l = + '
    "), + this.multiple && + this.options.doneButton && + (a = + '
    "), + (n = + '"), + P(n) + ); + }, + setPositionData: function () { + ((this.selectpicker.view.canHighlight = []), + (this.selectpicker.view.size = 0), + (this.selectpicker.view.firstHighlightIndex = !1)); + for (var e = 0; e < this.selectpicker.current.data.length; e++) { + var t = this.selectpicker.current.data[e], + i = !0; + ("divider" === t.type + ? ((i = !1), (t.height = this.sizeInfo.dividerHeight)) + : "optgroup-label" === t.type + ? ((i = !1), (t.height = this.sizeInfo.dropdownHeaderHeight)) + : (t.height = this.sizeInfo.liHeight), + t.disabled && (i = !1), + this.selectpicker.view.canHighlight.push(i), + i && + (this.selectpicker.view.size++, + (t.posinset = this.selectpicker.view.size), + !1 === this.selectpicker.view.firstHighlightIndex && + (this.selectpicker.view.firstHighlightIndex = e)), + (t.position = + (0 === e ? 0 : this.selectpicker.current.data[e - 1].position) + + t.height)); + } + }, + isVirtual: function () { + return ( + (!1 !== this.options.virtualScroll && + this.selectpicker.main.elements.length >= + this.options.virtualScroll) || + !0 === this.options.virtualScroll + ); + }, + createView: function (N, e, t) { + var A, + L, + D = this, + i = 0, + H = []; + if ( + ((this.selectpicker.isSearching = N), + (this.selectpicker.current = N + ? this.selectpicker.search + : this.selectpicker.main), + this.setPositionData(), + e) + ) + if (t) i = this.$menuInner[0].scrollTop; + else if (!D.multiple) { + var s = D.$element[0], + n = (s.options[s.selectedIndex] || {}).liIndex; + if ("number" == typeof n && !1 !== D.options.size) { + var o = D.selectpicker.main.data[n], + r = o && o.position; + r && + (i = + r - (D.sizeInfo.menuInnerHeight + D.sizeInfo.liHeight) / 2); + } + } + function l(e, t) { + var i, + s, + n, + o, + r, + l, + a, + c, + d = D.selectpicker.current.elements.length, + h = [], + p = !0, + u = D.isVirtual(); + ((D.selectpicker.view.scrollTop = e), + (i = Math.ceil( + (D.sizeInfo.menuInnerHeight / D.sizeInfo.liHeight) * 1.5, + )), + (s = Math.round(d / i) || 1)); + for (var f = 0; f < s; f++) { + var m = (f + 1) * i; + if ( + (f === s - 1 && (m = d), (h[f] = [f * i + (f ? 1 : 0), m]), !d) + ) + break; + void 0 === r && + e - 1 <= + D.selectpicker.current.data[m - 1].position - + D.sizeInfo.menuInnerHeight && + (r = f); + } + if ( + (void 0 === r && (r = 0), + (l = [ + D.selectpicker.view.position0, + D.selectpicker.view.position1, + ]), + (n = Math.max(0, r - 1)), + (o = Math.min(s - 1, r + 1)), + (D.selectpicker.view.position0 = + !1 === u ? 0 : Math.max(0, h[n][0]) || 0), + (D.selectpicker.view.position1 = + !1 === u ? d : Math.min(d, h[o][1]) || 0), + (a = + l[0] !== D.selectpicker.view.position0 || + l[1] !== D.selectpicker.view.position1), + void 0 !== D.activeIndex && + ((L = D.selectpicker.main.elements[D.prevActiveIndex]), + (H = D.selectpicker.main.elements[D.activeIndex]), + (A = D.selectpicker.main.elements[D.selectedIndex]), + t && + (D.activeIndex !== D.selectedIndex && D.defocusItem(H), + (D.activeIndex = void 0)), + D.activeIndex && + D.activeIndex !== D.selectedIndex && + D.defocusItem(A)), + void 0 !== D.prevActiveIndex && + D.prevActiveIndex !== D.activeIndex && + D.prevActiveIndex !== D.selectedIndex && + D.defocusItem(L), + (t || a) && + ((c = D.selectpicker.view.visibleElements + ? D.selectpicker.view.visibleElements.slice() + : []), + (D.selectpicker.view.visibleElements = + !1 === u + ? D.selectpicker.current.elements + : D.selectpicker.current.elements.slice( + D.selectpicker.view.position0, + D.selectpicker.view.position1, + )), + D.setOptionStatus(), + (N || (!1 === u && t)) && + (p = !(function (e, i) { + return ( + e.length === i.length && + e.every(function (e, t) { + return e === i[t]; + }) + ); + })(c, D.selectpicker.view.visibleElements)), + (t || !0 === u) && p)) + ) { + var v, + g, + b = D.$menuInner[0], + w = document.createDocumentFragment(), + I = b.firstChild.cloneNode(!1), + x = D.selectpicker.view.visibleElements, + k = []; + b.replaceChild(I, b.firstChild); + f = 0; + for (var y = x.length; f < y; f++) { + var $, + S, + E = x[f]; + (D.options.sanitize && + ($ = E.lastChild) && + (S = + D.selectpicker.current.data[ + f + D.selectpicker.view.position0 + ]) && + S.content && + !S.sanitized && + (k.push($), (S.sanitized = !0)), + w.appendChild(E)); + } + if ( + (D.options.sanitize && + k.length && + W(k, D.options.whiteList, D.options.sanitizeFn), + !0 === u + ? ((v = + 0 === D.selectpicker.view.position0 + ? 0 + : D.selectpicker.current.data[ + D.selectpicker.view.position0 - 1 + ].position), + (g = + D.selectpicker.view.position1 > d - 1 + ? 0 + : D.selectpicker.current.data[d - 1].position - + D.selectpicker.current.data[ + D.selectpicker.view.position1 - 1 + ].position), + (b.firstChild.style.marginTop = v + "px"), + (b.firstChild.style.marginBottom = g + "px")) + : ((b.firstChild.style.marginTop = 0), + (b.firstChild.style.marginBottom = 0)), + b.firstChild.appendChild(w), + !0 === u && D.sizeInfo.hasScrollBar) + ) { + var C = b.firstChild.offsetWidth; + if ( + t && + C < D.sizeInfo.menuInnerInnerWidth && + D.sizeInfo.totalMenuWidth > D.sizeInfo.selectWidth + ) + b.firstChild.style.minWidth = + D.sizeInfo.menuInnerInnerWidth + "px"; + else if (C > D.sizeInfo.menuInnerInnerWidth) { + D.$menu[0].style.minWidth = 0; + var O = b.firstChild.offsetWidth; + (O > D.sizeInfo.menuInnerInnerWidth && + ((D.sizeInfo.menuInnerInnerWidth = O), + (b.firstChild.style.minWidth = + D.sizeInfo.menuInnerInnerWidth + "px")), + (D.$menu[0].style.minWidth = "")); + } + } + } + if (((D.prevActiveIndex = D.activeIndex), D.options.liveSearch)) { + if (N && t) { + var z, + T = 0; + (D.selectpicker.view.canHighlight[T] || + (T = + 1 + D.selectpicker.view.canHighlight.slice(1).indexOf(!0)), + (z = D.selectpicker.view.visibleElements[T]), + D.defocusItem(D.selectpicker.view.currentActive), + (D.activeIndex = ( + D.selectpicker.current.data[T] || {} + ).index), + D.focusItem(z)); + } + } else D.$menuInner.trigger("focus"); + } + (l(i, !0), + this.$menuInner + .off("scroll.createView") + .on("scroll.createView", function (e, t) { + (D.noScroll || l(this.scrollTop, t), (D.noScroll = !1)); + }), + P(window) + .off("resize" + j + "." + this.selectId + ".createView") + .on( + "resize" + j + "." + this.selectId + ".createView", + function () { + D.$newElement.hasClass(V.SHOW) && + l(D.$menuInner[0].scrollTop); + }, + )); + }, + focusItem: function (e, t, i) { + if (e) { + t = t || this.selectpicker.main.data[this.activeIndex]; + var s = e.firstChild; + s && + (s.setAttribute("aria-setsize", this.selectpicker.view.size), + s.setAttribute("aria-posinset", t.posinset), + !0 !== i && + (this.focusedParent.setAttribute("aria-activedescendant", s.id), + e.classList.add("active"), + s.classList.add("active"))); + } + }, + defocusItem: function (e) { + e && + (e.classList.remove("active"), + e.firstChild && e.firstChild.classList.remove("active")); + }, + setPlaceholder: function () { + var e = this, + t = !1; + if (this.options.title && !this.multiple) { + (this.selectpicker.view.titleOption || + (this.selectpicker.view.titleOption = + document.createElement("option")), + (t = !0)); + var i = this.$element[0], + s = !1, + n = !this.selectpicker.view.titleOption.parentNode, + o = i.selectedIndex, + r = i.options[o], + l = + window.performance && + window.performance.getEntriesByType("navigation"), + a = + l && l.length + ? "back_forward" !== l[0].type + : 2 !== window.performance.navigation.type; + (n && + ((this.selectpicker.view.titleOption.className = + "bs-title-option"), + (this.selectpicker.view.titleOption.value = ""), + (s = + !r || + (0 === o && + !1 === r.defaultSelected && + void 0 === this.$element.data("selected")))), + (!n && 0 === this.selectpicker.view.titleOption.index) || + i.insertBefore( + this.selectpicker.view.titleOption, + i.firstChild, + ), + s && a + ? (i.selectedIndex = 0) + : "complete" !== document.readyState && + window.addEventListener("pageshow", function () { + e.selectpicker.view.displayedValue !== i.value && + e.render(); + })); + } + return t; + }, + buildData: function () { + var p = ':not([hidden]):not([data-hidden="true"])', + u = [], + f = 0, + m = this.setPlaceholder() ? 1 : 0; + this.options.hideDisabled && (p += ":not(:disabled)"); + var e = this.$element[0].querySelectorAll("select > *" + p); + function v(e) { + var t = u[u.length - 1]; + (t && "divider" === t.type && (t.optID || e.optID)) || + (((e = e || {}).type = "divider"), u.push(e)); + } + function g(e, t) { + if ( + (((t = t || {}).divider = + "true" === e.getAttribute("data-divider")), + t.divider) + ) + v({ optID: t.optID }); + else { + var i = u.length, + s = e.style.cssText, + n = s ? S(s) : "", + o = (e.className || "") + (t.optgroupClass || ""); + (t.optID && (o = "opt " + o), + (t.optionClass = o.trim()), + (t.inlineStyle = n), + (t.text = e.textContent), + (t.content = e.getAttribute("data-content")), + (t.tokens = e.getAttribute("data-tokens")), + (t.subtext = e.getAttribute("data-subtext")), + (t.icon = e.getAttribute("data-icon")), + (e.liIndex = i), + (t.display = t.content || t.text), + (t.type = "option"), + (t.index = i), + (t.option = e), + (t.selected = !!e.selected), + (t.disabled = t.disabled || !!e.disabled), + u.push(t)); + } + } + function t(e, t) { + var i = t[e], + s = !(e - 1 < m) && t[e - 1], + n = t[e + 1], + o = i.querySelectorAll("option" + p); + if (o.length) { + var r, + l, + a = { + display: S(i.label), + subtext: i.getAttribute("data-subtext"), + icon: i.getAttribute("data-icon"), + type: "optgroup-label", + optgroupClass: " " + (i.className || ""), + }; + (f++, s && v({ optID: f }), (a.optID = f), u.push(a)); + for (var c = 0, d = o.length; c < d; c++) { + var h = o[c]; + (0 === c && (l = (r = u.length - 1) + d), + g(h, { + headerIndex: r, + lastIndex: l, + optID: a.optID, + optgroupClass: a.optgroupClass, + disabled: i.disabled, + })); + } + n && v({ optID: f }); + } + } + for (var i = e.length, s = m; s < i; s++) { + var n = e[s]; + "OPTGROUP" !== n.tagName ? g(n, {}) : t(s, e); + } + this.selectpicker.main.data = this.selectpicker.current.data = u; + }, + buildList: function () { + var s = this, + e = this.selectpicker.main.data, + n = [], + o = 0; + function t(e) { + var t, + i = 0; + switch (e.type) { + case "divider": + t = K.li(!1, V.DIVIDER, e.optID ? e.optID + "div" : void 0); + break; + case "option": + (t = K.li( + K.a(K.text.call(s, e), e.optionClass, e.inlineStyle), + "", + e.optID, + )).firstChild && (t.firstChild.id = s.selectId + "-" + e.index); + break; + case "optgroup-label": + t = K.li( + K.label.call(s, e), + "dropdown-header" + e.optgroupClass, + e.optID, + ); + } + ((e.element = t), + n.push(t), + e.display && (i += e.display.length), + e.subtext && (i += e.subtext.length), + e.icon && (i += 1), + o < i && + ((o = i), + (s.selectpicker.view.widestOption = n[n.length - 1]))); + } + (!s.options.showTick && !s.multiple) || + _.checkMark.parentNode || + ((_.checkMark.className = + this.options.iconBase + " " + s.options.tickIcon + " check-mark"), + _.a.appendChild(_.checkMark)); + for (var i = e.length, r = 0; r < i; r++) { + t(e[r]); + } + this.selectpicker.main.elements = this.selectpicker.current.elements = + n; + }, + findLis: function () { + return this.$menuInner.find(".inner > li"); + }, + render: function () { + var e, + t = this, + i = this.$element[0], + s = this.setPlaceholder() && 0 === i.selectedIndex, + n = O(i, this.options.hideDisabled), + o = n.length, + r = this.$button[0], + l = r.querySelector(".filter-option-inner-inner"), + a = document.createTextNode(this.options.multipleSeparator), + c = _.fragment.cloneNode(!1), + d = !1; + if ( + (r.classList.toggle("bs-placeholder", t.multiple ? !o : !z(i, n)), + t.multiple || + 1 !== n.length || + (t.selectpicker.view.displayedValue = z(i, n)), + "static" === this.options.selectedTextFormat) + ) + c = K.text.call(this, { text: this.options.title }, !0); + else if ( + !1 === + (this.multiple && + -1 !== this.options.selectedTextFormat.indexOf("count") && + 1 < o && + ((1 < (e = this.options.selectedTextFormat.split(">")).length && + o > e[1]) || + (1 === e.length && 2 <= o))) + ) { + if (!s) { + for (var h = 0; h < o && h < 50; h++) { + var p = n[h], + u = this.selectpicker.main.data[p.liIndex], + f = {}; + (this.multiple && 0 < h && c.appendChild(a.cloneNode(!1)), + p.title + ? (f.text = p.title) + : u && + (u.content && t.options.showContent + ? ((f.content = u.content.toString()), (d = !0)) + : (t.options.showIcon && (f.icon = u.icon), + t.options.showSubtext && + !t.multiple && + u.subtext && + (f.subtext = " " + u.subtext), + (f.text = p.textContent.trim()))), + c.appendChild(K.text.call(this, f, !0))); + } + 49 < o && c.appendChild(document.createTextNode("...")); + } + } else { + var m = + ':not([hidden]):not([data-hidden="true"]):not([data-divider="true"])'; + this.options.hideDisabled && (m += ":not(:disabled)"); + var v = this.$element[0].querySelectorAll( + "select > option" + m + ", optgroup" + m + " option" + m, + ).length, + g = + "function" == typeof this.options.countSelectedText + ? this.options.countSelectedText(o, v) + : this.options.countSelectedText; + c = K.text.call( + this, + { + text: g + .replace("{0}", o.toString()) + .replace("{1}", v.toString()), + }, + !0, + ); + } + if ( + (null == this.options.title && + (this.options.title = this.$element.attr("title")), + c.childNodes.length || + (c = K.text.call( + this, + { + text: + void 0 !== this.options.title + ? this.options.title + : this.options.noneSelectedText, + }, + !0, + )), + (r.title = c.textContent.replace(/<[^>]*>?/g, "").trim()), + this.options.sanitize && + d && + W([c], t.options.whiteList, t.options.sanitizeFn), + (l.innerHTML = ""), + l.appendChild(c), + M.major < 4 && + this.$newElement[0].classList.contains("bs3-has-addon")) + ) { + var b = r.querySelector(".filter-expand"), + w = l.cloneNode(!0); + ((w.className = "filter-expand"), + b ? r.replaceChild(w, b) : r.appendChild(w)); + } + this.$element.trigger("rendered" + j); + }, + setStyle: function (e, t) { + var i, + s = this.$button[0], + n = this.$newElement[0], + o = this.options.style.trim(); + (this.$element.attr("class") && + this.$newElement.addClass( + this.$element + .attr("class") + .replace( + /selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi, + "", + ), + ), + M.major < 4 && + (n.classList.add("bs3"), + n.parentNode.classList && + n.parentNode.classList.contains("input-group") && + (n.previousElementSibling || n.nextElementSibling) && + ( + n.previousElementSibling || n.nextElementSibling + ).classList.contains("input-group-addon") && + n.classList.add("bs3-has-addon")), + (i = e ? e.trim() : o), + "add" == t + ? i && s.classList.add.apply(s.classList, i.split(" ")) + : "remove" == t + ? i && s.classList.remove.apply(s.classList, i.split(" ")) + : (o && s.classList.remove.apply(s.classList, o.split(" ")), + i && s.classList.add.apply(s.classList, i.split(" ")))); + }, + liHeight: function (e) { + if ( + e || + (!1 !== this.options.size && !Object.keys(this.sizeInfo).length) + ) { + var t, + i = _.div.cloneNode(!1), + s = _.div.cloneNode(!1), + n = _.div.cloneNode(!1), + o = document.createElement("ul"), + r = _.li.cloneNode(!1), + l = _.li.cloneNode(!1), + a = _.a.cloneNode(!1), + c = _.span.cloneNode(!1), + d = + this.options.header && + 0 < this.$menu.find("." + V.POPOVERHEADER).length + ? this.$menu.find("." + V.POPOVERHEADER)[0].cloneNode(!0) + : null, + h = this.options.liveSearch ? _.div.cloneNode(!1) : null, + p = + this.options.actionsBox && + this.multiple && + 0 < this.$menu.find(".bs-actionsbox").length + ? this.$menu.find(".bs-actionsbox")[0].cloneNode(!0) + : null, + u = + this.options.doneButton && + this.multiple && + 0 < this.$menu.find(".bs-donebutton").length + ? this.$menu.find(".bs-donebutton")[0].cloneNode(!0) + : null, + f = this.$element.find("option")[0]; + if ( + ((this.sizeInfo.selectWidth = this.$newElement[0].offsetWidth), + (c.className = "text"), + (a.className = "dropdown-item " + (f ? f.className : "")), + (i.className = this.$menu[0].parentNode.className + " " + V.SHOW), + (i.style.width = 0), + "auto" === this.options.width && (s.style.minWidth = 0), + (s.className = V.MENU + " " + V.SHOW), + (n.className = "inner " + V.SHOW), + (o.className = + V.MENU + " inner " + ("4" === M.major ? V.SHOW : "")), + (r.className = V.DIVIDER), + (l.className = "dropdown-header"), + c.appendChild(document.createTextNode("\u200b")), + this.selectpicker.current.data.length) + ) + for (var m = 0; m < this.selectpicker.current.data.length; m++) { + var v = this.selectpicker.current.data[m]; + if ("option" === v.type) { + t = v.element; + break; + } + } + else ((t = _.li.cloneNode(!1)), a.appendChild(c), t.appendChild(a)); + if ( + (l.appendChild(c.cloneNode(!0)), + this.selectpicker.view.widestOption && + o.appendChild( + this.selectpicker.view.widestOption.cloneNode(!0), + ), + o.appendChild(t), + o.appendChild(r), + o.appendChild(l), + d && s.appendChild(d), + h) + ) { + var g = document.createElement("input"); + ((h.className = "bs-searchbox"), + (g.className = "form-control"), + h.appendChild(g), + s.appendChild(h)); + } + (p && s.appendChild(p), + n.appendChild(o), + s.appendChild(n), + u && s.appendChild(u), + i.appendChild(s), + document.body.appendChild(i)); + var b, + w = t.offsetHeight, + I = l ? l.offsetHeight : 0, + x = d ? d.offsetHeight : 0, + k = h ? h.offsetHeight : 0, + y = p ? p.offsetHeight : 0, + $ = u ? u.offsetHeight : 0, + S = P(r).outerHeight(!0), + E = !!window.getComputedStyle && window.getComputedStyle(s), + C = s.offsetWidth, + O = E ? null : P(s), + z = { + vert: + N(E ? E.paddingTop : O.css("paddingTop")) + + N(E ? E.paddingBottom : O.css("paddingBottom")) + + N(E ? E.borderTopWidth : O.css("borderTopWidth")) + + N(E ? E.borderBottomWidth : O.css("borderBottomWidth")), + horiz: + N(E ? E.paddingLeft : O.css("paddingLeft")) + + N(E ? E.paddingRight : O.css("paddingRight")) + + N(E ? E.borderLeftWidth : O.css("borderLeftWidth")) + + N(E ? E.borderRightWidth : O.css("borderRightWidth")), + }, + T = { + vert: + z.vert + + N(E ? E.marginTop : O.css("marginTop")) + + N(E ? E.marginBottom : O.css("marginBottom")) + + 2, + horiz: + z.horiz + + N(E ? E.marginLeft : O.css("marginLeft")) + + N(E ? E.marginRight : O.css("marginRight")) + + 2, + }; + ((n.style.overflowY = "scroll"), + (b = s.offsetWidth - C), + document.body.removeChild(i), + (this.sizeInfo.liHeight = w), + (this.sizeInfo.dropdownHeaderHeight = I), + (this.sizeInfo.headerHeight = x), + (this.sizeInfo.searchHeight = k), + (this.sizeInfo.actionsHeight = y), + (this.sizeInfo.doneButtonHeight = $), + (this.sizeInfo.dividerHeight = S), + (this.sizeInfo.menuPadding = z), + (this.sizeInfo.menuExtras = T), + (this.sizeInfo.menuWidth = C), + (this.sizeInfo.menuInnerInnerWidth = C - z.horiz), + (this.sizeInfo.totalMenuWidth = this.sizeInfo.menuWidth), + (this.sizeInfo.scrollBarWidth = b), + (this.sizeInfo.selectHeight = this.$newElement[0].offsetHeight), + this.setPositionData()); + } + }, + getSelectPosition: function () { + var e, + t = P(window), + i = this.$newElement.offset(), + s = P(this.options.container); + this.options.container && s.length && !s.is("body") + ? (((e = s.offset()).top += parseInt(s.css("borderTopWidth"))), + (e.left += parseInt(s.css("borderLeftWidth")))) + : (e = { top: 0, left: 0 }); + var n = this.options.windowPadding; + ((this.sizeInfo.selectOffsetTop = i.top - e.top - t.scrollTop()), + (this.sizeInfo.selectOffsetBot = + t.height() - + this.sizeInfo.selectOffsetTop - + this.sizeInfo.selectHeight - + e.top - + n[2]), + (this.sizeInfo.selectOffsetLeft = i.left - e.left - t.scrollLeft()), + (this.sizeInfo.selectOffsetRight = + t.width() - + this.sizeInfo.selectOffsetLeft - + this.sizeInfo.selectWidth - + e.left - + n[1]), + (this.sizeInfo.selectOffsetTop -= n[0]), + (this.sizeInfo.selectOffsetLeft -= n[3])); + }, + setMenuSize: function (e) { + this.getSelectPosition(); + var t, + i, + s, + n, + o, + r, + l, + a, + c = this.sizeInfo.selectWidth, + d = this.sizeInfo.liHeight, + h = this.sizeInfo.headerHeight, + p = this.sizeInfo.searchHeight, + u = this.sizeInfo.actionsHeight, + f = this.sizeInfo.doneButtonHeight, + m = this.sizeInfo.dividerHeight, + v = this.sizeInfo.menuPadding, + g = 0; + if ( + (this.options.dropupAuto && + ((l = d * this.selectpicker.current.elements.length + v.vert), + (a = + this.sizeInfo.selectOffsetTop - this.sizeInfo.selectOffsetBot > + this.sizeInfo.menuExtras.vert && + l + this.sizeInfo.menuExtras.vert + 50 > + this.sizeInfo.selectOffsetBot), + !0 === this.selectpicker.isSearching && + (a = this.selectpicker.dropup), + this.$newElement.toggleClass(V.DROPUP, a), + (this.selectpicker.dropup = a)), + "auto" === this.options.size) + ) + ((n = + 3 < this.selectpicker.current.elements.length + ? 3 * this.sizeInfo.liHeight + this.sizeInfo.menuExtras.vert - 2 + : 0), + (i = + this.sizeInfo.selectOffsetBot - this.sizeInfo.menuExtras.vert), + (s = n + h + p + u + f), + (r = Math.max(n - v.vert, 0)), + this.$newElement.hasClass(V.DROPUP) && + (i = + this.sizeInfo.selectOffsetTop - + this.sizeInfo.menuExtras.vert), + (t = (o = i) - h - p - u - f - v.vert)); + else if ( + this.options.size && + "auto" != this.options.size && + this.selectpicker.current.elements.length > this.options.size + ) { + for (var b = 0; b < this.options.size; b++) + "divider" === this.selectpicker.current.data[b].type && g++; + ((t = (i = d * this.options.size + g * m + v.vert) - v.vert), + (o = i + h + p + u + f), + (s = r = "")); + } + (this.$menu.css({ + "max-height": o + "px", + overflow: "hidden", + "min-height": s + "px", + }), + this.$menuInner.css({ + "max-height": t + "px", + "overflow-y": "auto", + "min-height": r + "px", + }), + (this.sizeInfo.menuInnerHeight = Math.max(t, 1)), + this.selectpicker.current.data.length && + this.selectpicker.current.data[ + this.selectpicker.current.data.length - 1 + ].position > this.sizeInfo.menuInnerHeight && + ((this.sizeInfo.hasScrollBar = !0), + (this.sizeInfo.totalMenuWidth = + this.sizeInfo.menuWidth + this.sizeInfo.scrollBarWidth)), + "auto" === this.options.dropdownAlignRight && + this.$menu.toggleClass( + V.MENURIGHT, + this.sizeInfo.selectOffsetLeft > + this.sizeInfo.selectOffsetRight && + this.sizeInfo.selectOffsetRight < + this.sizeInfo.totalMenuWidth - c, + ), + this.dropdown && + this.dropdown._popper && + this.dropdown._popper.update()); + }, + setSize: function (e) { + if ( + (this.liHeight(e), + this.options.header && this.$menu.css("padding-top", 0), + !1 !== this.options.size) + ) { + var t = this, + i = P(window); + (this.setMenuSize(), + this.options.liveSearch && + this.$searchbox + .off("input.setMenuSize propertychange.setMenuSize") + .on( + "input.setMenuSize propertychange.setMenuSize", + function () { + return t.setMenuSize(); + }, + ), + "auto" === this.options.size + ? i + .off( + "resize" + + j + + "." + + this.selectId + + ".setMenuSize scroll" + + j + + "." + + this.selectId + + ".setMenuSize", + ) + .on( + "resize" + + j + + "." + + this.selectId + + ".setMenuSize scroll" + + j + + "." + + this.selectId + + ".setMenuSize", + function () { + return t.setMenuSize(); + }, + ) + : this.options.size && + "auto" != this.options.size && + this.selectpicker.current.elements.length > + this.options.size && + i.off( + "resize" + + j + + "." + + this.selectId + + ".setMenuSize scroll" + + j + + "." + + this.selectId + + ".setMenuSize", + )); + } + this.createView(!1, !0, e); + }, + setWidth: function () { + var i = this; + ("auto" === this.options.width + ? requestAnimationFrame(function () { + (i.$menu.css("min-width", "0"), + i.$element.on("loaded" + j, function () { + (i.liHeight(), i.setMenuSize()); + var e = i.$newElement.clone().appendTo("body"), + t = e + .css("width", "auto") + .children("button") + .outerWidth(); + (e.remove(), + (i.sizeInfo.selectWidth = Math.max( + i.sizeInfo.totalMenuWidth, + t, + )), + i.$newElement.css( + "width", + i.sizeInfo.selectWidth + "px", + )); + })); + }) + : "fit" === this.options.width + ? (this.$menu.css("min-width", ""), + this.$newElement.css("width", "").addClass("fit-width")) + : this.options.width + ? (this.$menu.css("min-width", ""), + this.$newElement.css("width", this.options.width)) + : (this.$menu.css("min-width", ""), + this.$newElement.css("width", "")), + this.$newElement.hasClass("fit-width") && + "fit" !== this.options.width && + this.$newElement[0].classList.remove("fit-width")); + }, + selectPosition: function () { + this.$bsContainer = P('
    '); + function e(e) { + var t = {}, + i = + r.options.display || + (!!P.fn.dropdown.Constructor.Default && + P.fn.dropdown.Constructor.Default.display); + (r.$bsContainer + .addClass(e.attr("class").replace(/form-control|fit-width/gi, "")) + .toggleClass(V.DROPUP, e.hasClass(V.DROPUP)), + (s = e.offset()), + l.is("body") + ? (n = { top: 0, left: 0 }) + : (((n = l.offset()).top += + parseInt(l.css("borderTopWidth")) - l.scrollTop()), + (n.left += + parseInt(l.css("borderLeftWidth")) - l.scrollLeft())), + (o = e.hasClass(V.DROPUP) ? 0 : e[0].offsetHeight), + (M.major < 4 || "static" === i) && + ((t.top = s.top - n.top + o), (t.left = s.left - n.left)), + (t.width = e[0].offsetWidth), + r.$bsContainer.css(t)); + } + var s, + n, + o, + r = this, + l = P(this.options.container); + (this.$button.on("click.bs.dropdown.data-api", function () { + r.isDisabled() || + (e(r.$newElement), + r.$bsContainer + .appendTo(r.options.container) + .toggleClass(V.SHOW, !r.$button.hasClass(V.SHOW)) + .append(r.$menu)); + }), + P(window) + .off( + "resize" + + j + + "." + + this.selectId + + " scroll" + + j + + "." + + this.selectId, + ) + .on( + "resize" + + j + + "." + + this.selectId + + " scroll" + + j + + "." + + this.selectId, + function () { + r.$newElement.hasClass(V.SHOW) && e(r.$newElement); + }, + ), + this.$element.on("hide" + j, function () { + (r.$menu.data("height", r.$menu.height()), + r.$bsContainer.detach()); + })); + }, + setOptionStatus: function (e) { + var t = this; + if ( + ((t.noScroll = !1), + t.selectpicker.view.visibleElements && + t.selectpicker.view.visibleElements.length) + ) + for ( + var i = 0; + i < t.selectpicker.view.visibleElements.length; + i++ + ) { + var s = + t.selectpicker.current.data[ + i + t.selectpicker.view.position0 + ], + n = s.option; + n && + (!0 !== e && t.setDisabled(s.index, s.disabled), + t.setSelected(s.index, n.selected)); + } + }, + setSelected: function (e, t) { + var i, + s, + n = this.selectpicker.main.elements[e], + o = this.selectpicker.main.data[e], + r = void 0 !== this.activeIndex, + l = this.activeIndex === e || (t && !this.multiple && !r); + ((o.selected = t), + (s = n.firstChild), + t && (this.selectedIndex = e), + n.classList.toggle("selected", t), + l + ? (this.focusItem(n, o), + (this.selectpicker.view.currentActive = n), + (this.activeIndex = e)) + : this.defocusItem(n), + s && + (s.classList.toggle("selected", t), + t + ? s.setAttribute("aria-selected", !0) + : this.multiple + ? s.setAttribute("aria-selected", !1) + : s.removeAttribute("aria-selected")), + l || + r || + !t || + void 0 === this.prevActiveIndex || + ((i = this.selectpicker.main.elements[this.prevActiveIndex]), + this.defocusItem(i))); + }, + setDisabled: function (e, t) { + var i, + s = this.selectpicker.main.elements[e]; + ((this.selectpicker.main.data[e].disabled = t), + (i = s.firstChild), + s.classList.toggle(V.DISABLED, t), + i && + ("4" === M.major && i.classList.toggle(V.DISABLED, t), + t + ? (i.setAttribute("aria-disabled", t), + i.setAttribute("tabindex", -1)) + : (i.removeAttribute("aria-disabled"), + i.setAttribute("tabindex", 0)))); + }, + isDisabled: function () { + return this.$element[0].disabled; + }, + checkDisabled: function () { + this.isDisabled() + ? (this.$newElement[0].classList.add(V.DISABLED), + this.$button.addClass(V.DISABLED).attr("aria-disabled", !0)) + : this.$button[0].classList.contains(V.DISABLED) && + (this.$newElement[0].classList.remove(V.DISABLED), + this.$button.removeClass(V.DISABLED).attr("aria-disabled", !1)); + }, + clickListener: function () { + var C = this, + t = P(document); + function e() { + C.options.liveSearch + ? C.$searchbox.trigger("focus") + : C.$menuInner.trigger("focus"); + } + function i() { + C.dropdown && + C.dropdown._popper && + C.dropdown._popper.state.isCreated + ? e() + : requestAnimationFrame(i); + } + (t.data("spaceSelect", !1), + this.$button.on("keyup", function (e) { + /(32)/.test(e.keyCode.toString(10)) && + t.data("spaceSelect") && + (e.preventDefault(), t.data("spaceSelect", !1)); + }), + this.$newElement.on("show.bs.dropdown", function () { + 3 < M.major && + !C.dropdown && + ((C.dropdown = C.$button.data("bs.dropdown")), + (C.dropdown._menu = C.$menu[0])); + }), + this.$button.on("click.bs.dropdown.data-api", function () { + C.$newElement.hasClass(V.SHOW) || C.setSize(); + }), + this.$element.on("shown" + j, function () { + (C.$menuInner[0].scrollTop !== C.selectpicker.view.scrollTop && + (C.$menuInner[0].scrollTop = C.selectpicker.view.scrollTop), + 3 < M.major ? requestAnimationFrame(i) : e()); + }), + this.$menuInner.on("mouseenter", "li a", function (e) { + var t = this.parentElement, + i = C.isVirtual() ? C.selectpicker.view.position0 : 0, + s = Array.prototype.indexOf.call(t.parentElement.children, t), + n = C.selectpicker.current.data[s + i]; + C.focusItem(t, n, !0); + }), + this.$menuInner.on("click", "li a", function (e, t) { + var i = P(this), + s = C.$element[0], + n = C.isVirtual() ? C.selectpicker.view.position0 : 0, + o = C.selectpicker.current.data[i.parent().index() + n], + r = o.index, + l = z(s), + a = s.selectedIndex, + c = s.options[a], + d = !0; + if ( + (C.multiple && + 1 !== C.options.maxOptions && + e.stopPropagation(), + e.preventDefault(), + !C.isDisabled() && !i.parent().hasClass(V.DISABLED)) + ) { + var h = o.option, + p = P(h), + u = h.selected, + f = p.parent("optgroup"), + m = f.find("option"), + v = C.options.maxOptions, + g = f.data("maxOptions") || !1; + if ( + (r === C.activeIndex && (t = !0), + t || + ((C.prevActiveIndex = C.activeIndex), + (C.activeIndex = void 0)), + C.multiple) + ) { + if ( + ((h.selected = !u), + C.setSelected(r, !u), + C.focusedParent.focus(), + !1 !== v || !1 !== g) + ) { + var b = v < O(s).length, + w = g < f.find("option:selected").length; + if ((v && b) || (g && w)) + if (v && 1 == v) + ((s.selectedIndex = -1), + (h.selected = !0), + C.setOptionStatus(!0)); + else if (g && 1 == g) { + for (var I = 0; I < m.length; I++) { + var x = m[I]; + ((x.selected = !1), C.setSelected(x.liIndex, !1)); + } + ((h.selected = !0), C.setSelected(r, !0)); + } else { + var k = + "string" == typeof C.options.maxOptionsText + ? [ + C.options.maxOptionsText, + C.options.maxOptionsText, + ] + : C.options.maxOptionsText, + y = "function" == typeof k ? k(v, g) : k, + $ = y[0].replace("{n}", v), + S = y[1].replace("{n}", g), + E = P('
    '); + (y[2] && + (($ = $.replace("{var}", y[2][1 < v ? 0 : 1])), + (S = S.replace("{var}", y[2][1 < g ? 0 : 1]))), + (h.selected = !1), + C.$menu.append(E), + v && + b && + (E.append(P("
    " + $ + "
    ")), + (d = !1), + C.$element.trigger("maxReached" + j)), + g && + w && + (E.append(P("
    " + S + "
    ")), + (d = !1), + C.$element.trigger("maxReachedGrp" + j)), + setTimeout(function () { + C.setSelected(r, !1); + }, 10), + E[0].classList.add("fadeOut"), + setTimeout(function () { + E.remove(); + }, 1050)); + } + } + } else + (c && (c.selected = !1), + (h.selected = !0), + C.setSelected(r, !0)); + (!C.multiple || (C.multiple && 1 === C.options.maxOptions) + ? C.$button.trigger("focus") + : C.options.liveSearch && C.$searchbox.trigger("focus"), + d && + ((!C.multiple && a === s.selectedIndex) || + ((T = [h.index, p.prop("selected"), l]), + C.$element.triggerNative("change")))); + } + }), + this.$menu.on( + "click", + "li." + + V.DISABLED + + " a, ." + + V.POPOVERHEADER + + ", ." + + V.POPOVERHEADER + + " :not(.close)", + function (e) { + e.currentTarget == this && + (e.preventDefault(), + e.stopPropagation(), + C.options.liveSearch && !P(e.target).hasClass("close") + ? C.$searchbox.trigger("focus") + : C.$button.trigger("focus")); + }, + ), + this.$menuInner.on( + "click", + ".divider, .dropdown-header", + function (e) { + (e.preventDefault(), + e.stopPropagation(), + C.options.liveSearch + ? C.$searchbox.trigger("focus") + : C.$button.trigger("focus")); + }, + ), + this.$menu.on( + "click", + "." + V.POPOVERHEADER + " .close", + function () { + C.$button.trigger("click"); + }, + ), + this.$searchbox.on("click", function (e) { + e.stopPropagation(); + }), + this.$menu.on("click", ".actions-btn", function (e) { + (C.options.liveSearch + ? C.$searchbox.trigger("focus") + : C.$button.trigger("focus"), + e.preventDefault(), + e.stopPropagation(), + P(this).hasClass("bs-select-all") + ? C.selectAll() + : C.deselectAll()); + }), + this.$button + .on("focus" + j, function (e) { + var t = C.$element[0].getAttribute("tabindex"); + void 0 !== t && + e.originalEvent && + e.originalEvent.isTrusted && + (this.setAttribute("tabindex", t), + C.$element[0].setAttribute("tabindex", -1), + (C.selectpicker.view.tabindex = t)); + }) + .on("blur" + j, function (e) { + void 0 !== C.selectpicker.view.tabindex && + e.originalEvent && + e.originalEvent.isTrusted && + (C.$element[0].setAttribute( + "tabindex", + C.selectpicker.view.tabindex, + ), + this.setAttribute("tabindex", -1), + (C.selectpicker.view.tabindex = void 0)); + }), + this.$element + .on("change" + j, function () { + (C.render(), C.$element.trigger("changed" + j, T), (T = null)); + }) + .on("focus" + j, function () { + C.options.mobile || C.$button[0].focus(); + })); + }, + liveSearchListener: function () { + var u = this; + (this.$button.on("click.bs.dropdown.data-api", function () { + u.$searchbox.val() && + (u.$searchbox.val(""), + (u.selectpicker.search.previousValue = void 0)); + }), + this.$searchbox.on( + "click.bs.dropdown.data-api focus.bs.dropdown.data-api touchend.bs.dropdown.data-api", + function (e) { + e.stopPropagation(); + }, + ), + this.$searchbox.on("input propertychange", function () { + var e = u.$searchbox[0].value; + if ( + ((u.selectpicker.search.elements = []), + (u.selectpicker.search.data = []), + e) + ) { + var t = [], + i = e.toUpperCase(), + s = {}, + n = [], + o = u._searchStyle(), + r = u.options.liveSearchNormalize; + r && (i = w(i)); + for (var l = 0; l < u.selectpicker.main.data.length; l++) { + var a = u.selectpicker.main.data[l]; + (s[l] || (s[l] = k(a, i, o, r)), + s[l] && + void 0 !== a.headerIndex && + -1 === n.indexOf(a.headerIndex) && + (0 < a.headerIndex && + ((s[a.headerIndex - 1] = !0), + n.push(a.headerIndex - 1)), + (s[a.headerIndex] = !0), + n.push(a.headerIndex), + (s[a.lastIndex + 1] = !0)), + s[l] && "optgroup-label" !== a.type && n.push(l)); + } + l = 0; + for (var c = n.length; l < c; l++) { + var d = n[l], + h = n[l - 1], + p = + ((a = u.selectpicker.main.data[d]), + u.selectpicker.main.data[h]); + ("divider" !== a.type || + ("divider" === a.type && + p && + "divider" !== p.type && + c - 1 !== l)) && + (u.selectpicker.search.data.push(a), + t.push(u.selectpicker.main.elements[d])); + } + ((u.activeIndex = void 0), + (u.noScroll = !0), + u.$menuInner.scrollTop(0), + (u.selectpicker.search.elements = t), + u.createView(!0), + function (e, t) { + e.length || + ((_.noResults.innerHTML = + this.options.noneResultsText.replace( + "{0}", + '"' + S(t) + '"', + )), + this.$menuInner[0].firstChild.appendChild(_.noResults)); + }.call(u, t, e)); + } else + u.selectpicker.search.previousValue && + (u.$menuInner.scrollTop(0), u.createView(!1)); + u.selectpicker.search.previousValue = e; + })); + }, + _searchStyle: function () { + return this.options.liveSearchStyle || "contains"; + }, + val: function (e) { + var t = this.$element[0]; + if (void 0 === e) return this.$element.val(); + var i = z(t); + if ( + ((T = [null, null, i]), + this.$element.val(e).trigger("changed" + j, T), + this.$newElement.hasClass(V.SHOW)) + ) + if (this.multiple) this.setOptionStatus(!0); + else { + var s = (t.options[t.selectedIndex] || {}).liIndex; + "number" == typeof s && + (this.setSelected(this.selectedIndex, !1), + this.setSelected(s, !0)); + } + return (this.render(), (T = null), this.$element); + }, + changeAll: function (e) { + if (this.multiple) { + void 0 === e && (e = !0); + var t = this.$element[0], + i = 0, + s = 0, + n = z(t); + t.classList.add("bs-select-hidden"); + for ( + var o = 0, r = this.selectpicker.current.data, l = r.length; + o < l; + o++ + ) { + var a = r[o], + c = a.option; + c && + !a.disabled && + "divider" !== a.type && + (a.selected && i++, !0 === (c.selected = e) && s++); + } + (t.classList.remove("bs-select-hidden"), + i !== s && + (this.setOptionStatus(), + (T = [null, null, n]), + this.$element.triggerNative("change"))); + } + }, + selectAll: function () { + return this.changeAll(!0); + }, + deselectAll: function () { + return this.changeAll(!1); + }, + toggle: function (e) { + ((e = e || window.event) && e.stopPropagation(), + this.$button.trigger("click.bs.dropdown.data-api")); + }, + keydown: function (e) { + var t, + i, + s, + n, + o, + r = P(this), + l = r.hasClass("dropdown-toggle"), + a = (l ? r.closest(".dropdown") : r.closest(F.MENU)).data("this"), + c = a.findLis(), + d = !1, + h = e.which === H && !l && !a.options.selectOnTab, + p = G.test(e.which) || h, + u = a.$menuInner[0].scrollTop, + f = !0 === a.isVirtual() ? a.selectpicker.view.position0 : 0; + if (!(112 <= e.which && e.which <= 123)) + if ( + !(i = a.$newElement.hasClass(V.SHOW)) && + (p || + (48 <= e.which && e.which <= 57) || + (96 <= e.which && e.which <= 105) || + (65 <= e.which && e.which <= 90)) && + (a.$button.trigger("click.bs.dropdown.data-api"), + a.options.liveSearch) + ) + a.$searchbox.trigger("focus"); + else { + if ( + (e.which === A && + i && + (e.preventDefault(), + a.$button + .trigger("click.bs.dropdown.data-api") + .trigger("focus")), + p) + ) { + if (!c.length) return; + (-1 !== + (t = (s = a.selectpicker.main.elements[a.activeIndex]) + ? Array.prototype.indexOf.call(s.parentElement.children, s) + : -1) && a.defocusItem(s), + e.which === B + ? (-1 !== t && t--, + t + f < 0 && (t += c.length), + a.selectpicker.view.canHighlight[t + f] || + (-1 === + (t = + a.selectpicker.view.canHighlight + .slice(0, t + f) + .lastIndexOf(!0) - f) && + (t = c.length - 1))) + : (e.which !== R && !h) || + (++t + f >= a.selectpicker.view.canHighlight.length && + (t = a.selectpicker.view.firstHighlightIndex), + a.selectpicker.view.canHighlight[t + f] || + (t = + t + + 1 + + a.selectpicker.view.canHighlight + .slice(t + f + 1) + .indexOf(!0))), + e.preventDefault()); + var m = f + t; + (e.which === B + ? 0 === f && t === c.length - 1 + ? ((a.$menuInner[0].scrollTop = + a.$menuInner[0].scrollHeight), + (m = a.selectpicker.current.elements.length - 1)) + : (d = + (o = + (n = a.selectpicker.current.data[m]).position - + n.height) < u) + : (e.which !== R && !h) || + (t === a.selectpicker.view.firstHighlightIndex + ? ((a.$menuInner[0].scrollTop = 0), + (m = a.selectpicker.view.firstHighlightIndex)) + : (d = + u < + (o = + (n = a.selectpicker.current.data[m]).position - + a.sizeInfo.menuInnerHeight))), + (s = a.selectpicker.current.elements[m]), + (a.activeIndex = a.selectpicker.current.data[m].index), + a.focusItem(s), + (a.selectpicker.view.currentActive = s), + d && (a.$menuInner[0].scrollTop = o), + a.options.liveSearch + ? a.$searchbox.trigger("focus") + : r.trigger("focus")); + } else if ( + (!r.is("input") && !q.test(e.which)) || + (e.which === D && a.selectpicker.keydown.keyHistory) + ) { + var v, + g, + b = []; + (e.preventDefault(), + (a.selectpicker.keydown.keyHistory += C[e.which]), + a.selectpicker.keydown.resetKeyHistory.cancel && + clearTimeout(a.selectpicker.keydown.resetKeyHistory.cancel), + (a.selectpicker.keydown.resetKeyHistory.cancel = + a.selectpicker.keydown.resetKeyHistory.start()), + (g = a.selectpicker.keydown.keyHistory), + /^(.)\1+$/.test(g) && (g = g.charAt(0))); + for (var w = 0; w < a.selectpicker.current.data.length; w++) { + var I = a.selectpicker.current.data[w]; + k(I, g, "startsWith", !0) && + a.selectpicker.view.canHighlight[w] && + b.push(I.index); + } + if (b.length) { + var x = 0; + (c.removeClass("active").find("a").removeClass("active"), + 1 === g.length && + (-1 === (x = b.indexOf(a.activeIndex)) || + x === b.length - 1 + ? (x = 0) + : x++), + (v = b[x]), + (d = + 0 < u - (n = a.selectpicker.main.data[v]).position + ? ((o = n.position - n.height), !0) + : ((o = n.position - a.sizeInfo.menuInnerHeight), + n.position > u + a.sizeInfo.menuInnerHeight)), + (s = a.selectpicker.main.elements[v]), + (a.activeIndex = b[x]), + a.focusItem(s), + s && s.firstChild.focus(), + d && (a.$menuInner[0].scrollTop = o), + r.trigger("focus")); + } + } + i && + ((e.which === D && !a.selectpicker.keydown.keyHistory) || + e.which === L || + (e.which === H && a.options.selectOnTab)) && + (e.which !== D && e.preventDefault(), + (a.options.liveSearch && e.which === D) || + (a.$menuInner.find(".active a").trigger("click", !0), + r.trigger("focus"), + a.options.liveSearch || + (e.preventDefault(), P(document).data("spaceSelect", !0)))); + } + }, + mobile: function () { + ((this.options.mobile = !0), + this.$element[0].classList.add("mobile-device")); + }, + refresh: function () { + var e = P.extend({}, this.options, this.$element.data()); + ((this.options = e), + this.checkDisabled(), + this.buildData(), + this.setStyle(), + this.render(), + this.buildList(), + this.setWidth(), + this.setSize(!0), + this.$element.trigger("refreshed" + j)); + }, + hide: function () { + this.$newElement.hide(); + }, + show: function () { + this.$newElement.show(); + }, + remove: function () { + (this.$newElement.remove(), this.$element.remove()); + }, + destroy: function () { + (this.$newElement.before(this.$element).remove(), + this.$bsContainer + ? this.$bsContainer.remove() + : this.$menu.remove(), + this.selectpicker.view.titleOption && + this.selectpicker.view.titleOption.parentNode && + this.selectpicker.view.titleOption.parentNode.removeChild( + this.selectpicker.view.titleOption, + ), + this.$element + .off(j) + .removeData("selectpicker") + .removeClass("bs-select-hidden selectpicker"), + P(window).off(j + "." + this.selectId)); + }, + })); + var J = P.fn.selectpicker; + function Q() { + if (P.fn.dropdown) + return ( + P.fn.dropdown.Constructor._dataApiKeydownHandler || + P.fn.dropdown.Constructor.prototype.keydown + ).apply(this, arguments); + } + ((P.fn.selectpicker = Z), + (P.fn.selectpicker.Constructor = Y), + (P.fn.selectpicker.noConflict = function () { + return ((P.fn.selectpicker = J), this); + }), + P(document) + .off("keydown.bs.dropdown.data-api") + .on( + "keydown.bs.dropdown.data-api", + ':not(.bootstrap-select) > [data-toggle="dropdown"]', + Q, + ) + .on( + "keydown.bs.dropdown.data-api", + ":not(.bootstrap-select) > .dropdown-menu", + Q, + ) + .on( + "keydown" + j, + '.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bootstrap-select .bs-searchbox input', + Y.prototype.keydown, + ) + .on( + "focusin.modal", + '.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bootstrap-select .bs-searchbox input', + function (e) { + e.stopPropagation(); + }, + ), + P(window).on("load" + j + ".data-api", function () { + P(".selectpicker").each(function () { + var e = P(this); + Z.call(e, e.data()); + }); + })); + })(e); +}); diff --git a/libs/bootstrap-table-1.23.4.min.js b/libs/bootstrap-table-1.23.4.min.js index fdad669..5e11e90 100644 --- a/libs/bootstrap-table-1.23.4.min.js +++ b/libs/bootstrap-table-1.23.4.min.js @@ -1,10 +1,10067 @@ /** - * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) - * - * @version v1.23.4 - * @homepage https://bootstrap-table.com - * @author wenzhixin (http://wenzhixin.net.cn/) - * @license MIT - */ + * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) + * + * @version v1.23.4 + * @homepage https://bootstrap-table.com + * @author wenzhixin (http://wenzhixin.net.cn/) + * @license MIT + */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],e):(t="undefined"!=typeof globalThis?globalThis:t||self).BootstrapTable=e(t.jQuery)}(this,(function(t){"use strict";function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,n=Array(e);i=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,a=!0,s=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return a=t.done,t},e:function(t){s=!0,r=t},f:function(){try{a||null==i.return||i.return()}finally{if(s)throw r}}}}function r(t,e,i){return(e=h(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function a(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,n)}return i}function s(t){for(var e=1;e0&&C[0]<4?1:+(C[0]+C[1])),!A&&ct&&(!(C=ct.match(/Edge\/(\d+)/))||C[1]>=74)&&(C=ct.match(/Chrome\/(\d+)/))&&(A=+C[1]);var pt=A,gt=pt,vt=b,bt=g.String,mt=!!Object.getOwnPropertySymbols&&!vt((function(){var t=Symbol("symbol detection");return!bt(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&>&><41})),yt=mt&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,wt=nt,St=X,xt=ot,kt=Object,Ot=yt?function(t){return"symbol"==typeof t}:function(t){var e=wt("Symbol");return St(e)&&xt(e.prototype,kt(t))},Pt=String,Tt=function(t){try{return Pt(t)}catch(t){return"Object"}},Ct=X,At=Tt,It=TypeError,Rt=function(t){if(Ct(t))return t;throw new It(At(t)+" is not a function")},$t=Rt,Et=q,jt=function(t,e){var i=t[e];return Et(i)?void 0:$t(i)},Lt=x,Nt=X,Ft=tt,Bt=TypeError,Dt={exports:{}},_t=g,Vt=Object.defineProperty,Ht=function(t,e){try{Vt(_t,t,{value:e,configurable:!0,writable:!0})}catch(i){_t[t]=e}return e},Ut=g,Mt=Ht,qt="__core-js_shared__",zt=Dt.exports=Ut[qt]||Mt(qt,{});(zt.versions||(zt.versions=[])).push({version:"3.38.1",mode:"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.38.1/LICENSE",source:"https://github.com/zloirock/core-js"});var Wt=Dt.exports,Gt=Wt,Kt=function(t,e){return Gt[t]||(Gt[t]=e||{})},Jt=G,Yt=Object,Qt=function(t){return Yt(Jt(t))},Xt=Qt,Zt=L({}.hasOwnProperty),te=Object.hasOwn||function(t,e){return Zt(Xt(t),e)},ee=L,ie=0,ne=Math.random(),oe=ee(1..toString),re=function(t){return"Symbol("+(void 0===t?"":t)+")_"+oe(++ie+ne,36)},ae=Kt,se=te,le=re,ce=mt,he=yt,ue=g.Symbol,fe=ae("wks"),de=he?ue.for||ue:ue&&ue.withoutSetter||le,pe=function(t){return se(fe,t)||(fe[t]=ce&&se(ue,t)?ue[t]:de("Symbol."+t)),fe[t]},ge=x,ve=tt,be=Ot,me=jt,ye=function(t,e){var i,n;if("string"===e&&Nt(i=t.toString)&&!Ft(n=Lt(i,t)))return n;if(Nt(i=t.valueOf)&&!Ft(n=Lt(i,t)))return n;if("string"!==e&&Nt(i=t.toString)&&!Ft(n=Lt(i,t)))return n;throw new Bt("Can't convert object to primitive value")},we=TypeError,Se=pe("toPrimitive"),xe=function(t,e){if(!ve(t)||be(t))return t;var i,n=me(t,Se);if(n){if(void 0===e&&(e="default"),i=ge(n,t,e),!ve(i)||be(i))return i;throw new we("Can't convert object to primitive value")}return void 0===e&&(e="number"),ye(t,e)},ke=xe,Oe=Ot,Pe=function(t){var e=ke(t,"string");return Oe(e)?e:e+""},Te=tt,Ce=g.document,Ae=Te(Ce)&&Te(Ce.createElement),Ie=function(t){return Ae?Ce.createElement(t):{}},Re=Ie,$e=!m&&!b((function(){return 7!==Object.defineProperty(Re("div"),"a",{get:function(){return 7}}).a})),Ee=m,je=x,Le=k,Ne=I,Fe=Y,Be=Pe,De=te,_e=$e,Ve=Object.getOwnPropertyDescriptor;v.f=Ee?Ve:function(t,e){if(t=Fe(t),e=Be(e),_e)try{return Ve(t,e)}catch(t){}if(De(t,e))return Ne(!je(Le.f,t,e),t[e])};var He={},Ue=m&&b((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype})),Me=tt,qe=String,ze=TypeError,We=function(t){if(Me(t))return t;throw new ze(qe(t)+" is not an object")},Ge=m,Ke=$e,Je=Ue,Ye=We,Qe=Pe,Xe=TypeError,Ze=Object.defineProperty,ti=Object.getOwnPropertyDescriptor,ei="enumerable",ii="configurable",ni="writable";He.f=Ge?Je?function(t,e,i){if(Ye(t),e=Qe(e),Ye(i),"function"==typeof t&&"prototype"===e&&"value"in i&&ni in i&&!i[ni]){var n=ti(t,e);n&&n[ni]&&(t[e]=i.value,i={configurable:ii in i?i[ii]:n[ii],enumerable:ei in i?i[ei]:n[ei],writable:!1})}return Ze(t,e,i)}:Ze:function(t,e,i){if(Ye(t),e=Qe(e),Ye(i),Ke)try{return Ze(t,e,i)}catch(t){}if("get"in i||"set"in i)throw new Xe("Accessors not supported");return"value"in i&&(t[e]=i.value),t};var oi=He,ri=I,ai=m?function(t,e,i){return oi.f(t,e,ri(1,i))}:function(t,e,i){return t[e]=i,t},si={exports:{}},li=m,ci=te,hi=Function.prototype,ui=li&&Object.getOwnPropertyDescriptor,fi=ci(hi,"name"),di={EXISTS:fi,PROPER:fi&&"something"===function(){}.name,CONFIGURABLE:fi&&(!li||li&&ui(hi,"name").configurable)},pi=X,gi=Wt,vi=L(Function.toString);pi(gi.inspectSource)||(gi.inspectSource=function(t){return vi(t)});var bi,mi,yi,wi=gi.inspectSource,Si=X,xi=g.WeakMap,ki=Si(xi)&&/native code/.test(String(xi)),Oi=re,Pi=Kt("keys"),Ti=function(t){return Pi[t]||(Pi[t]=Oi(t))},Ci={},Ai=ki,Ii=g,Ri=tt,$i=ai,Ei=te,ji=Wt,Li=Ti,Ni=Ci,Fi="Object already initialized",Bi=Ii.TypeError,Di=Ii.WeakMap;if(Ai||ji.state){var _i=ji.state||(ji.state=new Di);_i.get=_i.get,_i.has=_i.has,_i.set=_i.set,bi=function(t,e){if(_i.has(t))throw new Bi(Fi);return e.facade=t,_i.set(t,e),e},mi=function(t){return _i.get(t)||{}},yi=function(t){return _i.has(t)}}else{var Vi=Li("state");Ni[Vi]=!0,bi=function(t,e){if(Ei(t,Vi))throw new Bi(Fi);return e.facade=t,$i(t,Vi,e),e},mi=function(t){return Ei(t,Vi)?t[Vi]:{}},yi=function(t){return Ei(t,Vi)}}var Hi={set:bi,get:mi,has:yi,enforce:function(t){return yi(t)?mi(t):bi(t,{})},getterFor:function(t){return function(e){var i;if(!Ri(e)||(i=mi(e)).type!==t)throw new Bi("Incompatible receiver, "+t+" required");return i}}},Ui=L,Mi=b,qi=X,zi=te,Wi=m,Gi=di.CONFIGURABLE,Ki=wi,Ji=Hi.enforce,Yi=Hi.get,Qi=String,Xi=Object.defineProperty,Zi=Ui("".slice),tn=Ui("".replace),en=Ui([].join),nn=Wi&&!Mi((function(){return 8!==Xi((function(){}),"length",{value:8}).length})),on=String(String).split("String"),rn=si.exports=function(t,e,i){"Symbol("===Zi(Qi(e),0,7)&&(e="["+tn(Qi(e),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),i&&i.getter&&(e="get "+e),i&&i.setter&&(e="set "+e),(!zi(t,"name")||Gi&&t.name!==e)&&(Wi?Xi(t,"name",{value:e,configurable:!0}):t.name=e),nn&&i&&zi(i,"arity")&&t.length!==i.arity&&Xi(t,"length",{value:i.arity});try{i&&zi(i,"constructor")&&i.constructor?Wi&&Xi(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var n=Ji(t);return zi(n,"source")||(n.source=en(on,"string"==typeof e?e:"")),t};Function.prototype.toString=rn((function(){return qi(this)&&Yi(this).source||Ki(this)}),"toString");var an=si.exports,sn=X,ln=He,cn=an,hn=Ht,un=function(t,e,i,n){n||(n={});var o=n.enumerable,r=void 0!==n.name?n.name:e;if(sn(i)&&cn(i,r,n),n.global)o?t[e]=i:hn(e,i);else{try{n.unsafe?t[e]&&(o=!0):delete t[e]}catch(t){}o?t[e]=i:ln.f(t,e,{value:i,enumerable:!1,configurable:!n.nonConfigurable,writable:!n.nonWritable})}return t},fn={},dn=Math.ceil,pn=Math.floor,gn=Math.trunc||function(t){var e=+t;return(e>0?pn:dn)(e)},vn=function(t){var e=+t;return e!=e||0===e?0:gn(e)},bn=vn,mn=Math.max,yn=Math.min,wn=function(t,e){var i=bn(t);return i<0?mn(i+e,0):yn(i,e)},Sn=vn,xn=Math.min,kn=function(t){var e=Sn(t);return e>0?xn(e,9007199254740991):0},On=kn,Pn=function(t){return On(t.length)},Tn=Y,Cn=wn,An=Pn,In=function(t){return function(e,i,n){var o=Tn(e),r=An(o);if(0===r)return!t&&-1;var a,s=Cn(n,r);if(t&&i!=i){for(;r>s;)if((a=o[s++])!=a)return!0}else for(;r>s;s++)if((t||s in o)&&o[s]===i)return t||s||0;return!t&&-1}},Rn={includes:In(!0),indexOf:In(!1)},$n=te,En=Y,jn=Rn.indexOf,Ln=Ci,Nn=L([].push),Fn=function(t,e){var i,n=En(t),o=0,r=[];for(i in n)!$n(Ln,i)&&$n(n,i)&&Nn(r,i);for(;e.length>o;)$n(n,i=e[o++])&&(~jn(r,i)||Nn(r,i));return r},Bn=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Dn=Fn,_n=Bn.concat("length","prototype");fn.f=Object.getOwnPropertyNames||function(t){return Dn(t,_n)};var Vn={};Vn.f=Object.getOwnPropertySymbols;var Hn=nt,Un=fn,Mn=Vn,qn=We,zn=L([].concat),Wn=Hn("Reflect","ownKeys")||function(t){var e=Un.f(qn(t)),i=Mn.f;return i?zn(e,i(t)):e},Gn=te,Kn=Wn,Jn=v,Yn=He,Qn=b,Xn=X,Zn=/#|\.prototype\./,to=function(t,e){var i=io[eo(t)];return i===oo||i!==no&&(Xn(e)?Qn(e):!!e)},eo=to.normalize=function(t){return String(t).replace(Zn,".").toLowerCase()},io=to.data={},no=to.NATIVE="N",oo=to.POLYFILL="P",ro=to,ao=g,so=v.f,lo=ai,co=un,ho=Ht,uo=function(t,e,i){for(var n=Kn(e),o=Yn.f,r=Jn.f,a=0;a9007199254740991)throw bo("Maximum allowed index exceeded");return t},yo=m,wo=He,So=I,xo=function(t,e,i){yo?wo.f(t,e,So(0,i)):t[e]=i},ko={};ko[pe("toStringTag")]="z";var Oo="[object z]"===String(ko),Po=Oo,To=X,Co=D,Ao=pe("toStringTag"),Io=Object,Ro="Arguments"===Co(function(){return arguments}()),$o=Po?Co:function(t){var e,i,n;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(i=function(t,e){try{return t[e]}catch(t){}}(e=Io(t),Ao))?i:Ro?Co(e):"Object"===(n=Co(e))&&To(e.callee)?"Arguments":n},Eo=L,jo=b,Lo=X,No=$o,Fo=wi,Bo=function(){},Do=nt("Reflect","construct"),_o=/^\s*(?:class|function)\b/,Vo=Eo(_o.exec),Ho=!_o.test(Bo),Uo=function(t){if(!Lo(t))return!1;try{return Do(Bo,[],t),!0}catch(t){return!1}},Mo=function(t){if(!Lo(t))return!1;switch(No(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return Ho||!!Vo(_o,Fo(t))}catch(t){return!0}};Mo.sham=!0;var qo=!Do||jo((function(){var t;return Uo(Uo.call)||!Uo(Object)||!Uo((function(){t=!0}))||t}))?Mo:Uo,zo=vo,Wo=qo,Go=tt,Ko=pe("species"),Jo=Array,Yo=function(t){var e;return zo(t)&&(e=t.constructor,(Wo(e)&&(e===Jo||zo(e.prototype))||Go(e)&&null===(e=e[Ko]))&&(e=void 0)),void 0===e?Jo:e},Qo=function(t,e){return new(Yo(t))(0===e?0:e)},Xo=b,Zo=pt,tr=pe("species"),er=function(t){return Zo>=51||!Xo((function(){var e=[];return(e.constructor={})[tr]=function(){return{foo:1}},1!==e[t](Boolean).foo}))},ir=po,nr=b,or=vo,rr=tt,ar=Qt,sr=Pn,lr=mo,cr=xo,hr=Qo,ur=er,fr=pt,dr=pe("isConcatSpreadable"),pr=fr>=51||!nr((function(){var t=[];return t[dr]=!1,t.concat()[0]!==t})),gr=function(t){if(!rr(t))return!1;var e=t[dr];return void 0!==e?!!e:or(t)};ir({target:"Array",proto:!0,arity:1,forced:!pr||!ur("concat")},{concat:function(t){var e,i,n,o,r,a=ar(this),s=hr(a,0),l=0;for(e=-1,n=arguments.length;em;m++)if((s||m in g)&&(d=b(f=g[m],m,p),t))if(e)w[m]=d;else if(d)switch(t){case 3:return!0;case 5:return f;case 6:return m;case 2:Ar(w,f)}else switch(t){case 4:return!1;case 7:Ar(w,f)}return r?-1:n||o?o:w}},Rr={forEach:Ir(0),map:Ir(1),filter:Ir(2),some:Ir(3),every:Ir(4),find:Ir(5),findIndex:Ir(6),filterReject:Ir(7)},$r=Rr.filter;po({target:"Array",proto:!0,forced:!er("filter")},{filter:function(t){return $r(this,t,arguments.length>1?arguments[1]:void 0)}});var Er={},jr=Fn,Lr=Bn,Nr=Object.keys||function(t){return jr(t,Lr)},Fr=m,Br=Ue,Dr=He,_r=We,Vr=Y,Hr=Nr;Er.f=Fr&&!Br?Object.defineProperties:function(t,e){_r(t);for(var i,n=Vr(e),o=Hr(e),r=o.length,a=0;r>a;)Dr.f(t,i=o[a++],n[i]);return t};var Ur,Mr=nt("document","documentElement"),qr=We,zr=Er,Wr=Bn,Gr=Ci,Kr=Mr,Jr=Ie,Yr="prototype",Qr="script",Xr=Ti("IE_PROTO"),Zr=function(){},ta=function(t){return"<"+Qr+">"+t+""},ea=function(t){t.write(ta("")),t.close();var e=t.parentWindow.Object;return t=null,e},ia=function(){try{Ur=new ActiveXObject("htmlfile")}catch(t){}var t,e,i;ia="undefined"!=typeof document?document.domain&&Ur?ea(Ur):(e=Jr("iframe"),i="java"+Qr+":",e.style.display="none",Kr.appendChild(e),e.src=String(i),(t=e.contentWindow.document).open(),t.write(ta("document.F=Object")),t.close(),t.F):ea(Ur);for(var n=Wr.length;n--;)delete ia[Yr][Wr[n]];return ia()};Gr[Xr]=!0;var na=Object.create||function(t,e){var i;return null!==t?(Zr[Yr]=qr(t),i=new Zr,Zr[Yr]=null,i[Xr]=t):i=ia(),void 0===e?i:zr.f(i,e)},oa=pe,ra=na,aa=He.f,sa=oa("unscopables"),la=Array.prototype;void 0===la[sa]&&aa(la,sa,{configurable:!0,value:ra(null)});var ca=function(t){la[sa][t]=!0},ha=po,ua=Rr.find,fa=ca,da="find",pa=!0;da in[]&&Array(1)[da]((function(){pa=!1})),ha({target:"Array",proto:!0,forced:pa},{find:function(t){return ua(this,t,arguments.length>1?arguments[1]:void 0)}}),fa(da);var ga=po,va=Rr.findIndex,ba=ca,ma="findIndex",ya=!0;ma in[]&&Array(1)[ma]((function(){ya=!1})),ga({target:"Array",proto:!0,forced:ya},{findIndex:function(t){return va(this,t,arguments.length>1?arguments[1]:void 0)}}),ba(ma);var wa=Rn.includes,Sa=ca;po({target:"Array",proto:!0,forced:b((function(){return!Array(1).includes()}))},{includes:function(t){return wa(this,t,arguments.length>1?arguments[1]:void 0)}}),Sa("includes");var xa=b,ka=function(t,e){var i=[][t];return!!i&&xa((function(){i.call(null,e||function(){return 1},1)}))},Oa=po,Pa=Rn.indexOf,Ta=ka,Ca=mr([].indexOf),Aa=!!Ca&&1/Ca([1],1,-0)<0;Oa({target:"Array",proto:!0,forced:Aa||!Ta("indexOf")},{indexOf:function(t){var e=arguments.length>1?arguments[1]:void 0;return Aa?Ca(this,t,e)||0:Pa(this,t,e)}});var Ia,Ra,$a,Ea={},ja=!b((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype})),La=te,Na=X,Fa=Qt,Ba=ja,Da=Ti("IE_PROTO"),_a=Object,Va=_a.prototype,Ha=Ba?_a.getPrototypeOf:function(t){var e=Fa(t);if(La(e,Da))return e[Da];var i=e.constructor;return Na(i)&&e instanceof i?i.prototype:e instanceof _a?Va:null},Ua=b,Ma=X,qa=tt,za=Ha,Wa=un,Ga=pe("iterator"),Ka=!1;[].keys&&("next"in($a=[].keys())?(Ra=za(za($a)))!==Object.prototype&&(Ia=Ra):Ka=!0);var Ja=!qa(Ia)||Ua((function(){var t={};return Ia[Ga].call(t)!==t}));Ja&&(Ia={}),Ma(Ia[Ga])||Wa(Ia,Ga,(function(){return this}));var Ya={IteratorPrototype:Ia,BUGGY_SAFARI_ITERATORS:Ka},Qa=He.f,Xa=te,Za=pe("toStringTag"),ts=function(t,e,i){t&&!i&&(t=t.prototype),t&&!Xa(t,Za)&&Qa(t,Za,{configurable:!0,value:e})},es=Ya.IteratorPrototype,is=na,ns=I,os=ts,rs=Ea,as=function(){return this},ss=function(t,e,i,n){var o=e+" Iterator";return t.prototype=is(es,{next:ns(+!n,i)}),os(t,o,!1),rs[o]=as,t},ls=L,cs=Rt,hs=tt,us=function(t){return hs(t)||null===t},fs=String,ds=TypeError,ps=function(t,e,i){try{return ls(cs(Object.getOwnPropertyDescriptor(t,e)[i]))}catch(t){}},gs=tt,vs=G,bs=function(t){if(us(t))return t;throw new ds("Can't set "+fs(t)+" as a prototype")},ms=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,i={};try{(t=ps(Object.prototype,"__proto__","set"))(i,[]),e=i instanceof Array}catch(t){}return function(i,n){return vs(i),bs(n),gs(i)?(e?t(i,n):i.__proto__=n,i):i}}():void 0),ys=po,ws=x,Ss=X,xs=ss,ks=Ha,Os=ms,Ps=ts,Ts=ai,Cs=un,As=Ea,Is=di.PROPER,Rs=di.CONFIGURABLE,$s=Ya.IteratorPrototype,Es=Ya.BUGGY_SAFARI_ITERATORS,js=pe("iterator"),Ls="keys",Ns="values",Fs="entries",Bs=function(){return this},Ds=function(t,e,i,n,o,r,a){xs(i,e,n);var s,l,c,h=function(t){if(t===o&&g)return g;if(!Es&&t&&t in d)return d[t];switch(t){case Ls:case Ns:case Fs:return function(){return new i(this,t)}}return function(){return new i(this)}},u=e+" Iterator",f=!1,d=t.prototype,p=d[js]||d["@@iterator"]||o&&d[o],g=!Es&&p||h(o),v="Array"===e&&d.entries||p;if(v&&(s=ks(v.call(new t)))!==Object.prototype&&s.next&&(ks(s)!==$s&&(Os?Os(s,$s):Ss(s[js])||Cs(s,js,Bs)),Ps(s,u,!0)),Is&&o===Ns&&p&&p.name!==Ns&&(Rs?Ts(d,"name",Ns):(f=!0,g=function(){return ws(p,this)})),o)if(l={values:h(Ns),keys:r?g:h(Ls),entries:h(Fs)},a)for(c in l)(Es||f||!(c in d))&&Cs(d,c,l[c]);else ys({target:e,proto:!0,forced:Es||f},l);return d[js]!==g&&Cs(d,js,g,{name:o}),As[e]=g,l},_s=function(t,e){return{value:t,done:e}},Vs=Y,Hs=ca,Us=Ea,Ms=Hi,qs=He.f,zs=Ds,Ws=_s,Gs=m,Ks="Array Iterator",Js=Ms.set,Ys=Ms.getterFor(Ks),Qs=zs(Array,"Array",(function(t,e){Js(this,{type:Ks,target:Vs(t),index:0,kind:e})}),(function(){var t=Ys(this),e=t.target,i=t.index++;if(!e||i>=e.length)return t.target=null,Ws(void 0,!0);switch(t.kind){case"keys":return Ws(i,!1);case"values":return Ws(e[i],!1)}return Ws([i,e[i]],!1)}),"values"),Xs=Us.Arguments=Us.Array;if(Hs("keys"),Hs("values"),Hs("entries"),Gs&&"values"!==Xs.name)try{qs(Xs,"name",{value:"values"})}catch(t){}var Zs=po,tl=M,el=Y,il=ka,nl=L([].join);Zs({target:"Array",proto:!0,forced:tl!==Object||!il("join",",")},{join:function(t){return nl(el(this),void 0===t?",":t)}});var ol=Rr.map;po({target:"Array",proto:!0,forced:!er("map")},{map:function(t){return ol(this,t,arguments.length>1?arguments[1]:void 0)}});var rl=po,al=vo,sl=L([].reverse),ll=[1,2];rl({target:"Array",proto:!0,forced:String(ll)===String(ll.reverse())},{reverse:function(){return al(this)&&(this.length=this.length),sl(this)}});var cl=L([].slice),hl=po,ul=vo,fl=qo,dl=tt,pl=wn,gl=Pn,vl=Y,bl=xo,ml=pe,yl=cl,wl=er("slice"),Sl=ml("species"),xl=Array,kl=Math.max;hl({target:"Array",proto:!0,forced:!wl},{slice:function(t,e){var i,n,o,r=vl(this),a=gl(r),s=pl(t,a),l=pl(void 0===e?a:e,a);if(ul(r)&&(i=r.constructor,(fl(i)&&(i===xl||ul(i.prototype))||dl(i)&&null===(i=i[Sl]))&&(i=void 0),i===xl||void 0===i))return yl(r,s,l);for(n=new(void 0===i?xl:i)(kl(l-s,0)),o=0;s0;)t[o]=t[--o];o!==r++&&(t[o]=n)}else for(var a=$l(i/2),s=El(Rl(t,0,a),e),l=El(Rl(t,a),e),c=s.length,h=l.length,u=0,f=0;u3)){if(Yl)return!0;if(Xl)return Xl<603;var t,e,i,n,o="";for(t=65;t<76;t++){switch(e=String.fromCharCode(t),t){case 66:case 69:case 70:case 72:i=3;break;case 68:case 71:i=4;break;default:i=2}for(n=0;n<47;n++)Zl.push({k:e+n,v:i})}for(Zl.sort((function(t,e){return e.v-t.v})),n=0;nzl(i)?1:-1}}(t)),i=Ml(o),n=0;nc-n+i;r--)wc(l,r-1)}else if(i>n)for(r=c-n;r>h;r--)s=r+i-1,(a=r+n-1)in l?l[s]=l[a]:wc(l,s);for(r=0;r2)if(c=nh(c),43===(e=ch(c,0))||45===e){if(88===(i=ch(c,2))||120===i)return NaN}else if(48===e){switch(ch(c,1)){case 66:case 98:n=2,o=49;break;case 79:case 111:n=8,o=55;break;default:return+c}for(a=(r=lh(c,2)).length,s=0;so)return NaN;return parseInt(r,n)}return+c},uh=Wc(oh,!rh(" 0o1")||!rh("0b1")||rh("+0x1")),fh=function(t){var e,i=arguments.length<1?0:rh(function(t){var e=Qc(t,"number");return"bigint"==typeof e?e:hh(e)}(t));return Jc(ah,e=this)&&Xc((function(){ih(e)}))?Kc(Object(i),this,fh):i};fh.prototype=ah,uh&&(ah.constructor=fh),Hc({global:!0,constructor:!0,wrap:!0,forced:uh},{Number:fh});uh&&function(t,e){for(var i,n=Uc?Zc(e):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),o=0;n.length>o;o++)Gc(e,i=n[o])&&!Gc(t,i)&&eh(t,i,th(e,i))}(qc[oh],rh);var dh=m,ph=L,gh=x,vh=b,bh=Nr,mh=Vn,yh=k,wh=Qt,Sh=M,xh=Object.assign,kh=Object.defineProperty,Oh=ph([].concat),Ph=!xh||vh((function(){if(dh&&1!==xh({b:1},xh(kh({},"a",{enumerable:!0,get:function(){kh(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},i=Symbol("assign detection"),n="abcdefghijklmnopqrst";return t[i]=7,n.split("").forEach((function(t){e[t]=t})),7!==xh({},t)[i]||bh(xh({},e)).join("")!==n}))?function(t,e){for(var i=wh(t),n=arguments.length,o=1,r=mh.f,a=yh.f;n>o;)for(var s,l=Sh(arguments[o++]),c=r?Oh(bh(l),r(l)):bh(l),h=c.length,u=0;h>u;)s=c[u++],dh&&!gh(a,l,s)||(i[s]=l[s]);return i}:xh,Th=Ph;po({target:"Object",stat:!0,arity:2,forced:Object.assign!==Th},{assign:Th});var Ch=m,Ah=b,Ih=L,Rh=Ha,$h=Nr,Eh=Y,jh=Ih(k.f),Lh=Ih([].push),Nh=Ch&&Ah((function(){var t=Object.create(null);return t[2]=2,!jh(t,2)})),Fh=function(t){return function(e){for(var i,n=Eh(e),o=$h(n),r=Nh&&null===Rh(n),a=o.length,s=0,l=[];a>s;)i=o[s++],Ch&&!(r?i in n:jh(n,i))||Lh(l,t?[i,n[i]]:n[i]);return l}},Bh={entries:Fh(!0),values:Fh(!1)}.entries;po({target:"Object",stat:!0},{entries:function(t){return Bh(t)}});var Dh=Qt,_h=Nr;po({target:"Object",stat:!0,forced:b((function(){_h(1)}))},{keys:function(t){return _h(Dh(t))}});var Vh=$o,Hh=Oo?{}.toString:function(){return"[object "+Vh(this)+"]"};Oo||un(Object.prototype,"toString",Hh,{unsafe:!0});var Uh=g,Mh=b,qh=Il,zh=Vc.trim,Wh=Ec,Gh=L("".charAt),Kh=Uh.parseFloat,Jh=Uh.Symbol,Yh=Jh&&Jh.iterator,Qh=1/Kh(Wh+"-0")!=-1/0||Yh&&!Mh((function(){Kh(Object(Yh))}))?function(t){var e=zh(qh(t)),i=Kh(e);return 0===i&&"-"===Gh(e,0)?-0:i}:Kh;po({global:!0,forced:parseFloat!==Qh},{parseFloat:Qh});var Xh=g,Zh=b,tu=L,eu=Il,iu=Vc.trim,nu=Ec,ou=Xh.parseInt,ru=Xh.Symbol,au=ru&&ru.iterator,su=/^[+-]?0x/i,lu=tu(su.exec),cu=8!==ou(nu+"08")||22!==ou(nu+"0x16")||au&&!Zh((function(){ou(Object(au))}))?function(t,e){var i=iu(eu(t));return ou(i,e>>>0||(lu(su,i)?16:10))}:ou;po({global:!0,forced:parseInt!==cu},{parseInt:cu});var hu=tt,uu=D,fu=pe("match"),du=function(t){var e;return hu(t)&&(void 0!==(e=t[fu])?!!e:"RegExp"===uu(t))},pu=We,gu=function(){var t=pu(this),e="";return t.hasIndices&&(e+="d"),t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.unicodeSets&&(e+="v"),t.sticky&&(e+="y"),e},vu=x,bu=te,mu=ot,yu=gu,wu=RegExp.prototype,Su=function(t){var e=t.flags;return void 0!==e||"flags"in wu||bu(t,"flags")||!mu(wu,t)?e:vu(yu,t)},xu=b,ku=g.RegExp,Ou=xu((function(){var t=ku("a","y");return t.lastIndex=2,null!==t.exec("abcd")})),Pu=Ou||xu((function(){return!ku("a","y").sticky})),Tu={BROKEN_CARET:Ou||xu((function(){var t=ku("^r","gy");return t.lastIndex=2,null!==t.exec("str")})),MISSED_STICKY:Pu,UNSUPPORTED_Y:Ou},Cu=He.f,Au=an,Iu=He,Ru=function(t,e,i){return i.get&&Au(i.get,e,{getter:!0}),i.set&&Au(i.set,e,{setter:!0}),Iu.f(t,e,i)},$u=nt,Eu=Ru,ju=m,Lu=pe("species"),Nu=b,Fu=g.RegExp,Bu=Nu((function(){var t=Fu(".","s");return!(t.dotAll&&t.test("\n")&&"s"===t.flags)})),Du=b,_u=g.RegExp,Vu=Du((function(){var t=_u("(?
    b)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$c")})),Hu=m,Uu=g,Mu=L,qu=ro,zu=Rc,Wu=ai,Gu=na,Ku=fn.f,Ju=ot,Yu=du,Qu=Il,Xu=Su,Zu=Tu,tf=function(t,e,i){i in t||Cu(t,i,{configurable:!0,get:function(){return e[i]},set:function(t){e[i]=t}})},ef=un,nf=b,of=te,rf=Hi.enforce,af=function(t){var e=$u(t);ju&&e&&!e[Lu]&&Eu(e,Lu,{configurable:!0,get:function(){return this}})},sf=Bu,lf=Vu,cf=pe("match"),hf=Uu.RegExp,uf=hf.prototype,ff=Uu.SyntaxError,df=Mu(uf.exec),pf=Mu("".charAt),gf=Mu("".replace),vf=Mu("".indexOf),bf=Mu("".slice),mf=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,yf=/a/g,wf=/a/g,Sf=new hf(yf)!==yf,xf=Zu.MISSED_STICKY,kf=Zu.UNSUPPORTED_Y,Of=Hu&&(!Sf||xf||sf||lf||nf((function(){return wf[cf]=!1,hf(yf)!==yf||hf(wf)===wf||"/a/i"!==String(hf(yf,"i"))})));if(qu("RegExp",Of)){for(var Pf=function(t,e){var i,n,o,r,a,s,l=Ju(uf,this),c=Yu(t),h=void 0===e,u=[],f=t;if(!l&&c&&h&&t.constructor===Pf)return t;if((c||Ju(uf,t))&&(t=t.source,h&&(e=Xu(f))),t=void 0===t?"":Qu(t),e=void 0===e?"":Qu(e),f=t,sf&&"dotAll"in yf&&(n=!!e&&vf(e,"s")>-1)&&(e=gf(e,/s/g,"")),i=e,xf&&"sticky"in yf&&(o=!!e&&vf(e,"y")>-1)&&kf&&(e=gf(e,/y/g,"")),lf&&(r=function(t){for(var e,i=t.length,n=0,o="",r=[],a=Gu(null),s=!1,l=!1,c=0,h="";n<=i;n++){if("\\"===(e=pf(t,n)))e+=pf(t,++n);else if("]"===e)s=!1;else if(!s)switch(!0){case"["===e:s=!0;break;case"("===e:if(o+=e,"?:"===bf(t,n+1,n+3))continue;df(mf,bf(t,n+1))&&(n+=2,l=!0),c++;continue;case">"===e&&l:if(""===h||of(a,h))throw new ff("Invalid capture group name");a[h]=!0,r[r.length]=[h,c],l=!1,h="";continue}l?h+=e:o+=e}return[o,r]}(t),t=r[0],u=r[1]),a=zu(hf(t,e),l?this:uf,Pf),(n||o||u.length)&&(s=rf(a),n&&(s.dotAll=!0,s.raw=Pf(function(t){for(var e,i=t.length,n=0,o="",r=!1;n<=i;n++)"\\"!==(e=pf(t,n))?r||"."!==e?("["===e?r=!0:"]"===e&&(r=!1),o+=e):o+="[\\s\\S]":o+=e+pf(t,++n);return o}(t),i)),o&&(s.sticky=!0),u.length&&(s.groups=u)),t!==f)try{Wu(a,"source",""===f?"(?:)":f)}catch(t){}return a},Tf=Ku(hf),Cf=0;Tf.length>Cf;)tf(Pf,hf,Tf[Cf++]);uf.constructor=Pf,Pf.prototype=uf,ef(Uu,"RegExp",Pf,{constructor:!0})}af("RegExp");var Af=x,If=L,Rf=Il,$f=gu,Ef=Tu,jf=na,Lf=Hi.get,Nf=Bu,Ff=Vu,Bf=Kt("native-string-replace",String.prototype.replace),Df=RegExp.prototype.exec,_f=Df,Vf=If("".charAt),Hf=If("".indexOf),Uf=If("".replace),Mf=If("".slice),qf=function(){var t=/a/,e=/b*/g;return Af(Df,t,"a"),Af(Df,e,"a"),0!==t.lastIndex||0!==e.lastIndex}(),zf=Ef.BROKEN_CARET,Wf=void 0!==/()??/.exec("")[1];(qf||Wf||zf||Nf||Ff)&&(_f=function(t){var e,i,n,o,r,a,s,l=this,c=Lf(l),h=Rf(t),u=c.raw;if(u)return u.lastIndex=l.lastIndex,e=Af(_f,u,h),l.lastIndex=u.lastIndex,e;var f=c.groups,d=zf&&l.sticky,p=Af($f,l),g=l.source,v=0,b=h;if(d&&(p=Uf(p,"y",""),-1===Hf(p,"g")&&(p+="g"),b=Mf(h,l.lastIndex),l.lastIndex>0&&(!l.multiline||l.multiline&&"\n"!==Vf(h,l.lastIndex-1))&&(g="(?: "+g+")",b=" "+b,v++),i=new RegExp("^(?:"+g+")",p)),Wf&&(i=new RegExp("^"+g+"$(?!\\s)",p)),qf&&(n=l.lastIndex),o=Af(Df,d?i:l,b),d?o?(o.input=Mf(o.input,v),o[0]=Mf(o[0],v),o.index=l.lastIndex,l.lastIndex+=o[0].length):l.lastIndex=0:qf&&o&&(l.lastIndex=l.global?o.index+o[0].length:n),Wf&&o&&o.length>1&&Af(Bf,o[0],i,(function(){for(r=1;r1?arguments[1]:void 0)}});var vd=L,bd=vn,md=Il,yd=G,wd=vd("".charAt),Sd=vd("".charCodeAt),xd=vd("".slice),kd=function(t){return function(e,i){var n,o,r=md(yd(e)),a=bd(i),s=r.length;return a<0||a>=s?t?"":void 0:(n=Sd(r,a))<55296||n>56319||a+1===s||(o=Sd(r,a+1))<56320||o>57343?t?wd(r,a):n:t?xd(r,a,a+2):o-56320+(n-55296<<10)+65536}},Od={codeAt:kd(!1),charAt:kd(!0)},Pd=Od.charAt,Td=Il,Cd=Hi,Ad=Ds,Id=_s,Rd="String Iterator",$d=Cd.set,Ed=Cd.getterFor(Rd);Ad(String,"String",(function(t){$d(this,{type:Rd,string:Td(t),index:0})}),(function(){var t,e=Ed(this),i=e.string,n=e.index;return n>=i.length?Id(void 0,!0):(t=Pd(i,n),e.index+=t.length,Id(t,!1))}));var jd=y,Ld=Function.prototype,Nd=Ld.apply,Fd=Ld.call,Bd="object"==typeof Reflect&&Reflect.apply||(jd?Fd.bind(Nd):function(){return Fd.apply(Nd,arguments)}),Dd=x,_d=un,Vd=Gf,Hd=b,Ud=pe,Md=ai,qd=Ud("species"),zd=RegExp.prototype,Wd=function(t,e,i,n){var o=Ud(t),r=!Hd((function(){var e={};return e[o]=function(){return 7},7!==""[t](e)})),a=r&&!Hd((function(){var e=!1,i=/a/;return"split"===t&&((i={}).constructor={},i.constructor[qd]=function(){return i},i.flags="",i[o]=/./[o]),i.exec=function(){return e=!0,null},i[o](""),!e}));if(!r||!a||i){var s=/./[o],l=e(o,""[t],(function(t,e,i,n,o){var a=e.exec;return a===Vd||a===zd.exec?r&&!o?{done:!0,value:Dd(s,e,i,n)}:{done:!0,value:Dd(t,i,e,n)}:{done:!1}}));_d(String.prototype,t,l[0]),_d(zd,o,l[1])}n&&Md(zd[o],"sham",!0)},Gd=Od.charAt,Kd=function(t,e,i){return e+(i?Gd(t,e).length:1)},Jd=L,Yd=Qt,Qd=Math.floor,Xd=Jd("".charAt),Zd=Jd("".replace),tp=Jd("".slice),ep=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,ip=/\$([$&'`]|\d{1,2})/g,np=x,op=We,rp=X,ap=D,sp=Gf,lp=TypeError,cp=function(t,e){var i=t.exec;if(rp(i)){var n=np(i,t,e);return null!==n&&op(n),n}if("RegExp"===ap(t))return np(sp,t,e);throw new lp("RegExp#exec called on incompatible receiver")},hp=Bd,up=x,fp=L,dp=Wd,pp=b,gp=We,vp=X,bp=q,mp=vn,yp=kn,wp=Il,Sp=G,xp=Kd,kp=jt,Op=function(t,e,i,n,o,r){var a=i+t.length,s=n.length,l=ip;return void 0!==o&&(o=Yd(o),l=ep),Zd(r,l,(function(r,l){var c;switch(Xd(l,0)){case"$":return"$";case"&":return t;case"`":return tp(e,0,i);case"'":return tp(e,a);case"<":c=o[tp(l,1,-1)];break;default:var h=+l;if(0===h)return r;if(h>s){var u=Qd(h/10);return 0===u?r:u<=s?void 0===n[u-1]?Xd(l,1):n[u-1]+Xd(l,1):r}c=n[h-1]}return void 0===c?"":c}))},Pp=cp,Tp=pe("replace"),Cp=Math.max,Ap=Math.min,Ip=fp([].concat),Rp=fp([].push),$p=fp("".indexOf),Ep=fp("".slice),jp="$0"==="a".replace(/./,"$0"),Lp=!!/./[Tp]&&""===/./[Tp]("a","$0");dp("replace",(function(t,e,i){var n=Lp?"$":"$0";return[function(t,i){var n=Sp(this),o=bp(t)?void 0:kp(t,Tp);return o?up(o,t,n,i):up(e,wp(n),t,i)},function(t,o){var r=gp(this),a=wp(t);if("string"==typeof o&&-1===$p(o,n)&&-1===$p(o,"$<")){var s=i(e,r,a,o);if(s.done)return s.value}var l=vp(o);l||(o=wp(o));var c,h=r.global;h&&(c=r.unicode,r.lastIndex=0);for(var u,f=[];null!==(u=Pp(r,a))&&(Rp(f,u),h);){""===wp(u[0])&&(r.lastIndex=xp(a,yp(r.lastIndex),c))}for(var d,p="",g=0,v=0;v=g&&(p+=Ep(a,g,y)+b,g=y+m.length)}return p+Ep(a,g)}]}),!!pp((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")}))||!jp||Lp);var Np=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e},Fp=x,Bp=We,Dp=q,_p=G,Vp=Np,Hp=Il,Up=jt,Mp=cp;Wd("search",(function(t,e,i){return[function(e){var i=_p(this),n=Dp(e)?void 0:Up(e,t);return n?Fp(n,e,i):new RegExp(e)[t](Hp(i))},function(t){var n=Bp(this),o=Hp(t),r=i(e,n,o);if(r.done)return r.value;var a=n.lastIndex;Vp(a,0)||(n.lastIndex=0);var s=Mp(n,o);return Vp(n.lastIndex,a)||(n.lastIndex=a),null===s?-1:s.index}]}));var qp=qo,zp=Tt,Wp=TypeError,Gp=We,Kp=function(t){if(qp(t))return t;throw new Wp(zp(t)+" is not a constructor")},Jp=q,Yp=pe("species"),Qp=x,Xp=L,Zp=Wd,tg=We,eg=q,ig=G,ng=function(t,e){var i,n=Gp(t).constructor;return void 0===n||Jp(i=Gp(n)[Yp])?e:Kp(i)},og=Kd,rg=kn,ag=Il,sg=jt,lg=cp,cg=b,hg=Tu.UNSUPPORTED_Y,ug=Math.min,fg=Xp([].push),dg=Xp("".slice),pg=!cg((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var i="ab".split(t);return 2!==i.length||"a"!==i[0]||"b"!==i[1]})),gg="c"==="abbc".split(/(b)*/)[1]||4!=="test".split(/(?:)/,-1).length||2!=="ab".split(/(?:ab)*/).length||4!==".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length;Zp("split",(function(t,e,i){var n="0".split(void 0,0).length?function(t,i){return void 0===t&&0===i?[]:Qp(e,this,t,i)}:e;return[function(e,i){var o=ig(this),r=eg(e)?void 0:sg(e,t);return r?Qp(r,e,o,i):Qp(n,ag(o),e,i)},function(t,o){var r=tg(this),a=ag(t);if(!gg){var s=i(n,r,a,o,n!==e);if(s.done)return s.value}var l=ng(r,RegExp),c=r.unicode,h=(r.ignoreCase?"i":"")+(r.multiline?"m":"")+(r.unicode?"u":"")+(hg?"g":"y"),u=new l(hg?"^(?:"+r.source+")":r,h),f=void 0===o?4294967295:o>>>0;if(0===f)return[];if(0===a.length)return null===lg(u,a)?[a]:[];for(var d=0,p=0,g=[];p1?arguments[1]:void 0)},Tg=g,Cg=wg,Ag=kg,Ig=Pg,Rg=ai,$g=function(t){if(t&&t.forEach!==Ig)try{Rg(t,"forEach",Ig)}catch(e){t.forEach=Ig}};for(var Eg in Cg)Cg[Eg]&&$g(Tg[Eg]&&Tg[Eg].prototype);$g(Ag);var jg=g,Lg=wg,Ng=kg,Fg=Qs,Bg=ai,Dg=ts,_g=pe("iterator"),Vg=Fg.values,Hg=function(t,e){if(t){if(t[_g]!==Vg)try{Bg(t,_g,Vg)}catch(e){t[_g]=Vg}if(Dg(t,e,!0),Lg[e])for(var i in Fg)if(t[i]!==Fg[i])try{Bg(t,i,Fg[i])}catch(e){t[i]=Fg[i]}}};for(var Ug in Lg)Hg(jg[Ug]&&jg[Ug].prototype,Ug);Hg(Ng,"DOMTokenList");var Mg=b,qg=m,zg=pe("iterator"),Wg=!Mg((function(){var t=new URL("b?a=1&b=2&c=3","https://a"),e=t.searchParams,i=new URLSearchParams("a=1&a=2&b=3"),n="";return t.pathname="c%20d",e.forEach((function(t,i){e.delete("b"),n+=i+t})),i.delete("a",2),i.delete("b",void 0),!e.size&&!qg||!e.sort||"https://a/c%20d?a=1&c=3"!==t.href||"3"!==e.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!e[zg]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("https://тест").host||"#%D0%B1"!==new URL("https://a#б").hash||"a1c3"!==n||"x"!==new URL("https://x",void 0).host})),Gg=ot,Kg=TypeError,Jg=function(t,e){if(Gg(e,t))return t;throw new Kg("Incorrect invocation")},Yg=x,Qg=We,Xg=jt,Zg=We,tv=function(t,e,i){var n,o;Qg(t);try{if(!(n=Xg(t,"return"))){if("throw"===e)throw i;return i}n=Yg(n,t)}catch(t){o=!0,n=t}if("throw"===e)throw i;if(o)throw n;return Qg(n),i},ev=Ea,iv=pe("iterator"),nv=Array.prototype,ov=$o,rv=jt,av=q,sv=Ea,lv=pe("iterator"),cv=function(t){if(!av(t))return rv(t,lv)||rv(t,"@@iterator")||sv[ov(t)]},hv=x,uv=Rt,fv=We,dv=Tt,pv=cv,gv=TypeError,vv=function(t,e){var i=arguments.length<2?pv(t):e;if(uv(i))return fv(hv(i,t));throw new gv(dv(t)+" is not iterable")},bv=xr,mv=x,yv=Qt,wv=function(t,e,i,n){try{return n?e(Zg(i)[0],i[1]):e(i)}catch(e){tv(t,"throw",e)}},Sv=function(t){return void 0!==t&&(ev.Array===t||nv[iv]===t)},xv=qo,kv=Pn,Ov=xo,Pv=vv,Tv=cv,Cv=Array,Av=L,Iv=2147483647,Rv=/[^\0-\u007E]/,$v=/[.\u3002\uFF0E\uFF61]/g,Ev="Overflow: input needs wider integers to process",jv=RangeError,Lv=Av($v.exec),Nv=Math.floor,Fv=String.fromCharCode,Bv=Av("".charCodeAt),Dv=Av([].join),_v=Av([].push),Vv=Av("".replace),Hv=Av("".split),Uv=Av("".toLowerCase),Mv=function(t){return t+22+75*(t<26)},qv=function(t,e,i){var n=0;for(t=i?Nv(t/700):t>>1,t+=Nv(t/e);t>455;)t=Nv(t/35),n+=36;return Nv(n+36*t/(t+38))},zv=function(t){var e=[];t=function(t){for(var e=[],i=0,n=t.length;i=55296&&o<=56319&&i=r&&nNv((Iv-a)/u))throw new jv(Ev);for(a+=(h-r)*u,r=h,i=0;iIv)throw new jv(Ev);if(n===r){for(var f=a,d=36;;){var p=d<=s?1:d>=s+26?26:d-s;if(fo;){if(e=+arguments[o++],Yv(e,1114111)!==e)throw new Qv(e+" is not a valid code point");i[o]=e<65536?Xv(e):Xv(55296+((e-=65536)>>10),e%1024+56320)}return tb(i,"")}});var eb=g,ib=m,nb=Object.getOwnPropertyDescriptor,ob=un,rb=po,ab=g,sb=function(t){if(!ib)return eb[t];var e=nb(eb,t);return e&&e.value},lb=nt,cb=x,hb=L,ub=m,fb=Wg,db=un,pb=Ru,gb=function(t,e,i){for(var n in e)ob(t,n,e[n],i);return t},vb=ts,bb=ss,mb=Hi,yb=Jg,wb=X,Sb=te,xb=xr,kb=$o,Ob=We,Pb=tt,Tb=Il,Cb=na,Ab=I,Ib=vv,Rb=cv,$b=_s,Eb=Gv,jb=jl,Lb=pe("iterator"),Nb="URLSearchParams",Fb=Nb+"Iterator",Bb=mb.set,Db=mb.getterFor(Nb),_b=mb.getterFor(Fb),Vb=sb("fetch"),Hb=sb("Request"),Ub=sb("Headers"),Mb=Hb&&Hb.prototype,qb=Ub&&Ub.prototype,zb=ab.TypeError,Wb=ab.encodeURIComponent,Gb=String.fromCharCode,Kb=lb("String","fromCodePoint"),Jb=parseInt,Yb=hb("".charAt),Qb=hb([].join),Xb=hb([].push),Zb=hb("".replace),tm=hb([].shift),em=hb([].splice),im=hb("".split),nm=hb("".slice),om=hb(/./.exec),rm=/\+/g,am=/^[0-9a-f]+$/i,sm=function(t,e){var i=nm(t,e,e+2);return om(am,i)?Jb(i,16):NaN},lm=function(t){for(var e=0,i=128;i>0&&t&i;i>>=1)e++;return e},cm=function(t){var e=null;switch(t.length){case 1:e=t[0];break;case 2:e=(31&t[0])<<6|63&t[1];break;case 3:e=(15&t[0])<<12|(63&t[1])<<6|63&t[2];break;case 4:e=(7&t[0])<<18|(63&t[1])<<12|(63&t[2])<<6|63&t[3]}return e>1114111?null:e},hm=function(t){for(var e=(t=Zb(t,rm," ")).length,i="",n=0;ne){i+="%",n++;continue}var r=sm(t,n+1);if(r!=r){i+=o,n++;continue}n+=2;var a=lm(r);if(0===a)o=Gb(r);else{if(1===a||a>4){i+="�",n++;continue}for(var s=[r],l=1;le||"%"!==Yb(t,n));){var c=sm(t,n+1);if(c!=c){n+=3;break}if(c>191||c<128)break;Xb(s,c),n+=2,l++}if(s.length!==a){i+="�";continue}var h=cm(s);null===h?i+="�":o=Kb(h)}}i+=o,n++}return i},um=/[!'()~]|%20/g,fm={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},dm=function(t){return fm[t]},pm=function(t){return Zb(Wb(t),um,dm)},gm=bb((function(t,e){Bb(this,{type:Fb,target:Db(t).entries,index:0,kind:e})}),Nb,(function(){var t=_b(this),e=t.target,i=t.index++;if(!e||i>=e.length)return t.target=null,$b(void 0,!0);var n=e[i];switch(t.kind){case"keys":return $b(n.key,!1);case"values":return $b(n.value,!1)}return $b([n.key,n.value],!1)}),!0),vm=function(t){this.entries=[],this.url=null,void 0!==t&&(Pb(t)?this.parseObject(t):this.parseQuery("string"==typeof t?"?"===Yb(t,0)?nm(t,1):t:Tb(t)))};vm.prototype={type:Nb,bindURL:function(t){this.url=t,this.update()},parseObject:function(t){var e,i,n,o,r,a,s,l=this.entries,c=Rb(t);if(c)for(i=(e=Ib(t,c)).next;!(n=cb(i,e)).done;){if(r=(o=Ib(Ob(n.value))).next,(a=cb(r,o)).done||(s=cb(r,o)).done||!cb(r,o).done)throw new zb("Expected sequence with length 2");Xb(l,{key:Tb(a.value),value:Tb(s.value)})}else for(var h in t)Sb(t,h)&&Xb(l,{key:h,value:Tb(t[h])})},parseQuery:function(t){if(t)for(var e,i,n=this.entries,o=im(t,"&"),r=0;r0?arguments[0]:void 0));ub||(this.size=t.entries.length)},mm=bm.prototype;if(gb(mm,{append:function(t,e){var i=Db(this);Eb(arguments.length,2),Xb(i.entries,{key:Tb(t),value:Tb(e)}),ub||this.length++,i.updateURL()},delete:function(t){for(var e=Db(this),i=Eb(arguments.length,1),n=e.entries,o=Tb(t),r=i<2?void 0:arguments[1],a=void 0===r?r:Tb(r),s=0;se.key?1:-1})),t.updateURL()},forEach:function(t){for(var e,i=Db(this).entries,n=xb(t,arguments.length>1?arguments[1]:void 0),o=0;o1?Sm(arguments[1]):{})}}),wb(Hb)){var xm=function(t){return yb(this,Mb),new Hb(t,arguments.length>1?Sm(arguments[1]):{})};Mb.constructor=xm,xm.prototype=Mb,rb({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:xm})}}var km,Om=po,Pm=m,Tm=Wg,Cm=g,Am=xr,Im=L,Rm=un,$m=Ru,Em=Jg,jm=te,Lm=Ph,Nm=function(t){var e=yv(t),i=xv(this),n=arguments.length,o=n>1?arguments[1]:void 0,r=void 0!==o;r&&(o=bv(o,n>2?arguments[2]:void 0));var a,s,l,c,h,u,f=Tv(e),d=0;if(!f||this===Cv&&Sv(f))for(a=kv(e),s=i?new this(a):Cv(a);a>d;d++)u=r?o(e[d],d):e[d],Ov(s,d,u);else for(s=i?new this:[],h=(c=Pv(e,f)).next;!(l=mv(h,c)).done;d++)u=r?wv(c,o,[l.value,d],!0):l.value,Ov(s,d,u);return s.length=d,s},Fm=cl,Bm=Od.codeAt,Dm=function(t){var e,i,n=[],o=Hv(Vv(Uv(t),$v,"."),".");for(e=0;e?@[\\\]^|]/,xy=/[\0\t\n\r #/:<>?@[\\\]^|]/,ky=/^[\u0000-\u0020]+/,Oy=/(^|[^\u0000-\u0020])[\u0000-\u0020]+$/,Py=/[\t\n\r]/g,Ty=function(t){var e,i,n,o;if("number"==typeof t){for(e=[],i=0;i<4;i++)hy(e,t%256),t=Qm(t/256);return ey(e,".")}if("object"==typeof t){for(e="",n=function(t){for(var e=null,i=1,n=null,o=0,r=0;r<8;r++)0!==t[r]?(o>i&&(e=n,i=o),n=null,o=0):(null===n&&(n=r),++o);return o>i?n:e}(t),i=0;i<8;i++)o&&0===t[i]||(o&&(o=!1),n===i?(e+=i?":":"::",o=!0):(e+=iy(t[i],16),i<7&&(e+=":")));return"["+e+"]"}return t},Cy={},Ay=Lm({},Cy,{" ":1,'"':1,"<":1,">":1,"`":1}),Iy=Lm({},Ay,{"#":1,"?":1,"{":1,"}":1}),Ry=Lm({},Iy,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),$y=function(t,e){var i=Bm(t,0);return i>32&&i<127&&!jm(e,t)?t:encodeURIComponent(t)},Ey={ftp:21,file:null,http:80,https:443,ws:80,wss:443},jy=function(t,e){var i;return 2===t.length&&ty(py,Zm(t,0))&&(":"===(i=Zm(t,1))||!e&&"|"===i)},Ly=function(t){var e;return t.length>1&&jy(ly(t,0,2))&&(2===t.length||"/"===(e=Zm(t,2))||"\\"===e||"?"===e||"#"===e)},Ny=function(t){return"."===t||"%2e"===cy(t)},Fy={},By={},Dy={},_y={},Vy={},Hy={},Uy={},My={},qy={},zy={},Wy={},Gy={},Ky={},Jy={},Yy={},Qy={},Xy={},Zy={},tw={},ew={},iw={},nw=function(t,e,i){var n,o,r,a=_m(t);if(e){if(o=this.parse(a))throw new Jm(o);this.searchParams=null}else{if(void 0!==i&&(n=new nw(i,!0)),o=this.parse(a,null,n))throw new Jm(o);(r=Gm(new Wm)).bindURL(this),this.searchParams=r}};nw.prototype={type:"URL",parse:function(t,e,i){var n,o,r,a,s,l=this,c=e||Fy,h=0,u="",f=!1,d=!1,p=!1;for(t=_m(t),e||(l.scheme="",l.username="",l.password="",l.host=null,l.port=null,l.path=[],l.query=null,l.fragment=null,l.cannotBeABaseURL=!1,t=ry(t,ky,""),t=ry(t,Oy,"$1")),t=ry(t,Py,""),n=Nm(t);h<=n.length;){switch(o=n[h],c){case Fy:if(!o||!ty(py,o)){if(e)return uy;c=Dy;continue}u+=cy(o),c=By;break;case By:if(o&&(ty(gy,o)||"+"===o||"-"===o||"."===o))u+=cy(o);else{if(":"!==o){if(e)return uy;u="",c=Dy,h=0;continue}if(e&&(l.isSpecial()!==jm(Ey,u)||"file"===u&&(l.includesCredentials()||null!==l.port)||"file"===l.scheme&&!l.host))return;if(l.scheme=u,e)return void(l.isSpecial()&&Ey[l.scheme]===l.port&&(l.port=null));u="","file"===l.scheme?c=Jy:l.isSpecial()&&i&&i.scheme===l.scheme?c=_y:l.isSpecial()?c=My:"/"===n[h+1]?(c=Vy,h++):(l.cannotBeABaseURL=!0,oy(l.path,""),c=tw)}break;case Dy:if(!i||i.cannotBeABaseURL&&"#"!==o)return uy;if(i.cannotBeABaseURL&&"#"===o){l.scheme=i.scheme,l.path=Fm(i.path),l.query=i.query,l.fragment="",l.cannotBeABaseURL=!0,c=iw;break}c="file"===i.scheme?Jy:Hy;continue;case _y:if("/"!==o||"/"!==n[h+1]){c=Hy;continue}c=qy,h++;break;case Vy:if("/"===o){c=zy;break}c=Zy;continue;case Hy:if(l.scheme=i.scheme,o===km)l.username=i.username,l.password=i.password,l.host=i.host,l.port=i.port,l.path=Fm(i.path),l.query=i.query;else if("/"===o||"\\"===o&&l.isSpecial())c=Uy;else if("?"===o)l.username=i.username,l.password=i.password,l.host=i.host,l.port=i.port,l.path=Fm(i.path),l.query="",c=ew;else{if("#"!==o){l.username=i.username,l.password=i.password,l.host=i.host,l.port=i.port,l.path=Fm(i.path),l.path.length--,c=Zy;continue}l.username=i.username,l.password=i.password,l.host=i.host,l.port=i.port,l.path=Fm(i.path),l.query=i.query,l.fragment="",c=iw}break;case Uy:if(!l.isSpecial()||"/"!==o&&"\\"!==o){if("/"!==o){l.username=i.username,l.password=i.password,l.host=i.host,l.port=i.port,c=Zy;continue}c=zy}else c=qy;break;case My:if(c=qy,"/"!==o||"/"!==Zm(u,h+1))continue;h++;break;case qy:if("/"!==o&&"\\"!==o){c=zy;continue}break;case zy:if("@"===o){f&&(u="%40"+u),f=!0,r=Nm(u);for(var g=0;g65535)return dy;l.port=l.isSpecial()&&m===Ey[l.scheme]?null:m,u=""}if(e)return;c=Xy;continue}return dy}u+=o;break;case Jy:if(l.scheme="file","/"===o||"\\"===o)c=Yy;else{if(!i||"file"!==i.scheme){c=Zy;continue}switch(o){case km:l.host=i.host,l.path=Fm(i.path),l.query=i.query;break;case"?":l.host=i.host,l.path=Fm(i.path),l.query="",c=ew;break;case"#":l.host=i.host,l.path=Fm(i.path),l.query=i.query,l.fragment="",c=iw;break;default:Ly(ey(Fm(n,h),""))||(l.host=i.host,l.path=Fm(i.path),l.shortenPath()),c=Zy;continue}}break;case Yy:if("/"===o||"\\"===o){c=Qy;break}i&&"file"===i.scheme&&!Ly(ey(Fm(n,h),""))&&(jy(i.path[0],!0)?oy(l.path,i.path[0]):l.host=i.host),c=Zy;continue;case Qy:if(o===km||"/"===o||"\\"===o||"?"===o||"#"===o){if(!e&&jy(u))c=Zy;else if(""===u){if(l.host="",e)return;c=Xy}else{if(a=l.parseHost(u))return a;if("localhost"===l.host&&(l.host=""),e)return;u="",c=Xy}continue}u+=o;break;case Xy:if(l.isSpecial()){if(c=Zy,"/"!==o&&"\\"!==o)continue}else if(e||"?"!==o)if(e||"#"!==o){if(o!==km&&(c=Zy,"/"!==o))continue}else l.fragment="",c=iw;else l.query="",c=ew;break;case Zy:if(o===km||"/"===o||"\\"===o&&l.isSpecial()||!e&&("?"===o||"#"===o)){if(".."===(s=cy(s=u))||"%2e."===s||".%2e"===s||"%2e%2e"===s?(l.shortenPath(),"/"===o||"\\"===o&&l.isSpecial()||oy(l.path,"")):Ny(u)?"/"===o||"\\"===o&&l.isSpecial()||oy(l.path,""):("file"===l.scheme&&!l.path.length&&jy(u)&&(l.host&&(l.host=""),u=Zm(u,0)+":"),oy(l.path,u)),u="","file"===l.scheme&&(o===km||"?"===o||"#"===o))for(;l.path.length>1&&""===l.path[0];)ay(l.path);"?"===o?(l.query="",c=ew):"#"===o&&(l.fragment="",c=iw)}else u+=$y(o,Iy);break;case tw:"?"===o?(l.query="",c=ew):"#"===o?(l.fragment="",c=iw):o!==km&&(l.path[0]+=$y(o,Cy));break;case ew:e||"#"!==o?o!==km&&("'"===o&&l.isSpecial()?l.query+="%27":l.query+="#"===o?"%23":$y(o,Cy)):(l.fragment="",c=iw);break;case iw:o!==km&&(l.fragment+=$y(o,Ay))}h++}},parseHost:function(t){var e,i,n;if("["===Zm(t,0)){if("]"!==Zm(t,t.length-1))return fy;if(e=function(t){var e,i,n,o,r,a,s,l=[0,0,0,0,0,0,0,0],c=0,h=null,u=0,f=function(){return Zm(t,u)};if(":"===f()){if(":"!==Zm(t,1))return;u+=2,h=++c}for(;f();){if(8===c)return;if(":"!==f()){for(e=i=0;i<4&&ty(wy,f());)e=16*e+Ym(f(),16),u++,i++;if("."===f()){if(0===i)return;if(u-=i,c>6)return;for(n=0;f();){if(o=null,n>0){if(!("."===f()&&n<4))return;u++}if(!ty(vy,f()))return;for(;ty(vy,f());){if(r=Ym(f(),10),null===o)o=r;else{if(0===o)return;o=10*o+r}if(o>255)return;u++}l[c]=256*l[c]+o,2!=++n&&4!==n||c++}if(4!==n)return;break}if(":"===f()){if(u++,!f())return}else if(f())return;l[c++]=e}else{if(null!==h)return;u++,h=++c}}if(null!==h)for(a=c-h,c=7;0!==c&&a>0;)s=l[c],l[c--]=l[h+a-1],l[h+--a]=s;else if(8!==c)return;return l}(ly(t,1,-1)),!e)return fy;this.host=e}else if(this.isSpecial()){if(t=Dm(t),ty(Sy,t))return fy;if(e=function(t){var e,i,n,o,r,a,s,l=sy(t,".");if(l.length&&""===l[l.length-1]&&l.length--,(e=l.length)>4)return t;for(i=[],n=0;n1&&"0"===Zm(o,0)&&(r=ty(by,o)?16:8,o=ly(o,8===r?1:2)),""===o)a=0;else{if(!ty(10===r?yy:8===r?my:wy,o))return t;a=Ym(o,r)}oy(i,a)}for(n=0;n=Xm(256,5-e))return null}else if(a>255)return null;for(s=ny(i),n=0;n1?arguments[1]:void 0,n=qm(e,new nw(t,!1,i));Pm||(e.href=n.serialize(),e.origin=n.getOrigin(),e.protocol=n.getProtocol(),e.username=n.getUsername(),e.password=n.getPassword(),e.host=n.getHost(),e.hostname=n.getHostname(),e.port=n.getPort(),e.pathname=n.getPathname(),e.search=n.getSearch(),e.searchParams=n.getSearchParams(),e.hash=n.getHash())},rw=ow.prototype,aw=function(t,e){return{get:function(){return zm(this)[t]()},set:e&&function(t){return zm(this)[e](t)},configurable:!0,enumerable:!0}};if(Pm&&($m(rw,"href",aw("serialize","setHref")),$m(rw,"origin",aw("getOrigin")),$m(rw,"protocol",aw("getProtocol","setProtocol")),$m(rw,"username",aw("getUsername","setUsername")),$m(rw,"password",aw("getPassword","setPassword")),$m(rw,"host",aw("getHost","setHost")),$m(rw,"hostname",aw("getHostname","setHostname")),$m(rw,"port",aw("getPort","setPort")),$m(rw,"pathname",aw("getPathname","setPathname")),$m(rw,"search",aw("getSearch","setSearch")),$m(rw,"searchParams",aw("getSearchParams")),$m(rw,"hash",aw("getHash","setHash"))),Rm(rw,"toJSON",(function(){return zm(this).serialize()}),{enumerable:!0}),Rm(rw,"toString",(function(){return zm(this).serialize()}),{enumerable:!0}),Km){var sw=Km.createObjectURL,lw=Km.revokeObjectURL;sw&&Rm(ow,"createObjectURL",Am(sw,Km)),lw&&Rm(ow,"revokeObjectURL",Am(lw,Km))}Vm(ow,"URL"),Om({global:!0,constructor:!0,forced:!Tm,sham:!Pm},{URL:ow});var cw=x;po({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return cw(URL.prototype.toString,this)}});var hw=Qt,uw=Ha,fw=ja;po({target:"Object",stat:!0,forced:b((function(){uw(1)})),sham:!fw},{getPrototypeOf:function(t){return uw(hw(t))}});var dw,pw=po,gw=mr,vw=v.f,bw=kn,mw=Il,yw=sd,ww=G,Sw=cd,xw=gw("".slice),kw=Math.min,Ow=Sw("endsWith");pw({target:"String",proto:!0,forced:!!(Ow||(dw=vw(String.prototype,"endsWith"),!dw||dw.writable))&&!Ow},{endsWith:function(t){var e=mw(ww(this));yw(t);var i=arguments.length>1?arguments[1]:void 0,n=e.length,o=void 0===i?n:kw(bw(i),n),r=mw(t);return xw(e,o-r.length,o)===r}});var Pw=x,Tw=We,Cw=q,Aw=kn,Iw=Il,Rw=G,$w=jt,Ew=Kd,jw=cp;Wd("match",(function(t,e,i){return[function(e){var i=Rw(this),n=Cw(e)?void 0:$w(e,t);return n?Pw(n,e,i):new RegExp(e)[t](Iw(i))},function(t){var n=Tw(this),o=Iw(t),r=i(e,n,o);if(r.done)return r.value;if(!n.global)return jw(n,o);var a=n.unicode;n.lastIndex=0;for(var s,l=[],c=0;null!==(s=jw(n,o));){var h=Iw(s[0]);l[c]=h,""===h&&(n.lastIndex=Ew(o,Aw(n.lastIndex),a)),c++}return 0===c?null:l}]}));var Lw=po,Nw=mr,Fw=v.f,Bw=kn,Dw=Il,_w=sd,Vw=G,Hw=cd,Uw=Nw("".slice),Mw=Math.min,qw=Hw("startsWith"),zw=!qw&&!!function(){var t=Fw(String.prototype,"startsWith");return t&&!t.writable}();Lw({target:"String",proto:!0,forced:!zw&&!qw},{startsWith:function(t){var e=Dw(Vw(this));_w(t);var i=Bw(Mw(arguments.length>1?arguments[1]:void 0,e.length)),n=Dw(t);return Uw(e,i,i+n.length)===n}});var Ww={getBootstrapVersion:function(){var e=5;try{var i=t.fn.dropdown.Constructor.VERSION;void 0!==i&&(e=parseInt(i,10))}catch(t){}try{var n=bootstrap.Tooltip.VERSION;void 0!==n&&(e=parseInt(n,10))}catch(t){}return e},getIconsPrefix:function(t){return{bootstrap3:"glyphicon",bootstrap4:"fa",bootstrap5:"bi","bootstrap-table":"icon",bulma:"fa",foundation:"fa",materialize:"material-icons",semantic:"fa"}[t]||"fa"},getIcons:function(t){return{glyphicon:{clearSearch:"glyphicon-trash",columns:"glyphicon-th icon-th",detailClose:"glyphicon-minus icon-minus",detailOpen:"glyphicon-plus icon-plus",fullscreen:"glyphicon-fullscreen",paginationSwitchDown:"glyphicon-collapse-down icon-chevron-down",paginationSwitchUp:"glyphicon-collapse-up icon-chevron-up",refresh:"glyphicon-refresh icon-refresh",search:"glyphicon-search",toggleOff:"glyphicon-list-alt icon-list-alt",toggleOn:"glyphicon-list-alt icon-list-alt"},fa:{clearSearch:"fa-trash",columns:"fa-th-list",detailClose:"fa-minus",detailOpen:"fa-plus",fullscreen:"fa-arrows-alt",paginationSwitchDown:"fa-caret-square-down",paginationSwitchUp:"fa-caret-square-up",refresh:"fa-sync",search:"fa-search",toggleOff:"fa-toggle-off",toggleOn:"fa-toggle-on"},bi:{clearSearch:"bi-trash",columns:"bi-list-ul",detailClose:"bi-dash",detailOpen:"bi-plus",fullscreen:"bi-arrows-move",paginationSwitchDown:"bi-caret-down-square",paginationSwitchUp:"bi-caret-up-square",refresh:"bi-arrow-clockwise",search:"bi-search",toggleOff:"bi-toggle-off",toggleOn:"bi-toggle-on"},icon:{clearSearch:"icon-trash-2",columns:"icon-list",detailClose:"icon-minus",detailOpen:"icon-plus",fullscreen:"icon-maximize",paginationSwitchDown:"icon-arrow-up-circle",paginationSwitchUp:"icon-arrow-down-circle",refresh:"icon-refresh-cw",search:"icon-search",toggleOff:"icon-toggle-right",toggleOn:"icon-toggle-right"},"material-icons":{clearSearch:"delete",columns:"view_list",detailClose:"remove",detailOpen:"add",fullscreen:"fullscreen",paginationSwitchDown:"grid_on",paginationSwitchUp:"grid_off",refresh:"refresh",search:"search",sort:"sort",toggleOff:"tablet",toggleOn:"tablet_android"}}[t]||{}},getSearchInput:function(e){return"string"==typeof e.options.searchSelector?t(e.options.searchSelector):e.$toolbar.find(".search input")},extend:function(){for(var t=this,e=arguments.length,i=new Array(e),n=0;n1?e-1:0),n=1;n0&&void 0!==arguments[0]?arguments[0]:{};return 0===Object.entries(t).length&&t.constructor===Object},isNumeric:function(t){return!isNaN(parseFloat(t))&&isFinite(t)},getFieldTitle:function(t,e){var i,n=o(t);try{for(n.s();!(i=n.n()).done;){var r=i.value;if(r.field===e)return r.title}}catch(t){n.e(t)}finally{n.f()}return""},setFieldIndex:function(t){var e,i=0,n=[],r=o(t[0]);try{for(r.s();!(e=r.n()).done;){i+=+e.value.colspan||1}}catch(t){r.e(t)}finally{r.f()}for(var a=0;a1){for(var u=0,f=function(t){var e=r.filter((function(e){return e.fieldIndex===t})),i=e[e.length-1];if(e.length>1)for(var n=0;n0}}}catch(t){l.e(t)}finally{l.f()}}}catch(t){a.e(t)}finally{a.f()}if(!(t.length<2)){var p,g=o(e);try{var v=function(){var t=p.value,e=r.filter((function(e){return e.fieldIndex===t.fieldIndex}));if(e.length>1){var i,n=o(e);try{for(n.s();!(i=n.n()).done;){i.value.visible=t.visible}}catch(t){n.e(t)}finally{n.f()}}};for(g.s();!(p=g.n()).done;)v()}catch(t){g.e(t)}finally{g.f()}}},getScrollBarWidth:function(){if(void 0===this.cachedWidth){var e=t("
    ").addClass("fixed-table-scroll-inner"),i=t("
    ").addClass("fixed-table-scroll-outer");i.append(e),t("body").append(i);var n=e[0].offsetWidth;i.css("overflow","scroll");var o=e[0].offsetWidth;n===o&&(o=i[0].clientWidth),i.remove(),this.cachedWidth=n-o}return this.cachedWidth},calculateObjectValue:function(t,e,i,n){var r=e;if("string"==typeof e){var a=e.split(".");if(a.length>1){r=window;var s,l=o(a);try{for(l.s();!(s=l.n()).done;){r=r[s.value]}}catch(t){l.e(t)}finally{l.f()}}else r=window[e]}return null!==r&&"object"===u(r)?r:"function"==typeof r?r.apply(t,i||[]):!r&&"string"==typeof e&&i&&this.sprintf.apply(this,[e].concat(c(i)))?this.sprintf.apply(this,[e].concat(c(i))):n},compareObjects:function(t,e,i){var n=Object.keys(t),o=Object.keys(e);if(i&&n.length!==o.length)return!1;for(var r=0,a=n;r/g,">").replace(/"/g,""").replace(/'/g,"'"):t},unescapeHTML:function(t){return"string"==typeof t&&t?t.toString().replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'"):t},removeHTML:function(t){return t?t.toString().replace(/(<([^>]+)>)/gi,"").replace(/&[#A-Za-z0-9]+;/gi,"").trim():t},getRealDataAttr:function(t){for(var e=0,i=Object.entries(t);e3&&void 0!==arguments[3]?arguments[3]:void 0,r=t;if(void 0!==n&&(i=n),"string"!=typeof e||t.hasOwnProperty(e))return i?this.escapeHTML(t[e]):t[e];var a,s=o(e.split("."));try{for(s.s();!(a=s.n()).done;){var l=a.value;r=r&&r[l]}}catch(t){s.e(t)}finally{s.f()}return i?this.escapeHTML(r):r},isIEBrowser:function(){return navigator.userAgent.includes("MSIE ")||/Trident.*rv:11\./.test(navigator.userAgent)},findIndex:function(t,e){var i,n=o(t);try{for(n.s();!(i=n.n()).done;){var r=i.value;if(JSON.stringify(r)===JSON.stringify(e))return t.indexOf(r)}}catch(t){n.e(t)}finally{n.f()}return-1},trToData:function(e,i){var n=this,o=[],r=[];return i.each((function(i,a){var s=t(a),l={};l._id=s.attr("id"),l._class=s.attr("class"),l._data=n.getRealDataAttr(s.data()),l._style=s.attr("style"),s.find(">td,>th").each((function(o,a){for(var s=t(a),c=+s.attr("colspan")||1,h=+s.attr("rowspan")||1,u=o;r[i]&&r[i][u];u++);for(var f=u;fe?i:0;if(n.sortEmptyLast){if(""===t)return 1;if(""===e)return-1}return t===e?0:("string"!=typeof t&&(t=t.toString()),-1===t.localeCompare(e)?-1*i:i)},getEventName:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return e=e||"".concat(+new Date).concat(~~(1e6*Math.random())),"".concat(t,"-").concat(e)},hasDetailViewIcon:function(t){return t.detailView&&t.detailViewIcon&&!t.cardView},getDetailViewIndexOffset:function(t){return this.hasDetailViewIcon(t)&&"right"!==t.detailViewAlign?1:0},checkAutoMergeCells:function(t){var e,i=o(t);try{for(i.s();!(e=i.n()).done;)for(var n=e.value,r=0,a=Object.keys(n);r0){var n=e.substring(0,i).trim(),o=e.substring(i+1).trim();t.style.setProperty(n,o)}}));else if(Array.isArray(e)){var i,n=o(e);try{for(n.s();!(i=n.n()).done;){var r=i.value;this.parseStyle(t,r)}}catch(t){n.e(t)}finally{n.f()}}else if("object"===u(e))for(var a=0,s=Object.entries(e);a',icon:'',inputGroup:'
    %s%s
    ',pageDropdown:['"],pageDropdownItem:'
    ',pagination:['
      ',"
    "],paginationItem:'
  • %s
  • ',searchButton:'',searchClearButton:'',searchInput:'',toolbarDropdown:['"],toolbarDropdownItem:'',toolbarDropdownSeparator:'
  • '}},4:{classes:{buttonActive:"active",buttons:"secondary",buttonsDropdown:"btn-group",buttonsGroup:"btn-group",buttonsPrefix:"btn",dropdownActive:"active",dropup:"dropup",input:"form-control",inputGroup:"btn-group",inputPrefix:"form-control-",paginationActive:"active",paginationDropdown:"btn-group dropdown",pull:"float",select:"form-control"},html:{dropdownCaret:'',icon:'',inputGroup:'
    %s
    %s
    ',pageDropdown:['"],pageDropdownItem:'%s',pagination:['
      ',"
    "],paginationItem:'
  • %s
  • ',searchButton:'',searchClearButton:'',searchInput:'',toolbarDropdown:['"],toolbarDropdownItem:'',toolbarDropdownSeparator:''}},5:{classes:{buttonActive:"active",buttons:"secondary",buttonsDropdown:"btn-group",buttonsGroup:"btn-group",buttonsPrefix:"btn",dropdownActive:"active",dropup:"dropup",input:"form-control",inputGroup:"btn-group",inputPrefix:"form-control-",paginationActive:"active",paginationDropdown:"btn-group dropdown",pull:"float",select:"form-select"},html:{dataToggle:"data-bs-toggle",dropdownCaret:'',icon:'',inputGroup:'
    %s%s
    ',pageDropdown:['"],pageDropdownItem:'%s',pagination:['
      ',"
    "],paginationItem:'
  • %s
  • ',searchButton:'',searchClearButton:'',searchInput:'',toolbarDropdown:['"],toolbarDropdownItem:'',toolbarDropdownSeparator:''}}}[Gw],Jw={ajax:void 0,ajaxOptions:{},buttons:{},buttonsAlign:"right",buttonsAttributeTitle:"title",buttonsClass:Kw.classes.buttons,buttonsOrder:["paginationSwitch","refresh","toggle","fullscreen","columns"],buttonsPrefix:Kw.classes.buttonsPrefix,buttonsToolbar:void 0,cache:!0,cardView:!1,checkboxHeader:!0,classes:"table table-bordered table-hover",clickToSelect:!1,columns:[[]],contentType:"application/json",customSearch:void 0,customSort:void 0,data:[],dataField:"rows",dataType:"json",detailFilter:function(t,e){return!0},detailFormatter:function(t,e){return""},detailView:!1,detailViewAlign:"left",detailViewByClick:!1,detailViewIcon:!0,escape:!1,escapeTitle:!0,filterOptions:{filterAlgorithm:"and"},fixedScroll:!1,footerField:"footer",footerStyle:function(t){return{}},headerStyle:function(t){return{}},height:void 0,icons:{},iconSize:void 0,iconsPrefix:void 0,idField:void 0,ignoreClickToSelectOn:function(t){var e=t.tagName;return["A","BUTTON"].includes(e)},loadingFontSize:"auto",loadingTemplate:function(t){return'\n '.concat(t,'\n \n \n ')},locale:void 0,maintainMetaData:!1,method:"get",minimumCountColumns:1,multipleSelectRow:!1,pageList:[10,25,50,100],pageNumber:1,pageSize:10,pagination:!1,paginationDetailHAlign:"left",paginationHAlign:"right",paginationLoadMore:!1,paginationLoop:!0,paginationNextText:"›",paginationPagesBySide:1,paginationParts:["pageInfo","pageSize","pageList"],paginationPreText:"‹",paginationSuccessivelySize:5,paginationUseIntermediate:!1,paginationVAlign:"bottom",queryParams:function(t){return t},queryParamsType:"limit",regexSearch:!1,rememberOrder:!1,responseHandler:function(t){return t},rowAttributes:function(t,e){return{}},rowStyle:function(t,e){return{}},search:!1,searchable:!1,searchAccentNeutralise:!1,searchAlign:"right",searchHighlight:!1,searchOnEnterKey:!1,searchSelector:!1,searchText:"",searchTimeOut:500,selectItemName:"btSelectItem",serverSort:!0,showButtonIcons:!0,showButtonText:!1,showColumns:!1,showColumnsSearch:!1,showColumnsToggleAll:!1,showExtendedPagination:!1,showFooter:!1,showFullscreen:!1,showHeader:!0,showPaginationSwitch:!1,showRefresh:!1,showSearchButton:!1,showSearchClearButton:!1,showToggle:!1,sidePagination:"client",silentSort:!0,singleSelect:!1,smartDisplay:!0,sortable:!0,sortClass:void 0,sortEmptyLast:!1,sortName:void 0,sortOrder:void 0,sortReset:!1,sortResetPage:!1,sortStable:!1,strictSearch:!1,theadClasses:"",toolbar:void 0,toolbarAlign:"left",totalField:"total",totalNotFiltered:0,totalNotFilteredField:"totalNotFiltered",totalRows:0,trimOnSearch:!0,undefinedText:"-",uniqueId:void 0,url:void 0,virtualScroll:!1,virtualScrollItemHeight:void 0,visibleSearch:!1,onAll:function(t,e){return!1},onCheck:function(t){return!1},onCheckAll:function(t){return!1},onCheckSome:function(t){return!1},onClickCell:function(t,e,i,n){return!1},onClickRow:function(t,e){return!1},onCollapseRow:function(t,e){return!1},onColumnSwitch:function(t,e){return!1},onColumnSwitchAll:function(t){return!1},onDblClickCell:function(t,e,i,n){return!1},onDblClickRow:function(t,e){return!1},onExpandRow:function(t,e,i){return!1},onLoadError:function(t){return!1},onLoadSuccess:function(t){return!1},onPageChange:function(t,e){return!1},onPostBody:function(){return!1},onPostFooter:function(){return!1},onPostHeader:function(){return!1},onPreBody:function(t){return!1},onRefresh:function(t){return!1},onRefreshOptions:function(t){return!1},onResetView:function(){return!1},onScrollBody:function(){return!1},onSearch:function(t){return!1},onSort:function(t,e){return!1},onToggle:function(t){return!1},onTogglePagination:function(t){return!1},onUncheck:function(t){return!1},onUncheckAll:function(t){return!1},onUncheckSome:function(t){return!1},onVirtualScroll:function(t,e){return!1}},Yw={formatLoadingMessage:function(){return"Loading, please wait"},formatRecordsPerPage:function(t){return"".concat(t," rows per page")},formatShowingRows:function(t,e,i,n){return void 0!==n&&n>0&&n>i?"Showing ".concat(t," to ").concat(e," of ").concat(i," rows (filtered from ").concat(n," total rows)"):"Showing ".concat(t," to ").concat(e," of ").concat(i," rows")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatSearch:function(){return"Search"},formatClearSearch:function(){return"Clear Search"},formatNoMatches:function(){return"No matching records found"},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Refresh"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Columns"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"All"}},Qw={align:void 0,cardVisible:!0,cellStyle:void 0,checkbox:!1,checkboxEnabled:!0,class:void 0,clickToSelect:!0,colspan:void 0,detailFormatter:void 0,escape:void 0,events:void 0,falign:void 0,field:void 0,footerFormatter:void 0,footerStyle:void 0,formatter:void 0,halign:void 0,order:"asc",radio:!1,rowspan:void 0,searchable:!0,searchFormatter:!0,searchHighlightFormatter:!1,showSelectTitle:!1,sortable:!1,sorter:void 0,sortName:void 0,switchable:!0,switchableLabel:void 0,title:void 0,titleTooltip:void 0,valign:void 0,visible:!0,width:void 0,widthUnit:"px"};Object.assign(Jw,Yw);var Xw={COLUMN_DEFAULTS:Qw,CONSTANTS:Kw,DEFAULTS:Jw,EVENTS:{"all.bs.table":"onAll","check-all.bs.table":"onCheckAll","check-some.bs.table":"onCheckSome","check.bs.table":"onCheck","click-cell.bs.table":"onClickCell","click-row.bs.table":"onClickRow","collapse-row.bs.table":"onCollapseRow","column-switch-all.bs.table":"onColumnSwitchAll","column-switch.bs.table":"onColumnSwitch","dbl-click-cell.bs.table":"onDblClickCell","dbl-click-row.bs.table":"onDblClickRow","expand-row.bs.table":"onExpandRow","load-error.bs.table":"onLoadError","load-success.bs.table":"onLoadSuccess","page-change.bs.table":"onPageChange","post-body.bs.table":"onPostBody","post-footer.bs.table":"onPostFooter","post-header.bs.table":"onPostHeader","pre-body.bs.table":"onPreBody","refresh-options.bs.table":"onRefreshOptions","refresh.bs.table":"onRefresh","reset-view.bs.table":"onResetView","scroll-body.bs.table":"onScrollBody","search.bs.table":"onSearch","sort.bs.table":"onSort","toggle-pagination.bs.table":"onTogglePagination","toggle.bs.table":"onToggle","uncheck-all.bs.table":"onUncheckAll","uncheck-some.bs.table":"onUncheckSome","uncheck.bs.table":"onUncheck","virtual-scroll.bs.table":"onVirtualScroll"},LOCALES:{en:Yw,"en-US":Yw},METHODS:["getOptions","refreshOptions","getData","getSelections","load","append","prepend","remove","removeAll","insertRow","updateRow","getRowByUniqueId","updateByUniqueId","removeByUniqueId","updateCell","updateCellByUniqueId","showRow","hideRow","getHiddenRows","showColumn","hideColumn","getVisibleColumns","getHiddenColumns","showAllColumns","hideAllColumns","mergeCells","checkAll","uncheckAll","checkInvert","check","uncheck","checkBy","uncheckBy","refresh","destroy","resetView","showLoading","hideLoading","togglePagination","toggleFullscreen","toggleView","resetSearch","filterBy","sortBy","sortReset","scrollTo","getScrollPosition","selectPage","prevPage","nextPage","toggleDetailView","expandRow","collapseRow","expandRowByUniqueId","collapseRowByUniqueId","expandAllRows","collapseAllRows","updateColumnTitle","updateFormatText"],THEME:"bootstrap".concat(Gw),VERSION:"1.23.4"},Zw=function(){return n((function t(e){var n=this;i(this,t),this.rows=e.rows,this.scrollEl=e.scrollEl,this.contentEl=e.contentEl,this.callback=e.callback,this.itemHeight=e.itemHeight,this.cache={},this.scrollTop=this.scrollEl.scrollTop,this.initDOM(this.rows,e.fixedScroll),this.scrollEl.scrollTop=this.scrollTop,this.lastCluster=0;var o=function(){n.lastCluster!==(n.lastCluster=n.getNum())&&(n.initDOM(n.rows),n.callback(n.startIndex,n.endIndex))};this.scrollEl.addEventListener("scroll",o,!1),this.destroy=function(){n.contentEl.innerHtml="",n.scrollEl.removeEventListener("scroll",o,!1)}}),[{key:"initDOM",value:function(t,e){void 0===this.clusterHeight?(this.cache.scrollTop=this.scrollEl.scrollTop,this.cache.data=this.contentEl.innerHTML=t[0]+t[0]+t[0],this.getRowsHeight(t)):0===this.blockHeight&&this.getRowsHeight(t);var i=this.initData(t,this.getNum(e)),n=i.rows.join(""),o=this.checkChanges("data",n),r=this.checkChanges("top",i.topOffset),a=this.checkChanges("bottom",i.bottomOffset),s=[];o&&r?(i.topOffset&&s.push(this.getExtra("top",i.topOffset)),s.push(n),i.bottomOffset&&s.push(this.getExtra("bottom",i.bottomOffset)),this.startIndex=i.start,this.endIndex=i.end,this.contentEl.innerHTML=s.join(""),e&&(this.contentEl.scrollTop=this.cache.scrollTop)):a&&(this.contentEl.lastChild.style.height="".concat(i.bottomOffset,"px"))}},{key:"getRowsHeight",value:function(){if(void 0===this.itemHeight||0===this.itemHeight){var t=this.contentEl.children,e=t[Math.floor(t.length/2)];this.itemHeight=e.offsetHeight}this.blockHeight=50*this.itemHeight,this.clusterRows=200,this.clusterHeight=4*this.blockHeight}},{key:"getNum",value:function(t){return this.scrollTop=t?this.cache.scrollTop:this.scrollEl.scrollTop,Math.floor(this.scrollTop/(this.clusterHeight-this.blockHeight))||0}},{key:"initData",value:function(t,e){if(t.length<50)return{topOffset:0,bottomOffset:0,rowsAbove:0,rows:t};var i=Math.max((this.clusterRows-50)*e,0),n=i+this.clusterRows,o=Math.max(i*this.itemHeight,0),r=Math.max((t.length-n)*this.itemHeight,0),a=[],s=i;o<1&&s++;for(var l=i;l
    ':"",i=["bottom","both"].includes(this.options.paginationVAlign)?'
    ':"",n=Ww.calculateObjectValue(this.options,this.options.loadingTemplate,[this.options.formatLoadingMessage()]);this.$container=t('\n
    \n
    \n ').concat(e,'\n
    \n
    \n
    \n
    \n ').concat(n,'\n
    \n
    \n \n
    \n ').concat(i,"\n
    \n ")),this.$container.insertAfter(this.$el),this.$tableContainer=this.$container.find(".fixed-table-container"),this.$tableHeader=this.$container.find(".fixed-table-header"),this.$tableBody=this.$container.find(".fixed-table-body"),this.$tableLoading=this.$container.find(".fixed-table-loading"),this.$tableFooter=this.$el.find("tfoot"),this.options.buttonsToolbar?this.$toolbar=t("body").find(this.options.buttonsToolbar):this.$toolbar=this.$container.find(".fixed-table-toolbar"),this.$pagination=this.$container.find(".fixed-table-pagination"),this.$tableBody.append(this.$el),this.$container.after('
    '),this.$el.addClass(this.options.classes),this.$tableLoading.addClass(this.options.classes),this.options.height&&(this.$tableContainer.addClass("fixed-height"),this.options.showFooter&&this.$tableContainer.addClass("has-footer"),this.options.classes.split(" ").includes("table-bordered")&&(this.$tableBody.append('
    '),this.$tableBorder=this.$tableBody.find(".fixed-table-border"),this.$tableLoading.addClass("fixed-table-border")),this.$tableFooter=this.$container.find(".fixed-table-footer"))}},{key:"initTable",value:function(){var i=this,n=[];if(this.$header=this.$el.find(">thead"),this.$header.length?this.options.theadClasses&&this.$header.addClass(this.options.theadClasses):this.$header=t('')).appendTo(this.$el),this._headerTrClasses=[],this._headerTrStyles=[],this.$header.find("tr").each((function(e,o){var r=t(o),a=[];r.find("th").each((function(e,i){var n=t(i);void 0!==n.data("field")&&n.data("field","".concat(n.data("field")));var o=Object.assign({},n.data());for(var r in o)t.fn.bootstrapTable.columnDefaults.hasOwnProperty(r)&&delete o[r];a.push(Ww.extend({},{_data:Ww.getRealDataAttr(o),title:n.html(),class:n.attr("class"),titleTooltip:n.attr("title"),rowspan:n.attr("rowspan")?+n.attr("rowspan"):void 0,colspan:n.attr("colspan")?+n.attr("colspan"):void 0},n.data()))})),n.push(a),r.attr("class")&&i._headerTrClasses.push(r.attr("class")),r.attr("style")&&i._headerTrStyles.push(r.attr("style"))})),Array.isArray(this.options.columns[0])||(this.options.columns=[this.options.columns]),this.options.columns=Ww.extend(!0,[],n,this.options.columns),this.columns=[],this.fieldsColumnsIndex=[],Ww.setFieldIndex(this.options.columns),this.options.columns.forEach((function(t,n){t.forEach((function(t,o){var r=Ww.extend({},e.COLUMN_DEFAULTS,t,{passed:t});void 0!==r.fieldIndex&&(i.columns[r.fieldIndex]=r,i.fieldsColumnsIndex[r.field]=r.fieldIndex),i.options.columns[n][o]=r}))})),!this.options.data.length){var o=Ww.trToData(this.columns,this.$el.find(">tbody>tr"));o.length&&(this.options.data=o,this.fromHtml=!0)}this.options.pagination&&"server"!==this.options.sidePagination||(this.footerData=Ww.trToData(this.columns,this.$el.find(">tfoot>tr"))),this.footerData&&this.$el.find("tfoot").html(""),!this.options.showFooter||this.options.cardView?this.$tableFooter.hide():this.$tableFooter.show()}},{key:"initHeader",value:function(){var e=this,i={},n=[];this.header={fields:[],styles:[],classes:[],formatters:[],detailFormatters:[],events:[],sorters:[],sortNames:[],cellStyles:[],searchables:[]},Ww.updateFieldGroup(this.options.columns,this.columns),this.options.columns.forEach((function(t,o){var r=[];r.push(""));var a="";if(0===o&&Ww.hasDetailViewIcon(e.options)){var s=e.options.columns.length>1?' rowspan="'.concat(e.options.columns.length,'"'):"";a='\n
    \n ')}a&&"right"!==e.options.detailViewAlign&&r.push(a),t.forEach((function(t,n){var a=Ww.sprintf(' class="%s"',t.class),s=t.widthUnit,c=parseFloat(t.width),h=t.halign?t.halign:t.align,f=Ww.sprintf("text-align: %s; ",h),d=Ww.sprintf("text-align: %s; ",t.align),p=Ww.sprintf("vertical-align: %s; ",t.valign);if(p+=Ww.sprintf("width: %s; ",!t.checkbox&&!t.radio||c?c?c+s:void 0:t.showSelectTitle?void 0:"36px"),void 0!==t.fieldIndex||t.visible){var g=Ww.calculateObjectValue(null,e.options.headerStyle,[t]),v=[],b=[],m="";if(g&&g.css)for(var y=0,w=Object.entries(g.css);y0)for(var O=0,P=Object.entries(t._data);O0?" data-not-first-th":"",b.length>0?b.join(" "):"",">"),r.push(Ww.sprintf('
    ',e.options.sortable&&t.sortable?"sortable".concat("center"===h?" sortable-center":""," both"):""));var I=e.options.escape&&e.options.escapeTitle?Ww.escapeHTML(t.title):t.title,R=I;t.checkbox&&(I="",!e.options.singleSelect&&e.options.checkboxHeader&&(I=''),e.header.stateField=t.field),t.radio&&(I="",e.header.stateField=t.field),!I&&t.showSelectTitle&&(I+=R),r.push(I),r.push("
    "),r.push('
    '),r.push("
    "),r.push("")}})),a&&"right"===e.options.detailViewAlign&&r.push(a),r.push(""),r.length>3&&n.push(r.join(""))})),this.$header.html(n.join("")),this.$header.find("th[data-field]").each((function(e,n){t(n).data(i[t(n).data("field")])})),this.$container.off("click",".th-inner").on("click",".th-inner",(function(i){var n=t(i.currentTarget);if(e.options.detailView&&!n.parent().hasClass("bs-checkbox")&&n.closest(".bootstrap-table")[0]!==e.$container[0])return!1;e.options.sortable&&n.parent().data().sortable&&e.onSort(i)}));var o=Ww.getEventName("resize.bootstrap-table",this.$el.attr("id"));t(window).off(o),!this.options.showHeader||this.options.cardView?(this.$header.hide(),this.$tableHeader.hide(),this.$tableLoading.css("top",0)):(this.$header.show(),this.$tableHeader.show(),this.$tableLoading.css("top",this.$header.outerHeight()+1),this.getCaret(),t(window).on(o,(function(){return e.resetView()}))),this.$selectAll=this.$header.find('[name="btSelectAll"]'),this.$selectAll.off("click").on("click",(function(i){i.stopPropagation();var n=t(i.currentTarget).prop("checked");e[n?"checkAll":"uncheckAll"](),e.updateSelected()}))}},{key:"initData",value:function(t,e){"append"===e?this.options.data=this.options.data.concat(t):"prepend"===e?this.options.data=[].concat(t).concat(this.options.data):(t=t||Ww.deepCopy(this.options.data),this.options.data=Array.isArray(t)?t:t[this.options.dataField]),this.data=c(this.options.data),this.options.sortReset&&(this.unsortedData=c(this.data)),"server"!==this.options.sidePagination&&this.initSort()}},{key:"initSort",value:function(){var t=this,e=this.options.sortName,i="desc"===this.options.sortOrder?-1:1,n=this.header.fields.indexOf(this.options.sortName),o=0;-1!==n?(this.options.sortStable&&this.data.forEach((function(t,e){t.hasOwnProperty("_position")||(t._position=e)})),this.options.customSort?Ww.calculateObjectValue(this.options,this.options.customSort,[this.options.sortName,this.options.sortOrder,this.data]):this.data.sort((function(o,r){t.header.sortNames[n]&&(e=t.header.sortNames[n]);var a=Ww.getItemField(o,e,t.options.escape),s=Ww.getItemField(r,e,t.options.escape),l=Ww.calculateObjectValue(t.header,t.header.sorters[n],[a,s,o,r]);return void 0!==l?t.options.sortStable&&0===l?i*(o._position-r._position):i*l:Ww.sort(a,s,i,t.options,o._position,r._position)})),void 0!==this.options.sortClass&&(clearTimeout(o),o=setTimeout((function(){t.$el.removeClass(t.options.sortClass);var e=t.$header.find('[data-field="'.concat(t.options.sortName,'"]')).index();t.$el.find("tr td:nth-child(".concat(e+1,")")).addClass(t.options.sortClass)}),250))):this.options.sortReset&&(this.data=c(this.unsortedData))}},{key:"sortReset",value:function(){this.options.sortName=void 0,this.options.sortOrder=void 0,this._sort()}},{key:"sortBy",value:function(t){this.options.sortName=t.field,this.options.sortOrder=t.hasOwnProperty("sortOrder")?t.sortOrder:"asc",this._sort()}},{key:"onSort",value:function(e){var i=e.type,n=e.currentTarget,o="keypress"===i?t(n):t(n).parent(),r=this.$header.find("th").eq(o.index());if(this.$header.add(this.$header_).find("span.order").remove(),this.options.sortName===o.data("field")){var a=this.options.sortOrder,s=this.columns[this.fieldsColumnsIndex[o.data("field")]].sortOrder||this.columns[this.fieldsColumnsIndex[o.data("field")]].order;void 0===a?this.options.sortOrder="asc":"asc"===a?this.options.sortOrder=this.options.sortReset?"asc"===s?"desc":void 0:"desc":"desc"===this.options.sortOrder&&(this.options.sortOrder=this.options.sortReset?"desc"===s?"asc":void 0:"asc"),void 0===this.options.sortOrder&&(this.options.sortName=void 0)}else this.options.sortName=o.data("field"),this.options.rememberOrder?this.options.sortOrder="asc"===o.data("order")?"desc":"asc":this.options.sortOrder=this.columns[this.fieldsColumnsIndex[o.data("field")]].sortOrder||this.columns[this.fieldsColumnsIndex[o.data("field")]].order;o.add(r).data("order",this.options.sortOrder),this.getCaret(),this._sort()}},{key:"_sort",value:function(){if("server"===this.options.sidePagination&&this.options.serverSort)return this.options.pageNumber=1,this.trigger("sort",this.options.sortName,this.options.sortOrder),void this.initServer(this.options.silentSort);this.options.pagination&&this.options.sortResetPage&&(this.options.pageNumber=1,this.initPagination()),this.trigger("sort",this.options.sortName,this.options.sortOrder),this.initSort(),this.initBody()}},{key:"initToolbar",value:function(){var e,i=this,n=this.options,r=[],a=0,s=0;this.$toolbar.find(".bs-bars").children().length&&t("body").append(t(n.toolbar)),this.$toolbar.html(""),"string"!=typeof n.toolbar&&"object"!==u(n.toolbar)||t(Ww.sprintf('
    ',this.constants.classes.pull,n.toolbarAlign)).appendTo(this.$toolbar).append(t(n.toolbar)),r=['
    ')],"string"==typeof n.buttonsOrder&&(n.buttonsOrder=n.buttonsOrder.replace(/\[|\]| |'/g,"").split(",")),this.buttons=Object.assign(this.buttons,{paginationSwitch:{text:n.pagination?n.formatPaginationSwitchUp():n.formatPaginationSwitchDown(),icon:n.pagination?n.icons.paginationSwitchDown:n.icons.paginationSwitchUp,render:!1,event:this.togglePagination,attributes:{"aria-label":n.formatPaginationSwitch(),title:n.formatPaginationSwitch()}},refresh:{text:n.formatRefresh(),icon:n.icons.refresh,render:!1,event:this.refresh,attributes:{"aria-label":n.formatRefresh(),title:n.formatRefresh()}},toggle:{text:n.formatToggleOn(),icon:n.icons.toggleOff,render:!1,event:this.toggleView,attributes:{"aria-label":n.formatToggleOn(),title:n.formatToggleOn()}},fullscreen:{text:n.formatFullscreen(),icon:n.icons.fullscreen,render:!1,event:this.toggleFullscreen,attributes:{"aria-label":n.formatFullscreen(),title:n.formatFullscreen()}},columns:{render:!1,html:function(){var t=[];if(t.push('
    \n \n ").concat(i.constants.html.toolbarDropdown[0])),n.showColumnsSearch&&(t.push(Ww.sprintf(i.constants.html.toolbarDropdownItem,Ww.sprintf('',i.constants.classes.input,n.formatSearch()))),t.push(i.constants.html.toolbarDropdownSeparator)),n.showColumnsToggleAll){var e=i.getVisibleColumns().length===i.columns.filter((function(t){return!i.isSelectionColumn(t)})).length;t.push(Ww.sprintf(i.constants.html.toolbarDropdownItem,Ww.sprintf(' %s',e?'checked="checked"':"",n.formatColumnsToggleAll()))),t.push(i.constants.html.toolbarDropdownSeparator)}var o=0;return i.columns.forEach((function(t){t.visible&&o++})),i.columns.forEach((function(e,r){if(!i.isSelectionColumn(e)&&(!n.cardView||e.cardVisible)){var a=e.visible?' checked="checked"':"",l=o<=n.minimumCountColumns&&a?' disabled="disabled"':"";e.switchable&&(t.push(Ww.sprintf(i.constants.html.toolbarDropdownItem,Ww.sprintf(' %s',e.field,r,a,l,e.switchableLabel||e.title))),s++)}})),t.push(i.constants.html.toolbarDropdown[1],"
    "),t.join("")}}});for(var c={},h=0,f=Object.entries(this.buttons);h"}c[p]=v;var O="show".concat(p.charAt(0).toUpperCase()).concat(p.substring(1)),P=n[O];!(!g.hasOwnProperty("render")||g.hasOwnProperty("render")&&g.render)||void 0!==P&&!0!==P||(n[O]=!0),n.buttonsOrder.includes(p)||n.buttonsOrder.push(p)}var T,C=o(n.buttonsOrder);try{for(C.s();!(T=C.n()).done;){var A=T.value;n["show".concat(A.charAt(0).toUpperCase()).concat(A.substring(1))]&&r.push(c[A])}}catch(t){C.e(t)}finally{C.f()}r.push("
    "),(this.showToolbar||r.length>2)&&this.$toolbar.append(r.join(""));for(var I=function(){var t=l($[R],2),e=t[0],n=t[1];if(n.hasOwnProperty("event")){if("function"==typeof n.event||"string"==typeof n.event){var o="string"==typeof n.event?window[n.event]:n.event;return i.$toolbar.find('button[name="'.concat(e,'"]')).off("click").on("click",(function(){return o.call(i)})),1}for(var r=function(){var t=l(s[a],2),n=t[0],o=t[1],r="string"==typeof o?window[o]:o;i.$toolbar.find('button[name="'.concat(e,'"]')).off(n).on(n,(function(){return r.call(i)}))},a=0,s=Object.entries(n.event);a'),V=_;if(n.showSearchButton||n.showSearchClearButton){var H=(n.showSearchButton?B:"")+(n.showSearchClearButton?D:"");V=n.search?Ww.sprintf(this.constants.html.inputGroup,_,H):H}r.push(Ww.sprintf('\n
    \n %s\n
    \n '),V)),this.$toolbar.append(r.join(""));var U=Ww.getSearchInput(this);n.showSearchButton?(this.$toolbar.find(".search button[name=search]").off("click").on("click",(function(){clearTimeout(a),a=setTimeout((function(){i.onSearch({currentTarget:U})}),n.searchTimeOut)})),n.searchOnEnterKey&&F(U)):F(U),n.showSearchClearButton&&this.$toolbar.find(".search button[name=clearSearch]").click((function(){i.resetSearch()}))}else"string"==typeof n.searchSelector&&F(Ww.getSearchInput(this))}},{key:"onSearch",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=e.currentTarget,n=e.firedByInitSearchText,o=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(void 0!==i&&t(i).length&&o){var r=t(i).val().trim();if(this.options.trimOnSearch&&t(i).val()!==r&&t(i).val(r),this.searchText===r)return;var a=Ww.getSearchInput(this),s=i instanceof jQuery?i:t(i);(s.is(a)||s.hasClass("search-input"))&&(this.searchText=r,this.options.searchText=r)}n||(this.options.pageNumber=1),this.initSearch(),n?"client"===this.options.sidePagination&&this.updatePagination():this.updatePagination(),this.trigger("search",this.searchText)}},{key:"initSearch",value:function(){var e=this;if(this.filterOptions=this.filterOptions||this.options.filterOptions,"server"!==this.options.sidePagination){if(this.options.customSearch)return this.data=Ww.calculateObjectValue(this.options,this.options.customSearch,[this.options.data,this.searchText,this.filterColumns]),this.options.sortReset&&(this.unsortedData=c(this.data)),void this.initSort();var i=this.searchText&&(this.fromHtml?Ww.escapeHTML(this.searchText):this.searchText),n=i?i.toLowerCase():"",o=Ww.isEmptyObject(this.filterColumns)?null:this.filterColumns;this.options.searchAccentNeutralise&&(n=Ww.normalizeAccent(n)),"function"==typeof this.filterOptions.filterAlgorithm?this.data=this.options.data.filter((function(t){return e.filterOptions.filterAlgorithm.apply(null,[t,o])})):"string"==typeof this.filterOptions.filterAlgorithm&&(this.data=o?this.options.data.filter((function(t){var i=e.filterOptions.filterAlgorithm;if("and"===i){for(var n in o)if(Array.isArray(o[n])&&!o[n].includes(t[n])||!Array.isArray(o[n])&&t[n]!==o[n])return!1}else if("or"===i){var r=!1;for(var a in o)(Array.isArray(o[a])&&o[a].includes(t[a])||!Array.isArray(o[a])&&t[a]===o[a])&&(r=!0);return r}return!0})):c(this.options.data));var r=this.getVisibleFields();this.data=n?this.data.filter((function(o,a){for(var s=0;s").html(h).text())),"string"==typeof h||"number"==typeof h){if(e.options.strictSearch&&"".concat(h).toLowerCase()===n||e.options.regexSearch&&Ww.regexCompare(h,i))return!0;var d=/(?:(<=|=>|=<|>=|>|<)(?:\s+)?(-?\d+)?|(-?\d+)?(\s+)?(<=|=>|=<|>=|>|<))/gm.exec(e.searchText),p=!1;if(d){var g=d[1]||"".concat(d[5],"l"),v=d[2]||d[3],b=parseInt(h,10),m=parseInt(v,10);switch(g){case">":case"m;break;case"<":case">l":p=b=l":case"=>l":p=b<=m;break;case">=":case"=>":case"<=l":case"==m}}if(p||"".concat(h).toLowerCase().includes(n))return!0}}return!1})):this.data,this.options.sortReset&&(this.unsortedData=c(this.data)),this.initSort()}}},{key:"initPagination",value:function(){var t=this,e=this.options;if(e.pagination){this.$pagination.show();var i,n,o,r,a,s,l,c=[],h=!1,u=this.getData({includeHiddenRows:!1}),f=e.pageList;if("string"==typeof f&&(f=f.replace(/\[|\]| /g,"").toLowerCase().split(",")),f=f.map((function(t){return"string"==typeof t?t.toLowerCase()===e.formatAllRows().toLowerCase()||["all","unlimited"].includes(t.toLowerCase())?e.formatAllRows():+t:t})),this.paginationParts=e.paginationParts,"string"==typeof this.paginationParts&&(this.paginationParts=this.paginationParts.replace(/\[|\]| |'/g,"").split(",")),"server"!==e.sidePagination&&(e.totalRows=u.length),this.totalPages=0,e.totalRows&&(e.pageSize===e.formatAllRows()&&(e.pageSize=e.totalRows,h=!0),this.totalPages=1+~~((e.totalRows-1)/e.pageSize),e.totalPages=this.totalPages),this.totalPages>0&&e.pageNumber>this.totalPages&&(e.pageNumber=this.totalPages),this.pageFrom=(e.pageNumber-1)*e.pageSize+1,this.pageTo=e.pageNumber*e.pageSize,this.pageTo>e.totalRows&&(this.pageTo=e.totalRows),this.options.pagination&&"server"!==this.options.sidePagination&&(this.options.totalNotFiltered=this.options.data.length),this.options.showExtendedPagination||(this.options.totalNotFiltered=void 0),(this.paginationParts.includes("pageInfo")||this.paginationParts.includes("pageInfoShort")||this.paginationParts.includes("pageSize"))&&c.push('
    ')),this.paginationParts.includes("pageInfo")||this.paginationParts.includes("pageInfoShort")){var d=this.options.totalRows+("client"===this.options.sidePagination&&this.options.paginationLoadMore&&!this._paginationLoaded?" +":""),p=this.paginationParts.includes("pageInfoShort")?e.formatDetailPagination(d):e.formatShowingRows(this.pageFrom,this.pageTo,d,e.totalNotFiltered);c.push('\n '.concat(p,"\n "))}if(this.paginationParts.includes("pageSize")){c.push('
    ');var g=['
    \n \n ").concat(this.constants.html.pageDropdown[0])];f.forEach((function(i,n){var o;(!e.smartDisplay||0===n||f[n-1]")),c.push(e.formatRecordsPerPage(g.join("")))}if((this.paginationParts.includes("pageInfo")||this.paginationParts.includes("pageInfoShort")||this.paginationParts.includes("pageSize"))&&c.push("
    "),this.paginationParts.includes("pageList")){c.push('
    '),Ww.sprintf(this.constants.html.pagination[0],Ww.sprintf(" pagination-%s",e.iconSize)),Ww.sprintf(this.constants.html.paginationItem," page-pre",e.formatSRPaginationPreText(),e.paginationPreText)),this.totalPagesthis.totalPages-n&&(n=n-(e.paginationSuccessivelySize-(this.totalPages-n))+1),n<1&&(n=1),o>this.totalPages&&(o=this.totalPages);var v=Math.round(e.paginationPagesBySide/2),b=function(i){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return Ww.sprintf(t.constants.html.paginationItem,n+(i===e.pageNumber?" ".concat(t.constants.classes.paginationActive):""),e.formatSRPaginationPageText(i),i)};if(n>1){var m=e.paginationPagesBySide;for(m>=n&&(m=n-1),i=1;i<=m;i++)c.push(b(i));n-1===m+1?(i=n-1,c.push(b(i))):n-1>m&&(n-2*e.paginationPagesBySide>e.paginationPagesBySide&&e.paginationUseIntermediate?(i=Math.round((n-v)/2+v),c.push(b(i," page-intermediate"))):c.push(Ww.sprintf(this.constants.html.paginationItem," page-first-separator disabled","","...")))}for(i=n;i<=o;i++)c.push(b(i));if(this.totalPages>o){var y=this.totalPages-(e.paginationPagesBySide-1);for(o>=y&&(y=o+1),o+1===y-1?(i=o+1,c.push(b(i))):y>o+1&&(this.totalPages-o>2*e.paginationPagesBySide&&e.paginationUseIntermediate?(i=Math.round((this.totalPages-v-o)/2+o),c.push(b(i," page-intermediate"))):c.push(Ww.sprintf(this.constants.html.paginationItem," page-last-separator disabled","","..."))),i=y;i<=this.totalPages;i++)c.push(b(i))}c.push(Ww.sprintf(this.constants.html.paginationItem," page-next",e.formatSRPaginationNextText(),e.paginationNextText)),c.push(this.constants.html.pagination[1],"
    ")}this.$pagination.html(c.join(""));var w=["bottom","both"].includes(e.paginationVAlign)?" ".concat(this.constants.classes.dropup):"";this.$pagination.last().find(".page-list > div").addClass(w),e.onlyInfoPagination||(r=this.$pagination.find(".page-list a"),a=this.$pagination.find(".page-pre"),s=this.$pagination.find(".page-next"),l=this.$pagination.find(".page-item").not(".page-next, .page-pre, .page-last-separator, .page-first-separator"),this.totalPages<=1&&this.$pagination.find("div.pagination").hide(),e.smartDisplay&&(f.length<2||e.totalRows<=f[0])&&this.$pagination.find("div.page-list").hide(),this.$pagination[this.getData().length?"show":"hide"](),e.paginationLoop||(1===e.pageNumber&&a.addClass("disabled"),e.pageNumber===this.totalPages&&s.addClass("disabled")),h&&(e.pageSize=e.formatAllRows()),r.off("click").on("click",(function(e){return t.onPageListChange(e)})),a.off("click").on("click",(function(e){return t.onPagePre(e)})),s.off("click").on("click",(function(e){return t.onPageNext(e)})),l.off("click").on("click",(function(e){return t.onPageNumber(e)})))}else this.$pagination.hide()}},{key:"updatePagination",value:function(e){e&&t(e.currentTarget).hasClass("disabled")||(this.options.maintainMetaData||this.resetRows(),this.initPagination(),this.trigger("page-change",this.options.pageNumber,this.options.pageSize),"server"===this.options.sidePagination||"client"===this.options.sidePagination&&this.options.paginationLoadMore&&!this._paginationLoaded&&this.options.pageNumber===this.totalPages?this.initServer():this.initBody())}},{key:"onPageListChange",value:function(e){e.preventDefault();var i=t(e.currentTarget);return i.parent().addClass(this.constants.classes.dropdownActive).siblings().removeClass(this.constants.classes.dropdownActive),this.options.pageSize=i.text().toUpperCase()===this.options.formatAllRows().toUpperCase()?this.options.formatAllRows():+i.text(),this.$toolbar.find(".page-size").text(this.options.pageSize),this.updatePagination(e),!1}},{key:"onPagePre",value:function(e){if(!t(e.target).hasClass("disabled"))return e.preventDefault(),this.options.pageNumber-1==0?this.options.pageNumber=this.options.totalPages:this.options.pageNumber--,this.updatePagination(e),!1}},{key:"onPageNext",value:function(e){if(!t(e.target).hasClass("disabled"))return e.preventDefault(),this.options.pageNumber+1>this.options.totalPages?this.options.pageNumber=1:this.options.pageNumber++,this.updatePagination(e),!1}},{key:"onPageNumber",value:function(e){if(e.preventDefault(),this.options.pageNumber!==+t(e.currentTarget).text())return this.options.pageNumber=+t(e.currentTarget).text(),this.updatePagination(e),!1}},{key:"initRow",value:function(e,i,n,o){var r=this;if(!(Ww.findIndex(this.hiddenRows,e)>-1)){var a=Ww.calculateObjectValue(this.options,this.options.rowStyle,[e,i],{}),h=Ww.calculateObjectValue(this.options,this.options.rowAttributes,[e,i],{}),f={};if(e._data&&!Ww.isEmptyObject(e._data))for(var d=0,p=Object.entries(e._data);dtbody"),this.$body.length||(this.$body=t("").appendTo(this.$el)),this.options.pagination&&"server"!==this.options.sidePagination||(this.pageFrom=1,this.pageTo=o.length);var r=[],a=t(document.createDocumentFragment()),s=!1,l=[];this.autoMergeCells=Ww.checkAutoMergeCells(o.slice(this.pageFrom-1,this.pageTo));for(var c=this.pageFrom-1;c tr[data-uniqueid="%s"][data-has-detail-view]',p)).next();g.is("tr.detail-view")&&(l.push(c),i&&p===i||d.push(g[0]))}this.options.virtualScroll?r.push(t("
    ").html(d).html()):a.append(d)}}this.$el.removeAttr("role"),s?this.options.virtualScroll?(this.virtualScroll&&this.virtualScroll.destroy(),this.virtualScroll=new Zw({rows:r,fixedScroll:e,scrollEl:this.$tableBody[0],contentEl:this.$body[0],itemHeight:this.options.virtualScrollItemHeight,callback:function(t,e){n.fitHeader(),n.initBodyEvent(),n.trigger("virtual-scroll",t,e)}})):this.$body.html(a):(this.$body.html(''.concat(Ww.sprintf('%s',this.getVisibleFields().length+Ww.getDetailViewIndexOffset(this.options),this.options.formatNoMatches()),"")),this.$el.attr("role","presentation")),l.forEach((function(t){n.expandRow(t)})),e||this.scrollTo(0),this.initBodyEvent(),this.initFooter(),this.resetView(),this.updateSelected(),"server"!==this.options.sidePagination&&(this.options.totalRows=o.length),this.trigger("post-body",o)}},{key:"initBodyEvent",value:function(){var e=this;this.$body.find("> tr[data-index] > td").off("click dblclick").on("click dblclick",(function(i){var n=t(i.currentTarget);if(!(n.find(".detail-icon").length||n.index()-Ww.getDetailViewIndexOffset(e.options)<0)){var o=n.parent(),r=t(i.target).parents(".card-views").children(),a=t(i.target).parents(".card-view"),s=o.data("index"),l=e.data[s],c=e.options.cardView?r.index(a):n[0].cellIndex,h=e.getVisibleFields()[c-Ww.getDetailViewIndexOffset(e.options)],u=e.columns[e.fieldsColumnsIndex[h]],f=Ww.getItemField(l,h,e.options.escape,u.escape);if(e.trigger("click"===i.type?"click-cell":"dbl-click-cell",h,f,l,n),e.trigger("click"===i.type?"click-row":"dbl-click-row",l,o,h),"click"===i.type&&e.options.clickToSelect&&u.clickToSelect&&!Ww.calculateObjectValue(e.options,e.options.ignoreClickToSelectOn,[i.target])){var d=o.find(Ww.sprintf('[name="%s"]',e.options.selectItemName));d.length&&d[0].click()}"click"===i.type&&e.options.detailViewByClick&&e.toggleDetailView(s,e.header.detailFormatters[e.fieldsColumnsIndex[h]])}})).off("mousedown").on("mousedown",(function(t){e.multipleSelectRowCtrlKey=t.ctrlKey||t.metaKey,e.multipleSelectRowShiftKey=t.shiftKey})),this.$body.find("> tr[data-index] > td > .detail-icon").off("click").on("click",(function(i){return i.preventDefault(),e.toggleDetailView(t(i.currentTarget).parent().parent().data("index")),!1})),this.$selectItem=this.$body.find(Ww.sprintf('[name="%s"]',this.options.selectItemName)),this.$selectItem.off("click").on("click",(function(i){i.stopImmediatePropagation();var n=t(i.currentTarget);e._toggleCheck(n.prop("checked"),n.data("index"))})),this.header.events.forEach((function(i,n){var o=i;if(o){if("string"==typeof o&&(o=Ww.calculateObjectValue(null,o)),!o)throw new Error("Unknown event in the scope: ".concat(i));var r=e.header.fields[n],a=e.getVisibleFields().indexOf(r);if(-1!==a){a+=Ww.getDetailViewIndexOffset(e.options);var s=function(i){if(!o.hasOwnProperty(i))return 1;var n=o[i];e.$body.find(">tr:not(.no-records-found)").each((function(o,s){var l=t(s),c=l.find(e.options.cardView?".card-views>.card-view":">td").eq(a),h=i.indexOf(" "),u=i.substring(0,h),f=i.substring(h+1);c.find(f).off(u).on(u,(function(t){var i=l.data("index"),o=e.data[i],a=o[r];n.apply(e,[t,a,o,i])}))}))};for(var l in o)s(l)}}}))}},{key:"initServer",value:function(e,i){var n=this,r={},a=this.header.fields.indexOf(this.options.sortName),s={searchText:this.searchText,sortName:this.options.sortName,sortOrder:this.options.sortOrder};if(this.header.sortNames[a]&&(s.sortName=this.header.sortNames[a]),this.options.pagination&&"server"===this.options.sidePagination&&(s.pageSize=this.options.pageSize===this.options.formatAllRows()?this.options.totalRows:this.options.pageSize,s.pageNumber=this.options.pageNumber),this.options.url||this.options.ajax){if("limit"===this.options.queryParamsType&&(s={search:s.searchText,sort:s.sortName,order:s.sortOrder},this.options.pagination&&"server"===this.options.sidePagination&&(s.offset=this.options.pageSize===this.options.formatAllRows()?0:this.options.pageSize*(this.options.pageNumber-1),s.limit=this.options.pageSize,0!==s.limit&&this.options.pageSize!==this.options.formatAllRows()||delete s.limit)),this.options.search&&"server"===this.options.sidePagination&&this.options.searchable&&this.columns.filter((function(t){return t.searchable})).length){s.searchable=[];var l,c=o(this.columns);try{for(c.s();!(l=c.n()).done;){var h=l.value;!h.checkbox&&h.searchable&&(this.options.visibleSearch&&h.visible||!this.options.visibleSearch)&&s.searchable.push(h.field)}}catch(t){c.e(t)}finally{c.f()}}if(Ww.isEmptyObject(this.filterColumnsPartial)||(s.filter=JSON.stringify(this.filterColumnsPartial,null)),Ww.extend(s,i||{}),!1!==(r=Ww.calculateObjectValue(this.options,this.options.queryParams,[s],r))){e||this.showLoading();var u=Ww.extend({},Ww.calculateObjectValue(null,this.options.ajaxOptions),{type:this.options.method,url:this.options.url,data:"application/json"===this.options.contentType&&"post"===this.options.method?JSON.stringify(r):r,cache:this.options.cache,contentType:this.options.contentType,dataType:this.options.dataType,success:function(t,i,o){var r=Ww.calculateObjectValue(n.options,n.options.responseHandler,[t,o],t);"client"===n.options.sidePagination&&n.options.paginationLoadMore&&(n._paginationLoaded=n.data.length===r.length),n.load(r),n.trigger("load-success",r,o&&o.status,o),e||n.hideLoading(),"server"===n.options.sidePagination&&n.options.pageNumber>1&&r[n.options.totalField]>0&&!r[n.options.dataField].length&&n.updatePagination()},error:function(t){if(t&&0===t.status&&n._xhrAbort)n._xhrAbort=!1;else{var i=[];"server"===n.options.sidePagination&&((i={})[n.options.totalField]=0,i[n.options.dataField]=[]),n.load(i),n.trigger("load-error",t&&t.status,t),e||n.hideLoading()}}});return this.options.ajax?Ww.calculateObjectValue(this,this.options.ajax,[u],null):(this._xhr&&4!==this._xhr.readyState&&(this._xhrAbort=!0,this._xhr.abort()),this._xhr=t.ajax(u)),r}}}},{key:"initSearchText",value:function(){if(this.options.search&&(this.searchText="",""!==this.options.searchText)){var t=Ww.getSearchInput(this);t.val(this.options.searchText),this.onSearch({currentTarget:t,firedByInitSearchText:!0})}}},{key:"getCaret",value:function(){var e=this;this.$header.find("th").each((function(i,n){t(n).find(".sortable").removeClass("desc asc").addClass(t(n).data("field")===e.options.sortName?e.options.sortOrder:"both")}))}},{key:"updateSelected",value:function(){var e=this.$selectItem.filter(":enabled").length&&this.$selectItem.filter(":enabled").length===this.$selectItem.filter(":enabled").filter(":checked").length;this.$selectAll.add(this.$selectAll_).prop("checked",e),this.$selectItem.each((function(e,i){t(i).closest("tr")[t(i).prop("checked")?"addClass":"removeClass"]("selected")}))}},{key:"updateRows",value:function(){var e=this;this.$selectItem.each((function(i,n){e.data[t(n).data("index")][e.header.stateField]=t(n).prop("checked")}))}},{key:"resetRows",value:function(){var t,e=o(this.data);try{for(e.s();!(t=e.n()).done;){var i=t.value;this.$selectAll.prop("checked",!1),this.$selectItem.prop("checked",!1),this.header.stateField&&(i[this.header.stateField]=!1)}}catch(t){e.e(t)}finally{e.f()}this.initHiddenRows()}},{key:"trigger",value:function(i){for(var n,o,r="".concat(i,".bs.table"),a=arguments.length,s=new Array(a>1?a-1:0),l=1;li.clientHeight+this.$header.outerHeight()?Ww.getScrollBarWidth():0;this.$el.css("margin-top",-this.$header.outerHeight());var o=this.$tableHeader.find(":focus");if(o.length>0){var r=o.parents("th");if(r.length>0){var a=r.attr("data-field");if(void 0!==a){var s=this.$header.find("[data-field='".concat(a,"']"));s.length>0&&s.find(":input").addClass("focus-temp")}}}this.$header_=this.$header.clone(!0,!0),this.$selectAll_=this.$header_.find('[name="btSelectAll"]'),this.$tableHeader.css("margin-right",n).find("table").css("width",this.$el.outerWidth()).html("").attr("class",this.$el.attr("class")).append(this.$header_),this.$tableLoading.css("width",this.$el.outerWidth());var l=t(".focus-temp:visible:eq(0)");l.length>0&&(l.focus(),this.$header.find(".focus-temp").removeClass("focus-temp")),this.$header.find("th[data-field]").each((function(i,n){e.$header_.find(Ww.sprintf('th[data-field="%s"]',t(n).data("field"))).data(t(n).data())}));for(var c=this.getVisibleFields(),h=this.$header_.find("th"),u=this.$body.find(">tr:not(.no-records-found,.virtual-scroll-top)").eq(0);u.length&&u.find('>td[colspan]:not([colspan="1"])').length;)u=u.next();var f=u.find("> *").length;u.find("> *").each((function(i,n){var o=t(n);if(Ww.hasDetailViewIcon(e.options)&&(0===i&&"right"!==e.options.detailViewAlign||i===f-1&&"right"===e.options.detailViewAlign)){var r=h.filter(".detail"),a=r.innerWidth()-r.find(".fht-cell").width();r.find(".fht-cell").width(o.innerWidth()-a)}else{var s=i-Ww.getDetailViewIndexOffset(e.options),l=e.$header_.find(Ww.sprintf('th[data-field="%s"]',c[s]));l.length>1&&(l=t(h[o[0].cellIndex]));var u=l.innerWidth()-l.find(".fht-cell").width();l.find(".fht-cell").width(o.innerWidth()-u)}})),this.horizontalScroll(),this.trigger("post-header")}}},{key:"initFooter",value:function(){if(this.options.showFooter&&!this.options.cardView){var t=this.getData(),e=[],i="";Ww.hasDetailViewIcon(this.options)&&(i=Ww.h("th",{class:"detail"},[Ww.h("div",{class:"th-inner"}),Ww.h("div",{class:"fht-cell"})])),i&&"right"!==this.options.detailViewAlign&&e.push(i);var n,r=o(this.columns);try{for(r.s();!(n=r.n()).done;){var a=n.value,l=this.footerData&&this.footerData.length>0;if(a.visible&&(!l||a.field in this.footerData[0])){if(this.options.cardView&&!a.cardVisible)return;var h=Ww.calculateObjectValue(null,a.footerStyle||this.options.footerStyle,[a]),u=h&&h.css||{},f=l&&this.footerData[0]["_".concat(a.field,"_colspan")]||0,d=l&&this.footerData[0][a.field]||"";d=Ww.calculateObjectValue(a,a.footerFormatter,[t,d],d),e.push(Ww.h("th",{class:[a.class,h&&h.classes],style:s({"text-align":a.falign?a.falign:a.align,"vertical-align":a.valign},u),colspan:f||void 0},[Ww.h("div",{class:"th-inner"},c(Ww.htmlToNodes(d))),Ww.h("div",{class:"fht-cell"})]))}}}catch(t){r.e(t)}finally{r.f()}i&&"right"===this.options.detailViewAlign&&e.push(i),this.options.height||this.$tableFooter.length||(this.$el.append(""),this.$tableFooter=this.$el.find("tfoot")),this.$tableFooter.find("tr").length||this.$tableFooter.html("
    "),this.$tableFooter.find("tr").html(e),this.trigger("post-footer",this.$tableFooter)}}},{key:"fitFooter",value:function(){var e=this;if(this.$el.is(":hidden"))setTimeout((function(){return e.fitFooter()}),100);else{var i=this.$tableBody.get(0),n=this.hasScrollBar&&i.scrollHeight>i.clientHeight+this.$header.outerHeight()?Ww.getScrollBarWidth():0;this.$tableFooter.css("margin-right",n).find("table").css("width",this.$el.outerWidth()).attr("class",this.$el.attr("class"));var o=this.$tableFooter.find("th"),r=this.$body.find(">tr:first-child:not(.no-records-found)");for(o.find(".fht-cell").width("auto");r.length&&r.find('>td[colspan]:not([colspan="1"])').length;)r=r.next();var a=r.find("> *").length;r.find("> *").each((function(i,n){var r=t(n);if(Ww.hasDetailViewIcon(e.options)&&(0===i&&"left"===e.options.detailViewAlign||i===a-1&&"right"===e.options.detailViewAlign)){var s=o.filter(".detail"),l=s.innerWidth()-s.find(".fht-cell").width();s.find(".fht-cell").width(r.innerWidth()-l)}else{var c=o.eq(i),h=c.innerWidth()-c.find(".fht-cell").width();c.find(".fht-cell").width(r.innerWidth()-h)}})),this.horizontalScroll()}}},{key:"horizontalScroll",value:function(){var t=this;this.$tableBody.off("scroll").on("scroll",(function(){var e=t.$tableBody.scrollLeft();t.options.showHeader&&t.options.height&&t.$tableHeader.scrollLeft(e),t.options.showFooter&&!t.options.cardView&&t.$tableFooter.scrollLeft(e),t.trigger("scroll-body",t.$tableBody)}))}},{key:"getVisibleFields",value:function(){var t,e=[],i=o(this.header.fields);try{for(i.s();!(t=i.n()).done;){var n=t.value,r=this.columns[this.fieldsColumnsIndex[n]];r&&r.visible&&(!this.options.cardView||r.cardVisible)&&e.push(n)}}catch(t){i.e(t)}finally{i.f()}return e}},{key:"initHiddenRows",value:function(){this.hiddenRows=[]}},{key:"getOptions",value:function(){var t=Ww.extend({},this.options);return delete t.data,Ww.extend(!0,{},t)}},{key:"refreshOptions",value:function(t){Ww.compareObjects(this.options,t,!0)||(this.options=Ww.extend(this.options,t),this.trigger("refresh-options",this.options),this.destroy(),this.init())}},{key:"getData",value:function(t){var e=this,i=this.options.data;if(!(this.searchText||this.options.customSearch||void 0!==this.options.sortName||this.enableCustomSort)&&Ww.isEmptyObject(this.filterColumns)&&"function"!=typeof this.options.filterOptions.filterAlgorithm&&Ww.isEmptyObject(this.filterColumnsPartial)||t&&t.unfiltered||(i=this.data),t&&!t.includeHiddenRows){var n=this.getHiddenRows();i=i.filter((function(t){return-1===Ww.findIndex(n,t)}))}return t&&t.useCurrentPage&&(i=i.slice(this.pageFrom-1,this.pageTo)),t&&t.formatted?i.map((function(t){for(var i=0,n=Object.entries(t);i=0;i--){var n=this.options.data[i],o=Ww.getItemField(n,t.field,this.options.escape,n.escape);void 0===o&&"$index"!==t.field||(!n.hasOwnProperty(t.field)&&"$index"===t.field&&t.values.includes(i)||t.values.includes(o))&&(e++,this.options.data.splice(i,1))}e&&("server"===this.options.sidePagination&&(this.options.totalRows-=e,this.data=c(this.options.data)),this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0))}},{key:"removeAll",value:function(){this.options.data.length>0&&(this.data.splice(0,this.data.length),this.options.data.splice(0,this.options.data.length),this.initSearch(),this.initPagination(),this.initBody(!0))}},{key:"insertRow",value:function(t){if(t.hasOwnProperty("index")&&t.hasOwnProperty("row")){var e=this.data[t.index],i=this.options.data.indexOf(e);this.data.splice(t.index,0,t.row),this.options.data.splice(i,0,t.row),this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0)}}},{key:"updateRow",value:function(t){var e,i=o(Array.isArray(t)?t:[t]);try{for(i.s();!(e=i.n()).done;){var n=e.value;if(n.hasOwnProperty("index")&&n.hasOwnProperty("row")){var r=this.data[n.index],a=this.options.data.indexOf(r);n.hasOwnProperty("replace")&&n.replace?(this.data[n.index]=n.row,this.options.data[a]=n.row):(Ww.extend(this.data[n.index],n.row),Ww.extend(this.options.data[a],n.row))}}}catch(t){i.e(t)}finally{i.f()}this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0)}},{key:"getRowByUniqueId",value:function(t){var e,i,n=this.options.uniqueId,o=t,r=null;for(e=this.options.data.length-1;e>=0;e--){i=this.options.data[e];var a=Ww.getItemField(i,n,this.options.escape,i.escape);if(void 0!==a&&("string"==typeof a?o=t.toString():"number"==typeof a&&(Number(a)===a&&a%1==0?o=parseInt(t,10):a===Number(a)&&0!==a&&(o=parseFloat(t))),a===o)){r=i;break}}return r}},{key:"updateByUniqueId",value:function(t){var e,i=null,n=o(Array.isArray(t)?t:[t]);try{for(n.s();!(e=n.n()).done;){var r=e.value;if(r.hasOwnProperty("id")&&r.hasOwnProperty("row")){var a=this.options.data.indexOf(this.getRowByUniqueId(r.id));-1!==a&&(r.hasOwnProperty("replace")&&r.replace?this.options.data[a]=r.row:Ww.extend(this.options.data[a],r.row),i=r.id)}}}catch(t){n.e(t)}finally{n.f()}this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0,i)}},{key:"removeByUniqueId",value:function(t){var e=this.options.data.length,i=this.getRowByUniqueId(t);i&&this.options.data.splice(this.options.data.indexOf(i),1),e!==this.options.data.length&&("server"===this.options.sidePagination&&(this.options.totalRows-=1,this.data=c(this.options.data)),this.initSearch(),this.initPagination(),this.initBody(!0))}},{key:"_updateCellOnly",value:function(e,i){var n=this.initRow(this.data[i],i),o=this.getVisibleFields().indexOf(e);-1!==o&&(o+=Ww.getDetailViewIndexOffset(this.options),this.$body.find(">tr[data-index=".concat(i,"]")).find(">td:eq(".concat(o,")")).replaceWith(t(n).find(">td:eq(".concat(o,")"))),this.initBodyEvent(),this.initFooter(),this.resetView(),this.updateSelected())}},{key:"updateCell",value:function(t){if(t.hasOwnProperty("index")&&t.hasOwnProperty("field")&&t.hasOwnProperty("value")){var e=this.data[t.index],i=this.options.data.indexOf(e);this.data[t.index][t.field]=t.value,this.options.data[i][t.field]=t.value,!1!==t.reinit?(this.initSort(),this.initBody(!0)):this._updateCellOnly(t.field,t.index)}}},{key:"updateCellByUniqueId",value:function(t){var e=this;(Array.isArray(t)?t:[t]).forEach((function(t){var i=t.id,n=t.field,o=t.value,r=e.options.data.indexOf(e.getRowByUniqueId(i));-1!==r&&(e.options.data[r][n]=o)})),!1!==t.reinit?(this.initSort(),this.initBody(!0)):this._updateCellOnly(t.field,this.options.data.indexOf(this.getRowByUniqueId(t.id)))}},{key:"showRow",value:function(t){this._toggleRow(t,!0)}},{key:"hideRow",value:function(t){this._toggleRow(t,!1)}},{key:"_toggleRow",value:function(t,e){var i;if(t.hasOwnProperty("index")?i=this.getData()[t.index]:t.hasOwnProperty("uniqueId")&&(i=this.getRowByUniqueId(t.uniqueId)),i){var n=Ww.findIndex(this.hiddenRows,i);e||-1!==n?e&&n>-1&&this.hiddenRows.splice(n,1):this.hiddenRows.push(i),this.initBody(!0),this.initPagination()}}},{key:"getHiddenRows",value:function(t){if(t)return this.initHiddenRows(),this.initBody(!0),void this.initPagination();var e,i=[],n=o(this.getData());try{for(n.s();!(e=n.n()).done;){var r=e.value;this.hiddenRows.includes(r)&&i.push(r)}}catch(t){n.e(t)}finally{n.f()}return this.hiddenRows=i,i}},{key:"showColumn",value:function(t){var e=this;(Array.isArray(t)?t:[t]).forEach((function(t){e._toggleColumn(e.fieldsColumnsIndex[t],!0,!0)}))}},{key:"hideColumn",value:function(t){var e=this;(Array.isArray(t)?t:[t]).forEach((function(t){e._toggleColumn(e.fieldsColumnsIndex[t],!1,!0)}))}},{key:"_toggleColumn",value:function(t,e,i){if(void 0!==t&&this.columns[t].visible!==e&&(this.columns[t].visible=e,this.initHeader(),this.initSearch(),this.initPagination(),this.initBody(),this.options.showColumns)){var n=this.$toolbar.find('.keep-open input:not(".toggle-all")').prop("disabled",!1);i&&n.filter(Ww.sprintf('[value="%s"]',t)).prop("checked",e),n.filter(":checked").length<=this.options.minimumCountColumns&&n.filter(":checked").prop("disabled",!0)}}},{key:"getVisibleColumns",value:function(){var t=this;return this.columns.filter((function(e){return e.visible&&!t.isSelectionColumn(e)}))}},{key:"getHiddenColumns",value:function(){return this.columns.filter((function(t){return!t.visible}))}},{key:"isSelectionColumn",value:function(t){return t.radio||t.checkbox}},{key:"showAllColumns",value:function(){this._toggleAllColumns(!0)}},{key:"hideAllColumns",value:function(){this._toggleAllColumns(!1)}},{key:"_toggleAllColumns",value:function(e){var i,n=this,r=o(this.columns.slice().reverse());try{for(r.s();!(i=r.n()).done;){var a=i.value;if(a.switchable){if(!e&&this.options.showColumns&&this.getVisibleColumns().filter((function(t){return t.switchable})).length===this.options.minimumCountColumns)continue;a.visible=e}}}catch(t){r.e(t)}finally{r.f()}if(this.initHeader(),this.initSearch(),this.initPagination(),this.initBody(),this.options.showColumns){var s=this.$toolbar.find('.keep-open input[type="checkbox"]:not(".toggle-all")').prop("disabled",!1);e?s.prop("checked",e):s.get().reverse().forEach((function(i){s.filter(":checked").length>n.options.minimumCountColumns&&t(i).prop("checked",e)})),s.filter(":checked").length<=this.options.minimumCountColumns&&s.filter(":checked").prop("disabled",!0)}}},{key:"mergeCells",value:function(t){var e,i,n=t.index,o=this.getVisibleFields().indexOf(t.field),r=+t.rowspan||1,a=+t.colspan||1,s=this.$body.find(">tr[data-index]");o+=Ww.getDetailViewIndexOffset(this.options);var l=s.eq(n).find(">td").eq(o);if(!(n<0||o<0||n>=this.data.length)){for(e=n;etd").eq(i).hide();l.attr("rowspan",r).attr("colspan",a).show()}}},{key:"checkAll",value:function(){this._toggleCheckAll(!0)}},{key:"uncheckAll",value:function(){this._toggleCheckAll(!1)}},{key:"_toggleCheckAll",value:function(t){var e=this.getSelections();this.$selectAll.add(this.$selectAll_).prop("checked",t),this.$selectItem.filter(":enabled").prop("checked",t),this.updateRows(),this.updateSelected();var i=this.getSelections();t?this.trigger("check-all",i,e):this.trigger("uncheck-all",i,e)}},{key:"checkInvert",value:function(){var e=this.$selectItem.filter(":enabled"),i=e.filter(":checked");e.each((function(e,i){t(i).prop("checked",!t(i).prop("checked"))})),this.updateRows(),this.updateSelected(),this.trigger("uncheck-some",i),i=this.getSelections(),this.trigger("check-some",i)}},{key:"check",value:function(t){this._toggleCheck(!0,t)}},{key:"uncheck",value:function(t){this._toggleCheck(!1,t)}},{key:"_toggleCheck",value:function(t,e){var i=this.$selectItem.filter('[data-index="'.concat(e,'"]')),n=this.data[e];if(i.is(":radio")||this.options.singleSelect||this.options.multipleSelectRow&&!this.multipleSelectRowCtrlKey&&!this.multipleSelectRowShiftKey){var r,a=o(this.options.data);try{for(a.s();!(r=a.n()).done;){r.value[this.header.stateField]=!1}}catch(t){a.e(t)}finally{a.f()}this.$selectItem.filter(":checked").not(i).prop("checked",!1)}if(n[this.header.stateField]=t,this.options.multipleSelectRow){if(this.multipleSelectRowShiftKey&&this.multipleSelectRowLastSelectedIndex>=0)for(var s=l(this.multipleSelectRowLastSelectedIndexi.clientWidth}if(!this.options.cardView&&this.options.showHeader&&this.options.height?(this.$tableHeader.show(),this.resetHeader(),e+=this.$header.outerHeight(!0)+1):(this.$tableHeader.hide(),this.trigger("post-header")),!this.options.cardView&&this.options.showFooter&&(this.$tableFooter.show(),this.fitFooter(),this.options.height&&(e+=this.$tableFooter.outerHeight(!0))),this.$container.hasClass("fullscreen"))this.$tableContainer.css("height",""),this.$tableContainer.css("width","");else if(this.options.height){this.$tableBorder&&(this.$tableBorder.css("width",""),this.$tableBorder.css("height",""));var n=this.$toolbar.outerHeight(!0),o=this.$pagination.outerHeight(!0),r=this.options.height-n-o,a=this.$tableBody.find(">table"),s=a.outerHeight();if(this.$tableContainer.css("height","".concat(r,"px")),this.$tableBorder&&a.is(":visible")){var l=r-s-2;this.hasScrollBar&&(l-=Ww.getScrollBarWidth()),this.$tableBorder.css("width","".concat(a.outerWidth(),"px")),this.$tableBorder.css("height","".concat(l,"px"))}}this.options.cardView?(this.$el.css("margin-top","0"),this.$tableContainer.css("padding-bottom","0"),this.$tableFooter.hide()):(this.getCaret(),this.$tableContainer.css("padding-bottom","".concat(e,"px"))),this.trigger("reset-view")}},{key:"showLoading",value:function(){this.$tableLoading.toggleClass("open",!0);var t=this.options.loadingFontSize;"auto"===this.options.loadingFontSize&&(t=.04*this.$tableLoading.width(),t=Math.max(12,t),t=Math.min(32,t),t="".concat(t,"px")),this.$tableLoading.find(".loading-text").css("font-size",t)}},{key:"hideLoading",value:function(){this.$tableLoading.toggleClass("open",!1)}},{key:"togglePagination",value:function(){this.options.pagination=!this.options.pagination;var t=this.options.showButtonIcons?this.options.pagination?this.options.icons.paginationSwitchDown:this.options.icons.paginationSwitchUp:"",e=this.options.showButtonText?this.options.pagination?this.options.formatPaginationSwitchUp():this.options.formatPaginationSwitchDown():"";this.$toolbar.find('button[name="paginationSwitch"]').html("".concat(Ww.sprintf(this.constants.html.icon,this.options.iconsPrefix,t)," ").concat(e)),this.updatePagination(),this.trigger("toggle-pagination",this.options.pagination)}},{key:"toggleFullscreen",value:function(){this.$el.closest(".bootstrap-table").toggleClass("fullscreen"),this.resetView()}},{key:"toggleView",value:function(){this.options.cardView=!this.options.cardView,this.initHeader();var t=this.options.showButtonIcons?this.options.cardView?this.options.icons.toggleOn:this.options.icons.toggleOff:"",e=this.options.cardView?this.options.formatToggleOff():this.options.formatToggleOn();this.$toolbar.find('button[name="toggle"]').html("".concat(Ww.sprintf(this.constants.html.icon,this.options.iconsPrefix,t)," ").concat(this.options.showButtonText?e:"")).attr("aria-label",e).attr(this.options.buttonsAttributeTitle,e),this.initBody(),this.trigger("toggle",this.options.cardView)}},{key:"resetSearch",value:function(t){var e=Ww.getSearchInput(this),i=t||"";e.val(i),this.searchText=i,this.onSearch({currentTarget:e},!1)}},{key:"filterBy",value:function(t,e){this.filterOptions=Ww.isEmptyObject(e)?this.options.filterOptions:Ww.extend(this.options.filterOptions,e),this.filterColumns=Ww.isEmptyObject(t)?{}:t,this.options.pageNumber=1,this.initSearch(),this.updatePagination()}},{key:"scrollTo",value:function(e){var i={unit:"px",value:0};"object"===u(e)?i=Object.assign(i,e):"string"==typeof e&&"bottom"===e?i.value=this.$tableBody[0].scrollHeight:"string"!=typeof e&&"number"!=typeof e||(i.value=e);var n=i.value;"rows"===i.unit&&(n=0,this.$body.find("> tr:lt(".concat(i.value,")")).each((function(e,i){n+=t(i).outerHeight(!0)}))),this.$tableBody.scrollTop(n)}},{key:"getScrollPosition",value:function(){return this.$tableBody.scrollTop()}},{key:"selectPage",value:function(t){t>0&&t<=this.options.totalPages&&(this.options.pageNumber=t,this.updatePagination())}},{key:"prevPage",value:function(){this.options.pageNumber>1&&(this.options.pageNumber--,this.updatePagination())}},{key:"nextPage",value:function(){this.options.pageNumber tr[data-index="%s"]',t)).next().is("tr.detail-view")?this.collapseRow(t):this.expandRow(t,e),this.resetView()}},{key:"expandRow",value:function(t,e){var i=this.data[t],n=this.$body.find(Ww.sprintf('> tr[data-index="%s"][data-has-detail-view]',t));if(this.options.detailViewIcon&&n.find("a.detail-icon").html(Ww.sprintf(this.constants.html.icon,this.options.iconsPrefix,this.options.icons.detailClose)),!n.next().is("tr.detail-view")){n.after(Ww.sprintf('',n.children("td").length));var o=n.next().find("td"),r=e||this.options.detailFormatter,a=Ww.calculateObjectValue(this.options,r,[t,i,o],"");1===o.length&&o.append(a),this.trigger("expand-row",t,i,o)}}},{key:"expandRowByUniqueId",value:function(t){var e=this.getRowByUniqueId(t);e&&this.expandRow(this.data.indexOf(e))}},{key:"collapseRow",value:function(t){var e=this.data[t],i=this.$body.find(Ww.sprintf('> tr[data-index="%s"][data-has-detail-view]',t));i.next().is("tr.detail-view")&&(this.options.detailViewIcon&&i.find("a.detail-icon").html(Ww.sprintf(this.constants.html.icon,this.options.iconsPrefix,this.options.icons.detailOpen)),this.trigger("collapse-row",t,e,i.next()),i.next().remove())}},{key:"collapseRowByUniqueId",value:function(t){var e=this.getRowByUniqueId(t);e&&this.collapseRow(this.data.indexOf(e))}},{key:"expandAllRows",value:function(){for(var e=this.$body.find("> tr[data-index][data-has-detail-view]"),i=0;i tr[data-index][data-has-detail-view]"),i=0;i1?i-1:0),o=1;o t.length) && (e = t.length); + for (var i = 0, n = Array(e); i < e; i++) n[i] = t[i]; + return n; + } + function i(t, e) { + if (!(t instanceof e)) + throw new TypeError("Cannot call a class as a function"); + } + function n(t, e, i) { + return ( + e && + (function (t, e) { + for (var i = 0; i < e.length; i++) { + var n = e[i]; + ((n.enumerable = n.enumerable || !1), + (n.configurable = !0), + "value" in n && (n.writable = !0), + Object.defineProperty(t, h(n.key), n)); + } + })(t.prototype, e), + Object.defineProperty(t, "prototype", { writable: !1 }), + t + ); + } + function o(t, e) { + var i = + ("undefined" != typeof Symbol && t[Symbol.iterator]) || t["@@iterator"]; + if (!i) { + if (Array.isArray(t) || (i = f(t)) || e) { + i && (t = i); + var n = 0, + o = function () {}; + return { + s: o, + n: function () { + return n >= t.length ? { done: !0 } : { done: !1, value: t[n++] }; + }, + e: function (t) { + throw t; + }, + f: o, + }; + } + throw new TypeError( + "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.", + ); + } + var r, + a = !0, + s = !1; + return { + s: function () { + i = i.call(t); + }, + n: function () { + var t = i.next(); + return ((a = t.done), t); + }, + e: function (t) { + ((s = !0), (r = t)); + }, + f: function () { + try { + a || null == i.return || i.return(); + } finally { + if (s) throw r; + } + }, + }; + } + function r(t, e, i) { + return ( + (e = h(e)) in t + ? Object.defineProperty(t, e, { + value: i, + enumerable: !0, + configurable: !0, + writable: !0, + }) + : (t[e] = i), + t + ); + } + function a(t, e) { + var i = Object.keys(t); + if (Object.getOwnPropertySymbols) { + var n = Object.getOwnPropertySymbols(t); + (e && + (n = n.filter(function (e) { + return Object.getOwnPropertyDescriptor(t, e).enumerable; + })), + i.push.apply(i, n)); + } + return i; + } + function s(t) { + for (var e = 1; e < arguments.length; e++) { + var i = null != arguments[e] ? arguments[e] : {}; + e % 2 + ? a(Object(i), !0).forEach(function (e) { + r(t, e, i[e]); + }) + : Object.getOwnPropertyDescriptors + ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(i)) + : a(Object(i)).forEach(function (e) { + Object.defineProperty( + t, + e, + Object.getOwnPropertyDescriptor(i, e), + ); + }); + } + return t; + } + function l(t, e) { + return ( + (function (t) { + if (Array.isArray(t)) return t; + })(t) || + (function (t, e) { + var i = + null == t + ? null + : ("undefined" != typeof Symbol && t[Symbol.iterator]) || + t["@@iterator"]; + if (null != i) { + var n, + o, + r, + a, + s = [], + l = !0, + c = !1; + try { + if (((r = (i = i.call(t)).next), 0 === e)); + else + for ( + ; + !(l = (n = r.call(i)).done) && + (s.push(n.value), s.length !== e); + l = !0 + ); + } catch (t) { + ((c = !0), (o = t)); + } finally { + try { + if (!l && null != i.return && ((a = i.return()), Object(a) !== a)) + return; + } finally { + if (c) throw o; + } + } + return s; + } + })(t, e) || + f(t, e) || + (function () { + throw new TypeError( + "Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.", + ); + })() + ); + } + function c(t) { + return ( + (function (t) { + if (Array.isArray(t)) return e(t); + })(t) || + (function (t) { + if ( + ("undefined" != typeof Symbol && null != t[Symbol.iterator]) || + null != t["@@iterator"] + ) + return Array.from(t); + })(t) || + f(t) || + (function () { + throw new TypeError( + "Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.", + ); + })() + ); + } + function h(t) { + var e = (function (t, e) { + if ("object" != typeof t || !t) return t; + var i = t[Symbol.toPrimitive]; + if (void 0 !== i) { + var n = i.call(t, e); + if ("object" != typeof n) return n; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return String(t); + })(t, "string"); + return "symbol" == typeof e ? e : e + ""; + } + function u(t) { + return ( + (u = + "function" == typeof Symbol && "symbol" == typeof Symbol.iterator + ? function (t) { + return typeof t; + } + : function (t) { + return t && + "function" == typeof Symbol && + t.constructor === Symbol && + t !== Symbol.prototype + ? "symbol" + : typeof t; + }), + u(t) + ); + } + function f(t, i) { + if (t) { + if ("string" == typeof t) return e(t, i); + var n = {}.toString.call(t).slice(8, -1); + return ( + "Object" === n && t.constructor && (n = t.constructor.name), + "Map" === n || "Set" === n + ? Array.from(t) + : "Arguments" === n || + /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) + ? e(t, i) + : void 0 + ); + } + } + var d = + "undefined" != typeof globalThis + ? globalThis + : "undefined" != typeof window + ? window + : "undefined" != typeof global + ? global + : "undefined" != typeof self + ? self + : {}, + p = function (t) { + return t && t.Math === Math && t; + }, + g = + p("object" == typeof globalThis && globalThis) || + p("object" == typeof window && window) || + p("object" == typeof self && self) || + p("object" == typeof d && d) || + p("object" == typeof d && d) || + (function () { + return this; + })() || + Function("return this")(), + v = {}, + b = function (t) { + try { + return !!t(); + } catch (t) { + return !0; + } + }, + m = !b(function () { + return ( + 7 !== + Object.defineProperty({}, 1, { + get: function () { + return 7; + }, + })[1] + ); + }), + y = !b(function () { + var t = function () {}.bind(); + return "function" != typeof t || t.hasOwnProperty("prototype"); + }), + w = y, + S = Function.prototype.call, + x = w + ? S.bind(S) + : function () { + return S.apply(S, arguments); + }, + k = {}, + O = {}.propertyIsEnumerable, + P = Object.getOwnPropertyDescriptor, + T = P && !O.call({ 1: 2 }, 1); + k.f = T + ? function (t) { + var e = P(this, t); + return !!e && e.enumerable; + } + : O; + var C, + A, + I = function (t, e) { + return { + enumerable: !(1 & t), + configurable: !(2 & t), + writable: !(4 & t), + value: e, + }; + }, + R = y, + $ = Function.prototype, + E = $.call, + j = R && $.bind.bind(E, E), + L = R + ? j + : function (t) { + return function () { + return E.apply(t, arguments); + }; + }, + N = L, + F = N({}.toString), + B = N("".slice), + D = function (t) { + return B(F(t), 8, -1); + }, + _ = b, + V = D, + H = Object, + U = L("".split), + M = _(function () { + return !H("z").propertyIsEnumerable(0); + }) + ? function (t) { + return "String" === V(t) ? U(t, "") : H(t); + } + : H, + q = function (t) { + return null == t; + }, + z = q, + W = TypeError, + G = function (t) { + if (z(t)) throw new W("Can't call method on " + t); + return t; + }, + K = M, + J = G, + Y = function (t) { + return K(J(t)); + }, + Q = "object" == typeof document && document.all, + X = + void 0 === Q && void 0 !== Q + ? function (t) { + return "function" == typeof t || t === Q; + } + : function (t) { + return "function" == typeof t; + }, + Z = X, + tt = function (t) { + return "object" == typeof t ? null !== t : Z(t); + }, + et = g, + it = X, + nt = function (t, e) { + return arguments.length < 2 + ? ((i = et[t]), it(i) ? i : void 0) + : et[t] && et[t][e]; + var i; + }, + ot = L({}.isPrototypeOf), + rt = g.navigator, + at = rt && rt.userAgent, + st = at ? String(at) : "", + lt = g, + ct = st, + ht = lt.process, + ut = lt.Deno, + ft = (ht && ht.versions) || (ut && ut.version), + dt = ft && ft.v8; + (dt && (A = (C = dt.split("."))[0] > 0 && C[0] < 4 ? 1 : +(C[0] + C[1])), + !A && + ct && + (!(C = ct.match(/Edge\/(\d+)/)) || C[1] >= 74) && + (C = ct.match(/Chrome\/(\d+)/)) && + (A = +C[1])); + var pt = A, + gt = pt, + vt = b, + bt = g.String, + mt = + !!Object.getOwnPropertySymbols && + !vt(function () { + var t = Symbol("symbol detection"); + return ( + !bt(t) || + !(Object(t) instanceof Symbol) || + (!Symbol.sham && gt && gt < 41) + ); + }), + yt = mt && !Symbol.sham && "symbol" == typeof Symbol.iterator, + wt = nt, + St = X, + xt = ot, + kt = Object, + Ot = yt + ? function (t) { + return "symbol" == typeof t; + } + : function (t) { + var e = wt("Symbol"); + return St(e) && xt(e.prototype, kt(t)); + }, + Pt = String, + Tt = function (t) { + try { + return Pt(t); + } catch (t) { + return "Object"; + } + }, + Ct = X, + At = Tt, + It = TypeError, + Rt = function (t) { + if (Ct(t)) return t; + throw new It(At(t) + " is not a function"); + }, + $t = Rt, + Et = q, + jt = function (t, e) { + var i = t[e]; + return Et(i) ? void 0 : $t(i); + }, + Lt = x, + Nt = X, + Ft = tt, + Bt = TypeError, + Dt = { exports: {} }, + _t = g, + Vt = Object.defineProperty, + Ht = function (t, e) { + try { + Vt(_t, t, { value: e, configurable: !0, writable: !0 }); + } catch (i) { + _t[t] = e; + } + return e; + }, + Ut = g, + Mt = Ht, + qt = "__core-js_shared__", + zt = (Dt.exports = Ut[qt] || Mt(qt, {})); + (zt.versions || (zt.versions = [])).push({ + version: "3.38.1", + mode: "global", + copyright: "© 2014-2024 Denis Pushkarev (zloirock.ru)", + license: "https://github.com/zloirock/core-js/blob/v3.38.1/LICENSE", + source: "https://github.com/zloirock/core-js", + }); + var Wt = Dt.exports, + Gt = Wt, + Kt = function (t, e) { + return Gt[t] || (Gt[t] = e || {}); + }, + Jt = G, + Yt = Object, + Qt = function (t) { + return Yt(Jt(t)); + }, + Xt = Qt, + Zt = L({}.hasOwnProperty), + te = + Object.hasOwn || + function (t, e) { + return Zt(Xt(t), e); + }, + ee = L, + ie = 0, + ne = Math.random(), + oe = ee((1).toString), + re = function (t) { + return "Symbol(" + (void 0 === t ? "" : t) + ")_" + oe(++ie + ne, 36); + }, + ae = Kt, + se = te, + le = re, + ce = mt, + he = yt, + ue = g.Symbol, + fe = ae("wks"), + de = he ? ue.for || ue : (ue && ue.withoutSetter) || le, + pe = function (t) { + return ( + se(fe, t) || (fe[t] = ce && se(ue, t) ? ue[t] : de("Symbol." + t)), + fe[t] + ); + }, + ge = x, + ve = tt, + be = Ot, + me = jt, + ye = function (t, e) { + var i, n; + if ("string" === e && Nt((i = t.toString)) && !Ft((n = Lt(i, t)))) + return n; + if (Nt((i = t.valueOf)) && !Ft((n = Lt(i, t)))) return n; + if ("string" !== e && Nt((i = t.toString)) && !Ft((n = Lt(i, t)))) + return n; + throw new Bt("Can't convert object to primitive value"); + }, + we = TypeError, + Se = pe("toPrimitive"), + xe = function (t, e) { + if (!ve(t) || be(t)) return t; + var i, + n = me(t, Se); + if (n) { + if ( + (void 0 === e && (e = "default"), (i = ge(n, t, e)), !ve(i) || be(i)) + ) + return i; + throw new we("Can't convert object to primitive value"); + } + return (void 0 === e && (e = "number"), ye(t, e)); + }, + ke = xe, + Oe = Ot, + Pe = function (t) { + var e = ke(t, "string"); + return Oe(e) ? e : e + ""; + }, + Te = tt, + Ce = g.document, + Ae = Te(Ce) && Te(Ce.createElement), + Ie = function (t) { + return Ae ? Ce.createElement(t) : {}; + }, + Re = Ie, + $e = + !m && + !b(function () { + return ( + 7 !== + Object.defineProperty(Re("div"), "a", { + get: function () { + return 7; + }, + }).a + ); + }), + Ee = m, + je = x, + Le = k, + Ne = I, + Fe = Y, + Be = Pe, + De = te, + _e = $e, + Ve = Object.getOwnPropertyDescriptor; + v.f = Ee + ? Ve + : function (t, e) { + if (((t = Fe(t)), (e = Be(e)), _e)) + try { + return Ve(t, e); + } catch (t) {} + if (De(t, e)) return Ne(!je(Le.f, t, e), t[e]); + }; + var He = {}, + Ue = + m && + b(function () { + return ( + 42 !== + Object.defineProperty(function () {}, "prototype", { + value: 42, + writable: !1, + }).prototype + ); + }), + Me = tt, + qe = String, + ze = TypeError, + We = function (t) { + if (Me(t)) return t; + throw new ze(qe(t) + " is not an object"); + }, + Ge = m, + Ke = $e, + Je = Ue, + Ye = We, + Qe = Pe, + Xe = TypeError, + Ze = Object.defineProperty, + ti = Object.getOwnPropertyDescriptor, + ei = "enumerable", + ii = "configurable", + ni = "writable"; + He.f = Ge + ? Je + ? function (t, e, i) { + if ( + (Ye(t), + (e = Qe(e)), + Ye(i), + "function" == typeof t && + "prototype" === e && + "value" in i && + ni in i && + !i[ni]) + ) { + var n = ti(t, e); + n && + n[ni] && + ((t[e] = i.value), + (i = { + configurable: ii in i ? i[ii] : n[ii], + enumerable: ei in i ? i[ei] : n[ei], + writable: !1, + })); + } + return Ze(t, e, i); + } + : Ze + : function (t, e, i) { + if ((Ye(t), (e = Qe(e)), Ye(i), Ke)) + try { + return Ze(t, e, i); + } catch (t) {} + if ("get" in i || "set" in i) throw new Xe("Accessors not supported"); + return ("value" in i && (t[e] = i.value), t); + }; + var oi = He, + ri = I, + ai = m + ? function (t, e, i) { + return oi.f(t, e, ri(1, i)); + } + : function (t, e, i) { + return ((t[e] = i), t); + }, + si = { exports: {} }, + li = m, + ci = te, + hi = Function.prototype, + ui = li && Object.getOwnPropertyDescriptor, + fi = ci(hi, "name"), + di = { + EXISTS: fi, + PROPER: fi && "something" === function () {}.name, + CONFIGURABLE: fi && (!li || (li && ui(hi, "name").configurable)), + }, + pi = X, + gi = Wt, + vi = L(Function.toString); + pi(gi.inspectSource) || + (gi.inspectSource = function (t) { + return vi(t); + }); + var bi, + mi, + yi, + wi = gi.inspectSource, + Si = X, + xi = g.WeakMap, + ki = Si(xi) && /native code/.test(String(xi)), + Oi = re, + Pi = Kt("keys"), + Ti = function (t) { + return Pi[t] || (Pi[t] = Oi(t)); + }, + Ci = {}, + Ai = ki, + Ii = g, + Ri = tt, + $i = ai, + Ei = te, + ji = Wt, + Li = Ti, + Ni = Ci, + Fi = "Object already initialized", + Bi = Ii.TypeError, + Di = Ii.WeakMap; + if (Ai || ji.state) { + var _i = ji.state || (ji.state = new Di()); + ((_i.get = _i.get), + (_i.has = _i.has), + (_i.set = _i.set), + (bi = function (t, e) { + if (_i.has(t)) throw new Bi(Fi); + return ((e.facade = t), _i.set(t, e), e); + }), + (mi = function (t) { + return _i.get(t) || {}; + }), + (yi = function (t) { + return _i.has(t); + })); + } else { + var Vi = Li("state"); + ((Ni[Vi] = !0), + (bi = function (t, e) { + if (Ei(t, Vi)) throw new Bi(Fi); + return ((e.facade = t), $i(t, Vi, e), e); + }), + (mi = function (t) { + return Ei(t, Vi) ? t[Vi] : {}; + }), + (yi = function (t) { + return Ei(t, Vi); + })); + } + var Hi = { + set: bi, + get: mi, + has: yi, + enforce: function (t) { + return yi(t) ? mi(t) : bi(t, {}); + }, + getterFor: function (t) { + return function (e) { + var i; + if (!Ri(e) || (i = mi(e)).type !== t) + throw new Bi("Incompatible receiver, " + t + " required"); + return i; + }; + }, + }, + Ui = L, + Mi = b, + qi = X, + zi = te, + Wi = m, + Gi = di.CONFIGURABLE, + Ki = wi, + Ji = Hi.enforce, + Yi = Hi.get, + Qi = String, + Xi = Object.defineProperty, + Zi = Ui("".slice), + tn = Ui("".replace), + en = Ui([].join), + nn = + Wi && + !Mi(function () { + return 8 !== Xi(function () {}, "length", { value: 8 }).length; + }), + on = String(String).split("String"), + rn = (si.exports = function (t, e, i) { + ("Symbol(" === Zi(Qi(e), 0, 7) && + (e = "[" + tn(Qi(e), /^Symbol\(([^)]*)\).*$/, "$1") + "]"), + i && i.getter && (e = "get " + e), + i && i.setter && (e = "set " + e), + (!zi(t, "name") || (Gi && t.name !== e)) && + (Wi ? Xi(t, "name", { value: e, configurable: !0 }) : (t.name = e)), + nn && + i && + zi(i, "arity") && + t.length !== i.arity && + Xi(t, "length", { value: i.arity })); + try { + i && zi(i, "constructor") && i.constructor + ? Wi && Xi(t, "prototype", { writable: !1 }) + : t.prototype && (t.prototype = void 0); + } catch (t) {} + var n = Ji(t); + return ( + zi(n, "source") || (n.source = en(on, "string" == typeof e ? e : "")), + t + ); + }); + Function.prototype.toString = rn(function () { + return (qi(this) && Yi(this).source) || Ki(this); + }, "toString"); + var an = si.exports, + sn = X, + ln = He, + cn = an, + hn = Ht, + un = function (t, e, i, n) { + n || (n = {}); + var o = n.enumerable, + r = void 0 !== n.name ? n.name : e; + if ((sn(i) && cn(i, r, n), n.global)) o ? (t[e] = i) : hn(e, i); + else { + try { + n.unsafe ? t[e] && (o = !0) : delete t[e]; + } catch (t) {} + o + ? (t[e] = i) + : ln.f(t, e, { + value: i, + enumerable: !1, + configurable: !n.nonConfigurable, + writable: !n.nonWritable, + }); + } + return t; + }, + fn = {}, + dn = Math.ceil, + pn = Math.floor, + gn = + Math.trunc || + function (t) { + var e = +t; + return (e > 0 ? pn : dn)(e); + }, + vn = function (t) { + var e = +t; + return e != e || 0 === e ? 0 : gn(e); + }, + bn = vn, + mn = Math.max, + yn = Math.min, + wn = function (t, e) { + var i = bn(t); + return i < 0 ? mn(i + e, 0) : yn(i, e); + }, + Sn = vn, + xn = Math.min, + kn = function (t) { + var e = Sn(t); + return e > 0 ? xn(e, 9007199254740991) : 0; + }, + On = kn, + Pn = function (t) { + return On(t.length); + }, + Tn = Y, + Cn = wn, + An = Pn, + In = function (t) { + return function (e, i, n) { + var o = Tn(e), + r = An(o); + if (0 === r) return !t && -1; + var a, + s = Cn(n, r); + if (t && i != i) { + for (; r > s; ) if ((a = o[s++]) != a) return !0; + } else + for (; r > s; s++) + if ((t || s in o) && o[s] === i) return t || s || 0; + return !t && -1; + }; + }, + Rn = { includes: In(!0), indexOf: In(!1) }, + $n = te, + En = Y, + jn = Rn.indexOf, + Ln = Ci, + Nn = L([].push), + Fn = function (t, e) { + var i, + n = En(t), + o = 0, + r = []; + for (i in n) !$n(Ln, i) && $n(n, i) && Nn(r, i); + for (; e.length > o; ) $n(n, (i = e[o++])) && (~jn(r, i) || Nn(r, i)); + return r; + }, + Bn = [ + "constructor", + "hasOwnProperty", + "isPrototypeOf", + "propertyIsEnumerable", + "toLocaleString", + "toString", + "valueOf", + ], + Dn = Fn, + _n = Bn.concat("length", "prototype"); + fn.f = + Object.getOwnPropertyNames || + function (t) { + return Dn(t, _n); + }; + var Vn = {}; + Vn.f = Object.getOwnPropertySymbols; + var Hn = nt, + Un = fn, + Mn = Vn, + qn = We, + zn = L([].concat), + Wn = + Hn("Reflect", "ownKeys") || + function (t) { + var e = Un.f(qn(t)), + i = Mn.f; + return i ? zn(e, i(t)) : e; + }, + Gn = te, + Kn = Wn, + Jn = v, + Yn = He, + Qn = b, + Xn = X, + Zn = /#|\.prototype\./, + to = function (t, e) { + var i = io[eo(t)]; + return i === oo || (i !== no && (Xn(e) ? Qn(e) : !!e)); + }, + eo = (to.normalize = function (t) { + return String(t).replace(Zn, ".").toLowerCase(); + }), + io = (to.data = {}), + no = (to.NATIVE = "N"), + oo = (to.POLYFILL = "P"), + ro = to, + ao = g, + so = v.f, + lo = ai, + co = un, + ho = Ht, + uo = function (t, e, i) { + for (var n = Kn(e), o = Yn.f, r = Jn.f, a = 0; a < n.length; a++) { + var s = n[a]; + Gn(t, s) || (i && Gn(i, s)) || o(t, s, r(e, s)); + } + }, + fo = ro, + po = function (t, e) { + var i, + n, + o, + r, + a, + s = t.target, + l = t.global, + c = t.stat; + if ((i = l ? ao : c ? ao[s] || ho(s, {}) : ao[s] && ao[s].prototype)) + for (n in e) { + if ( + ((r = e[n]), + (o = t.dontCallGetSet ? (a = so(i, n)) && a.value : i[n]), + !fo(l ? n : s + (c ? "." : "#") + n, t.forced) && void 0 !== o) + ) { + if (typeof r == typeof o) continue; + uo(r, o); + } + ((t.sham || (o && o.sham)) && lo(r, "sham", !0), co(i, n, r, t)); + } + }, + go = D, + vo = + Array.isArray || + function (t) { + return "Array" === go(t); + }, + bo = TypeError, + mo = function (t) { + if (t > 9007199254740991) throw bo("Maximum allowed index exceeded"); + return t; + }, + yo = m, + wo = He, + So = I, + xo = function (t, e, i) { + yo ? wo.f(t, e, So(0, i)) : (t[e] = i); + }, + ko = {}; + ko[pe("toStringTag")] = "z"; + var Oo = "[object z]" === String(ko), + Po = Oo, + To = X, + Co = D, + Ao = pe("toStringTag"), + Io = Object, + Ro = + "Arguments" === + Co( + (function () { + return arguments; + })(), + ), + $o = Po + ? Co + : function (t) { + var e, i, n; + return void 0 === t + ? "Undefined" + : null === t + ? "Null" + : "string" == + typeof (i = (function (t, e) { + try { + return t[e]; + } catch (t) {} + })((e = Io(t)), Ao)) + ? i + : Ro + ? Co(e) + : "Object" === (n = Co(e)) && To(e.callee) + ? "Arguments" + : n; + }, + Eo = L, + jo = b, + Lo = X, + No = $o, + Fo = wi, + Bo = function () {}, + Do = nt("Reflect", "construct"), + _o = /^\s*(?:class|function)\b/, + Vo = Eo(_o.exec), + Ho = !_o.test(Bo), + Uo = function (t) { + if (!Lo(t)) return !1; + try { + return (Do(Bo, [], t), !0); + } catch (t) { + return !1; + } + }, + Mo = function (t) { + if (!Lo(t)) return !1; + switch (No(t)) { + case "AsyncFunction": + case "GeneratorFunction": + case "AsyncGeneratorFunction": + return !1; + } + try { + return Ho || !!Vo(_o, Fo(t)); + } catch (t) { + return !0; + } + }; + Mo.sham = !0; + var qo = + !Do || + jo(function () { + var t; + return ( + Uo(Uo.call) || + !Uo(Object) || + !Uo(function () { + t = !0; + }) || + t + ); + }) + ? Mo + : Uo, + zo = vo, + Wo = qo, + Go = tt, + Ko = pe("species"), + Jo = Array, + Yo = function (t) { + var e; + return ( + zo(t) && + ((e = t.constructor), + ((Wo(e) && (e === Jo || zo(e.prototype))) || + (Go(e) && null === (e = e[Ko]))) && + (e = void 0)), + void 0 === e ? Jo : e + ); + }, + Qo = function (t, e) { + return new (Yo(t))(0 === e ? 0 : e); + }, + Xo = b, + Zo = pt, + tr = pe("species"), + er = function (t) { + return ( + Zo >= 51 || + !Xo(function () { + var e = []; + return ( + ((e.constructor = {})[tr] = function () { + return { foo: 1 }; + }), + 1 !== e[t](Boolean).foo + ); + }) + ); + }, + ir = po, + nr = b, + or = vo, + rr = tt, + ar = Qt, + sr = Pn, + lr = mo, + cr = xo, + hr = Qo, + ur = er, + fr = pt, + dr = pe("isConcatSpreadable"), + pr = + fr >= 51 || + !nr(function () { + var t = []; + return ((t[dr] = !1), t.concat()[0] !== t); + }), + gr = function (t) { + if (!rr(t)) return !1; + var e = t[dr]; + return void 0 !== e ? !!e : or(t); + }; + ir( + { target: "Array", proto: !0, arity: 1, forced: !pr || !ur("concat") }, + { + concat: function (t) { + var e, + i, + n, + o, + r, + a = ar(this), + s = hr(a, 0), + l = 0; + for (e = -1, n = arguments.length; e < n; e++) + if (gr((r = -1 === e ? a : arguments[e]))) + for (o = sr(r), lr(l + o), i = 0; i < o; i++, l++) + i in r && cr(s, l, r[i]); + else (lr(l + 1), cr(s, l++, r)); + return ((s.length = l), s); + }, + }, + ); + var vr = D, + br = L, + mr = function (t) { + if ("Function" === vr(t)) return br(t); + }, + yr = Rt, + wr = y, + Sr = mr(mr.bind), + xr = function (t, e) { + return ( + yr(t), + void 0 === e + ? t + : wr + ? Sr(t, e) + : function () { + return t.apply(e, arguments); + } + ); + }, + kr = xr, + Or = M, + Pr = Qt, + Tr = Pn, + Cr = Qo, + Ar = L([].push), + Ir = function (t) { + var e = 1 === t, + i = 2 === t, + n = 3 === t, + o = 4 === t, + r = 6 === t, + a = 7 === t, + s = 5 === t || r; + return function (l, c, h, u) { + for ( + var f, + d, + p = Pr(l), + g = Or(p), + v = Tr(g), + b = kr(c, h), + m = 0, + y = u || Cr, + w = e ? y(l, v) : i || a ? y(l, 0) : void 0; + v > m; + m++ + ) + if ((s || m in g) && ((d = b((f = g[m]), m, p)), t)) + if (e) w[m] = d; + else if (d) + switch (t) { + case 3: + return !0; + case 5: + return f; + case 6: + return m; + case 2: + Ar(w, f); + } + else + switch (t) { + case 4: + return !1; + case 7: + Ar(w, f); + } + return r ? -1 : n || o ? o : w; + }; + }, + Rr = { + forEach: Ir(0), + map: Ir(1), + filter: Ir(2), + some: Ir(3), + every: Ir(4), + find: Ir(5), + findIndex: Ir(6), + filterReject: Ir(7), + }, + $r = Rr.filter; + po( + { target: "Array", proto: !0, forced: !er("filter") }, + { + filter: function (t) { + return $r(this, t, arguments.length > 1 ? arguments[1] : void 0); + }, + }, + ); + var Er = {}, + jr = Fn, + Lr = Bn, + Nr = + Object.keys || + function (t) { + return jr(t, Lr); + }, + Fr = m, + Br = Ue, + Dr = He, + _r = We, + Vr = Y, + Hr = Nr; + Er.f = + Fr && !Br + ? Object.defineProperties + : function (t, e) { + _r(t); + for (var i, n = Vr(e), o = Hr(e), r = o.length, a = 0; r > a; ) + Dr.f(t, (i = o[a++]), n[i]); + return t; + }; + var Ur, + Mr = nt("document", "documentElement"), + qr = We, + zr = Er, + Wr = Bn, + Gr = Ci, + Kr = Mr, + Jr = Ie, + Yr = "prototype", + Qr = "script", + Xr = Ti("IE_PROTO"), + Zr = function () {}, + ta = function (t) { + return "<" + Qr + ">" + t + ""; + }, + ea = function (t) { + (t.write(ta("")), t.close()); + var e = t.parentWindow.Object; + return ((t = null), e); + }, + ia = function () { + try { + Ur = new ActiveXObject("htmlfile"); + } catch (t) {} + var t, e, i; + ia = + "undefined" != typeof document + ? document.domain && Ur + ? ea(Ur) + : ((e = Jr("iframe")), + (i = "java" + Qr + ":"), + (e.style.display = "none"), + Kr.appendChild(e), + (e.src = String(i)), + (t = e.contentWindow.document).open(), + t.write(ta("document.F=Object")), + t.close(), + t.F) + : ea(Ur); + for (var n = Wr.length; n--; ) delete ia[Yr][Wr[n]]; + return ia(); + }; + Gr[Xr] = !0; + var na = + Object.create || + function (t, e) { + var i; + return ( + null !== t + ? ((Zr[Yr] = qr(t)), (i = new Zr()), (Zr[Yr] = null), (i[Xr] = t)) + : (i = ia()), + void 0 === e ? i : zr.f(i, e) + ); + }, + oa = pe, + ra = na, + aa = He.f, + sa = oa("unscopables"), + la = Array.prototype; + void 0 === la[sa] && aa(la, sa, { configurable: !0, value: ra(null) }); + var ca = function (t) { + la[sa][t] = !0; + }, + ha = po, + ua = Rr.find, + fa = ca, + da = "find", + pa = !0; + (da in [] && + Array(1)[da](function () { + pa = !1; + }), + ha( + { target: "Array", proto: !0, forced: pa }, + { + find: function (t) { + return ua(this, t, arguments.length > 1 ? arguments[1] : void 0); + }, + }, + ), + fa(da)); + var ga = po, + va = Rr.findIndex, + ba = ca, + ma = "findIndex", + ya = !0; + (ma in [] && + Array(1)[ma](function () { + ya = !1; + }), + ga( + { target: "Array", proto: !0, forced: ya }, + { + findIndex: function (t) { + return va(this, t, arguments.length > 1 ? arguments[1] : void 0); + }, + }, + ), + ba(ma)); + var wa = Rn.includes, + Sa = ca; + (po( + { + target: "Array", + proto: !0, + forced: b(function () { + return !Array(1).includes(); + }), + }, + { + includes: function (t) { + return wa(this, t, arguments.length > 1 ? arguments[1] : void 0); + }, + }, + ), + Sa("includes")); + var xa = b, + ka = function (t, e) { + var i = [][t]; + return ( + !!i && + xa(function () { + i.call( + null, + e || + function () { + return 1; + }, + 1, + ); + }) + ); + }, + Oa = po, + Pa = Rn.indexOf, + Ta = ka, + Ca = mr([].indexOf), + Aa = !!Ca && 1 / Ca([1], 1, -0) < 0; + Oa( + { target: "Array", proto: !0, forced: Aa || !Ta("indexOf") }, + { + indexOf: function (t) { + var e = arguments.length > 1 ? arguments[1] : void 0; + return Aa ? Ca(this, t, e) || 0 : Pa(this, t, e); + }, + }, + ); + var Ia, + Ra, + $a, + Ea = {}, + ja = !b(function () { + function t() {} + return ( + (t.prototype.constructor = null), + Object.getPrototypeOf(new t()) !== t.prototype + ); + }), + La = te, + Na = X, + Fa = Qt, + Ba = ja, + Da = Ti("IE_PROTO"), + _a = Object, + Va = _a.prototype, + Ha = Ba + ? _a.getPrototypeOf + : function (t) { + var e = Fa(t); + if (La(e, Da)) return e[Da]; + var i = e.constructor; + return Na(i) && e instanceof i + ? i.prototype + : e instanceof _a + ? Va + : null; + }, + Ua = b, + Ma = X, + qa = tt, + za = Ha, + Wa = un, + Ga = pe("iterator"), + Ka = !1; + [].keys && + ("next" in ($a = [].keys()) + ? (Ra = za(za($a))) !== Object.prototype && (Ia = Ra) + : (Ka = !0)); + var Ja = + !qa(Ia) || + Ua(function () { + var t = {}; + return Ia[Ga].call(t) !== t; + }); + (Ja && (Ia = {}), + Ma(Ia[Ga]) || + Wa(Ia, Ga, function () { + return this; + })); + var Ya = { IteratorPrototype: Ia, BUGGY_SAFARI_ITERATORS: Ka }, + Qa = He.f, + Xa = te, + Za = pe("toStringTag"), + ts = function (t, e, i) { + (t && !i && (t = t.prototype), + t && !Xa(t, Za) && Qa(t, Za, { configurable: !0, value: e })); + }, + es = Ya.IteratorPrototype, + is = na, + ns = I, + os = ts, + rs = Ea, + as = function () { + return this; + }, + ss = function (t, e, i, n) { + var o = e + " Iterator"; + return ( + (t.prototype = is(es, { next: ns(+!n, i) })), + os(t, o, !1), + (rs[o] = as), + t + ); + }, + ls = L, + cs = Rt, + hs = tt, + us = function (t) { + return hs(t) || null === t; + }, + fs = String, + ds = TypeError, + ps = function (t, e, i) { + try { + return ls(cs(Object.getOwnPropertyDescriptor(t, e)[i])); + } catch (t) {} + }, + gs = tt, + vs = G, + bs = function (t) { + if (us(t)) return t; + throw new ds("Can't set " + fs(t) + " as a prototype"); + }, + ms = + Object.setPrototypeOf || + ("__proto__" in {} + ? (function () { + var t, + e = !1, + i = {}; + try { + ((t = ps(Object.prototype, "__proto__", "set"))(i, []), + (e = i instanceof Array)); + } catch (t) {} + return function (i, n) { + return ( + vs(i), + bs(n), + gs(i) ? (e ? t(i, n) : (i.__proto__ = n), i) : i + ); + }; + })() + : void 0), + ys = po, + ws = x, + Ss = X, + xs = ss, + ks = Ha, + Os = ms, + Ps = ts, + Ts = ai, + Cs = un, + As = Ea, + Is = di.PROPER, + Rs = di.CONFIGURABLE, + $s = Ya.IteratorPrototype, + Es = Ya.BUGGY_SAFARI_ITERATORS, + js = pe("iterator"), + Ls = "keys", + Ns = "values", + Fs = "entries", + Bs = function () { + return this; + }, + Ds = function (t, e, i, n, o, r, a) { + xs(i, e, n); + var s, + l, + c, + h = function (t) { + if (t === o && g) return g; + if (!Es && t && t in d) return d[t]; + switch (t) { + case Ls: + case Ns: + case Fs: + return function () { + return new i(this, t); + }; + } + return function () { + return new i(this); + }; + }, + u = e + " Iterator", + f = !1, + d = t.prototype, + p = d[js] || d["@@iterator"] || (o && d[o]), + g = (!Es && p) || h(o), + v = ("Array" === e && d.entries) || p; + if ( + (v && + (s = ks(v.call(new t()))) !== Object.prototype && + s.next && + (ks(s) !== $s && (Os ? Os(s, $s) : Ss(s[js]) || Cs(s, js, Bs)), + Ps(s, u, !0)), + Is && + o === Ns && + p && + p.name !== Ns && + (Rs + ? Ts(d, "name", Ns) + : ((f = !0), + (g = function () { + return ws(p, this); + }))), + o) + ) + if (((l = { values: h(Ns), keys: r ? g : h(Ls), entries: h(Fs) }), a)) + for (c in l) (Es || f || !(c in d)) && Cs(d, c, l[c]); + else ys({ target: e, proto: !0, forced: Es || f }, l); + return (d[js] !== g && Cs(d, js, g, { name: o }), (As[e] = g), l); + }, + _s = function (t, e) { + return { value: t, done: e }; + }, + Vs = Y, + Hs = ca, + Us = Ea, + Ms = Hi, + qs = He.f, + zs = Ds, + Ws = _s, + Gs = m, + Ks = "Array Iterator", + Js = Ms.set, + Ys = Ms.getterFor(Ks), + Qs = zs( + Array, + "Array", + function (t, e) { + Js(this, { type: Ks, target: Vs(t), index: 0, kind: e }); + }, + function () { + var t = Ys(this), + e = t.target, + i = t.index++; + if (!e || i >= e.length) return ((t.target = null), Ws(void 0, !0)); + switch (t.kind) { + case "keys": + return Ws(i, !1); + case "values": + return Ws(e[i], !1); + } + return Ws([i, e[i]], !1); + }, + "values", + ), + Xs = (Us.Arguments = Us.Array); + if ((Hs("keys"), Hs("values"), Hs("entries"), Gs && "values" !== Xs.name)) + try { + qs(Xs, "name", { value: "values" }); + } catch (t) {} + var Zs = po, + tl = M, + el = Y, + il = ka, + nl = L([].join); + Zs( + { target: "Array", proto: !0, forced: tl !== Object || !il("join", ",") }, + { + join: function (t) { + return nl(el(this), void 0 === t ? "," : t); + }, + }, + ); + var ol = Rr.map; + po( + { target: "Array", proto: !0, forced: !er("map") }, + { + map: function (t) { + return ol(this, t, arguments.length > 1 ? arguments[1] : void 0); + }, + }, + ); + var rl = po, + al = vo, + sl = L([].reverse), + ll = [1, 2]; + rl( + { target: "Array", proto: !0, forced: String(ll) === String(ll.reverse()) }, + { + reverse: function () { + return (al(this) && (this.length = this.length), sl(this)); + }, + }, + ); + var cl = L([].slice), + hl = po, + ul = vo, + fl = qo, + dl = tt, + pl = wn, + gl = Pn, + vl = Y, + bl = xo, + ml = pe, + yl = cl, + wl = er("slice"), + Sl = ml("species"), + xl = Array, + kl = Math.max; + hl( + { target: "Array", proto: !0, forced: !wl }, + { + slice: function (t, e) { + var i, + n, + o, + r = vl(this), + a = gl(r), + s = pl(t, a), + l = pl(void 0 === e ? a : e, a); + if ( + ul(r) && + ((i = r.constructor), + ((fl(i) && (i === xl || ul(i.prototype))) || + (dl(i) && null === (i = i[Sl]))) && + (i = void 0), + i === xl || void 0 === i) + ) + return yl(r, s, l); + for ( + n = new (void 0 === i ? xl : i)(kl(l - s, 0)), o = 0; + s < l; + s++, o++ + ) + s in r && bl(n, o, r[s]); + return ((n.length = o), n); + }, + }, + ); + var Ol = Tt, + Pl = TypeError, + Tl = function (t, e) { + if (!delete t[e]) + throw new Pl("Cannot delete property " + Ol(e) + " of " + Ol(t)); + }, + Cl = $o, + Al = String, + Il = function (t) { + if ("Symbol" === Cl(t)) + throw new TypeError("Cannot convert a Symbol value to a string"); + return Al(t); + }, + Rl = cl, + $l = Math.floor, + El = function (t, e) { + var i = t.length; + if (i < 8) + for (var n, o, r = 1; r < i; ) { + for (o = r, n = t[r]; o && e(t[o - 1], n) > 0; ) t[o] = t[--o]; + o !== r++ && (t[o] = n); + } + else + for ( + var a = $l(i / 2), + s = El(Rl(t, 0, a), e), + l = El(Rl(t, a), e), + c = s.length, + h = l.length, + u = 0, + f = 0; + u < c || f < h; + ) + t[u + f] = + u < c && f < h + ? e(s[u], l[f]) <= 0 + ? s[u++] + : l[f++] + : u < c + ? s[u++] + : l[f++]; + return t; + }, + jl = El, + Ll = st.match(/firefox\/(\d+)/i), + Nl = !!Ll && +Ll[1], + Fl = /MSIE|Trident/.test(st), + Bl = st.match(/AppleWebKit\/(\d+)\./), + Dl = !!Bl && +Bl[1], + _l = po, + Vl = L, + Hl = Rt, + Ul = Qt, + Ml = Pn, + ql = Tl, + zl = Il, + Wl = b, + Gl = jl, + Kl = ka, + Jl = Nl, + Yl = Fl, + Ql = pt, + Xl = Dl, + Zl = [], + tc = Vl(Zl.sort), + ec = Vl(Zl.push), + ic = Wl(function () { + Zl.sort(void 0); + }), + nc = Wl(function () { + Zl.sort(null); + }), + oc = Kl("sort"), + rc = !Wl(function () { + if (Ql) return Ql < 70; + if (!(Jl && Jl > 3)) { + if (Yl) return !0; + if (Xl) return Xl < 603; + var t, + e, + i, + n, + o = ""; + for (t = 65; t < 76; t++) { + switch (((e = String.fromCharCode(t)), t)) { + case 66: + case 69: + case 70: + case 72: + i = 3; + break; + case 68: + case 71: + i = 4; + break; + default: + i = 2; + } + for (n = 0; n < 47; n++) Zl.push({ k: e + n, v: i }); + } + for ( + Zl.sort(function (t, e) { + return e.v - t.v; + }), + n = 0; + n < Zl.length; + n++ + ) + ((e = Zl[n].k.charAt(0)), o.charAt(o.length - 1) !== e && (o += e)); + return "DGBEFHACIJK" !== o; + } + }); + _l( + { target: "Array", proto: !0, forced: ic || !nc || !oc || !rc }, + { + sort: function (t) { + void 0 !== t && Hl(t); + var e = Ul(this); + if (rc) return void 0 === t ? tc(e) : tc(e, t); + var i, + n, + o = [], + r = Ml(e); + for (n = 0; n < r; n++) n in e && ec(o, e[n]); + for ( + Gl( + o, + (function (t) { + return function (e, i) { + return void 0 === i + ? -1 + : void 0 === e + ? 1 + : void 0 !== t + ? +t(e, i) || 0 + : zl(e) > zl(i) + ? 1 + : -1; + }; + })(t), + ), + i = Ml(o), + n = 0; + n < i; + ) + e[n] = o[n++]; + for (; n < r; ) ql(e, n++); + return e; + }, + }, + ); + var ac = m, + sc = vo, + lc = TypeError, + cc = Object.getOwnPropertyDescriptor, + hc = + ac && + !(function () { + if (void 0 !== this) return !0; + try { + Object.defineProperty([], "length", { writable: !1 }).length = 1; + } catch (t) { + return t instanceof TypeError; + } + })(), + uc = po, + fc = Qt, + dc = wn, + pc = vn, + gc = Pn, + vc = hc + ? function (t, e) { + if (sc(t) && !cc(t, "length").writable) + throw new lc("Cannot set read only .length"); + return (t.length = e); + } + : function (t, e) { + return (t.length = e); + }, + bc = mo, + mc = Qo, + yc = xo, + wc = Tl, + Sc = er("splice"), + xc = Math.max, + kc = Math.min; + uc( + { target: "Array", proto: !0, forced: !Sc }, + { + splice: function (t, e) { + var i, + n, + o, + r, + a, + s, + l = fc(this), + c = gc(l), + h = dc(t, c), + u = arguments.length; + for ( + 0 === u + ? (i = n = 0) + : 1 === u + ? ((i = 0), (n = c - h)) + : ((i = u - 2), (n = kc(xc(pc(e), 0), c - h))), + bc(c + i - n), + o = mc(l, n), + r = 0; + r < n; + r++ + ) + (a = h + r) in l && yc(o, r, l[a]); + if (((o.length = n), i < n)) { + for (r = h; r < c - n; r++) + ((s = r + i), (a = r + n) in l ? (l[s] = l[a]) : wc(l, s)); + for (r = c; r > c - n + i; r--) wc(l, r - 1); + } else if (i > n) + for (r = c - n; r > h; r--) + ((s = r + i - 1), (a = r + n - 1) in l ? (l[s] = l[a]) : wc(l, s)); + for (r = 0; r < i; r++) l[r + h] = arguments[r + 2]; + return (vc(l, c - n + i), o); + }, + }, + ); + var Oc = Qt, + Pc = xe; + po( + { + target: "Date", + proto: !0, + arity: 1, + forced: b(function () { + return ( + null !== new Date(NaN).toJSON() || + 1 !== + Date.prototype.toJSON.call({ + toISOString: function () { + return 1; + }, + }) + ); + }), + }, + { + toJSON: function (t) { + var e = Oc(this), + i = Pc(e, "number"); + return "number" != typeof i || isFinite(i) ? e.toISOString() : null; + }, + }, + ); + var Tc = g, + Cc = X, + Ac = tt, + Ic = ms, + Rc = function (t, e, i) { + var n, o; + return ( + Ic && + Cc((n = e.constructor)) && + n !== i && + Ac((o = n.prototype)) && + o !== i.prototype && + Ic(t, o), + t + ); + }, + $c = L((1).valueOf), + Ec = "\t\n\v\f\r                 \u2028\u2029\ufeff", + jc = G, + Lc = Il, + Nc = Ec, + Fc = L("".replace), + Bc = RegExp("^[" + Nc + "]+"), + Dc = RegExp("(^|[^" + Nc + "])[" + Nc + "]+$"), + _c = function (t) { + return function (e) { + var i = Lc(jc(e)); + return ( + 1 & t && (i = Fc(i, Bc, "")), + 2 & t && (i = Fc(i, Dc, "$1")), + i + ); + }; + }, + Vc = { start: _c(1), end: _c(2), trim: _c(3) }, + Hc = po, + Uc = m, + Mc = g, + qc = Tc, + zc = L, + Wc = ro, + Gc = te, + Kc = Rc, + Jc = ot, + Yc = Ot, + Qc = xe, + Xc = b, + Zc = fn.f, + th = v.f, + eh = He.f, + ih = $c, + nh = Vc.trim, + oh = "Number", + rh = Mc[oh]; + qc[oh]; + var ah = rh.prototype, + sh = Mc.TypeError, + lh = zc("".slice), + ch = zc("".charCodeAt), + hh = function (t) { + var e, + i, + n, + o, + r, + a, + s, + l, + c = Qc(t, "number"); + if (Yc(c)) throw new sh("Cannot convert a Symbol value to a number"); + if ("string" == typeof c && c.length > 2) + if (((c = nh(c)), 43 === (e = ch(c, 0)) || 45 === e)) { + if (88 === (i = ch(c, 2)) || 120 === i) return NaN; + } else if (48 === e) { + switch (ch(c, 1)) { + case 66: + case 98: + ((n = 2), (o = 49)); + break; + case 79: + case 111: + ((n = 8), (o = 55)); + break; + default: + return +c; + } + for (a = (r = lh(c, 2)).length, s = 0; s < a; s++) + if ((l = ch(r, s)) < 48 || l > o) return NaN; + return parseInt(r, n); + } + return +c; + }, + uh = Wc(oh, !rh(" 0o1") || !rh("0b1") || rh("+0x1")), + fh = function (t) { + var e, + i = + arguments.length < 1 + ? 0 + : rh( + (function (t) { + var e = Qc(t, "number"); + return "bigint" == typeof e ? e : hh(e); + })(t), + ); + return Jc(ah, (e = this)) && + Xc(function () { + ih(e); + }) + ? Kc(Object(i), this, fh) + : i; + }; + ((fh.prototype = ah), + uh && (ah.constructor = fh), + Hc({ global: !0, constructor: !0, wrap: !0, forced: uh }, { Number: fh })); + uh && + (function (t, e) { + for ( + var i, + n = Uc + ? Zc(e) + : "MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split( + ",", + ), + o = 0; + n.length > o; + o++ + ) + Gc(e, (i = n[o])) && !Gc(t, i) && eh(t, i, th(e, i)); + })(qc[oh], rh); + var dh = m, + ph = L, + gh = x, + vh = b, + bh = Nr, + mh = Vn, + yh = k, + wh = Qt, + Sh = M, + xh = Object.assign, + kh = Object.defineProperty, + Oh = ph([].concat), + Ph = + !xh || + vh(function () { + if ( + dh && + 1 !== + xh( + { b: 1 }, + xh( + kh({}, "a", { + enumerable: !0, + get: function () { + kh(this, "b", { value: 3, enumerable: !1 }); + }, + }), + { b: 2 }, + ), + ).b + ) + return !0; + var t = {}, + e = {}, + i = Symbol("assign detection"), + n = "abcdefghijklmnopqrst"; + return ( + (t[i] = 7), + n.split("").forEach(function (t) { + e[t] = t; + }), + 7 !== xh({}, t)[i] || bh(xh({}, e)).join("") !== n + ); + }) + ? function (t, e) { + for ( + var i = wh(t), n = arguments.length, o = 1, r = mh.f, a = yh.f; + n > o; + ) + for ( + var s, + l = Sh(arguments[o++]), + c = r ? Oh(bh(l), r(l)) : bh(l), + h = c.length, + u = 0; + h > u; + ) + ((s = c[u++]), (dh && !gh(a, l, s)) || (i[s] = l[s])); + return i; + } + : xh, + Th = Ph; + po( + { target: "Object", stat: !0, arity: 2, forced: Object.assign !== Th }, + { assign: Th }, + ); + var Ch = m, + Ah = b, + Ih = L, + Rh = Ha, + $h = Nr, + Eh = Y, + jh = Ih(k.f), + Lh = Ih([].push), + Nh = + Ch && + Ah(function () { + var t = Object.create(null); + return ((t[2] = 2), !jh(t, 2)); + }), + Fh = function (t) { + return function (e) { + for ( + var i, + n = Eh(e), + o = $h(n), + r = Nh && null === Rh(n), + a = o.length, + s = 0, + l = []; + a > s; + ) + ((i = o[s++]), + (Ch && !(r ? i in n : jh(n, i))) || Lh(l, t ? [i, n[i]] : n[i])); + return l; + }; + }, + Bh = { entries: Fh(!0), values: Fh(!1) }.entries; + po( + { target: "Object", stat: !0 }, + { + entries: function (t) { + return Bh(t); + }, + }, + ); + var Dh = Qt, + _h = Nr; + po( + { + target: "Object", + stat: !0, + forced: b(function () { + _h(1); + }), + }, + { + keys: function (t) { + return _h(Dh(t)); + }, + }, + ); + var Vh = $o, + Hh = Oo + ? {}.toString + : function () { + return "[object " + Vh(this) + "]"; + }; + Oo || un(Object.prototype, "toString", Hh, { unsafe: !0 }); + var Uh = g, + Mh = b, + qh = Il, + zh = Vc.trim, + Wh = Ec, + Gh = L("".charAt), + Kh = Uh.parseFloat, + Jh = Uh.Symbol, + Yh = Jh && Jh.iterator, + Qh = + 1 / Kh(Wh + "-0") != -1 / 0 || + (Yh && + !Mh(function () { + Kh(Object(Yh)); + })) + ? function (t) { + var e = zh(qh(t)), + i = Kh(e); + return 0 === i && "-" === Gh(e, 0) ? -0 : i; + } + : Kh; + po({ global: !0, forced: parseFloat !== Qh }, { parseFloat: Qh }); + var Xh = g, + Zh = b, + tu = L, + eu = Il, + iu = Vc.trim, + nu = Ec, + ou = Xh.parseInt, + ru = Xh.Symbol, + au = ru && ru.iterator, + su = /^[+-]?0x/i, + lu = tu(su.exec), + cu = + 8 !== ou(nu + "08") || + 22 !== ou(nu + "0x16") || + (au && + !Zh(function () { + ou(Object(au)); + })) + ? function (t, e) { + var i = iu(eu(t)); + return ou(i, e >>> 0 || (lu(su, i) ? 16 : 10)); + } + : ou; + po({ global: !0, forced: parseInt !== cu }, { parseInt: cu }); + var hu = tt, + uu = D, + fu = pe("match"), + du = function (t) { + var e; + return hu(t) && (void 0 !== (e = t[fu]) ? !!e : "RegExp" === uu(t)); + }, + pu = We, + gu = function () { + var t = pu(this), + e = ""; + return ( + t.hasIndices && (e += "d"), + t.global && (e += "g"), + t.ignoreCase && (e += "i"), + t.multiline && (e += "m"), + t.dotAll && (e += "s"), + t.unicode && (e += "u"), + t.unicodeSets && (e += "v"), + t.sticky && (e += "y"), + e + ); + }, + vu = x, + bu = te, + mu = ot, + yu = gu, + wu = RegExp.prototype, + Su = function (t) { + var e = t.flags; + return void 0 !== e || "flags" in wu || bu(t, "flags") || !mu(wu, t) + ? e + : vu(yu, t); + }, + xu = b, + ku = g.RegExp, + Ou = xu(function () { + var t = ku("a", "y"); + return ((t.lastIndex = 2), null !== t.exec("abcd")); + }), + Pu = + Ou || + xu(function () { + return !ku("a", "y").sticky; + }), + Tu = { + BROKEN_CARET: + Ou || + xu(function () { + var t = ku("^r", "gy"); + return ((t.lastIndex = 2), null !== t.exec("str")); + }), + MISSED_STICKY: Pu, + UNSUPPORTED_Y: Ou, + }, + Cu = He.f, + Au = an, + Iu = He, + Ru = function (t, e, i) { + return ( + i.get && Au(i.get, e, { getter: !0 }), + i.set && Au(i.set, e, { setter: !0 }), + Iu.f(t, e, i) + ); + }, + $u = nt, + Eu = Ru, + ju = m, + Lu = pe("species"), + Nu = b, + Fu = g.RegExp, + Bu = Nu(function () { + var t = Fu(".", "s"); + return !(t.dotAll && t.test("\n") && "s" === t.flags); + }), + Du = b, + _u = g.RegExp, + Vu = Du(function () { + var t = _u("(?b)", "g"); + return "b" !== t.exec("b").groups.a || "bc" !== "b".replace(t, "$c"); + }), + Hu = m, + Uu = g, + Mu = L, + qu = ro, + zu = Rc, + Wu = ai, + Gu = na, + Ku = fn.f, + Ju = ot, + Yu = du, + Qu = Il, + Xu = Su, + Zu = Tu, + tf = function (t, e, i) { + i in t || + Cu(t, i, { + configurable: !0, + get: function () { + return e[i]; + }, + set: function (t) { + e[i] = t; + }, + }); + }, + ef = un, + nf = b, + of = te, + rf = Hi.enforce, + af = function (t) { + var e = $u(t); + ju && + e && + !e[Lu] && + Eu(e, Lu, { + configurable: !0, + get: function () { + return this; + }, + }); + }, + sf = Bu, + lf = Vu, + cf = pe("match"), + hf = Uu.RegExp, + uf = hf.prototype, + ff = Uu.SyntaxError, + df = Mu(uf.exec), + pf = Mu("".charAt), + gf = Mu("".replace), + vf = Mu("".indexOf), + bf = Mu("".slice), + mf = /^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/, + yf = /a/g, + wf = /a/g, + Sf = new hf(yf) !== yf, + xf = Zu.MISSED_STICKY, + kf = Zu.UNSUPPORTED_Y, + Of = + Hu && + (!Sf || + xf || + sf || + lf || + nf(function () { + return ( + (wf[cf] = !1), + hf(yf) !== yf || hf(wf) === wf || "/a/i" !== String(hf(yf, "i")) + ); + })); + if (qu("RegExp", Of)) { + for ( + var Pf = function (t, e) { + var i, + n, + o, + r, + a, + s, + l = Ju(uf, this), + c = Yu(t), + h = void 0 === e, + u = [], + f = t; + if (!l && c && h && t.constructor === Pf) return t; + if ( + ((c || Ju(uf, t)) && ((t = t.source), h && (e = Xu(f))), + (t = void 0 === t ? "" : Qu(t)), + (e = void 0 === e ? "" : Qu(e)), + (f = t), + sf && + ("dotAll" in yf) && + (n = !!e && vf(e, "s") > -1) && + (e = gf(e, /s/g, "")), + (i = e), + xf && + ("sticky" in yf) && + (o = !!e && vf(e, "y") > -1) && + kf && + (e = gf(e, /y/g, "")), + lf && + ((r = (function (t) { + for ( + var e, + i = t.length, + n = 0, + o = "", + r = [], + a = Gu(null), + s = !1, + l = !1, + c = 0, + h = ""; + n <= i; + n++ + ) { + if ("\\" === (e = pf(t, n))) e += pf(t, ++n); + else if ("]" === e) s = !1; + else if (!s) + switch (!0) { + case "[" === e: + s = !0; + break; + case "(" === e: + if (((o += e), "?:" === bf(t, n + 1, n + 3))) continue; + (df(mf, bf(t, n + 1)) && ((n += 2), (l = !0)), c++); + continue; + case ">" === e && l: + if ("" === h || of(a, h)) + throw new ff("Invalid capture group name"); + ((a[h] = !0), + (r[r.length] = [h, c]), + (l = !1), + (h = "")); + continue; + } + l ? (h += e) : (o += e); + } + return [o, r]; + })(t)), + (t = r[0]), + (u = r[1])), + (a = zu(hf(t, e), l ? this : uf, Pf)), + (n || o || u.length) && + ((s = rf(a)), + n && + ((s.dotAll = !0), + (s.raw = Pf( + (function (t) { + for ( + var e, i = t.length, n = 0, o = "", r = !1; + n <= i; + n++ + ) + "\\" !== (e = pf(t, n)) + ? r || "." !== e + ? ("[" === e ? (r = !0) : "]" === e && (r = !1), + (o += e)) + : (o += "[\\s\\S]") + : (o += e + pf(t, ++n)); + return o; + })(t), + i, + ))), + o && (s.sticky = !0), + u.length && (s.groups = u)), + t !== f) + ) + try { + Wu(a, "source", "" === f ? "(?:)" : f); + } catch (t) {} + return a; + }, + Tf = Ku(hf), + Cf = 0; + Tf.length > Cf; + ) + tf(Pf, hf, Tf[Cf++]); + ((uf.constructor = Pf), + (Pf.prototype = uf), + ef(Uu, "RegExp", Pf, { constructor: !0 })); + } + af("RegExp"); + var Af = x, + If = L, + Rf = Il, + $f = gu, + Ef = Tu, + jf = na, + Lf = Hi.get, + Nf = Bu, + Ff = Vu, + Bf = Kt("native-string-replace", String.prototype.replace), + Df = RegExp.prototype.exec, + _f = Df, + Vf = If("".charAt), + Hf = If("".indexOf), + Uf = If("".replace), + Mf = If("".slice), + qf = (function () { + var t = /a/, + e = /b*/g; + return ( + Af(Df, t, "a"), + Af(Df, e, "a"), + 0 !== t.lastIndex || 0 !== e.lastIndex + ); + })(), + zf = Ef.BROKEN_CARET, + Wf = void 0 !== /()??/.exec("")[1]; + (qf || Wf || zf || Nf || Ff) && + (_f = function (t) { + var e, + i, + n, + o, + r, + a, + s, + l = this, + c = Lf(l), + h = Rf(t), + u = c.raw; + if (u) + return ( + (u.lastIndex = l.lastIndex), + (e = Af(_f, u, h)), + (l.lastIndex = u.lastIndex), + e + ); + var f = c.groups, + d = zf && l.sticky, + p = Af($f, l), + g = l.source, + v = 0, + b = h; + if ( + (d && + ((p = Uf(p, "y", "")), + -1 === Hf(p, "g") && (p += "g"), + (b = Mf(h, l.lastIndex)), + l.lastIndex > 0 && + (!l.multiline || + (l.multiline && "\n" !== Vf(h, l.lastIndex - 1))) && + ((g = "(?: " + g + ")"), (b = " " + b), v++), + (i = new RegExp("^(?:" + g + ")", p))), + Wf && (i = new RegExp("^" + g + "$(?!\\s)", p)), + qf && (n = l.lastIndex), + (o = Af(Df, d ? i : l, b)), + d + ? o + ? ((o.input = Mf(o.input, v)), + (o[0] = Mf(o[0], v)), + (o.index = l.lastIndex), + (l.lastIndex += o[0].length)) + : (l.lastIndex = 0) + : qf && o && (l.lastIndex = l.global ? o.index + o[0].length : n), + Wf && + o && + o.length > 1 && + Af(Bf, o[0], i, function () { + for (r = 1; r < arguments.length - 2; r++) + void 0 === arguments[r] && (o[r] = void 0); + }), + o && f) + ) + for (o.groups = a = jf(null), r = 0; r < f.length; r++) + a[(s = f[r])[0]] = o[s[1]]; + return o; + }); + var Gf = _f; + po({ target: "RegExp", proto: !0, forced: /./.exec !== Gf }, { exec: Gf }); + var Kf = di.PROPER, + Jf = un, + Yf = We, + Qf = Il, + Xf = b, + Zf = Su, + td = "toString", + ed = RegExp.prototype, + id = ed[td], + nd = Xf(function () { + return "/a/b" !== id.call({ source: "a", flags: "b" }); + }), + od = Kf && id.name !== td; + (nd || od) && + Jf( + ed, + td, + function () { + var t = Yf(this); + return "/" + Qf(t.source) + "/" + Qf(Zf(t)); + }, + { unsafe: !0 }, + ); + var rd = du, + ad = TypeError, + sd = function (t) { + if (rd(t)) throw new ad("The method doesn't accept regular expressions"); + return t; + }, + ld = pe("match"), + cd = function (t) { + var e = /./; + try { + "/./"[t](e); + } catch (i) { + try { + return ((e[ld] = !1), "/./"[t](e)); + } catch (t) {} + } + return !1; + }, + hd = po, + ud = sd, + fd = G, + dd = Il, + pd = cd, + gd = L("".indexOf); + hd( + { target: "String", proto: !0, forced: !pd("includes") }, + { + includes: function (t) { + return !!~gd( + dd(fd(this)), + dd(ud(t)), + arguments.length > 1 ? arguments[1] : void 0, + ); + }, + }, + ); + var vd = L, + bd = vn, + md = Il, + yd = G, + wd = vd("".charAt), + Sd = vd("".charCodeAt), + xd = vd("".slice), + kd = function (t) { + return function (e, i) { + var n, + o, + r = md(yd(e)), + a = bd(i), + s = r.length; + return a < 0 || a >= s + ? t + ? "" + : void 0 + : (n = Sd(r, a)) < 55296 || + n > 56319 || + a + 1 === s || + (o = Sd(r, a + 1)) < 56320 || + o > 57343 + ? t + ? wd(r, a) + : n + : t + ? xd(r, a, a + 2) + : o - 56320 + ((n - 55296) << 10) + 65536; + }; + }, + Od = { codeAt: kd(!1), charAt: kd(!0) }, + Pd = Od.charAt, + Td = Il, + Cd = Hi, + Ad = Ds, + Id = _s, + Rd = "String Iterator", + $d = Cd.set, + Ed = Cd.getterFor(Rd); + Ad( + String, + "String", + function (t) { + $d(this, { type: Rd, string: Td(t), index: 0 }); + }, + function () { + var t, + e = Ed(this), + i = e.string, + n = e.index; + return n >= i.length + ? Id(void 0, !0) + : ((t = Pd(i, n)), (e.index += t.length), Id(t, !1)); + }, + ); + var jd = y, + Ld = Function.prototype, + Nd = Ld.apply, + Fd = Ld.call, + Bd = + ("object" == typeof Reflect && Reflect.apply) || + (jd + ? Fd.bind(Nd) + : function () { + return Fd.apply(Nd, arguments); + }), + Dd = x, + _d = un, + Vd = Gf, + Hd = b, + Ud = pe, + Md = ai, + qd = Ud("species"), + zd = RegExp.prototype, + Wd = function (t, e, i, n) { + var o = Ud(t), + r = !Hd(function () { + var e = {}; + return ( + (e[o] = function () { + return 7; + }), + 7 !== ""[t](e) + ); + }), + a = + r && + !Hd(function () { + var e = !1, + i = /a/; + return ( + "split" === t && + (((i = {}).constructor = {}), + (i.constructor[qd] = function () { + return i; + }), + (i.flags = ""), + (i[o] = /./[o])), + (i.exec = function () { + return ((e = !0), null); + }), + i[o](""), + !e + ); + }); + if (!r || !a || i) { + var s = /./[o], + l = e(o, ""[t], function (t, e, i, n, o) { + var a = e.exec; + return a === Vd || a === zd.exec + ? r && !o + ? { done: !0, value: Dd(s, e, i, n) } + : { done: !0, value: Dd(t, i, e, n) } + : { done: !1 }; + }); + (_d(String.prototype, t, l[0]), _d(zd, o, l[1])); + } + n && Md(zd[o], "sham", !0); + }, + Gd = Od.charAt, + Kd = function (t, e, i) { + return e + (i ? Gd(t, e).length : 1); + }, + Jd = L, + Yd = Qt, + Qd = Math.floor, + Xd = Jd("".charAt), + Zd = Jd("".replace), + tp = Jd("".slice), + ep = /\$([$&'`]|\d{1,2}|<[^>]*>)/g, + ip = /\$([$&'`]|\d{1,2})/g, + np = x, + op = We, + rp = X, + ap = D, + sp = Gf, + lp = TypeError, + cp = function (t, e) { + var i = t.exec; + if (rp(i)) { + var n = np(i, t, e); + return (null !== n && op(n), n); + } + if ("RegExp" === ap(t)) return np(sp, t, e); + throw new lp("RegExp#exec called on incompatible receiver"); + }, + hp = Bd, + up = x, + fp = L, + dp = Wd, + pp = b, + gp = We, + vp = X, + bp = q, + mp = vn, + yp = kn, + wp = Il, + Sp = G, + xp = Kd, + kp = jt, + Op = function (t, e, i, n, o, r) { + var a = i + t.length, + s = n.length, + l = ip; + return ( + void 0 !== o && ((o = Yd(o)), (l = ep)), + Zd(r, l, function (r, l) { + var c; + switch (Xd(l, 0)) { + case "$": + return "$"; + case "&": + return t; + case "`": + return tp(e, 0, i); + case "'": + return tp(e, a); + case "<": + c = o[tp(l, 1, -1)]; + break; + default: + var h = +l; + if (0 === h) return r; + if (h > s) { + var u = Qd(h / 10); + return 0 === u + ? r + : u <= s + ? void 0 === n[u - 1] + ? Xd(l, 1) + : n[u - 1] + Xd(l, 1) + : r; + } + c = n[h - 1]; + } + return void 0 === c ? "" : c; + }) + ); + }, + Pp = cp, + Tp = pe("replace"), + Cp = Math.max, + Ap = Math.min, + Ip = fp([].concat), + Rp = fp([].push), + $p = fp("".indexOf), + Ep = fp("".slice), + jp = "$0" === "a".replace(/./, "$0"), + Lp = !!/./[Tp] && "" === /./[Tp]("a", "$0"); + dp( + "replace", + function (t, e, i) { + var n = Lp ? "$" : "$0"; + return [ + function (t, i) { + var n = Sp(this), + o = bp(t) ? void 0 : kp(t, Tp); + return o ? up(o, t, n, i) : up(e, wp(n), t, i); + }, + function (t, o) { + var r = gp(this), + a = wp(t); + if ("string" == typeof o && -1 === $p(o, n) && -1 === $p(o, "$<")) { + var s = i(e, r, a, o); + if (s.done) return s.value; + } + var l = vp(o); + l || (o = wp(o)); + var c, + h = r.global; + h && ((c = r.unicode), (r.lastIndex = 0)); + for (var u, f = []; null !== (u = Pp(r, a)) && (Rp(f, u), h); ) { + "" === wp(u[0]) && (r.lastIndex = xp(a, yp(r.lastIndex), c)); + } + for (var d, p = "", g = 0, v = 0; v < f.length; v++) { + for ( + var b, + m = wp((u = f[v])[0]), + y = Cp(Ap(mp(u.index), a.length), 0), + w = [], + S = 1; + S < u.length; + S++ + ) + Rp(w, void 0 === (d = u[S]) ? d : String(d)); + var x = u.groups; + if (l) { + var k = Ip([m], w, y, a); + (void 0 !== x && Rp(k, x), (b = wp(hp(o, void 0, k)))); + } else b = Op(m, a, y, w, x, o); + y >= g && ((p += Ep(a, g, y) + b), (g = y + m.length)); + } + return p + Ep(a, g); + }, + ]; + }, + !!pp(function () { + var t = /./; + return ( + (t.exec = function () { + var t = []; + return ((t.groups = { a: "7" }), t); + }), + "7" !== "".replace(t, "$") + ); + }) || + !jp || + Lp, + ); + var Np = + Object.is || + function (t, e) { + return t === e ? 0 !== t || 1 / t == 1 / e : t != t && e != e; + }, + Fp = x, + Bp = We, + Dp = q, + _p = G, + Vp = Np, + Hp = Il, + Up = jt, + Mp = cp; + Wd("search", function (t, e, i) { + return [ + function (e) { + var i = _p(this), + n = Dp(e) ? void 0 : Up(e, t); + return n ? Fp(n, e, i) : new RegExp(e)[t](Hp(i)); + }, + function (t) { + var n = Bp(this), + o = Hp(t), + r = i(e, n, o); + if (r.done) return r.value; + var a = n.lastIndex; + Vp(a, 0) || (n.lastIndex = 0); + var s = Mp(n, o); + return ( + Vp(n.lastIndex, a) || (n.lastIndex = a), + null === s ? -1 : s.index + ); + }, + ]; + }); + var qp = qo, + zp = Tt, + Wp = TypeError, + Gp = We, + Kp = function (t) { + if (qp(t)) return t; + throw new Wp(zp(t) + " is not a constructor"); + }, + Jp = q, + Yp = pe("species"), + Qp = x, + Xp = L, + Zp = Wd, + tg = We, + eg = q, + ig = G, + ng = function (t, e) { + var i, + n = Gp(t).constructor; + return void 0 === n || Jp((i = Gp(n)[Yp])) ? e : Kp(i); + }, + og = Kd, + rg = kn, + ag = Il, + sg = jt, + lg = cp, + cg = b, + hg = Tu.UNSUPPORTED_Y, + ug = Math.min, + fg = Xp([].push), + dg = Xp("".slice), + pg = !cg(function () { + var t = /(?:)/, + e = t.exec; + t.exec = function () { + return e.apply(this, arguments); + }; + var i = "ab".split(t); + return 2 !== i.length || "a" !== i[0] || "b" !== i[1]; + }), + gg = + "c" === "abbc".split(/(b)*/)[1] || + 4 !== "test".split(/(?:)/, -1).length || + 2 !== "ab".split(/(?:ab)*/).length || + 4 !== ".".split(/(.?)(.?)/).length || + ".".split(/()()/).length > 1 || + "".split(/.?/).length; + Zp( + "split", + function (t, e, i) { + var n = "0".split(void 0, 0).length + ? function (t, i) { + return void 0 === t && 0 === i ? [] : Qp(e, this, t, i); + } + : e; + return [ + function (e, i) { + var o = ig(this), + r = eg(e) ? void 0 : sg(e, t); + return r ? Qp(r, e, o, i) : Qp(n, ag(o), e, i); + }, + function (t, o) { + var r = tg(this), + a = ag(t); + if (!gg) { + var s = i(n, r, a, o, n !== e); + if (s.done) return s.value; + } + var l = ng(r, RegExp), + c = r.unicode, + h = + (r.ignoreCase ? "i" : "") + + (r.multiline ? "m" : "") + + (r.unicode ? "u" : "") + + (hg ? "g" : "y"), + u = new l(hg ? "^(?:" + r.source + ")" : r, h), + f = void 0 === o ? 4294967295 : o >>> 0; + if (0 === f) return []; + if (0 === a.length) return null === lg(u, a) ? [a] : []; + for (var d = 0, p = 0, g = []; p < a.length; ) { + u.lastIndex = hg ? 0 : p; + var v, + b = lg(u, hg ? dg(a, p) : a); + if ( + null === b || + (v = ug(rg(u.lastIndex + (hg ? p : 0)), a.length)) === d + ) + p = og(a, p, c); + else { + if ((fg(g, dg(a, d, p)), g.length === f)) return g; + for (var m = 1; m <= b.length - 1; m++) + if ((fg(g, b[m]), g.length === f)) return g; + p = d = v; + } + } + return (fg(g, dg(a, d)), g); + }, + ]; + }, + gg || !pg, + hg, + ); + var vg = di.PROPER, + bg = b, + mg = Ec, + yg = Vc.trim; + po( + { + target: "String", + proto: !0, + forced: (function (t) { + return bg(function () { + return !!mg[t]() || "​…᠎" !== "​…᠎"[t]() || (vg && mg[t].name !== t); + }); + })("trim"), + }, + { + trim: function () { + return yg(this); + }, + }, + ); + var wg = { + CSSRuleList: 0, + CSSStyleDeclaration: 0, + CSSValueList: 0, + ClientRectList: 0, + DOMRectList: 0, + DOMStringList: 0, + DOMTokenList: 1, + DataTransferItemList: 0, + FileList: 0, + HTMLAllCollection: 0, + HTMLCollection: 0, + HTMLFormElement: 0, + HTMLSelectElement: 0, + MediaList: 0, + MimeTypeArray: 0, + NamedNodeMap: 0, + NodeList: 1, + PaintRequestList: 0, + Plugin: 0, + PluginArray: 0, + SVGLengthList: 0, + SVGNumberList: 0, + SVGPathSegList: 0, + SVGPointList: 0, + SVGStringList: 0, + SVGTransformList: 0, + SourceBufferList: 0, + StyleSheetList: 0, + TextTrackCueList: 0, + TextTrackList: 0, + TouchList: 0, + }, + Sg = Ie("span").classList, + xg = Sg && Sg.constructor && Sg.constructor.prototype, + kg = xg === Object.prototype ? void 0 : xg, + Og = Rr.forEach, + Pg = ka("forEach") + ? [].forEach + : function (t) { + return Og(this, t, arguments.length > 1 ? arguments[1] : void 0); + }, + Tg = g, + Cg = wg, + Ag = kg, + Ig = Pg, + Rg = ai, + $g = function (t) { + if (t && t.forEach !== Ig) + try { + Rg(t, "forEach", Ig); + } catch (e) { + t.forEach = Ig; + } + }; + for (var Eg in Cg) Cg[Eg] && $g(Tg[Eg] && Tg[Eg].prototype); + $g(Ag); + var jg = g, + Lg = wg, + Ng = kg, + Fg = Qs, + Bg = ai, + Dg = ts, + _g = pe("iterator"), + Vg = Fg.values, + Hg = function (t, e) { + if (t) { + if (t[_g] !== Vg) + try { + Bg(t, _g, Vg); + } catch (e) { + t[_g] = Vg; + } + if ((Dg(t, e, !0), Lg[e])) + for (var i in Fg) + if (t[i] !== Fg[i]) + try { + Bg(t, i, Fg[i]); + } catch (e) { + t[i] = Fg[i]; + } + } + }; + for (var Ug in Lg) Hg(jg[Ug] && jg[Ug].prototype, Ug); + Hg(Ng, "DOMTokenList"); + var Mg = b, + qg = m, + zg = pe("iterator"), + Wg = !Mg(function () { + var t = new URL("b?a=1&b=2&c=3", "https://a"), + e = t.searchParams, + i = new URLSearchParams("a=1&a=2&b=3"), + n = ""; + return ( + (t.pathname = "c%20d"), + e.forEach(function (t, i) { + (e.delete("b"), (n += i + t)); + }), + i.delete("a", 2), + i.delete("b", void 0), + (!e.size && !qg) || + !e.sort || + "https://a/c%20d?a=1&c=3" !== t.href || + "3" !== e.get("c") || + "a=1" !== String(new URLSearchParams("?a=1")) || + !e[zg] || + "a" !== new URL("https://a@b").username || + "b" !== new URLSearchParams(new URLSearchParams("a=b")).get("a") || + "xn--e1aybc" !== new URL("https://тест").host || + "#%D0%B1" !== new URL("https://a#б").hash || + "a1c3" !== n || + "x" !== new URL("https://x", void 0).host + ); + }), + Gg = ot, + Kg = TypeError, + Jg = function (t, e) { + if (Gg(e, t)) return t; + throw new Kg("Incorrect invocation"); + }, + Yg = x, + Qg = We, + Xg = jt, + Zg = We, + tv = function (t, e, i) { + var n, o; + Qg(t); + try { + if (!(n = Xg(t, "return"))) { + if ("throw" === e) throw i; + return i; + } + n = Yg(n, t); + } catch (t) { + ((o = !0), (n = t)); + } + if ("throw" === e) throw i; + if (o) throw n; + return (Qg(n), i); + }, + ev = Ea, + iv = pe("iterator"), + nv = Array.prototype, + ov = $o, + rv = jt, + av = q, + sv = Ea, + lv = pe("iterator"), + cv = function (t) { + if (!av(t)) return rv(t, lv) || rv(t, "@@iterator") || sv[ov(t)]; + }, + hv = x, + uv = Rt, + fv = We, + dv = Tt, + pv = cv, + gv = TypeError, + vv = function (t, e) { + var i = arguments.length < 2 ? pv(t) : e; + if (uv(i)) return fv(hv(i, t)); + throw new gv(dv(t) + " is not iterable"); + }, + bv = xr, + mv = x, + yv = Qt, + wv = function (t, e, i, n) { + try { + return n ? e(Zg(i)[0], i[1]) : e(i); + } catch (e) { + tv(t, "throw", e); + } + }, + Sv = function (t) { + return void 0 !== t && (ev.Array === t || nv[iv] === t); + }, + xv = qo, + kv = Pn, + Ov = xo, + Pv = vv, + Tv = cv, + Cv = Array, + Av = L, + Iv = 2147483647, + Rv = /[^\0-\u007E]/, + $v = /[.\u3002\uFF0E\uFF61]/g, + Ev = "Overflow: input needs wider integers to process", + jv = RangeError, + Lv = Av($v.exec), + Nv = Math.floor, + Fv = String.fromCharCode, + Bv = Av("".charCodeAt), + Dv = Av([].join), + _v = Av([].push), + Vv = Av("".replace), + Hv = Av("".split), + Uv = Av("".toLowerCase), + Mv = function (t) { + return t + 22 + 75 * (t < 26); + }, + qv = function (t, e, i) { + var n = 0; + for (t = i ? Nv(t / 700) : t >> 1, t += Nv(t / e); t > 455; ) + ((t = Nv(t / 35)), (n += 36)); + return Nv(n + (36 * t) / (t + 38)); + }, + zv = function (t) { + var e = []; + t = (function (t) { + for (var e = [], i = 0, n = t.length; i < n; ) { + var o = Bv(t, i++); + if (o >= 55296 && o <= 56319 && i < n) { + var r = Bv(t, i++); + 56320 == (64512 & r) + ? _v(e, ((1023 & o) << 10) + (1023 & r) + 65536) + : (_v(e, o), i--); + } else _v(e, o); + } + return e; + })(t); + var i, + n, + o = t.length, + r = 128, + a = 0, + s = 72; + for (i = 0; i < t.length; i++) (n = t[i]) < 128 && _v(e, Fv(n)); + var l = e.length, + c = l; + for (l && _v(e, "-"); c < o; ) { + var h = Iv; + for (i = 0; i < t.length; i++) (n = t[i]) >= r && n < h && (h = n); + var u = c + 1; + if (h - r > Nv((Iv - a) / u)) throw new jv(Ev); + for (a += (h - r) * u, r = h, i = 0; i < t.length; i++) { + if ((n = t[i]) < r && ++a > Iv) throw new jv(Ev); + if (n === r) { + for (var f = a, d = 36; ; ) { + var p = d <= s ? 1 : d >= s + 26 ? 26 : d - s; + if (f < p) break; + var g = f - p, + v = 36 - p; + (_v(e, Fv(Mv(p + (g % v)))), (f = Nv(g / v)), (d += 36)); + } + (_v(e, Fv(Mv(f))), (s = qv(a, u, c === l)), (a = 0), c++); + } + } + (a++, r++); + } + return Dv(e, ""); + }, + Wv = TypeError, + Gv = function (t, e) { + if (t < e) throw new Wv("Not enough arguments"); + return t; + }, + Kv = po, + Jv = L, + Yv = wn, + Qv = RangeError, + Xv = String.fromCharCode, + Zv = String.fromCodePoint, + tb = Jv([].join); + Kv( + { target: "String", stat: !0, arity: 1, forced: !!Zv && 1 !== Zv.length }, + { + fromCodePoint: function (t) { + for (var e, i = [], n = arguments.length, o = 0; n > o; ) { + if (((e = +arguments[o++]), Yv(e, 1114111) !== e)) + throw new Qv(e + " is not a valid code point"); + i[o] = + e < 65536 + ? Xv(e) + : Xv(55296 + ((e -= 65536) >> 10), (e % 1024) + 56320); + } + return tb(i, ""); + }, + }, + ); + var eb = g, + ib = m, + nb = Object.getOwnPropertyDescriptor, + ob = un, + rb = po, + ab = g, + sb = function (t) { + if (!ib) return eb[t]; + var e = nb(eb, t); + return e && e.value; + }, + lb = nt, + cb = x, + hb = L, + ub = m, + fb = Wg, + db = un, + pb = Ru, + gb = function (t, e, i) { + for (var n in e) ob(t, n, e[n], i); + return t; + }, + vb = ts, + bb = ss, + mb = Hi, + yb = Jg, + wb = X, + Sb = te, + xb = xr, + kb = $o, + Ob = We, + Pb = tt, + Tb = Il, + Cb = na, + Ab = I, + Ib = vv, + Rb = cv, + $b = _s, + Eb = Gv, + jb = jl, + Lb = pe("iterator"), + Nb = "URLSearchParams", + Fb = Nb + "Iterator", + Bb = mb.set, + Db = mb.getterFor(Nb), + _b = mb.getterFor(Fb), + Vb = sb("fetch"), + Hb = sb("Request"), + Ub = sb("Headers"), + Mb = Hb && Hb.prototype, + qb = Ub && Ub.prototype, + zb = ab.TypeError, + Wb = ab.encodeURIComponent, + Gb = String.fromCharCode, + Kb = lb("String", "fromCodePoint"), + Jb = parseInt, + Yb = hb("".charAt), + Qb = hb([].join), + Xb = hb([].push), + Zb = hb("".replace), + tm = hb([].shift), + em = hb([].splice), + im = hb("".split), + nm = hb("".slice), + om = hb(/./.exec), + rm = /\+/g, + am = /^[0-9a-f]+$/i, + sm = function (t, e) { + var i = nm(t, e, e + 2); + return om(am, i) ? Jb(i, 16) : NaN; + }, + lm = function (t) { + for (var e = 0, i = 128; i > 0 && t & i; i >>= 1) e++; + return e; + }, + cm = function (t) { + var e = null; + switch (t.length) { + case 1: + e = t[0]; + break; + case 2: + e = ((31 & t[0]) << 6) | (63 & t[1]); + break; + case 3: + e = ((15 & t[0]) << 12) | ((63 & t[1]) << 6) | (63 & t[2]); + break; + case 4: + e = + ((7 & t[0]) << 18) | + ((63 & t[1]) << 12) | + ((63 & t[2]) << 6) | + (63 & t[3]); + } + return e > 1114111 ? null : e; + }, + hm = function (t) { + for (var e = (t = Zb(t, rm, " ")).length, i = "", n = 0; n < e; ) { + var o = Yb(t, n); + if ("%" === o) { + if ("%" === Yb(t, n + 1) || n + 3 > e) { + ((i += "%"), n++); + continue; + } + var r = sm(t, n + 1); + if (r != r) { + ((i += o), n++); + continue; + } + n += 2; + var a = lm(r); + if (0 === a) o = Gb(r); + else { + if (1 === a || a > 4) { + ((i += "�"), n++); + continue; + } + for ( + var s = [r], l = 1; + l < a && !(++n + 3 > e || "%" !== Yb(t, n)); + ) { + var c = sm(t, n + 1); + if (c != c) { + n += 3; + break; + } + if (c > 191 || c < 128) break; + (Xb(s, c), (n += 2), l++); + } + if (s.length !== a) { + i += "�"; + continue; + } + var h = cm(s); + null === h ? (i += "�") : (o = Kb(h)); + } + } + ((i += o), n++); + } + return i; + }, + um = /[!'()~]|%20/g, + fm = { + "!": "%21", + "'": "%27", + "(": "%28", + ")": "%29", + "~": "%7E", + "%20": "+", + }, + dm = function (t) { + return fm[t]; + }, + pm = function (t) { + return Zb(Wb(t), um, dm); + }, + gm = bb( + function (t, e) { + Bb(this, { type: Fb, target: Db(t).entries, index: 0, kind: e }); + }, + Nb, + function () { + var t = _b(this), + e = t.target, + i = t.index++; + if (!e || i >= e.length) return ((t.target = null), $b(void 0, !0)); + var n = e[i]; + switch (t.kind) { + case "keys": + return $b(n.key, !1); + case "values": + return $b(n.value, !1); + } + return $b([n.key, n.value], !1); + }, + !0, + ), + vm = function (t) { + ((this.entries = []), + (this.url = null), + void 0 !== t && + (Pb(t) + ? this.parseObject(t) + : this.parseQuery( + "string" == typeof t + ? "?" === Yb(t, 0) + ? nm(t, 1) + : t + : Tb(t), + ))); + }; + vm.prototype = { + type: Nb, + bindURL: function (t) { + ((this.url = t), this.update()); + }, + parseObject: function (t) { + var e, + i, + n, + o, + r, + a, + s, + l = this.entries, + c = Rb(t); + if (c) + for (i = (e = Ib(t, c)).next; !(n = cb(i, e)).done; ) { + if ( + ((r = (o = Ib(Ob(n.value))).next), + (a = cb(r, o)).done || (s = cb(r, o)).done || !cb(r, o).done) + ) + throw new zb("Expected sequence with length 2"); + Xb(l, { key: Tb(a.value), value: Tb(s.value) }); + } + else for (var h in t) Sb(t, h) && Xb(l, { key: h, value: Tb(t[h]) }); + }, + parseQuery: function (t) { + if (t) + for (var e, i, n = this.entries, o = im(t, "&"), r = 0; r < o.length; ) + (e = o[r++]).length && + ((i = im(e, "=")), + Xb(n, { key: hm(tm(i)), value: hm(Qb(i, "=")) })); + }, + serialize: function () { + for (var t, e = this.entries, i = [], n = 0; n < e.length; ) + ((t = e[n++]), Xb(i, pm(t.key) + "=" + pm(t.value))); + return Qb(i, "&"); + }, + update: function () { + ((this.entries.length = 0), this.parseQuery(this.url.query)); + }, + updateURL: function () { + this.url && this.url.update(); + }, + }; + var bm = function () { + yb(this, mm); + var t = Bb(this, new vm(arguments.length > 0 ? arguments[0] : void 0)); + ub || (this.size = t.entries.length); + }, + mm = bm.prototype; + if ( + (gb( + mm, + { + append: function (t, e) { + var i = Db(this); + (Eb(arguments.length, 2), + Xb(i.entries, { key: Tb(t), value: Tb(e) }), + ub || this.length++, + i.updateURL()); + }, + delete: function (t) { + for ( + var e = Db(this), + i = Eb(arguments.length, 1), + n = e.entries, + o = Tb(t), + r = i < 2 ? void 0 : arguments[1], + a = void 0 === r ? r : Tb(r), + s = 0; + s < n.length; + ) { + var l = n[s]; + if (l.key !== o || (void 0 !== a && l.value !== a)) s++; + else if ((em(n, s, 1), void 0 !== a)) break; + } + (ub || (this.size = n.length), e.updateURL()); + }, + get: function (t) { + var e = Db(this).entries; + Eb(arguments.length, 1); + for (var i = Tb(t), n = 0; n < e.length; n++) + if (e[n].key === i) return e[n].value; + return null; + }, + getAll: function (t) { + var e = Db(this).entries; + Eb(arguments.length, 1); + for (var i = Tb(t), n = [], o = 0; o < e.length; o++) + e[o].key === i && Xb(n, e[o].value); + return n; + }, + has: function (t) { + for ( + var e = Db(this).entries, + i = Eb(arguments.length, 1), + n = Tb(t), + o = i < 2 ? void 0 : arguments[1], + r = void 0 === o ? o : Tb(o), + a = 0; + a < e.length; + ) { + var s = e[a++]; + if (s.key === n && (void 0 === r || s.value === r)) return !0; + } + return !1; + }, + set: function (t, e) { + var i = Db(this); + Eb(arguments.length, 1); + for ( + var n, o = i.entries, r = !1, a = Tb(t), s = Tb(e), l = 0; + l < o.length; + l++ + ) + (n = o[l]).key === a && + (r ? em(o, l--, 1) : ((r = !0), (n.value = s))); + (r || Xb(o, { key: a, value: s }), + ub || (this.size = o.length), + i.updateURL()); + }, + sort: function () { + var t = Db(this); + (jb(t.entries, function (t, e) { + return t.key > e.key ? 1 : -1; + }), + t.updateURL()); + }, + forEach: function (t) { + for ( + var e, + i = Db(this).entries, + n = xb(t, arguments.length > 1 ? arguments[1] : void 0), + o = 0; + o < i.length; + ) + n((e = i[o++]).value, e.key, this); + }, + keys: function () { + return new gm(this, "keys"); + }, + values: function () { + return new gm(this, "values"); + }, + entries: function () { + return new gm(this, "entries"); + }, + }, + { enumerable: !0 }, + ), + db(mm, Lb, mm.entries, { name: "entries" }), + db( + mm, + "toString", + function () { + return Db(this).serialize(); + }, + { enumerable: !0 }, + ), + ub && + pb(mm, "size", { + get: function () { + return Db(this).entries.length; + }, + configurable: !0, + enumerable: !0, + }), + vb(bm, Nb), + rb({ global: !0, constructor: !0, forced: !fb }, { URLSearchParams: bm }), + !fb && wb(Ub)) + ) { + var ym = hb(qb.has), + wm = hb(qb.set), + Sm = function (t) { + if (Pb(t)) { + var e, + i = t.body; + if (kb(i) === Nb) + return ( + (e = t.headers ? new Ub(t.headers) : new Ub()), + ym(e, "content-type") || + wm( + e, + "content-type", + "application/x-www-form-urlencoded;charset=UTF-8", + ), + Cb(t, { body: Ab(0, Tb(i)), headers: Ab(0, e) }) + ); + } + return t; + }; + if ( + (wb(Vb) && + rb( + { global: !0, enumerable: !0, dontCallGetSet: !0, forced: !0 }, + { + fetch: function (t) { + return Vb(t, arguments.length > 1 ? Sm(arguments[1]) : {}); + }, + }, + ), + wb(Hb)) + ) { + var xm = function (t) { + return ( + yb(this, Mb), + new Hb(t, arguments.length > 1 ? Sm(arguments[1]) : {}) + ); + }; + ((Mb.constructor = xm), + (xm.prototype = Mb), + rb( + { global: !0, constructor: !0, dontCallGetSet: !0, forced: !0 }, + { Request: xm }, + )); + } + } + var km, + Om = po, + Pm = m, + Tm = Wg, + Cm = g, + Am = xr, + Im = L, + Rm = un, + $m = Ru, + Em = Jg, + jm = te, + Lm = Ph, + Nm = function (t) { + var e = yv(t), + i = xv(this), + n = arguments.length, + o = n > 1 ? arguments[1] : void 0, + r = void 0 !== o; + r && (o = bv(o, n > 2 ? arguments[2] : void 0)); + var a, + s, + l, + c, + h, + u, + f = Tv(e), + d = 0; + if (!f || (this === Cv && Sv(f))) + for (a = kv(e), s = i ? new this(a) : Cv(a); a > d; d++) + ((u = r ? o(e[d], d) : e[d]), Ov(s, d, u)); + else + for ( + s = i ? new this() : [], h = (c = Pv(e, f)).next; + !(l = mv(h, c)).done; + d++ + ) + ((u = r ? wv(c, o, [l.value, d], !0) : l.value), Ov(s, d, u)); + return ((s.length = d), s); + }, + Fm = cl, + Bm = Od.codeAt, + Dm = function (t) { + var e, + i, + n = [], + o = Hv(Vv(Uv(t), $v, "."), "."); + for (e = 0; e < o.length; e++) + ((i = o[e]), _v(n, Lv(Rv, i) ? "xn--" + zv(i) : i)); + return Dv(n, "."); + }, + _m = Il, + Vm = ts, + Hm = Gv, + Um = { URLSearchParams: bm, getState: Db }, + Mm = Hi, + qm = Mm.set, + zm = Mm.getterFor("URL"), + Wm = Um.URLSearchParams, + Gm = Um.getState, + Km = Cm.URL, + Jm = Cm.TypeError, + Ym = Cm.parseInt, + Qm = Math.floor, + Xm = Math.pow, + Zm = Im("".charAt), + ty = Im(/./.exec), + ey = Im([].join), + iy = Im((1).toString), + ny = Im([].pop), + oy = Im([].push), + ry = Im("".replace), + ay = Im([].shift), + sy = Im("".split), + ly = Im("".slice), + cy = Im("".toLowerCase), + hy = Im([].unshift), + uy = "Invalid scheme", + fy = "Invalid host", + dy = "Invalid port", + py = /[a-z]/i, + gy = /[\d+-.a-z]/i, + vy = /\d/, + by = /^0x/i, + my = /^[0-7]+$/, + yy = /^\d+$/, + wy = /^[\da-f]+$/i, + Sy = /[\0\t\n\r #%/:<>?@[\\\]^|]/, + xy = /[\0\t\n\r #/:<>?@[\\\]^|]/, + ky = /^[\u0000-\u0020]+/, + Oy = /(^|[^\u0000-\u0020])[\u0000-\u0020]+$/, + Py = /[\t\n\r]/g, + Ty = function (t) { + var e, i, n, o; + if ("number" == typeof t) { + for (e = [], i = 0; i < 4; i++) (hy(e, t % 256), (t = Qm(t / 256))); + return ey(e, "."); + } + if ("object" == typeof t) { + for ( + e = "", + n = (function (t) { + for (var e = null, i = 1, n = null, o = 0, r = 0; r < 8; r++) + 0 !== t[r] + ? (o > i && ((e = n), (i = o)), (n = null), (o = 0)) + : (null === n && (n = r), ++o); + return o > i ? n : e; + })(t), + i = 0; + i < 8; + i++ + ) + (o && 0 === t[i]) || + (o && (o = !1), + n === i + ? ((e += i ? ":" : "::"), (o = !0)) + : ((e += iy(t[i], 16)), i < 7 && (e += ":"))); + return "[" + e + "]"; + } + return t; + }, + Cy = {}, + Ay = Lm({}, Cy, { " ": 1, '"': 1, "<": 1, ">": 1, "`": 1 }), + Iy = Lm({}, Ay, { "#": 1, "?": 1, "{": 1, "}": 1 }), + Ry = Lm({}, Iy, { + "/": 1, + ":": 1, + ";": 1, + "=": 1, + "@": 1, + "[": 1, + "\\": 1, + "]": 1, + "^": 1, + "|": 1, + }), + $y = function (t, e) { + var i = Bm(t, 0); + return i > 32 && i < 127 && !jm(e, t) ? t : encodeURIComponent(t); + }, + Ey = { ftp: 21, file: null, http: 80, https: 443, ws: 80, wss: 443 }, + jy = function (t, e) { + var i; + return ( + 2 === t.length && + ty(py, Zm(t, 0)) && + (":" === (i = Zm(t, 1)) || (!e && "|" === i)) + ); + }, + Ly = function (t) { + var e; + return ( + t.length > 1 && + jy(ly(t, 0, 2)) && + (2 === t.length || + "/" === (e = Zm(t, 2)) || + "\\" === e || + "?" === e || + "#" === e) + ); + }, + Ny = function (t) { + return "." === t || "%2e" === cy(t); + }, + Fy = {}, + By = {}, + Dy = {}, + _y = {}, + Vy = {}, + Hy = {}, + Uy = {}, + My = {}, + qy = {}, + zy = {}, + Wy = {}, + Gy = {}, + Ky = {}, + Jy = {}, + Yy = {}, + Qy = {}, + Xy = {}, + Zy = {}, + tw = {}, + ew = {}, + iw = {}, + nw = function (t, e, i) { + var n, + o, + r, + a = _m(t); + if (e) { + if ((o = this.parse(a))) throw new Jm(o); + this.searchParams = null; + } else { + if ((void 0 !== i && (n = new nw(i, !0)), (o = this.parse(a, null, n)))) + throw new Jm(o); + ((r = Gm(new Wm())).bindURL(this), (this.searchParams = r)); + } + }; + nw.prototype = { + type: "URL", + parse: function (t, e, i) { + var n, + o, + r, + a, + s, + l = this, + c = e || Fy, + h = 0, + u = "", + f = !1, + d = !1, + p = !1; + for ( + t = _m(t), + e || + ((l.scheme = ""), + (l.username = ""), + (l.password = ""), + (l.host = null), + (l.port = null), + (l.path = []), + (l.query = null), + (l.fragment = null), + (l.cannotBeABaseURL = !1), + (t = ry(t, ky, "")), + (t = ry(t, Oy, "$1"))), + t = ry(t, Py, ""), + n = Nm(t); + h <= n.length; + ) { + switch (((o = n[h]), c)) { + case Fy: + if (!o || !ty(py, o)) { + if (e) return uy; + c = Dy; + continue; + } + ((u += cy(o)), (c = By)); + break; + case By: + if (o && (ty(gy, o) || "+" === o || "-" === o || "." === o)) + u += cy(o); + else { + if (":" !== o) { + if (e) return uy; + ((u = ""), (c = Dy), (h = 0)); + continue; + } + if ( + e && + (l.isSpecial() !== jm(Ey, u) || + ("file" === u && + (l.includesCredentials() || null !== l.port)) || + ("file" === l.scheme && !l.host)) + ) + return; + if (((l.scheme = u), e)) + return void ( + l.isSpecial() && + Ey[l.scheme] === l.port && + (l.port = null) + ); + ((u = ""), + "file" === l.scheme + ? (c = Jy) + : l.isSpecial() && i && i.scheme === l.scheme + ? (c = _y) + : l.isSpecial() + ? (c = My) + : "/" === n[h + 1] + ? ((c = Vy), h++) + : ((l.cannotBeABaseURL = !0), + oy(l.path, ""), + (c = tw))); + } + break; + case Dy: + if (!i || (i.cannotBeABaseURL && "#" !== o)) return uy; + if (i.cannotBeABaseURL && "#" === o) { + ((l.scheme = i.scheme), + (l.path = Fm(i.path)), + (l.query = i.query), + (l.fragment = ""), + (l.cannotBeABaseURL = !0), + (c = iw)); + break; + } + c = "file" === i.scheme ? Jy : Hy; + continue; + case _y: + if ("/" !== o || "/" !== n[h + 1]) { + c = Hy; + continue; + } + ((c = qy), h++); + break; + case Vy: + if ("/" === o) { + c = zy; + break; + } + c = Zy; + continue; + case Hy: + if (((l.scheme = i.scheme), o === km)) + ((l.username = i.username), + (l.password = i.password), + (l.host = i.host), + (l.port = i.port), + (l.path = Fm(i.path)), + (l.query = i.query)); + else if ("/" === o || ("\\" === o && l.isSpecial())) c = Uy; + else if ("?" === o) + ((l.username = i.username), + (l.password = i.password), + (l.host = i.host), + (l.port = i.port), + (l.path = Fm(i.path)), + (l.query = ""), + (c = ew)); + else { + if ("#" !== o) { + ((l.username = i.username), + (l.password = i.password), + (l.host = i.host), + (l.port = i.port), + (l.path = Fm(i.path)), + l.path.length--, + (c = Zy)); + continue; + } + ((l.username = i.username), + (l.password = i.password), + (l.host = i.host), + (l.port = i.port), + (l.path = Fm(i.path)), + (l.query = i.query), + (l.fragment = ""), + (c = iw)); + } + break; + case Uy: + if (!l.isSpecial() || ("/" !== o && "\\" !== o)) { + if ("/" !== o) { + ((l.username = i.username), + (l.password = i.password), + (l.host = i.host), + (l.port = i.port), + (c = Zy)); + continue; + } + c = zy; + } else c = qy; + break; + case My: + if (((c = qy), "/" !== o || "/" !== Zm(u, h + 1))) continue; + h++; + break; + case qy: + if ("/" !== o && "\\" !== o) { + c = zy; + continue; + } + break; + case zy: + if ("@" === o) { + (f && (u = "%40" + u), (f = !0), (r = Nm(u))); + for (var g = 0; g < r.length; g++) { + var v = r[g]; + if (":" !== v || p) { + var b = $y(v, Ry); + p ? (l.password += b) : (l.username += b); + } else p = !0; + } + u = ""; + } else if ( + o === km || + "/" === o || + "?" === o || + "#" === o || + ("\\" === o && l.isSpecial()) + ) { + if (f && "" === u) return "Invalid authority"; + ((h -= Nm(u).length + 1), (u = ""), (c = Wy)); + } else u += o; + break; + case Wy: + case Gy: + if (e && "file" === l.scheme) { + c = Qy; + continue; + } + if (":" !== o || d) { + if ( + o === km || + "/" === o || + "?" === o || + "#" === o || + ("\\" === o && l.isSpecial()) + ) { + if (l.isSpecial() && "" === u) return fy; + if ( + e && + "" === u && + (l.includesCredentials() || null !== l.port) + ) + return; + if ((a = l.parseHost(u))) return a; + if (((u = ""), (c = Xy), e)) return; + continue; + } + ("[" === o ? (d = !0) : "]" === o && (d = !1), (u += o)); + } else { + if ("" === u) return fy; + if ((a = l.parseHost(u))) return a; + if (((u = ""), (c = Ky), e === Gy)) return; + } + break; + case Ky: + if (!ty(vy, o)) { + if ( + o === km || + "/" === o || + "?" === o || + "#" === o || + ("\\" === o && l.isSpecial()) || + e + ) { + if ("" !== u) { + var m = Ym(u, 10); + if (m > 65535) return dy; + ((l.port = l.isSpecial() && m === Ey[l.scheme] ? null : m), + (u = "")); + } + if (e) return; + c = Xy; + continue; + } + return dy; + } + u += o; + break; + case Jy: + if (((l.scheme = "file"), "/" === o || "\\" === o)) c = Yy; + else { + if (!i || "file" !== i.scheme) { + c = Zy; + continue; + } + switch (o) { + case km: + ((l.host = i.host), + (l.path = Fm(i.path)), + (l.query = i.query)); + break; + case "?": + ((l.host = i.host), + (l.path = Fm(i.path)), + (l.query = ""), + (c = ew)); + break; + case "#": + ((l.host = i.host), + (l.path = Fm(i.path)), + (l.query = i.query), + (l.fragment = ""), + (c = iw)); + break; + default: + (Ly(ey(Fm(n, h), "")) || + ((l.host = i.host), (l.path = Fm(i.path)), l.shortenPath()), + (c = Zy)); + continue; + } + } + break; + case Yy: + if ("/" === o || "\\" === o) { + c = Qy; + break; + } + (i && + "file" === i.scheme && + !Ly(ey(Fm(n, h), "")) && + (jy(i.path[0], !0) ? oy(l.path, i.path[0]) : (l.host = i.host)), + (c = Zy)); + continue; + case Qy: + if (o === km || "/" === o || "\\" === o || "?" === o || "#" === o) { + if (!e && jy(u)) c = Zy; + else if ("" === u) { + if (((l.host = ""), e)) return; + c = Xy; + } else { + if ((a = l.parseHost(u))) return a; + if (("localhost" === l.host && (l.host = ""), e)) return; + ((u = ""), (c = Xy)); + } + continue; + } + u += o; + break; + case Xy: + if (l.isSpecial()) { + if (((c = Zy), "/" !== o && "\\" !== o)) continue; + } else if (e || "?" !== o) + if (e || "#" !== o) { + if (o !== km && ((c = Zy), "/" !== o)) continue; + } else ((l.fragment = ""), (c = iw)); + else ((l.query = ""), (c = ew)); + break; + case Zy: + if ( + o === km || + "/" === o || + ("\\" === o && l.isSpecial()) || + (!e && ("?" === o || "#" === o)) + ) { + if ( + (".." === (s = cy((s = u))) || + "%2e." === s || + ".%2e" === s || + "%2e%2e" === s + ? (l.shortenPath(), + "/" === o || + ("\\" === o && l.isSpecial()) || + oy(l.path, "")) + : Ny(u) + ? "/" === o || + ("\\" === o && l.isSpecial()) || + oy(l.path, "") + : ("file" === l.scheme && + !l.path.length && + jy(u) && + (l.host && (l.host = ""), (u = Zm(u, 0) + ":")), + oy(l.path, u)), + (u = ""), + "file" === l.scheme && (o === km || "?" === o || "#" === o)) + ) + for (; l.path.length > 1 && "" === l.path[0]; ) ay(l.path); + "?" === o + ? ((l.query = ""), (c = ew)) + : "#" === o && ((l.fragment = ""), (c = iw)); + } else u += $y(o, Iy); + break; + case tw: + "?" === o + ? ((l.query = ""), (c = ew)) + : "#" === o + ? ((l.fragment = ""), (c = iw)) + : o !== km && (l.path[0] += $y(o, Cy)); + break; + case ew: + e || "#" !== o + ? o !== km && + ("'" === o && l.isSpecial() + ? (l.query += "%27") + : (l.query += "#" === o ? "%23" : $y(o, Cy))) + : ((l.fragment = ""), (c = iw)); + break; + case iw: + o !== km && (l.fragment += $y(o, Ay)); + } + h++; + } + }, + parseHost: function (t) { + var e, i, n; + if ("[" === Zm(t, 0)) { + if ("]" !== Zm(t, t.length - 1)) return fy; + if ( + ((e = (function (t) { + var e, + i, + n, + o, + r, + a, + s, + l = [0, 0, 0, 0, 0, 0, 0, 0], + c = 0, + h = null, + u = 0, + f = function () { + return Zm(t, u); + }; + if (":" === f()) { + if (":" !== Zm(t, 1)) return; + ((u += 2), (h = ++c)); + } + for (; f(); ) { + if (8 === c) return; + if (":" !== f()) { + for (e = i = 0; i < 4 && ty(wy, f()); ) + ((e = 16 * e + Ym(f(), 16)), u++, i++); + if ("." === f()) { + if (0 === i) return; + if (((u -= i), c > 6)) return; + for (n = 0; f(); ) { + if (((o = null), n > 0)) { + if (!("." === f() && n < 4)) return; + u++; + } + if (!ty(vy, f())) return; + for (; ty(vy, f()); ) { + if (((r = Ym(f(), 10)), null === o)) o = r; + else { + if (0 === o) return; + o = 10 * o + r; + } + if (o > 255) return; + u++; + } + ((l[c] = 256 * l[c] + o), (2 != ++n && 4 !== n) || c++); + } + if (4 !== n) return; + break; + } + if (":" === f()) { + if ((u++, !f())) return; + } else if (f()) return; + l[c++] = e; + } else { + if (null !== h) return; + (u++, (h = ++c)); + } + } + if (null !== h) + for (a = c - h, c = 7; 0 !== c && a > 0; ) + ((s = l[c]), (l[c--] = l[h + a - 1]), (l[h + --a] = s)); + else if (8 !== c) return; + return l; + })(ly(t, 1, -1))), + !e) + ) + return fy; + this.host = e; + } else if (this.isSpecial()) { + if (((t = Dm(t)), ty(Sy, t))) return fy; + if ( + ((e = (function (t) { + var e, + i, + n, + o, + r, + a, + s, + l = sy(t, "."); + if ( + (l.length && "" === l[l.length - 1] && l.length--, + (e = l.length) > 4) + ) + return t; + for (i = [], n = 0; n < e; n++) { + if ("" === (o = l[n])) return t; + if ( + ((r = 10), + o.length > 1 && + "0" === Zm(o, 0) && + ((r = ty(by, o) ? 16 : 8), (o = ly(o, 8 === r ? 1 : 2))), + "" === o) + ) + a = 0; + else { + if (!ty(10 === r ? yy : 8 === r ? my : wy, o)) return t; + a = Ym(o, r); + } + oy(i, a); + } + for (n = 0; n < e; n++) + if (((a = i[n]), n === e - 1)) { + if (a >= Xm(256, 5 - e)) return null; + } else if (a > 255) return null; + for (s = ny(i), n = 0; n < i.length; n++) + s += i[n] * Xm(256, 3 - n); + return s; + })(t)), + null === e) + ) + return fy; + this.host = e; + } else { + if (ty(xy, t)) return fy; + for (e = "", i = Nm(t), n = 0; n < i.length; n++) e += $y(i[n], Cy); + this.host = e; + } + }, + cannotHaveUsernamePasswordPort: function () { + return !this.host || this.cannotBeABaseURL || "file" === this.scheme; + }, + includesCredentials: function () { + return "" !== this.username || "" !== this.password; + }, + isSpecial: function () { + return jm(Ey, this.scheme); + }, + shortenPath: function () { + var t = this.path, + e = t.length; + !e || ("file" === this.scheme && 1 === e && jy(t[0], !0)) || t.length--; + }, + serialize: function () { + var t = this, + e = t.scheme, + i = t.username, + n = t.password, + o = t.host, + r = t.port, + a = t.path, + s = t.query, + l = t.fragment, + c = e + ":"; + return ( + null !== o + ? ((c += "//"), + t.includesCredentials() && (c += i + (n ? ":" + n : "") + "@"), + (c += Ty(o)), + null !== r && (c += ":" + r)) + : "file" === e && (c += "//"), + (c += t.cannotBeABaseURL ? a[0] : a.length ? "/" + ey(a, "/") : ""), + null !== s && (c += "?" + s), + null !== l && (c += "#" + l), + c + ); + }, + setHref: function (t) { + var e = this.parse(t); + if (e) throw new Jm(e); + this.searchParams.update(); + }, + getOrigin: function () { + var t = this.scheme, + e = this.port; + if ("blob" === t) + try { + return new ow(t.path[0]).origin; + } catch (t) { + return "null"; + } + return "file" !== t && this.isSpecial() + ? t + "://" + Ty(this.host) + (null !== e ? ":" + e : "") + : "null"; + }, + getProtocol: function () { + return this.scheme + ":"; + }, + setProtocol: function (t) { + this.parse(_m(t) + ":", Fy); + }, + getUsername: function () { + return this.username; + }, + setUsername: function (t) { + var e = Nm(_m(t)); + if (!this.cannotHaveUsernamePasswordPort()) { + this.username = ""; + for (var i = 0; i < e.length; i++) this.username += $y(e[i], Ry); + } + }, + getPassword: function () { + return this.password; + }, + setPassword: function (t) { + var e = Nm(_m(t)); + if (!this.cannotHaveUsernamePasswordPort()) { + this.password = ""; + for (var i = 0; i < e.length; i++) this.password += $y(e[i], Ry); + } + }, + getHost: function () { + var t = this.host, + e = this.port; + return null === t ? "" : null === e ? Ty(t) : Ty(t) + ":" + e; + }, + setHost: function (t) { + this.cannotBeABaseURL || this.parse(t, Wy); + }, + getHostname: function () { + var t = this.host; + return null === t ? "" : Ty(t); + }, + setHostname: function (t) { + this.cannotBeABaseURL || this.parse(t, Gy); + }, + getPort: function () { + var t = this.port; + return null === t ? "" : _m(t); + }, + setPort: function (t) { + this.cannotHaveUsernamePasswordPort() || + ("" === (t = _m(t)) ? (this.port = null) : this.parse(t, Ky)); + }, + getPathname: function () { + var t = this.path; + return this.cannotBeABaseURL ? t[0] : t.length ? "/" + ey(t, "/") : ""; + }, + setPathname: function (t) { + this.cannotBeABaseURL || ((this.path = []), this.parse(t, Xy)); + }, + getSearch: function () { + var t = this.query; + return t ? "?" + t : ""; + }, + setSearch: function (t) { + ("" === (t = _m(t)) + ? (this.query = null) + : ("?" === Zm(t, 0) && (t = ly(t, 1)), + (this.query = ""), + this.parse(t, ew)), + this.searchParams.update()); + }, + getSearchParams: function () { + return this.searchParams.facade; + }, + getHash: function () { + var t = this.fragment; + return t ? "#" + t : ""; + }, + setHash: function (t) { + "" !== (t = _m(t)) + ? ("#" === Zm(t, 0) && (t = ly(t, 1)), + (this.fragment = ""), + this.parse(t, iw)) + : (this.fragment = null); + }, + update: function () { + this.query = this.searchParams.serialize() || null; + }, + }; + var ow = function (t) { + var e = Em(this, rw), + i = Hm(arguments.length, 1) > 1 ? arguments[1] : void 0, + n = qm(e, new nw(t, !1, i)); + Pm || + ((e.href = n.serialize()), + (e.origin = n.getOrigin()), + (e.protocol = n.getProtocol()), + (e.username = n.getUsername()), + (e.password = n.getPassword()), + (e.host = n.getHost()), + (e.hostname = n.getHostname()), + (e.port = n.getPort()), + (e.pathname = n.getPathname()), + (e.search = n.getSearch()), + (e.searchParams = n.getSearchParams()), + (e.hash = n.getHash())); + }, + rw = ow.prototype, + aw = function (t, e) { + return { + get: function () { + return zm(this)[t](); + }, + set: + e && + function (t) { + return zm(this)[e](t); + }, + configurable: !0, + enumerable: !0, + }; + }; + if ( + (Pm && + ($m(rw, "href", aw("serialize", "setHref")), + $m(rw, "origin", aw("getOrigin")), + $m(rw, "protocol", aw("getProtocol", "setProtocol")), + $m(rw, "username", aw("getUsername", "setUsername")), + $m(rw, "password", aw("getPassword", "setPassword")), + $m(rw, "host", aw("getHost", "setHost")), + $m(rw, "hostname", aw("getHostname", "setHostname")), + $m(rw, "port", aw("getPort", "setPort")), + $m(rw, "pathname", aw("getPathname", "setPathname")), + $m(rw, "search", aw("getSearch", "setSearch")), + $m(rw, "searchParams", aw("getSearchParams")), + $m(rw, "hash", aw("getHash", "setHash"))), + Rm( + rw, + "toJSON", + function () { + return zm(this).serialize(); + }, + { enumerable: !0 }, + ), + Rm( + rw, + "toString", + function () { + return zm(this).serialize(); + }, + { enumerable: !0 }, + ), + Km) + ) { + var sw = Km.createObjectURL, + lw = Km.revokeObjectURL; + (sw && Rm(ow, "createObjectURL", Am(sw, Km)), + lw && Rm(ow, "revokeObjectURL", Am(lw, Km))); + } + (Vm(ow, "URL"), + Om({ global: !0, constructor: !0, forced: !Tm, sham: !Pm }, { URL: ow })); + var cw = x; + po( + { target: "URL", proto: !0, enumerable: !0 }, + { + toJSON: function () { + return cw(URL.prototype.toString, this); + }, + }, + ); + var hw = Qt, + uw = Ha, + fw = ja; + po( + { + target: "Object", + stat: !0, + forced: b(function () { + uw(1); + }), + sham: !fw, + }, + { + getPrototypeOf: function (t) { + return uw(hw(t)); + }, + }, + ); + var dw, + pw = po, + gw = mr, + vw = v.f, + bw = kn, + mw = Il, + yw = sd, + ww = G, + Sw = cd, + xw = gw("".slice), + kw = Math.min, + Ow = Sw("endsWith"); + pw( + { + target: "String", + proto: !0, + forced: + !!( + Ow || ((dw = vw(String.prototype, "endsWith")), !dw || dw.writable) + ) && !Ow, + }, + { + endsWith: function (t) { + var e = mw(ww(this)); + yw(t); + var i = arguments.length > 1 ? arguments[1] : void 0, + n = e.length, + o = void 0 === i ? n : kw(bw(i), n), + r = mw(t); + return xw(e, o - r.length, o) === r; + }, + }, + ); + var Pw = x, + Tw = We, + Cw = q, + Aw = kn, + Iw = Il, + Rw = G, + $w = jt, + Ew = Kd, + jw = cp; + Wd("match", function (t, e, i) { + return [ + function (e) { + var i = Rw(this), + n = Cw(e) ? void 0 : $w(e, t); + return n ? Pw(n, e, i) : new RegExp(e)[t](Iw(i)); + }, + function (t) { + var n = Tw(this), + o = Iw(t), + r = i(e, n, o); + if (r.done) return r.value; + if (!n.global) return jw(n, o); + var a = n.unicode; + n.lastIndex = 0; + for (var s, l = [], c = 0; null !== (s = jw(n, o)); ) { + var h = Iw(s[0]); + ((l[c] = h), + "" === h && (n.lastIndex = Ew(o, Aw(n.lastIndex), a)), + c++); + } + return 0 === c ? null : l; + }, + ]; + }); + var Lw = po, + Nw = mr, + Fw = v.f, + Bw = kn, + Dw = Il, + _w = sd, + Vw = G, + Hw = cd, + Uw = Nw("".slice), + Mw = Math.min, + qw = Hw("startsWith"), + zw = + !qw && + !!(function () { + var t = Fw(String.prototype, "startsWith"); + return t && !t.writable; + })(); + Lw( + { target: "String", proto: !0, forced: !zw && !qw }, + { + startsWith: function (t) { + var e = Dw(Vw(this)); + _w(t); + var i = Bw(Mw(arguments.length > 1 ? arguments[1] : void 0, e.length)), + n = Dw(t); + return Uw(e, i, i + n.length) === n; + }, + }, + ); + var Ww = { + getBootstrapVersion: function () { + var e = 5; + try { + var i = t.fn.dropdown.Constructor.VERSION; + void 0 !== i && (e = parseInt(i, 10)); + } catch (t) {} + try { + var n = bootstrap.Tooltip.VERSION; + void 0 !== n && (e = parseInt(n, 10)); + } catch (t) {} + return e; + }, + getIconsPrefix: function (t) { + return ( + { + bootstrap3: "glyphicon", + bootstrap4: "fa", + bootstrap5: "bi", + "bootstrap-table": "icon", + bulma: "fa", + foundation: "fa", + materialize: "material-icons", + semantic: "fa", + }[t] || "fa" + ); + }, + getIcons: function (t) { + return ( + { + glyphicon: { + clearSearch: "glyphicon-trash", + columns: "glyphicon-th icon-th", + detailClose: "glyphicon-minus icon-minus", + detailOpen: "glyphicon-plus icon-plus", + fullscreen: "glyphicon-fullscreen", + paginationSwitchDown: "glyphicon-collapse-down icon-chevron-down", + paginationSwitchUp: "glyphicon-collapse-up icon-chevron-up", + refresh: "glyphicon-refresh icon-refresh", + search: "glyphicon-search", + toggleOff: "glyphicon-list-alt icon-list-alt", + toggleOn: "glyphicon-list-alt icon-list-alt", + }, + fa: { + clearSearch: "fa-trash", + columns: "fa-th-list", + detailClose: "fa-minus", + detailOpen: "fa-plus", + fullscreen: "fa-arrows-alt", + paginationSwitchDown: "fa-caret-square-down", + paginationSwitchUp: "fa-caret-square-up", + refresh: "fa-sync", + search: "fa-search", + toggleOff: "fa-toggle-off", + toggleOn: "fa-toggle-on", + }, + bi: { + clearSearch: "bi-trash", + columns: "bi-list-ul", + detailClose: "bi-dash", + detailOpen: "bi-plus", + fullscreen: "bi-arrows-move", + paginationSwitchDown: "bi-caret-down-square", + paginationSwitchUp: "bi-caret-up-square", + refresh: "bi-arrow-clockwise", + search: "bi-search", + toggleOff: "bi-toggle-off", + toggleOn: "bi-toggle-on", + }, + icon: { + clearSearch: "icon-trash-2", + columns: "icon-list", + detailClose: "icon-minus", + detailOpen: "icon-plus", + fullscreen: "icon-maximize", + paginationSwitchDown: "icon-arrow-up-circle", + paginationSwitchUp: "icon-arrow-down-circle", + refresh: "icon-refresh-cw", + search: "icon-search", + toggleOff: "icon-toggle-right", + toggleOn: "icon-toggle-right", + }, + "material-icons": { + clearSearch: "delete", + columns: "view_list", + detailClose: "remove", + detailOpen: "add", + fullscreen: "fullscreen", + paginationSwitchDown: "grid_on", + paginationSwitchUp: "grid_off", + refresh: "refresh", + search: "search", + sort: "sort", + toggleOff: "tablet", + toggleOn: "tablet_android", + }, + }[t] || {} + ); + }, + getSearchInput: function (e) { + return "string" == typeof e.options.searchSelector + ? t(e.options.searchSelector) + : e.$toolbar.find(".search input"); + }, + extend: function () { + for ( + var t = this, e = arguments.length, i = new Array(e), n = 0; + n < e; + n++ + ) + i[n] = arguments[n]; + var o, + r = i[0] || {}, + a = 1, + s = !1; + for ( + "boolean" == typeof r && ((s = r), (r = i[a] || {}), a++), + "object" !== u(r) && "function" != typeof r && (r = {}); + a < i.length; + a++ + ) { + var l = i[a]; + if (null != l) + for (var c in l) { + var h = l[c]; + if ("__proto__" !== c && r !== h) { + var f = Array.isArray(h); + if (s && h && (this.isObject(h) || f)) { + var d = r[c]; + if ( + f && + Array.isArray(d) && + d.every(function (e) { + return !t.isObject(e) && !Array.isArray(e); + }) + ) { + r[c] = h; + continue; + } + ((o = + f && !Array.isArray(d) + ? [] + : f || this.isObject(d) + ? d + : {}), + (r[c] = this.extend(s, o, h))); + } else void 0 !== h && (r[c] = h); + } + } + } + return r; + }, + sprintf: function (t) { + for ( + var e = arguments.length, i = new Array(e > 1 ? e - 1 : 0), n = 1; + n < e; + n++ + ) + i[n - 1] = arguments[n]; + var o = !0, + r = 0, + a = t.replace(/%s/g, function () { + var t = i[r++]; + return void 0 === t ? ((o = !1), "") : t; + }); + return o ? a : ""; + }, + isObject: function (t) { + if ("object" !== u(t) || null === t) return !1; + for (var e = t; null !== Object.getPrototypeOf(e); ) + e = Object.getPrototypeOf(e); + return Object.getPrototypeOf(t) === e; + }, + isEmptyObject: function () { + var t = + arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; + return 0 === Object.entries(t).length && t.constructor === Object; + }, + isNumeric: function (t) { + return !isNaN(parseFloat(t)) && isFinite(t); + }, + getFieldTitle: function (t, e) { + var i, + n = o(t); + try { + for (n.s(); !(i = n.n()).done; ) { + var r = i.value; + if (r.field === e) return r.title; + } + } catch (t) { + n.e(t); + } finally { + n.f(); + } + return ""; + }, + setFieldIndex: function (t) { + var e, + i = 0, + n = [], + r = o(t[0]); + try { + for (r.s(); !(e = r.n()).done; ) { + i += +e.value.colspan || 1; + } + } catch (t) { + r.e(t); + } finally { + r.f(); + } + for (var a = 0; a < t.length; a++) { + n[a] = []; + for (var s = 0; s < i; s++) n[a][s] = !1; + } + for (var l = 0; l < t.length; l++) { + var c, + h = o(t[l]); + try { + for (h.s(); !(c = h.n()).done; ) { + var u = c.value, + f = +u.rowspan || 1, + d = +u.colspan || 1, + p = n[l].indexOf(!1); + ((u.colspanIndex = p), + 1 === d + ? ((u.fieldIndex = p), void 0 === u.field && (u.field = p)) + : (u.colspanGroup = +u.colspan)); + for (var g = 0; g < f; g++) + for (var v = 0; v < d; v++) n[l + g][p + v] = !0; + } + } catch (t) { + h.e(t); + } finally { + h.f(); + } + } + }, + normalizeAccent: function (t) { + return "string" != typeof t + ? t + : t.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); + }, + updateFieldGroup: function (t, e) { + var i, + n, + r = (i = []).concat.apply(i, c(t)), + a = o(t); + try { + for (a.s(); !(n = a.n()).done; ) { + var s, + l = o(n.value); + try { + for (l.s(); !(s = l.n()).done; ) { + var h = s.value; + if (h.colspanGroup > 1) { + for ( + var u = 0, + f = function (t) { + var e = r.filter(function (e) { + return e.fieldIndex === t; + }), + i = e[e.length - 1]; + if (e.length > 1) + for (var n = 0; n < e.length - 1; n++) + e[n].visible = i.visible; + i.visible && u++; + }, + d = h.colspanIndex; + d < h.colspanIndex + h.colspanGroup; + d++ + ) + f(d); + ((h.colspan = u), (h.visible = u > 0)); + } + } + } catch (t) { + l.e(t); + } finally { + l.f(); + } + } + } catch (t) { + a.e(t); + } finally { + a.f(); + } + if (!(t.length < 2)) { + var p, + g = o(e); + try { + var v = function () { + var t = p.value, + e = r.filter(function (e) { + return e.fieldIndex === t.fieldIndex; + }); + if (e.length > 1) { + var i, + n = o(e); + try { + for (n.s(); !(i = n.n()).done; ) { + i.value.visible = t.visible; + } + } catch (t) { + n.e(t); + } finally { + n.f(); + } + } + }; + for (g.s(); !(p = g.n()).done; ) v(); + } catch (t) { + g.e(t); + } finally { + g.f(); + } + } + }, + getScrollBarWidth: function () { + if (void 0 === this.cachedWidth) { + var e = t("
    ").addClass("fixed-table-scroll-inner"), + i = t("
    ").addClass("fixed-table-scroll-outer"); + (i.append(e), t("body").append(i)); + var n = e[0].offsetWidth; + i.css("overflow", "scroll"); + var o = e[0].offsetWidth; + (n === o && (o = i[0].clientWidth), + i.remove(), + (this.cachedWidth = n - o)); + } + return this.cachedWidth; + }, + calculateObjectValue: function (t, e, i, n) { + var r = e; + if ("string" == typeof e) { + var a = e.split("."); + if (a.length > 1) { + r = window; + var s, + l = o(a); + try { + for (l.s(); !(s = l.n()).done; ) { + r = r[s.value]; + } + } catch (t) { + l.e(t); + } finally { + l.f(); + } + } else r = window[e]; + } + return null !== r && "object" === u(r) + ? r + : "function" == typeof r + ? r.apply(t, i || []) + : !r && + "string" == typeof e && + i && + this.sprintf.apply(this, [e].concat(c(i))) + ? this.sprintf.apply(this, [e].concat(c(i))) + : n; + }, + compareObjects: function (t, e, i) { + var n = Object.keys(t), + o = Object.keys(e); + if (i && n.length !== o.length) return !1; + for (var r = 0, a = n; r < a.length; r++) { + var s = a[r]; + if (o.includes(s) && t[s] !== e[s]) return !1; + } + return !0; + }, + regexCompare: function (t, e) { + try { + var i = e.match(/^\/(.*?)\/([gim]*)$/); + if ( + -1 !== + t + .toString() + .search(i ? new RegExp(i[1], i[2]) : new RegExp(e, "gim")) + ) + return !0; + } catch (t) { + return !1; + } + return !1; + }, + escapeApostrophe: function (t) { + return t.toString().replace(/'/g, "'"); + }, + escapeHTML: function (t) { + return t + ? t + .toString() + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """) + .replace(/'/g, "'") + : t; + }, + unescapeHTML: function (t) { + return "string" == typeof t && t + ? t + .toString() + .replace(/&/g, "&") + .replace(/</g, "<") + .replace(/>/g, ">") + .replace(/"/g, '"') + .replace(/'/g, "'") + : t; + }, + removeHTML: function (t) { + return t + ? t + .toString() + .replace(/(<([^>]+)>)/gi, "") + .replace(/&[#A-Za-z0-9]+;/gi, "") + .trim() + : t; + }, + getRealDataAttr: function (t) { + for (var e = 0, i = Object.entries(t); e < i.length; e++) { + var n = l(i[e], 2), + o = n[0], + r = n[1], + a = o + .split(/(?=[A-Z])/) + .join("-") + .toLowerCase(); + a !== o && ((t[a] = r), delete t[o]); + } + return t; + }, + getItemField: function (t, e, i) { + var n = + arguments.length > 3 && void 0 !== arguments[3] + ? arguments[3] + : void 0, + r = t; + if ( + (void 0 !== n && (i = n), "string" != typeof e || t.hasOwnProperty(e)) + ) + return i ? this.escapeHTML(t[e]) : t[e]; + var a, + s = o(e.split(".")); + try { + for (s.s(); !(a = s.n()).done; ) { + var l = a.value; + r = r && r[l]; + } + } catch (t) { + s.e(t); + } finally { + s.f(); + } + return i ? this.escapeHTML(r) : r; + }, + isIEBrowser: function () { + return ( + navigator.userAgent.includes("MSIE ") || + /Trident.*rv:11\./.test(navigator.userAgent) + ); + }, + findIndex: function (t, e) { + var i, + n = o(t); + try { + for (n.s(); !(i = n.n()).done; ) { + var r = i.value; + if (JSON.stringify(r) === JSON.stringify(e)) return t.indexOf(r); + } + } catch (t) { + n.e(t); + } finally { + n.f(); + } + return -1; + }, + trToData: function (e, i) { + var n = this, + o = [], + r = []; + return ( + i.each(function (i, a) { + var s = t(a), + l = {}; + ((l._id = s.attr("id")), + (l._class = s.attr("class")), + (l._data = n.getRealDataAttr(s.data())), + (l._style = s.attr("style")), + s.find(">td,>th").each(function (o, a) { + for ( + var s = t(a), + c = +s.attr("colspan") || 1, + h = +s.attr("rowspan") || 1, + u = o; + r[i] && r[i][u]; + u++ + ); + for (var f = u; f < u + c; f++) + for (var d = i; d < i + h; d++) + (r[d] || (r[d] = []), (r[d][f] = !0)); + var p = e[u].field; + ((l[p] = n.escapeApostrophe(s.html().trim())), + (l["_".concat(p, "_id")] = s.attr("id")), + (l["_".concat(p, "_class")] = s.attr("class")), + (l["_".concat(p, "_rowspan")] = s.attr("rowspan")), + (l["_".concat(p, "_colspan")] = s.attr("colspan")), + (l["_".concat(p, "_title")] = s.attr("title")), + (l["_".concat(p, "_data")] = n.getRealDataAttr(s.data())), + (l["_".concat(p, "_style")] = s.attr("style"))); + }), + o.push(l)); + }), + o + ); + }, + sort: function (t, e, i, n, o, r) { + if ( + (null == t && (t = ""), + null == e && (e = ""), + n.sortStable && t === e && ((t = o), (e = r)), + this.isNumeric(t) && this.isNumeric(e)) + ) + return (t = parseFloat(t)) < (e = parseFloat(e)) + ? -1 * i + : t > e + ? i + : 0; + if (n.sortEmptyLast) { + if ("" === t) return 1; + if ("" === e) return -1; + } + return t === e + ? 0 + : ("string" != typeof t && (t = t.toString()), + -1 === t.localeCompare(e) ? -1 * i : i); + }, + getEventName: function (t) { + var e = + arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : ""; + return ( + (e = e || "".concat(+new Date()).concat(~~(1e6 * Math.random()))), + "".concat(t, "-").concat(e) + ); + }, + hasDetailViewIcon: function (t) { + return t.detailView && t.detailViewIcon && !t.cardView; + }, + getDetailViewIndexOffset: function (t) { + return this.hasDetailViewIcon(t) && "right" !== t.detailViewAlign + ? 1 + : 0; + }, + checkAutoMergeCells: function (t) { + var e, + i = o(t); + try { + for (i.s(); !(e = i.n()).done; ) + for ( + var n = e.value, r = 0, a = Object.keys(n); + r < a.length; + r++ + ) { + var s = a[r]; + if ( + s.startsWith("_") && + (s.endsWith("_rowspan") || s.endsWith("_colspan")) + ) + return !0; + } + } catch (t) { + i.e(t); + } finally { + i.f(); + } + return !1; + }, + deepCopy: function (t) { + return void 0 === t + ? t + : this.extend(!0, Array.isArray(t) ? [] : {}, t); + }, + debounce: function (t, e, i) { + var n; + return function () { + var o = this, + r = arguments, + a = i && !n; + (clearTimeout(n), + (n = setTimeout(function () { + ((n = null), i || t.apply(o, r)); + }, e)), + a && t.apply(o, r)); + }; + }, + replaceSearchMark: function (t, e) { + var i = t instanceof Element, + n = i ? t : document.createElement("div"), + r = new RegExp(e, "gim"), + a = function (t, e) { + for (var i, n = [], o = 0; null !== (i = e.exec(t)); ) { + o !== i.index && + n.push(document.createTextNode(t.substring(o, i.index))); + var r = document.createElement("mark"); + ((r.innerText = i[0]), n.push(r), (o = i.index + i[0].length)); + } + if (n.length) + return ( + o !== t.length && + n.push(document.createTextNode(t.substring(o))), + n + ); + }, + s = function (t) { + for (var e = 0; e < t.childNodes.length; e++) { + var i = t.childNodes[e]; + if (i.nodeType === document.TEXT_NODE) { + var n = a(i.data, r); + if (n) { + var l, + c = o(n); + try { + for (c.s(); !(l = c.n()).done; ) { + var h = l.value; + t.insertBefore(h, i); + } + } catch (t) { + c.e(t); + } finally { + c.f(); + } + (t.removeChild(i), (e += n.length - 1)); + } + } + i.nodeType === document.ELEMENT_NODE && s(i); + } + }; + return (i || (n.innerHTML = t), s(n), i ? n : n.innerHTML); + }, + classToString: function (t) { + var e = this; + return "string" == typeof t + ? t + : Array.isArray(t) + ? t + .map(function (t) { + return e.classToString(t); + }) + .filter(function (t) { + return t; + }) + .join(" ") + : t && "object" === u(t) + ? Object.entries(t) + .map(function (t) { + var e = l(t, 2), + i = e[0]; + return e[1] ? i : ""; + }) + .filter(function (t) { + return t; + }) + .join(" ") + : ""; + }, + parseStyle: function (t, e) { + if (!e) return t; + if ("string" == typeof e) + e.split(";").forEach(function (e) { + var i = e.indexOf(":"); + if (i > 0) { + var n = e.substring(0, i).trim(), + o = e.substring(i + 1).trim(); + t.style.setProperty(n, o); + } + }); + else if (Array.isArray(e)) { + var i, + n = o(e); + try { + for (n.s(); !(i = n.n()).done; ) { + var r = i.value; + this.parseStyle(t, r); + } + } catch (t) { + n.e(t); + } finally { + n.f(); + } + } else if ("object" === u(e)) + for (var a = 0, s = Object.entries(e); a < s.length; a++) { + var c = l(s[a], 2), + h = c[0], + f = c[1]; + t.style.setProperty(h, f); + } + return t; + }, + h: function (t, e, i) { + var n = t instanceof HTMLElement ? t : document.createElement(t), + o = e || {}, + r = i || []; + "A" === n.tagName && (n.href = "javascript:"); + for (var a = 0, s = Object.entries(o); a < s.length; a++) { + var h = l(s[a], 2), + u = h[0], + f = h[1]; + if (void 0 !== f) + if (["text", "innerText"].includes(u)) n.innerText = f; + else if (["html", "innerHTML"].includes(u)) n.innerHTML = f; + else if ("children" === u) r.push.apply(r, c(f)); + else if ("class" === u) + n.setAttribute("class", this.classToString(f)); + else if ("style" === u) + "string" == typeof f + ? n.setAttribute("style", f) + : this.parseStyle(n, f); + else if (u.startsWith("@") || u.startsWith("on")) { + var d = u.startsWith("@") + ? u.substring(1) + : u.substring(2).toLowerCase(), + p = Array.isArray(f) ? f : [f]; + n.addEventListener.apply(n, [d].concat(c(p))); + } else + u.startsWith(".") + ? (n[u.substring(1)] = f) + : n.setAttribute(u, f); + } + return (r.length && n.append.apply(n, c(r)), n); + }, + htmlToNodes: function (e) { + if (e instanceof t) return e.get(); + if (e instanceof Node) return [e]; + "string" != typeof e && (e = new String(e).toString()); + var i = document.createElement("div"); + return ((i.innerHTML = e), i.childNodes); + }, + }, + Gw = Ww.getBootstrapVersion(), + Kw = { + 3: { + classes: { + buttonActive: "active", + buttons: "default", + buttonsDropdown: "btn-group", + buttonsGroup: "btn-group", + buttonsPrefix: "btn", + dropdownActive: "active", + dropup: "dropup", + input: "form-control", + inputGroup: "input-group", + inputPrefix: "input-", + paginationActive: "active", + paginationDropdown: "btn-group dropdown", + pull: "pull", + select: "form-control", + }, + html: { + dropdownCaret: '', + icon: '', + inputGroup: + '
    %s%s
    ', + pageDropdown: ['"], + pageDropdownItem: + '
    ', + pagination: ['
      ', "
    "], + paginationItem: + '
  • %s
  • ', + searchButton: + '', + searchClearButton: + '', + searchInput: '', + toolbarDropdown: ['"], + toolbarDropdownItem: + '', + toolbarDropdownSeparator: '
  • ', + }, + }, + 4: { + classes: { + buttonActive: "active", + buttons: "secondary", + buttonsDropdown: "btn-group", + buttonsGroup: "btn-group", + buttonsPrefix: "btn", + dropdownActive: "active", + dropup: "dropup", + input: "form-control", + inputGroup: "btn-group", + inputPrefix: "form-control-", + paginationActive: "active", + paginationDropdown: "btn-group dropdown", + pull: "float", + select: "form-control", + }, + html: { + dropdownCaret: '', + icon: '', + inputGroup: + '
    %s
    %s
    ', + pageDropdown: ['"], + pageDropdownItem: '%s', + pagination: ['
      ', "
    "], + paginationItem: + '
  • %s
  • ', + searchButton: + '', + searchClearButton: + '', + searchInput: '', + toolbarDropdown: [ + '", + ], + toolbarDropdownItem: + '', + toolbarDropdownSeparator: '', + }, + }, + 5: { + classes: { + buttonActive: "active", + buttons: "secondary", + buttonsDropdown: "btn-group", + buttonsGroup: "btn-group", + buttonsPrefix: "btn", + dropdownActive: "active", + dropup: "dropup", + input: "form-control", + inputGroup: "btn-group", + inputPrefix: "form-control-", + paginationActive: "active", + paginationDropdown: "btn-group dropdown", + pull: "float", + select: "form-select", + }, + html: { + dataToggle: "data-bs-toggle", + dropdownCaret: '', + icon: '', + inputGroup: '
    %s%s
    ', + pageDropdown: ['"], + pageDropdownItem: '%s', + pagination: ['
      ', "
    "], + paginationItem: + '
  • %s
  • ', + searchButton: + '', + searchClearButton: + '', + searchInput: '', + toolbarDropdown: [ + '", + ], + toolbarDropdownItem: + '', + toolbarDropdownSeparator: '', + }, + }, + }[Gw], + Jw = { + ajax: void 0, + ajaxOptions: {}, + buttons: {}, + buttonsAlign: "right", + buttonsAttributeTitle: "title", + buttonsClass: Kw.classes.buttons, + buttonsOrder: [ + "paginationSwitch", + "refresh", + "toggle", + "fullscreen", + "columns", + ], + buttonsPrefix: Kw.classes.buttonsPrefix, + buttonsToolbar: void 0, + cache: !0, + cardView: !1, + checkboxHeader: !0, + classes: "table table-bordered table-hover", + clickToSelect: !1, + columns: [[]], + contentType: "application/json", + customSearch: void 0, + customSort: void 0, + data: [], + dataField: "rows", + dataType: "json", + detailFilter: function (t, e) { + return !0; + }, + detailFormatter: function (t, e) { + return ""; + }, + detailView: !1, + detailViewAlign: "left", + detailViewByClick: !1, + detailViewIcon: !0, + escape: !1, + escapeTitle: !0, + filterOptions: { filterAlgorithm: "and" }, + fixedScroll: !1, + footerField: "footer", + footerStyle: function (t) { + return {}; + }, + headerStyle: function (t) { + return {}; + }, + height: void 0, + icons: {}, + iconSize: void 0, + iconsPrefix: void 0, + idField: void 0, + ignoreClickToSelectOn: function (t) { + var e = t.tagName; + return ["A", "BUTTON"].includes(e); + }, + loadingFontSize: "auto", + loadingTemplate: function (t) { + return '\n '.concat( + t, + '\n \n \n ', + ); + }, + locale: void 0, + maintainMetaData: !1, + method: "get", + minimumCountColumns: 1, + multipleSelectRow: !1, + pageList: [10, 25, 50, 100], + pageNumber: 1, + pageSize: 10, + pagination: !1, + paginationDetailHAlign: "left", + paginationHAlign: "right", + paginationLoadMore: !1, + paginationLoop: !0, + paginationNextText: "›", + paginationPagesBySide: 1, + paginationParts: ["pageInfo", "pageSize", "pageList"], + paginationPreText: "‹", + paginationSuccessivelySize: 5, + paginationUseIntermediate: !1, + paginationVAlign: "bottom", + queryParams: function (t) { + return t; + }, + queryParamsType: "limit", + regexSearch: !1, + rememberOrder: !1, + responseHandler: function (t) { + return t; + }, + rowAttributes: function (t, e) { + return {}; + }, + rowStyle: function (t, e) { + return {}; + }, + search: !1, + searchable: !1, + searchAccentNeutralise: !1, + searchAlign: "right", + searchHighlight: !1, + searchOnEnterKey: !1, + searchSelector: !1, + searchText: "", + searchTimeOut: 500, + selectItemName: "btSelectItem", + serverSort: !0, + showButtonIcons: !0, + showButtonText: !1, + showColumns: !1, + showColumnsSearch: !1, + showColumnsToggleAll: !1, + showExtendedPagination: !1, + showFooter: !1, + showFullscreen: !1, + showHeader: !0, + showPaginationSwitch: !1, + showRefresh: !1, + showSearchButton: !1, + showSearchClearButton: !1, + showToggle: !1, + sidePagination: "client", + silentSort: !0, + singleSelect: !1, + smartDisplay: !0, + sortable: !0, + sortClass: void 0, + sortEmptyLast: !1, + sortName: void 0, + sortOrder: void 0, + sortReset: !1, + sortResetPage: !1, + sortStable: !1, + strictSearch: !1, + theadClasses: "", + toolbar: void 0, + toolbarAlign: "left", + totalField: "total", + totalNotFiltered: 0, + totalNotFilteredField: "totalNotFiltered", + totalRows: 0, + trimOnSearch: !0, + undefinedText: "-", + uniqueId: void 0, + url: void 0, + virtualScroll: !1, + virtualScrollItemHeight: void 0, + visibleSearch: !1, + onAll: function (t, e) { + return !1; + }, + onCheck: function (t) { + return !1; + }, + onCheckAll: function (t) { + return !1; + }, + onCheckSome: function (t) { + return !1; + }, + onClickCell: function (t, e, i, n) { + return !1; + }, + onClickRow: function (t, e) { + return !1; + }, + onCollapseRow: function (t, e) { + return !1; + }, + onColumnSwitch: function (t, e) { + return !1; + }, + onColumnSwitchAll: function (t) { + return !1; + }, + onDblClickCell: function (t, e, i, n) { + return !1; + }, + onDblClickRow: function (t, e) { + return !1; + }, + onExpandRow: function (t, e, i) { + return !1; + }, + onLoadError: function (t) { + return !1; + }, + onLoadSuccess: function (t) { + return !1; + }, + onPageChange: function (t, e) { + return !1; + }, + onPostBody: function () { + return !1; + }, + onPostFooter: function () { + return !1; + }, + onPostHeader: function () { + return !1; + }, + onPreBody: function (t) { + return !1; + }, + onRefresh: function (t) { + return !1; + }, + onRefreshOptions: function (t) { + return !1; + }, + onResetView: function () { + return !1; + }, + onScrollBody: function () { + return !1; + }, + onSearch: function (t) { + return !1; + }, + onSort: function (t, e) { + return !1; + }, + onToggle: function (t) { + return !1; + }, + onTogglePagination: function (t) { + return !1; + }, + onUncheck: function (t) { + return !1; + }, + onUncheckAll: function (t) { + return !1; + }, + onUncheckSome: function (t) { + return !1; + }, + onVirtualScroll: function (t, e) { + return !1; + }, + }, + Yw = { + formatLoadingMessage: function () { + return "Loading, please wait"; + }, + formatRecordsPerPage: function (t) { + return "".concat(t, " rows per page"); + }, + formatShowingRows: function (t, e, i, n) { + return void 0 !== n && n > 0 && n > i + ? "Showing " + .concat(t, " to ") + .concat(e, " of ") + .concat(i, " rows (filtered from ") + .concat(n, " total rows)") + : "Showing ".concat(t, " to ").concat(e, " of ").concat(i, " rows"); + }, + formatSRPaginationPreText: function () { + return "previous page"; + }, + formatSRPaginationPageText: function (t) { + return "to page ".concat(t); + }, + formatSRPaginationNextText: function () { + return "next page"; + }, + formatDetailPagination: function (t) { + return "Showing ".concat(t, " rows"); + }, + formatSearch: function () { + return "Search"; + }, + formatClearSearch: function () { + return "Clear Search"; + }, + formatNoMatches: function () { + return "No matching records found"; + }, + formatPaginationSwitch: function () { + return "Hide/Show pagination"; + }, + formatPaginationSwitchDown: function () { + return "Show pagination"; + }, + formatPaginationSwitchUp: function () { + return "Hide pagination"; + }, + formatRefresh: function () { + return "Refresh"; + }, + formatToggleOn: function () { + return "Show card view"; + }, + formatToggleOff: function () { + return "Hide card view"; + }, + formatColumns: function () { + return "Columns"; + }, + formatColumnsToggleAll: function () { + return "Toggle all"; + }, + formatFullscreen: function () { + return "Fullscreen"; + }, + formatAllRows: function () { + return "All"; + }, + }, + Qw = { + align: void 0, + cardVisible: !0, + cellStyle: void 0, + checkbox: !1, + checkboxEnabled: !0, + class: void 0, + clickToSelect: !0, + colspan: void 0, + detailFormatter: void 0, + escape: void 0, + events: void 0, + falign: void 0, + field: void 0, + footerFormatter: void 0, + footerStyle: void 0, + formatter: void 0, + halign: void 0, + order: "asc", + radio: !1, + rowspan: void 0, + searchable: !0, + searchFormatter: !0, + searchHighlightFormatter: !1, + showSelectTitle: !1, + sortable: !1, + sorter: void 0, + sortName: void 0, + switchable: !0, + switchableLabel: void 0, + title: void 0, + titleTooltip: void 0, + valign: void 0, + visible: !0, + width: void 0, + widthUnit: "px", + }; + Object.assign(Jw, Yw); + var Xw = { + COLUMN_DEFAULTS: Qw, + CONSTANTS: Kw, + DEFAULTS: Jw, + EVENTS: { + "all.bs.table": "onAll", + "check-all.bs.table": "onCheckAll", + "check-some.bs.table": "onCheckSome", + "check.bs.table": "onCheck", + "click-cell.bs.table": "onClickCell", + "click-row.bs.table": "onClickRow", + "collapse-row.bs.table": "onCollapseRow", + "column-switch-all.bs.table": "onColumnSwitchAll", + "column-switch.bs.table": "onColumnSwitch", + "dbl-click-cell.bs.table": "onDblClickCell", + "dbl-click-row.bs.table": "onDblClickRow", + "expand-row.bs.table": "onExpandRow", + "load-error.bs.table": "onLoadError", + "load-success.bs.table": "onLoadSuccess", + "page-change.bs.table": "onPageChange", + "post-body.bs.table": "onPostBody", + "post-footer.bs.table": "onPostFooter", + "post-header.bs.table": "onPostHeader", + "pre-body.bs.table": "onPreBody", + "refresh-options.bs.table": "onRefreshOptions", + "refresh.bs.table": "onRefresh", + "reset-view.bs.table": "onResetView", + "scroll-body.bs.table": "onScrollBody", + "search.bs.table": "onSearch", + "sort.bs.table": "onSort", + "toggle-pagination.bs.table": "onTogglePagination", + "toggle.bs.table": "onToggle", + "uncheck-all.bs.table": "onUncheckAll", + "uncheck-some.bs.table": "onUncheckSome", + "uncheck.bs.table": "onUncheck", + "virtual-scroll.bs.table": "onVirtualScroll", + }, + LOCALES: { en: Yw, "en-US": Yw }, + METHODS: [ + "getOptions", + "refreshOptions", + "getData", + "getSelections", + "load", + "append", + "prepend", + "remove", + "removeAll", + "insertRow", + "updateRow", + "getRowByUniqueId", + "updateByUniqueId", + "removeByUniqueId", + "updateCell", + "updateCellByUniqueId", + "showRow", + "hideRow", + "getHiddenRows", + "showColumn", + "hideColumn", + "getVisibleColumns", + "getHiddenColumns", + "showAllColumns", + "hideAllColumns", + "mergeCells", + "checkAll", + "uncheckAll", + "checkInvert", + "check", + "uncheck", + "checkBy", + "uncheckBy", + "refresh", + "destroy", + "resetView", + "showLoading", + "hideLoading", + "togglePagination", + "toggleFullscreen", + "toggleView", + "resetSearch", + "filterBy", + "sortBy", + "sortReset", + "scrollTo", + "getScrollPosition", + "selectPage", + "prevPage", + "nextPage", + "toggleDetailView", + "expandRow", + "collapseRow", + "expandRowByUniqueId", + "collapseRowByUniqueId", + "expandAllRows", + "collapseAllRows", + "updateColumnTitle", + "updateFormatText", + ], + THEME: "bootstrap".concat(Gw), + VERSION: "1.23.4", + }, + Zw = (function () { + return n( + function t(e) { + var n = this; + (i(this, t), + (this.rows = e.rows), + (this.scrollEl = e.scrollEl), + (this.contentEl = e.contentEl), + (this.callback = e.callback), + (this.itemHeight = e.itemHeight), + (this.cache = {}), + (this.scrollTop = this.scrollEl.scrollTop), + this.initDOM(this.rows, e.fixedScroll), + (this.scrollEl.scrollTop = this.scrollTop), + (this.lastCluster = 0)); + var o = function () { + n.lastCluster !== (n.lastCluster = n.getNum()) && + (n.initDOM(n.rows), n.callback(n.startIndex, n.endIndex)); + }; + (this.scrollEl.addEventListener("scroll", o, !1), + (this.destroy = function () { + ((n.contentEl.innerHtml = ""), + n.scrollEl.removeEventListener("scroll", o, !1)); + })); + }, + [ + { + key: "initDOM", + value: function (t, e) { + void 0 === this.clusterHeight + ? ((this.cache.scrollTop = this.scrollEl.scrollTop), + (this.cache.data = this.contentEl.innerHTML = + t[0] + t[0] + t[0]), + this.getRowsHeight(t)) + : 0 === this.blockHeight && this.getRowsHeight(t); + var i = this.initData(t, this.getNum(e)), + n = i.rows.join(""), + o = this.checkChanges("data", n), + r = this.checkChanges("top", i.topOffset), + a = this.checkChanges("bottom", i.bottomOffset), + s = []; + o && r + ? (i.topOffset && s.push(this.getExtra("top", i.topOffset)), + s.push(n), + i.bottomOffset && + s.push(this.getExtra("bottom", i.bottomOffset)), + (this.startIndex = i.start), + (this.endIndex = i.end), + (this.contentEl.innerHTML = s.join("")), + e && (this.contentEl.scrollTop = this.cache.scrollTop)) + : a && + (this.contentEl.lastChild.style.height = "".concat( + i.bottomOffset, + "px", + )); + }, + }, + { + key: "getRowsHeight", + value: function () { + if (void 0 === this.itemHeight || 0 === this.itemHeight) { + var t = this.contentEl.children, + e = t[Math.floor(t.length / 2)]; + this.itemHeight = e.offsetHeight; + } + ((this.blockHeight = 50 * this.itemHeight), + (this.clusterRows = 200), + (this.clusterHeight = 4 * this.blockHeight)); + }, + }, + { + key: "getNum", + value: function (t) { + return ( + (this.scrollTop = t + ? this.cache.scrollTop + : this.scrollEl.scrollTop), + Math.floor( + this.scrollTop / (this.clusterHeight - this.blockHeight), + ) || 0 + ); + }, + }, + { + key: "initData", + value: function (t, e) { + if (t.length < 50) + return { topOffset: 0, bottomOffset: 0, rowsAbove: 0, rows: t }; + var i = Math.max((this.clusterRows - 50) * e, 0), + n = i + this.clusterRows, + o = Math.max(i * this.itemHeight, 0), + r = Math.max((t.length - n) * this.itemHeight, 0), + a = [], + s = i; + o < 1 && s++; + for (var l = i; l < n; l++) t[l] && a.push(t[l]); + return { + start: i, + end: n, + topOffset: o, + bottomOffset: r, + rowsAbove: s, + rows: a, + }; + }, + }, + { + key: "checkChanges", + value: function (t, e) { + var i = e !== this.cache[t]; + return ((this.cache[t] = e), i); + }, + }, + { + key: "getExtra", + value: function (t, e) { + var i = document.createElement("tr"); + return ( + (i.className = "virtual-scroll-".concat(t)), + e && (i.style.height = "".concat(e, "px")), + i.outerHTML + ); + }, + }, + ], + ); + })(), + tS = (function () { + function e(n, o) { + (i(this, e), + (this.options = o), + (this.$el = t(n)), + (this.$el_ = this.$el.clone()), + (this.timeoutId_ = 0), + (this.timeoutFooter_ = 0)); + } + return n(e, [ + { + key: "init", + value: function () { + (this.initConstants(), + this.initLocale(), + this.initContainer(), + this.initTable(), + this.initHeader(), + this.initData(), + this.initHiddenRows(), + this.initToolbar(), + this.initPagination(), + this.initBody(), + this.initSearchText(), + this.initServer()); + }, + }, + { + key: "initConstants", + value: function () { + var e = this.options; + ((this.constants = Xw.CONSTANTS), + (this.constants.theme = t.fn.bootstrapTable.theme), + (this.constants.dataToggle = + this.constants.html.dataToggle || "data-toggle")); + var i = Ww.getIconsPrefix(t.fn.bootstrapTable.theme); + ("string" == typeof e.icons && + (e.icons = Ww.calculateObjectValue(null, e.icons)), + (e.iconsPrefix = + e.iconsPrefix || t.fn.bootstrapTable.defaults.iconsPrefix || i), + (e.icons = Object.assign( + Ww.getIcons(e.iconsPrefix), + t.fn.bootstrapTable.defaults.icons, + e.icons, + ))); + var n = e.buttonsPrefix ? "".concat(e.buttonsPrefix, "-") : ""; + ((this.constants.buttonsClass = [ + e.buttonsPrefix, + n + e.buttonsClass, + Ww.sprintf("".concat(n, "%s"), e.iconSize), + ] + .join(" ") + .trim()), + (this.buttons = Ww.calculateObjectValue(this, e.buttons, [], {})), + "object" !== u(this.buttons) && (this.buttons = {})); + }, + }, + { + key: "initLocale", + value: function () { + if (this.options.locale) { + var i = t.fn.bootstrapTable.locales, + n = this.options.locale.split(/-|_/); + ((n[0] = n[0].toLowerCase()), + n[1] && (n[1] = n[1].toUpperCase())); + var o = {}; + (i[this.options.locale] + ? (o = i[this.options.locale]) + : i[n.join("-")] + ? (o = i[n.join("-")]) + : i[n[0]] && (o = i[n[0]]), + (this._defaultLocales = this._defaultLocales || {})); + for (var r = 0, a = Object.entries(o); r < a.length; r++) { + var s = l(a[r], 2), + c = s[0], + h = s[1], + u = this._defaultLocales.hasOwnProperty(c) + ? this._defaultLocales[c] + : e.DEFAULTS[c]; + this.options[c] === u && + ((this.options[c] = h), (this._defaultLocales[c] = h)); + } + } + }, + }, + { + key: "initContainer", + value: function () { + var e = ["top", "both"].includes(this.options.paginationVAlign) + ? '
    ' + : "", + i = ["bottom", "both"].includes(this.options.paginationVAlign) + ? '
    ' + : "", + n = Ww.calculateObjectValue( + this.options, + this.options.loadingTemplate, + [this.options.formatLoadingMessage()], + ); + ((this.$container = t( + '\n
    \n
    \n ', + ) + .concat( + e, + '\n
    \n
    \n
    \n
    \n ', + ) + .concat( + n, + '\n
    \n
    \n \n
    \n ', + ) + .concat(i, "\n
    \n "), + )), + this.$container.insertAfter(this.$el), + (this.$tableContainer = this.$container.find( + ".fixed-table-container", + )), + (this.$tableHeader = this.$container.find(".fixed-table-header")), + (this.$tableBody = this.$container.find(".fixed-table-body")), + (this.$tableLoading = this.$container.find( + ".fixed-table-loading", + )), + (this.$tableFooter = this.$el.find("tfoot")), + this.options.buttonsToolbar + ? (this.$toolbar = t("body").find(this.options.buttonsToolbar)) + : (this.$toolbar = this.$container.find( + ".fixed-table-toolbar", + )), + (this.$pagination = this.$container.find( + ".fixed-table-pagination", + )), + this.$tableBody.append(this.$el), + this.$container.after('
    '), + this.$el.addClass(this.options.classes), + this.$tableLoading.addClass(this.options.classes), + this.options.height && + (this.$tableContainer.addClass("fixed-height"), + this.options.showFooter && + this.$tableContainer.addClass("has-footer"), + this.options.classes.split(" ").includes("table-bordered") && + (this.$tableBody.append( + '
    ', + ), + (this.$tableBorder = this.$tableBody.find( + ".fixed-table-border", + )), + this.$tableLoading.addClass("fixed-table-border")), + (this.$tableFooter = this.$container.find( + ".fixed-table-footer", + )))); + }, + }, + { + key: "initTable", + value: function () { + var i = this, + n = []; + if ( + ((this.$header = this.$el.find(">thead")), + this.$header.length + ? this.options.theadClasses && + this.$header.addClass(this.options.theadClasses) + : (this.$header = t( + '', + ), + ).appendTo(this.$el)), + (this._headerTrClasses = []), + (this._headerTrStyles = []), + this.$header.find("tr").each(function (e, o) { + var r = t(o), + a = []; + (r.find("th").each(function (e, i) { + var n = t(i); + void 0 !== n.data("field") && + n.data("field", "".concat(n.data("field"))); + var o = Object.assign({}, n.data()); + for (var r in o) + t.fn.bootstrapTable.columnDefaults.hasOwnProperty(r) && + delete o[r]; + a.push( + Ww.extend( + {}, + { + _data: Ww.getRealDataAttr(o), + title: n.html(), + class: n.attr("class"), + titleTooltip: n.attr("title"), + rowspan: n.attr("rowspan") + ? +n.attr("rowspan") + : void 0, + colspan: n.attr("colspan") + ? +n.attr("colspan") + : void 0, + }, + n.data(), + ), + ); + }), + n.push(a), + r.attr("class") && i._headerTrClasses.push(r.attr("class")), + r.attr("style") && i._headerTrStyles.push(r.attr("style"))); + }), + Array.isArray(this.options.columns[0]) || + (this.options.columns = [this.options.columns]), + (this.options.columns = Ww.extend( + !0, + [], + n, + this.options.columns, + )), + (this.columns = []), + (this.fieldsColumnsIndex = []), + Ww.setFieldIndex(this.options.columns), + this.options.columns.forEach(function (t, n) { + t.forEach(function (t, o) { + var r = Ww.extend({}, e.COLUMN_DEFAULTS, t, { passed: t }); + (void 0 !== r.fieldIndex && + ((i.columns[r.fieldIndex] = r), + (i.fieldsColumnsIndex[r.field] = r.fieldIndex)), + (i.options.columns[n][o] = r)); + }); + }), + !this.options.data.length) + ) { + var o = Ww.trToData(this.columns, this.$el.find(">tbody>tr")); + o.length && ((this.options.data = o), (this.fromHtml = !0)); + } + ((this.options.pagination && + "server" !== this.options.sidePagination) || + (this.footerData = Ww.trToData( + this.columns, + this.$el.find(">tfoot>tr"), + )), + this.footerData && this.$el.find("tfoot").html(""), + !this.options.showFooter || this.options.cardView + ? this.$tableFooter.hide() + : this.$tableFooter.show()); + }, + }, + { + key: "initHeader", + value: function () { + var e = this, + i = {}, + n = []; + ((this.header = { + fields: [], + styles: [], + classes: [], + formatters: [], + detailFormatters: [], + events: [], + sorters: [], + sortNames: [], + cellStyles: [], + searchables: [], + }), + Ww.updateFieldGroup(this.options.columns, this.columns), + this.options.columns.forEach(function (t, o) { + var r = []; + r.push( + "", + ), + ); + var a = ""; + if (0 === o && Ww.hasDetailViewIcon(e.options)) { + var s = + e.options.columns.length > 1 + ? ' rowspan="'.concat(e.options.columns.length, '"') + : ""; + a = '\n
    \n ', + ); + } + (a && "right" !== e.options.detailViewAlign && r.push(a), + t.forEach(function (t, n) { + var a = Ww.sprintf(' class="%s"', t.class), + s = t.widthUnit, + c = parseFloat(t.width), + h = t.halign ? t.halign : t.align, + f = Ww.sprintf("text-align: %s; ", h), + d = Ww.sprintf("text-align: %s; ", t.align), + p = Ww.sprintf("vertical-align: %s; ", t.valign); + if ( + ((p += Ww.sprintf( + "width: %s; ", + (!t.checkbox && !t.radio) || c + ? c + ? c + s + : void 0 + : t.showSelectTitle + ? void 0 + : "36px", + )), + void 0 !== t.fieldIndex || t.visible) + ) { + var g = Ww.calculateObjectValue( + null, + e.options.headerStyle, + [t], + ), + v = [], + b = [], + m = ""; + if (g && g.css) + for ( + var y = 0, w = Object.entries(g.css); + y < w.length; + y++ + ) { + var S = l(w[y], 2), + x = S[0], + k = S[1]; + v.push("".concat(x, ": ").concat(k)); + } + if ( + (g && + g.classes && + (m = Ww.sprintf( + ' class="%s"', + t.class + ? [t.class, g.classes].join(" ") + : g.classes, + )), + void 0 !== t.fieldIndex) + ) { + if ( + ((e.header.fields[t.fieldIndex] = t.field), + (e.header.styles[t.fieldIndex] = d + p), + (e.header.classes[t.fieldIndex] = a), + (e.header.formatters[t.fieldIndex] = t.formatter), + (e.header.detailFormatters[t.fieldIndex] = + t.detailFormatter), + (e.header.events[t.fieldIndex] = t.events), + (e.header.sorters[t.fieldIndex] = t.sorter), + (e.header.sortNames[t.fieldIndex] = t.sortName), + (e.header.cellStyles[t.fieldIndex] = t.cellStyle), + (e.header.searchables[t.fieldIndex] = t.searchable), + !t.visible) + ) + return; + if (e.options.cardView && !t.cardVisible) return; + i[t.field] = t; + } + if (Object.keys(t._data || {}).length > 0) + for ( + var O = 0, P = Object.entries(t._data); + O < P.length; + O++ + ) { + var T = l(P[O], 2), + C = T[0], + A = T[1]; + b.push( + "data-" + .concat(C, "='") + .concat( + "object" === u(A) ? JSON.stringify(A) : A, + "'", + ), + ); + } + (r.push( + " 0 ? " data-not-first-th" : "", + b.length > 0 ? b.join(" ") : "", + ">", + ), + r.push( + Ww.sprintf( + '
    ', + e.options.sortable && t.sortable + ? "sortable".concat( + "center" === h ? " sortable-center" : "", + " both", + ) + : "", + ), + )); + var I = + e.options.escape && e.options.escapeTitle + ? Ww.escapeHTML(t.title) + : t.title, + R = I; + (t.checkbox && + ((I = ""), + !e.options.singleSelect && + e.options.checkboxHeader && + (I = + ''), + (e.header.stateField = t.field)), + t.radio && ((I = ""), (e.header.stateField = t.field)), + !I && t.showSelectTitle && (I += R), + r.push(I), + r.push("
    "), + r.push('
    '), + r.push("
    "), + r.push("")); + } + }), + a && "right" === e.options.detailViewAlign && r.push(a), + r.push(""), + r.length > 3 && n.push(r.join(""))); + }), + this.$header.html(n.join("")), + this.$header.find("th[data-field]").each(function (e, n) { + t(n).data(i[t(n).data("field")]); + }), + this.$container + .off("click", ".th-inner") + .on("click", ".th-inner", function (i) { + var n = t(i.currentTarget); + if ( + e.options.detailView && + !n.parent().hasClass("bs-checkbox") && + n.closest(".bootstrap-table")[0] !== e.$container[0] + ) + return !1; + e.options.sortable && + n.parent().data().sortable && + e.onSort(i); + })); + var o = Ww.getEventName( + "resize.bootstrap-table", + this.$el.attr("id"), + ); + (t(window).off(o), + !this.options.showHeader || this.options.cardView + ? (this.$header.hide(), + this.$tableHeader.hide(), + this.$tableLoading.css("top", 0)) + : (this.$header.show(), + this.$tableHeader.show(), + this.$tableLoading.css("top", this.$header.outerHeight() + 1), + this.getCaret(), + t(window).on(o, function () { + return e.resetView(); + })), + (this.$selectAll = this.$header.find('[name="btSelectAll"]')), + this.$selectAll.off("click").on("click", function (i) { + i.stopPropagation(); + var n = t(i.currentTarget).prop("checked"); + (e[n ? "checkAll" : "uncheckAll"](), e.updateSelected()); + })); + }, + }, + { + key: "initData", + value: function (t, e) { + ("append" === e + ? (this.options.data = this.options.data.concat(t)) + : "prepend" === e + ? (this.options.data = [].concat(t).concat(this.options.data)) + : ((t = t || Ww.deepCopy(this.options.data)), + (this.options.data = Array.isArray(t) + ? t + : t[this.options.dataField])), + (this.data = c(this.options.data)), + this.options.sortReset && (this.unsortedData = c(this.data)), + "server" !== this.options.sidePagination && this.initSort()); + }, + }, + { + key: "initSort", + value: function () { + var t = this, + e = this.options.sortName, + i = "desc" === this.options.sortOrder ? -1 : 1, + n = this.header.fields.indexOf(this.options.sortName), + o = 0; + -1 !== n + ? (this.options.sortStable && + this.data.forEach(function (t, e) { + t.hasOwnProperty("_position") || (t._position = e); + }), + this.options.customSort + ? Ww.calculateObjectValue( + this.options, + this.options.customSort, + [ + this.options.sortName, + this.options.sortOrder, + this.data, + ], + ) + : this.data.sort(function (o, r) { + t.header.sortNames[n] && (e = t.header.sortNames[n]); + var a = Ww.getItemField(o, e, t.options.escape), + s = Ww.getItemField(r, e, t.options.escape), + l = Ww.calculateObjectValue( + t.header, + t.header.sorters[n], + [a, s, o, r], + ); + return void 0 !== l + ? t.options.sortStable && 0 === l + ? i * (o._position - r._position) + : i * l + : Ww.sort(a, s, i, t.options, o._position, r._position); + }), + void 0 !== this.options.sortClass && + (clearTimeout(o), + (o = setTimeout(function () { + t.$el.removeClass(t.options.sortClass); + var e = t.$header + .find('[data-field="'.concat(t.options.sortName, '"]')) + .index(); + t.$el + .find("tr td:nth-child(".concat(e + 1, ")")) + .addClass(t.options.sortClass); + }, 250)))) + : this.options.sortReset && (this.data = c(this.unsortedData)); + }, + }, + { + key: "sortReset", + value: function () { + ((this.options.sortName = void 0), + (this.options.sortOrder = void 0), + this._sort()); + }, + }, + { + key: "sortBy", + value: function (t) { + ((this.options.sortName = t.field), + (this.options.sortOrder = t.hasOwnProperty("sortOrder") + ? t.sortOrder + : "asc"), + this._sort()); + }, + }, + { + key: "onSort", + value: function (e) { + var i = e.type, + n = e.currentTarget, + o = "keypress" === i ? t(n) : t(n).parent(), + r = this.$header.find("th").eq(o.index()); + if ( + (this.$header.add(this.$header_).find("span.order").remove(), + this.options.sortName === o.data("field")) + ) { + var a = this.options.sortOrder, + s = + this.columns[this.fieldsColumnsIndex[o.data("field")]] + .sortOrder || + this.columns[this.fieldsColumnsIndex[o.data("field")]].order; + (void 0 === a + ? (this.options.sortOrder = "asc") + : "asc" === a + ? (this.options.sortOrder = this.options.sortReset + ? "asc" === s + ? "desc" + : void 0 + : "desc") + : "desc" === this.options.sortOrder && + (this.options.sortOrder = this.options.sortReset + ? "desc" === s + ? "asc" + : void 0 + : "asc"), + void 0 === this.options.sortOrder && + (this.options.sortName = void 0)); + } else + ((this.options.sortName = o.data("field")), + this.options.rememberOrder + ? (this.options.sortOrder = + "asc" === o.data("order") ? "desc" : "asc") + : (this.options.sortOrder = + this.columns[this.fieldsColumnsIndex[o.data("field")]] + .sortOrder || + this.columns[this.fieldsColumnsIndex[o.data("field")]] + .order)); + (o.add(r).data("order", this.options.sortOrder), + this.getCaret(), + this._sort()); + }, + }, + { + key: "_sort", + value: function () { + if ( + "server" === this.options.sidePagination && + this.options.serverSort + ) + return ( + (this.options.pageNumber = 1), + this.trigger( + "sort", + this.options.sortName, + this.options.sortOrder, + ), + void this.initServer(this.options.silentSort) + ); + (this.options.pagination && + this.options.sortResetPage && + ((this.options.pageNumber = 1), this.initPagination()), + this.trigger( + "sort", + this.options.sortName, + this.options.sortOrder, + ), + this.initSort(), + this.initBody()); + }, + }, + { + key: "initToolbar", + value: function () { + var e, + i = this, + n = this.options, + r = [], + a = 0, + s = 0; + (this.$toolbar.find(".bs-bars").children().length && + t("body").append(t(n.toolbar)), + this.$toolbar.html(""), + ("string" != typeof n.toolbar && "object" !== u(n.toolbar)) || + t( + Ww.sprintf( + '
    ', + this.constants.classes.pull, + n.toolbarAlign, + ), + ) + .appendTo(this.$toolbar) + .append(t(n.toolbar)), + (r = [ + '
    ', + ), + ]), + "string" == typeof n.buttonsOrder && + (n.buttonsOrder = n.buttonsOrder + .replace(/\[|\]| |'/g, "") + .split(",")), + (this.buttons = Object.assign(this.buttons, { + paginationSwitch: { + text: n.pagination + ? n.formatPaginationSwitchUp() + : n.formatPaginationSwitchDown(), + icon: n.pagination + ? n.icons.paginationSwitchDown + : n.icons.paginationSwitchUp, + render: !1, + event: this.togglePagination, + attributes: { + "aria-label": n.formatPaginationSwitch(), + title: n.formatPaginationSwitch(), + }, + }, + refresh: { + text: n.formatRefresh(), + icon: n.icons.refresh, + render: !1, + event: this.refresh, + attributes: { + "aria-label": n.formatRefresh(), + title: n.formatRefresh(), + }, + }, + toggle: { + text: n.formatToggleOn(), + icon: n.icons.toggleOff, + render: !1, + event: this.toggleView, + attributes: { + "aria-label": n.formatToggleOn(), + title: n.formatToggleOn(), + }, + }, + fullscreen: { + text: n.formatFullscreen(), + icon: n.icons.fullscreen, + render: !1, + event: this.toggleFullscreen, + attributes: { + "aria-label": n.formatFullscreen(), + title: n.formatFullscreen(), + }, + }, + columns: { + render: !1, + html: function () { + var t = []; + if ( + (t.push( + '
    \n \n ", + ) + .concat(i.constants.html.toolbarDropdown[0]), + ), + n.showColumnsSearch && + (t.push( + Ww.sprintf( + i.constants.html.toolbarDropdownItem, + Ww.sprintf( + '', + i.constants.classes.input, + n.formatSearch(), + ), + ), + ), + t.push(i.constants.html.toolbarDropdownSeparator)), + n.showColumnsToggleAll) + ) { + var e = + i.getVisibleColumns().length === + i.columns.filter(function (t) { + return !i.isSelectionColumn(t); + }).length; + (t.push( + Ww.sprintf( + i.constants.html.toolbarDropdownItem, + Ww.sprintf( + ' %s', + e ? 'checked="checked"' : "", + n.formatColumnsToggleAll(), + ), + ), + ), + t.push(i.constants.html.toolbarDropdownSeparator)); + } + var o = 0; + return ( + i.columns.forEach(function (t) { + t.visible && o++; + }), + i.columns.forEach(function (e, r) { + if ( + !i.isSelectionColumn(e) && + (!n.cardView || e.cardVisible) + ) { + var a = e.visible ? ' checked="checked"' : "", + l = + o <= n.minimumCountColumns && a + ? ' disabled="disabled"' + : ""; + e.switchable && + (t.push( + Ww.sprintf( + i.constants.html.toolbarDropdownItem, + Ww.sprintf( + ' %s', + e.field, + r, + a, + l, + e.switchableLabel || e.title, + ), + ), + ), + s++); + } + }), + t.push(i.constants.html.toolbarDropdown[1], "
    "), + t.join("") + ); + }, + }, + }))); + for ( + var c = {}, h = 0, f = Object.entries(this.buttons); + h < f.length; + h++ + ) { + var d = l(f[h], 2), + p = d[0], + g = d[1], + v = void 0; + if (g.hasOwnProperty("html")) + "function" == typeof g.html + ? (v = g.html()) + : "string" == typeof g.html && (v = g.html); + else { + var b = this.constants.buttonsClass; + if ( + (g.hasOwnProperty("attributes") && + g.attributes.class && + (b += " ".concat(g.attributes.class)), + (v = '\n ", + ) + .concat(this.constants.html.pageDropdown[0]), + ]; + (f.forEach(function (i, n) { + var o; + (!e.smartDisplay || + 0 === n || + f[n - 1] < e.totalRows || + i === e.formatAllRows()) && + ((o = h + ? i === e.formatAllRows() + ? t.constants.classes.dropdownActive + : "" + : i === e.pageSize + ? t.constants.classes.dropdownActive + : ""), + g.push( + Ww.sprintf(t.constants.html.pageDropdownItem, o, i), + )); + }), + g.push( + "".concat(this.constants.html.pageDropdown[1], "
    "), + ), + c.push(e.formatRecordsPerPage(g.join("")))); + } + if ( + ((this.paginationParts.includes("pageInfo") || + this.paginationParts.includes("pageInfoShort") || + this.paginationParts.includes("pageSize")) && + c.push("
    "), + this.paginationParts.includes("pageList")) + ) { + (c.push( + '
    '), + Ww.sprintf( + this.constants.html.pagination[0], + Ww.sprintf(" pagination-%s", e.iconSize), + ), + Ww.sprintf( + this.constants.html.paginationItem, + " page-pre", + e.formatSRPaginationPreText(), + e.paginationPreText, + ), + ), + this.totalPages < e.paginationSuccessivelySize + ? ((n = 1), (o = this.totalPages)) + : (o = + (n = e.pageNumber - e.paginationPagesBySide) + + 2 * e.paginationPagesBySide), + e.pageNumber < e.paginationSuccessivelySize - 1 && + (o = e.paginationSuccessivelySize), + e.paginationSuccessivelySize > this.totalPages - n && + (n = + n - + (e.paginationSuccessivelySize - (this.totalPages - n)) + + 1), + n < 1 && (n = 1), + o > this.totalPages && (o = this.totalPages)); + var v = Math.round(e.paginationPagesBySide / 2), + b = function (i) { + var n = + arguments.length > 1 && void 0 !== arguments[1] + ? arguments[1] + : ""; + return Ww.sprintf( + t.constants.html.paginationItem, + n + + (i === e.pageNumber + ? " ".concat(t.constants.classes.paginationActive) + : ""), + e.formatSRPaginationPageText(i), + i, + ); + }; + if (n > 1) { + var m = e.paginationPagesBySide; + for (m >= n && (m = n - 1), i = 1; i <= m; i++) c.push(b(i)); + n - 1 === m + 1 + ? ((i = n - 1), c.push(b(i))) + : n - 1 > m && + (n - 2 * e.paginationPagesBySide > + e.paginationPagesBySide && e.paginationUseIntermediate + ? ((i = Math.round((n - v) / 2 + v)), + c.push(b(i, " page-intermediate"))) + : c.push( + Ww.sprintf( + this.constants.html.paginationItem, + " page-first-separator disabled", + "", + "...", + ), + )); + } + for (i = n; i <= o; i++) c.push(b(i)); + if (this.totalPages > o) { + var y = this.totalPages - (e.paginationPagesBySide - 1); + for ( + o >= y && (y = o + 1), + o + 1 === y - 1 + ? ((i = o + 1), c.push(b(i))) + : y > o + 1 && + (this.totalPages - o > 2 * e.paginationPagesBySide && + e.paginationUseIntermediate + ? ((i = Math.round( + (this.totalPages - v - o) / 2 + o, + )), + c.push(b(i, " page-intermediate"))) + : c.push( + Ww.sprintf( + this.constants.html.paginationItem, + " page-last-separator disabled", + "", + "...", + ), + )), + i = y; + i <= this.totalPages; + i++ + ) + c.push(b(i)); + } + (c.push( + Ww.sprintf( + this.constants.html.paginationItem, + " page-next", + e.formatSRPaginationNextText(), + e.paginationNextText, + ), + ), + c.push(this.constants.html.pagination[1], "
    ")); + } + this.$pagination.html(c.join("")); + var w = ["bottom", "both"].includes(e.paginationVAlign) + ? " ".concat(this.constants.classes.dropup) + : ""; + (this.$pagination.last().find(".page-list > div").addClass(w), + e.onlyInfoPagination || + ((r = this.$pagination.find(".page-list a")), + (a = this.$pagination.find(".page-pre")), + (s = this.$pagination.find(".page-next")), + (l = this.$pagination + .find(".page-item") + .not( + ".page-next, .page-pre, .page-last-separator, .page-first-separator", + )), + this.totalPages <= 1 && + this.$pagination.find("div.pagination").hide(), + e.smartDisplay && + (f.length < 2 || e.totalRows <= f[0]) && + this.$pagination.find("div.page-list").hide(), + this.$pagination[this.getData().length ? "show" : "hide"](), + e.paginationLoop || + (1 === e.pageNumber && a.addClass("disabled"), + e.pageNumber === this.totalPages && s.addClass("disabled")), + h && (e.pageSize = e.formatAllRows()), + r.off("click").on("click", function (e) { + return t.onPageListChange(e); + }), + a.off("click").on("click", function (e) { + return t.onPagePre(e); + }), + s.off("click").on("click", function (e) { + return t.onPageNext(e); + }), + l.off("click").on("click", function (e) { + return t.onPageNumber(e); + }))); + } else this.$pagination.hide(); + }, + }, + { + key: "updatePagination", + value: function (e) { + (e && t(e.currentTarget).hasClass("disabled")) || + (this.options.maintainMetaData || this.resetRows(), + this.initPagination(), + this.trigger( + "page-change", + this.options.pageNumber, + this.options.pageSize, + ), + "server" === this.options.sidePagination || + ("client" === this.options.sidePagination && + this.options.paginationLoadMore && + !this._paginationLoaded && + this.options.pageNumber === this.totalPages) + ? this.initServer() + : this.initBody()); + }, + }, + { + key: "onPageListChange", + value: function (e) { + e.preventDefault(); + var i = t(e.currentTarget); + return ( + i + .parent() + .addClass(this.constants.classes.dropdownActive) + .siblings() + .removeClass(this.constants.classes.dropdownActive), + (this.options.pageSize = + i.text().toUpperCase() === + this.options.formatAllRows().toUpperCase() + ? this.options.formatAllRows() + : +i.text()), + this.$toolbar.find(".page-size").text(this.options.pageSize), + this.updatePagination(e), + !1 + ); + }, + }, + { + key: "onPagePre", + value: function (e) { + if (!t(e.target).hasClass("disabled")) + return ( + e.preventDefault(), + this.options.pageNumber - 1 == 0 + ? (this.options.pageNumber = this.options.totalPages) + : this.options.pageNumber--, + this.updatePagination(e), + !1 + ); + }, + }, + { + key: "onPageNext", + value: function (e) { + if (!t(e.target).hasClass("disabled")) + return ( + e.preventDefault(), + this.options.pageNumber + 1 > this.options.totalPages + ? (this.options.pageNumber = 1) + : this.options.pageNumber++, + this.updatePagination(e), + !1 + ); + }, + }, + { + key: "onPageNumber", + value: function (e) { + if ( + (e.preventDefault(), + this.options.pageNumber !== +t(e.currentTarget).text()) + ) + return ( + (this.options.pageNumber = +t(e.currentTarget).text()), + this.updatePagination(e), + !1 + ); + }, + }, + { + key: "initRow", + value: function (e, i, n, o) { + var r = this; + if (!(Ww.findIndex(this.hiddenRows, e) > -1)) { + var a = Ww.calculateObjectValue( + this.options, + this.options.rowStyle, + [e, i], + {}, + ), + h = Ww.calculateObjectValue( + this.options, + this.options.rowAttributes, + [e, i], + {}, + ), + f = {}; + if (e._data && !Ww.isEmptyObject(e._data)) + for ( + var d = 0, p = Object.entries(e._data); + d < p.length; + d++ + ) { + var g = l(p[d], 2), + v = g[0], + b = g[1]; + if ("index" === v) return; + f["data-".concat(v)] = + "object" === u(b) ? JSON.stringify(b) : b; + } + var m = Ww.h( + "tr", + s( + s({}, h), + {}, + { + id: Array.isArray(e) ? void 0 : e._id, + class: + (a && a.classes) || + (Array.isArray(e) ? void 0 : e._class), + style: + (a && a.css) || (Array.isArray(e) ? void 0 : e._style), + "data-index": i, + "data-uniqueid": Ww.getItemField( + e, + this.options.uniqueId, + !1, + ), + "data-has-detail-view": + this.options.detailView && + Ww.calculateObjectValue( + null, + this.options.detailFilter, + [i, e], + ) + ? "true" + : void 0, + }, + f, + ), + ), + y = [], + w = ""; + (Ww.hasDetailViewIcon(this.options) && + ((w = Ww.h("td")), + Ww.calculateObjectValue(null, this.options.detailFilter, [ + i, + e, + ]) && + w.append( + Ww.h("a", { + class: "detail-icon", + href: "#", + html: Ww.sprintf( + this.constants.html.icon, + this.options.iconsPrefix, + this.options.icons.detailOpen, + ), + }), + )), + w && "right" !== this.options.detailViewAlign && y.push(w)); + var S = this.header.fields + .map(function (n, o) { + var a = r.columns[o], + s = Ww.getItemField(e, n, r.options.escape, a.escape), + h = "", + u = { style: [] }; + if ( + ((!r.fromHtml && !r.autoMergeCells) || + void 0 !== s || + a.checkbox || + a.radio) && + a.visible && + (!r.options.cardView || a.cardVisible) + ) { + for ( + var f = 0, + d = ["id", "class", "rowspan", "colspan", "title"]; + f < d.length; + f++ + ) { + var p = d[f]; + u[p] = p["_".concat(n, "_").concat(p)] || void 0; + } + u.style.push( + r.header.styles[o], + e["_".concat(n, "_style")], + ); + var g = Ww.calculateObjectValue( + r.header, + r.header.cellStyles[o], + [s, e, i, n], + {}, + ); + if ( + (g.classes && + ((u.class = u.class || []), u.class.push(g.classes)), + g.css && u.style.push(g.css), + (h = Ww.calculateObjectValue( + a, + r.header.formatters[o], + [s, e, i, n], + s, + )), + a.checkbox || + a.radio || + (h = null == h ? r.options.undefinedText : h), + a.searchable && + r.searchText && + r.options.searchHighlight && + !a.checkbox && + !a.radio) + ) { + var v = r.searchText.replace( + /[.*+?^${}()|[\]\\]/g, + "\\$&", + ); + if ( + r.options.searchAccentNeutralise && + "string" == typeof h + ) { + var b = new RegExp( + "".concat(Ww.normalizeAccent(v)), + "gmi", + ).exec(Ww.normalizeAccent(h)); + b && (v = h.substring(b.index, b.index + v.length)); + } + var m = Ww.replaceSearchMark(h, v); + h = Ww.calculateObjectValue( + a, + a.searchHighlightFormatter, + [h, r.searchText], + m, + ); + } + if ( + e["_".concat(n, "_data")] && + !Ww.isEmptyObject(e["_".concat(n, "_data")]) + ) + for ( + var y = 0, + w = Object.entries(e["_".concat(n, "_data")]); + y < w.length; + y++ + ) { + var S = l(w[y], 2), + x = S[0], + k = S[1]; + if ("index" === x) return; + u["data-".concat(x)] = k; + } + if (a.checkbox || a.radio) { + var O = a.checkbox ? "checkbox" : "radio", + P = + Ww.isObject(h) && h.hasOwnProperty("checked") + ? h.checked + : (!0 === h || s) && !1 !== h, + T = !a.checkboxEnabled || (h && h.disabled), + C = + r.header.formatters[o] && + ("string" == typeof h || + h instanceof Node || + h instanceof t) + ? Ww.htmlToNodes(h) + : []; + return ( + (e[r.header.stateField] = + !0 === h || !!s || (h && h.checked)), + Ww.h( + r.options.cardView ? "div" : "td", + { + class: [ + r.options.cardView ? "card-view" : "bs-checkbox", + a.class, + ], + style: r.options.cardView ? void 0 : u.style, + }, + [ + Ww.h("label", {}, [ + Ww.h("input", { + "data-index": i, + name: r.options.selectItemName, + type: O, + value: e[r.options.idField], + checked: P ? "checked" : void 0, + disabled: T ? "disabled" : void 0, + }), + Ww.h("span"), + ]), + ].concat(c(C)), + ) + ); + } + if (r.options.cardView) { + if (r.options.smartDisplay && "" === h) + return Ww.h("div", { class: "card-view" }); + var A = r.options.showHeader + ? Ww.h("span", { + class: ["card-view-title", g.classes], + style: u.style, + html: Ww.getFieldTitle(r.columns, n), + }) + : ""; + return Ww.h("div", { class: "card-view" }, [ + A, + Ww.h( + "span", + { + class: ["card-view-value", g.classes], + style: u.style, + }, + c(Ww.htmlToNodes(h)), + ), + ]); + } + return Ww.h("td", u, c(Ww.htmlToNodes(h))); + } + }) + .filter(function (t) { + return t; + }); + return ( + y.push.apply(y, c(S)), + w && "right" === this.options.detailViewAlign && y.push(w), + this.options.cardView + ? m.append( + Ww.h("td", { colspan: this.header.fields.length }, [ + Ww.h("div", { class: "card-views" }, y), + ]), + ) + : m.append.apply(m, y), + m + ); + } + }, + }, + { + key: "initBody", + value: function (e, i) { + var n = this, + o = this.getData(); + (this.trigger("pre-body", o), + (this.$body = this.$el.find(">tbody")), + this.$body.length || + (this.$body = t("").appendTo(this.$el)), + (this.options.pagination && + "server" !== this.options.sidePagination) || + ((this.pageFrom = 1), (this.pageTo = o.length))); + var r = [], + a = t(document.createDocumentFragment()), + s = !1, + l = []; + this.autoMergeCells = Ww.checkAutoMergeCells( + o.slice(this.pageFrom - 1, this.pageTo), + ); + for (var c = this.pageFrom - 1; c < this.pageTo; c++) { + var h = o[c], + u = this.initRow(h, c, o, a); + if (((s = s || !!u), u && u instanceof Node)) { + var f = this.options.uniqueId, + d = [u]; + if (f && h.hasOwnProperty(f)) { + var p = h[f], + g = this.$body + .find( + Ww.sprintf( + '> tr[data-uniqueid="%s"][data-has-detail-view]', + p, + ), + ) + .next(); + g.is("tr.detail-view") && + (l.push(c), (i && p === i) || d.push(g[0])); + } + this.options.virtualScroll + ? r.push(t("
    ").html(d).html()) + : a.append(d); + } + } + (this.$el.removeAttr("role"), + s + ? this.options.virtualScroll + ? (this.virtualScroll && this.virtualScroll.destroy(), + (this.virtualScroll = new Zw({ + rows: r, + fixedScroll: e, + scrollEl: this.$tableBody[0], + contentEl: this.$body[0], + itemHeight: this.options.virtualScrollItemHeight, + callback: function (t, e) { + (n.fitHeader(), + n.initBodyEvent(), + n.trigger("virtual-scroll", t, e)); + }, + }))) + : this.$body.html(a) + : (this.$body.html( + ''.concat( + Ww.sprintf( + '%s', + this.getVisibleFields().length + + Ww.getDetailViewIndexOffset(this.options), + this.options.formatNoMatches(), + ), + "", + ), + ), + this.$el.attr("role", "presentation")), + l.forEach(function (t) { + n.expandRow(t); + }), + e || this.scrollTo(0), + this.initBodyEvent(), + this.initFooter(), + this.resetView(), + this.updateSelected(), + "server" !== this.options.sidePagination && + (this.options.totalRows = o.length), + this.trigger("post-body", o)); + }, + }, + { + key: "initBodyEvent", + value: function () { + var e = this; + (this.$body + .find("> tr[data-index] > td") + .off("click dblclick") + .on("click dblclick", function (i) { + var n = t(i.currentTarget); + if ( + !( + n.find(".detail-icon").length || + n.index() - Ww.getDetailViewIndexOffset(e.options) < 0 + ) + ) { + var o = n.parent(), + r = t(i.target).parents(".card-views").children(), + a = t(i.target).parents(".card-view"), + s = o.data("index"), + l = e.data[s], + c = e.options.cardView ? r.index(a) : n[0].cellIndex, + h = + e.getVisibleFields()[ + c - Ww.getDetailViewIndexOffset(e.options) + ], + u = e.columns[e.fieldsColumnsIndex[h]], + f = Ww.getItemField(l, h, e.options.escape, u.escape); + if ( + (e.trigger( + "click" === i.type ? "click-cell" : "dbl-click-cell", + h, + f, + l, + n, + ), + e.trigger( + "click" === i.type ? "click-row" : "dbl-click-row", + l, + o, + h, + ), + "click" === i.type && + e.options.clickToSelect && + u.clickToSelect && + !Ww.calculateObjectValue( + e.options, + e.options.ignoreClickToSelectOn, + [i.target], + )) + ) { + var d = o.find( + Ww.sprintf('[name="%s"]', e.options.selectItemName), + ); + d.length && d[0].click(); + } + "click" === i.type && + e.options.detailViewByClick && + e.toggleDetailView( + s, + e.header.detailFormatters[e.fieldsColumnsIndex[h]], + ); + } + }) + .off("mousedown") + .on("mousedown", function (t) { + ((e.multipleSelectRowCtrlKey = t.ctrlKey || t.metaKey), + (e.multipleSelectRowShiftKey = t.shiftKey)); + }), + this.$body + .find("> tr[data-index] > td > .detail-icon") + .off("click") + .on("click", function (i) { + return ( + i.preventDefault(), + e.toggleDetailView( + t(i.currentTarget).parent().parent().data("index"), + ), + !1 + ); + }), + (this.$selectItem = this.$body.find( + Ww.sprintf('[name="%s"]', this.options.selectItemName), + )), + this.$selectItem.off("click").on("click", function (i) { + i.stopImmediatePropagation(); + var n = t(i.currentTarget); + e._toggleCheck(n.prop("checked"), n.data("index")); + }), + this.header.events.forEach(function (i, n) { + var o = i; + if (o) { + if ( + ("string" == typeof o && + (o = Ww.calculateObjectValue(null, o)), + !o) + ) + throw new Error("Unknown event in the scope: ".concat(i)); + var r = e.header.fields[n], + a = e.getVisibleFields().indexOf(r); + if (-1 !== a) { + a += Ww.getDetailViewIndexOffset(e.options); + var s = function (i) { + if (!o.hasOwnProperty(i)) return 1; + var n = o[i]; + e.$body + .find(">tr:not(.no-records-found)") + .each(function (o, s) { + var l = t(s), + c = l + .find( + e.options.cardView + ? ".card-views>.card-view" + : ">td", + ) + .eq(a), + h = i.indexOf(" "), + u = i.substring(0, h), + f = i.substring(h + 1); + c.find(f) + .off(u) + .on(u, function (t) { + var i = l.data("index"), + o = e.data[i], + a = o[r]; + n.apply(e, [t, a, o, i]); + }); + }); + }; + for (var l in o) s(l); + } + } + })); + }, + }, + { + key: "initServer", + value: function (e, i) { + var n = this, + r = {}, + a = this.header.fields.indexOf(this.options.sortName), + s = { + searchText: this.searchText, + sortName: this.options.sortName, + sortOrder: this.options.sortOrder, + }; + if ( + (this.header.sortNames[a] && + (s.sortName = this.header.sortNames[a]), + this.options.pagination && + "server" === this.options.sidePagination && + ((s.pageSize = + this.options.pageSize === this.options.formatAllRows() + ? this.options.totalRows + : this.options.pageSize), + (s.pageNumber = this.options.pageNumber)), + this.options.url || this.options.ajax) + ) { + if ( + ("limit" === this.options.queryParamsType && + ((s = { + search: s.searchText, + sort: s.sortName, + order: s.sortOrder, + }), + this.options.pagination && + "server" === this.options.sidePagination && + ((s.offset = + this.options.pageSize === this.options.formatAllRows() + ? 0 + : this.options.pageSize * + (this.options.pageNumber - 1)), + (s.limit = this.options.pageSize), + (0 !== s.limit && + this.options.pageSize !== this.options.formatAllRows()) || + delete s.limit)), + this.options.search && + "server" === this.options.sidePagination && + this.options.searchable && + this.columns.filter(function (t) { + return t.searchable; + }).length) + ) { + s.searchable = []; + var l, + c = o(this.columns); + try { + for (c.s(); !(l = c.n()).done; ) { + var h = l.value; + !h.checkbox && + h.searchable && + ((this.options.visibleSearch && h.visible) || + !this.options.visibleSearch) && + s.searchable.push(h.field); + } + } catch (t) { + c.e(t); + } finally { + c.f(); + } + } + if ( + (Ww.isEmptyObject(this.filterColumnsPartial) || + (s.filter = JSON.stringify(this.filterColumnsPartial, null)), + Ww.extend(s, i || {}), + !1 !== + (r = Ww.calculateObjectValue( + this.options, + this.options.queryParams, + [s], + r, + ))) + ) { + e || this.showLoading(); + var u = Ww.extend( + {}, + Ww.calculateObjectValue(null, this.options.ajaxOptions), + { + type: this.options.method, + url: this.options.url, + data: + "application/json" === this.options.contentType && + "post" === this.options.method + ? JSON.stringify(r) + : r, + cache: this.options.cache, + contentType: this.options.contentType, + dataType: this.options.dataType, + success: function (t, i, o) { + var r = Ww.calculateObjectValue( + n.options, + n.options.responseHandler, + [t, o], + t, + ); + ("client" === n.options.sidePagination && + n.options.paginationLoadMore && + (n._paginationLoaded = n.data.length === r.length), + n.load(r), + n.trigger("load-success", r, o && o.status, o), + e || n.hideLoading(), + "server" === n.options.sidePagination && + n.options.pageNumber > 1 && + r[n.options.totalField] > 0 && + !r[n.options.dataField].length && + n.updatePagination()); + }, + error: function (t) { + if (t && 0 === t.status && n._xhrAbort) n._xhrAbort = !1; + else { + var i = []; + ("server" === n.options.sidePagination && + (((i = {})[n.options.totalField] = 0), + (i[n.options.dataField] = [])), + n.load(i), + n.trigger("load-error", t && t.status, t), + e || n.hideLoading()); + } + }, + }, + ); + return ( + this.options.ajax + ? Ww.calculateObjectValue( + this, + this.options.ajax, + [u], + null, + ) + : (this._xhr && + 4 !== this._xhr.readyState && + ((this._xhrAbort = !0), this._xhr.abort()), + (this._xhr = t.ajax(u))), + r + ); + } + } + }, + }, + { + key: "initSearchText", + value: function () { + if ( + this.options.search && + ((this.searchText = ""), "" !== this.options.searchText) + ) { + var t = Ww.getSearchInput(this); + (t.val(this.options.searchText), + this.onSearch({ currentTarget: t, firedByInitSearchText: !0 })); + } + }, + }, + { + key: "getCaret", + value: function () { + var e = this; + this.$header.find("th").each(function (i, n) { + t(n) + .find(".sortable") + .removeClass("desc asc") + .addClass( + t(n).data("field") === e.options.sortName + ? e.options.sortOrder + : "both", + ); + }); + }, + }, + { + key: "updateSelected", + value: function () { + var e = + this.$selectItem.filter(":enabled").length && + this.$selectItem.filter(":enabled").length === + this.$selectItem.filter(":enabled").filter(":checked").length; + (this.$selectAll.add(this.$selectAll_).prop("checked", e), + this.$selectItem.each(function (e, i) { + t(i) + .closest("tr") + [ + t(i).prop("checked") ? "addClass" : "removeClass" + ]("selected"); + })); + }, + }, + { + key: "updateRows", + value: function () { + var e = this; + this.$selectItem.each(function (i, n) { + e.data[t(n).data("index")][e.header.stateField] = + t(n).prop("checked"); + }); + }, + }, + { + key: "resetRows", + value: function () { + var t, + e = o(this.data); + try { + for (e.s(); !(t = e.n()).done; ) { + var i = t.value; + (this.$selectAll.prop("checked", !1), + this.$selectItem.prop("checked", !1), + this.header.stateField && (i[this.header.stateField] = !1)); + } + } catch (t) { + e.e(t); + } finally { + e.f(); + } + this.initHiddenRows(); + }, + }, + { + key: "trigger", + value: function (i) { + for ( + var n, + o, + r = "".concat(i, ".bs.table"), + a = arguments.length, + s = new Array(a > 1 ? a - 1 : 0), + l = 1; + l < a; + l++ + ) + s[l - 1] = arguments[l]; + ((n = this.options)[e.EVENTS[r]].apply(n, [].concat(s, [this])), + this.$el.trigger(t.Event(r, { sender: this }), s), + (o = this.options).onAll.apply( + o, + [r].concat([].concat(s, [this])), + ), + this.$el.trigger(t.Event("all.bs.table", { sender: this }), [ + r, + s, + ])); + }, + }, + { + key: "resetHeader", + value: function () { + var t = this; + (clearTimeout(this.timeoutId_), + (this.timeoutId_ = setTimeout( + function () { + return t.fitHeader(); + }, + this.$el.is(":hidden") ? 100 : 0, + ))); + }, + }, + { + key: "fitHeader", + value: function () { + var e = this; + if (this.$el.is(":hidden")) + this.timeoutId_ = setTimeout(function () { + return e.fitHeader(); + }, 100); + else { + var i = this.$tableBody.get(0), + n = + this.hasScrollBar && + i.scrollHeight > i.clientHeight + this.$header.outerHeight() + ? Ww.getScrollBarWidth() + : 0; + this.$el.css("margin-top", -this.$header.outerHeight()); + var o = this.$tableHeader.find(":focus"); + if (o.length > 0) { + var r = o.parents("th"); + if (r.length > 0) { + var a = r.attr("data-field"); + if (void 0 !== a) { + var s = this.$header.find("[data-field='".concat(a, "']")); + s.length > 0 && s.find(":input").addClass("focus-temp"); + } + } + } + ((this.$header_ = this.$header.clone(!0, !0)), + (this.$selectAll_ = this.$header_.find('[name="btSelectAll"]')), + this.$tableHeader + .css("margin-right", n) + .find("table") + .css("width", this.$el.outerWidth()) + .html("") + .attr("class", this.$el.attr("class")) + .append(this.$header_), + this.$tableLoading.css("width", this.$el.outerWidth())); + var l = t(".focus-temp:visible:eq(0)"); + (l.length > 0 && + (l.focus(), + this.$header.find(".focus-temp").removeClass("focus-temp")), + this.$header.find("th[data-field]").each(function (i, n) { + e.$header_ + .find(Ww.sprintf('th[data-field="%s"]', t(n).data("field"))) + .data(t(n).data()); + })); + for ( + var c = this.getVisibleFields(), + h = this.$header_.find("th"), + u = this.$body + .find(">tr:not(.no-records-found,.virtual-scroll-top)") + .eq(0); + u.length && u.find('>td[colspan]:not([colspan="1"])').length; + ) + u = u.next(); + var f = u.find("> *").length; + (u.find("> *").each(function (i, n) { + var o = t(n); + if ( + Ww.hasDetailViewIcon(e.options) && + ((0 === i && "right" !== e.options.detailViewAlign) || + (i === f - 1 && "right" === e.options.detailViewAlign)) + ) { + var r = h.filter(".detail"), + a = r.innerWidth() - r.find(".fht-cell").width(); + r.find(".fht-cell").width(o.innerWidth() - a); + } else { + var s = i - Ww.getDetailViewIndexOffset(e.options), + l = e.$header_.find( + Ww.sprintf('th[data-field="%s"]', c[s]), + ); + l.length > 1 && (l = t(h[o[0].cellIndex])); + var u = l.innerWidth() - l.find(".fht-cell").width(); + l.find(".fht-cell").width(o.innerWidth() - u); + } + }), + this.horizontalScroll(), + this.trigger("post-header")); + } + }, + }, + { + key: "initFooter", + value: function () { + if (this.options.showFooter && !this.options.cardView) { + var t = this.getData(), + e = [], + i = ""; + (Ww.hasDetailViewIcon(this.options) && + (i = Ww.h("th", { class: "detail" }, [ + Ww.h("div", { class: "th-inner" }), + Ww.h("div", { class: "fht-cell" }), + ])), + i && "right" !== this.options.detailViewAlign && e.push(i)); + var n, + r = o(this.columns); + try { + for (r.s(); !(n = r.n()).done; ) { + var a = n.value, + l = this.footerData && this.footerData.length > 0; + if (a.visible && (!l || a.field in this.footerData[0])) { + if (this.options.cardView && !a.cardVisible) return; + var h = Ww.calculateObjectValue( + null, + a.footerStyle || this.options.footerStyle, + [a], + ), + u = (h && h.css) || {}, + f = + (l && + this.footerData[0][ + "_".concat(a.field, "_colspan") + ]) || + 0, + d = (l && this.footerData[0][a.field]) || ""; + ((d = Ww.calculateObjectValue( + a, + a.footerFormatter, + [t, d], + d, + )), + e.push( + Ww.h( + "th", + { + class: [a.class, h && h.classes], + style: s( + { + "text-align": a.falign ? a.falign : a.align, + "vertical-align": a.valign, + }, + u, + ), + colspan: f || void 0, + }, + [ + Ww.h( + "div", + { class: "th-inner" }, + c(Ww.htmlToNodes(d)), + ), + Ww.h("div", { class: "fht-cell" }), + ], + ), + )); + } + } + } catch (t) { + r.e(t); + } finally { + r.f(); + } + (i && "right" === this.options.detailViewAlign && e.push(i), + this.options.height || + this.$tableFooter.length || + (this.$el.append(""), + (this.$tableFooter = this.$el.find("tfoot"))), + this.$tableFooter.find("tr").length || + this.$tableFooter.html( + "
    ", + ), + this.$tableFooter.find("tr").html(e), + this.trigger("post-footer", this.$tableFooter)); + } + }, + }, + { + key: "fitFooter", + value: function () { + var e = this; + if (this.$el.is(":hidden")) + setTimeout(function () { + return e.fitFooter(); + }, 100); + else { + var i = this.$tableBody.get(0), + n = + this.hasScrollBar && + i.scrollHeight > i.clientHeight + this.$header.outerHeight() + ? Ww.getScrollBarWidth() + : 0; + this.$tableFooter + .css("margin-right", n) + .find("table") + .css("width", this.$el.outerWidth()) + .attr("class", this.$el.attr("class")); + var o = this.$tableFooter.find("th"), + r = this.$body.find(">tr:first-child:not(.no-records-found)"); + for ( + o.find(".fht-cell").width("auto"); + r.length && r.find('>td[colspan]:not([colspan="1"])').length; + ) + r = r.next(); + var a = r.find("> *").length; + (r.find("> *").each(function (i, n) { + var r = t(n); + if ( + Ww.hasDetailViewIcon(e.options) && + ((0 === i && "left" === e.options.detailViewAlign) || + (i === a - 1 && "right" === e.options.detailViewAlign)) + ) { + var s = o.filter(".detail"), + l = s.innerWidth() - s.find(".fht-cell").width(); + s.find(".fht-cell").width(r.innerWidth() - l); + } else { + var c = o.eq(i), + h = c.innerWidth() - c.find(".fht-cell").width(); + c.find(".fht-cell").width(r.innerWidth() - h); + } + }), + this.horizontalScroll()); + } + }, + }, + { + key: "horizontalScroll", + value: function () { + var t = this; + this.$tableBody.off("scroll").on("scroll", function () { + var e = t.$tableBody.scrollLeft(); + (t.options.showHeader && + t.options.height && + t.$tableHeader.scrollLeft(e), + t.options.showFooter && + !t.options.cardView && + t.$tableFooter.scrollLeft(e), + t.trigger("scroll-body", t.$tableBody)); + }); + }, + }, + { + key: "getVisibleFields", + value: function () { + var t, + e = [], + i = o(this.header.fields); + try { + for (i.s(); !(t = i.n()).done; ) { + var n = t.value, + r = this.columns[this.fieldsColumnsIndex[n]]; + r && + r.visible && + (!this.options.cardView || r.cardVisible) && + e.push(n); + } + } catch (t) { + i.e(t); + } finally { + i.f(); + } + return e; + }, + }, + { + key: "initHiddenRows", + value: function () { + this.hiddenRows = []; + }, + }, + { + key: "getOptions", + value: function () { + var t = Ww.extend({}, this.options); + return (delete t.data, Ww.extend(!0, {}, t)); + }, + }, + { + key: "refreshOptions", + value: function (t) { + Ww.compareObjects(this.options, t, !0) || + ((this.options = Ww.extend(this.options, t)), + this.trigger("refresh-options", this.options), + this.destroy(), + this.init()); + }, + }, + { + key: "getData", + value: function (t) { + var e = this, + i = this.options.data; + if ( + ((!( + this.searchText || + this.options.customSearch || + void 0 !== this.options.sortName || + this.enableCustomSort + ) && + Ww.isEmptyObject(this.filterColumns) && + "function" != + typeof this.options.filterOptions.filterAlgorithm && + Ww.isEmptyObject(this.filterColumnsPartial)) || + (t && t.unfiltered) || + (i = this.data), + t && !t.includeHiddenRows) + ) { + var n = this.getHiddenRows(); + i = i.filter(function (t) { + return -1 === Ww.findIndex(n, t); + }); + } + return ( + t && + t.useCurrentPage && + (i = i.slice(this.pageFrom - 1, this.pageTo)), + t && t.formatted + ? i.map(function (t) { + for (var i = 0, n = Object.entries(t); i < n.length; i++) { + var o = l(n[i], 2), + r = o[0], + a = o[1], + s = e.columns[e.fieldsColumnsIndex[r]]; + if (s) + return Ww.calculateObjectValue( + s, + e.header.formatters[s.fieldIndex], + [a, t, t.index, s.field], + a, + ); + } + }) + : i + ); + }, + }, + { + key: "getSelections", + value: function () { + var t = this; + return ( + this.options.maintainMetaData ? this.options.data : this.data + ).filter(function (e) { + return !0 === e[t.header.stateField]; + }); + }, + }, + { + key: "load", + value: function (t) { + var e, + i = t; + (this.options.pagination && + "server" === this.options.sidePagination && + ((this.options.totalRows = i[this.options.totalField]), + (this.options.totalNotFiltered = + i[this.options.totalNotFilteredField]), + (this.footerData = i[this.options.footerField] + ? [i[this.options.footerField]] + : void 0)), + (e = this.options.fixedScroll || i.fixedScroll), + (i = Array.isArray(i) ? i : i[this.options.dataField]), + this.initData(i), + this.initSearch(), + this.initPagination(), + this.initBody(e)); + }, + }, + { + key: "append", + value: function (t) { + (this.initData(t, "append"), + this.initSearch(), + this.initPagination(), + this.initSort(), + this.initBody(!0)); + }, + }, + { + key: "prepend", + value: function (t) { + (this.initData(t, "prepend"), + this.initSearch(), + this.initPagination(), + this.initSort(), + this.initBody(!0)); + }, + }, + { + key: "remove", + value: function (t) { + for (var e = 0, i = this.options.data.length - 1; i >= 0; i--) { + var n = this.options.data[i], + o = Ww.getItemField(n, t.field, this.options.escape, n.escape); + (void 0 === o && "$index" !== t.field) || + (((!n.hasOwnProperty(t.field) && + "$index" === t.field && + t.values.includes(i)) || + t.values.includes(o)) && + (e++, this.options.data.splice(i, 1))); + } + e && + ("server" === this.options.sidePagination && + ((this.options.totalRows -= e), + (this.data = c(this.options.data))), + this.initSearch(), + this.initPagination(), + this.initSort(), + this.initBody(!0)); + }, + }, + { + key: "removeAll", + value: function () { + this.options.data.length > 0 && + (this.data.splice(0, this.data.length), + this.options.data.splice(0, this.options.data.length), + this.initSearch(), + this.initPagination(), + this.initBody(!0)); + }, + }, + { + key: "insertRow", + value: function (t) { + if (t.hasOwnProperty("index") && t.hasOwnProperty("row")) { + var e = this.data[t.index], + i = this.options.data.indexOf(e); + (this.data.splice(t.index, 0, t.row), + this.options.data.splice(i, 0, t.row), + this.initSearch(), + this.initPagination(), + this.initSort(), + this.initBody(!0)); + } + }, + }, + { + key: "updateRow", + value: function (t) { + var e, + i = o(Array.isArray(t) ? t : [t]); + try { + for (i.s(); !(e = i.n()).done; ) { + var n = e.value; + if (n.hasOwnProperty("index") && n.hasOwnProperty("row")) { + var r = this.data[n.index], + a = this.options.data.indexOf(r); + n.hasOwnProperty("replace") && n.replace + ? ((this.data[n.index] = n.row), + (this.options.data[a] = n.row)) + : (Ww.extend(this.data[n.index], n.row), + Ww.extend(this.options.data[a], n.row)); + } + } + } catch (t) { + i.e(t); + } finally { + i.f(); + } + (this.initSearch(), + this.initPagination(), + this.initSort(), + this.initBody(!0)); + }, + }, + { + key: "getRowByUniqueId", + value: function (t) { + var e, + i, + n = this.options.uniqueId, + o = t, + r = null; + for (e = this.options.data.length - 1; e >= 0; e--) { + i = this.options.data[e]; + var a = Ww.getItemField(i, n, this.options.escape, i.escape); + if ( + void 0 !== a && + ("string" == typeof a + ? (o = t.toString()) + : "number" == typeof a && + (Number(a) === a && a % 1 == 0 + ? (o = parseInt(t, 10)) + : a === Number(a) && 0 !== a && (o = parseFloat(t))), + a === o) + ) { + r = i; + break; + } + } + return r; + }, + }, + { + key: "updateByUniqueId", + value: function (t) { + var e, + i = null, + n = o(Array.isArray(t) ? t : [t]); + try { + for (n.s(); !(e = n.n()).done; ) { + var r = e.value; + if (r.hasOwnProperty("id") && r.hasOwnProperty("row")) { + var a = this.options.data.indexOf( + this.getRowByUniqueId(r.id), + ); + -1 !== a && + (r.hasOwnProperty("replace") && r.replace + ? (this.options.data[a] = r.row) + : Ww.extend(this.options.data[a], r.row), + (i = r.id)); + } + } + } catch (t) { + n.e(t); + } finally { + n.f(); + } + (this.initSearch(), + this.initPagination(), + this.initSort(), + this.initBody(!0, i)); + }, + }, + { + key: "removeByUniqueId", + value: function (t) { + var e = this.options.data.length, + i = this.getRowByUniqueId(t); + (i && this.options.data.splice(this.options.data.indexOf(i), 1), + e !== this.options.data.length && + ("server" === this.options.sidePagination && + ((this.options.totalRows -= 1), + (this.data = c(this.options.data))), + this.initSearch(), + this.initPagination(), + this.initBody(!0))); + }, + }, + { + key: "_updateCellOnly", + value: function (e, i) { + var n = this.initRow(this.data[i], i), + o = this.getVisibleFields().indexOf(e); + -1 !== o && + ((o += Ww.getDetailViewIndexOffset(this.options)), + this.$body + .find(">tr[data-index=".concat(i, "]")) + .find(">td:eq(".concat(o, ")")) + .replaceWith(t(n).find(">td:eq(".concat(o, ")"))), + this.initBodyEvent(), + this.initFooter(), + this.resetView(), + this.updateSelected()); + }, + }, + { + key: "updateCell", + value: function (t) { + if ( + t.hasOwnProperty("index") && + t.hasOwnProperty("field") && + t.hasOwnProperty("value") + ) { + var e = this.data[t.index], + i = this.options.data.indexOf(e); + ((this.data[t.index][t.field] = t.value), + (this.options.data[i][t.field] = t.value), + !1 !== t.reinit + ? (this.initSort(), this.initBody(!0)) + : this._updateCellOnly(t.field, t.index)); + } + }, + }, + { + key: "updateCellByUniqueId", + value: function (t) { + var e = this; + ((Array.isArray(t) ? t : [t]).forEach(function (t) { + var i = t.id, + n = t.field, + o = t.value, + r = e.options.data.indexOf(e.getRowByUniqueId(i)); + -1 !== r && (e.options.data[r][n] = o); + }), + !1 !== t.reinit + ? (this.initSort(), this.initBody(!0)) + : this._updateCellOnly( + t.field, + this.options.data.indexOf(this.getRowByUniqueId(t.id)), + )); + }, + }, + { + key: "showRow", + value: function (t) { + this._toggleRow(t, !0); + }, + }, + { + key: "hideRow", + value: function (t) { + this._toggleRow(t, !1); + }, + }, + { + key: "_toggleRow", + value: function (t, e) { + var i; + if ( + (t.hasOwnProperty("index") + ? (i = this.getData()[t.index]) + : t.hasOwnProperty("uniqueId") && + (i = this.getRowByUniqueId(t.uniqueId)), + i) + ) { + var n = Ww.findIndex(this.hiddenRows, i); + (e || -1 !== n + ? e && n > -1 && this.hiddenRows.splice(n, 1) + : this.hiddenRows.push(i), + this.initBody(!0), + this.initPagination()); + } + }, + }, + { + key: "getHiddenRows", + value: function (t) { + if (t) + return ( + this.initHiddenRows(), + this.initBody(!0), + void this.initPagination() + ); + var e, + i = [], + n = o(this.getData()); + try { + for (n.s(); !(e = n.n()).done; ) { + var r = e.value; + this.hiddenRows.includes(r) && i.push(r); + } + } catch (t) { + n.e(t); + } finally { + n.f(); + } + return ((this.hiddenRows = i), i); + }, + }, + { + key: "showColumn", + value: function (t) { + var e = this; + (Array.isArray(t) ? t : [t]).forEach(function (t) { + e._toggleColumn(e.fieldsColumnsIndex[t], !0, !0); + }); + }, + }, + { + key: "hideColumn", + value: function (t) { + var e = this; + (Array.isArray(t) ? t : [t]).forEach(function (t) { + e._toggleColumn(e.fieldsColumnsIndex[t], !1, !0); + }); + }, + }, + { + key: "_toggleColumn", + value: function (t, e, i) { + if ( + void 0 !== t && + this.columns[t].visible !== e && + ((this.columns[t].visible = e), + this.initHeader(), + this.initSearch(), + this.initPagination(), + this.initBody(), + this.options.showColumns) + ) { + var n = this.$toolbar + .find('.keep-open input:not(".toggle-all")') + .prop("disabled", !1); + (i && n.filter(Ww.sprintf('[value="%s"]', t)).prop("checked", e), + n.filter(":checked").length <= + this.options.minimumCountColumns && + n.filter(":checked").prop("disabled", !0)); + } + }, + }, + { + key: "getVisibleColumns", + value: function () { + var t = this; + return this.columns.filter(function (e) { + return e.visible && !t.isSelectionColumn(e); + }); + }, + }, + { + key: "getHiddenColumns", + value: function () { + return this.columns.filter(function (t) { + return !t.visible; + }); + }, + }, + { + key: "isSelectionColumn", + value: function (t) { + return t.radio || t.checkbox; + }, + }, + { + key: "showAllColumns", + value: function () { + this._toggleAllColumns(!0); + }, + }, + { + key: "hideAllColumns", + value: function () { + this._toggleAllColumns(!1); + }, + }, + { + key: "_toggleAllColumns", + value: function (e) { + var i, + n = this, + r = o(this.columns.slice().reverse()); + try { + for (r.s(); !(i = r.n()).done; ) { + var a = i.value; + if (a.switchable) { + if ( + !e && + this.options.showColumns && + this.getVisibleColumns().filter(function (t) { + return t.switchable; + }).length === this.options.minimumCountColumns + ) + continue; + a.visible = e; + } + } + } catch (t) { + r.e(t); + } finally { + r.f(); + } + if ( + (this.initHeader(), + this.initSearch(), + this.initPagination(), + this.initBody(), + this.options.showColumns) + ) { + var s = this.$toolbar + .find('.keep-open input[type="checkbox"]:not(".toggle-all")') + .prop("disabled", !1); + (e + ? s.prop("checked", e) + : s + .get() + .reverse() + .forEach(function (i) { + s.filter(":checked").length > + n.options.minimumCountColumns && + t(i).prop("checked", e); + }), + s.filter(":checked").length <= + this.options.minimumCountColumns && + s.filter(":checked").prop("disabled", !0)); + } + }, + }, + { + key: "mergeCells", + value: function (t) { + var e, + i, + n = t.index, + o = this.getVisibleFields().indexOf(t.field), + r = +t.rowspan || 1, + a = +t.colspan || 1, + s = this.$body.find(">tr[data-index]"); + o += Ww.getDetailViewIndexOffset(this.options); + var l = s.eq(n).find(">td").eq(o); + if (!(n < 0 || o < 0 || n >= this.data.length)) { + for (e = n; e < n + r; e++) + for (i = o; i < o + a; i++) s.eq(e).find(">td").eq(i).hide(); + l.attr("rowspan", r).attr("colspan", a).show(); + } + }, + }, + { + key: "checkAll", + value: function () { + this._toggleCheckAll(!0); + }, + }, + { + key: "uncheckAll", + value: function () { + this._toggleCheckAll(!1); + }, + }, + { + key: "_toggleCheckAll", + value: function (t) { + var e = this.getSelections(); + (this.$selectAll.add(this.$selectAll_).prop("checked", t), + this.$selectItem.filter(":enabled").prop("checked", t), + this.updateRows(), + this.updateSelected()); + var i = this.getSelections(); + t + ? this.trigger("check-all", i, e) + : this.trigger("uncheck-all", i, e); + }, + }, + { + key: "checkInvert", + value: function () { + var e = this.$selectItem.filter(":enabled"), + i = e.filter(":checked"); + (e.each(function (e, i) { + t(i).prop("checked", !t(i).prop("checked")); + }), + this.updateRows(), + this.updateSelected(), + this.trigger("uncheck-some", i), + (i = this.getSelections()), + this.trigger("check-some", i)); + }, + }, + { + key: "check", + value: function (t) { + this._toggleCheck(!0, t); + }, + }, + { + key: "uncheck", + value: function (t) { + this._toggleCheck(!1, t); + }, + }, + { + key: "_toggleCheck", + value: function (t, e) { + var i = this.$selectItem.filter('[data-index="'.concat(e, '"]')), + n = this.data[e]; + if ( + i.is(":radio") || + this.options.singleSelect || + (this.options.multipleSelectRow && + !this.multipleSelectRowCtrlKey && + !this.multipleSelectRowShiftKey) + ) { + var r, + a = o(this.options.data); + try { + for (a.s(); !(r = a.n()).done; ) { + r.value[this.header.stateField] = !1; + } + } catch (t) { + a.e(t); + } finally { + a.f(); + } + this.$selectItem.filter(":checked").not(i).prop("checked", !1); + } + if ( + ((n[this.header.stateField] = t), this.options.multipleSelectRow) + ) { + if ( + this.multipleSelectRowShiftKey && + this.multipleSelectRowLastSelectedIndex >= 0 + ) + for ( + var s = l( + this.multipleSelectRowLastSelectedIndex < e + ? [this.multipleSelectRowLastSelectedIndex, e] + : [e, this.multipleSelectRowLastSelectedIndex], + 2, + ), + c = s[0], + h = s[1], + u = c + 1; + u < h; + u++ + ) + ((this.data[u][this.header.stateField] = !0), + this.$selectItem + .filter('[data-index="'.concat(u, '"]')) + .prop("checked", !0)); + ((this.multipleSelectRowCtrlKey = !1), + (this.multipleSelectRowShiftKey = !1), + (this.multipleSelectRowLastSelectedIndex = t ? e : -1)); + } + (i.prop("checked", t), + this.updateSelected(), + this.trigger(t ? "check" : "uncheck", this.data[e], i)); + }, + }, + { + key: "checkBy", + value: function (t) { + this._toggleCheckBy(!0, t); + }, + }, + { + key: "uncheckBy", + value: function (t) { + this._toggleCheckBy(!1, t); + }, + }, + { + key: "_toggleCheckBy", + value: function (t, e) { + var i = this; + if (e.hasOwnProperty("field") && e.hasOwnProperty("values")) { + var n = []; + (this.data.forEach(function (o, r) { + if (!o.hasOwnProperty(e.field)) return !1; + if (e.values.includes(o[e.field])) { + var a = i.$selectItem + .filter(":enabled") + .filter(Ww.sprintf('[data-index="%s"]', r)), + s = + !!e.hasOwnProperty("onlyCurrentPage") && + e.onlyCurrentPage; + if ( + !(a = t ? a.not(":checked") : a.filter(":checked")) + .length && + s + ) + return; + (a.prop("checked", t), + (o[i.header.stateField] = t), + n.push(o), + i.trigger(t ? "check" : "uncheck", o, a)); + } + }), + this.updateSelected(), + this.trigger(t ? "check-some" : "uncheck-some", n)); + } + }, + }, + { + key: "refresh", + value: function (t) { + if ( + (t && t.url && (this.options.url = t.url), + t && t.pageNumber && (this.options.pageNumber = t.pageNumber), + t && t.pageSize && (this.options.pageSize = t.pageSize), + t && t.query) + ) { + for ( + var e = new URL(this.options.url), + i = new URLSearchParams(e.search), + n = 0, + o = Object.entries(t.query); + n < o.length; + n++ + ) { + var r = l(o[n], 2), + a = r[0], + s = r[1]; + i.set(a, s); + } + ((e.search = i.toString()), (this.options.url = e.toString())); + } + this.trigger("refresh", this.initServer(t && t.silent)); + }, + }, + { + key: "destroy", + value: function () { + (this.$el.insertBefore(this.$container), + t(this.options.toolbar).insertBefore(this.$el), + this.$container.next().remove(), + this.$container.remove(), + this.$el + .html(this.$el_.html()) + .css("margin-top", "0") + .attr("class", this.$el_.attr("class") || "")); + var e = Ww.getEventName( + "resize.bootstrap-table", + this.$el.attr("id"), + ); + t(window).off(e); + }, + }, + { + key: "resetView", + value: function (t) { + var e = 0; + if ( + (t && t.height && (this.options.height = t.height), + this.$tableContainer.toggleClass( + "has-card-view", + this.options.cardView, + ), + this.options.height) + ) { + var i = this.$tableBody.get(0); + this.hasScrollBar = i.scrollWidth > i.clientWidth; + } + if ( + (!this.options.cardView && + this.options.showHeader && + this.options.height + ? (this.$tableHeader.show(), + this.resetHeader(), + (e += this.$header.outerHeight(!0) + 1)) + : (this.$tableHeader.hide(), this.trigger("post-header")), + !this.options.cardView && + this.options.showFooter && + (this.$tableFooter.show(), + this.fitFooter(), + this.options.height && + (e += this.$tableFooter.outerHeight(!0))), + this.$container.hasClass("fullscreen")) + ) + (this.$tableContainer.css("height", ""), + this.$tableContainer.css("width", "")); + else if (this.options.height) { + this.$tableBorder && + (this.$tableBorder.css("width", ""), + this.$tableBorder.css("height", "")); + var n = this.$toolbar.outerHeight(!0), + o = this.$pagination.outerHeight(!0), + r = this.options.height - n - o, + a = this.$tableBody.find(">table"), + s = a.outerHeight(); + if ( + (this.$tableContainer.css("height", "".concat(r, "px")), + this.$tableBorder && a.is(":visible")) + ) { + var l = r - s - 2; + (this.hasScrollBar && (l -= Ww.getScrollBarWidth()), + this.$tableBorder.css( + "width", + "".concat(a.outerWidth(), "px"), + ), + this.$tableBorder.css("height", "".concat(l, "px"))); + } + } + (this.options.cardView + ? (this.$el.css("margin-top", "0"), + this.$tableContainer.css("padding-bottom", "0"), + this.$tableFooter.hide()) + : (this.getCaret(), + this.$tableContainer.css("padding-bottom", "".concat(e, "px"))), + this.trigger("reset-view")); + }, + }, + { + key: "showLoading", + value: function () { + this.$tableLoading.toggleClass("open", !0); + var t = this.options.loadingFontSize; + ("auto" === this.options.loadingFontSize && + ((t = 0.04 * this.$tableLoading.width()), + (t = Math.max(12, t)), + (t = Math.min(32, t)), + (t = "".concat(t, "px"))), + this.$tableLoading.find(".loading-text").css("font-size", t)); + }, + }, + { + key: "hideLoading", + value: function () { + this.$tableLoading.toggleClass("open", !1); + }, + }, + { + key: "togglePagination", + value: function () { + this.options.pagination = !this.options.pagination; + var t = this.options.showButtonIcons + ? this.options.pagination + ? this.options.icons.paginationSwitchDown + : this.options.icons.paginationSwitchUp + : "", + e = this.options.showButtonText + ? this.options.pagination + ? this.options.formatPaginationSwitchUp() + : this.options.formatPaginationSwitchDown() + : ""; + (this.$toolbar + .find('button[name="paginationSwitch"]') + .html( + "" + .concat( + Ww.sprintf( + this.constants.html.icon, + this.options.iconsPrefix, + t, + ), + " ", + ) + .concat(e), + ), + this.updatePagination(), + this.trigger("toggle-pagination", this.options.pagination)); + }, + }, + { + key: "toggleFullscreen", + value: function () { + (this.$el.closest(".bootstrap-table").toggleClass("fullscreen"), + this.resetView()); + }, + }, + { + key: "toggleView", + value: function () { + ((this.options.cardView = !this.options.cardView), + this.initHeader()); + var t = this.options.showButtonIcons + ? this.options.cardView + ? this.options.icons.toggleOn + : this.options.icons.toggleOff + : "", + e = this.options.cardView + ? this.options.formatToggleOff() + : this.options.formatToggleOn(); + (this.$toolbar + .find('button[name="toggle"]') + .html( + "" + .concat( + Ww.sprintf( + this.constants.html.icon, + this.options.iconsPrefix, + t, + ), + " ", + ) + .concat(this.options.showButtonText ? e : ""), + ) + .attr("aria-label", e) + .attr(this.options.buttonsAttributeTitle, e), + this.initBody(), + this.trigger("toggle", this.options.cardView)); + }, + }, + { + key: "resetSearch", + value: function (t) { + var e = Ww.getSearchInput(this), + i = t || ""; + (e.val(i), + (this.searchText = i), + this.onSearch({ currentTarget: e }, !1)); + }, + }, + { + key: "filterBy", + value: function (t, e) { + ((this.filterOptions = Ww.isEmptyObject(e) + ? this.options.filterOptions + : Ww.extend(this.options.filterOptions, e)), + (this.filterColumns = Ww.isEmptyObject(t) ? {} : t), + (this.options.pageNumber = 1), + this.initSearch(), + this.updatePagination()); + }, + }, + { + key: "scrollTo", + value: function (e) { + var i = { unit: "px", value: 0 }; + "object" === u(e) + ? (i = Object.assign(i, e)) + : "string" == typeof e && "bottom" === e + ? (i.value = this.$tableBody[0].scrollHeight) + : ("string" != typeof e && "number" != typeof e) || + (i.value = e); + var n = i.value; + ("rows" === i.unit && + ((n = 0), + this.$body + .find("> tr:lt(".concat(i.value, ")")) + .each(function (e, i) { + n += t(i).outerHeight(!0); + })), + this.$tableBody.scrollTop(n)); + }, + }, + { + key: "getScrollPosition", + value: function () { + return this.$tableBody.scrollTop(); + }, + }, + { + key: "selectPage", + value: function (t) { + t > 0 && + t <= this.options.totalPages && + ((this.options.pageNumber = t), this.updatePagination()); + }, + }, + { + key: "prevPage", + value: function () { + this.options.pageNumber > 1 && + (this.options.pageNumber--, this.updatePagination()); + }, + }, + { + key: "nextPage", + value: function () { + this.options.pageNumber < this.options.totalPages && + (this.options.pageNumber++, this.updatePagination()); + }, + }, + { + key: "toggleDetailView", + value: function (t, e) { + (this.$body + .find(Ww.sprintf('> tr[data-index="%s"]', t)) + .next() + .is("tr.detail-view") + ? this.collapseRow(t) + : this.expandRow(t, e), + this.resetView()); + }, + }, + { + key: "expandRow", + value: function (t, e) { + var i = this.data[t], + n = this.$body.find( + Ww.sprintf('> tr[data-index="%s"][data-has-detail-view]', t), + ); + if ( + (this.options.detailViewIcon && + n + .find("a.detail-icon") + .html( + Ww.sprintf( + this.constants.html.icon, + this.options.iconsPrefix, + this.options.icons.detailClose, + ), + ), + !n.next().is("tr.detail-view")) + ) { + n.after( + Ww.sprintf( + '', + n.children("td").length, + ), + ); + var o = n.next().find("td"), + r = e || this.options.detailFormatter, + a = Ww.calculateObjectValue(this.options, r, [t, i, o], ""); + (1 === o.length && o.append(a), + this.trigger("expand-row", t, i, o)); + } + }, + }, + { + key: "expandRowByUniqueId", + value: function (t) { + var e = this.getRowByUniqueId(t); + e && this.expandRow(this.data.indexOf(e)); + }, + }, + { + key: "collapseRow", + value: function (t) { + var e = this.data[t], + i = this.$body.find( + Ww.sprintf('> tr[data-index="%s"][data-has-detail-view]', t), + ); + i.next().is("tr.detail-view") && + (this.options.detailViewIcon && + i + .find("a.detail-icon") + .html( + Ww.sprintf( + this.constants.html.icon, + this.options.iconsPrefix, + this.options.icons.detailOpen, + ), + ), + this.trigger("collapse-row", t, e, i.next()), + i.next().remove()); + }, + }, + { + key: "collapseRowByUniqueId", + value: function (t) { + var e = this.getRowByUniqueId(t); + e && this.collapseRow(this.data.indexOf(e)); + }, + }, + { + key: "expandAllRows", + value: function () { + for ( + var e = this.$body.find("> tr[data-index][data-has-detail-view]"), + i = 0; + i < e.length; + i++ + ) + this.expandRow(t(e[i]).data("index")); + }, + }, + { + key: "collapseAllRows", + value: function () { + for ( + var e = this.$body.find("> tr[data-index][data-has-detail-view]"), + i = 0; + i < e.length; + i++ + ) + this.collapseRow(t(e[i]).data("index")); + }, + }, + { + key: "updateColumnTitle", + value: function (e) { + e.hasOwnProperty("field") && + e.hasOwnProperty("title") && + ((this.columns[this.fieldsColumnsIndex[e.field]].title = + this.options.escape && this.options.escapeTitle + ? Ww.escapeHTML(e.title) + : e.title), + this.columns[this.fieldsColumnsIndex[e.field]].visible && + (this.$header.find("th[data-field]").each(function (i, n) { + if (t(n).data("field") === e.field) + return (t(t(n).find(".th-inner")[0]).html(e.title), !1); + }), + this.resetView())); + }, + }, + { + key: "updateFormatText", + value: function (t, e) { + /^format/.test(t) && + this.options[t] && + ("string" == typeof e + ? (this.options[t] = function () { + return e; + }) + : "function" == typeof e && (this.options[t] = e), + this.initToolbar(), + this.initPagination(), + this.initBody()); + }, + }, + ]); + })(); + return ( + (tS.VERSION = Xw.VERSION), + (tS.DEFAULTS = Xw.DEFAULTS), + (tS.LOCALES = Xw.LOCALES), + (tS.COLUMN_DEFAULTS = Xw.COLUMN_DEFAULTS), + (tS.METHODS = Xw.METHODS), + (tS.EVENTS = Xw.EVENTS), + (t.BootstrapTable = tS), + (t.fn.bootstrapTable = function (e) { + for ( + var i = arguments.length, n = new Array(i > 1 ? i - 1 : 0), o = 1; + o < i; + o++ + ) + n[o - 1] = arguments[o]; + var r; + return ( + this.each(function (i, o) { + var a = t(o).data("bootstrap.table"); + if ("string" == typeof e) { + var s; + if (!Xw.METHODS.includes(e)) + throw new Error("Unknown method: ".concat(e)); + if (!a) return; + return ( + (r = (s = a)[e].apply(s, n)), + void ("destroy" === e && t(o).removeData("bootstrap.table")) + ); + } + if (a) + console.warn("You cannot initialize the table more than once!"); + else { + var l = Ww.extend( + !0, + {}, + tS.DEFAULTS, + t(o).data(), + "object" === u(e) && e, + ); + ((a = new t.BootstrapTable(o, l)), + t(o).data("bootstrap.table", a), + a.init()); + } + }), + void 0 === r ? this : r + ); + }), + (t.fn.bootstrapTable.Constructor = tS), + (t.fn.bootstrapTable.theme = Xw.THEME), + (t.fn.bootstrapTable.VERSION = Xw.VERSION), + (t.fn.bootstrapTable.defaults = tS.DEFAULTS), + (t.fn.bootstrapTable.columnDefaults = tS.COLUMN_DEFAULTS), + (t.fn.bootstrapTable.events = tS.EVENTS), + (t.fn.bootstrapTable.locales = tS.LOCALES), + (t.fn.bootstrapTable.methods = tS.METHODS), + (t.fn.bootstrapTable.utils = Ww), + t(function () { + t('[data-toggle="table"]').bootstrapTable(); + }), + tS + ); +}); diff --git a/libs/jquery-3.7.1.min.js b/libs/jquery-3.7.1.min.js index 7f37b5d..66b77e6 100644 --- a/libs/jquery-3.7.1.min.js +++ b/libs/jquery-3.7.1.min.js @@ -1,2 +1,5429 @@ /*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0+~]|" + ge + ")" + ge + "*"), + x = new RegExp(ge + "|>"), + j = new RegExp(g), + A = new RegExp("^" + t + "$"), + D = { + ID: new RegExp("^#(" + t + ")"), + CLASS: new RegExp("^\\.(" + t + ")"), + TAG: new RegExp("^(" + t + "|[*])"), + ATTR: new RegExp("^" + p), + PSEUDO: new RegExp("^" + g), + CHILD: new RegExp( + "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + + ge + + "*(even|odd|(([+-]|)(\\d*)n|)" + + ge + + "*(?:([+-]|)" + + ge + + "*(\\d+)|))" + + ge + + "*\\)|)", + "i", + ), + bool: new RegExp("^(?:" + f + ")$", "i"), + needsContext: new RegExp( + "^" + + ge + + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + ge + + "*((?:-\\d)?\\d*)" + + ge + + "*\\)|)(?=[^-]|$)", + "i", + ), + }, + N = /^(?:input|select|textarea|button)$/i, + q = /^h\d$/i, + L = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + H = /[+~]/, + O = new RegExp("\\\\[\\da-fA-F]{1,6}" + ge + "?|\\\\([^\\r\\n\\f])", "g"), + P = function (e, t) { + var n = "0x" + e.slice(1) - 65536; + return ( + t || + (n < 0 + ? String.fromCharCode(n + 65536) + : String.fromCharCode((n >> 10) | 55296, (1023 & n) | 56320)) + ); + }, + M = function () { + V(); + }, + R = J( + function (e) { + return !0 === e.disabled && fe(e, "fieldset"); + }, + { dir: "parentNode", next: "legend" }, + ); + try { + (k.apply((oe = ae.call(ye.childNodes)), ye.childNodes), + oe[ye.childNodes.length].nodeType); + } catch (e) { + k = { + apply: function (e, t) { + me.apply(e, ae.call(t)); + }, + call: function (e) { + me.apply(e, ae.call(arguments, 1)); + }, + }; + } + function I(t, e, n, r) { + var i, + o, + a, + s, + u, + l, + c, + f = e && e.ownerDocument, + p = e ? e.nodeType : 9; + if ( + ((n = n || []), + "string" != typeof t || !t || (1 !== p && 9 !== p && 11 !== p)) + ) + return n; + if (!r && (V(e), (e = e || T), C)) { + if (11 !== p && (u = L.exec(t))) + if ((i = u[1])) { + if (9 === p) { + if (!(a = e.getElementById(i))) return n; + if (a.id === i) return (k.call(n, a), n); + } else if ( + f && + (a = f.getElementById(i)) && + I.contains(e, a) && + a.id === i + ) + return (k.call(n, a), n); + } else { + if (u[2]) return (k.apply(n, e.getElementsByTagName(t)), n); + if ((i = u[3]) && e.getElementsByClassName) + return (k.apply(n, e.getElementsByClassName(i)), n); + } + if (!(h[t + " "] || (d && d.test(t)))) { + if (((c = t), (f = e), 1 === p && (x.test(t) || m.test(t)))) { + (((f = (H.test(t) && U(e.parentNode)) || e) == e && le.scope) || + ((s = e.getAttribute("id")) + ? (s = ce.escapeSelector(s)) + : e.setAttribute("id", (s = S))), + (o = (l = Y(t)).length)); + while (o--) l[o] = (s ? "#" + s : ":scope") + " " + Q(l[o]); + c = l.join(","); + } + try { + return (k.apply(n, f.querySelectorAll(c)), n); + } catch (e) { + h(t, !0); + } finally { + s === S && e.removeAttribute("id"); + } + } + } + return re(t.replace(ve, "$1"), e, n, r); + } + function W() { + var r = []; + return function e(t, n) { + return ( + r.push(t + " ") > b.cacheLength && delete e[r.shift()], + (e[t + " "] = n) + ); + }; + } + function F(e) { + return ((e[S] = !0), e); + } + function $(e) { + var t = T.createElement("fieldset"); + try { + return !!e(t); + } catch (e) { + return !1; + } finally { + (t.parentNode && t.parentNode.removeChild(t), (t = null)); + } + } + function B(t) { + return function (e) { + return fe(e, "input") && e.type === t; + }; + } + function _(t) { + return function (e) { + return (fe(e, "input") || fe(e, "button")) && e.type === t; + }; + } + function z(t) { + return function (e) { + return "form" in e + ? e.parentNode && !1 === e.disabled + ? "label" in e + ? "label" in e.parentNode + ? e.parentNode.disabled === t + : e.disabled === t + : e.isDisabled === t || (e.isDisabled !== !t && R(e) === t) + : e.disabled === t + : "label" in e && e.disabled === t; + }; + } + function X(a) { + return F(function (o) { + return ( + (o = +o), + F(function (e, t) { + var n, + r = a([], e.length, o), + i = r.length; + while (i--) e[(n = r[i])] && (e[n] = !(t[n] = e[n])); + }) + ); + }); + } + function U(e) { + return e && "undefined" != typeof e.getElementsByTagName && e; + } + function V(e) { + var t, + n = e ? e.ownerDocument || e : ye; + return ( + n != T && + 9 === n.nodeType && + n.documentElement && + ((r = (T = n).documentElement), + (C = !ce.isXMLDoc(T)), + (i = r.matches || r.webkitMatchesSelector || r.msMatchesSelector), + r.msMatchesSelector && + ye != T && + (t = T.defaultView) && + t.top !== t && + t.addEventListener("unload", M), + (le.getById = $(function (e) { + return ( + (r.appendChild(e).id = ce.expando), + !T.getElementsByName || !T.getElementsByName(ce.expando).length + ); + })), + (le.disconnectedMatch = $(function (e) { + return i.call(e, "*"); + })), + (le.scope = $(function () { + return T.querySelectorAll(":scope"); + })), + (le.cssHas = $(function () { + try { + return (T.querySelector(":has(*,:jqfake)"), !1); + } catch (e) { + return !0; + } + })), + le.getById + ? ((b.filter.ID = function (e) { + var t = e.replace(O, P); + return function (e) { + return e.getAttribute("id") === t; + }; + }), + (b.find.ID = function (e, t) { + if ("undefined" != typeof t.getElementById && C) { + var n = t.getElementById(e); + return n ? [n] : []; + } + })) + : ((b.filter.ID = function (e) { + var n = e.replace(O, P); + return function (e) { + var t = + "undefined" != typeof e.getAttributeNode && + e.getAttributeNode("id"); + return t && t.value === n; + }; + }), + (b.find.ID = function (e, t) { + if ("undefined" != typeof t.getElementById && C) { + var n, + r, + i, + o = t.getElementById(e); + if (o) { + if ((n = o.getAttributeNode("id")) && n.value === e) + return [o]; + ((i = t.getElementsByName(e)), (r = 0)); + while ((o = i[r++])) + if ((n = o.getAttributeNode("id")) && n.value === e) + return [o]; + } + return []; + } + })), + (b.find.TAG = function (e, t) { + return "undefined" != typeof t.getElementsByTagName + ? t.getElementsByTagName(e) + : t.querySelectorAll(e); + }), + (b.find.CLASS = function (e, t) { + if ("undefined" != typeof t.getElementsByClassName && C) + return t.getElementsByClassName(e); + }), + (d = []), + $(function (e) { + var t; + ((r.appendChild(e).innerHTML = + ""), + e.querySelectorAll("[selected]").length || + d.push("\\[" + ge + "*(?:value|" + f + ")"), + e.querySelectorAll("[id~=" + S + "-]").length || d.push("~="), + e.querySelectorAll("a#" + S + "+*").length || d.push(".#.+[+~]"), + e.querySelectorAll(":checked").length || d.push(":checked"), + (t = T.createElement("input")).setAttribute("type", "hidden"), + e.appendChild(t).setAttribute("name", "D"), + (r.appendChild(e).disabled = !0), + 2 !== e.querySelectorAll(":disabled").length && + d.push(":enabled", ":disabled"), + (t = T.createElement("input")).setAttribute("name", ""), + e.appendChild(t), + e.querySelectorAll("[name='']").length || + d.push("\\[" + ge + "*name" + ge + "*=" + ge + "*(?:''|\"\")")); + }), + le.cssHas || d.push(":has"), + (d = d.length && new RegExp(d.join("|"))), + (l = function (e, t) { + if (e === t) return ((a = !0), 0); + var n = !e.compareDocumentPosition - !t.compareDocumentPosition; + return ( + n || + (1 & + (n = + (e.ownerDocument || e) == (t.ownerDocument || t) + ? e.compareDocumentPosition(t) + : 1) || + (!le.sortDetached && t.compareDocumentPosition(e) === n) + ? e === T || (e.ownerDocument == ye && I.contains(ye, e)) + ? -1 + : t === T || (t.ownerDocument == ye && I.contains(ye, t)) + ? 1 + : o + ? se.call(o, e) - se.call(o, t) + : 0 + : 4 & n + ? -1 + : 1) + ); + })), + T + ); + } + for (e in ((I.matches = function (e, t) { + return I(e, null, null, t); + }), + (I.matchesSelector = function (e, t) { + if ((V(e), C && !h[t + " "] && (!d || !d.test(t)))) + try { + var n = i.call(e, t); + if ( + n || + le.disconnectedMatch || + (e.document && 11 !== e.document.nodeType) + ) + return n; + } catch (e) { + h(t, !0); + } + return 0 < I(t, T, null, [e]).length; + }), + (I.contains = function (e, t) { + return ((e.ownerDocument || e) != T && V(e), ce.contains(e, t)); + }), + (I.attr = function (e, t) { + (e.ownerDocument || e) != T && V(e); + var n = b.attrHandle[t.toLowerCase()], + r = n && ue.call(b.attrHandle, t.toLowerCase()) ? n(e, t, !C) : void 0; + return void 0 !== r ? r : e.getAttribute(t); + }), + (I.error = function (e) { + throw new Error("Syntax error, unrecognized expression: " + e); + }), + (ce.uniqueSort = function (e) { + var t, + n = [], + r = 0, + i = 0; + if ( + ((a = !le.sortStable), + (o = !le.sortStable && ae.call(e, 0)), + de.call(e, l), + a) + ) { + while ((t = e[i++])) t === e[i] && (r = n.push(i)); + while (r--) he.call(e, n[r], 1); + } + return ((o = null), e); + }), + (ce.fn.uniqueSort = function () { + return this.pushStack(ce.uniqueSort(ae.apply(this))); + }), + ((b = ce.expr = + { + cacheLength: 50, + createPseudo: F, + match: D, + attrHandle: {}, + find: {}, + relative: { + ">": { dir: "parentNode", first: !0 }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: !0 }, + "~": { dir: "previousSibling" }, + }, + preFilter: { + ATTR: function (e) { + return ( + (e[1] = e[1].replace(O, P)), + (e[3] = (e[3] || e[4] || e[5] || "").replace(O, P)), + "~=" === e[2] && (e[3] = " " + e[3] + " "), + e.slice(0, 4) + ); + }, + CHILD: function (e) { + return ( + (e[1] = e[1].toLowerCase()), + "nth" === e[1].slice(0, 3) + ? (e[3] || I.error(e[0]), + (e[4] = +(e[4] + ? e[5] + (e[6] || 1) + : 2 * ("even" === e[3] || "odd" === e[3]))), + (e[5] = +(e[7] + e[8] || "odd" === e[3]))) + : e[3] && I.error(e[0]), + e + ); + }, + PSEUDO: function (e) { + var t, + n = !e[6] && e[2]; + return D.CHILD.test(e[0]) + ? null + : (e[3] + ? (e[2] = e[4] || e[5] || "") + : n && + j.test(n) && + (t = Y(n, !0)) && + (t = n.indexOf(")", n.length - t) - n.length) && + ((e[0] = e[0].slice(0, t)), (e[2] = n.slice(0, t))), + e.slice(0, 3)); + }, + }, + filter: { + TAG: function (e) { + var t = e.replace(O, P).toLowerCase(); + return "*" === e + ? function () { + return !0; + } + : function (e) { + return fe(e, t); + }; + }, + CLASS: function (e) { + var t = s[e + " "]; + return ( + t || + ((t = new RegExp("(^|" + ge + ")" + e + "(" + ge + "|$)")) && + s(e, function (e) { + return t.test( + ("string" == typeof e.className && e.className) || + ("undefined" != typeof e.getAttribute && + e.getAttribute("class")) || + "", + ); + })) + ); + }, + ATTR: function (n, r, i) { + return function (e) { + var t = I.attr(e, n); + return null == t + ? "!=" === r + : !r || + ((t += ""), + "=" === r + ? t === i + : "!=" === r + ? t !== i + : "^=" === r + ? i && 0 === t.indexOf(i) + : "*=" === r + ? i && -1 < t.indexOf(i) + : "$=" === r + ? i && t.slice(-i.length) === i + : "~=" === r + ? -1 < + (" " + t.replace(v, " ") + " ").indexOf(i) + : "|=" === r && + (t === i || + t.slice(0, i.length + 1) === i + "-")); + }; + }, + CHILD: function (d, e, t, h, g) { + var v = "nth" !== d.slice(0, 3), + y = "last" !== d.slice(-4), + m = "of-type" === e; + return 1 === h && 0 === g + ? function (e) { + return !!e.parentNode; + } + : function (e, t, n) { + var r, + i, + o, + a, + s, + u = v !== y ? "nextSibling" : "previousSibling", + l = e.parentNode, + c = m && e.nodeName.toLowerCase(), + f = !n && !m, + p = !1; + if (l) { + if (v) { + while (u) { + o = e; + while ((o = o[u])) + if (m ? fe(o, c) : 1 === o.nodeType) return !1; + s = u = "only" === d && !s && "nextSibling"; + } + return !0; + } + if (((s = [y ? l.firstChild : l.lastChild]), y && f)) { + ((p = + (a = + (r = (i = l[S] || (l[S] = {}))[d] || [])[0] === E && + r[1]) && r[2]), + (o = a && l.childNodes[a])); + while ((o = (++a && o && o[u]) || (p = a = 0) || s.pop())) + if (1 === o.nodeType && ++p && o === e) { + i[d] = [E, a, p]; + break; + } + } else if ( + (f && + (p = a = + (r = (i = e[S] || (e[S] = {}))[d] || [])[0] === E && + r[1]), + !1 === p) + ) + while ((o = (++a && o && o[u]) || (p = a = 0) || s.pop())) + if ( + (m ? fe(o, c) : 1 === o.nodeType) && + ++p && + (f && ((i = o[S] || (o[S] = {}))[d] = [E, p]), + o === e) + ) + break; + return (p -= g) === h || (p % h == 0 && 0 <= p / h); + } + }; + }, + PSEUDO: function (e, o) { + var t, + a = + b.pseudos[e] || + b.setFilters[e.toLowerCase()] || + I.error("unsupported pseudo: " + e); + return a[S] + ? a(o) + : 1 < a.length + ? ((t = [e, e, "", o]), + b.setFilters.hasOwnProperty(e.toLowerCase()) + ? F(function (e, t) { + var n, + r = a(e, o), + i = r.length; + while (i--) e[(n = se.call(e, r[i]))] = !(t[n] = r[i]); + }) + : function (e) { + return a(e, 0, t); + }) + : a; + }, + }, + pseudos: { + not: F(function (e) { + var r = [], + i = [], + s = ne(e.replace(ve, "$1")); + return s[S] + ? F(function (e, t, n, r) { + var i, + o = s(e, null, r, []), + a = e.length; + while (a--) (i = o[a]) && (e[a] = !(t[a] = i)); + }) + : function (e, t, n) { + return ( + (r[0] = e), + s(r, null, n, i), + (r[0] = null), + !i.pop() + ); + }; + }), + has: F(function (t) { + return function (e) { + return 0 < I(t, e).length; + }; + }), + contains: F(function (t) { + return ( + (t = t.replace(O, P)), + function (e) { + return -1 < (e.textContent || ce.text(e)).indexOf(t); + } + ); + }), + lang: F(function (n) { + return ( + A.test(n || "") || I.error("unsupported lang: " + n), + (n = n.replace(O, P).toLowerCase()), + function (e) { + var t; + do { + if ( + (t = C + ? e.lang + : e.getAttribute("xml:lang") || e.getAttribute("lang")) + ) + return ( + (t = t.toLowerCase()) === n || 0 === t.indexOf(n + "-") + ); + } while ((e = e.parentNode) && 1 === e.nodeType); + return !1; + } + ); + }), + target: function (e) { + var t = ie.location && ie.location.hash; + return t && t.slice(1) === e.id; + }, + root: function (e) { + return e === r; + }, + focus: function (e) { + return ( + e === + (function () { + try { + return T.activeElement; + } catch (e) {} + })() && + T.hasFocus() && + !!(e.type || e.href || ~e.tabIndex) + ); + }, + enabled: z(!1), + disabled: z(!0), + checked: function (e) { + return ( + (fe(e, "input") && !!e.checked) || + (fe(e, "option") && !!e.selected) + ); + }, + selected: function (e) { + return ( + e.parentNode && e.parentNode.selectedIndex, + !0 === e.selected + ); + }, + empty: function (e) { + for (e = e.firstChild; e; e = e.nextSibling) + if (e.nodeType < 6) return !1; + return !0; + }, + parent: function (e) { + return !b.pseudos.empty(e); + }, + header: function (e) { + return q.test(e.nodeName); + }, + input: function (e) { + return N.test(e.nodeName); + }, + button: function (e) { + return (fe(e, "input") && "button" === e.type) || fe(e, "button"); + }, + text: function (e) { + var t; + return ( + fe(e, "input") && + "text" === e.type && + (null == (t = e.getAttribute("type")) || + "text" === t.toLowerCase()) + ); + }, + first: X(function () { + return [0]; + }), + last: X(function (e, t) { + return [t - 1]; + }), + eq: X(function (e, t, n) { + return [n < 0 ? n + t : n]; + }), + even: X(function (e, t) { + for (var n = 0; n < t; n += 2) e.push(n); + return e; + }), + odd: X(function (e, t) { + for (var n = 1; n < t; n += 2) e.push(n); + return e; + }), + lt: X(function (e, t, n) { + var r; + for (r = n < 0 ? n + t : t < n ? t : n; 0 <= --r; ) e.push(r); + return e; + }), + gt: X(function (e, t, n) { + for (var r = n < 0 ? n + t : n; ++r < t; ) e.push(r); + return e; + }), + }, + }).pseudos.nth = b.pseudos.eq), + { radio: !0, checkbox: !0, file: !0, password: !0, image: !0 })) + b.pseudos[e] = B(e); + for (e in { submit: !0, reset: !0 }) b.pseudos[e] = _(e); + function G() {} + function Y(e, t) { + var n, + r, + i, + o, + a, + s, + u, + l = c[e + " "]; + if (l) return t ? 0 : l.slice(0); + ((a = e), (s = []), (u = b.preFilter)); + while (a) { + for (o in ((n && !(r = y.exec(a))) || + (r && (a = a.slice(r[0].length) || a), s.push((i = []))), + (n = !1), + (r = m.exec(a)) && + ((n = r.shift()), + i.push({ value: n, type: r[0].replace(ve, " ") }), + (a = a.slice(n.length))), + b.filter)) + !(r = D[o].exec(a)) || + (u[o] && !(r = u[o](r))) || + ((n = r.shift()), + i.push({ value: n, type: o, matches: r }), + (a = a.slice(n.length))); + if (!n) break; + } + return t ? a.length : a ? I.error(e) : c(e, s).slice(0); + } + function Q(e) { + for (var t = 0, n = e.length, r = ""; t < n; t++) r += e[t].value; + return r; + } + function J(a, e, t) { + var s = e.dir, + u = e.next, + l = u || s, + c = t && "parentNode" === l, + f = n++; + return e.first + ? function (e, t, n) { + while ((e = e[s])) if (1 === e.nodeType || c) return a(e, t, n); + return !1; + } + : function (e, t, n) { + var r, + i, + o = [E, f]; + if (n) { + while ((e = e[s])) + if ((1 === e.nodeType || c) && a(e, t, n)) return !0; + } else + while ((e = e[s])) + if (1 === e.nodeType || c) + if (((i = e[S] || (e[S] = {})), u && fe(e, u))) e = e[s] || e; + else { + if ((r = i[l]) && r[0] === E && r[1] === f) + return (o[2] = r[2]); + if (((i[l] = o)[2] = a(e, t, n))) return !0; + } + return !1; + }; + } + function K(i) { + return 1 < i.length + ? function (e, t, n) { + var r = i.length; + while (r--) if (!i[r](e, t, n)) return !1; + return !0; + } + : i[0]; + } + function Z(e, t, n, r, i) { + for (var o, a = [], s = 0, u = e.length, l = null != t; s < u; s++) + (o = e[s]) && ((n && !n(o, r, i)) || (a.push(o), l && t.push(s))); + return a; + } + function ee(d, h, g, v, y, e) { + return ( + v && !v[S] && (v = ee(v)), + y && !y[S] && (y = ee(y, e)), + F(function (e, t, n, r) { + var i, + o, + a, + s, + u = [], + l = [], + c = t.length, + f = + e || + (function (e, t, n) { + for (var r = 0, i = t.length; r < i; r++) I(e, t[r], n); + return n; + })(h || "*", n.nodeType ? [n] : n, []), + p = !d || (!e && h) ? f : Z(f, u, d, n, r); + if ( + (g ? g(p, (s = y || (e ? d : c || v) ? [] : t), n, r) : (s = p), v) + ) { + ((i = Z(s, l)), v(i, [], n, r), (o = i.length)); + while (o--) (a = i[o]) && (s[l[o]] = !(p[l[o]] = a)); + } + if (e) { + if (y || d) { + if (y) { + ((i = []), (o = s.length)); + while (o--) (a = s[o]) && i.push((p[o] = a)); + y(null, (s = []), i, r); + } + o = s.length; + while (o--) + (a = s[o]) && + -1 < (i = y ? se.call(e, a) : u[o]) && + (e[i] = !(t[i] = a)); + } + } else + ((s = Z(s === t ? s.splice(c, s.length) : s)), + y ? y(null, t, s, r) : k.apply(t, s)); + }) + ); + } + function te(e) { + for ( + var i, + t, + n, + r = e.length, + o = b.relative[e[0].type], + a = o || b.relative[" "], + s = o ? 1 : 0, + u = J( + function (e) { + return e === i; + }, + a, + !0, + ), + l = J( + function (e) { + return -1 < se.call(i, e); + }, + a, + !0, + ), + c = [ + function (e, t, n) { + var r = + (!o && (n || t != w)) || + ((i = t).nodeType ? u(e, t, n) : l(e, t, n)); + return ((i = null), r); + }, + ]; + s < r; + s++ + ) + if ((t = b.relative[e[s].type])) c = [J(K(c), t)]; + else { + if ((t = b.filter[e[s].type].apply(null, e[s].matches))[S]) { + for (n = ++s; n < r; n++) if (b.relative[e[n].type]) break; + return ee( + 1 < s && K(c), + 1 < s && + Q( + e + .slice(0, s - 1) + .concat({ value: " " === e[s - 2].type ? "*" : "" }), + ).replace(ve, "$1"), + t, + s < n && te(e.slice(s, n)), + n < r && te((e = e.slice(n))), + n < r && Q(e), + ); + } + c.push(t); + } + return K(c); + } + function ne(e, t) { + var n, + v, + y, + m, + x, + r, + i = [], + o = [], + a = u[e + " "]; + if (!a) { + (t || (t = Y(e)), (n = t.length)); + while (n--) (a = te(t[n]))[S] ? i.push(a) : o.push(a); + (a = u( + e, + ((v = o), + (m = 0 < (y = i).length), + (x = 0 < v.length), + (r = function (e, t, n, r, i) { + var o, + a, + s, + u = 0, + l = "0", + c = e && [], + f = [], + p = w, + d = e || (x && b.find.TAG("*", i)), + h = (E += null == p ? 1 : Math.random() || 0.1), + g = d.length; + for ( + i && (w = t == T || t || i); + l !== g && null != (o = d[l]); + l++ + ) { + if (x && o) { + ((a = 0), t || o.ownerDocument == T || (V(o), (n = !C))); + while ((s = v[a++])) + if (s(o, t || T, n)) { + k.call(r, o); + break; + } + i && (E = h); + } + m && ((o = !s && o) && u--, e && c.push(o)); + } + if (((u += l), m && l !== u)) { + a = 0; + while ((s = y[a++])) s(c, f, t, n); + if (e) { + if (0 < u) while (l--) c[l] || f[l] || (f[l] = pe.call(r)); + f = Z(f); + } + (k.apply(r, f), + i && + !e && + 0 < f.length && + 1 < u + y.length && + ce.uniqueSort(r)); + } + return (i && ((E = h), (w = p)), c); + }), + m ? F(r) : r), + )).selector = e; + } + return a; + } + function re(e, t, n, r) { + var i, + o, + a, + s, + u, + l = "function" == typeof e && e, + c = !r && Y((e = l.selector || e)); + if (((n = n || []), 1 === c.length)) { + if ( + 2 < (o = c[0] = c[0].slice(0)).length && + "ID" === (a = o[0]).type && + 9 === t.nodeType && + C && + b.relative[o[1].type] + ) { + if (!(t = (b.find.ID(a.matches[0].replace(O, P), t) || [])[0])) + return n; + (l && (t = t.parentNode), (e = e.slice(o.shift().value.length))); + } + i = D.needsContext.test(e) ? 0 : o.length; + while (i--) { + if (((a = o[i]), b.relative[(s = a.type)])) break; + if ( + (u = b.find[s]) && + (r = u( + a.matches[0].replace(O, P), + (H.test(o[0].type) && U(t.parentNode)) || t, + )) + ) { + if ((o.splice(i, 1), !(e = r.length && Q(o)))) + return (k.apply(n, r), n); + break; + } + } + } + return ( + (l || ne(e, c))(r, t, !C, n, !t || (H.test(e) && U(t.parentNode)) || t), + n + ); + } + ((G.prototype = b.filters = b.pseudos), + (b.setFilters = new G()), + (le.sortStable = S.split("").sort(l).join("") === S), + V(), + (le.sortDetached = $(function (e) { + return 1 & e.compareDocumentPosition(T.createElement("fieldset")); + })), + (ce.find = I), + (ce.expr[":"] = ce.expr.pseudos), + (ce.unique = ce.uniqueSort), + (I.compile = ne), + (I.select = re), + (I.setDocument = V), + (I.tokenize = Y), + (I.escape = ce.escapeSelector), + (I.getText = ce.text), + (I.isXML = ce.isXMLDoc), + (I.selectors = ce.expr), + (I.support = ce.support), + (I.uniqueSort = ce.uniqueSort)); + })(); + var d = function (e, t, n) { + var r = [], + i = void 0 !== n; + while ((e = e[t]) && 9 !== e.nodeType) + if (1 === e.nodeType) { + if (i && ce(e).is(n)) break; + r.push(e); + } + return r; + }, + h = function (e, t) { + for (var n = []; e; e = e.nextSibling) + 1 === e.nodeType && e !== t && n.push(e); + return n; + }, + b = ce.expr.match.needsContext, + w = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i; + function T(e, n, r) { + return v(n) + ? ce.grep(e, function (e, t) { + return !!n.call(e, t, e) !== r; + }) + : n.nodeType + ? ce.grep(e, function (e) { + return (e === n) !== r; + }) + : "string" != typeof n + ? ce.grep(e, function (e) { + return -1 < se.call(n, e) !== r; + }) + : ce.filter(n, e, r); + } + ((ce.filter = function (e, t, n) { + var r = t[0]; + return ( + n && (e = ":not(" + e + ")"), + 1 === t.length && 1 === r.nodeType + ? ce.find.matchesSelector(r, e) + ? [r] + : [] + : ce.find.matches( + e, + ce.grep(t, function (e) { + return 1 === e.nodeType; + }), + ) + ); + }), + ce.fn.extend({ + find: function (e) { + var t, + n, + r = this.length, + i = this; + if ("string" != typeof e) + return this.pushStack( + ce(e).filter(function () { + for (t = 0; t < r; t++) if (ce.contains(i[t], this)) return !0; + }), + ); + for (n = this.pushStack([]), t = 0; t < r; t++) ce.find(e, i[t], n); + return 1 < r ? ce.uniqueSort(n) : n; + }, + filter: function (e) { + return this.pushStack(T(this, e || [], !1)); + }, + not: function (e) { + return this.pushStack(T(this, e || [], !0)); + }, + is: function (e) { + return !!T( + this, + "string" == typeof e && b.test(e) ? ce(e) : e || [], + !1, + ).length; + }, + })); + var k, + S = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/; + (((ce.fn.init = function (e, t, n) { + var r, i; + if (!e) return this; + if (((n = n || k), "string" == typeof e)) { + if ( + !(r = + "<" === e[0] && ">" === e[e.length - 1] && 3 <= e.length + ? [null, e, null] + : S.exec(e)) || + (!r[1] && t) + ) + return !t || t.jquery ? (t || n).find(e) : this.constructor(t).find(e); + if (r[1]) { + if ( + ((t = t instanceof ce ? t[0] : t), + ce.merge( + this, + ce.parseHTML(r[1], t && t.nodeType ? t.ownerDocument || t : C, !0), + ), + w.test(r[1]) && ce.isPlainObject(t)) + ) + for (r in t) v(this[r]) ? this[r](t[r]) : this.attr(r, t[r]); + return this; + } + return ( + (i = C.getElementById(r[2])) && ((this[0] = i), (this.length = 1)), + this + ); + } + return e.nodeType + ? ((this[0] = e), (this.length = 1), this) + : v(e) + ? void 0 !== n.ready + ? n.ready(e) + : e(ce) + : ce.makeArray(e, this); + }).prototype = ce.fn), + (k = ce(C))); + var E = /^(?:parents|prev(?:Until|All))/, + j = { children: !0, contents: !0, next: !0, prev: !0 }; + function A(e, t) { + while ((e = e[t]) && 1 !== e.nodeType); + return e; + } + (ce.fn.extend({ + has: function (e) { + var t = ce(e, this), + n = t.length; + return this.filter(function () { + for (var e = 0; e < n; e++) if (ce.contains(this, t[e])) return !0; + }); + }, + closest: function (e, t) { + var n, + r = 0, + i = this.length, + o = [], + a = "string" != typeof e && ce(e); + if (!b.test(e)) + for (; r < i; r++) + for (n = this[r]; n && n !== t; n = n.parentNode) + if ( + n.nodeType < 11 && + (a + ? -1 < a.index(n) + : 1 === n.nodeType && ce.find.matchesSelector(n, e)) + ) { + o.push(n); + break; + } + return this.pushStack(1 < o.length ? ce.uniqueSort(o) : o); + }, + index: function (e) { + return e + ? "string" == typeof e + ? se.call(ce(e), this[0]) + : se.call(this, e.jquery ? e[0] : e) + : this[0] && this[0].parentNode + ? this.first().prevAll().length + : -1; + }, + add: function (e, t) { + return this.pushStack(ce.uniqueSort(ce.merge(this.get(), ce(e, t)))); + }, + addBack: function (e) { + return this.add(null == e ? this.prevObject : this.prevObject.filter(e)); + }, + }), + ce.each( + { + parent: function (e) { + var t = e.parentNode; + return t && 11 !== t.nodeType ? t : null; + }, + parents: function (e) { + return d(e, "parentNode"); + }, + parentsUntil: function (e, t, n) { + return d(e, "parentNode", n); + }, + next: function (e) { + return A(e, "nextSibling"); + }, + prev: function (e) { + return A(e, "previousSibling"); + }, + nextAll: function (e) { + return d(e, "nextSibling"); + }, + prevAll: function (e) { + return d(e, "previousSibling"); + }, + nextUntil: function (e, t, n) { + return d(e, "nextSibling", n); + }, + prevUntil: function (e, t, n) { + return d(e, "previousSibling", n); + }, + siblings: function (e) { + return h((e.parentNode || {}).firstChild, e); + }, + children: function (e) { + return h(e.firstChild); + }, + contents: function (e) { + return null != e.contentDocument && r(e.contentDocument) + ? e.contentDocument + : (fe(e, "template") && (e = e.content || e), + ce.merge([], e.childNodes)); + }, + }, + function (r, i) { + ce.fn[r] = function (e, t) { + var n = ce.map(this, i, e); + return ( + "Until" !== r.slice(-5) && (t = e), + t && "string" == typeof t && (n = ce.filter(t, n)), + 1 < this.length && + (j[r] || ce.uniqueSort(n), E.test(r) && n.reverse()), + this.pushStack(n) + ); + }; + }, + )); + var D = /[^\x20\t\r\n\f]+/g; + function N(e) { + return e; + } + function q(e) { + throw e; + } + function L(e, t, n, r) { + var i; + try { + e && v((i = e.promise)) + ? i.call(e).done(t).fail(n) + : e && v((i = e.then)) + ? i.call(e, t, n) + : t.apply(void 0, [e].slice(r)); + } catch (e) { + n.apply(void 0, [e]); + } + } + ((ce.Callbacks = function (r) { + var e, n; + r = + "string" == typeof r + ? ((e = r), + (n = {}), + ce.each(e.match(D) || [], function (e, t) { + n[t] = !0; + }), + n) + : ce.extend({}, r); + var i, + t, + o, + a, + s = [], + u = [], + l = -1, + c = function () { + for (a = a || r.once, o = i = !0; u.length; l = -1) { + t = u.shift(); + while (++l < s.length) + !1 === s[l].apply(t[0], t[1]) && + r.stopOnFalse && + ((l = s.length), (t = !1)); + } + (r.memory || (t = !1), (i = !1), a && (s = t ? [] : "")); + }, + f = { + add: function () { + return ( + s && + (t && !i && ((l = s.length - 1), u.push(t)), + (function n(e) { + ce.each(e, function (e, t) { + v(t) + ? (r.unique && f.has(t)) || s.push(t) + : t && t.length && "string" !== x(t) && n(t); + }); + })(arguments), + t && !i && c()), + this + ); + }, + remove: function () { + return ( + ce.each(arguments, function (e, t) { + var n; + while (-1 < (n = ce.inArray(t, s, n))) + (s.splice(n, 1), n <= l && l--); + }), + this + ); + }, + has: function (e) { + return e ? -1 < ce.inArray(e, s) : 0 < s.length; + }, + empty: function () { + return (s && (s = []), this); + }, + disable: function () { + return ((a = u = []), (s = t = ""), this); + }, + disabled: function () { + return !s; + }, + lock: function () { + return ((a = u = []), t || i || (s = t = ""), this); + }, + locked: function () { + return !!a; + }, + fireWith: function (e, t) { + return ( + a || + ((t = [e, (t = t || []).slice ? t.slice() : t]), + u.push(t), + i || c()), + this + ); + }, + fire: function () { + return (f.fireWith(this, arguments), this); + }, + fired: function () { + return !!o; + }, + }; + return f; + }), + ce.extend({ + Deferred: function (e) { + var o = [ + [ + "notify", + "progress", + ce.Callbacks("memory"), + ce.Callbacks("memory"), + 2, + ], + [ + "resolve", + "done", + ce.Callbacks("once memory"), + ce.Callbacks("once memory"), + 0, + "resolved", + ], + [ + "reject", + "fail", + ce.Callbacks("once memory"), + ce.Callbacks("once memory"), + 1, + "rejected", + ], + ], + i = "pending", + a = { + state: function () { + return i; + }, + always: function () { + return (s.done(arguments).fail(arguments), this); + }, + catch: function (e) { + return a.then(null, e); + }, + pipe: function () { + var i = arguments; + return ce + .Deferred(function (r) { + (ce.each(o, function (e, t) { + var n = v(i[t[4]]) && i[t[4]]; + s[t[1]](function () { + var e = n && n.apply(this, arguments); + e && v(e.promise) + ? e + .promise() + .progress(r.notify) + .done(r.resolve) + .fail(r.reject) + : r[t[0] + "With"](this, n ? [e] : arguments); + }); + }), + (i = null)); + }) + .promise(); + }, + then: function (t, n, r) { + var u = 0; + function l(i, o, a, s) { + return function () { + var n = this, + r = arguments, + e = function () { + var e, t; + if (!(i < u)) { + if ((e = a.apply(n, r)) === o.promise()) + throw new TypeError("Thenable self-resolution"); + ((t = + e && + ("object" == typeof e || "function" == typeof e) && + e.then), + v(t) + ? s + ? t.call(e, l(u, o, N, s), l(u, o, q, s)) + : (u++, + t.call( + e, + l(u, o, N, s), + l(u, o, q, s), + l(u, o, N, o.notifyWith), + )) + : (a !== N && ((n = void 0), (r = [e])), + (s || o.resolveWith)(n, r))); + } + }, + t = s + ? e + : function () { + try { + e(); + } catch (e) { + (ce.Deferred.exceptionHook && + ce.Deferred.exceptionHook(e, t.error), + u <= i + 1 && + (a !== q && ((n = void 0), (r = [e])), + o.rejectWith(n, r))); + } + }; + i + ? t() + : (ce.Deferred.getErrorHook + ? (t.error = ce.Deferred.getErrorHook()) + : ce.Deferred.getStackHook && + (t.error = ce.Deferred.getStackHook()), + ie.setTimeout(t)); + }; + } + return ce + .Deferred(function (e) { + (o[0][3].add(l(0, e, v(r) ? r : N, e.notifyWith)), + o[1][3].add(l(0, e, v(t) ? t : N)), + o[2][3].add(l(0, e, v(n) ? n : q))); + }) + .promise(); + }, + promise: function (e) { + return null != e ? ce.extend(e, a) : a; + }, + }, + s = {}; + return ( + ce.each(o, function (e, t) { + var n = t[2], + r = t[5]; + ((a[t[1]] = n.add), + r && + n.add( + function () { + i = r; + }, + o[3 - e][2].disable, + o[3 - e][3].disable, + o[0][2].lock, + o[0][3].lock, + ), + n.add(t[3].fire), + (s[t[0]] = function () { + return ( + s[t[0] + "With"](this === s ? void 0 : this, arguments), + this + ); + }), + (s[t[0] + "With"] = n.fireWith)); + }), + a.promise(s), + e && e.call(s, s), + s + ); + }, + when: function (e) { + var n = arguments.length, + t = n, + r = Array(t), + i = ae.call(arguments), + o = ce.Deferred(), + a = function (t) { + return function (e) { + ((r[t] = this), + (i[t] = 1 < arguments.length ? ae.call(arguments) : e), + --n || o.resolveWith(r, i)); + }; + }; + if ( + n <= 1 && + (L(e, o.done(a(t)).resolve, o.reject, !n), + "pending" === o.state() || v(i[t] && i[t].then)) + ) + return o.then(); + while (t--) L(i[t], a(t), o.reject); + return o.promise(); + }, + })); + var H = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + ((ce.Deferred.exceptionHook = function (e, t) { + ie.console && + ie.console.warn && + e && + H.test(e.name) && + ie.console.warn("jQuery.Deferred exception: " + e.message, e.stack, t); + }), + (ce.readyException = function (e) { + ie.setTimeout(function () { + throw e; + }); + })); + var O = ce.Deferred(); + function P() { + (C.removeEventListener("DOMContentLoaded", P), + ie.removeEventListener("load", P), + ce.ready()); + } + ((ce.fn.ready = function (e) { + return ( + O.then(e)["catch"](function (e) { + ce.readyException(e); + }), + this + ); + }), + ce.extend({ + isReady: !1, + readyWait: 1, + ready: function (e) { + (!0 === e ? --ce.readyWait : ce.isReady) || + ((ce.isReady = !0) !== e && 0 < --ce.readyWait) || + O.resolveWith(C, [ce]); + }, + }), + (ce.ready.then = O.then), + "complete" === C.readyState || + ("loading" !== C.readyState && !C.documentElement.doScroll) + ? ie.setTimeout(ce.ready) + : (C.addEventListener("DOMContentLoaded", P), + ie.addEventListener("load", P))); + var M = function (e, t, n, r, i, o, a) { + var s = 0, + u = e.length, + l = null == n; + if ("object" === x(n)) + for (s in ((i = !0), n)) M(e, t, s, n[s], !0, o, a); + else if ( + void 0 !== r && + ((i = !0), + v(r) || (a = !0), + l && + (a + ? (t.call(e, r), (t = null)) + : ((l = t), + (t = function (e, t, n) { + return l.call(ce(e), n); + }))), + t) + ) + for (; s < u; s++) t(e[s], n, a ? r : r.call(e[s], s, t(e[s], n))); + return i ? e : l ? t.call(e) : u ? t(e[0], n) : o; + }, + R = /^-ms-/, + I = /-([a-z])/g; + function W(e, t) { + return t.toUpperCase(); + } + function F(e) { + return e.replace(R, "ms-").replace(I, W); + } + var $ = function (e) { + return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType; + }; + function B() { + this.expando = ce.expando + B.uid++; + } + ((B.uid = 1), + (B.prototype = { + cache: function (e) { + var t = e[this.expando]; + return ( + t || + ((t = {}), + $(e) && + (e.nodeType + ? (e[this.expando] = t) + : Object.defineProperty(e, this.expando, { + value: t, + configurable: !0, + }))), + t + ); + }, + set: function (e, t, n) { + var r, + i = this.cache(e); + if ("string" == typeof t) i[F(t)] = n; + else for (r in t) i[F(r)] = t[r]; + return i; + }, + get: function (e, t) { + return void 0 === t + ? this.cache(e) + : e[this.expando] && e[this.expando][F(t)]; + }, + access: function (e, t, n) { + return void 0 === t || (t && "string" == typeof t && void 0 === n) + ? this.get(e, t) + : (this.set(e, t, n), void 0 !== n ? n : t); + }, + remove: function (e, t) { + var n, + r = e[this.expando]; + if (void 0 !== r) { + if (void 0 !== t) { + n = (t = Array.isArray(t) + ? t.map(F) + : (t = F(t)) in r + ? [t] + : t.match(D) || []).length; + while (n--) delete r[t[n]]; + } + (void 0 === t || ce.isEmptyObject(r)) && + (e.nodeType ? (e[this.expando] = void 0) : delete e[this.expando]); + } + }, + hasData: function (e) { + var t = e[this.expando]; + return void 0 !== t && !ce.isEmptyObject(t); + }, + })); + var _ = new B(), + z = new B(), + X = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + U = /[A-Z]/g; + function V(e, t, n) { + var r, i; + if (void 0 === n && 1 === e.nodeType) + if ( + ((r = "data-" + t.replace(U, "-$&").toLowerCase()), + "string" == typeof (n = e.getAttribute(r))) + ) { + try { + n = + "true" === (i = n) || + ("false" !== i && + ("null" === i + ? null + : i === +i + "" + ? +i + : X.test(i) + ? JSON.parse(i) + : i)); + } catch (e) {} + z.set(e, t, n); + } else n = void 0; + return n; + } + (ce.extend({ + hasData: function (e) { + return z.hasData(e) || _.hasData(e); + }, + data: function (e, t, n) { + return z.access(e, t, n); + }, + removeData: function (e, t) { + z.remove(e, t); + }, + _data: function (e, t, n) { + return _.access(e, t, n); + }, + _removeData: function (e, t) { + _.remove(e, t); + }, + }), + ce.fn.extend({ + data: function (n, e) { + var t, + r, + i, + o = this[0], + a = o && o.attributes; + if (void 0 === n) { + if ( + this.length && + ((i = z.get(o)), 1 === o.nodeType && !_.get(o, "hasDataAttrs")) + ) { + t = a.length; + while (t--) + a[t] && + 0 === (r = a[t].name).indexOf("data-") && + ((r = F(r.slice(5))), V(o, r, i[r])); + _.set(o, "hasDataAttrs", !0); + } + return i; + } + return "object" == typeof n + ? this.each(function () { + z.set(this, n); + }) + : M( + this, + function (e) { + var t; + if (o && void 0 === e) + return void 0 !== (t = z.get(o, n)) + ? t + : void 0 !== (t = V(o, n)) + ? t + : void 0; + this.each(function () { + z.set(this, n, e); + }); + }, + null, + e, + 1 < arguments.length, + null, + !0, + ); + }, + removeData: function (e) { + return this.each(function () { + z.remove(this, e); + }); + }, + }), + ce.extend({ + queue: function (e, t, n) { + var r; + if (e) + return ( + (t = (t || "fx") + "queue"), + (r = _.get(e, t)), + n && + (!r || Array.isArray(n) + ? (r = _.access(e, t, ce.makeArray(n))) + : r.push(n)), + r || [] + ); + }, + dequeue: function (e, t) { + t = t || "fx"; + var n = ce.queue(e, t), + r = n.length, + i = n.shift(), + o = ce._queueHooks(e, t); + ("inprogress" === i && ((i = n.shift()), r--), + i && + ("fx" === t && n.unshift("inprogress"), + delete o.stop, + i.call( + e, + function () { + ce.dequeue(e, t); + }, + o, + )), + !r && o && o.empty.fire()); + }, + _queueHooks: function (e, t) { + var n = t + "queueHooks"; + return ( + _.get(e, n) || + _.access(e, n, { + empty: ce.Callbacks("once memory").add(function () { + _.remove(e, [t + "queue", n]); + }), + }) + ); + }, + }), + ce.fn.extend({ + queue: function (t, n) { + var e = 2; + return ( + "string" != typeof t && ((n = t), (t = "fx"), e--), + arguments.length < e + ? ce.queue(this[0], t) + : void 0 === n + ? this + : this.each(function () { + var e = ce.queue(this, t, n); + (ce._queueHooks(this, t), + "fx" === t && "inprogress" !== e[0] && ce.dequeue(this, t)); + }) + ); + }, + dequeue: function (e) { + return this.each(function () { + ce.dequeue(this, e); + }); + }, + clearQueue: function (e) { + return this.queue(e || "fx", []); + }, + promise: function (e, t) { + var n, + r = 1, + i = ce.Deferred(), + o = this, + a = this.length, + s = function () { + --r || i.resolveWith(o, [o]); + }; + ("string" != typeof e && ((t = e), (e = void 0)), (e = e || "fx")); + while (a--) + (n = _.get(o[a], e + "queueHooks")) && + n.empty && + (r++, n.empty.add(s)); + return (s(), i.promise(t)); + }, + })); + var G = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, + Y = new RegExp("^(?:([+-])=|)(" + G + ")([a-z%]*)$", "i"), + Q = ["Top", "Right", "Bottom", "Left"], + J = C.documentElement, + K = function (e) { + return ce.contains(e.ownerDocument, e); + }, + Z = { composed: !0 }; + J.getRootNode && + (K = function (e) { + return ( + ce.contains(e.ownerDocument, e) || e.getRootNode(Z) === e.ownerDocument + ); + }); + var ee = function (e, t) { + return ( + "none" === (e = t || e).style.display || + ("" === e.style.display && K(e) && "none" === ce.css(e, "display")) + ); + }; + function te(e, t, n, r) { + var i, + o, + a = 20, + s = r + ? function () { + return r.cur(); + } + : function () { + return ce.css(e, t, ""); + }, + u = s(), + l = (n && n[3]) || (ce.cssNumber[t] ? "" : "px"), + c = + e.nodeType && + (ce.cssNumber[t] || ("px" !== l && +u)) && + Y.exec(ce.css(e, t)); + if (c && c[3] !== l) { + ((u /= 2), (l = l || c[3]), (c = +u || 1)); + while (a--) + (ce.style(e, t, c + l), + (1 - o) * (1 - (o = s() / u || 0.5)) <= 0 && (a = 0), + (c /= o)); + ((c *= 2), ce.style(e, t, c + l), (n = n || [])); + } + return ( + n && + ((c = +c || +u || 0), + (i = n[1] ? c + (n[1] + 1) * n[2] : +n[2]), + r && ((r.unit = l), (r.start = c), (r.end = i))), + i + ); + } + var ne = {}; + function re(e, t) { + for (var n, r, i, o, a, s, u, l = [], c = 0, f = e.length; c < f; c++) + (r = e[c]).style && + ((n = r.style.display), + t + ? ("none" === n && + ((l[c] = _.get(r, "display") || null), + l[c] || (r.style.display = "")), + "" === r.style.display && + ee(r) && + (l[c] = + ((u = a = o = void 0), + (a = (i = r).ownerDocument), + (s = i.nodeName), + (u = ne[s]) || + ((o = a.body.appendChild(a.createElement(s))), + (u = ce.css(o, "display")), + o.parentNode.removeChild(o), + "none" === u && (u = "block"), + (ne[s] = u))))) + : "none" !== n && ((l[c] = "none"), _.set(r, "display", n))); + for (c = 0; c < f; c++) null != l[c] && (e[c].style.display = l[c]); + return e; + } + ce.fn.extend({ + show: function () { + return re(this, !0); + }, + hide: function () { + return re(this); + }, + toggle: function (e) { + return "boolean" == typeof e + ? e + ? this.show() + : this.hide() + : this.each(function () { + ee(this) ? ce(this).show() : ce(this).hide(); + }); + }, + }); + var xe, + be, + we = /^(?:checkbox|radio)$/i, + Te = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i, + Ce = /^$|^module$|\/(?:java|ecma)script/i; + ((xe = C.createDocumentFragment().appendChild(C.createElement("div"))), + (be = C.createElement("input")).setAttribute("type", "radio"), + be.setAttribute("checked", "checked"), + be.setAttribute("name", "t"), + xe.appendChild(be), + (le.checkClone = xe.cloneNode(!0).cloneNode(!0).lastChild.checked), + (xe.innerHTML = ""), + (le.noCloneChecked = !!xe.cloneNode(!0).lastChild.defaultValue), + (xe.innerHTML = ""), + (le.option = !!xe.lastChild)); + var ke = { + thead: [1, "", "
    "], + col: [2, "", "
    "], + tr: [2, "", "
    "], + td: [3, "", "
    "], + _default: [0, "", ""], + }; + function Se(e, t) { + var n; + return ( + (n = + "undefined" != typeof e.getElementsByTagName + ? e.getElementsByTagName(t || "*") + : "undefined" != typeof e.querySelectorAll + ? e.querySelectorAll(t || "*") + : []), + void 0 === t || (t && fe(e, t)) ? ce.merge([e], n) : n + ); + } + function Ee(e, t) { + for (var n = 0, r = e.length; n < r; n++) + _.set(e[n], "globalEval", !t || _.get(t[n], "globalEval")); + } + ((ke.tbody = ke.tfoot = ke.colgroup = ke.caption = ke.thead), + (ke.th = ke.td), + le.option || + (ke.optgroup = ke.option = + [1, ""])); + var je = /<|&#?\w+;/; + function Ae(e, t, n, r, i) { + for ( + var o, + a, + s, + u, + l, + c, + f = t.createDocumentFragment(), + p = [], + d = 0, + h = e.length; + d < h; + d++ + ) + if ((o = e[d]) || 0 === o) + if ("object" === x(o)) ce.merge(p, o.nodeType ? [o] : o); + else if (je.test(o)) { + ((a = a || f.appendChild(t.createElement("div"))), + (s = (Te.exec(o) || ["", ""])[1].toLowerCase()), + (u = ke[s] || ke._default), + (a.innerHTML = u[1] + ce.htmlPrefilter(o) + u[2]), + (c = u[0])); + while (c--) a = a.lastChild; + (ce.merge(p, a.childNodes), ((a = f.firstChild).textContent = "")); + } else p.push(t.createTextNode(o)); + ((f.textContent = ""), (d = 0)); + while ((o = p[d++])) + if (r && -1 < ce.inArray(o, r)) i && i.push(o); + else if ( + ((l = K(o)), (a = Se(f.appendChild(o), "script")), l && Ee(a), n) + ) { + c = 0; + while ((o = a[c++])) Ce.test(o.type || "") && n.push(o); + } + return f; + } + var De = /^([^.]*)(?:\.(.+)|)/; + function Ne() { + return !0; + } + function qe() { + return !1; + } + function Le(e, t, n, r, i, o) { + var a, s; + if ("object" == typeof t) { + for (s in ("string" != typeof n && ((r = r || n), (n = void 0)), t)) + Le(e, s, n, r, t[s], o); + return e; + } + if ( + (null == r && null == i + ? ((i = n), (r = n = void 0)) + : null == i && + ("string" == typeof n + ? ((i = r), (r = void 0)) + : ((i = r), (r = n), (n = void 0))), + !1 === i) + ) + i = qe; + else if (!i) return e; + return ( + 1 === o && + ((a = i), + ((i = function (e) { + return (ce().off(e), a.apply(this, arguments)); + }).guid = a.guid || (a.guid = ce.guid++))), + e.each(function () { + ce.event.add(this, t, i, r, n); + }) + ); + } + function He(e, r, t) { + t + ? (_.set(e, r, !1), + ce.event.add(e, r, { + namespace: !1, + handler: function (e) { + var t, + n = _.get(this, r); + if (1 & e.isTrigger && this[r]) { + if (n) + (ce.event.special[r] || {}).delegateType && e.stopPropagation(); + else if ( + ((n = ae.call(arguments)), + _.set(this, r, n), + this[r](), + (t = _.get(this, r)), + _.set(this, r, !1), + n !== t) + ) + return (e.stopImmediatePropagation(), e.preventDefault(), t); + } else + n && + (_.set(this, r, ce.event.trigger(n[0], n.slice(1), this)), + e.stopPropagation(), + (e.isImmediatePropagationStopped = Ne)); + }, + })) + : void 0 === _.get(e, r) && ce.event.add(e, r, Ne); + } + ((ce.event = { + global: {}, + add: function (t, e, n, r, i) { + var o, + a, + s, + u, + l, + c, + f, + p, + d, + h, + g, + v = _.get(t); + if ($(t)) { + (n.handler && ((n = (o = n).handler), (i = o.selector)), + i && ce.find.matchesSelector(J, i), + n.guid || (n.guid = ce.guid++), + (u = v.events) || (u = v.events = Object.create(null)), + (a = v.handle) || + (a = v.handle = + function (e) { + return "undefined" != typeof ce && ce.event.triggered !== e.type + ? ce.event.dispatch.apply(t, arguments) + : void 0; + }), + (l = (e = (e || "").match(D) || [""]).length)); + while (l--) + ((d = g = (s = De.exec(e[l]) || [])[1]), + (h = (s[2] || "").split(".").sort()), + d && + ((f = ce.event.special[d] || {}), + (d = (i ? f.delegateType : f.bindType) || d), + (f = ce.event.special[d] || {}), + (c = ce.extend( + { + type: d, + origType: g, + data: r, + handler: n, + guid: n.guid, + selector: i, + needsContext: i && ce.expr.match.needsContext.test(i), + namespace: h.join("."), + }, + o, + )), + (p = u[d]) || + (((p = u[d] = []).delegateCount = 0), + (f.setup && !1 !== f.setup.call(t, r, h, a)) || + (t.addEventListener && t.addEventListener(d, a))), + f.add && + (f.add.call(t, c), c.handler.guid || (c.handler.guid = n.guid)), + i ? p.splice(p.delegateCount++, 0, c) : p.push(c), + (ce.event.global[d] = !0))); + } + }, + remove: function (e, t, n, r, i) { + var o, + a, + s, + u, + l, + c, + f, + p, + d, + h, + g, + v = _.hasData(e) && _.get(e); + if (v && (u = v.events)) { + l = (t = (t || "").match(D) || [""]).length; + while (l--) + if ( + ((d = g = (s = De.exec(t[l]) || [])[1]), + (h = (s[2] || "").split(".").sort()), + d) + ) { + ((f = ce.event.special[d] || {}), + (p = u[(d = (r ? f.delegateType : f.bindType) || d)] || []), + (s = + s[2] && + new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)")), + (a = o = p.length)); + while (o--) + ((c = p[o]), + (!i && g !== c.origType) || + (n && n.guid !== c.guid) || + (s && !s.test(c.namespace)) || + (r && r !== c.selector && ("**" !== r || !c.selector)) || + (p.splice(o, 1), + c.selector && p.delegateCount--, + f.remove && f.remove.call(e, c))); + a && + !p.length && + ((f.teardown && !1 !== f.teardown.call(e, h, v.handle)) || + ce.removeEvent(e, d, v.handle), + delete u[d]); + } else for (d in u) ce.event.remove(e, d + t[l], n, r, !0); + ce.isEmptyObject(u) && _.remove(e, "handle events"); + } + }, + dispatch: function (e) { + var t, + n, + r, + i, + o, + a, + s = new Array(arguments.length), + u = ce.event.fix(e), + l = (_.get(this, "events") || Object.create(null))[u.type] || [], + c = ce.event.special[u.type] || {}; + for (s[0] = u, t = 1; t < arguments.length; t++) s[t] = arguments[t]; + if ( + ((u.delegateTarget = this), + !c.preDispatch || !1 !== c.preDispatch.call(this, u)) + ) { + ((a = ce.event.handlers.call(this, u, l)), (t = 0)); + while ((i = a[t++]) && !u.isPropagationStopped()) { + ((u.currentTarget = i.elem), (n = 0)); + while ((o = i.handlers[n++]) && !u.isImmediatePropagationStopped()) + (u.rnamespace && + !1 !== o.namespace && + !u.rnamespace.test(o.namespace)) || + ((u.handleObj = o), + (u.data = o.data), + void 0 !== + (r = ( + (ce.event.special[o.origType] || {}).handle || o.handler + ).apply(i.elem, s)) && + !1 === (u.result = r) && + (u.preventDefault(), u.stopPropagation())); + } + return (c.postDispatch && c.postDispatch.call(this, u), u.result); + } + }, + handlers: function (e, t) { + var n, + r, + i, + o, + a, + s = [], + u = t.delegateCount, + l = e.target; + if (u && l.nodeType && !("click" === e.type && 1 <= e.button)) + for (; l !== this; l = l.parentNode || this) + if (1 === l.nodeType && ("click" !== e.type || !0 !== l.disabled)) { + for (o = [], a = {}, n = 0; n < u; n++) + (void 0 === a[(i = (r = t[n]).selector + " ")] && + (a[i] = r.needsContext + ? -1 < ce(i, this).index(l) + : ce.find(i, this, null, [l]).length), + a[i] && o.push(r)); + o.length && s.push({ elem: l, handlers: o }); + } + return ( + (l = this), + u < t.length && s.push({ elem: l, handlers: t.slice(u) }), + s + ); + }, + addProp: function (t, e) { + Object.defineProperty(ce.Event.prototype, t, { + enumerable: !0, + configurable: !0, + get: v(e) + ? function () { + if (this.originalEvent) return e(this.originalEvent); + } + : function () { + if (this.originalEvent) return this.originalEvent[t]; + }, + set: function (e) { + Object.defineProperty(this, t, { + enumerable: !0, + configurable: !0, + writable: !0, + value: e, + }); + }, + }); + }, + fix: function (e) { + return e[ce.expando] ? e : new ce.Event(e); + }, + special: { + load: { noBubble: !0 }, + click: { + setup: function (e) { + var t = this || e; + return ( + we.test(t.type) && t.click && fe(t, "input") && He(t, "click", !0), + !1 + ); + }, + trigger: function (e) { + var t = this || e; + return ( + we.test(t.type) && t.click && fe(t, "input") && He(t, "click"), + !0 + ); + }, + _default: function (e) { + var t = e.target; + return ( + (we.test(t.type) && + t.click && + fe(t, "input") && + _.get(t, "click")) || + fe(t, "a") + ); + }, + }, + beforeunload: { + postDispatch: function (e) { + void 0 !== e.result && + e.originalEvent && + (e.originalEvent.returnValue = e.result); + }, + }, + }, + }), + (ce.removeEvent = function (e, t, n) { + e.removeEventListener && e.removeEventListener(t, n); + }), + (ce.Event = function (e, t) { + if (!(this instanceof ce.Event)) return new ce.Event(e, t); + (e && e.type + ? ((this.originalEvent = e), + (this.type = e.type), + (this.isDefaultPrevented = + e.defaultPrevented || + (void 0 === e.defaultPrevented && !1 === e.returnValue) + ? Ne + : qe), + (this.target = + e.target && 3 === e.target.nodeType + ? e.target.parentNode + : e.target), + (this.currentTarget = e.currentTarget), + (this.relatedTarget = e.relatedTarget)) + : (this.type = e), + t && ce.extend(this, t), + (this.timeStamp = (e && e.timeStamp) || Date.now()), + (this[ce.expando] = !0)); + }), + (ce.Event.prototype = { + constructor: ce.Event, + isDefaultPrevented: qe, + isPropagationStopped: qe, + isImmediatePropagationStopped: qe, + isSimulated: !1, + preventDefault: function () { + var e = this.originalEvent; + ((this.isDefaultPrevented = Ne), + e && !this.isSimulated && e.preventDefault()); + }, + stopPropagation: function () { + var e = this.originalEvent; + ((this.isPropagationStopped = Ne), + e && !this.isSimulated && e.stopPropagation()); + }, + stopImmediatePropagation: function () { + var e = this.originalEvent; + ((this.isImmediatePropagationStopped = Ne), + e && !this.isSimulated && e.stopImmediatePropagation(), + this.stopPropagation()); + }, + }), + ce.each( + { + altKey: !0, + bubbles: !0, + cancelable: !0, + changedTouches: !0, + ctrlKey: !0, + detail: !0, + eventPhase: !0, + metaKey: !0, + pageX: !0, + pageY: !0, + shiftKey: !0, + view: !0, + char: !0, + code: !0, + charCode: !0, + key: !0, + keyCode: !0, + button: !0, + buttons: !0, + clientX: !0, + clientY: !0, + offsetX: !0, + offsetY: !0, + pointerId: !0, + pointerType: !0, + screenX: !0, + screenY: !0, + targetTouches: !0, + toElement: !0, + touches: !0, + which: !0, + }, + ce.event.addProp, + ), + ce.each({ focus: "focusin", blur: "focusout" }, function (r, i) { + function o(e) { + if (C.documentMode) { + var t = _.get(this, "handle"), + n = ce.event.fix(e); + ((n.type = "focusin" === e.type ? "focus" : "blur"), + (n.isSimulated = !0), + t(e), + n.target === n.currentTarget && t(n)); + } else ce.event.simulate(i, e.target, ce.event.fix(e)); + } + ((ce.event.special[r] = { + setup: function () { + var e; + if ((He(this, r, !0), !C.documentMode)) return !1; + ((e = _.get(this, i)) || this.addEventListener(i, o), + _.set(this, i, (e || 0) + 1)); + }, + trigger: function () { + return (He(this, r), !0); + }, + teardown: function () { + var e; + if (!C.documentMode) return !1; + (e = _.get(this, i) - 1) + ? _.set(this, i, e) + : (this.removeEventListener(i, o), _.remove(this, i)); + }, + _default: function (e) { + return _.get(e.target, r); + }, + delegateType: i, + }), + (ce.event.special[i] = { + setup: function () { + var e = this.ownerDocument || this.document || this, + t = C.documentMode ? this : e, + n = _.get(t, i); + (n || + (C.documentMode + ? this.addEventListener(i, o) + : e.addEventListener(r, o, !0)), + _.set(t, i, (n || 0) + 1)); + }, + teardown: function () { + var e = this.ownerDocument || this.document || this, + t = C.documentMode ? this : e, + n = _.get(t, i) - 1; + n + ? _.set(t, i, n) + : (C.documentMode + ? this.removeEventListener(i, o) + : e.removeEventListener(r, o, !0), + _.remove(t, i)); + }, + })); + }), + ce.each( + { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout", + }, + function (e, i) { + ce.event.special[e] = { + delegateType: i, + bindType: i, + handle: function (e) { + var t, + n = e.relatedTarget, + r = e.handleObj; + return ( + (n && (n === this || ce.contains(this, n))) || + ((e.type = r.origType), + (t = r.handler.apply(this, arguments)), + (e.type = i)), + t + ); + }, + }; + }, + ), + ce.fn.extend({ + on: function (e, t, n, r) { + return Le(this, e, t, n, r); + }, + one: function (e, t, n, r) { + return Le(this, e, t, n, r, 1); + }, + off: function (e, t, n) { + var r, i; + if (e && e.preventDefault && e.handleObj) + return ( + (r = e.handleObj), + ce(e.delegateTarget).off( + r.namespace ? r.origType + "." + r.namespace : r.origType, + r.selector, + r.handler, + ), + this + ); + if ("object" == typeof e) { + for (i in e) this.off(i, t, e[i]); + return this; + } + return ( + (!1 !== t && "function" != typeof t) || ((n = t), (t = void 0)), + !1 === n && (n = qe), + this.each(function () { + ce.event.remove(this, e, n, t); + }) + ); + }, + })); + var Oe = /\s*$/g; + function Re(e, t) { + return ( + (fe(e, "table") && + fe(11 !== t.nodeType ? t : t.firstChild, "tr") && + ce(e).children("tbody")[0]) || + e + ); + } + function Ie(e) { + return ((e.type = (null !== e.getAttribute("type")) + "/" + e.type), e); + } + function We(e) { + return ( + "true/" === (e.type || "").slice(0, 5) + ? (e.type = e.type.slice(5)) + : e.removeAttribute("type"), + e + ); + } + function Fe(e, t) { + var n, r, i, o, a, s; + if (1 === t.nodeType) { + if (_.hasData(e) && (s = _.get(e).events)) + for (i in (_.remove(t, "handle events"), s)) + for (n = 0, r = s[i].length; n < r; n++) ce.event.add(t, i, s[i][n]); + z.hasData(e) && ((o = z.access(e)), (a = ce.extend({}, o)), z.set(t, a)); + } + } + function $e(n, r, i, o) { + r = g(r); + var e, + t, + a, + s, + u, + l, + c = 0, + f = n.length, + p = f - 1, + d = r[0], + h = v(d); + if (h || (1 < f && "string" == typeof d && !le.checkClone && Pe.test(d))) + return n.each(function (e) { + var t = n.eq(e); + (h && (r[0] = d.call(this, e, t.html())), $e(t, r, i, o)); + }); + if ( + f && + ((t = (e = Ae(r, n[0].ownerDocument, !1, n, o)).firstChild), + 1 === e.childNodes.length && (e = t), + t || o) + ) { + for (s = (a = ce.map(Se(e, "script"), Ie)).length; c < f; c++) + ((u = e), + c !== p && + ((u = ce.clone(u, !0, !0)), s && ce.merge(a, Se(u, "script"))), + i.call(n[c], u, c)); + if (s) + for ( + l = a[a.length - 1].ownerDocument, ce.map(a, We), c = 0; + c < s; + c++ + ) + ((u = a[c]), + Ce.test(u.type || "") && + !_.access(u, "globalEval") && + ce.contains(l, u) && + (u.src && "module" !== (u.type || "").toLowerCase() + ? ce._evalUrl && + !u.noModule && + ce._evalUrl( + u.src, + { nonce: u.nonce || u.getAttribute("nonce") }, + l, + ) + : m(u.textContent.replace(Me, ""), u, l))); + } + return n; + } + function Be(e, t, n) { + for (var r, i = t ? ce.filter(t, e) : e, o = 0; null != (r = i[o]); o++) + (n || 1 !== r.nodeType || ce.cleanData(Se(r)), + r.parentNode && + (n && K(r) && Ee(Se(r, "script")), r.parentNode.removeChild(r))); + return e; + } + (ce.extend({ + htmlPrefilter: function (e) { + return e; + }, + clone: function (e, t, n) { + var r, + i, + o, + a, + s, + u, + l, + c = e.cloneNode(!0), + f = K(e); + if ( + !( + le.noCloneChecked || + (1 !== e.nodeType && 11 !== e.nodeType) || + ce.isXMLDoc(e) + ) + ) + for (a = Se(c), r = 0, i = (o = Se(e)).length; r < i; r++) + ((s = o[r]), + (u = a[r]), + void 0, + "input" === (l = u.nodeName.toLowerCase()) && we.test(s.type) + ? (u.checked = s.checked) + : ("input" !== l && "textarea" !== l) || + (u.defaultValue = s.defaultValue)); + if (t) + if (n) + for (o = o || Se(e), a = a || Se(c), r = 0, i = o.length; r < i; r++) + Fe(o[r], a[r]); + else Fe(e, c); + return ( + 0 < (a = Se(c, "script")).length && Ee(a, !f && Se(e, "script")), + c + ); + }, + cleanData: function (e) { + for (var t, n, r, i = ce.event.special, o = 0; void 0 !== (n = e[o]); o++) + if ($(n)) { + if ((t = n[_.expando])) { + if (t.events) + for (r in t.events) + i[r] ? ce.event.remove(n, r) : ce.removeEvent(n, r, t.handle); + n[_.expando] = void 0; + } + n[z.expando] && (n[z.expando] = void 0); + } + }, + }), + ce.fn.extend({ + detach: function (e) { + return Be(this, e, !0); + }, + remove: function (e) { + return Be(this, e); + }, + text: function (e) { + return M( + this, + function (e) { + return void 0 === e + ? ce.text(this) + : this.empty().each(function () { + (1 !== this.nodeType && + 11 !== this.nodeType && + 9 !== this.nodeType) || + (this.textContent = e); + }); + }, + null, + e, + arguments.length, + ); + }, + append: function () { + return $e(this, arguments, function (e) { + (1 !== this.nodeType && + 11 !== this.nodeType && + 9 !== this.nodeType) || + Re(this, e).appendChild(e); + }); + }, + prepend: function () { + return $e(this, arguments, function (e) { + if ( + 1 === this.nodeType || + 11 === this.nodeType || + 9 === this.nodeType + ) { + var t = Re(this, e); + t.insertBefore(e, t.firstChild); + } + }); + }, + before: function () { + return $e(this, arguments, function (e) { + this.parentNode && this.parentNode.insertBefore(e, this); + }); + }, + after: function () { + return $e(this, arguments, function (e) { + this.parentNode && this.parentNode.insertBefore(e, this.nextSibling); + }); + }, + empty: function () { + for (var e, t = 0; null != (e = this[t]); t++) + 1 === e.nodeType && (ce.cleanData(Se(e, !1)), (e.textContent = "")); + return this; + }, + clone: function (e, t) { + return ( + (e = null != e && e), + (t = null == t ? e : t), + this.map(function () { + return ce.clone(this, e, t); + }) + ); + }, + html: function (e) { + return M( + this, + function (e) { + var t = this[0] || {}, + n = 0, + r = this.length; + if (void 0 === e && 1 === t.nodeType) return t.innerHTML; + if ( + "string" == typeof e && + !Oe.test(e) && + !ke[(Te.exec(e) || ["", ""])[1].toLowerCase()] + ) { + e = ce.htmlPrefilter(e); + try { + for (; n < r; n++) + 1 === (t = this[n] || {}).nodeType && + (ce.cleanData(Se(t, !1)), (t.innerHTML = e)); + t = 0; + } catch (e) {} + } + t && this.empty().append(e); + }, + null, + e, + arguments.length, + ); + }, + replaceWith: function () { + var n = []; + return $e( + this, + arguments, + function (e) { + var t = this.parentNode; + ce.inArray(this, n) < 0 && + (ce.cleanData(Se(this)), t && t.replaceChild(e, this)); + }, + n, + ); + }, + }), + ce.each( + { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith", + }, + function (e, a) { + ce.fn[e] = function (e) { + for (var t, n = [], r = ce(e), i = r.length - 1, o = 0; o <= i; o++) + ((t = o === i ? this : this.clone(!0)), + ce(r[o])[a](t), + s.apply(n, t.get())); + return this.pushStack(n); + }; + }, + )); + var _e = new RegExp("^(" + G + ")(?!px)[a-z%]+$", "i"), + ze = /^--/, + Xe = function (e) { + var t = e.ownerDocument.defaultView; + return ((t && t.opener) || (t = ie), t.getComputedStyle(e)); + }, + Ue = function (e, t, n) { + var r, + i, + o = {}; + for (i in t) ((o[i] = e.style[i]), (e.style[i] = t[i])); + for (i in ((r = n.call(e)), t)) e.style[i] = o[i]; + return r; + }, + Ve = new RegExp(Q.join("|"), "i"); + function Ge(e, t, n) { + var r, + i, + o, + a, + s = ze.test(t), + u = e.style; + return ( + (n = n || Xe(e)) && + ((a = n.getPropertyValue(t) || n[t]), + s && a && (a = a.replace(ve, "$1") || void 0), + "" !== a || K(e) || (a = ce.style(e, t)), + !le.pixelBoxStyles() && + _e.test(a) && + Ve.test(t) && + ((r = u.width), + (i = u.minWidth), + (o = u.maxWidth), + (u.minWidth = u.maxWidth = u.width = a), + (a = n.width), + (u.width = r), + (u.minWidth = i), + (u.maxWidth = o))), + void 0 !== a ? a + "" : a + ); + } + function Ye(e, t) { + return { + get: function () { + if (!e()) return (this.get = t).apply(this, arguments); + delete this.get; + }, + }; + } + !(function () { + function e() { + if (l) { + ((u.style.cssText = + "position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0"), + (l.style.cssText = + "position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%"), + J.appendChild(u).appendChild(l)); + var e = ie.getComputedStyle(l); + ((n = "1%" !== e.top), + (s = 12 === t(e.marginLeft)), + (l.style.right = "60%"), + (o = 36 === t(e.right)), + (r = 36 === t(e.width)), + (l.style.position = "absolute"), + (i = 12 === t(l.offsetWidth / 3)), + J.removeChild(u), + (l = null)); + } + } + function t(e) { + return Math.round(parseFloat(e)); + } + var n, + r, + i, + o, + a, + s, + u = C.createElement("div"), + l = C.createElement("div"); + l.style && + ((l.style.backgroundClip = "content-box"), + (l.cloneNode(!0).style.backgroundClip = ""), + (le.clearCloneStyle = "content-box" === l.style.backgroundClip), + ce.extend(le, { + boxSizingReliable: function () { + return (e(), r); + }, + pixelBoxStyles: function () { + return (e(), o); + }, + pixelPosition: function () { + return (e(), n); + }, + reliableMarginLeft: function () { + return (e(), s); + }, + scrollboxSize: function () { + return (e(), i); + }, + reliableTrDimensions: function () { + var e, t, n, r; + return ( + null == a && + ((e = C.createElement("table")), + (t = C.createElement("tr")), + (n = C.createElement("div")), + (e.style.cssText = + "position:absolute;left:-11111px;border-collapse:separate"), + (t.style.cssText = "box-sizing:content-box;border:1px solid"), + (t.style.height = "1px"), + (n.style.height = "9px"), + (n.style.display = "block"), + J.appendChild(e).appendChild(t).appendChild(n), + (r = ie.getComputedStyle(t)), + (a = + parseInt(r.height, 10) + + parseInt(r.borderTopWidth, 10) + + parseInt(r.borderBottomWidth, 10) === + t.offsetHeight), + J.removeChild(e)), + a + ); + }, + })); + })(); + var Qe = ["Webkit", "Moz", "ms"], + Je = C.createElement("div").style, + Ke = {}; + function Ze(e) { + var t = ce.cssProps[e] || Ke[e]; + return ( + t || + (e in Je + ? e + : (Ke[e] = + (function (e) { + var t = e[0].toUpperCase() + e.slice(1), + n = Qe.length; + while (n--) if ((e = Qe[n] + t) in Je) return e; + })(e) || e)) + ); + } + var et = /^(none|table(?!-c[ea]).+)/, + tt = { position: "absolute", visibility: "hidden", display: "block" }, + nt = { letterSpacing: "0", fontWeight: "400" }; + function rt(e, t, n) { + var r = Y.exec(t); + return r ? Math.max(0, r[2] - (n || 0)) + (r[3] || "px") : t; + } + function it(e, t, n, r, i, o) { + var a = "width" === t ? 1 : 0, + s = 0, + u = 0, + l = 0; + if (n === (r ? "border" : "content")) return 0; + for (; a < 4; a += 2) + ("margin" === n && (l += ce.css(e, n + Q[a], !0, i)), + r + ? ("content" === n && (u -= ce.css(e, "padding" + Q[a], !0, i)), + "margin" !== n && + (u -= ce.css(e, "border" + Q[a] + "Width", !0, i))) + : ((u += ce.css(e, "padding" + Q[a], !0, i)), + "padding" !== n + ? (u += ce.css(e, "border" + Q[a] + "Width", !0, i)) + : (s += ce.css(e, "border" + Q[a] + "Width", !0, i)))); + return ( + !r && + 0 <= o && + (u += + Math.max( + 0, + Math.ceil( + e["offset" + t[0].toUpperCase() + t.slice(1)] - o - u - s - 0.5, + ), + ) || 0), + u + l + ); + } + function ot(e, t, n) { + var r = Xe(e), + i = + (!le.boxSizingReliable() || n) && + "border-box" === ce.css(e, "boxSizing", !1, r), + o = i, + a = Ge(e, t, r), + s = "offset" + t[0].toUpperCase() + t.slice(1); + if (_e.test(a)) { + if (!n) return a; + a = "auto"; + } + return ( + ((!le.boxSizingReliable() && i) || + (!le.reliableTrDimensions() && fe(e, "tr")) || + "auto" === a || + (!parseFloat(a) && "inline" === ce.css(e, "display", !1, r))) && + e.getClientRects().length && + ((i = "border-box" === ce.css(e, "boxSizing", !1, r)), + (o = s in e) && (a = e[s])), + (a = parseFloat(a) || 0) + + it(e, t, n || (i ? "border" : "content"), o, r, a) + + "px" + ); + } + function at(e, t, n, r, i) { + return new at.prototype.init(e, t, n, r, i); + } + (ce.extend({ + cssHooks: { + opacity: { + get: function (e, t) { + if (t) { + var n = Ge(e, "opacity"); + return "" === n ? "1" : n; + } + }, + }, + }, + cssNumber: { + animationIterationCount: !0, + aspectRatio: !0, + borderImageSlice: !0, + columnCount: !0, + flexGrow: !0, + flexShrink: !0, + fontWeight: !0, + gridArea: !0, + gridColumn: !0, + gridColumnEnd: !0, + gridColumnStart: !0, + gridRow: !0, + gridRowEnd: !0, + gridRowStart: !0, + lineHeight: !0, + opacity: !0, + order: !0, + orphans: !0, + scale: !0, + widows: !0, + zIndex: !0, + zoom: !0, + fillOpacity: !0, + floodOpacity: !0, + stopOpacity: !0, + strokeMiterlimit: !0, + strokeOpacity: !0, + }, + cssProps: {}, + style: function (e, t, n, r) { + if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) { + var i, + o, + a, + s = F(t), + u = ze.test(t), + l = e.style; + if ( + (u || (t = Ze(s)), + (a = ce.cssHooks[t] || ce.cssHooks[s]), + void 0 === n) + ) + return a && "get" in a && void 0 !== (i = a.get(e, !1, r)) ? i : l[t]; + ("string" === (o = typeof n) && + (i = Y.exec(n)) && + i[1] && + ((n = te(e, t, i)), (o = "number")), + null != n && + n == n && + ("number" !== o || + u || + (n += (i && i[3]) || (ce.cssNumber[s] ? "" : "px")), + le.clearCloneStyle || + "" !== n || + 0 !== t.indexOf("background") || + (l[t] = "inherit"), + (a && "set" in a && void 0 === (n = a.set(e, n, r))) || + (u ? l.setProperty(t, n) : (l[t] = n)))); + } + }, + css: function (e, t, n, r) { + var i, + o, + a, + s = F(t); + return ( + ze.test(t) || (t = Ze(s)), + (a = ce.cssHooks[t] || ce.cssHooks[s]) && + "get" in a && + (i = a.get(e, !0, n)), + void 0 === i && (i = Ge(e, t, r)), + "normal" === i && t in nt && (i = nt[t]), + "" === n || n + ? ((o = parseFloat(i)), !0 === n || isFinite(o) ? o || 0 : i) + : i + ); + }, + }), + ce.each(["height", "width"], function (e, u) { + ce.cssHooks[u] = { + get: function (e, t, n) { + if (t) + return !et.test(ce.css(e, "display")) || + (e.getClientRects().length && e.getBoundingClientRect().width) + ? ot(e, u, n) + : Ue(e, tt, function () { + return ot(e, u, n); + }); + }, + set: function (e, t, n) { + var r, + i = Xe(e), + o = !le.scrollboxSize() && "absolute" === i.position, + a = (o || n) && "border-box" === ce.css(e, "boxSizing", !1, i), + s = n ? it(e, u, n, a, i) : 0; + return ( + a && + o && + (s -= Math.ceil( + e["offset" + u[0].toUpperCase() + u.slice(1)] - + parseFloat(i[u]) - + it(e, u, "border", !1, i) - + 0.5, + )), + s && + (r = Y.exec(t)) && + "px" !== (r[3] || "px") && + ((e.style[u] = t), (t = ce.css(e, u))), + rt(0, t, s) + ); + }, + }; + }), + (ce.cssHooks.marginLeft = Ye(le.reliableMarginLeft, function (e, t) { + if (t) + return ( + (parseFloat(Ge(e, "marginLeft")) || + e.getBoundingClientRect().left - + Ue(e, { marginLeft: 0 }, function () { + return e.getBoundingClientRect().left; + })) + "px" + ); + })), + ce.each({ margin: "", padding: "", border: "Width" }, function (i, o) { + ((ce.cssHooks[i + o] = { + expand: function (e) { + for ( + var t = 0, n = {}, r = "string" == typeof e ? e.split(" ") : [e]; + t < 4; + t++ + ) + n[i + Q[t] + o] = r[t] || r[t - 2] || r[0]; + return n; + }, + }), + "margin" !== i && (ce.cssHooks[i + o].set = rt)); + }), + ce.fn.extend({ + css: function (e, t) { + return M( + this, + function (e, t, n) { + var r, + i, + o = {}, + a = 0; + if (Array.isArray(t)) { + for (r = Xe(e), i = t.length; a < i; a++) + o[t[a]] = ce.css(e, t[a], !1, r); + return o; + } + return void 0 !== n ? ce.style(e, t, n) : ce.css(e, t); + }, + e, + t, + 1 < arguments.length, + ); + }, + }), + (((ce.Tween = at).prototype = { + constructor: at, + init: function (e, t, n, r, i, o) { + ((this.elem = e), + (this.prop = n), + (this.easing = i || ce.easing._default), + (this.options = t), + (this.start = this.now = this.cur()), + (this.end = r), + (this.unit = o || (ce.cssNumber[n] ? "" : "px"))); + }, + cur: function () { + var e = at.propHooks[this.prop]; + return e && e.get ? e.get(this) : at.propHooks._default.get(this); + }, + run: function (e) { + var t, + n = at.propHooks[this.prop]; + return ( + this.options.duration + ? (this.pos = t = + ce.easing[this.easing]( + e, + this.options.duration * e, + 0, + 1, + this.options.duration, + )) + : (this.pos = t = e), + (this.now = (this.end - this.start) * t + this.start), + this.options.step && + this.options.step.call(this.elem, this.now, this), + n && n.set ? n.set(this) : at.propHooks._default.set(this), + this + ); + }, + }).init.prototype = at.prototype), + ((at.propHooks = { + _default: { + get: function (e) { + var t; + return 1 !== e.elem.nodeType || + (null != e.elem[e.prop] && null == e.elem.style[e.prop]) + ? e.elem[e.prop] + : (t = ce.css(e.elem, e.prop, "")) && "auto" !== t + ? t + : 0; + }, + set: function (e) { + ce.fx.step[e.prop] + ? ce.fx.step[e.prop](e) + : 1 !== e.elem.nodeType || + (!ce.cssHooks[e.prop] && null == e.elem.style[Ze(e.prop)]) + ? (e.elem[e.prop] = e.now) + : ce.style(e.elem, e.prop, e.now + e.unit); + }, + }, + }).scrollTop = at.propHooks.scrollLeft = + { + set: function (e) { + e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now); + }, + }), + (ce.easing = { + linear: function (e) { + return e; + }, + swing: function (e) { + return 0.5 - Math.cos(e * Math.PI) / 2; + }, + _default: "swing", + }), + (ce.fx = at.prototype.init), + (ce.fx.step = {})); + var st, + ut, + lt, + ct, + ft = /^(?:toggle|show|hide)$/, + pt = /queueHooks$/; + function dt() { + ut && + (!1 === C.hidden && ie.requestAnimationFrame + ? ie.requestAnimationFrame(dt) + : ie.setTimeout(dt, ce.fx.interval), + ce.fx.tick()); + } + function ht() { + return ( + ie.setTimeout(function () { + st = void 0; + }), + (st = Date.now()) + ); + } + function gt(e, t) { + var n, + r = 0, + i = { height: e }; + for (t = t ? 1 : 0; r < 4; r += 2 - t) + i["margin" + (n = Q[r])] = i["padding" + n] = e; + return (t && (i.opacity = i.width = e), i); + } + function vt(e, t, n) { + for ( + var r, + i = (yt.tweeners[t] || []).concat(yt.tweeners["*"]), + o = 0, + a = i.length; + o < a; + o++ + ) + if ((r = i[o].call(n, t, e))) return r; + } + function yt(o, e, t) { + var n, + a, + r = 0, + i = yt.prefilters.length, + s = ce.Deferred().always(function () { + delete u.elem; + }), + u = function () { + if (a) return !1; + for ( + var e = st || ht(), + t = Math.max(0, l.startTime + l.duration - e), + n = 1 - (t / l.duration || 0), + r = 0, + i = l.tweens.length; + r < i; + r++ + ) + l.tweens[r].run(n); + return ( + s.notifyWith(o, [l, n, t]), + n < 1 && i + ? t + : (i || s.notifyWith(o, [l, 1, 0]), s.resolveWith(o, [l]), !1) + ); + }, + l = s.promise({ + elem: o, + props: ce.extend({}, e), + opts: ce.extend( + !0, + { specialEasing: {}, easing: ce.easing._default }, + t, + ), + originalProperties: e, + originalOptions: t, + startTime: st || ht(), + duration: t.duration, + tweens: [], + createTween: function (e, t) { + var n = ce.Tween( + o, + l.opts, + e, + t, + l.opts.specialEasing[e] || l.opts.easing, + ); + return (l.tweens.push(n), n); + }, + stop: function (e) { + var t = 0, + n = e ? l.tweens.length : 0; + if (a) return this; + for (a = !0; t < n; t++) l.tweens[t].run(1); + return ( + e + ? (s.notifyWith(o, [l, 1, 0]), s.resolveWith(o, [l, e])) + : s.rejectWith(o, [l, e]), + this + ); + }, + }), + c = l.props; + for ( + !(function (e, t) { + var n, r, i, o, a; + for (n in e) + if ( + ((i = t[(r = F(n))]), + (o = e[n]), + Array.isArray(o) && ((i = o[1]), (o = e[n] = o[0])), + n !== r && ((e[r] = o), delete e[n]), + (a = ce.cssHooks[r]) && ("expand" in a)) + ) + for (n in ((o = a.expand(o)), delete e[r], o)) + (n in e) || ((e[n] = o[n]), (t[n] = i)); + else t[r] = i; + })(c, l.opts.specialEasing); + r < i; + r++ + ) + if ((n = yt.prefilters[r].call(l, o, c, l.opts))) + return ( + v(n.stop) && + (ce._queueHooks(l.elem, l.opts.queue).stop = n.stop.bind(n)), + n + ); + return ( + ce.map(c, vt, l), + v(l.opts.start) && l.opts.start.call(o, l), + l + .progress(l.opts.progress) + .done(l.opts.done, l.opts.complete) + .fail(l.opts.fail) + .always(l.opts.always), + ce.fx.timer(ce.extend(u, { elem: o, anim: l, queue: l.opts.queue })), + l + ); + } + ((ce.Animation = ce.extend(yt, { + tweeners: { + "*": [ + function (e, t) { + var n = this.createTween(e, t); + return (te(n.elem, e, Y.exec(t), n), n); + }, + ], + }, + tweener: function (e, t) { + v(e) ? ((t = e), (e = ["*"])) : (e = e.match(D)); + for (var n, r = 0, i = e.length; r < i; r++) + ((n = e[r]), + (yt.tweeners[n] = yt.tweeners[n] || []), + yt.tweeners[n].unshift(t)); + }, + prefilters: [ + function (e, t, n) { + var r, + i, + o, + a, + s, + u, + l, + c, + f = "width" in t || "height" in t, + p = this, + d = {}, + h = e.style, + g = e.nodeType && ee(e), + v = _.get(e, "fxshow"); + for (r in (n.queue || + (null == (a = ce._queueHooks(e, "fx")).unqueued && + ((a.unqueued = 0), + (s = a.empty.fire), + (a.empty.fire = function () { + a.unqueued || s(); + })), + a.unqueued++, + p.always(function () { + p.always(function () { + (a.unqueued--, ce.queue(e, "fx").length || a.empty.fire()); + }); + })), + t)) + if (((i = t[r]), ft.test(i))) { + if ( + (delete t[r], + (o = o || "toggle" === i), + i === (g ? "hide" : "show")) + ) { + if ("show" !== i || !v || void 0 === v[r]) continue; + g = !0; + } + d[r] = (v && v[r]) || ce.style(e, r); + } + if ((u = !ce.isEmptyObject(t)) || !ce.isEmptyObject(d)) + for (r in (f && + 1 === e.nodeType && + ((n.overflow = [h.overflow, h.overflowX, h.overflowY]), + null == (l = v && v.display) && (l = _.get(e, "display")), + "none" === (c = ce.css(e, "display")) && + (l + ? (c = l) + : (re([e], !0), + (l = e.style.display || l), + (c = ce.css(e, "display")), + re([e]))), + ("inline" === c || ("inline-block" === c && null != l)) && + "none" === ce.css(e, "float") && + (u || + (p.done(function () { + h.display = l; + }), + null == l && ((c = h.display), (l = "none" === c ? "" : c))), + (h.display = "inline-block"))), + n.overflow && + ((h.overflow = "hidden"), + p.always(function () { + ((h.overflow = n.overflow[0]), + (h.overflowX = n.overflow[1]), + (h.overflowY = n.overflow[2])); + })), + (u = !1), + d)) + (u || + (v + ? "hidden" in v && (g = v.hidden) + : (v = _.access(e, "fxshow", { display: l })), + o && (v.hidden = !g), + g && re([e], !0), + p.done(function () { + for (r in (g || re([e]), _.remove(e, "fxshow"), d)) + ce.style(e, r, d[r]); + })), + (u = vt(g ? v[r] : 0, r, p)), + r in v || + ((v[r] = u.start), g && ((u.end = u.start), (u.start = 0)))); + }, + ], + prefilter: function (e, t) { + t ? yt.prefilters.unshift(e) : yt.prefilters.push(e); + }, + })), + (ce.speed = function (e, t, n) { + var r = + e && "object" == typeof e + ? ce.extend({}, e) + : { + complete: n || (!n && t) || (v(e) && e), + duration: e, + easing: (n && t) || (t && !v(t) && t), + }; + return ( + ce.fx.off + ? (r.duration = 0) + : "number" != typeof r.duration && + (r.duration in ce.fx.speeds + ? (r.duration = ce.fx.speeds[r.duration]) + : (r.duration = ce.fx.speeds._default)), + (null != r.queue && !0 !== r.queue) || (r.queue = "fx"), + (r.old = r.complete), + (r.complete = function () { + (v(r.old) && r.old.call(this), r.queue && ce.dequeue(this, r.queue)); + }), + r + ); + }), + ce.fn.extend({ + fadeTo: function (e, t, n, r) { + return this.filter(ee) + .css("opacity", 0) + .show() + .end() + .animate({ opacity: t }, e, n, r); + }, + animate: function (t, e, n, r) { + var i = ce.isEmptyObject(t), + o = ce.speed(e, n, r), + a = function () { + var e = yt(this, ce.extend({}, t), o); + (i || _.get(this, "finish")) && e.stop(!0); + }; + return ( + (a.finish = a), + i || !1 === o.queue ? this.each(a) : this.queue(o.queue, a) + ); + }, + stop: function (i, e, o) { + var a = function (e) { + var t = e.stop; + (delete e.stop, t(o)); + }; + return ( + "string" != typeof i && ((o = e), (e = i), (i = void 0)), + e && this.queue(i || "fx", []), + this.each(function () { + var e = !0, + t = null != i && i + "queueHooks", + n = ce.timers, + r = _.get(this); + if (t) r[t] && r[t].stop && a(r[t]); + else for (t in r) r[t] && r[t].stop && pt.test(t) && a(r[t]); + for (t = n.length; t--; ) + n[t].elem !== this || + (null != i && n[t].queue !== i) || + (n[t].anim.stop(o), (e = !1), n.splice(t, 1)); + (!e && o) || ce.dequeue(this, i); + }) + ); + }, + finish: function (a) { + return ( + !1 !== a && (a = a || "fx"), + this.each(function () { + var e, + t = _.get(this), + n = t[a + "queue"], + r = t[a + "queueHooks"], + i = ce.timers, + o = n ? n.length : 0; + for ( + t.finish = !0, + ce.queue(this, a, []), + r && r.stop && r.stop.call(this, !0), + e = i.length; + e--; + ) + i[e].elem === this && + i[e].queue === a && + (i[e].anim.stop(!0), i.splice(e, 1)); + for (e = 0; e < o; e++) + n[e] && n[e].finish && n[e].finish.call(this); + delete t.finish; + }) + ); + }, + }), + ce.each(["toggle", "show", "hide"], function (e, r) { + var i = ce.fn[r]; + ce.fn[r] = function (e, t, n) { + return null == e || "boolean" == typeof e + ? i.apply(this, arguments) + : this.animate(gt(r, !0), e, t, n); + }; + }), + ce.each( + { + slideDown: gt("show"), + slideUp: gt("hide"), + slideToggle: gt("toggle"), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" }, + }, + function (e, r) { + ce.fn[e] = function (e, t, n) { + return this.animate(r, e, t, n); + }; + }, + ), + (ce.timers = []), + (ce.fx.tick = function () { + var e, + t = 0, + n = ce.timers; + for (st = Date.now(); t < n.length; t++) + (e = n[t])() || n[t] !== e || n.splice(t--, 1); + (n.length || ce.fx.stop(), (st = void 0)); + }), + (ce.fx.timer = function (e) { + (ce.timers.push(e), ce.fx.start()); + }), + (ce.fx.interval = 13), + (ce.fx.start = function () { + ut || ((ut = !0), dt()); + }), + (ce.fx.stop = function () { + ut = null; + }), + (ce.fx.speeds = { slow: 600, fast: 200, _default: 400 }), + (ce.fn.delay = function (r, e) { + return ( + (r = (ce.fx && ce.fx.speeds[r]) || r), + (e = e || "fx"), + this.queue(e, function (e, t) { + var n = ie.setTimeout(e, r); + t.stop = function () { + ie.clearTimeout(n); + }; + }) + ); + }), + (lt = C.createElement("input")), + (ct = C.createElement("select").appendChild(C.createElement("option"))), + (lt.type = "checkbox"), + (le.checkOn = "" !== lt.value), + (le.optSelected = ct.selected), + ((lt = C.createElement("input")).value = "t"), + (lt.type = "radio"), + (le.radioValue = "t" === lt.value)); + var mt, + xt = ce.expr.attrHandle; + (ce.fn.extend({ + attr: function (e, t) { + return M(this, ce.attr, e, t, 1 < arguments.length); + }, + removeAttr: function (e) { + return this.each(function () { + ce.removeAttr(this, e); + }); + }, + }), + ce.extend({ + attr: function (e, t, n) { + var r, + i, + o = e.nodeType; + if (3 !== o && 8 !== o && 2 !== o) + return "undefined" == typeof e.getAttribute + ? ce.prop(e, t, n) + : ((1 === o && ce.isXMLDoc(e)) || + (i = + ce.attrHooks[t.toLowerCase()] || + (ce.expr.match.bool.test(t) ? mt : void 0)), + void 0 !== n + ? null === n + ? void ce.removeAttr(e, t) + : i && "set" in i && void 0 !== (r = i.set(e, n, t)) + ? r + : (e.setAttribute(t, n + ""), n) + : i && "get" in i && null !== (r = i.get(e, t)) + ? r + : null == (r = ce.find.attr(e, t)) + ? void 0 + : r); + }, + attrHooks: { + type: { + set: function (e, t) { + if (!le.radioValue && "radio" === t && fe(e, "input")) { + var n = e.value; + return (e.setAttribute("type", t), n && (e.value = n), t); + } + }, + }, + }, + removeAttr: function (e, t) { + var n, + r = 0, + i = t && t.match(D); + if (i && 1 === e.nodeType) while ((n = i[r++])) e.removeAttribute(n); + }, + }), + (mt = { + set: function (e, t, n) { + return (!1 === t ? ce.removeAttr(e, n) : e.setAttribute(n, n), n); + }, + }), + ce.each(ce.expr.match.bool.source.match(/\w+/g), function (e, t) { + var a = xt[t] || ce.find.attr; + xt[t] = function (e, t, n) { + var r, + i, + o = t.toLowerCase(); + return ( + n || + ((i = xt[o]), + (xt[o] = r), + (r = null != a(e, t, n) ? o : null), + (xt[o] = i)), + r + ); + }; + })); + var bt = /^(?:input|select|textarea|button)$/i, + wt = /^(?:a|area)$/i; + function Tt(e) { + return (e.match(D) || []).join(" "); + } + function Ct(e) { + return (e.getAttribute && e.getAttribute("class")) || ""; + } + function kt(e) { + return Array.isArray(e) ? e : ("string" == typeof e && e.match(D)) || []; + } + (ce.fn.extend({ + prop: function (e, t) { + return M(this, ce.prop, e, t, 1 < arguments.length); + }, + removeProp: function (e) { + return this.each(function () { + delete this[ce.propFix[e] || e]; + }); + }, + }), + ce.extend({ + prop: function (e, t, n) { + var r, + i, + o = e.nodeType; + if (3 !== o && 8 !== o && 2 !== o) + return ( + (1 === o && ce.isXMLDoc(e)) || + ((t = ce.propFix[t] || t), (i = ce.propHooks[t])), + void 0 !== n + ? i && "set" in i && void 0 !== (r = i.set(e, n, t)) + ? r + : (e[t] = n) + : i && "get" in i && null !== (r = i.get(e, t)) + ? r + : e[t] + ); + }, + propHooks: { + tabIndex: { + get: function (e) { + var t = ce.find.attr(e, "tabindex"); + return t + ? parseInt(t, 10) + : bt.test(e.nodeName) || (wt.test(e.nodeName) && e.href) + ? 0 + : -1; + }, + }, + }, + propFix: { for: "htmlFor", class: "className" }, + }), + le.optSelected || + (ce.propHooks.selected = { + get: function (e) { + var t = e.parentNode; + return (t && t.parentNode && t.parentNode.selectedIndex, null); + }, + set: function (e) { + var t = e.parentNode; + t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex); + }, + }), + ce.each( + [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable", + ], + function () { + ce.propFix[this.toLowerCase()] = this; + }, + ), + ce.fn.extend({ + addClass: function (t) { + var e, n, r, i, o, a; + return v(t) + ? this.each(function (e) { + ce(this).addClass(t.call(this, e, Ct(this))); + }) + : (e = kt(t)).length + ? this.each(function () { + if ( + ((r = Ct(this)), + (n = 1 === this.nodeType && " " + Tt(r) + " ")) + ) { + for (o = 0; o < e.length; o++) + ((i = e[o]), + n.indexOf(" " + i + " ") < 0 && (n += i + " ")); + ((a = Tt(n)), r !== a && this.setAttribute("class", a)); + } + }) + : this; + }, + removeClass: function (t) { + var e, n, r, i, o, a; + return v(t) + ? this.each(function (e) { + ce(this).removeClass(t.call(this, e, Ct(this))); + }) + : arguments.length + ? (e = kt(t)).length + ? this.each(function () { + if ( + ((r = Ct(this)), + (n = 1 === this.nodeType && " " + Tt(r) + " ")) + ) { + for (o = 0; o < e.length; o++) { + i = e[o]; + while (-1 < n.indexOf(" " + i + " ")) + n = n.replace(" " + i + " ", " "); + } + ((a = Tt(n)), r !== a && this.setAttribute("class", a)); + } + }) + : this + : this.attr("class", ""); + }, + toggleClass: function (t, n) { + var e, + r, + i, + o, + a = typeof t, + s = "string" === a || Array.isArray(t); + return v(t) + ? this.each(function (e) { + ce(this).toggleClass(t.call(this, e, Ct(this), n), n); + }) + : "boolean" == typeof n && s + ? n + ? this.addClass(t) + : this.removeClass(t) + : ((e = kt(t)), + this.each(function () { + if (s) + for (o = ce(this), i = 0; i < e.length; i++) + ((r = e[i]), + o.hasClass(r) ? o.removeClass(r) : o.addClass(r)); + else + (void 0 !== t && "boolean" !== a) || + ((r = Ct(this)) && _.set(this, "__className__", r), + this.setAttribute && + this.setAttribute( + "class", + r || !1 === t ? "" : _.get(this, "__className__") || "", + )); + })); + }, + hasClass: function (e) { + var t, + n, + r = 0; + t = " " + e + " "; + while ((n = this[r++])) + if (1 === n.nodeType && -1 < (" " + Tt(Ct(n)) + " ").indexOf(t)) + return !0; + return !1; + }, + })); + var St = /\r/g; + (ce.fn.extend({ + val: function (n) { + var r, + e, + i, + t = this[0]; + return arguments.length + ? ((i = v(n)), + this.each(function (e) { + var t; + 1 === this.nodeType && + (null == (t = i ? n.call(this, e, ce(this).val()) : n) + ? (t = "") + : "number" == typeof t + ? (t += "") + : Array.isArray(t) && + (t = ce.map(t, function (e) { + return null == e ? "" : e + ""; + })), + ((r = + ce.valHooks[this.type] || + ce.valHooks[this.nodeName.toLowerCase()]) && + "set" in r && + void 0 !== r.set(this, t, "value")) || + (this.value = t)); + })) + : t + ? (r = + ce.valHooks[t.type] || ce.valHooks[t.nodeName.toLowerCase()]) && + "get" in r && + void 0 !== (e = r.get(t, "value")) + ? e + : "string" == typeof (e = t.value) + ? e.replace(St, "") + : null == e + ? "" + : e + : void 0; + }, + }), + ce.extend({ + valHooks: { + option: { + get: function (e) { + var t = ce.find.attr(e, "value"); + return null != t ? t : Tt(ce.text(e)); + }, + }, + select: { + get: function (e) { + var t, + n, + r, + i = e.options, + o = e.selectedIndex, + a = "select-one" === e.type, + s = a ? null : [], + u = a ? o + 1 : i.length; + for (r = o < 0 ? u : a ? o : 0; r < u; r++) + if ( + ((n = i[r]).selected || r === o) && + !n.disabled && + (!n.parentNode.disabled || !fe(n.parentNode, "optgroup")) + ) { + if (((t = ce(n).val()), a)) return t; + s.push(t); + } + return s; + }, + set: function (e, t) { + var n, + r, + i = e.options, + o = ce.makeArray(t), + a = i.length; + while (a--) + ((r = i[a]).selected = + -1 < ce.inArray(ce.valHooks.option.get(r), o)) && (n = !0); + return (n || (e.selectedIndex = -1), o); + }, + }, + }, + }), + ce.each(["radio", "checkbox"], function () { + ((ce.valHooks[this] = { + set: function (e, t) { + if (Array.isArray(t)) + return (e.checked = -1 < ce.inArray(ce(e).val(), t)); + }, + }), + le.checkOn || + (ce.valHooks[this].get = function (e) { + return null === e.getAttribute("value") ? "on" : e.value; + })); + })); + var Et = ie.location, + jt = { guid: Date.now() }, + At = /\?/; + ce.parseXML = function (e) { + var t, n; + if (!e || "string" != typeof e) return null; + try { + t = new ie.DOMParser().parseFromString(e, "text/xml"); + } catch (e) {} + return ( + (n = t && t.getElementsByTagName("parsererror")[0]), + (t && !n) || + ce.error( + "Invalid XML: " + + (n + ? ce + .map(n.childNodes, function (e) { + return e.textContent; + }) + .join("\n") + : e), + ), + t + ); + }; + var Dt = /^(?:focusinfocus|focusoutblur)$/, + Nt = function (e) { + e.stopPropagation(); + }; + (ce.extend(ce.event, { + trigger: function (e, t, n, r) { + var i, + o, + a, + s, + u, + l, + c, + f, + p = [n || C], + d = ue.call(e, "type") ? e.type : e, + h = ue.call(e, "namespace") ? e.namespace.split(".") : []; + if ( + ((o = f = a = n = n || C), + 3 !== n.nodeType && + 8 !== n.nodeType && + !Dt.test(d + ce.event.triggered) && + (-1 < d.indexOf(".") && ((d = (h = d.split(".")).shift()), h.sort()), + (u = d.indexOf(":") < 0 && "on" + d), + ((e = e[ce.expando] + ? e + : new ce.Event(d, "object" == typeof e && e)).isTrigger = r + ? 2 + : 3), + (e.namespace = h.join(".")), + (e.rnamespace = e.namespace + ? new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)") + : null), + (e.result = void 0), + e.target || (e.target = n), + (t = null == t ? [e] : ce.makeArray(t, [e])), + (c = ce.event.special[d] || {}), + r || !c.trigger || !1 !== c.trigger.apply(n, t))) + ) { + if (!r && !c.noBubble && !y(n)) { + for ( + s = c.delegateType || d, Dt.test(s + d) || (o = o.parentNode); + o; + o = o.parentNode + ) + (p.push(o), (a = o)); + a === (n.ownerDocument || C) && + p.push(a.defaultView || a.parentWindow || ie); + } + i = 0; + while ((o = p[i++]) && !e.isPropagationStopped()) + ((f = o), + (e.type = 1 < i ? s : c.bindType || d), + (l = + (_.get(o, "events") || Object.create(null))[e.type] && + _.get(o, "handle")) && l.apply(o, t), + (l = u && o[u]) && + l.apply && + $(o) && + ((e.result = l.apply(o, t)), + !1 === e.result && e.preventDefault())); + return ( + (e.type = d), + r || + e.isDefaultPrevented() || + (c._default && !1 !== c._default.apply(p.pop(), t)) || + !$(n) || + (u && + v(n[d]) && + !y(n) && + ((a = n[u]) && (n[u] = null), + (ce.event.triggered = d), + e.isPropagationStopped() && f.addEventListener(d, Nt), + n[d](), + e.isPropagationStopped() && f.removeEventListener(d, Nt), + (ce.event.triggered = void 0), + a && (n[u] = a))), + e.result + ); + } + }, + simulate: function (e, t, n) { + var r = ce.extend(new ce.Event(), n, { type: e, isSimulated: !0 }); + ce.event.trigger(r, null, t); + }, + }), + ce.fn.extend({ + trigger: function (e, t) { + return this.each(function () { + ce.event.trigger(e, t, this); + }); + }, + triggerHandler: function (e, t) { + var n = this[0]; + if (n) return ce.event.trigger(e, t, n, !0); + }, + })); + var qt = /\[\]$/, + Lt = /\r?\n/g, + Ht = /^(?:submit|button|image|reset|file)$/i, + Ot = /^(?:input|select|textarea|keygen)/i; + function Pt(n, e, r, i) { + var t; + if (Array.isArray(e)) + ce.each(e, function (e, t) { + r || qt.test(n) + ? i(n, t) + : Pt( + n + "[" + ("object" == typeof t && null != t ? e : "") + "]", + t, + r, + i, + ); + }); + else if (r || "object" !== x(e)) i(n, e); + else for (t in e) Pt(n + "[" + t + "]", e[t], r, i); + } + ((ce.param = function (e, t) { + var n, + r = [], + i = function (e, t) { + var n = v(t) ? t() : t; + r[r.length] = + encodeURIComponent(e) + "=" + encodeURIComponent(null == n ? "" : n); + }; + if (null == e) return ""; + if (Array.isArray(e) || (e.jquery && !ce.isPlainObject(e))) + ce.each(e, function () { + i(this.name, this.value); + }); + else for (n in e) Pt(n, e[n], t, i); + return r.join("&"); + }), + ce.fn.extend({ + serialize: function () { + return ce.param(this.serializeArray()); + }, + serializeArray: function () { + return this.map(function () { + var e = ce.prop(this, "elements"); + return e ? ce.makeArray(e) : this; + }) + .filter(function () { + var e = this.type; + return ( + this.name && + !ce(this).is(":disabled") && + Ot.test(this.nodeName) && + !Ht.test(e) && + (this.checked || !we.test(e)) + ); + }) + .map(function (e, t) { + var n = ce(this).val(); + return null == n + ? null + : Array.isArray(n) + ? ce.map(n, function (e) { + return { name: t.name, value: e.replace(Lt, "\r\n") }; + }) + : { name: t.name, value: n.replace(Lt, "\r\n") }; + }) + .get(); + }, + })); + var Mt = /%20/g, + Rt = /#.*$/, + It = /([?&])_=[^&]*/, + Wt = /^(.*?):[ \t]*([^\r\n]*)$/gm, + Ft = /^(?:GET|HEAD)$/, + $t = /^\/\//, + Bt = {}, + _t = {}, + zt = "*/".concat("*"), + Xt = C.createElement("a"); + function Ut(o) { + return function (e, t) { + "string" != typeof e && ((t = e), (e = "*")); + var n, + r = 0, + i = e.toLowerCase().match(D) || []; + if (v(t)) + while ((n = i[r++])) + "+" === n[0] + ? ((n = n.slice(1) || "*"), (o[n] = o[n] || []).unshift(t)) + : (o[n] = o[n] || []).push(t); + }; + } + function Vt(t, i, o, a) { + var s = {}, + u = t === _t; + function l(e) { + var r; + return ( + (s[e] = !0), + ce.each(t[e] || [], function (e, t) { + var n = t(i, o, a); + return "string" != typeof n || u || s[n] + ? u + ? !(r = n) + : void 0 + : (i.dataTypes.unshift(n), l(n), !1); + }), + r + ); + } + return l(i.dataTypes[0]) || (!s["*"] && l("*")); + } + function Gt(e, t) { + var n, + r, + i = ce.ajaxSettings.flatOptions || {}; + for (n in t) void 0 !== t[n] && ((i[n] ? e : r || (r = {}))[n] = t[n]); + return (r && ce.extend(!0, e, r), e); + } + ((Xt.href = Et.href), + ce.extend({ + active: 0, + lastModified: {}, + etag: {}, + ajaxSettings: { + url: Et.href, + type: "GET", + isLocal: + /^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test( + Et.protocol, + ), + global: !0, + processData: !0, + async: !0, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + accepts: { + "*": zt, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript", + }, + contents: { xml: /\bxml\b/, html: /\bhtml/, json: /\bjson\b/ }, + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON", + }, + converters: { + "* text": String, + "text html": !0, + "text json": JSON.parse, + "text xml": ce.parseXML, + }, + flatOptions: { url: !0, context: !0 }, + }, + ajaxSetup: function (e, t) { + return t ? Gt(Gt(e, ce.ajaxSettings), t) : Gt(ce.ajaxSettings, e); + }, + ajaxPrefilter: Ut(Bt), + ajaxTransport: Ut(_t), + ajax: function (e, t) { + ("object" == typeof e && ((t = e), (e = void 0)), (t = t || {})); + var c, + f, + p, + n, + d, + r, + h, + g, + i, + o, + v = ce.ajaxSetup({}, t), + y = v.context || v, + m = v.context && (y.nodeType || y.jquery) ? ce(y) : ce.event, + x = ce.Deferred(), + b = ce.Callbacks("once memory"), + w = v.statusCode || {}, + a = {}, + s = {}, + u = "canceled", + T = { + readyState: 0, + getResponseHeader: function (e) { + var t; + if (h) { + if (!n) { + n = {}; + while ((t = Wt.exec(p))) + n[t[1].toLowerCase() + " "] = ( + n[t[1].toLowerCase() + " "] || [] + ).concat(t[2]); + } + t = n[e.toLowerCase() + " "]; + } + return null == t ? null : t.join(", "); + }, + getAllResponseHeaders: function () { + return h ? p : null; + }, + setRequestHeader: function (e, t) { + return ( + null == h && + ((e = s[e.toLowerCase()] = s[e.toLowerCase()] || e), + (a[e] = t)), + this + ); + }, + overrideMimeType: function (e) { + return (null == h && (v.mimeType = e), this); + }, + statusCode: function (e) { + var t; + if (e) + if (h) T.always(e[T.status]); + else for (t in e) w[t] = [w[t], e[t]]; + return this; + }, + abort: function (e) { + var t = e || u; + return (c && c.abort(t), l(0, t), this); + }, + }; + if ( + (x.promise(T), + (v.url = ((e || v.url || Et.href) + "").replace( + $t, + Et.protocol + "//", + )), + (v.type = t.method || t.type || v.method || v.type), + (v.dataTypes = (v.dataType || "*").toLowerCase().match(D) || [""]), + null == v.crossDomain) + ) { + r = C.createElement("a"); + try { + ((r.href = v.url), + (r.href = r.href), + (v.crossDomain = + Xt.protocol + "//" + Xt.host != r.protocol + "//" + r.host)); + } catch (e) { + v.crossDomain = !0; + } + } + if ( + (v.data && + v.processData && + "string" != typeof v.data && + (v.data = ce.param(v.data, v.traditional)), + Vt(Bt, v, t, T), + h) + ) + return T; + for (i in ((g = ce.event && v.global) && + 0 == ce.active++ && + ce.event.trigger("ajaxStart"), + (v.type = v.type.toUpperCase()), + (v.hasContent = !Ft.test(v.type)), + (f = v.url.replace(Rt, "")), + v.hasContent + ? v.data && + v.processData && + 0 === + (v.contentType || "").indexOf( + "application/x-www-form-urlencoded", + ) && + (v.data = v.data.replace(Mt, "+")) + : ((o = v.url.slice(f.length)), + v.data && + (v.processData || "string" == typeof v.data) && + ((f += (At.test(f) ? "&" : "?") + v.data), delete v.data), + !1 === v.cache && + ((f = f.replace(It, "$1")), + (o = (At.test(f) ? "&" : "?") + "_=" + jt.guid++ + o)), + (v.url = f + o)), + v.ifModified && + (ce.lastModified[f] && + T.setRequestHeader("If-Modified-Since", ce.lastModified[f]), + ce.etag[f] && T.setRequestHeader("If-None-Match", ce.etag[f])), + ((v.data && v.hasContent && !1 !== v.contentType) || t.contentType) && + T.setRequestHeader("Content-Type", v.contentType), + T.setRequestHeader( + "Accept", + v.dataTypes[0] && v.accepts[v.dataTypes[0]] + ? v.accepts[v.dataTypes[0]] + + ("*" !== v.dataTypes[0] ? ", " + zt + "; q=0.01" : "") + : v.accepts["*"], + ), + v.headers)) + T.setRequestHeader(i, v.headers[i]); + if (v.beforeSend && (!1 === v.beforeSend.call(y, T, v) || h)) + return T.abort(); + if ( + ((u = "abort"), + b.add(v.complete), + T.done(v.success), + T.fail(v.error), + (c = Vt(_t, v, t, T))) + ) { + if (((T.readyState = 1), g && m.trigger("ajaxSend", [T, v]), h)) + return T; + v.async && + 0 < v.timeout && + (d = ie.setTimeout(function () { + T.abort("timeout"); + }, v.timeout)); + try { + ((h = !1), c.send(a, l)); + } catch (e) { + if (h) throw e; + l(-1, e); + } + } else l(-1, "No Transport"); + function l(e, t, n, r) { + var i, + o, + a, + s, + u, + l = t; + h || + ((h = !0), + d && ie.clearTimeout(d), + (c = void 0), + (p = r || ""), + (T.readyState = 0 < e ? 4 : 0), + (i = (200 <= e && e < 300) || 304 === e), + n && + (s = (function (e, t, n) { + var r, + i, + o, + a, + s = e.contents, + u = e.dataTypes; + while ("*" === u[0]) + (u.shift(), + void 0 === r && + (r = e.mimeType || t.getResponseHeader("Content-Type"))); + if (r) + for (i in s) + if (s[i] && s[i].test(r)) { + u.unshift(i); + break; + } + if (u[0] in n) o = u[0]; + else { + for (i in n) { + if (!u[0] || e.converters[i + " " + u[0]]) { + o = i; + break; + } + a || (a = i); + } + o = o || a; + } + if (o) return (o !== u[0] && u.unshift(o), n[o]); + })(v, T, n)), + !i && + -1 < ce.inArray("script", v.dataTypes) && + ce.inArray("json", v.dataTypes) < 0 && + (v.converters["text script"] = function () {}), + (s = (function (e, t, n, r) { + var i, + o, + a, + s, + u, + l = {}, + c = e.dataTypes.slice(); + if (c[1]) + for (a in e.converters) l[a.toLowerCase()] = e.converters[a]; + o = c.shift(); + while (o) + if ( + (e.responseFields[o] && (n[e.responseFields[o]] = t), + !u && r && e.dataFilter && (t = e.dataFilter(t, e.dataType)), + (u = o), + (o = c.shift())) + ) + if ("*" === o) o = u; + else if ("*" !== u && u !== o) { + if (!(a = l[u + " " + o] || l["* " + o])) + for (i in l) + if ( + (s = i.split(" "))[1] === o && + (a = l[u + " " + s[0]] || l["* " + s[0]]) + ) { + !0 === a + ? (a = l[i]) + : !0 !== l[i] && ((o = s[0]), c.unshift(s[1])); + break; + } + if (!0 !== a) + if (a && e["throws"]) t = a(t); + else + try { + t = a(t); + } catch (e) { + return { + state: "parsererror", + error: a + ? e + : "No conversion from " + u + " to " + o, + }; + } + } + return { state: "success", data: t }; + })(v, s, T, i)), + i + ? (v.ifModified && + ((u = T.getResponseHeader("Last-Modified")) && + (ce.lastModified[f] = u), + (u = T.getResponseHeader("etag")) && (ce.etag[f] = u)), + 204 === e || "HEAD" === v.type + ? (l = "nocontent") + : 304 === e + ? (l = "notmodified") + : ((l = s.state), (o = s.data), (i = !(a = s.error)))) + : ((a = l), (!e && l) || ((l = "error"), e < 0 && (e = 0))), + (T.status = e), + (T.statusText = (t || l) + ""), + i ? x.resolveWith(y, [o, l, T]) : x.rejectWith(y, [T, l, a]), + T.statusCode(w), + (w = void 0), + g && m.trigger(i ? "ajaxSuccess" : "ajaxError", [T, v, i ? o : a]), + b.fireWith(y, [T, l]), + g && + (m.trigger("ajaxComplete", [T, v]), + --ce.active || ce.event.trigger("ajaxStop"))); + } + return T; + }, + getJSON: function (e, t, n) { + return ce.get(e, t, n, "json"); + }, + getScript: function (e, t) { + return ce.get(e, void 0, t, "script"); + }, + }), + ce.each(["get", "post"], function (e, i) { + ce[i] = function (e, t, n, r) { + return ( + v(t) && ((r = r || n), (n = t), (t = void 0)), + ce.ajax( + ce.extend( + { url: e, type: i, dataType: r, data: t, success: n }, + ce.isPlainObject(e) && e, + ), + ) + ); + }; + }), + ce.ajaxPrefilter(function (e) { + var t; + for (t in e.headers) + "content-type" === t.toLowerCase() && + (e.contentType = e.headers[t] || ""); + }), + (ce._evalUrl = function (e, t, n) { + return ce.ajax({ + url: e, + type: "GET", + dataType: "script", + cache: !0, + async: !1, + global: !1, + converters: { "text script": function () {} }, + dataFilter: function (e) { + ce.globalEval(e, t, n); + }, + }); + }), + ce.fn.extend({ + wrapAll: function (e) { + var t; + return ( + this[0] && + (v(e) && (e = e.call(this[0])), + (t = ce(e, this[0].ownerDocument).eq(0).clone(!0)), + this[0].parentNode && t.insertBefore(this[0]), + t + .map(function () { + var e = this; + while (e.firstElementChild) e = e.firstElementChild; + return e; + }) + .append(this)), + this + ); + }, + wrapInner: function (n) { + return v(n) + ? this.each(function (e) { + ce(this).wrapInner(n.call(this, e)); + }) + : this.each(function () { + var e = ce(this), + t = e.contents(); + t.length ? t.wrapAll(n) : e.append(n); + }); + }, + wrap: function (t) { + var n = v(t); + return this.each(function (e) { + ce(this).wrapAll(n ? t.call(this, e) : t); + }); + }, + unwrap: function (e) { + return ( + this.parent(e) + .not("body") + .each(function () { + ce(this).replaceWith(this.childNodes); + }), + this + ); + }, + }), + (ce.expr.pseudos.hidden = function (e) { + return !ce.expr.pseudos.visible(e); + }), + (ce.expr.pseudos.visible = function (e) { + return !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length); + }), + (ce.ajaxSettings.xhr = function () { + try { + return new ie.XMLHttpRequest(); + } catch (e) {} + })); + var Yt = { 0: 200, 1223: 204 }, + Qt = ce.ajaxSettings.xhr(); + ((le.cors = !!Qt && "withCredentials" in Qt), + (le.ajax = Qt = !!Qt), + ce.ajaxTransport(function (i) { + var o, a; + if (le.cors || (Qt && !i.crossDomain)) + return { + send: function (e, t) { + var n, + r = i.xhr(); + if ( + (r.open(i.type, i.url, i.async, i.username, i.password), + i.xhrFields) + ) + for (n in i.xhrFields) r[n] = i.xhrFields[n]; + for (n in (i.mimeType && + r.overrideMimeType && + r.overrideMimeType(i.mimeType), + i.crossDomain || + e["X-Requested-With"] || + (e["X-Requested-With"] = "XMLHttpRequest"), + e)) + r.setRequestHeader(n, e[n]); + ((o = function (e) { + return function () { + o && + ((o = + a = + r.onload = + r.onerror = + r.onabort = + r.ontimeout = + r.onreadystatechange = + null), + "abort" === e + ? r.abort() + : "error" === e + ? "number" != typeof r.status + ? t(0, "error") + : t(r.status, r.statusText) + : t( + Yt[r.status] || r.status, + r.statusText, + "text" !== (r.responseType || "text") || + "string" != typeof r.responseText + ? { binary: r.response } + : { text: r.responseText }, + r.getAllResponseHeaders(), + )); + }; + }), + (r.onload = o()), + (a = r.onerror = r.ontimeout = o("error")), + void 0 !== r.onabort + ? (r.onabort = a) + : (r.onreadystatechange = function () { + 4 === r.readyState && + ie.setTimeout(function () { + o && a(); + }); + }), + (o = o("abort"))); + try { + r.send((i.hasContent && i.data) || null); + } catch (e) { + if (o) throw e; + } + }, + abort: function () { + o && o(); + }, + }; + }), + ce.ajaxPrefilter(function (e) { + e.crossDomain && (e.contents.script = !1); + }), + ce.ajaxSetup({ + accepts: { + script: + "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript", + }, + contents: { script: /\b(?:java|ecma)script\b/ }, + converters: { + "text script": function (e) { + return (ce.globalEval(e), e); + }, + }, + }), + ce.ajaxPrefilter("script", function (e) { + (void 0 === e.cache && (e.cache = !1), e.crossDomain && (e.type = "GET")); + }), + ce.ajaxTransport("script", function (n) { + var r, i; + if (n.crossDomain || n.scriptAttrs) + return { + send: function (e, t) { + ((r = ce("