diff --git a/apps/authentication/fixtures/defaultuser.json b/apps/authentication/fixtures/user.json
similarity index 100%
rename from apps/authentication/fixtures/defaultuser.json
rename to apps/authentication/fixtures/user.json
diff --git a/apps/home/fixtures/defaulttickets.json b/apps/home/fixtures/defaulttickets.json
deleted file mode 100644
index 6cae925..0000000
--- a/apps/home/fixtures/defaulttickets.json
+++ /dev/null
@@ -1,204 +0,0 @@
-[
-{
- "model": "home.ticket",
- "pk": "0725deef-d48c-4e38-814a-ae35fcbad152",
- "fields": {
- "title": "Software Compatibility Challenge",
- "description": "Attempting to integrate a new software tool into our existing workflow, but facing compatibility challenges with other applications. Providing a detailed overview of the software stack and the specific issues encountered during integration attempts. Seeking expert guidance to resolve compatibility issues and ensure smooth workflow integration.",
- "author": "4965745e-b82a-4496-80e1-055217a780b0",
- "priority": "a680328f-0680-456c-8e26-f594e05989ad",
- "create_timestamp": "2024-01-09T00:11:40Z",
- "edit_timestamp": "2024-01-09T00:11:40Z",
- "tags": [
- "0ac68e5d-9000-4fcb-bb44-40b1b0faaa2b",
- "72fb255c-132f-4124-802d-f4c051620540",
- "cc473838-acaf-43f9-a601-dc4ab1f9026c"
- ]
- }
-},
-{
- "model": "home.ticket",
- "pk": "1e648e67-ddf6-4007-bb68-4a863961a827",
- "fields": {
- "title": "Security Patch Installation",
- "description": "There's a critical security patch that needs to be installed on all workstations to address recent vulnerabilities. Attempted to deploy the patch, but facing challenges on certain machines. Need high-priority assistance to ensure all systems are promptly updated for enhanced security measures.",
- "author": "4965745e-b82a-4496-80e1-055217a780b0",
- "priority": "a680328f-0680-456c-8e26-f594e05989ad",
- "create_timestamp": "2024-01-09T00:09:20Z",
- "edit_timestamp": "2024-01-09T00:09:20Z",
- "tags": [
- "0ac68e5d-9000-4fcb-bb44-40b1b0faaa2b",
- "72fb255c-132f-4124-802d-f4c051620540",
- "cc473838-acaf-43f9-a601-dc4ab1f9026c"
- ]
- }
-},
-{
- "model": "home.ticket",
- "pk": "433200a2-3a62-4e81-86cc-cd5e31fecd8b",
- "fields": {
- "title": "Network Connectivity Issue",
- "description": "Experiencing intermittent connection drops in the office. Several users affected. Need urgent assistance to resolve the issue.",
- "author": "4965745e-b82a-4496-80e1-055217a780b0",
- "priority": "d140a5be-cf24-4250-8b38-31338e69dffd",
- "create_timestamp": "2024-01-09T00:05:54Z",
- "edit_timestamp": "2024-01-09T00:05:54Z",
- "tags": [
- "0ac68e5d-9000-4fcb-bb44-40b1b0faaa2b",
- "28b160b5-5c8b-43a5-84d1-4179bde87e6f",
- "72fb255c-132f-4124-802d-f4c051620540"
- ]
- }
-},
-{
- "model": "home.ticket",
- "pk": "4b893b70-8fce-49a1-b546-d1960ef97f9c",
- "fields": {
- "title": "New Software Request",
- "description": "Requesting the installation of a new software tool for project management. Providing specific details on the software requirements and its relevance to project workflows. Seeking guidance on the installation process and any potential compatibility issues. Your assistance in this matter is highly appreciated.",
- "author": "4965745e-b82a-4496-80e1-055217a780b0",
- "priority": "0ebc194c-b856-4e4f-9def-cd190d1e8d43",
- "create_timestamp": "2024-01-09T00:09:59Z",
- "edit_timestamp": "2024-01-09T17:38:15Z",
- "tags": [
- "72fb255c-132f-4124-802d-f4c051620540",
- "cc473838-acaf-43f9-a601-dc4ab1f9026c",
- "dc4dc2d5-2784-4726-8a4e-99df35a143d2"
- ]
- }
-},
-{
- "model": "home.ticket",
- "pk": "587b35a3-1b47-4716-99bf-ebe22da283a1",
- "fields": {
- "title": "Database Query Performance",
- "description": "Users are reporting slow response times when querying the database. This issue is impacting productivity across multiple teams. Detailed logs and steps taken to troubleshoot are provided within the description. Urgently seeking assistance to optimize database performance and resolve the slowdown.",
- "author": "4965745e-b82a-4496-80e1-055217a780b0",
- "priority": "d140a5be-cf24-4250-8b38-31338e69dffd",
- "create_timestamp": "2024-01-09T00:08:32Z",
- "edit_timestamp": "2024-01-09T00:08:32Z",
- "tags": [
- "0ac68e5d-9000-4fcb-bb44-40b1b0faaa2b",
- "28b160b5-5c8b-43a5-84d1-4179bde87e6f",
- "72fb255c-132f-4124-802d-f4c051620540",
- "cc473838-acaf-43f9-a601-dc4ab1f9026c",
- "e8c7e801-57c3-4699-a4f4-4308fb489f60"
- ]
- }
-},
-{
- "model": "home.ticket",
- "pk": "5f39644f-0356-4818-aa07-ee6f07f36553",
- "fields": {
- "title": "Hardware Malfunction",
- "description": "The printer on the third floor is not responding. Checked cables and power source, but issue persists. Need assistance to fix the hardware problem.",
- "author": "4965745e-b82a-4496-80e1-055217a780b0",
- "priority": "e79687c6-9054-4706-b9a2-34afccfaa7c8",
- "create_timestamp": "2024-01-09T00:06:58Z",
- "edit_timestamp": "2024-01-09T00:44:49Z",
- "tags": [
- "0ac68e5d-9000-4fcb-bb44-40b1b0faaa2b",
- "72fb255c-132f-4124-802d-f4c051620540",
- "e8c7e801-57c3-4699-a4f4-4308fb489f60"
- ]
- }
-},
-{
- "model": "home.ticket",
- "pk": "68fa33a7-9ac0-4612-8d92-71201c1dd5d5",
- "fields": {
- "title": "Printer Configuration Error",
- "description": "Encountering issues with configuring a new printer for the design team. Detailed steps taken to set up the printer and the specific error messages received are provided. Urgently seeking assistance to ensure the printer is operational and meets the team's printing requirements.",
- "author": "4965745e-b82a-4496-80e1-055217a780b0",
- "priority": "d140a5be-cf24-4250-8b38-31338e69dffd",
- "create_timestamp": "2024-01-09T00:10:25Z",
- "edit_timestamp": "2024-01-09T00:10:25Z",
- "tags": [
- "0ac68e5d-9000-4fcb-bb44-40b1b0faaa2b",
- "72fb255c-132f-4124-802d-f4c051620540",
- "e8c7e801-57c3-4699-a4f4-4308fb489f60"
- ]
- }
-},
-{
- "model": "home.ticket",
- "pk": "9f72bd78-2d1f-4fd6-89fc-d9ecf8c69b3c",
- "fields": {
- "title": "VPN Connection Issue",
- "description": "Remote team members are encountering difficulties establishing a VPN connection. This is hindering their ability to access essential resources. Providing detailed information on the error messages received and troubleshooting steps taken so far. Requesting immediate attention to restore seamless VPN functionality.",
- "author": "4965745e-b82a-4496-80e1-055217a780b0",
- "priority": "e79687c6-9054-4706-b9a2-34afccfaa7c8",
- "create_timestamp": "2024-01-09T00:09:39Z",
- "edit_timestamp": "2024-01-09T00:13:27Z",
- "tags": [
- "0ac68e5d-9000-4fcb-bb44-40b1b0faaa2b",
- "28b160b5-5c8b-43a5-84d1-4179bde87e6f",
- "72fb255c-132f-4124-802d-f4c051620540"
- ]
- }
-},
-{
- "model": "home.ticket",
- "pk": "b0142315-b5c4-46a9-b02e-bdfdd6dffc37",
- "fields": {
- "title": "IT Training Request",
- "description": "Requesting IT training sessions for the marketing team to enhance their proficiency in utilizing specific software tools. Providing a detailed outline of the desired training topics and the anticipated benefits for the team. Seeking assistance in scheduling and conducting the training sessions.",
- "author": "4965745e-b82a-4496-80e1-055217a780b0",
- "priority": "0ebc194c-b856-4e4f-9def-cd190d1e8d43",
- "create_timestamp": "2024-01-09T00:12:17Z",
- "edit_timestamp": "2024-01-09T00:12:17Z",
- "tags": [
- "72fb255c-132f-4124-802d-f4c051620540",
- "cc473838-acaf-43f9-a601-dc4ab1f9026c"
- ]
- }
-},
-{
- "model": "home.ticket",
- "pk": "c470a8b3-ca54-4324-abdf-1cfa4cdf70d6",
- "fields": {
- "title": "Email Configuration Assistance",
- "description": "Need assistance in configuring email settings for a new team member. Providing the email client details and steps taken so far. Urgently seeking guidance to ensure the seamless setup of email accounts and communication channels for the new team member.",
- "author": "4965745e-b82a-4496-80e1-055217a780b0",
- "priority": "e79687c6-9054-4706-b9a2-34afccfaa7c8",
- "create_timestamp": "2024-01-09T00:11:57Z",
- "edit_timestamp": "2024-01-09T00:12:57Z",
- "tags": [
- "0ac68e5d-9000-4fcb-bb44-40b1b0faaa2b",
- "72fb255c-132f-4124-802d-f4c051620540"
- ]
- }
-},
-{
- "model": "home.ticket",
- "pk": "dd5764ad-e765-4f9b-9a9b-a3a27e60c6dd",
- "fields": {
- "title": "General Inquiry",
- "description": "Have a question regarding the new IT policies. Need clarification on specific guidelines. Please provide assistance at your earliest convenience.",
- "author": "4965745e-b82a-4496-80e1-055217a780b0",
- "priority": "0ebc194c-b856-4e4f-9def-cd190d1e8d43",
- "create_timestamp": "2024-01-09T00:07:26Z",
- "edit_timestamp": "2024-01-09T00:07:26Z",
- "tags": [
- "dc4dc2d5-2784-4726-8a4e-99df35a143d2"
- ]
- }
-},
-{
- "model": "home.ticket",
- "pk": "fd8a4ad9-04fb-4a0c-beac-e60e0739e881",
- "fields": {
- "title": "Software Update Problem",
- "description": "Unable to install the latest software update on my workstation. Getting error code XYZ. Detailed steps attempted are listed in the description.",
- "author": "4965745e-b82a-4496-80e1-055217a780b0",
- "priority": "a680328f-0680-456c-8e26-f594e05989ad",
- "create_timestamp": "2024-01-09T00:06:32Z",
- "edit_timestamp": "2024-01-09T00:06:32Z",
- "tags": [
- "0ac68e5d-9000-4fcb-bb44-40b1b0faaa2b",
- "72fb255c-132f-4124-802d-f4c051620540",
- "cc473838-acaf-43f9-a601-dc4ab1f9026c"
- ]
- }
-}
-]
diff --git a/apps/home/fixtures/newtickets.json b/apps/home/fixtures/ticket.json
similarity index 100%
rename from apps/home/fixtures/newtickets.json
rename to apps/home/fixtures/ticket.json
diff --git a/apps/home/models.py b/apps/home/models.py
index 0467a3d..a7504c4 100644
--- a/apps/home/models.py
+++ b/apps/home/models.py
@@ -55,8 +55,6 @@ class Ticket(models.Model):
max_length=650,
)
- # Dirty Foreigers
-
author = models.ForeignKey(
settings.AUTH_USER_MODEL,
verbose_name=_("author"),
diff --git a/apps/static/bootstrap.min.js b/apps/static/bootstrap.min.js
deleted file mode 100644
index c35e1da..0000000
--- a/apps/static/bootstrap.min.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/*!
- * Bootstrap v5.3.2 (https://getbootstrap.com/)
- * Copyright 2011-2023 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?module.exports=e(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e(t.Popper)}(this,(function(t){"use strict";function e(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t)for(const i in t)if("default"!==i){const s=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(e,i,s.get?s:{enumerable:!0,get:()=>t[i]})}return e.default=t,Object.freeze(e)}const i=e(t),s=new Map,n={set(t,e,i){s.has(t)||s.set(t,new Map);const n=s.get(t);n.has(e)||0===n.size?n.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(t,e)=>s.has(t)&&s.get(t).get(e)||null,remove(t,e){if(!s.has(t))return;const i=s.get(t);i.delete(e),0===i.size&&s.delete(t)}},o="transitionend",r=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),a=t=>{t.dispatchEvent(new Event(o))},l=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),c=t=>l(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(r(t)):null,h=t=>{if(!l(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},d=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),u=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?u(t.parentNode):null},_=()=>{},g=t=>{t.offsetHeight},f=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,m=[],p=()=>"rtl"===document.documentElement.dir,b=t=>{var e;e=()=>{const e=f();if(e){const i=t.NAME,s=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=s,t.jQueryInterface)}},"loading"===document.readyState?(m.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of m)t()})),m.push(e)):e()},v=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,y=(t,e,i=!0)=>{if(!i)return void v(t);const s=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const s=Number.parseFloat(e),n=Number.parseFloat(i);return s||n?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let n=!1;const r=({target:i})=>{i===e&&(n=!0,e.removeEventListener(o,r),v(t))};e.addEventListener(o,r),setTimeout((()=>{n||a(e)}),s)},w=(t,e,i,s)=>{const n=t.length;let o=t.indexOf(e);return-1===o?!i&&s?t[n-1]:t[0]:(o+=i?1:-1,s&&(o=(o+n)%n),t[Math.max(0,Math.min(o,n-1))])},A=/[^.]*(?=\..*)\.|.*/,E=/\..*/,C=/::\d+$/,T={};let k=1;const $={mouseenter:"mouseover",mouseleave:"mouseout"},S=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function L(t,e){return e&&`${e}::${k++}`||t.uidEvent||k++}function O(t){const e=L(t);return t.uidEvent=e,T[e]=T[e]||{},T[e]}function I(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function D(t,e,i){const s="string"==typeof e,n=s?i:e||i;let o=M(t);return S.has(o)||(o=t),[s,n,o]}function N(t,e,i,s,n){if("string"!=typeof e||!t)return;let[o,r,a]=D(e,i,s);if(e in $){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=O(t),c=l[a]||(l[a]={}),h=I(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&n);const d=L(r,e.replace(A,"")),u=o?function(t,e,i){return function s(n){const o=t.querySelectorAll(e);for(let{target:r}=n;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return F(n,{delegateTarget:r}),s.oneOff&&j.off(t,n.type,e,i),i.apply(r,[n])}}(t,i,r):function(t,e){return function i(s){return F(s,{delegateTarget:t}),i.oneOff&&j.off(t,s.type,e),e.apply(t,[s])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=n,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function P(t,e,i,s,n){const o=I(e[i],s,n);o&&(t.removeEventListener(i,o,Boolean(n)),delete e[i][o.uidEvent])}function x(t,e,i,s){const n=e[i]||{};for(const[o,r]of Object.entries(n))o.includes(s)&&P(t,e,i,r.callable,r.delegationSelector)}function M(t){return t=t.replace(E,""),$[t]||t}const j={on(t,e,i,s){N(t,e,i,s,!1)},one(t,e,i,s){N(t,e,i,s,!0)},off(t,e,i,s){if("string"!=typeof e||!t)return;const[n,o,r]=D(e,i,s),a=r!==e,l=O(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))x(t,l,i,e.slice(1));for(const[i,s]of Object.entries(c)){const n=i.replace(C,"");a&&!e.includes(n)||P(t,l,r,s.callable,s.delegationSelector)}}else{if(!Object.keys(c).length)return;P(t,l,r,o,n?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const s=f();let n=null,o=!0,r=!0,a=!1;e!==M(e)&&s&&(n=s.Event(e,i),s(t).trigger(n),o=!n.isPropagationStopped(),r=!n.isImmediatePropagationStopped(),a=n.isDefaultPrevented());const l=F(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&n&&n.preventDefault(),l}};function F(t,e={}){for(const[i,s]of Object.entries(e))try{t[i]=s}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>s})}return t}function z(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function H(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const B={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${H(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${H(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const s of i){let i=s.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=z(t.dataset[s])}return e},getDataAttribute:(t,e)=>z(t.getAttribute(`data-bs-${H(e)}`))};class q{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=l(e)?B.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...l(e)?B.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[s,n]of Object.entries(e)){const e=t[s],o=l(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(n).test(o))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${s}" provided type "${o}" but expected type "${n}".`)}var i}}class W extends q{constructor(t,e){super(),(t=c(t))&&(this._element=t,this._config=this._getConfig(e),n.set(this._element,this.constructor.DATA_KEY,this))}dispose(){n.remove(this._element,this.constructor.DATA_KEY),j.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){y(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return n.get(c(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.2"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const R=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?r(i.trim()):null}return e},K={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let s=t.parentNode.closest(e);for(;s;)i.push(s),s=s.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!d(t)&&h(t)))},getSelectorFromElement(t){const e=R(t);return e&&K.findOne(e)?e:null},getElementFromSelector(t){const e=R(t);return e?K.findOne(e):null},getMultipleElementsFromSelector(t){const e=R(t);return e?K.find(e):[]}},V=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,s=t.NAME;j.on(document,i,`[data-bs-dismiss="${s}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),d(this))return;const n=K.getElementFromSelector(this)||this.closest(`.${s}`);t.getOrCreateInstance(n)[e]()}))},Q=".bs.alert",X=`close${Q}`,Y=`closed${Q}`;class U extends W{static get NAME(){return"alert"}close(){if(j.trigger(this._element,X).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),j.trigger(this._element,Y),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=U.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}V(U,"close"),b(U);const G='[data-bs-toggle="button"]';class J extends W{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=J.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}j.on(document,"click.bs.button.data-api",G,(t=>{t.preventDefault();const e=t.target.closest(G);J.getOrCreateInstance(e).toggle()})),b(J);const Z=".bs.swipe",tt=`touchstart${Z}`,et=`touchmove${Z}`,it=`touchend${Z}`,st=`pointerdown${Z}`,nt=`pointerup${Z}`,ot={endCallback:null,leftCallback:null,rightCallback:null},rt={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class at extends q{constructor(t,e){super(),this._element=t,t&&at.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return ot}static get DefaultType(){return rt}static get NAME(){return"swipe"}dispose(){j.off(this._element,Z)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),v(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&v(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(j.on(this._element,st,(t=>this._start(t))),j.on(this._element,nt,(t=>this._end(t))),this._element.classList.add("pointer-event")):(j.on(this._element,tt,(t=>this._start(t))),j.on(this._element,et,(t=>this._move(t))),j.on(this._element,it,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const lt=".bs.carousel",ct=".data-api",ht="next",dt="prev",ut="left",_t="right",gt=`slide${lt}`,ft=`slid${lt}`,mt=`keydown${lt}`,pt=`mouseenter${lt}`,bt=`mouseleave${lt}`,vt=`dragstart${lt}`,yt=`load${lt}${ct}`,wt=`click${lt}${ct}`,At="carousel",Et="active",Ct=".active",Tt=".carousel-item",kt=Ct+Tt,$t={ArrowLeft:_t,ArrowRight:ut},St={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},Lt={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class Ot extends W{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=K.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===At&&this.cycle()}static get Default(){return St}static get DefaultType(){return Lt}static get NAME(){return"carousel"}next(){this._slide(ht)}nextWhenVisible(){!document.hidden&&h(this._element)&&this.next()}prev(){this._slide(dt)}pause(){this._isSliding&&a(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?j.one(this._element,ft,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void j.one(this._element,ft,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const s=t>i?ht:dt;this._slide(s,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&j.on(this._element,mt,(t=>this._keydown(t))),"hover"===this._config.pause&&(j.on(this._element,pt,(()=>this.pause())),j.on(this._element,bt,(()=>this._maybeEnableCycle()))),this._config.touch&&at.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of K.find(".carousel-item img",this._element))j.on(t,vt,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(ut)),rightCallback:()=>this._slide(this._directionToOrder(_t)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new at(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=$t[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=K.findOne(Ct,this._indicatorsElement);e.classList.remove(Et),e.removeAttribute("aria-current");const i=K.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(Et),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),s=t===ht,n=e||w(this._getItems(),i,s,this._config.wrap);if(n===i)return;const o=this._getItemIndex(n),r=e=>j.trigger(this._element,e,{relatedTarget:n,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(gt).defaultPrevented)return;if(!i||!n)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=n;const l=s?"carousel-item-start":"carousel-item-end",c=s?"carousel-item-next":"carousel-item-prev";n.classList.add(c),g(n),i.classList.add(l),n.classList.add(l),this._queueCallback((()=>{n.classList.remove(l,c),n.classList.add(Et),i.classList.remove(Et,c,l),this._isSliding=!1,r(ft)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return K.findOne(kt,this._element)}_getItems(){return K.find(Tt,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===ut?dt:ht:t===ut?ht:dt}_orderToDirection(t){return p()?t===dt?ut:_t:t===dt?_t:ut}static jQueryInterface(t){return this.each((function(){const e=Ot.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}j.on(document,wt,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=K.getElementFromSelector(this);if(!e||!e.classList.contains(At))return;t.preventDefault();const i=Ot.getOrCreateInstance(e),s=this.getAttribute("data-bs-slide-to");return s?(i.to(s),void i._maybeEnableCycle()):"next"===B.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),j.on(window,yt,(()=>{const t=K.find('[data-bs-ride="carousel"]');for(const e of t)Ot.getOrCreateInstance(e)})),b(Ot);const It=".bs.collapse",Dt=`show${It}`,Nt=`shown${It}`,Pt=`hide${It}`,xt=`hidden${It}`,Mt=`click${It}.data-api`,jt="show",Ft="collapse",zt="collapsing",Ht=`:scope .${Ft} .${Ft}`,Bt='[data-bs-toggle="collapse"]',qt={parent:null,toggle:!0},Wt={parent:"(null|element)",toggle:"boolean"};class Rt extends W{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=K.find(Bt);for(const t of i){const e=K.getSelectorFromElement(t),i=K.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return qt}static get DefaultType(){return Wt}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>Rt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(j.trigger(this._element,Dt).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(Ft),this._element.classList.add(zt),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(zt),this._element.classList.add(Ft,jt),this._element.style[e]="",j.trigger(this._element,Nt)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(j.trigger(this._element,Pt).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,g(this._element),this._element.classList.add(zt),this._element.classList.remove(Ft,jt);for(const t of this._triggerArray){const e=K.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(zt),this._element.classList.add(Ft),j.trigger(this._element,xt)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(jt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=c(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Bt);for(const e of t){const t=K.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=K.find(Ht,this._config.parent);return K.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=Rt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}j.on(document,Mt,Bt,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of K.getMultipleElementsFromSelector(this))Rt.getOrCreateInstance(t,{toggle:!1}).toggle()})),b(Rt);const Kt="dropdown",Vt=".bs.dropdown",Qt=".data-api",Xt="ArrowUp",Yt="ArrowDown",Ut=`hide${Vt}`,Gt=`hidden${Vt}`,Jt=`show${Vt}`,Zt=`shown${Vt}`,te=`click${Vt}${Qt}`,ee=`keydown${Vt}${Qt}`,ie=`keyup${Vt}${Qt}`,se="show",ne='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',oe=`${ne}.${se}`,re=".dropdown-menu",ae=p()?"top-end":"top-start",le=p()?"top-start":"top-end",ce=p()?"bottom-end":"bottom-start",he=p()?"bottom-start":"bottom-end",de=p()?"left-start":"right-start",ue=p()?"right-start":"left-start",_e={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},ge={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class fe extends W{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=K.next(this._element,re)[0]||K.prev(this._element,re)[0]||K.findOne(re,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return _e}static get DefaultType(){return ge}static get NAME(){return Kt}toggle(){return this._isShown()?this.hide():this.show()}show(){if(d(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!j.trigger(this._element,Jt,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const t of[].concat(...document.body.children))j.on(t,"mouseover",_);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(se),this._element.classList.add(se),j.trigger(this._element,Zt,t)}}hide(){if(d(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!j.trigger(this._element,Ut,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))j.off(t,"mouseover",_);this._popper&&this._popper.destroy(),this._menu.classList.remove(se),this._element.classList.remove(se),this._element.setAttribute("aria-expanded","false"),B.removeDataAttribute(this._menu,"popper"),j.trigger(this._element,Gt,t)}}_getConfig(t){if("object"==typeof(t=super._getConfig(t)).reference&&!l(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${Kt.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(void 0===i)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=this._parent:l(this._config.reference)?t=c(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);const e=this._getPopperConfig();this._popper=i.createPopper(t,this._menu,e)}_isShown(){return this._menu.classList.contains(se)}_getPlacement(){const t=this._parent;if(t.classList.contains("dropend"))return de;if(t.classList.contains("dropstart"))return ue;if(t.classList.contains("dropup-center"))return"top";if(t.classList.contains("dropdown-center"))return"bottom";const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?le:ae:e?he:ce}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(B.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...v(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=K.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>h(t)));i.length&&w(i,e,t===Yt,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=fe.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=K.find(oe);for(const i of e){const e=fe.getInstance(i);if(!e||!1===e._config.autoClose)continue;const s=t.composedPath(),n=s.includes(e._menu);if(s.includes(e._element)||"inside"===e._config.autoClose&&!n||"outside"===e._config.autoClose&&n)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,s=[Xt,Yt].includes(t.key);if(!s&&!i)return;if(e&&!i)return;t.preventDefault();const n=this.matches(ne)?this:K.prev(this,ne)[0]||K.next(this,ne)[0]||K.findOne(ne,t.delegateTarget.parentNode),o=fe.getOrCreateInstance(n);if(s)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),n.focus())}}j.on(document,ee,ne,fe.dataApiKeydownHandler),j.on(document,ee,re,fe.dataApiKeydownHandler),j.on(document,te,fe.clearMenus),j.on(document,ie,fe.clearMenus),j.on(document,te,ne,(function(t){t.preventDefault(),fe.getOrCreateInstance(this).toggle()})),b(fe);const me="backdrop",pe="show",be=`mousedown.bs.${me}`,ve={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},ye={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class we extends q{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return ve}static get DefaultType(){return ye}static get NAME(){return me}show(t){if(!this._config.isVisible)return void v(t);this._append();const e=this._getElement();this._config.isAnimated&&g(e),e.classList.add(pe),this._emulateAnimation((()=>{v(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(pe),this._emulateAnimation((()=>{this.dispose(),v(t)}))):v(t)}dispose(){this._isAppended&&(j.off(this._element,be),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=c(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),j.on(t,be,(()=>{v(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){y(t,this._getElement(),this._config.isAnimated)}}const Ae=".bs.focustrap",Ee=`focusin${Ae}`,Ce=`keydown.tab${Ae}`,Te="backward",ke={autofocus:!0,trapElement:null},$e={autofocus:"boolean",trapElement:"element"};class Se extends q{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return ke}static get DefaultType(){return $e}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),j.off(document,Ae),j.on(document,Ee,(t=>this._handleFocusin(t))),j.on(document,Ce,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,j.off(document,Ae))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=K.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===Te?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?Te:"forward")}}const Le=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Oe=".sticky-top",Ie="padding-right",De="margin-right";class Ne{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,Ie,(e=>e+t)),this._setElementAttributes(Le,Ie,(e=>e+t)),this._setElementAttributes(Oe,De,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,Ie),this._resetElementAttributes(Le,Ie),this._resetElementAttributes(Oe,De)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const s=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+s)return;this._saveInitialAttribute(t,e);const n=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(n))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&B.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=B.getDataAttribute(t,e);null!==i?(B.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(l(t))e(t);else for(const i of K.find(t,this._element))e(i)}}const Pe=".bs.modal",xe=`hide${Pe}`,Me=`hidePrevented${Pe}`,je=`hidden${Pe}`,Fe=`show${Pe}`,ze=`shown${Pe}`,He=`resize${Pe}`,Be=`click.dismiss${Pe}`,qe=`mousedown.dismiss${Pe}`,We=`keydown.dismiss${Pe}`,Re=`click${Pe}.data-api`,Ke="modal-open",Ve="show",Qe="modal-static",Xe={backdrop:!0,focus:!0,keyboard:!0},Ye={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Ue extends W{constructor(t,e){super(t,e),this._dialog=K.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new Ne,this._addEventListeners()}static get Default(){return Xe}static get DefaultType(){return Ye}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||j.trigger(this._element,Fe,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(Ke),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(j.trigger(this._element,xe).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(Ve),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){j.off(window,Pe),j.off(this._dialog,Pe),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new we({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Se({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=K.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),g(this._element),this._element.classList.add(Ve),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,j.trigger(this._element,ze,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){j.on(this._element,We,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),j.on(window,He,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),j.on(this._element,qe,(t=>{j.one(this._element,Be,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(Ke),this._resetAdjustments(),this._scrollBar.reset(),j.trigger(this._element,je)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(j.trigger(this._element,Me).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(Qe)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(Qe),this._queueCallback((()=>{this._element.classList.remove(Qe),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=p()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=p()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=Ue.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}j.on(document,Re,'[data-bs-toggle="modal"]',(function(t){const e=K.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),j.one(e,Fe,(t=>{t.defaultPrevented||j.one(e,je,(()=>{h(this)&&this.focus()}))}));const i=K.findOne(".modal.show");i&&Ue.getInstance(i).hide(),Ue.getOrCreateInstance(e).toggle(this)})),V(Ue),b(Ue);const Ge=".bs.offcanvas",Je=".data-api",Ze=`load${Ge}${Je}`,ti="show",ei="showing",ii="hiding",si=".offcanvas.show",ni=`show${Ge}`,oi=`shown${Ge}`,ri=`hide${Ge}`,ai=`hidePrevented${Ge}`,li=`hidden${Ge}`,ci=`resize${Ge}`,hi=`click${Ge}${Je}`,di=`keydown.dismiss${Ge}`,ui={backdrop:!0,keyboard:!0,scroll:!1},_i={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class gi extends W{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return ui}static get DefaultType(){return _i}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||j.trigger(this._element,ni,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new Ne).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(ei),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(ti),this._element.classList.remove(ei),j.trigger(this._element,oi,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(j.trigger(this._element,ri).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(ii),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(ti,ii),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new Ne).reset(),j.trigger(this._element,li)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new we({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():j.trigger(this._element,ai)}:null})}_initializeFocusTrap(){return new Se({trapElement:this._element})}_addEventListeners(){j.on(this._element,di,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():j.trigger(this._element,ai))}))}static jQueryInterface(t){return this.each((function(){const e=gi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}j.on(document,hi,'[data-bs-toggle="offcanvas"]',(function(t){const e=K.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),d(this))return;j.one(e,li,(()=>{h(this)&&this.focus()}));const i=K.findOne(si);i&&i!==e&&gi.getInstance(i).hide(),gi.getOrCreateInstance(e).toggle(this)})),j.on(window,Ze,(()=>{for(const t of K.find(si))gi.getOrCreateInstance(t).show()})),j.on(window,ci,(()=>{for(const t of K.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&gi.getOrCreateInstance(t).hide()})),V(gi),b(gi);const fi={"*":["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:[]},mi=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),pi=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,bi=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!mi.has(i)||Boolean(pi.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},vi={allowList:fi,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},yi={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},wi={entry:"(string|element|function|null)",selector:"(string|element)"};class Ai extends q{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return vi}static get DefaultType(){return yi}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},wi)}_setContent(t,e,i){const s=K.findOne(i,t);s&&((e=this._resolvePossibleFunction(e))?l(e)?this._putElementInTemplate(c(e),s):this._config.html?s.innerHTML=this._maybeSanitize(e):s.textContent=e:s.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const s=(new window.DOMParser).parseFromString(t,"text/html"),n=[].concat(...s.body.querySelectorAll("*"));for(const t of n){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const s=[].concat(...t.attributes),n=[].concat(e["*"]||[],e[i]||[]);for(const e of s)bi(e,n)||t.removeAttribute(e.nodeName)}return s.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return v(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Ei=new Set(["sanitize","allowList","sanitizeFn"]),Ci="fade",Ti="show",ki=".modal",$i="hide.bs.modal",Si="hover",Li="focus",Oi={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},Ii={allowList:fi,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Di={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Ni extends W{constructor(t,e){if(void 0===i)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Ii}static get DefaultType(){return Di}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),j.off(this._element.closest(ki),$i,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=j.trigger(this._element,this.constructor.eventName("show")),e=(u(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:s}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(s.append(i),j.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(Ti),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))j.on(t,"mouseover",_);this._queueCallback((()=>{j.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!j.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(Ti),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))j.off(t,"mouseover",_);this._activeTrigger.click=!1,this._activeTrigger[Li]=!1,this._activeTrigger[Si]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),j.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(Ci,Ti),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(Ci),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Ai({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Ci)}_isShown(){return this.tip&&this.tip.classList.contains(Ti)}_createPopper(t){const e=v(this._config.placement,[this,t,this._element]),s=Oi[e.toUpperCase()];return i.createPopper(this._element,t,this._getPopperConfig(s))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return v(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...v(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)j.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===Si?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===Si?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");j.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?Li:Si]=!0,e._enter()})),j.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?Li:Si]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},j.on(this._element.closest(ki),$i,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=B.getDataAttributes(this._element);for(const t of Object.keys(e))Ei.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:c(t.container),"number"==typeof 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()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=Ni.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}b(Ni);const Pi={...Ni.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},xi={...Ni.DefaultType,content:"(null|string|element|function)"};class Mi extends Ni{static get Default(){return Pi}static get DefaultType(){return xi}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=Mi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}b(Mi);const ji=".bs.scrollspy",Fi=`activate${ji}`,zi=`click${ji}`,Hi=`load${ji}.data-api`,Bi="active",qi="[href]",Wi=".nav-link",Ri=`${Wi}, .nav-item > ${Wi}, .list-group-item`,Ki={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},Vi={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Qi extends W{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return Ki}static get DefaultType(){return Vi}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=c(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(j.off(this._config.target,zi),j.on(this._config.target,zi,qi,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,s=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:s,behavior:"smooth"});i.scrollTop=s}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},s=(this._rootElement||document.documentElement).scrollTop,n=s>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=s;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(n&&t){if(i(o),!s)return}else n||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=K.find(qi,this._config.target);for(const e of t){if(!e.hash||d(e))continue;const t=K.findOne(decodeURI(e.hash),this._element);h(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(Bi),this._activateParents(t),j.trigger(this._element,Fi,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))K.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(Bi);else for(const e of K.parents(t,".nav, .list-group"))for(const t of K.prev(e,Ri))t.classList.add(Bi)}_clearActiveClass(t){t.classList.remove(Bi);const e=K.find(`${qi}.${Bi}`,t);for(const t of e)t.classList.remove(Bi)}static jQueryInterface(t){return this.each((function(){const e=Qi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}j.on(window,Hi,(()=>{for(const t of K.find('[data-bs-spy="scroll"]'))Qi.getOrCreateInstance(t)})),b(Qi);const Xi=".bs.tab",Yi=`hide${Xi}`,Ui=`hidden${Xi}`,Gi=`show${Xi}`,Ji=`shown${Xi}`,Zi=`click${Xi}`,ts=`keydown${Xi}`,es=`load${Xi}`,is="ArrowLeft",ss="ArrowRight",ns="ArrowUp",os="ArrowDown",rs="Home",as="End",ls="active",cs="fade",hs="show",ds=".dropdown-toggle",us=`:not(${ds})`,_s='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',gs=`.nav-link${us}, .list-group-item${us}, [role="tab"]${us}, ${_s}`,fs=`.${ls}[data-bs-toggle="tab"], .${ls}[data-bs-toggle="pill"], .${ls}[data-bs-toggle="list"]`;class ms extends W{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),j.on(this._element,ts,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?j.trigger(e,Yi,{relatedTarget:t}):null;j.trigger(t,Gi,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(ls),this._activate(K.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),j.trigger(t,Ji,{relatedTarget:e})):t.classList.add(hs)}),t,t.classList.contains(cs)))}_deactivate(t,e){t&&(t.classList.remove(ls),t.blur(),this._deactivate(K.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),j.trigger(t,Ui,{relatedTarget:e})):t.classList.remove(hs)}),t,t.classList.contains(cs)))}_keydown(t){if(![is,ss,ns,os,rs,as].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!d(t)));let i;if([rs,as].includes(t.key))i=e[t.key===rs?0:e.length-1];else{const s=[ss,os].includes(t.key);i=w(e,t.target,s,!0)}i&&(i.focus({preventScroll:!0}),ms.getOrCreateInstance(i).show())}_getChildren(){return K.find(gs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=K.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const s=(t,s)=>{const n=K.findOne(t,i);n&&n.classList.toggle(s,e)};s(ds,ls),s(".dropdown-menu",hs),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(ls)}_getInnerElement(t){return t.matches(gs)?t:K.findOne(gs,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=ms.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}j.on(document,Zi,_s,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),d(this)||ms.getOrCreateInstance(this).show()})),j.on(window,es,(()=>{for(const t of K.find(fs))ms.getOrCreateInstance(t)})),b(ms);const ps=".bs.toast",bs=`mouseover${ps}`,vs=`mouseout${ps}`,ys=`focusin${ps}`,ws=`focusout${ps}`,As=`hide${ps}`,Es=`hidden${ps}`,Cs=`show${ps}`,Ts=`shown${ps}`,ks="hide",$s="show",Ss="showing",Ls={animation:"boolean",autohide:"boolean",delay:"number"},Os={animation:!0,autohide:!0,delay:5e3};class Is extends W{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Os}static get DefaultType(){return Ls}static get NAME(){return"toast"}show(){j.trigger(this._element,Cs).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(ks),g(this._element),this._element.classList.add($s,Ss),this._queueCallback((()=>{this._element.classList.remove(Ss),j.trigger(this._element,Ts),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(j.trigger(this._element,As).defaultPrevented||(this._element.classList.add(Ss),this._queueCallback((()=>{this._element.classList.add(ks),this._element.classList.remove(Ss,$s),j.trigger(this._element,Es)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove($s),super.dispose()}isShown(){return this._element.classList.contains($s)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){j.on(this._element,bs,(t=>this._onInteraction(t,!0))),j.on(this._element,vs,(t=>this._onInteraction(t,!1))),j.on(this._element,ys,(t=>this._onInteraction(t,!0))),j.on(this._element,ws,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=Is.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return V(Is),b(Is),{Alert:U,Button:J,Carousel:Ot,Collapse:Rt,Dropdown:fe,Modal:Ue,Offcanvas:gi,Popover:Mi,ScrollSpy:Qi,Tab:ms,Toast:Is,Tooltip:Ni}}));
-//# sourceMappingURL=bootstrap.min.js.map
\ No newline at end of file
diff --git a/apps/static/css/index.css b/apps/static/css/index.css
index a7747ee..1ee94e7 100644
--- a/apps/static/css/index.css
+++ b/apps/static/css/index.css
@@ -121,44 +121,19 @@ body {
.ticket-item .ticket-item-complex {
transition: all 0.3s ease;
- overflow: visible;
+ overflow: hidden;
width: 2rem;
}
#ticketsContainer:not(.complex-items) .ticket-item .ticket-item-complex {
margin: 0 !important;
width: 0 !important;
- overflow: hidden;
}
.ticket-item .ticket-item-complex .badge {
min-width: 1.8rem;
- position: relative;
}
-.ticket-item .ticket-item-complex .badge:hover {
- margin-left: 2rem;
-}
-
-.ticket-item .ticket-item-complex .badge .ticket-item-complex-expand {
- display: none;
-}
-
-.ticket-item .ticket-item-complex .badge:hover .ticket-item-complex-expand {
- display: inline;
-}
-
-
-
-/*
-.ticket-item .ticket-item-complex .badge:hover .ticket-item-complex-expand,
-.ticket-item .ticket-item-complex .badge .ticket-item-complex-expand:hover {
- display: inline;
- width: fit-content;
-
-}
-*/
-
.ticket-item .ticket-item-icon {
width: 2rem;
height: 2rem;
diff --git a/apps/static/js/base.js b/apps/static/js/base.js
index 39a1faf..67ae214 100644
--- a/apps/static/js/base.js
+++ b/apps/static/js/base.js
@@ -1,15 +1,22 @@
-$("#themeToggle").on("click", function() {
- const currentTheme = $("body").attr("data-bs-theme");
+$(document).ready(function() {
+ // Activate all tooltips
+ $('[data-bs-toggle="tooltip"]').tooltip();
- if (currentTheme == "light") {
- $("body").attr("data-bs-theme", "dark");
+ // Apply the user preferred theme
+ const theme = localStorage.getItem("theme");
+ if (theme == "light" || theme == "dark") {
+ $("body").attr("data-bs-theme", theme);
}
else {
$("body").attr("data-bs-theme", "light");
}
});
-$(document).ready(function() {
- // Activate all tooltips
- $('[data-bs-toggle="tooltip"]').tooltip();
+$("#themeToggle").on("click", function() {
+ var theme = $("body").attr("data-bs-theme");
+
+ theme = theme == "light" ? "dark" : "light";
+
+ localStorage.setItem("theme", theme)
+ $("body").attr("data-bs-theme", theme);
});
\ No newline at end of file
diff --git a/apps/static/js/bootstrap.bundle.min.js b/apps/static/js/bootstrap.bundle.min.js
new file mode 100644
index 0000000..b1999d9
--- /dev/null
+++ b/apps/static/js/bootstrap.bundle.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap v5.3.2 (https://getbootstrap.com/)
+ * Copyright 2011-2023 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?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t=new Map,e={set(e,i,n){t.has(e)||t.set(e,new Map);const s=t.get(e);s.has(i)||0===s.size?s.set(i,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(e,i)=>t.has(e)&&t.get(e).get(i)||null,remove(e,i){if(!t.has(e))return;const n=t.get(e);n.delete(i),0===n.size&&t.delete(e)}},i="transitionend",n=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),s=t=>{t.dispatchEvent(new Event(i))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(n(t)):null,a=t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},l=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),c=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?c(t.parentNode):null},h=()=>{},d=t=>{t.offsetHeight},u=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,f=[],p=()=>"rtl"===document.documentElement.dir,m=t=>{var e;e=()=>{const e=u();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(f.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of f)t()})),f.push(e)):e()},g=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,_=(t,e,n=!0)=>{if(!n)return void g(t);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let r=!1;const a=({target:n})=>{n===e&&(r=!0,e.removeEventListener(i,a),g(t))};e.addEventListener(i,a),setTimeout((()=>{r||s(e)}),o)},b=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,A={};let E=1;const T={mouseenter:"mouseover",mouseleave:"mouseout"},C=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function O(t,e){return e&&`${e}::${E++}`||t.uidEvent||E++}function x(t){const e=O(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function k(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function L(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=I(t);return C.has(o)||(o=t),[n,s,o]}function S(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=L(e,i,n);if(e in T){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=x(t),c=l[a]||(l[a]={}),h=k(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=O(r,e.replace(v,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return P(s,{delegateTarget:r}),n.oneOff&&N.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return P(n,{delegateTarget:t}),i.oneOff&&N.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function D(t,e,i,n,s){const o=k(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function $(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&D(t,e,i,r.callable,r.delegationSelector)}function I(t){return t=t.replace(y,""),T[t]||t}const N={on(t,e,i,n){S(t,e,i,n,!1)},one(t,e,i,n){S(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=L(e,i,n),a=r!==e,l=x(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))$(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(w,"");a&&!e.includes(s)||D(t,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;D(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=u();let s=null,o=!0,r=!0,a=!1;e!==I(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=P(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function P(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}function M(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function j(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const F={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${j(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${j(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=M(t.dataset[n])}return e},getDataAttribute:(t,e)=>M(t.getAttribute(`data-bs-${j(e)}`))};class H{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=o(e)?F.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...o(e)?F.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[n,s]of Object.entries(e)){const e=t[n],r=o(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${r}" but expected type "${s}".`)}var i}}class W extends H{constructor(t,i){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(i),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),N.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){_(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.2"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const B=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?n(i.trim()):null}return e},z={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!l(t)&&a(t)))},getSelectorFromElement(t){const e=B(t);return e&&z.findOne(e)?e:null},getElementFromSelector(t){const e=B(t);return e?z.findOne(e):null},getMultipleElementsFromSelector(t){const e=B(t);return e?z.find(e):[]}},R=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;N.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),l(this))return;const s=z.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},q=".bs.alert",V=`close${q}`,K=`closed${q}`;class Q extends W{static get NAME(){return"alert"}close(){if(N.trigger(this._element,V).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),N.trigger(this._element,K),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Q.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}R(Q,"close"),m(Q);const X='[data-bs-toggle="button"]';class Y extends W{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=Y.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}N.on(document,"click.bs.button.data-api",X,(t=>{t.preventDefault();const e=t.target.closest(X);Y.getOrCreateInstance(e).toggle()})),m(Y);const U=".bs.swipe",G=`touchstart${U}`,J=`touchmove${U}`,Z=`touchend${U}`,tt=`pointerdown${U}`,et=`pointerup${U}`,it={endCallback:null,leftCallback:null,rightCallback:null},nt={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class st extends H{constructor(t,e){super(),this._element=t,t&&st.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return it}static get DefaultType(){return nt}static get NAME(){return"swipe"}dispose(){N.off(this._element,U)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),g(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&g(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(N.on(this._element,tt,(t=>this._start(t))),N.on(this._element,et,(t=>this._end(t))),this._element.classList.add("pointer-event")):(N.on(this._element,G,(t=>this._start(t))),N.on(this._element,J,(t=>this._move(t))),N.on(this._element,Z,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const ot=".bs.carousel",rt=".data-api",at="next",lt="prev",ct="left",ht="right",dt=`slide${ot}`,ut=`slid${ot}`,ft=`keydown${ot}`,pt=`mouseenter${ot}`,mt=`mouseleave${ot}`,gt=`dragstart${ot}`,_t=`load${ot}${rt}`,bt=`click${ot}${rt}`,vt="carousel",yt="active",wt=".active",At=".carousel-item",Et=wt+At,Tt={ArrowLeft:ht,ArrowRight:ct},Ct={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},Ot={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class xt extends W{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=z.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===vt&&this.cycle()}static get Default(){return Ct}static get DefaultType(){return Ot}static get NAME(){return"carousel"}next(){this._slide(at)}nextWhenVisible(){!document.hidden&&a(this._element)&&this.next()}prev(){this._slide(lt)}pause(){this._isSliding&&s(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?N.one(this._element,ut,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void N.one(this._element,ut,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?at:lt;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&N.on(this._element,ft,(t=>this._keydown(t))),"hover"===this._config.pause&&(N.on(this._element,pt,(()=>this.pause())),N.on(this._element,mt,(()=>this._maybeEnableCycle()))),this._config.touch&&st.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of z.find(".carousel-item img",this._element))N.on(t,gt,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(ct)),rightCallback:()=>this._slide(this._directionToOrder(ht)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new st(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=Tt[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=z.findOne(wt,this._indicatorsElement);e.classList.remove(yt),e.removeAttribute("aria-current");const i=z.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(yt),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===at,s=e||b(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>N.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(dt).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),d(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(yt),i.classList.remove(yt,c,l),this._isSliding=!1,r(ut)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return z.findOne(Et,this._element)}_getItems(){return z.find(At,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===ct?lt:at:t===ct?at:lt}_orderToDirection(t){return p()?t===lt?ct:ht:t===lt?ht:ct}static jQueryInterface(t){return this.each((function(){const e=xt.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}N.on(document,bt,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=z.getElementFromSelector(this);if(!e||!e.classList.contains(vt))return;t.preventDefault();const i=xt.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===F.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),N.on(window,_t,(()=>{const t=z.find('[data-bs-ride="carousel"]');for(const e of t)xt.getOrCreateInstance(e)})),m(xt);const kt=".bs.collapse",Lt=`show${kt}`,St=`shown${kt}`,Dt=`hide${kt}`,$t=`hidden${kt}`,It=`click${kt}.data-api`,Nt="show",Pt="collapse",Mt="collapsing",jt=`:scope .${Pt} .${Pt}`,Ft='[data-bs-toggle="collapse"]',Ht={parent:null,toggle:!0},Wt={parent:"(null|element)",toggle:"boolean"};class Bt extends W{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=z.find(Ft);for(const t of i){const e=z.getSelectorFromElement(t),i=z.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Ht}static get DefaultType(){return Wt}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>Bt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(N.trigger(this._element,Lt).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(Pt),this._element.classList.add(Mt),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Mt),this._element.classList.add(Pt,Nt),this._element.style[e]="",N.trigger(this._element,St)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(N.trigger(this._element,Dt).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,d(this._element),this._element.classList.add(Mt),this._element.classList.remove(Pt,Nt);for(const t of this._triggerArray){const e=z.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Mt),this._element.classList.add(Pt),N.trigger(this._element,$t)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(Nt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Ft);for(const e of t){const t=z.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=z.find(jt,this._config.parent);return z.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=Bt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}N.on(document,It,Ft,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of z.getMultipleElementsFromSelector(this))Bt.getOrCreateInstance(t,{toggle:!1}).toggle()})),m(Bt);var zt="top",Rt="bottom",qt="right",Vt="left",Kt="auto",Qt=[zt,Rt,qt,Vt],Xt="start",Yt="end",Ut="clippingParents",Gt="viewport",Jt="popper",Zt="reference",te=Qt.reduce((function(t,e){return t.concat([e+"-"+Xt,e+"-"+Yt])}),[]),ee=[].concat(Qt,[Kt]).reduce((function(t,e){return t.concat([e,e+"-"+Xt,e+"-"+Yt])}),[]),ie="beforeRead",ne="read",se="afterRead",oe="beforeMain",re="main",ae="afterMain",le="beforeWrite",ce="write",he="afterWrite",de=[ie,ne,se,oe,re,ae,le,ce,he];function ue(t){return t?(t.nodeName||"").toLowerCase():null}function fe(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function pe(t){return t instanceof fe(t).Element||t instanceof Element}function me(t){return t instanceof fe(t).HTMLElement||t instanceof HTMLElement}function ge(t){return"undefined"!=typeof ShadowRoot&&(t instanceof fe(t).ShadowRoot||t instanceof ShadowRoot)}const _e={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];me(s)&&ue(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});me(n)&&ue(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function be(t){return t.split("-")[0]}var ve=Math.max,ye=Math.min,we=Math.round;function Ae(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Ee(){return!/^((?!chrome|android).)*safari/i.test(Ae())}function Te(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&me(t)&&(s=t.offsetWidth>0&&we(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&we(n.height)/t.offsetHeight||1);var r=(pe(t)?fe(t):window).visualViewport,a=!Ee()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function Ce(t){var e=Te(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Oe(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&ge(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function xe(t){return fe(t).getComputedStyle(t)}function ke(t){return["table","td","th"].indexOf(ue(t))>=0}function Le(t){return((pe(t)?t.ownerDocument:t.document)||window.document).documentElement}function Se(t){return"html"===ue(t)?t:t.assignedSlot||t.parentNode||(ge(t)?t.host:null)||Le(t)}function De(t){return me(t)&&"fixed"!==xe(t).position?t.offsetParent:null}function $e(t){for(var e=fe(t),i=De(t);i&&ke(i)&&"static"===xe(i).position;)i=De(i);return i&&("html"===ue(i)||"body"===ue(i)&&"static"===xe(i).position)?e:i||function(t){var e=/firefox/i.test(Ae());if(/Trident/i.test(Ae())&&me(t)&&"fixed"===xe(t).position)return null;var i=Se(t);for(ge(i)&&(i=i.host);me(i)&&["html","body"].indexOf(ue(i))<0;){var n=xe(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function Ie(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Ne(t,e,i){return ve(t,ye(e,i))}function Pe(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Me(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const je={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=be(i.placement),l=Ie(a),c=[Vt,qt].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return Pe("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Me(t,Qt))}(s.padding,i),d=Ce(o),u="y"===l?zt:Vt,f="y"===l?Rt:qt,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=$e(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,A=Ne(v,w,y),E=l;i.modifiersData[n]=((e={})[E]=A,e.centerOffset=A-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Oe(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Fe(t){return t.split("-")[1]}var He={top:"auto",right:"auto",bottom:"auto",left:"auto"};function We(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=t.isFixed,u=r.x,f=void 0===u?0:u,p=r.y,m=void 0===p?0:p,g="function"==typeof h?h({x:f,y:m}):{x:f,y:m};f=g.x,m=g.y;var _=r.hasOwnProperty("x"),b=r.hasOwnProperty("y"),v=Vt,y=zt,w=window;if(c){var A=$e(i),E="clientHeight",T="clientWidth";A===fe(i)&&"static"!==xe(A=Le(i)).position&&"absolute"===a&&(E="scrollHeight",T="scrollWidth"),(s===zt||(s===Vt||s===qt)&&o===Yt)&&(y=Rt,m-=(d&&A===w&&w.visualViewport?w.visualViewport.height:A[E])-n.height,m*=l?1:-1),s!==Vt&&(s!==zt&&s!==Rt||o!==Yt)||(v=qt,f-=(d&&A===w&&w.visualViewport?w.visualViewport.width:A[T])-n.width,f*=l?1:-1)}var C,O=Object.assign({position:a},c&&He),x=!0===h?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:we(i*s)/s||0,y:we(n*s)/s||0}}({x:f,y:m},fe(i)):{x:f,y:m};return f=x.x,m=x.y,l?Object.assign({},O,((C={})[y]=b?"0":"",C[v]=_?"0":"",C.transform=(w.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",C)):Object.assign({},O,((e={})[y]=b?m+"px":"",e[v]=_?f+"px":"",e.transform="",e))}const Be={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:be(e.placement),variation:Fe(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,We(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,We(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var ze={passive:!0};const Re={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=fe(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,ze)})),a&&l.addEventListener("resize",i.update,ze),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,ze)})),a&&l.removeEventListener("resize",i.update,ze)}},data:{}};var qe={left:"right",right:"left",bottom:"top",top:"bottom"};function Ve(t){return t.replace(/left|right|bottom|top/g,(function(t){return qe[t]}))}var Ke={start:"end",end:"start"};function Qe(t){return t.replace(/start|end/g,(function(t){return Ke[t]}))}function Xe(t){var e=fe(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ye(t){return Te(Le(t)).left+Xe(t).scrollLeft}function Ue(t){var e=xe(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Ge(t){return["html","body","#document"].indexOf(ue(t))>=0?t.ownerDocument.body:me(t)&&Ue(t)?t:Ge(Se(t))}function Je(t,e){var i;void 0===e&&(e=[]);var n=Ge(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=fe(n),r=s?[o].concat(o.visualViewport||[],Ue(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Je(Se(r)))}function Ze(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function ti(t,e,i){return e===Gt?Ze(function(t,e){var i=fe(t),n=Le(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=Ee();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+Ye(t),y:l}}(t,i)):pe(e)?function(t,e){var i=Te(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):Ze(function(t){var e,i=Le(t),n=Xe(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=ve(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=ve(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Ye(t),l=-n.scrollTop;return"rtl"===xe(s||i).direction&&(a+=ve(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(Le(t)))}function ei(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?be(s):null,r=s?Fe(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case zt:e={x:a,y:i.y-n.height};break;case Rt:e={x:a,y:i.y+i.height};break;case qt:e={x:i.x+i.width,y:l};break;case Vt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?Ie(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case Xt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case Yt:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function ii(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.strategy,r=void 0===o?t.strategy:o,a=i.boundary,l=void 0===a?Ut:a,c=i.rootBoundary,h=void 0===c?Gt:c,d=i.elementContext,u=void 0===d?Jt:d,f=i.altBoundary,p=void 0!==f&&f,m=i.padding,g=void 0===m?0:m,_=Pe("number"!=typeof g?g:Me(g,Qt)),b=u===Jt?Zt:Jt,v=t.rects.popper,y=t.elements[p?b:u],w=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=Je(Se(t)),i=["absolute","fixed"].indexOf(xe(t).position)>=0&&me(t)?$e(t):t;return pe(i)?e.filter((function(t){return pe(t)&&Oe(t,i)&&"body"!==ue(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=ti(t,i,n);return e.top=ve(s.top,e.top),e.right=ye(s.right,e.right),e.bottom=ye(s.bottom,e.bottom),e.left=ve(s.left,e.left),e}),ti(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(pe(y)?y:y.contextElement||Le(t.elements.popper),l,h,r),A=Te(t.elements.reference),E=ei({reference:A,element:v,strategy:"absolute",placement:s}),T=Ze(Object.assign({},v,E)),C=u===Jt?T:A,O={top:w.top-C.top+_.top,bottom:C.bottom-w.bottom+_.bottom,left:w.left-C.left+_.left,right:C.right-w.right+_.right},x=t.modifiersData.offset;if(u===Jt&&x){var k=x[s];Object.keys(O).forEach((function(t){var e=[qt,Rt].indexOf(t)>=0?1:-1,i=[zt,Rt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function ni(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?ee:l,h=Fe(n),d=h?a?te:te.filter((function(t){return Fe(t)===h})):Qt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=ii(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[be(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const si={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=be(g),b=l||(_!==g&&p?function(t){if(be(t)===Kt)return[];var e=Ve(t);return[Qe(t),e,Qe(e)]}(g):[Ve(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat(be(i)===Kt?ni(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,A=new Map,E=!0,T=v[0],C=0;C=0,S=L?"width":"height",D=ii(e,{placement:O,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),$=L?k?qt:Vt:k?Rt:zt;y[S]>w[S]&&($=Ve($));var I=Ve($),N=[];if(o&&N.push(D[x]<=0),a&&N.push(D[$]<=0,D[I]<=0),N.every((function(t){return t}))){T=O,E=!1;break}A.set(O,N)}if(E)for(var P=function(t){var e=v.find((function(e){var i=A.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==P(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function oi(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function ri(t){return[zt,qt,Rt,Vt].some((function(e){return t[e]>=0}))}const ai={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=ii(e,{elementContext:"reference"}),a=ii(e,{altBoundary:!0}),l=oi(r,n),c=oi(a,s,o),h=ri(l),d=ri(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},li={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=ee.reduce((function(t,i){return t[i]=function(t,e,i){var n=be(t),s=[Vt,zt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[Vt,qt].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},ci={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=ei({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},hi={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=ii(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=be(e.placement),b=Fe(e.placement),v=!b,y=Ie(_),w="x"===y?"y":"x",A=e.modifiersData.popperOffsets,E=e.rects.reference,T=e.rects.popper,C="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,O="number"==typeof C?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),x=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(A){if(o){var L,S="y"===y?zt:Vt,D="y"===y?Rt:qt,$="y"===y?"height":"width",I=A[y],N=I+g[S],P=I-g[D],M=f?-T[$]/2:0,j=b===Xt?E[$]:T[$],F=b===Xt?-T[$]:-E[$],H=e.elements.arrow,W=f&&H?Ce(H):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=B[S],R=B[D],q=Ne(0,E[$],W[$]),V=v?E[$]/2-M-q-z-O.mainAxis:j-q-z-O.mainAxis,K=v?-E[$]/2+M+q+R+O.mainAxis:F+q+R+O.mainAxis,Q=e.elements.arrow&&$e(e.elements.arrow),X=Q?"y"===y?Q.clientTop||0:Q.clientLeft||0:0,Y=null!=(L=null==x?void 0:x[y])?L:0,U=I+K-Y,G=Ne(f?ye(N,I+V-Y-X):N,I,f?ve(P,U):P);A[y]=G,k[y]=G-I}if(a){var J,Z="x"===y?zt:Vt,tt="x"===y?Rt:qt,et=A[w],it="y"===w?"height":"width",nt=et+g[Z],st=et-g[tt],ot=-1!==[zt,Vt].indexOf(_),rt=null!=(J=null==x?void 0:x[w])?J:0,at=ot?nt:et-E[it]-T[it]-rt+O.altAxis,lt=ot?et+E[it]+T[it]-rt-O.altAxis:st,ct=f&&ot?function(t,e,i){var n=Ne(t,e,i);return n>i?i:n}(at,et,lt):Ne(f?at:nt,et,f?lt:st);A[w]=ct,k[w]=ct-et}e.modifiersData[n]=k}},requiresIfExists:["offset"]};function di(t,e,i){void 0===i&&(i=!1);var n,s,o=me(e),r=me(e)&&function(t){var e=t.getBoundingClientRect(),i=we(e.width)/t.offsetWidth||1,n=we(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=Le(e),l=Te(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==ue(e)||Ue(a))&&(c=(n=e)!==fe(n)&&me(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:Xe(n)),me(e)?((h=Te(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=Ye(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function ui(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var fi={placement:"bottom",modifiers:[],strategy:"absolute"};function pi(){for(var t=arguments.length,e=new Array(t),i=0;iNumber.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(F.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...g(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=z.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>a(t)));i.length&&b(i,e,t===Ti,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=qi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=z.find(Ni);for(const i of e){const e=qi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Ei,Ti].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ii)?this:z.prev(this,Ii)[0]||z.next(this,Ii)[0]||z.findOne(Ii,t.delegateTarget.parentNode),o=qi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}N.on(document,Si,Ii,qi.dataApiKeydownHandler),N.on(document,Si,Pi,qi.dataApiKeydownHandler),N.on(document,Li,qi.clearMenus),N.on(document,Di,qi.clearMenus),N.on(document,Li,Ii,(function(t){t.preventDefault(),qi.getOrCreateInstance(this).toggle()})),m(qi);const Vi="backdrop",Ki="show",Qi=`mousedown.bs.${Vi}`,Xi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Yi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Ui extends H{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Xi}static get DefaultType(){return Yi}static get NAME(){return Vi}show(t){if(!this._config.isVisible)return void g(t);this._append();const e=this._getElement();this._config.isAnimated&&d(e),e.classList.add(Ki),this._emulateAnimation((()=>{g(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Ki),this._emulateAnimation((()=>{this.dispose(),g(t)}))):g(t)}dispose(){this._isAppended&&(N.off(this._element,Qi),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=r(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),N.on(t,Qi,(()=>{g(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){_(t,this._getElement(),this._config.isAnimated)}}const Gi=".bs.focustrap",Ji=`focusin${Gi}`,Zi=`keydown.tab${Gi}`,tn="backward",en={autofocus:!0,trapElement:null},nn={autofocus:"boolean",trapElement:"element"};class sn extends H{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return en}static get DefaultType(){return nn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),N.off(document,Gi),N.on(document,Ji,(t=>this._handleFocusin(t))),N.on(document,Zi,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,N.off(document,Gi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=z.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===tn?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?tn:"forward")}}const on=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",rn=".sticky-top",an="padding-right",ln="margin-right";class cn{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,an,(e=>e+t)),this._setElementAttributes(on,an,(e=>e+t)),this._setElementAttributes(rn,ln,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,an),this._resetElementAttributes(on,an),this._resetElementAttributes(rn,ln)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&F.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=F.getDataAttribute(t,e);null!==i?(F.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(o(t))e(t);else for(const i of z.find(t,this._element))e(i)}}const hn=".bs.modal",dn=`hide${hn}`,un=`hidePrevented${hn}`,fn=`hidden${hn}`,pn=`show${hn}`,mn=`shown${hn}`,gn=`resize${hn}`,_n=`click.dismiss${hn}`,bn=`mousedown.dismiss${hn}`,vn=`keydown.dismiss${hn}`,yn=`click${hn}.data-api`,wn="modal-open",An="show",En="modal-static",Tn={backdrop:!0,focus:!0,keyboard:!0},Cn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class On extends W{constructor(t,e){super(t,e),this._dialog=z.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new cn,this._addEventListeners()}static get Default(){return Tn}static get DefaultType(){return Cn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||N.trigger(this._element,pn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(wn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(N.trigger(this._element,dn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(An),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){N.off(window,hn),N.off(this._dialog,hn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ui({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=z.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),d(this._element),this._element.classList.add(An),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,N.trigger(this._element,mn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){N.on(this._element,vn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),N.on(window,gn,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),N.on(this._element,bn,(t=>{N.one(this._element,_n,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(wn),this._resetAdjustments(),this._scrollBar.reset(),N.trigger(this._element,fn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(N.trigger(this._element,un).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(En)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(En),this._queueCallback((()=>{this._element.classList.remove(En),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=p()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=p()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=On.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}N.on(document,yn,'[data-bs-toggle="modal"]',(function(t){const e=z.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),N.one(e,pn,(t=>{t.defaultPrevented||N.one(e,fn,(()=>{a(this)&&this.focus()}))}));const i=z.findOne(".modal.show");i&&On.getInstance(i).hide(),On.getOrCreateInstance(e).toggle(this)})),R(On),m(On);const xn=".bs.offcanvas",kn=".data-api",Ln=`load${xn}${kn}`,Sn="show",Dn="showing",$n="hiding",In=".offcanvas.show",Nn=`show${xn}`,Pn=`shown${xn}`,Mn=`hide${xn}`,jn=`hidePrevented${xn}`,Fn=`hidden${xn}`,Hn=`resize${xn}`,Wn=`click${xn}${kn}`,Bn=`keydown.dismiss${xn}`,zn={backdrop:!0,keyboard:!0,scroll:!1},Rn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class qn extends W{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return zn}static get DefaultType(){return Rn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||N.trigger(this._element,Nn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new cn).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Dn),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Sn),this._element.classList.remove(Dn),N.trigger(this._element,Pn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(N.trigger(this._element,Mn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add($n),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Sn,$n),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new cn).reset(),N.trigger(this._element,Fn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Ui({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():N.trigger(this._element,jn)}:null})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_addEventListeners(){N.on(this._element,Bn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():N.trigger(this._element,jn))}))}static jQueryInterface(t){return this.each((function(){const e=qn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}N.on(document,Wn,'[data-bs-toggle="offcanvas"]',(function(t){const e=z.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this))return;N.one(e,Fn,(()=>{a(this)&&this.focus()}));const i=z.findOne(In);i&&i!==e&&qn.getInstance(i).hide(),qn.getOrCreateInstance(e).toggle(this)})),N.on(window,Ln,(()=>{for(const t of z.find(In))qn.getOrCreateInstance(t).show()})),N.on(window,Hn,(()=>{for(const t of z.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&qn.getOrCreateInstance(t).hide()})),R(qn),m(qn);const Vn={"*":["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:[]},Kn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Qn=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Xn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Kn.has(i)||Boolean(Qn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Yn={allowList:Vn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:""},Un={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Gn={entry:"(string|element|function|null)",selector:"(string|element)"};class Jn extends H{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Yn}static get DefaultType(){return Un}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Gn)}_setContent(t,e,i){const n=z.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Xn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return g(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Zn=new Set(["sanitize","allowList","sanitizeFn"]),ts="fade",es="show",is=".modal",ns="hide.bs.modal",ss="hover",os="focus",rs={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},as={allowList:Vn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},ls={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class cs extends W{constructor(t,e){if(void 0===vi)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return as}static get DefaultType(){return ls}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),N.off(this._element.closest(is),ns,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=N.trigger(this._element,this.constructor.eventName("show")),e=(c(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),N.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.on(t,"mouseover",h);this._queueCallback((()=>{N.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!N.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.off(t,"mouseover",h);this._activeTrigger.click=!1,this._activeTrigger[os]=!1,this._activeTrigger[ss]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),N.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(ts,es),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(ts),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Jn({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(ts)}_isShown(){return this.tip&&this.tip.classList.contains(es)}_createPopper(t){const e=g(this._config.placement,[this,t,this._element]),i=rs[e.toUpperCase()];return bi(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return g(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...g(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)N.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===ss?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===ss?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");N.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?os:ss]=!0,e._enter()})),N.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?os:ss]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},N.on(this._element.closest(is),ns,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=F.getDataAttributes(this._element);for(const t of Object.keys(e))Zn.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof 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()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=cs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(cs);const hs={...cs.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},ds={...cs.DefaultType,content:"(null|string|element|function)"};class us extends cs{static get Default(){return hs}static get DefaultType(){return ds}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=us.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(us);const fs=".bs.scrollspy",ps=`activate${fs}`,ms=`click${fs}`,gs=`load${fs}.data-api`,_s="active",bs="[href]",vs=".nav-link",ys=`${vs}, .nav-item > ${vs}, .list-group-item`,ws={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},As={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Es extends W{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return ws}static get DefaultType(){return As}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=r(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(N.off(this._config.target,ms),N.on(this._config.target,ms,bs,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=z.find(bs,this._config.target);for(const e of t){if(!e.hash||l(e))continue;const t=z.findOne(decodeURI(e.hash),this._element);a(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(_s),this._activateParents(t),N.trigger(this._element,ps,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))z.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(_s);else for(const e of z.parents(t,".nav, .list-group"))for(const t of z.prev(e,ys))t.classList.add(_s)}_clearActiveClass(t){t.classList.remove(_s);const e=z.find(`${bs}.${_s}`,t);for(const t of e)t.classList.remove(_s)}static jQueryInterface(t){return this.each((function(){const e=Es.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(window,gs,(()=>{for(const t of z.find('[data-bs-spy="scroll"]'))Es.getOrCreateInstance(t)})),m(Es);const Ts=".bs.tab",Cs=`hide${Ts}`,Os=`hidden${Ts}`,xs=`show${Ts}`,ks=`shown${Ts}`,Ls=`click${Ts}`,Ss=`keydown${Ts}`,Ds=`load${Ts}`,$s="ArrowLeft",Is="ArrowRight",Ns="ArrowUp",Ps="ArrowDown",Ms="Home",js="End",Fs="active",Hs="fade",Ws="show",Bs=".dropdown-toggle",zs=`:not(${Bs})`,Rs='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',qs=`.nav-link${zs}, .list-group-item${zs}, [role="tab"]${zs}, ${Rs}`,Vs=`.${Fs}[data-bs-toggle="tab"], .${Fs}[data-bs-toggle="pill"], .${Fs}[data-bs-toggle="list"]`;class Ks extends W{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),N.on(this._element,Ss,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?N.trigger(e,Cs,{relatedTarget:t}):null;N.trigger(t,xs,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(Fs),this._activate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),N.trigger(t,ks,{relatedTarget:e})):t.classList.add(Ws)}),t,t.classList.contains(Hs)))}_deactivate(t,e){t&&(t.classList.remove(Fs),t.blur(),this._deactivate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),N.trigger(t,Os,{relatedTarget:e})):t.classList.remove(Ws)}),t,t.classList.contains(Hs)))}_keydown(t){if(![$s,Is,Ns,Ps,Ms,js].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!l(t)));let i;if([Ms,js].includes(t.key))i=e[t.key===Ms?0:e.length-1];else{const n=[Is,Ps].includes(t.key);i=b(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),Ks.getOrCreateInstance(i).show())}_getChildren(){return z.find(qs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=z.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=z.findOne(t,i);s&&s.classList.toggle(n,e)};n(Bs,Fs),n(".dropdown-menu",Ws),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(Fs)}_getInnerElement(t){return t.matches(qs)?t:z.findOne(qs,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Ks.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(document,Ls,Rs,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this)||Ks.getOrCreateInstance(this).show()})),N.on(window,Ds,(()=>{for(const t of z.find(Vs))Ks.getOrCreateInstance(t)})),m(Ks);const Qs=".bs.toast",Xs=`mouseover${Qs}`,Ys=`mouseout${Qs}`,Us=`focusin${Qs}`,Gs=`focusout${Qs}`,Js=`hide${Qs}`,Zs=`hidden${Qs}`,to=`show${Qs}`,eo=`shown${Qs}`,io="hide",no="show",so="showing",oo={animation:"boolean",autohide:"boolean",delay:"number"},ro={animation:!0,autohide:!0,delay:5e3};class ao extends W{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return ro}static get DefaultType(){return oo}static get NAME(){return"toast"}show(){N.trigger(this._element,to).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(io),d(this._element),this._element.classList.add(no,so),this._queueCallback((()=>{this._element.classList.remove(so),N.trigger(this._element,eo),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(N.trigger(this._element,Js).defaultPrevented||(this._element.classList.add(so),this._queueCallback((()=>{this._element.classList.add(io),this._element.classList.remove(so,no),N.trigger(this._element,Zs)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(no),super.dispose()}isShown(){return this._element.classList.contains(no)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){N.on(this._element,Xs,(t=>this._onInteraction(t,!0))),N.on(this._element,Ys,(t=>this._onInteraction(t,!1))),N.on(this._element,Us,(t=>this._onInteraction(t,!0))),N.on(this._element,Gs,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ao.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return R(ao),m(ao),{Alert:Q,Button:Y,Carousel:xt,Collapse:Bt,Dropdown:qi,Modal:On,Offcanvas:qn,Popover:us,ScrollSpy:Es,Tab:Ks,Toast:ao,Tooltip:cs}}));
+//# sourceMappingURL=bootstrap.bundle.min.js.map
\ No newline at end of file
diff --git a/apps/static/js/index.js b/apps/static/js/index.js
index ffc9f8b..bf103d5 100644
--- a/apps/static/js/index.js
+++ b/apps/static/js/index.js
@@ -22006,978 +22006,6 @@ exports.preventOverflow = preventOverflow$1;
},{"Zbi7gb":12}],10:[function(require,module,exports){
"use strict";
-function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
-
-/*!
- * Datepicker for Bootstrap v1.9.0 (https://github.com/uxsolutions/bootstrap-datepicker)
- *
- * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
- */
-!function (a) {
- "function" == typeof define && define.amd ? define(["jquery"], a) : a("object" == (typeof exports === "undefined" ? "undefined" : _typeof(exports)) ? require("jquery") : jQuery);
-}(function (a, b) {
- function c() {
- return new Date(Date.UTC.apply(Date, arguments));
- }
-
- function d() {
- var a = new Date();
- return c(a.getFullYear(), a.getMonth(), a.getDate());
- }
-
- function e(a, b) {
- return a.getUTCFullYear() === b.getUTCFullYear() && a.getUTCMonth() === b.getUTCMonth() && a.getUTCDate() === b.getUTCDate();
- }
-
- function f(c, d) {
- return function () {
- return d !== b && a.fn.datepicker.deprecated(d), this[c].apply(this, arguments);
- };
- }
-
- function g(a) {
- return a && !isNaN(a.getTime());
- }
-
- function h(b, c) {
- function d(a, b) {
- return b.toLowerCase();
- }
-
- var e,
- f = a(b).data(),
- g = {},
- h = new RegExp("^" + c.toLowerCase() + "([A-Z])");
- c = new RegExp("^" + c.toLowerCase());
-
- for (var i in f) {
- c.test(i) && (e = i.replace(h, d), g[e] = f[i]);
- }
-
- return g;
- }
-
- function i(b) {
- var c = {};
-
- if (q[b] || (b = b.split("-")[0], q[b])) {
- var d = q[b];
- return a.each(p, function (a, b) {
- b in d && (c[b] = d[b]);
- }), c;
- }
- }
-
- var j = function () {
- var b = {
- get: function get(a) {
- return this.slice(a)[0];
- },
- contains: function contains(a) {
- for (var b = a && a.valueOf(), c = 0, d = this.length; c < d; c++) {
- if (0 <= this[c].valueOf() - b && this[c].valueOf() - b < 864e5) return c;
- }
-
- return -1;
- },
- remove: function remove(a) {
- this.splice(a, 1);
- },
- replace: function replace(b) {
- b && (a.isArray(b) || (b = [b]), this.clear(), this.push.apply(this, b));
- },
- clear: function clear() {
- this.length = 0;
- },
- copy: function copy() {
- var a = new j();
- return a.replace(this), a;
- }
- };
- return function () {
- var c = [];
- return c.push.apply(c, arguments), a.extend(c, b), c;
- };
- }(),
- k = function k(b, c) {
- a.data(b, "datepicker", this), this._events = [], this._secondaryEvents = [], this._process_options(c), this.dates = new j(), this.viewDate = this.o.defaultViewDate, this.focusDate = null, this.element = a(b), this.isInput = this.element.is("input"), this.inputField = this.isInput ? this.element : this.element.find("input"), this.component = !!this.element.hasClass("date") && this.element.find(".add-on, .input-group-addon, .input-group-append, .input-group-prepend, .btn"), this.component && 0 === this.component.length && (this.component = !1), this.isInline = !this.component && this.element.is("div"), this.picker = a(r.template), this._check_template(this.o.templates.leftArrow) && this.picker.find(".prev").html(this.o.templates.leftArrow), this._check_template(this.o.templates.rightArrow) && this.picker.find(".next").html(this.o.templates.rightArrow), this._buildEvents(), this._attachEvents(), this.isInline ? this.picker.addClass("datepicker-inline").appendTo(this.element) : this.picker.addClass("datepicker-dropdown dropdown-menu"), this.o.rtl && this.picker.addClass("datepicker-rtl"), this.o.calendarWeeks && this.picker.find(".datepicker-days .datepicker-switch, thead .datepicker-title, tfoot .today, tfoot .clear").attr("colspan", function (a, b) {
- return Number(b) + 1;
- }), this._process_options({
- startDate: this._o.startDate,
- endDate: this._o.endDate,
- daysOfWeekDisabled: this.o.daysOfWeekDisabled,
- daysOfWeekHighlighted: this.o.daysOfWeekHighlighted,
- datesDisabled: this.o.datesDisabled
- }), this._allow_update = !1, this.setViewMode(this.o.startView), this._allow_update = !0, this.fillDow(), this.fillMonths(), this.update(), this.isInline && this.show();
- };
-
- k.prototype = {
- constructor: k,
- _resolveViewName: function _resolveViewName(b) {
- return a.each(r.viewModes, function (c, d) {
- if (b === c || -1 !== a.inArray(b, d.names)) return b = c, !1;
- }), b;
- },
- _resolveDaysOfWeek: function _resolveDaysOfWeek(b) {
- return a.isArray(b) || (b = b.split(/[,\s]*/)), a.map(b, Number);
- },
- _check_template: function _check_template(c) {
- try {
- if (c === b || "" === c) return !1;
- if ((c.match(/[<>]/g) || []).length <= 0) return !0;
- return a(c).length > 0;
- } catch (a) {
- return !1;
- }
- },
- _process_options: function _process_options(b) {
- this._o = a.extend({}, this._o, b);
- var e = this.o = a.extend({}, this._o),
- f = e.language;
- q[f] || (f = f.split("-")[0], q[f] || (f = o.language)), e.language = f, e.startView = this._resolveViewName(e.startView), e.minViewMode = this._resolveViewName(e.minViewMode), e.maxViewMode = this._resolveViewName(e.maxViewMode), e.startView = Math.max(this.o.minViewMode, Math.min(this.o.maxViewMode, e.startView)), !0 !== e.multidate && (e.multidate = Number(e.multidate) || !1, !1 !== e.multidate && (e.multidate = Math.max(0, e.multidate))), e.multidateSeparator = String(e.multidateSeparator), e.weekStart %= 7, e.weekEnd = (e.weekStart + 6) % 7;
- var g = r.parseFormat(e.format);
- e.startDate !== -1 / 0 && (e.startDate ? e.startDate instanceof Date ? e.startDate = this._local_to_utc(this._zero_time(e.startDate)) : e.startDate = r.parseDate(e.startDate, g, e.language, e.assumeNearbyYear) : e.startDate = -1 / 0), e.endDate !== 1 / 0 && (e.endDate ? e.endDate instanceof Date ? e.endDate = this._local_to_utc(this._zero_time(e.endDate)) : e.endDate = r.parseDate(e.endDate, g, e.language, e.assumeNearbyYear) : e.endDate = 1 / 0), e.daysOfWeekDisabled = this._resolveDaysOfWeek(e.daysOfWeekDisabled || []), e.daysOfWeekHighlighted = this._resolveDaysOfWeek(e.daysOfWeekHighlighted || []), e.datesDisabled = e.datesDisabled || [], a.isArray(e.datesDisabled) || (e.datesDisabled = e.datesDisabled.split(",")), e.datesDisabled = a.map(e.datesDisabled, function (a) {
- return r.parseDate(a, g, e.language, e.assumeNearbyYear);
- });
- var h = String(e.orientation).toLowerCase().split(/\s+/g),
- i = e.orientation.toLowerCase();
- if (h = a.grep(h, function (a) {
- return /^auto|left|right|top|bottom$/.test(a);
- }), e.orientation = {
- x: "auto",
- y: "auto"
- }, i && "auto" !== i) {
- if (1 === h.length) switch (h[0]) {
- case "top":
- case "bottom":
- e.orientation.y = h[0];
- break;
-
- case "left":
- case "right":
- e.orientation.x = h[0];
- } else i = a.grep(h, function (a) {
- return /^left|right$/.test(a);
- }), e.orientation.x = i[0] || "auto", i = a.grep(h, function (a) {
- return /^top|bottom$/.test(a);
- }), e.orientation.y = i[0] || "auto";
- } else ;
- if (e.defaultViewDate instanceof Date || "string" == typeof e.defaultViewDate) e.defaultViewDate = r.parseDate(e.defaultViewDate, g, e.language, e.assumeNearbyYear);else if (e.defaultViewDate) {
- var j = e.defaultViewDate.year || new Date().getFullYear(),
- k = e.defaultViewDate.month || 0,
- l = e.defaultViewDate.day || 1;
- e.defaultViewDate = c(j, k, l);
- } else e.defaultViewDate = d();
- },
- _applyEvents: function _applyEvents(a) {
- for (var c, d, e, f = 0; f < a.length; f++) {
- c = a[f][0], 2 === a[f].length ? (d = b, e = a[f][1]) : 3 === a[f].length && (d = a[f][1], e = a[f][2]), c.on(e, d);
- }
- },
- _unapplyEvents: function _unapplyEvents(a) {
- for (var c, d, e, f = 0; f < a.length; f++) {
- c = a[f][0], 2 === a[f].length ? (e = b, d = a[f][1]) : 3 === a[f].length && (e = a[f][1], d = a[f][2]), c.off(d, e);
- }
- },
- _buildEvents: function _buildEvents() {
- var b = {
- keyup: a.proxy(function (b) {
- -1 === a.inArray(b.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) && this.update();
- }, this),
- keydown: a.proxy(this.keydown, this),
- paste: a.proxy(this.paste, this)
- };
- !0 === this.o.showOnFocus && (b.focus = a.proxy(this.show, this)), this.isInput ? this._events = [[this.element, b]] : this.component && this.inputField.length ? this._events = [[this.inputField, b], [this.component, {
- click: a.proxy(this.show, this)
- }]] : this._events = [[this.element, {
- click: a.proxy(this.show, this),
- keydown: a.proxy(this.keydown, this)
- }]], this._events.push([this.element, "*", {
- blur: a.proxy(function (a) {
- this._focused_from = a.target;
- }, this)
- }], [this.element, {
- blur: a.proxy(function (a) {
- this._focused_from = a.target;
- }, this)
- }]), this.o.immediateUpdates && this._events.push([this.element, {
- "changeYear changeMonth": a.proxy(function (a) {
- this.update(a.date);
- }, this)
- }]), this._secondaryEvents = [[this.picker, {
- click: a.proxy(this.click, this)
- }], [this.picker, ".prev, .next", {
- click: a.proxy(this.navArrowsClick, this)
- }], [this.picker, ".day:not(.disabled)", {
- click: a.proxy(this.dayCellClick, this)
- }], [a(window), {
- resize: a.proxy(this.place, this)
- }], [a(document), {
- "mousedown touchstart": a.proxy(function (a) {
- this.element.is(a.target) || this.element.find(a.target).length || this.picker.is(a.target) || this.picker.find(a.target).length || this.isInline || this.hide();
- }, this)
- }]];
- },
- _attachEvents: function _attachEvents() {
- this._detachEvents(), this._applyEvents(this._events);
- },
- _detachEvents: function _detachEvents() {
- this._unapplyEvents(this._events);
- },
- _attachSecondaryEvents: function _attachSecondaryEvents() {
- this._detachSecondaryEvents(), this._applyEvents(this._secondaryEvents);
- },
- _detachSecondaryEvents: function _detachSecondaryEvents() {
- this._unapplyEvents(this._secondaryEvents);
- },
- _trigger: function _trigger(b, c) {
- var d = c || this.dates.get(-1),
- e = this._utc_to_local(d);
-
- this.element.trigger({
- type: b,
- date: e,
- viewMode: this.viewMode,
- dates: a.map(this.dates, this._utc_to_local),
- format: a.proxy(function (a, b) {
- 0 === arguments.length ? (a = this.dates.length - 1, b = this.o.format) : "string" == typeof a && (b = a, a = this.dates.length - 1), b = b || this.o.format;
- var c = this.dates.get(a);
- return r.formatDate(c, b, this.o.language);
- }, this)
- });
- },
- show: function show() {
- if (!(this.inputField.is(":disabled") || this.inputField.prop("readonly") && !1 === this.o.enableOnReadonly)) return this.isInline || this.picker.appendTo(this.o.container), this.place(), this.picker.show(), this._attachSecondaryEvents(), this._trigger("show"), (window.navigator.msMaxTouchPoints || "ontouchstart" in document) && this.o.disableTouchKeyboard && a(this.element).blur(), this;
- },
- hide: function hide() {
- return this.isInline || !this.picker.is(":visible") ? this : (this.focusDate = null, this.picker.hide().detach(), this._detachSecondaryEvents(), this.setViewMode(this.o.startView), this.o.forceParse && this.inputField.val() && this.setValue(), this._trigger("hide"), this);
- },
- destroy: function destroy() {
- return this.hide(), this._detachEvents(), this._detachSecondaryEvents(), this.picker.remove(), delete this.element.data().datepicker, this.isInput || delete this.element.data().date, this;
- },
- paste: function paste(b) {
- var c;
- if (b.originalEvent.clipboardData && b.originalEvent.clipboardData.types && -1 !== a.inArray("text/plain", b.originalEvent.clipboardData.types)) c = b.originalEvent.clipboardData.getData("text/plain");else {
- if (!window.clipboardData) return;
- c = window.clipboardData.getData("Text");
- }
- this.setDate(c), this.update(), b.preventDefault();
- },
- _utc_to_local: function _utc_to_local(a) {
- if (!a) return a;
- var b = new Date(a.getTime() + 6e4 * a.getTimezoneOffset());
- return b.getTimezoneOffset() !== a.getTimezoneOffset() && (b = new Date(a.getTime() + 6e4 * b.getTimezoneOffset())), b;
- },
- _local_to_utc: function _local_to_utc(a) {
- return a && new Date(a.getTime() - 6e4 * a.getTimezoneOffset());
- },
- _zero_time: function _zero_time(a) {
- return a && new Date(a.getFullYear(), a.getMonth(), a.getDate());
- },
- _zero_utc_time: function _zero_utc_time(a) {
- return a && c(a.getUTCFullYear(), a.getUTCMonth(), a.getUTCDate());
- },
- getDates: function getDates() {
- return a.map(this.dates, this._utc_to_local);
- },
- getUTCDates: function getUTCDates() {
- return a.map(this.dates, function (a) {
- return new Date(a);
- });
- },
- getDate: function getDate() {
- return this._utc_to_local(this.getUTCDate());
- },
- getUTCDate: function getUTCDate() {
- var a = this.dates.get(-1);
- return a !== b ? new Date(a) : null;
- },
- clearDates: function clearDates() {
- this.inputField.val(""), this.update(), this._trigger("changeDate"), this.o.autoclose && this.hide();
- },
- setDates: function setDates() {
- var b = a.isArray(arguments[0]) ? arguments[0] : arguments;
- return this.update.apply(this, b), this._trigger("changeDate"), this.setValue(), this;
- },
- setUTCDates: function setUTCDates() {
- var b = a.isArray(arguments[0]) ? arguments[0] : arguments;
- return this.setDates.apply(this, a.map(b, this._utc_to_local)), this;
- },
- setDate: f("setDates"),
- setUTCDate: f("setUTCDates"),
- remove: f("destroy", "Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead"),
- setValue: function setValue() {
- var a = this.getFormattedDate();
- return this.inputField.val(a), this;
- },
- getFormattedDate: function getFormattedDate(c) {
- c === b && (c = this.o.format);
- var d = this.o.language;
- return a.map(this.dates, function (a) {
- return r.formatDate(a, c, d);
- }).join(this.o.multidateSeparator);
- },
- getStartDate: function getStartDate() {
- return this.o.startDate;
- },
- setStartDate: function setStartDate(a) {
- return this._process_options({
- startDate: a
- }), this.update(), this.updateNavArrows(), this;
- },
- getEndDate: function getEndDate() {
- return this.o.endDate;
- },
- setEndDate: function setEndDate(a) {
- return this._process_options({
- endDate: a
- }), this.update(), this.updateNavArrows(), this;
- },
- setDaysOfWeekDisabled: function setDaysOfWeekDisabled(a) {
- return this._process_options({
- daysOfWeekDisabled: a
- }), this.update(), this;
- },
- setDaysOfWeekHighlighted: function setDaysOfWeekHighlighted(a) {
- return this._process_options({
- daysOfWeekHighlighted: a
- }), this.update(), this;
- },
- setDatesDisabled: function setDatesDisabled(a) {
- return this._process_options({
- datesDisabled: a
- }), this.update(), this;
- },
- place: function place() {
- if (this.isInline) return this;
- var b = this.picker.outerWidth(),
- c = this.picker.outerHeight(),
- d = a(this.o.container),
- e = d.width(),
- f = "body" === this.o.container ? a(document).scrollTop() : d.scrollTop(),
- g = d.offset(),
- h = [0];
- this.element.parents().each(function () {
- var b = a(this).css("z-index");
- "auto" !== b && 0 !== Number(b) && h.push(Number(b));
- });
- var i = Math.max.apply(Math, h) + this.o.zIndexOffset,
- j = this.component ? this.component.parent().offset() : this.element.offset(),
- k = this.component ? this.component.outerHeight(!0) : this.element.outerHeight(!1),
- l = this.component ? this.component.outerWidth(!0) : this.element.outerWidth(!1),
- m = j.left - g.left,
- n = j.top - g.top;
- "body" !== this.o.container && (n += f), this.picker.removeClass("datepicker-orient-top datepicker-orient-bottom datepicker-orient-right datepicker-orient-left"), "auto" !== this.o.orientation.x ? (this.picker.addClass("datepicker-orient-" + this.o.orientation.x), "right" === this.o.orientation.x && (m -= b - l)) : j.left < 0 ? (this.picker.addClass("datepicker-orient-left"), m -= j.left - 10) : m + b > e ? (this.picker.addClass("datepicker-orient-right"), m += l - b) : this.o.rtl ? this.picker.addClass("datepicker-orient-right") : this.picker.addClass("datepicker-orient-left");
- var o,
- p = this.o.orientation.y;
-
- if ("auto" === p && (o = -f + n - c, p = o < 0 ? "bottom" : "top"), this.picker.addClass("datepicker-orient-" + p), "top" === p ? n -= c + parseInt(this.picker.css("padding-top")) : n += k, this.o.rtl) {
- var q = e - (m + l);
- this.picker.css({
- top: n,
- right: q,
- zIndex: i
- });
- } else this.picker.css({
- top: n,
- left: m,
- zIndex: i
- });
-
- return this;
- },
- _allow_update: !0,
- update: function update() {
- if (!this._allow_update) return this;
- var b = this.dates.copy(),
- c = [],
- d = !1;
- return arguments.length ? (a.each(arguments, a.proxy(function (a, b) {
- b instanceof Date && (b = this._local_to_utc(b)), c.push(b);
- }, this)), d = !0) : (c = this.isInput ? this.element.val() : this.element.data("date") || this.inputField.val(), c = c && this.o.multidate ? c.split(this.o.multidateSeparator) : [c], delete this.element.data().date), c = a.map(c, a.proxy(function (a) {
- return r.parseDate(a, this.o.format, this.o.language, this.o.assumeNearbyYear);
- }, this)), c = a.grep(c, a.proxy(function (a) {
- return !this.dateWithinRange(a) || !a;
- }, this), !0), this.dates.replace(c), this.o.updateViewDate && (this.dates.length ? this.viewDate = new Date(this.dates.get(-1)) : this.viewDate < this.o.startDate ? this.viewDate = new Date(this.o.startDate) : this.viewDate > this.o.endDate ? this.viewDate = new Date(this.o.endDate) : this.viewDate = this.o.defaultViewDate), d ? (this.setValue(), this.element.change()) : this.dates.length && String(b) !== String(this.dates) && d && (this._trigger("changeDate"), this.element.change()), !this.dates.length && b.length && (this._trigger("clearDate"), this.element.change()), this.fill(), this;
- },
- fillDow: function fillDow() {
- if (this.o.showWeekDays) {
- var b = this.o.weekStart,
- c = "";
-
- for (this.o.calendarWeeks && (c += ' | '); b < this.o.weekStart + 7;) {
- c += '' + q[this.o.language].daysMin[b++ % 7] + " | ";
- }
-
- c += "
", this.picker.find(".datepicker-days thead").append(c);
- }
- },
- fillMonths: function fillMonths() {
- for (var a, b = this._utc_to_local(this.viewDate), c = "", d = 0; d < 12; d++) {
- a = b && b.getMonth() === d ? " focused" : "", c += '' + q[this.o.language].monthsShort[d] + "";
- }
-
- this.picker.find(".datepicker-months td").html(c);
- },
- setRange: function setRange(b) {
- b && b.length ? this.range = a.map(b, function (a) {
- return a.valueOf();
- }) : delete this.range, this.fill();
- },
- getClassNames: function getClassNames(b) {
- var c = [],
- f = this.viewDate.getUTCFullYear(),
- g = this.viewDate.getUTCMonth(),
- h = d();
- return b.getUTCFullYear() < f || b.getUTCFullYear() === f && b.getUTCMonth() < g ? c.push("old") : (b.getUTCFullYear() > f || b.getUTCFullYear() === f && b.getUTCMonth() > g) && c.push("new"), this.focusDate && b.valueOf() === this.focusDate.valueOf() && c.push("focused"), this.o.todayHighlight && e(b, h) && c.push("today"), -1 !== this.dates.contains(b) && c.push("active"), this.dateWithinRange(b) || c.push("disabled"), this.dateIsDisabled(b) && c.push("disabled", "disabled-date"), -1 !== a.inArray(b.getUTCDay(), this.o.daysOfWeekHighlighted) && c.push("highlighted"), this.range && (b > this.range[0] && b < this.range[this.range.length - 1] && c.push("range"), -1 !== a.inArray(b.valueOf(), this.range) && c.push("selected"), b.valueOf() === this.range[0] && c.push("range-start"), b.valueOf() === this.range[this.range.length - 1] && c.push("range-end")), c;
- },
- _fill_yearsView: function _fill_yearsView(c, d, e, f, g, h, i) {
- for (var j, k, l, m = "", n = e / 10, o = this.picker.find(c), p = Math.floor(f / e) * e, q = p + 9 * n, r = Math.floor(this.viewDate.getFullYear() / n) * n, s = a.map(this.dates, function (a) {
- return Math.floor(a.getUTCFullYear() / n) * n;
- }), t = p - n; t <= q + n; t += n) {
- j = [d], k = null, t === p - n ? j.push("old") : t === q + n && j.push("new"), -1 !== a.inArray(t, s) && j.push("active"), (t < g || t > h) && j.push("disabled"), t === r && j.push("focused"), i !== a.noop && (l = i(new Date(t, 0, 1)), l === b ? l = {} : "boolean" == typeof l ? l = {
- enabled: l
- } : "string" == typeof l && (l = {
- classes: l
- }), !1 === l.enabled && j.push("disabled"), l.classes && (j = j.concat(l.classes.split(/\s+/))), l.tooltip && (k = l.tooltip)), m += '" + t + "";
- }
-
- o.find(".datepicker-switch").text(p + "-" + q), o.find("td").html(m);
- },
- fill: function fill() {
- var e,
- f,
- g = new Date(this.viewDate),
- h = g.getUTCFullYear(),
- i = g.getUTCMonth(),
- j = this.o.startDate !== -1 / 0 ? this.o.startDate.getUTCFullYear() : -1 / 0,
- k = this.o.startDate !== -1 / 0 ? this.o.startDate.getUTCMonth() : -1 / 0,
- l = this.o.endDate !== 1 / 0 ? this.o.endDate.getUTCFullYear() : 1 / 0,
- m = this.o.endDate !== 1 / 0 ? this.o.endDate.getUTCMonth() : 1 / 0,
- n = q[this.o.language].today || q.en.today || "",
- o = q[this.o.language].clear || q.en.clear || "",
- p = q[this.o.language].titleFormat || q.en.titleFormat,
- s = d(),
- t = (!0 === this.o.todayBtn || "linked" === this.o.todayBtn) && s >= this.o.startDate && s <= this.o.endDate && !this.weekOfDateIsDisabled(s);
-
- if (!isNaN(h) && !isNaN(i)) {
- this.picker.find(".datepicker-days .datepicker-switch").text(r.formatDate(g, p, this.o.language)), this.picker.find("tfoot .today").text(n).css("display", t ? "table-cell" : "none"), this.picker.find("tfoot .clear").text(o).css("display", !0 === this.o.clearBtn ? "table-cell" : "none"), this.picker.find("thead .datepicker-title").text(this.o.title).css("display", "string" == typeof this.o.title && "" !== this.o.title ? "table-cell" : "none"), this.updateNavArrows(), this.fillMonths();
- var u = c(h, i, 0),
- v = u.getUTCDate();
- u.setUTCDate(v - (u.getUTCDay() - this.o.weekStart + 7) % 7);
- var w = new Date(u);
- u.getUTCFullYear() < 100 && w.setUTCFullYear(u.getUTCFullYear()), w.setUTCDate(w.getUTCDate() + 42), w = w.valueOf();
-
- for (var x, y, z = []; u.valueOf() < w;) {
- if ((x = u.getUTCDay()) === this.o.weekStart && (z.push(""), this.o.calendarWeeks)) {
- var A = new Date(+u + (this.o.weekStart - x - 7) % 7 * 864e5),
- B = new Date(Number(A) + (11 - A.getUTCDay()) % 7 * 864e5),
- C = new Date(Number(C = c(B.getUTCFullYear(), 0, 1)) + (11 - C.getUTCDay()) % 7 * 864e5),
- D = (B - C) / 864e5 / 7 + 1;
- z.push('' + D + " | ");
- }
-
- y = this.getClassNames(u), y.push("day");
- var E = u.getUTCDate();
- this.o.beforeShowDay !== a.noop && (f = this.o.beforeShowDay(this._utc_to_local(u)), f === b ? f = {} : "boolean" == typeof f ? f = {
- enabled: f
- } : "string" == typeof f && (f = {
- classes: f
- }), !1 === f.enabled && y.push("disabled"), f.classes && (y = y.concat(f.classes.split(/\s+/))), f.tooltip && (e = f.tooltip), f.content && (E = f.content)), y = a.isFunction(a.uniqueSort) ? a.uniqueSort(y) : a.unique(y), z.push('' + E + " | "), e = null, x === this.o.weekEnd && z.push("
"), u.setUTCDate(u.getUTCDate() + 1);
- }
-
- this.picker.find(".datepicker-days tbody").html(z.join(""));
- var F = q[this.o.language].monthsTitle || q.en.monthsTitle || "Months",
- G = this.picker.find(".datepicker-months").find(".datepicker-switch").text(this.o.maxViewMode < 2 ? F : h).end().find("tbody span").removeClass("active");
-
- if (a.each(this.dates, function (a, b) {
- b.getUTCFullYear() === h && G.eq(b.getUTCMonth()).addClass("active");
- }), (h < j || h > l) && G.addClass("disabled"), h === j && G.slice(0, k).addClass("disabled"), h === l && G.slice(m + 1).addClass("disabled"), this.o.beforeShowMonth !== a.noop) {
- var H = this;
- a.each(G, function (c, d) {
- var e = new Date(h, c, 1),
- f = H.o.beforeShowMonth(e);
- f === b ? f = {} : "boolean" == typeof f ? f = {
- enabled: f
- } : "string" == typeof f && (f = {
- classes: f
- }), !1 !== f.enabled || a(d).hasClass("disabled") || a(d).addClass("disabled"), f.classes && a(d).addClass(f.classes), f.tooltip && a(d).prop("title", f.tooltip);
- });
- }
-
- this._fill_yearsView(".datepicker-years", "year", 10, h, j, l, this.o.beforeShowYear), this._fill_yearsView(".datepicker-decades", "decade", 100, h, j, l, this.o.beforeShowDecade), this._fill_yearsView(".datepicker-centuries", "century", 1e3, h, j, l, this.o.beforeShowCentury);
- }
- },
- updateNavArrows: function updateNavArrows() {
- if (this._allow_update) {
- var a,
- b,
- c = new Date(this.viewDate),
- d = c.getUTCFullYear(),
- e = c.getUTCMonth(),
- f = this.o.startDate !== -1 / 0 ? this.o.startDate.getUTCFullYear() : -1 / 0,
- g = this.o.startDate !== -1 / 0 ? this.o.startDate.getUTCMonth() : -1 / 0,
- h = this.o.endDate !== 1 / 0 ? this.o.endDate.getUTCFullYear() : 1 / 0,
- i = this.o.endDate !== 1 / 0 ? this.o.endDate.getUTCMonth() : 1 / 0,
- j = 1;
-
- switch (this.viewMode) {
- case 4:
- j *= 10;
-
- case 3:
- j *= 10;
-
- case 2:
- j *= 10;
-
- case 1:
- a = Math.floor(d / j) * j <= f, b = Math.floor(d / j) * j + j > h;
- break;
-
- case 0:
- a = d <= f && e <= g, b = d >= h && e >= i;
- }
-
- this.picker.find(".prev").toggleClass("disabled", a), this.picker.find(".next").toggleClass("disabled", b);
- }
- },
- click: function click(b) {
- b.preventDefault(), b.stopPropagation();
- var e, f, g, h;
- e = a(b.target), e.hasClass("datepicker-switch") && this.viewMode !== this.o.maxViewMode && this.setViewMode(this.viewMode + 1), e.hasClass("today") && !e.hasClass("day") && (this.setViewMode(0), this._setDate(d(), "linked" === this.o.todayBtn ? null : "view")), e.hasClass("clear") && this.clearDates(), e.hasClass("disabled") || (e.hasClass("month") || e.hasClass("year") || e.hasClass("decade") || e.hasClass("century")) && (this.viewDate.setUTCDate(1), f = 1, 1 === this.viewMode ? (h = e.parent().find("span").index(e), g = this.viewDate.getUTCFullYear(), this.viewDate.setUTCMonth(h)) : (h = 0, g = Number(e.text()), this.viewDate.setUTCFullYear(g)), this._trigger(r.viewModes[this.viewMode - 1].e, this.viewDate), this.viewMode === this.o.minViewMode ? this._setDate(c(g, h, f)) : (this.setViewMode(this.viewMode - 1), this.fill())), this.picker.is(":visible") && this._focused_from && this._focused_from.focus(), delete this._focused_from;
- },
- dayCellClick: function dayCellClick(b) {
- var c = a(b.currentTarget),
- d = c.data("date"),
- e = new Date(d);
- this.o.updateViewDate && (e.getUTCFullYear() !== this.viewDate.getUTCFullYear() && this._trigger("changeYear", this.viewDate), e.getUTCMonth() !== this.viewDate.getUTCMonth() && this._trigger("changeMonth", this.viewDate)), this._setDate(e);
- },
- navArrowsClick: function navArrowsClick(b) {
- var c = a(b.currentTarget),
- d = c.hasClass("prev") ? -1 : 1;
- 0 !== this.viewMode && (d *= 12 * r.viewModes[this.viewMode].navStep), this.viewDate = this.moveMonth(this.viewDate, d), this._trigger(r.viewModes[this.viewMode].e, this.viewDate), this.fill();
- },
- _toggle_multidate: function _toggle_multidate(a) {
- var b = this.dates.contains(a);
- if (a || this.dates.clear(), -1 !== b ? (!0 === this.o.multidate || this.o.multidate > 1 || this.o.toggleActive) && this.dates.remove(b) : !1 === this.o.multidate ? (this.dates.clear(), this.dates.push(a)) : this.dates.push(a), "number" == typeof this.o.multidate) for (; this.dates.length > this.o.multidate;) {
- this.dates.remove(0);
- }
- },
- _setDate: function _setDate(a, b) {
- b && "date" !== b || this._toggle_multidate(a && new Date(a)), (!b && this.o.updateViewDate || "view" === b) && (this.viewDate = a && new Date(a)), this.fill(), this.setValue(), b && "view" === b || this._trigger("changeDate"), this.inputField.trigger("change"), !this.o.autoclose || b && "date" !== b || this.hide();
- },
- moveDay: function moveDay(a, b) {
- var c = new Date(a);
- return c.setUTCDate(a.getUTCDate() + b), c;
- },
- moveWeek: function moveWeek(a, b) {
- return this.moveDay(a, 7 * b);
- },
- moveMonth: function moveMonth(a, b) {
- if (!g(a)) return this.o.defaultViewDate;
- if (!b) return a;
- var c,
- d,
- e = new Date(a.valueOf()),
- f = e.getUTCDate(),
- h = e.getUTCMonth(),
- i = Math.abs(b);
- if (b = b > 0 ? 1 : -1, 1 === i) d = -1 === b ? function () {
- return e.getUTCMonth() === h;
- } : function () {
- return e.getUTCMonth() !== c;
- }, c = h + b, e.setUTCMonth(c), c = (c + 12) % 12;else {
- for (var j = 0; j < i; j++) {
- e = this.moveMonth(e, b);
- }
-
- c = e.getUTCMonth(), e.setUTCDate(f), d = function d() {
- return c !== e.getUTCMonth();
- };
- }
-
- for (; d();) {
- e.setUTCDate(--f), e.setUTCMonth(c);
- }
-
- return e;
- },
- moveYear: function moveYear(a, b) {
- return this.moveMonth(a, 12 * b);
- },
- moveAvailableDate: function moveAvailableDate(a, b, c) {
- do {
- if (a = this[c](a, b), !this.dateWithinRange(a)) return !1;
- c = "moveDay";
- } while (this.dateIsDisabled(a));
-
- return a;
- },
- weekOfDateIsDisabled: function weekOfDateIsDisabled(b) {
- return -1 !== a.inArray(b.getUTCDay(), this.o.daysOfWeekDisabled);
- },
- dateIsDisabled: function dateIsDisabled(b) {
- return this.weekOfDateIsDisabled(b) || a.grep(this.o.datesDisabled, function (a) {
- return e(b, a);
- }).length > 0;
- },
- dateWithinRange: function dateWithinRange(a) {
- return a >= this.o.startDate && a <= this.o.endDate;
- },
- keydown: function keydown(a) {
- if (!this.picker.is(":visible")) return void (40 !== a.keyCode && 27 !== a.keyCode || (this.show(), a.stopPropagation()));
- var b,
- c,
- d = !1,
- e = this.focusDate || this.viewDate;
-
- switch (a.keyCode) {
- case 27:
- this.focusDate ? (this.focusDate = null, this.viewDate = this.dates.get(-1) || this.viewDate, this.fill()) : this.hide(), a.preventDefault(), a.stopPropagation();
- break;
-
- case 37:
- case 38:
- case 39:
- case 40:
- if (!this.o.keyboardNavigation || 7 === this.o.daysOfWeekDisabled.length) break;
- b = 37 === a.keyCode || 38 === a.keyCode ? -1 : 1, 0 === this.viewMode ? a.ctrlKey ? (c = this.moveAvailableDate(e, b, "moveYear")) && this._trigger("changeYear", this.viewDate) : a.shiftKey ? (c = this.moveAvailableDate(e, b, "moveMonth")) && this._trigger("changeMonth", this.viewDate) : 37 === a.keyCode || 39 === a.keyCode ? c = this.moveAvailableDate(e, b, "moveDay") : this.weekOfDateIsDisabled(e) || (c = this.moveAvailableDate(e, b, "moveWeek")) : 1 === this.viewMode ? (38 !== a.keyCode && 40 !== a.keyCode || (b *= 4), c = this.moveAvailableDate(e, b, "moveMonth")) : 2 === this.viewMode && (38 !== a.keyCode && 40 !== a.keyCode || (b *= 4), c = this.moveAvailableDate(e, b, "moveYear")), c && (this.focusDate = this.viewDate = c, this.setValue(), this.fill(), a.preventDefault());
- break;
-
- case 13:
- if (!this.o.forceParse) break;
- e = this.focusDate || this.dates.get(-1) || this.viewDate, this.o.keyboardNavigation && (this._toggle_multidate(e), d = !0), this.focusDate = null, this.viewDate = this.dates.get(-1) || this.viewDate, this.setValue(), this.fill(), this.picker.is(":visible") && (a.preventDefault(), a.stopPropagation(), this.o.autoclose && this.hide());
- break;
-
- case 9:
- this.focusDate = null, this.viewDate = this.dates.get(-1) || this.viewDate, this.fill(), this.hide();
- }
-
- d && (this.dates.length ? this._trigger("changeDate") : this._trigger("clearDate"), this.inputField.trigger("change"));
- },
- setViewMode: function setViewMode(a) {
- this.viewMode = a, this.picker.children("div").hide().filter(".datepicker-" + r.viewModes[this.viewMode].clsName).show(), this.updateNavArrows(), this._trigger("changeViewMode", new Date(this.viewDate));
- }
- };
-
- var l = function l(b, c) {
- a.data(b, "datepicker", this), this.element = a(b), this.inputs = a.map(c.inputs, function (a) {
- return a.jquery ? a[0] : a;
- }), delete c.inputs, this.keepEmptyValues = c.keepEmptyValues, delete c.keepEmptyValues, n.call(a(this.inputs), c).on("changeDate", a.proxy(this.dateUpdated, this)), this.pickers = a.map(this.inputs, function (b) {
- return a.data(b, "datepicker");
- }), this.updateDates();
- };
-
- l.prototype = {
- updateDates: function updateDates() {
- this.dates = a.map(this.pickers, function (a) {
- return a.getUTCDate();
- }), this.updateRanges();
- },
- updateRanges: function updateRanges() {
- var b = a.map(this.dates, function (a) {
- return a.valueOf();
- });
- a.each(this.pickers, function (a, c) {
- c.setRange(b);
- });
- },
- clearDates: function clearDates() {
- a.each(this.pickers, function (a, b) {
- b.clearDates();
- });
- },
- dateUpdated: function dateUpdated(c) {
- if (!this.updating) {
- this.updating = !0;
- var d = a.data(c.target, "datepicker");
-
- if (d !== b) {
- var e = d.getUTCDate(),
- f = this.keepEmptyValues,
- g = a.inArray(c.target, this.inputs),
- h = g - 1,
- i = g + 1,
- j = this.inputs.length;
-
- if (-1 !== g) {
- if (a.each(this.pickers, function (a, b) {
- b.getUTCDate() || b !== d && f || b.setUTCDate(e);
- }), e < this.dates[h]) for (; h >= 0 && e < this.dates[h];) {
- this.pickers[h--].setUTCDate(e);
- } else if (e > this.dates[i]) for (; i < j && e > this.dates[i];) {
- this.pickers[i++].setUTCDate(e);
- }
- this.updateDates(), delete this.updating;
- }
- }
- }
- },
- destroy: function destroy() {
- a.map(this.pickers, function (a) {
- a.destroy();
- }), a(this.inputs).off("changeDate", this.dateUpdated), delete this.element.data().datepicker;
- },
- remove: f("destroy", "Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead")
- };
-
- var m = a.fn.datepicker,
- n = function n(c) {
- var d = Array.apply(null, arguments);
- d.shift();
- var e;
- if (this.each(function () {
- var b = a(this),
- f = b.data("datepicker"),
- g = "object" == _typeof(c) && c;
-
- if (!f) {
- var j = h(this, "date"),
- m = a.extend({}, o, j, g),
- n = i(m.language),
- p = a.extend({}, o, n, j, g);
- b.hasClass("input-daterange") || p.inputs ? (a.extend(p, {
- inputs: p.inputs || b.find("input").toArray()
- }), f = new l(this, p)) : f = new k(this, p), b.data("datepicker", f);
- }
-
- "string" == typeof c && "function" == typeof f[c] && (e = f[c].apply(f, d));
- }), e === b || e instanceof k || e instanceof l) return this;
- if (this.length > 1) throw new Error("Using only allowed for the collection of a single element (" + c + " function)");
- return e;
- };
-
- a.fn.datepicker = n;
- var o = a.fn.datepicker.defaults = {
- assumeNearbyYear: !1,
- autoclose: !1,
- beforeShowDay: a.noop,
- beforeShowMonth: a.noop,
- beforeShowYear: a.noop,
- beforeShowDecade: a.noop,
- beforeShowCentury: a.noop,
- calendarWeeks: !1,
- clearBtn: !1,
- toggleActive: !1,
- daysOfWeekDisabled: [],
- daysOfWeekHighlighted: [],
- datesDisabled: [],
- endDate: 1 / 0,
- forceParse: !0,
- format: "mm/dd/yyyy",
- keepEmptyValues: !1,
- keyboardNavigation: !0,
- language: "en",
- minViewMode: 0,
- maxViewMode: 4,
- multidate: !1,
- multidateSeparator: ",",
- orientation: "auto",
- rtl: !1,
- startDate: -1 / 0,
- startView: 0,
- todayBtn: !1,
- todayHighlight: !1,
- updateViewDate: !0,
- weekStart: 0,
- disableTouchKeyboard: !1,
- enableOnReadonly: !0,
- showOnFocus: !0,
- zIndexOffset: 10,
- container: "body",
- immediateUpdates: !1,
- title: "",
- templates: {
- leftArrow: "«",
- rightArrow: "»"
- },
- showWeekDays: !0
- },
- p = a.fn.datepicker.locale_opts = ["format", "rtl", "weekStart"];
- a.fn.datepicker.Constructor = k;
- var q = a.fn.datepicker.dates = {
- en: {
- days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
- daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
- daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
- months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
- monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
- today: "Today",
- clear: "Clear",
- titleFormat: "MM yyyy"
- }
- },
- r = {
- viewModes: [{
- names: ["days", "month"],
- clsName: "days",
- e: "changeMonth"
- }, {
- names: ["months", "year"],
- clsName: "months",
- e: "changeYear",
- navStep: 1
- }, {
- names: ["years", "decade"],
- clsName: "years",
- e: "changeDecade",
- navStep: 10
- }, {
- names: ["decades", "century"],
- clsName: "decades",
- e: "changeCentury",
- navStep: 100
- }, {
- names: ["centuries", "millennium"],
- clsName: "centuries",
- e: "changeMillennium",
- navStep: 1e3
- }],
- validParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,
- nonpunctuation: /[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g,
- parseFormat: function parseFormat(a) {
- if ("function" == typeof a.toValue && "function" == typeof a.toDisplay) return a;
- var b = a.replace(this.validParts, "\0").split("\0"),
- c = a.match(this.validParts);
- if (!b || !b.length || !c || 0 === c.length) throw new Error("Invalid date format.");
- return {
- separators: b,
- parts: c
- };
- },
- parseDate: function parseDate(c, e, f, g) {
- function h(a, b) {
- return !0 === b && (b = 10), a < 100 && (a += 2e3) > new Date().getFullYear() + b && (a -= 100), a;
- }
-
- function i() {
- var a = this.slice(0, j[n].length),
- b = j[n].slice(0, a.length);
- return a.toLowerCase() === b.toLowerCase();
- }
-
- if (!c) return b;
- if (c instanceof Date) return c;
- if ("string" == typeof e && (e = r.parseFormat(e)), e.toValue) return e.toValue(c, e, f);
- var j,
- l,
- m,
- n,
- o,
- p = {
- d: "moveDay",
- m: "moveMonth",
- w: "moveWeek",
- y: "moveYear"
- },
- s = {
- yesterday: "-1d",
- today: "+0d",
- tomorrow: "+1d"
- };
-
- if (c in s && (c = s[c]), /^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/i.test(c)) {
- for (j = c.match(/([\-+]\d+)([dmwy])/gi), c = new Date(), n = 0; n < j.length; n++) {
- l = j[n].match(/([\-+]\d+)([dmwy])/i), m = Number(l[1]), o = p[l[2].toLowerCase()], c = k.prototype[o](c, m);
- }
-
- return k.prototype._zero_utc_time(c);
- }
-
- j = c && c.match(this.nonpunctuation) || [];
- var t,
- u,
- v = {},
- w = ["yyyy", "yy", "M", "MM", "m", "mm", "d", "dd"],
- x = {
- yyyy: function yyyy(a, b) {
- return a.setUTCFullYear(g ? h(b, g) : b);
- },
- m: function m(a, b) {
- if (isNaN(a)) return a;
-
- for (b -= 1; b < 0;) {
- b += 12;
- }
-
- for (b %= 12, a.setUTCMonth(b); a.getUTCMonth() !== b;) {
- a.setUTCDate(a.getUTCDate() - 1);
- }
-
- return a;
- },
- d: function d(a, b) {
- return a.setUTCDate(b);
- }
- };
- x.yy = x.yyyy, x.M = x.MM = x.mm = x.m, x.dd = x.d, c = d();
- var y = e.parts.slice();
-
- if (j.length !== y.length && (y = a(y).filter(function (b, c) {
- return -1 !== a.inArray(c, w);
- }).toArray()), j.length === y.length) {
- var z;
-
- for (n = 0, z = y.length; n < z; n++) {
- if (t = parseInt(j[n], 10), l = y[n], isNaN(t)) switch (l) {
- case "MM":
- u = a(q[f].months).filter(i), t = a.inArray(u[0], q[f].months) + 1;
- break;
-
- case "M":
- u = a(q[f].monthsShort).filter(i), t = a.inArray(u[0], q[f].monthsShort) + 1;
- }
- v[l] = t;
- }
-
- var A, B;
-
- for (n = 0; n < w.length; n++) {
- (B = w[n]) in v && !isNaN(v[B]) && (A = new Date(c), x[B](A, v[B]), isNaN(A) || (c = A));
- }
- }
-
- return c;
- },
- formatDate: function formatDate(b, c, d) {
- if (!b) return "";
- if ("string" == typeof c && (c = r.parseFormat(c)), c.toDisplay) return c.toDisplay(b, c, d);
- var e = {
- d: b.getUTCDate(),
- D: q[d].daysShort[b.getUTCDay()],
- DD: q[d].days[b.getUTCDay()],
- m: b.getUTCMonth() + 1,
- M: q[d].monthsShort[b.getUTCMonth()],
- MM: q[d].months[b.getUTCMonth()],
- yy: b.getUTCFullYear().toString().substring(2),
- yyyy: b.getUTCFullYear()
- };
- e.dd = (e.d < 10 ? "0" : "") + e.d, e.mm = (e.m < 10 ? "0" : "") + e.m, b = [];
-
- for (var f = a.extend([], c.separators), g = 0, h = c.parts.length; g <= h; g++) {
- f.length && b.push(f.shift()), b.push(e[c.parts[g]]);
- }
-
- return b.join("");
- },
- headTemplate: ' |
---|
' + o.templates.leftArrow + ' | | ' + o.templates.rightArrow + " |
",
- contTemplate: ' |
',
- footTemplate: ' |
---|
|
'
- };
- r.template = '' + r.headTemplate + "" + r.footTemplate + '
' + r.headTemplate + r.contTemplate + r.footTemplate + '
' + r.headTemplate + r.contTemplate + r.footTemplate + '
' + r.headTemplate + r.contTemplate + r.footTemplate + '
' + r.headTemplate + r.contTemplate + r.footTemplate + "
", a.fn.datepicker.DPGlobal = r, a.fn.datepicker.noConflict = function () {
- return a.fn.datepicker = m, this;
- }, a.fn.datepicker.version = "1.9.0", a.fn.datepicker.deprecated = function (a) {
- var b = window.console;
- b && b.warn && b.warn("DEPRECATED: " + a);
- }, a(document).on("focus.datepicker.data-api click.datepicker.data-api", '[data-provide="datepicker"]', function (b) {
- var c = a(this);
- c.data("datepicker") || (b.preventDefault(), n.call(c, "show"));
- }), a(function () {
- n.call(a('[data-provide="datepicker-inline"]'));
- });
-});
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhIiwiZGVmaW5lIiwiYW1kIiwiZXhwb3J0cyIsInJlcXVpcmUiLCJqUXVlcnkiLCJiIiwiYyIsIkRhdGUiLCJVVEMiLCJhcHBseSIsImFyZ3VtZW50cyIsImQiLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsImUiLCJnZXRVVENGdWxsWWVhciIsImdldFVUQ01vbnRoIiwiZ2V0VVRDRGF0ZSIsImYiLCJmbiIsImRhdGVwaWNrZXIiLCJkZXByZWNhdGVkIiwiZyIsImlzTmFOIiwiZ2V0VGltZSIsImgiLCJ0b0xvd2VyQ2FzZSIsImRhdGEiLCJSZWdFeHAiLCJpIiwidGVzdCIsInJlcGxhY2UiLCJxIiwic3BsaXQiLCJlYWNoIiwicCIsImoiLCJnZXQiLCJzbGljZSIsImNvbnRhaW5zIiwidmFsdWVPZiIsImxlbmd0aCIsInJlbW92ZSIsInNwbGljZSIsImlzQXJyYXkiLCJjbGVhciIsInB1c2giLCJjb3B5IiwiZXh0ZW5kIiwiayIsIl9ldmVudHMiLCJfc2Vjb25kYXJ5RXZlbnRzIiwiX3Byb2Nlc3Nfb3B0aW9ucyIsImRhdGVzIiwidmlld0RhdGUiLCJvIiwiZGVmYXVsdFZpZXdEYXRlIiwiZm9jdXNEYXRlIiwiZWxlbWVudCIsImlzSW5wdXQiLCJpcyIsImlucHV0RmllbGQiLCJmaW5kIiwiY29tcG9uZW50IiwiaGFzQ2xhc3MiLCJpc0lubGluZSIsInBpY2tlciIsInIiLCJ0ZW1wbGF0ZSIsIl9jaGVja190ZW1wbGF0ZSIsInRlbXBsYXRlcyIsImxlZnRBcnJvdyIsImh0bWwiLCJyaWdodEFycm93IiwiX2J1aWxkRXZlbnRzIiwiX2F0dGFjaEV2ZW50cyIsImFkZENsYXNzIiwiYXBwZW5kVG8iLCJydGwiLCJjYWxlbmRhcldlZWtzIiwiYXR0ciIsIk51bWJlciIsInN0YXJ0RGF0ZSIsIl9vIiwiZW5kRGF0ZSIsImRheXNPZldlZWtEaXNhYmxlZCIsImRheXNPZldlZWtIaWdobGlnaHRlZCIsImRhdGVzRGlzYWJsZWQiLCJfYWxsb3dfdXBkYXRlIiwic2V0Vmlld01vZGUiLCJzdGFydFZpZXciLCJmaWxsRG93IiwiZmlsbE1vbnRocyIsInVwZGF0ZSIsInNob3ciLCJwcm90b3R5cGUiLCJjb25zdHJ1Y3RvciIsIl9yZXNvbHZlVmlld05hbWUiLCJ2aWV3TW9kZXMiLCJpbkFycmF5IiwibmFtZXMiLCJfcmVzb2x2ZURheXNPZldlZWsiLCJtYXAiLCJtYXRjaCIsImxhbmd1YWdlIiwibWluVmlld01vZGUiLCJtYXhWaWV3TW9kZSIsIk1hdGgiLCJtYXgiLCJtaW4iLCJtdWx0aWRhdGUiLCJtdWx0aWRhdGVTZXBhcmF0b3IiLCJTdHJpbmciLCJ3ZWVrU3RhcnQiLCJ3ZWVrRW5kIiwicGFyc2VGb3JtYXQiLCJmb3JtYXQiLCJfbG9jYWxfdG9fdXRjIiwiX3plcm9fdGltZSIsInBhcnNlRGF0ZSIsImFzc3VtZU5lYXJieVllYXIiLCJvcmllbnRhdGlvbiIsImdyZXAiLCJ4IiwieSIsInllYXIiLCJtb250aCIsImwiLCJkYXkiLCJfYXBwbHlFdmVudHMiLCJvbiIsIl91bmFwcGx5RXZlbnRzIiwib2ZmIiwia2V5dXAiLCJwcm94eSIsImtleUNvZGUiLCJrZXlkb3duIiwicGFzdGUiLCJzaG93T25Gb2N1cyIsImZvY3VzIiwiY2xpY2siLCJibHVyIiwiX2ZvY3VzZWRfZnJvbSIsInRhcmdldCIsImltbWVkaWF0ZVVwZGF0ZXMiLCJkYXRlIiwibmF2QXJyb3dzQ2xpY2siLCJkYXlDZWxsQ2xpY2siLCJ3aW5kb3ciLCJyZXNpemUiLCJwbGFjZSIsImRvY3VtZW50IiwiaGlkZSIsIl9kZXRhY2hFdmVudHMiLCJfYXR0YWNoU2Vjb25kYXJ5RXZlbnRzIiwiX2RldGFjaFNlY29uZGFyeUV2ZW50cyIsIl90cmlnZ2VyIiwiX3V0Y190b19sb2NhbCIsInRyaWdnZXIiLCJ0eXBlIiwidmlld01vZGUiLCJmb3JtYXREYXRlIiwicHJvcCIsImVuYWJsZU9uUmVhZG9ubHkiLCJjb250YWluZXIiLCJuYXZpZ2F0b3IiLCJtc01heFRvdWNoUG9pbnRzIiwiZGlzYWJsZVRvdWNoS2V5Ym9hcmQiLCJkZXRhY2giLCJmb3JjZVBhcnNlIiwidmFsIiwic2V0VmFsdWUiLCJkZXN0cm95Iiwib3JpZ2luYWxFdmVudCIsImNsaXBib2FyZERhdGEiLCJ0eXBlcyIsImdldERhdGEiLCJzZXREYXRlIiwicHJldmVudERlZmF1bHQiLCJnZXRUaW1lem9uZU9mZnNldCIsIl96ZXJvX3V0Y190aW1lIiwiZ2V0RGF0ZXMiLCJnZXRVVENEYXRlcyIsImNsZWFyRGF0ZXMiLCJhdXRvY2xvc2UiLCJzZXREYXRlcyIsInNldFVUQ0RhdGVzIiwic2V0VVRDRGF0ZSIsImdldEZvcm1hdHRlZERhdGUiLCJqb2luIiwiZ2V0U3RhcnREYXRlIiwic2V0U3RhcnREYXRlIiwidXBkYXRlTmF2QXJyb3dzIiwiZ2V0RW5kRGF0ZSIsInNldEVuZERhdGUiLCJzZXREYXlzT2ZXZWVrRGlzYWJsZWQiLCJzZXREYXlzT2ZXZWVrSGlnaGxpZ2h0ZWQiLCJzZXREYXRlc0Rpc2FibGVkIiwib3V0ZXJXaWR0aCIsIm91dGVySGVpZ2h0Iiwid2lkdGgiLCJzY3JvbGxUb3AiLCJvZmZzZXQiLCJwYXJlbnRzIiwiY3NzIiwiekluZGV4T2Zmc2V0IiwicGFyZW50IiwibSIsImxlZnQiLCJuIiwidG9wIiwicmVtb3ZlQ2xhc3MiLCJwYXJzZUludCIsInJpZ2h0IiwiekluZGV4IiwiZGF0ZVdpdGhpblJhbmdlIiwidXBkYXRlVmlld0RhdGUiLCJjaGFuZ2UiLCJmaWxsIiwic2hvd1dlZWtEYXlzIiwiZGF5c01pbiIsImFwcGVuZCIsIm1vbnRoc1Nob3J0Iiwic2V0UmFuZ2UiLCJyYW5nZSIsImdldENsYXNzTmFtZXMiLCJ0b2RheUhpZ2hsaWdodCIsImRhdGVJc0Rpc2FibGVkIiwiZ2V0VVRDRGF5IiwiX2ZpbGxfeWVhcnNWaWV3IiwiZmxvb3IiLCJzIiwidCIsIm5vb3AiLCJlbmFibGVkIiwiY2xhc3NlcyIsImNvbmNhdCIsInRvb2x0aXAiLCJ0ZXh0IiwidG9kYXkiLCJlbiIsInRpdGxlRm9ybWF0IiwidG9kYXlCdG4iLCJ3ZWVrT2ZEYXRlSXNEaXNhYmxlZCIsImNsZWFyQnRuIiwidGl0bGUiLCJ1IiwidiIsInciLCJzZXRVVENGdWxsWWVhciIsInoiLCJBIiwiQiIsIkMiLCJEIiwiRSIsImJlZm9yZVNob3dEYXkiLCJjb250ZW50IiwiaXNGdW5jdGlvbiIsInVuaXF1ZVNvcnQiLCJ1bmlxdWUiLCJ0b1N0cmluZyIsIkYiLCJtb250aHNUaXRsZSIsIkciLCJlbmQiLCJlcSIsImJlZm9yZVNob3dNb250aCIsIkgiLCJiZWZvcmVTaG93WWVhciIsImJlZm9yZVNob3dEZWNhZGUiLCJiZWZvcmVTaG93Q2VudHVyeSIsInRvZ2dsZUNsYXNzIiwic3RvcFByb3BhZ2F0aW9uIiwiX3NldERhdGUiLCJpbmRleCIsInNldFVUQ01vbnRoIiwiY3VycmVudFRhcmdldCIsIm5hdlN0ZXAiLCJtb3ZlTW9udGgiLCJfdG9nZ2xlX211bHRpZGF0ZSIsInRvZ2dsZUFjdGl2ZSIsIm1vdmVEYXkiLCJtb3ZlV2VlayIsImFicyIsIm1vdmVZZWFyIiwibW92ZUF2YWlsYWJsZURhdGUiLCJrZXlib2FyZE5hdmlnYXRpb24iLCJjdHJsS2V5Iiwic2hpZnRLZXkiLCJjaGlsZHJlbiIsImZpbHRlciIsImNsc05hbWUiLCJpbnB1dHMiLCJqcXVlcnkiLCJrZWVwRW1wdHlWYWx1ZXMiLCJjYWxsIiwiZGF0ZVVwZGF0ZWQiLCJwaWNrZXJzIiwidXBkYXRlRGF0ZXMiLCJ1cGRhdGVSYW5nZXMiLCJ1cGRhdGluZyIsIkFycmF5Iiwic2hpZnQiLCJ0b0FycmF5IiwiRXJyb3IiLCJkZWZhdWx0cyIsImxvY2FsZV9vcHRzIiwiQ29uc3RydWN0b3IiLCJkYXlzIiwiZGF5c1Nob3J0IiwibW9udGhzIiwidmFsaWRQYXJ0cyIsIm5vbnB1bmN0dWF0aW9uIiwidG9WYWx1ZSIsInRvRGlzcGxheSIsInNlcGFyYXRvcnMiLCJwYXJ0cyIsInllc3RlcmRheSIsInRvbW9ycm93IiwieXl5eSIsInl5IiwiTSIsIk1NIiwibW0iLCJkZCIsIkREIiwic3Vic3RyaW5nIiwiaGVhZFRlbXBsYXRlIiwiY29udFRlbXBsYXRlIiwiZm9vdFRlbXBsYXRlIiwiRFBHbG9iYWwiLCJub0NvbmZsaWN0IiwidmVyc2lvbiIsImNvbnNvbGUiLCJ3YXJuIl0sInNvdXJjZXMiOlsiYm9vdHN0cmFwLWRhdGVwaWNrZXIubWluLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogRGF0ZXBpY2tlciBmb3IgQm9vdHN0cmFwIHYxLjkuMCAoaHR0cHM6Ly9naXRodWIuY29tL3V4c29sdXRpb25zL2Jvb3RzdHJhcC1kYXRlcGlja2VyKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIChodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjApXG4gKi9cblxuIWZ1bmN0aW9uKGEpe1wiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW1wianF1ZXJ5XCJdLGEpOmEoXCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHM/cmVxdWlyZShcImpxdWVyeVwiKTpqUXVlcnkpfShmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXtyZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEMuYXBwbHkoRGF0ZSxhcmd1bWVudHMpKX1mdW5jdGlvbiBkKCl7dmFyIGE9bmV3IERhdGU7cmV0dXJuIGMoYS5nZXRGdWxsWWVhcigpLGEuZ2V0TW9udGgoKSxhLmdldERhdGUoKSl9ZnVuY3Rpb24gZShhLGIpe3JldHVybiBhLmdldFVUQ0Z1bGxZZWFyKCk9PT1iLmdldFVUQ0Z1bGxZZWFyKCkmJmEuZ2V0VVRDTW9udGgoKT09PWIuZ2V0VVRDTW9udGgoKSYmYS5nZXRVVENEYXRlKCk9PT1iLmdldFVUQ0RhdGUoKX1mdW5jdGlvbiBmKGMsZCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGQhPT1iJiZhLmZuLmRhdGVwaWNrZXIuZGVwcmVjYXRlZChkKSx0aGlzW2NdLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gZyhhKXtyZXR1cm4gYSYmIWlzTmFOKGEuZ2V0VGltZSgpKX1mdW5jdGlvbiBoKGIsYyl7ZnVuY3Rpb24gZChhLGIpe3JldHVybiBiLnRvTG93ZXJDYXNlKCl9dmFyIGUsZj1hKGIpLmRhdGEoKSxnPXt9LGg9bmV3IFJlZ0V4cChcIl5cIitjLnRvTG93ZXJDYXNlKCkrXCIoW0EtWl0pXCIpO2M9bmV3IFJlZ0V4cChcIl5cIitjLnRvTG93ZXJDYXNlKCkpO2Zvcih2YXIgaSBpbiBmKWMudGVzdChpKSYmKGU9aS5yZXBsYWNlKGgsZCksZ1tlXT1mW2ldKTtyZXR1cm4gZ31mdW5jdGlvbiBpKGIpe3ZhciBjPXt9O2lmKHFbYl18fChiPWIuc3BsaXQoXCItXCIpWzBdLHFbYl0pKXt2YXIgZD1xW2JdO3JldHVybiBhLmVhY2gocCxmdW5jdGlvbihhLGIpe2IgaW4gZCYmKGNbYl09ZFtiXSl9KSxjfX12YXIgaj1mdW5jdGlvbigpe3ZhciBiPXtnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuc2xpY2UoYSlbMF19LGNvbnRhaW5zOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1hJiZhLnZhbHVlT2YoKSxjPTAsZD10aGlzLmxlbmd0aDtjPGQ7YysrKWlmKDA8PXRoaXNbY10udmFsdWVPZigpLWImJnRoaXNbY10udmFsdWVPZigpLWI8ODY0ZTUpcmV0dXJuIGM7cmV0dXJuLTF9LHJlbW92ZTpmdW5jdGlvbihhKXt0aGlzLnNwbGljZShhLDEpfSxyZXBsYWNlOmZ1bmN0aW9uKGIpe2ImJihhLmlzQXJyYXkoYil8fChiPVtiXSksdGhpcy5jbGVhcigpLHRoaXMucHVzaC5hcHBseSh0aGlzLGIpKX0sY2xlYXI6ZnVuY3Rpb24oKXt0aGlzLmxlbmd0aD0wfSxjb3B5OmZ1bmN0aW9uKCl7dmFyIGE9bmV3IGo7cmV0dXJuIGEucmVwbGFjZSh0aGlzKSxhfX07cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGM9W107cmV0dXJuIGMucHVzaC5hcHBseShjLGFyZ3VtZW50cyksYS5leHRlbmQoYyxiKSxjfX0oKSxrPWZ1bmN0aW9uKGIsYyl7YS5kYXRhKGIsXCJkYXRlcGlja2VyXCIsdGhpcyksdGhpcy5fZXZlbnRzPVtdLHRoaXMuX3NlY29uZGFyeUV2ZW50cz1bXSx0aGlzLl9wcm9jZXNzX29wdGlvbnMoYyksdGhpcy5kYXRlcz1uZXcgaix0aGlzLnZpZXdEYXRlPXRoaXMuby5kZWZhdWx0Vmlld0RhdGUsdGhpcy5mb2N1c0RhdGU9bnVsbCx0aGlzLmVsZW1lbnQ9YShiKSx0aGlzLmlzSW5wdXQ9dGhpcy5lbGVtZW50LmlzKFwiaW5wdXRcIiksdGhpcy5pbnB1dEZpZWxkPXRoaXMuaXNJbnB1dD90aGlzLmVsZW1lbnQ6dGhpcy5lbGVtZW50LmZpbmQoXCJpbnB1dFwiKSx0aGlzLmNvbXBvbmVudD0hIXRoaXMuZWxlbWVudC5oYXNDbGFzcyhcImRhdGVcIikmJnRoaXMuZWxlbWVudC5maW5kKFwiLmFkZC1vbiwgLmlucHV0LWdyb3VwLWFkZG9uLCAuaW5wdXQtZ3JvdXAtYXBwZW5kLCAuaW5wdXQtZ3JvdXAtcHJlcGVuZCwgLmJ0blwiKSx0aGlzLmNvbXBvbmVudCYmMD09PXRoaXMuY29tcG9uZW50Lmxlbmd0aCYmKHRoaXMuY29tcG9uZW50PSExKSx0aGlzLmlzSW5saW5lPSF0aGlzLmNvbXBvbmVudCYmdGhpcy5lbGVtZW50LmlzKFwiZGl2XCIpLHRoaXMucGlja2VyPWEoci50ZW1wbGF0ZSksdGhpcy5fY2hlY2tfdGVtcGxhdGUodGhpcy5vLnRlbXBsYXRlcy5sZWZ0QXJyb3cpJiZ0aGlzLnBpY2tlci5maW5kKFwiLnByZXZcIikuaHRtbCh0aGlzLm8udGVtcGxhdGVzLmxlZnRBcnJvdyksdGhpcy5fY2hlY2tfdGVtcGxhdGUodGhpcy5vLnRlbXBsYXRlcy5yaWdodEFycm93KSYmdGhpcy5waWNrZXIuZmluZChcIi5uZXh0XCIpLmh0bWwodGhpcy5vLnRlbXBsYXRlcy5yaWdodEFycm93KSx0aGlzLl9idWlsZEV2ZW50cygpLHRoaXMuX2F0dGFjaEV2ZW50cygpLHRoaXMuaXNJbmxpbmU/dGhpcy5waWNrZXIuYWRkQ2xhc3MoXCJkYXRlcGlja2VyLWlubGluZVwiKS5hcHBlbmRUbyh0aGlzLmVsZW1lbnQpOnRoaXMucGlja2VyLmFkZENsYXNzKFwiZGF0ZXBpY2tlci1kcm9wZG93biBkcm9wZG93bi1tZW51XCIpLHRoaXMuby5ydGwmJnRoaXMucGlja2VyLmFkZENsYXNzKFwiZGF0ZXBpY2tlci1ydGxcIiksdGhpcy5vLmNhbGVuZGFyV2Vla3MmJnRoaXMucGlja2VyLmZpbmQoXCIuZGF0ZXBpY2tlci1kYXlzIC5kYXRlcGlja2VyLXN3aXRjaCwgdGhlYWQgLmRhdGVwaWNrZXItdGl0bGUsIHRmb290IC50b2RheSwgdGZvb3QgLmNsZWFyXCIpLmF0dHIoXCJjb2xzcGFuXCIsZnVuY3Rpb24oYSxiKXtyZXR1cm4gTnVtYmVyKGIpKzF9KSx0aGlzLl9wcm9jZXNzX29wdGlvbnMoe3N0YXJ0RGF0ZTp0aGlzLl9vLnN0YXJ0RGF0ZSxlbmREYXRlOnRoaXMuX28uZW5kRGF0ZSxkYXlzT2ZXZWVrRGlzYWJsZWQ6dGhpcy5vLmRheXNPZldlZWtEaXNhYmxlZCxkYXlzT2ZXZWVrSGlnaGxpZ2h0ZWQ6dGhpcy5vLmRheXNPZldlZWtIaWdobGlnaHRlZCxkYXRlc0Rpc2FibGVkOnRoaXMuby5kYXRlc0Rpc2FibGVkfSksdGhpcy5fYWxsb3dfdXBkYXRlPSExLHRoaXMuc2V0Vmlld01vZGUodGhpcy5vLnN0YXJ0VmlldyksdGhpcy5fYWxsb3dfdXBkYXRlPSEwLHRoaXMuZmlsbERvdygpLHRoaXMuZmlsbE1vbnRocygpLHRoaXMudXBkYXRlKCksdGhpcy5pc0lubGluZSYmdGhpcy5zaG93KCl9O2sucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjprLF9yZXNvbHZlVmlld05hbWU6ZnVuY3Rpb24oYil7cmV0dXJuIGEuZWFjaChyLnZpZXdNb2RlcyxmdW5jdGlvbihjLGQpe2lmKGI9PT1jfHwtMSE9PWEuaW5BcnJheShiLGQubmFtZXMpKXJldHVybiBiPWMsITF9KSxifSxfcmVzb2x2ZURheXNPZldlZWs6ZnVuY3Rpb24oYil7cmV0dXJuIGEuaXNBcnJheShiKXx8KGI9Yi5zcGxpdCgvWyxcXHNdKi8pKSxhLm1hcChiLE51bWJlcil9LF9jaGVja190ZW1wbGF0ZTpmdW5jdGlvbihjKXt0cnl7aWYoYz09PWJ8fFwiXCI9PT1jKXJldHVybiExO2lmKChjLm1hdGNoKC9bPD5dL2cpfHxbXSkubGVuZ3RoPD0wKXJldHVybiEwO3JldHVybiBhKGMpLmxlbmd0aD4wfWNhdGNoKGEpe3JldHVybiExfX0sX3Byb2Nlc3Nfb3B0aW9uczpmdW5jdGlvbihiKXt0aGlzLl9vPWEuZXh0ZW5kKHt9LHRoaXMuX28sYik7dmFyIGU9dGhpcy5vPWEuZXh0ZW5kKHt9LHRoaXMuX28pLGY9ZS5sYW5ndWFnZTtxW2ZdfHwoZj1mLnNwbGl0KFwiLVwiKVswXSxxW2ZdfHwoZj1vLmxhbmd1YWdlKSksZS5sYW5ndWFnZT1mLGUuc3RhcnRWaWV3PXRoaXMuX3Jlc29sdmVWaWV3TmFtZShlLnN0YXJ0VmlldyksZS5taW5WaWV3TW9kZT10aGlzLl9yZXNvbHZlVmlld05hbWUoZS5taW5WaWV3TW9kZSksZS5tYXhWaWV3TW9kZT10aGlzLl9yZXNvbHZlVmlld05hbWUoZS5tYXhWaWV3TW9kZSksZS5zdGFydFZpZXc9TWF0aC5tYXgodGhpcy5vLm1pblZpZXdNb2RlLE1hdGgubWluKHRoaXMuby5tYXhWaWV3TW9kZSxlLnN0YXJ0VmlldykpLCEwIT09ZS5tdWx0aWRhdGUmJihlLm11bHRpZGF0ZT1OdW1iZXIoZS5tdWx0aWRhdGUpfHwhMSwhMSE9PWUubXVsdGlkYXRlJiYoZS5tdWx0aWRhdGU9TWF0aC5tYXgoMCxlLm11bHRpZGF0ZSkpKSxlLm11bHRpZGF0ZVNlcGFyYXRvcj1TdHJpbmcoZS5tdWx0aWRhdGVTZXBhcmF0b3IpLGUud2Vla1N0YXJ0JT03LGUud2Vla0VuZD0oZS53ZWVrU3RhcnQrNiklNzt2YXIgZz1yLnBhcnNlRm9ybWF0KGUuZm9ybWF0KTtlLnN0YXJ0RGF0ZSE9PS0xLzAmJihlLnN0YXJ0RGF0ZT9lLnN0YXJ0RGF0ZSBpbnN0YW5jZW9mIERhdGU/ZS5zdGFydERhdGU9dGhpcy5fbG9jYWxfdG9fdXRjKHRoaXMuX3plcm9fdGltZShlLnN0YXJ0RGF0ZSkpOmUuc3RhcnREYXRlPXIucGFyc2VEYXRlKGUuc3RhcnREYXRlLGcsZS5sYW5ndWFnZSxlLmFzc3VtZU5lYXJieVllYXIpOmUuc3RhcnREYXRlPS0xLzApLGUuZW5kRGF0ZSE9PTEvMCYmKGUuZW5kRGF0ZT9lLmVuZERhdGUgaW5zdGFuY2VvZiBEYXRlP2UuZW5kRGF0ZT10aGlzLl9sb2NhbF90b191dGModGhpcy5femVyb190aW1lKGUuZW5kRGF0ZSkpOmUuZW5kRGF0ZT1yLnBhcnNlRGF0ZShlLmVuZERhdGUsZyxlLmxhbmd1YWdlLGUuYXNzdW1lTmVhcmJ5WWVhcik6ZS5lbmREYXRlPTEvMCksZS5kYXlzT2ZXZWVrRGlzYWJsZWQ9dGhpcy5fcmVzb2x2ZURheXNPZldlZWsoZS5kYXlzT2ZXZWVrRGlzYWJsZWR8fFtdKSxlLmRheXNPZldlZWtIaWdobGlnaHRlZD10aGlzLl9yZXNvbHZlRGF5c09mV2VlayhlLmRheXNPZldlZWtIaWdobGlnaHRlZHx8W10pLGUuZGF0ZXNEaXNhYmxlZD1lLmRhdGVzRGlzYWJsZWR8fFtdLGEuaXNBcnJheShlLmRhdGVzRGlzYWJsZWQpfHwoZS5kYXRlc0Rpc2FibGVkPWUuZGF0ZXNEaXNhYmxlZC5zcGxpdChcIixcIikpLGUuZGF0ZXNEaXNhYmxlZD1hLm1hcChlLmRhdGVzRGlzYWJsZWQsZnVuY3Rpb24oYSl7cmV0dXJuIHIucGFyc2VEYXRlKGEsZyxlLmxhbmd1YWdlLGUuYXNzdW1lTmVhcmJ5WWVhcil9KTt2YXIgaD1TdHJpbmcoZS5vcmllbnRhdGlvbikudG9Mb3dlckNhc2UoKS5zcGxpdCgvXFxzKy9nKSxpPWUub3JpZW50YXRpb24udG9Mb3dlckNhc2UoKTtpZihoPWEuZ3JlcChoLGZ1bmN0aW9uKGEpe3JldHVybi9eYXV0b3xsZWZ0fHJpZ2h0fHRvcHxib3R0b20kLy50ZXN0KGEpfSksZS5vcmllbnRhdGlvbj17eDpcImF1dG9cIix5OlwiYXV0b1wifSxpJiZcImF1dG9cIiE9PWkpaWYoMT09PWgubGVuZ3RoKXN3aXRjaChoWzBdKXtjYXNlXCJ0b3BcIjpjYXNlXCJib3R0b21cIjplLm9yaWVudGF0aW9uLnk9aFswXTticmVhaztjYXNlXCJsZWZ0XCI6Y2FzZVwicmlnaHRcIjplLm9yaWVudGF0aW9uLng9aFswXX1lbHNlIGk9YS5ncmVwKGgsZnVuY3Rpb24oYSl7cmV0dXJuL15sZWZ0fHJpZ2h0JC8udGVzdChhKX0pLGUub3JpZW50YXRpb24ueD1pWzBdfHxcImF1dG9cIixpPWEuZ3JlcChoLGZ1bmN0aW9uKGEpe3JldHVybi9edG9wfGJvdHRvbSQvLnRlc3QoYSl9KSxlLm9yaWVudGF0aW9uLnk9aVswXXx8XCJhdXRvXCI7ZWxzZTtpZihlLmRlZmF1bHRWaWV3RGF0ZSBpbnN0YW5jZW9mIERhdGV8fFwic3RyaW5nXCI9PXR5cGVvZiBlLmRlZmF1bHRWaWV3RGF0ZSllLmRlZmF1bHRWaWV3RGF0ZT1yLnBhcnNlRGF0ZShlLmRlZmF1bHRWaWV3RGF0ZSxnLGUubGFuZ3VhZ2UsZS5hc3N1bWVOZWFyYnlZZWFyKTtlbHNlIGlmKGUuZGVmYXVsdFZpZXdEYXRlKXt2YXIgaj1lLmRlZmF1bHRWaWV3RGF0ZS55ZWFyfHwobmV3IERhdGUpLmdldEZ1bGxZZWFyKCksaz1lLmRlZmF1bHRWaWV3RGF0ZS5tb250aHx8MCxsPWUuZGVmYXVsdFZpZXdEYXRlLmRheXx8MTtlLmRlZmF1bHRWaWV3RGF0ZT1jKGosayxsKX1lbHNlIGUuZGVmYXVsdFZpZXdEYXRlPWQoKX0sX2FwcGx5RXZlbnRzOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYyxkLGUsZj0wO2Y8YS5sZW5ndGg7ZisrKWM9YVtmXVswXSwyPT09YVtmXS5sZW5ndGg/KGQ9YixlPWFbZl1bMV0pOjM9PT1hW2ZdLmxlbmd0aCYmKGQ9YVtmXVsxXSxlPWFbZl1bMl0pLGMub24oZSxkKX0sX3VuYXBwbHlFdmVudHM6ZnVuY3Rpb24oYSl7Zm9yKHZhciBjLGQsZSxmPTA7ZjxhLmxlbmd0aDtmKyspYz1hW2ZdWzBdLDI9PT1hW2ZdLmxlbmd0aD8oZT1iLGQ9YVtmXVsxXSk6Mz09PWFbZl0ubGVuZ3RoJiYoZT1hW2ZdWzFdLGQ9YVtmXVsyXSksYy5vZmYoZCxlKX0sX2J1aWxkRXZlbnRzOmZ1bmN0aW9uKCl7dmFyIGI9e2tleXVwOmEucHJveHkoZnVuY3Rpb24oYil7LTE9PT1hLmluQXJyYXkoYi5rZXlDb2RlLFsyNywzNywzOSwzOCw0MCwzMiwxMyw5XSkmJnRoaXMudXBkYXRlKCl9LHRoaXMpLGtleWRvd246YS5wcm94eSh0aGlzLmtleWRvd24sdGhpcykscGFzdGU6YS5wcm94eSh0aGlzLnBhc3RlLHRoaXMpfTshMD09PXRoaXMuby5zaG93T25Gb2N1cyYmKGIuZm9jdXM9YS5wcm94eSh0aGlzLnNob3csdGhpcykpLHRoaXMuaXNJbnB1dD90aGlzLl9ldmVudHM9W1t0aGlzLmVsZW1lbnQsYl1dOnRoaXMuY29tcG9uZW50JiZ0aGlzLmlucHV0RmllbGQubGVuZ3RoP3RoaXMuX2V2ZW50cz1bW3RoaXMuaW5wdXRGaWVsZCxiXSxbdGhpcy5jb21wb25lbnQse2NsaWNrOmEucHJveHkodGhpcy5zaG93LHRoaXMpfV1dOnRoaXMuX2V2ZW50cz1bW3RoaXMuZWxlbWVudCx7Y2xpY2s6YS5wcm94eSh0aGlzLnNob3csdGhpcyksa2V5ZG93bjphLnByb3h5KHRoaXMua2V5ZG93bix0aGlzKX1dXSx0aGlzLl9ldmVudHMucHVzaChbdGhpcy5lbGVtZW50LFwiKlwiLHtibHVyOmEucHJveHkoZnVuY3Rpb24oYSl7dGhpcy5fZm9jdXNlZF9mcm9tPWEudGFyZ2V0fSx0aGlzKX1dLFt0aGlzLmVsZW1lbnQse2JsdXI6YS5wcm94eShmdW5jdGlvbihhKXt0aGlzLl9mb2N1c2VkX2Zyb209YS50YXJnZXR9LHRoaXMpfV0pLHRoaXMuby5pbW1lZGlhdGVVcGRhdGVzJiZ0aGlzLl9ldmVudHMucHVzaChbdGhpcy5lbGVtZW50LHtcImNoYW5nZVllYXIgY2hhbmdlTW9udGhcIjphLnByb3h5KGZ1bmN0aW9uKGEpe3RoaXMudXBkYXRlKGEuZGF0ZSl9LHRoaXMpfV0pLHRoaXMuX3NlY29uZGFyeUV2ZW50cz1bW3RoaXMucGlja2VyLHtjbGljazphLnByb3h5KHRoaXMuY2xpY2ssdGhpcyl9XSxbdGhpcy5waWNrZXIsXCIucHJldiwgLm5leHRcIix7Y2xpY2s6YS5wcm94eSh0aGlzLm5hdkFycm93c0NsaWNrLHRoaXMpfV0sW3RoaXMucGlja2VyLFwiLmRheTpub3QoLmRpc2FibGVkKVwiLHtjbGljazphLnByb3h5KHRoaXMuZGF5Q2VsbENsaWNrLHRoaXMpfV0sW2Eod2luZG93KSx7cmVzaXplOmEucHJveHkodGhpcy5wbGFjZSx0aGlzKX1dLFthKGRvY3VtZW50KSx7XCJtb3VzZWRvd24gdG91Y2hzdGFydFwiOmEucHJveHkoZnVuY3Rpb24oYSl7dGhpcy5lbGVtZW50LmlzKGEudGFyZ2V0KXx8dGhpcy5lbGVtZW50LmZpbmQoYS50YXJnZXQpLmxlbmd0aHx8dGhpcy5waWNrZXIuaXMoYS50YXJnZXQpfHx0aGlzLnBpY2tlci5maW5kKGEudGFyZ2V0KS5sZW5ndGh8fHRoaXMuaXNJbmxpbmV8fHRoaXMuaGlkZSgpfSx0aGlzKX1dXX0sX2F0dGFjaEV2ZW50czpmdW5jdGlvbigpe3RoaXMuX2RldGFjaEV2ZW50cygpLHRoaXMuX2FwcGx5RXZlbnRzKHRoaXMuX2V2ZW50cyl9LF9kZXRhY2hFdmVudHM6ZnVuY3Rpb24oKXt0aGlzLl91bmFwcGx5RXZlbnRzKHRoaXMuX2V2ZW50cyl9LF9hdHRhY2hTZWNvbmRhcnlFdmVudHM6ZnVuY3Rpb24oKXt0aGlzLl9kZXRhY2hTZWNvbmRhcnlFdmVudHMoKSx0aGlzLl9hcHBseUV2ZW50cyh0aGlzLl9zZWNvbmRhcnlFdmVudHMpfSxfZGV0YWNoU2Vjb25kYXJ5RXZlbnRzOmZ1bmN0aW9uKCl7dGhpcy5fdW5hcHBseUV2ZW50cyh0aGlzLl9zZWNvbmRhcnlFdmVudHMpfSxfdHJpZ2dlcjpmdW5jdGlvbihiLGMpe3ZhciBkPWN8fHRoaXMuZGF0ZXMuZ2V0KC0xKSxlPXRoaXMuX3V0Y190b19sb2NhbChkKTt0aGlzLmVsZW1lbnQudHJpZ2dlcih7dHlwZTpiLGRhdGU6ZSx2aWV3TW9kZTp0aGlzLnZpZXdNb2RlLGRhdGVzOmEubWFwKHRoaXMuZGF0ZXMsdGhpcy5fdXRjX3RvX2xvY2FsKSxmb3JtYXQ6YS5wcm94eShmdW5jdGlvbihhLGIpezA9PT1hcmd1bWVudHMubGVuZ3RoPyhhPXRoaXMuZGF0ZXMubGVuZ3RoLTEsYj10aGlzLm8uZm9ybWF0KTpcInN0cmluZ1wiPT10eXBlb2YgYSYmKGI9YSxhPXRoaXMuZGF0ZXMubGVuZ3RoLTEpLGI9Ynx8dGhpcy5vLmZvcm1hdDt2YXIgYz10aGlzLmRhdGVzLmdldChhKTtyZXR1cm4gci5mb3JtYXREYXRlKGMsYix0aGlzLm8ubGFuZ3VhZ2UpfSx0aGlzKX0pfSxzaG93OmZ1bmN0aW9uKCl7aWYoISh0aGlzLmlucHV0RmllbGQuaXMoXCI6ZGlzYWJsZWRcIil8fHRoaXMuaW5wdXRGaWVsZC5wcm9wKFwicmVhZG9ubHlcIikmJiExPT09dGhpcy5vLmVuYWJsZU9uUmVhZG9ubHkpKXJldHVybiB0aGlzLmlzSW5saW5lfHx0aGlzLnBpY2tlci5hcHBlbmRUbyh0aGlzLm8uY29udGFpbmVyKSx0aGlzLnBsYWNlKCksdGhpcy5waWNrZXIuc2hvdygpLHRoaXMuX2F0dGFjaFNlY29uZGFyeUV2ZW50cygpLHRoaXMuX3RyaWdnZXIoXCJzaG93XCIpLCh3aW5kb3cubmF2aWdhdG9yLm1zTWF4VG91Y2hQb2ludHN8fFwib250b3VjaHN0YXJ0XCJpbiBkb2N1bWVudCkmJnRoaXMuby5kaXNhYmxlVG91Y2hLZXlib2FyZCYmYSh0aGlzLmVsZW1lbnQpLmJsdXIoKSx0aGlzfSxoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmxpbmV8fCF0aGlzLnBpY2tlci5pcyhcIjp2aXNpYmxlXCIpP3RoaXM6KHRoaXMuZm9jdXNEYXRlPW51bGwsdGhpcy5waWNrZXIuaGlkZSgpLmRldGFjaCgpLHRoaXMuX2RldGFjaFNlY29uZGFyeUV2ZW50cygpLHRoaXMuc2V0Vmlld01vZGUodGhpcy5vLnN0YXJ0VmlldyksdGhpcy5vLmZvcmNlUGFyc2UmJnRoaXMuaW5wdXRGaWVsZC52YWwoKSYmdGhpcy5zZXRWYWx1ZSgpLHRoaXMuX3RyaWdnZXIoXCJoaWRlXCIpLHRoaXMpfSxkZXN0cm95OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGlkZSgpLHRoaXMuX2RldGFjaEV2ZW50cygpLHRoaXMuX2RldGFjaFNlY29uZGFyeUV2ZW50cygpLHRoaXMucGlja2VyLnJlbW92ZSgpLGRlbGV0ZSB0aGlzLmVsZW1lbnQuZGF0YSgpLmRhdGVwaWNrZXIsdGhpcy5pc0lucHV0fHxkZWxldGUgdGhpcy5lbGVtZW50LmRhdGEoKS5kYXRlLHRoaXN9LHBhc3RlOmZ1bmN0aW9uKGIpe3ZhciBjO2lmKGIub3JpZ2luYWxFdmVudC5jbGlwYm9hcmREYXRhJiZiLm9yaWdpbmFsRXZlbnQuY2xpcGJvYXJkRGF0YS50eXBlcyYmLTEhPT1hLmluQXJyYXkoXCJ0ZXh0L3BsYWluXCIsYi5vcmlnaW5hbEV2ZW50LmNsaXBib2FyZERhdGEudHlwZXMpKWM9Yi5vcmlnaW5hbEV2ZW50LmNsaXBib2FyZERhdGEuZ2V0RGF0YShcInRleHQvcGxhaW5cIik7ZWxzZXtpZighd2luZG93LmNsaXBib2FyZERhdGEpcmV0dXJuO2M9d2luZG93LmNsaXBib2FyZERhdGEuZ2V0RGF0YShcIlRleHRcIil9dGhpcy5zZXREYXRlKGMpLHRoaXMudXBkYXRlKCksYi5wcmV2ZW50RGVmYXVsdCgpfSxfdXRjX3RvX2xvY2FsOmZ1bmN0aW9uKGEpe2lmKCFhKXJldHVybiBhO3ZhciBiPW5ldyBEYXRlKGEuZ2V0VGltZSgpKzZlNCphLmdldFRpbWV6b25lT2Zmc2V0KCkpO3JldHVybiBiLmdldFRpbWV6b25lT2Zmc2V0KCkhPT1hLmdldFRpbWV6b25lT2Zmc2V0KCkmJihiPW5ldyBEYXRlKGEuZ2V0VGltZSgpKzZlNCpiLmdldFRpbWV6b25lT2Zmc2V0KCkpKSxifSxfbG9jYWxfdG9fdXRjOmZ1bmN0aW9uKGEpe3JldHVybiBhJiZuZXcgRGF0ZShhLmdldFRpbWUoKS02ZTQqYS5nZXRUaW1lem9uZU9mZnNldCgpKX0sX3plcm9fdGltZTpmdW5jdGlvbihhKXtyZXR1cm4gYSYmbmV3IERhdGUoYS5nZXRGdWxsWWVhcigpLGEuZ2V0TW9udGgoKSxhLmdldERhdGUoKSl9LF96ZXJvX3V0Y190aW1lOmZ1bmN0aW9uKGEpe3JldHVybiBhJiZjKGEuZ2V0VVRDRnVsbFllYXIoKSxhLmdldFVUQ01vbnRoKCksYS5nZXRVVENEYXRlKCkpfSxnZXREYXRlczpmdW5jdGlvbigpe3JldHVybiBhLm1hcCh0aGlzLmRhdGVzLHRoaXMuX3V0Y190b19sb2NhbCl9LGdldFVUQ0RhdGVzOmZ1bmN0aW9uKCl7cmV0dXJuIGEubWFwKHRoaXMuZGF0ZXMsZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBEYXRlKGEpfSl9LGdldERhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdXRjX3RvX2xvY2FsKHRoaXMuZ2V0VVRDRGF0ZSgpKX0sZ2V0VVRDRGF0ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZGF0ZXMuZ2V0KC0xKTtyZXR1cm4gYSE9PWI/bmV3IERhdGUoYSk6bnVsbH0sY2xlYXJEYXRlczpmdW5jdGlvbigpe3RoaXMuaW5wdXRGaWVsZC52YWwoXCJcIiksdGhpcy51cGRhdGUoKSx0aGlzLl90cmlnZ2VyKFwiY2hhbmdlRGF0ZVwiKSx0aGlzLm8uYXV0b2Nsb3NlJiZ0aGlzLmhpZGUoKX0sc2V0RGF0ZXM6ZnVuY3Rpb24oKXt2YXIgYj1hLmlzQXJyYXkoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO3JldHVybiB0aGlzLnVwZGF0ZS5hcHBseSh0aGlzLGIpLHRoaXMuX3RyaWdnZXIoXCJjaGFuZ2VEYXRlXCIpLHRoaXMuc2V0VmFsdWUoKSx0aGlzfSxzZXRVVENEYXRlczpmdW5jdGlvbigpe3ZhciBiPWEuaXNBcnJheShhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7cmV0dXJuIHRoaXMuc2V0RGF0ZXMuYXBwbHkodGhpcyxhLm1hcChiLHRoaXMuX3V0Y190b19sb2NhbCkpLHRoaXN9LHNldERhdGU6ZihcInNldERhdGVzXCIpLHNldFVUQ0RhdGU6ZihcInNldFVUQ0RhdGVzXCIpLHJlbW92ZTpmKFwiZGVzdHJveVwiLFwiTWV0aG9kIGByZW1vdmVgIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB2ZXJzaW9uIDIuMC4gVXNlIGBkZXN0cm95YCBpbnN0ZWFkXCIpLHNldFZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRGb3JtYXR0ZWREYXRlKCk7cmV0dXJuIHRoaXMuaW5wdXRGaWVsZC52YWwoYSksdGhpc30sZ2V0Rm9ybWF0dGVkRGF0ZTpmdW5jdGlvbihjKXtjPT09YiYmKGM9dGhpcy5vLmZvcm1hdCk7dmFyIGQ9dGhpcy5vLmxhbmd1YWdlO3JldHVybiBhLm1hcCh0aGlzLmRhdGVzLGZ1bmN0aW9uKGEpe3JldHVybiByLmZvcm1hdERhdGUoYSxjLGQpfSkuam9pbih0aGlzLm8ubXVsdGlkYXRlU2VwYXJhdG9yKX0sZ2V0U3RhcnREYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuby5zdGFydERhdGV9LHNldFN0YXJ0RGF0ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5fcHJvY2Vzc19vcHRpb25zKHtzdGFydERhdGU6YX0pLHRoaXMudXBkYXRlKCksdGhpcy51cGRhdGVOYXZBcnJvd3MoKSx0aGlzfSxnZXRFbmREYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuby5lbmREYXRlfSxzZXRFbmREYXRlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLl9wcm9jZXNzX29wdGlvbnMoe2VuZERhdGU6YX0pLHRoaXMudXBkYXRlKCksdGhpcy51cGRhdGVOYXZBcnJvd3MoKSx0aGlzfSxzZXREYXlzT2ZXZWVrRGlzYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuX3Byb2Nlc3Nfb3B0aW9ucyh7ZGF5c09mV2Vla0Rpc2FibGVkOmF9KSx0aGlzLnVwZGF0ZSgpLHRoaXN9LHNldERheXNPZldlZWtIaWdobGlnaHRlZDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5fcHJvY2Vzc19vcHRpb25zKHtkYXlzT2ZXZWVrSGlnaGxpZ2h0ZWQ6YX0pLHRoaXMudXBkYXRlKCksdGhpc30sc2V0RGF0ZXNEaXNhYmxlZDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5fcHJvY2Vzc19vcHRpb25zKHtkYXRlc0Rpc2FibGVkOmF9KSx0aGlzLnVwZGF0ZSgpLHRoaXN9LHBsYWNlOmZ1bmN0aW9uKCl7aWYodGhpcy5pc0lubGluZSlyZXR1cm4gdGhpczt2YXIgYj10aGlzLnBpY2tlci5vdXRlcldpZHRoKCksYz10aGlzLnBpY2tlci5vdXRlckhlaWdodCgpLGQ9YSh0aGlzLm8uY29udGFpbmVyKSxlPWQud2lkdGgoKSxmPVwiYm9keVwiPT09dGhpcy5vLmNvbnRhaW5lcj9hKGRvY3VtZW50KS5zY3JvbGxUb3AoKTpkLnNjcm9sbFRvcCgpLGc9ZC5vZmZzZXQoKSxoPVswXTt0aGlzLmVsZW1lbnQucGFyZW50cygpLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpLmNzcyhcInotaW5kZXhcIik7XCJhdXRvXCIhPT1iJiYwIT09TnVtYmVyKGIpJiZoLnB1c2goTnVtYmVyKGIpKX0pO3ZhciBpPU1hdGgubWF4LmFwcGx5KE1hdGgsaCkrdGhpcy5vLnpJbmRleE9mZnNldCxqPXRoaXMuY29tcG9uZW50P3RoaXMuY29tcG9uZW50LnBhcmVudCgpLm9mZnNldCgpOnRoaXMuZWxlbWVudC5vZmZzZXQoKSxrPXRoaXMuY29tcG9uZW50P3RoaXMuY29tcG9uZW50Lm91dGVySGVpZ2h0KCEwKTp0aGlzLmVsZW1lbnQub3V0ZXJIZWlnaHQoITEpLGw9dGhpcy5jb21wb25lbnQ/dGhpcy5jb21wb25lbnQub3V0ZXJXaWR0aCghMCk6dGhpcy5lbGVtZW50Lm91dGVyV2lkdGgoITEpLG09ai5sZWZ0LWcubGVmdCxuPWoudG9wLWcudG9wO1wiYm9keVwiIT09dGhpcy5vLmNvbnRhaW5lciYmKG4rPWYpLHRoaXMucGlja2VyLnJlbW92ZUNsYXNzKFwiZGF0ZXBpY2tlci1vcmllbnQtdG9wIGRhdGVwaWNrZXItb3JpZW50LWJvdHRvbSBkYXRlcGlja2VyLW9yaWVudC1yaWdodCBkYXRlcGlja2VyLW9yaWVudC1sZWZ0XCIpLFwiYXV0b1wiIT09dGhpcy5vLm9yaWVudGF0aW9uLng/KHRoaXMucGlja2VyLmFkZENsYXNzKFwiZGF0ZXBpY2tlci1vcmllbnQtXCIrdGhpcy5vLm9yaWVudGF0aW9uLngpLFwicmlnaHRcIj09PXRoaXMuby5vcmllbnRhdGlvbi54JiYobS09Yi1sKSk6ai5sZWZ0PDA/KHRoaXMucGlja2VyLmFkZENsYXNzKFwiZGF0ZXBpY2tlci1vcmllbnQtbGVmdFwiKSxtLT1qLmxlZnQtMTApOm0rYj5lPyh0aGlzLnBpY2tlci5hZGRDbGFzcyhcImRhdGVwaWNrZXItb3JpZW50LXJpZ2h0XCIpLG0rPWwtYik6dGhpcy5vLnJ0bD90aGlzLnBpY2tlci5hZGRDbGFzcyhcImRhdGVwaWNrZXItb3JpZW50LXJpZ2h0XCIpOnRoaXMucGlja2VyLmFkZENsYXNzKFwiZGF0ZXBpY2tlci1vcmllbnQtbGVmdFwiKTt2YXIgbyxwPXRoaXMuby5vcmllbnRhdGlvbi55O2lmKFwiYXV0b1wiPT09cCYmKG89LWYrbi1jLHA9bzwwP1wiYm90dG9tXCI6XCJ0b3BcIiksdGhpcy5waWNrZXIuYWRkQ2xhc3MoXCJkYXRlcGlja2VyLW9yaWVudC1cIitwKSxcInRvcFwiPT09cD9uLT1jK3BhcnNlSW50KHRoaXMucGlja2VyLmNzcyhcInBhZGRpbmctdG9wXCIpKTpuKz1rLHRoaXMuby5ydGwpe3ZhciBxPWUtKG0rbCk7dGhpcy5waWNrZXIuY3NzKHt0b3A6bixyaWdodDpxLHpJbmRleDppfSl9ZWxzZSB0aGlzLnBpY2tlci5jc3Moe3RvcDpuLGxlZnQ6bSx6SW5kZXg6aX0pO3JldHVybiB0aGlzfSxfYWxsb3dfdXBkYXRlOiEwLHVwZGF0ZTpmdW5jdGlvbigpe2lmKCF0aGlzLl9hbGxvd191cGRhdGUpcmV0dXJuIHRoaXM7dmFyIGI9dGhpcy5kYXRlcy5jb3B5KCksYz1bXSxkPSExO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhLmVhY2goYXJndW1lbnRzLGEucHJveHkoZnVuY3Rpb24oYSxiKXtiIGluc3RhbmNlb2YgRGF0ZSYmKGI9dGhpcy5fbG9jYWxfdG9fdXRjKGIpKSxjLnB1c2goYil9LHRoaXMpKSxkPSEwKTooYz10aGlzLmlzSW5wdXQ/dGhpcy5lbGVtZW50LnZhbCgpOnRoaXMuZWxlbWVudC5kYXRhKFwiZGF0ZVwiKXx8dGhpcy5pbnB1dEZpZWxkLnZhbCgpLGM9YyYmdGhpcy5vLm11bHRpZGF0ZT9jLnNwbGl0KHRoaXMuby5tdWx0aWRhdGVTZXBhcmF0b3IpOltjXSxkZWxldGUgdGhpcy5lbGVtZW50LmRhdGEoKS5kYXRlKSxjPWEubWFwKGMsYS5wcm94eShmdW5jdGlvbihhKXtyZXR1cm4gci5wYXJzZURhdGUoYSx0aGlzLm8uZm9ybWF0LHRoaXMuby5sYW5ndWFnZSx0aGlzLm8uYXNzdW1lTmVhcmJ5WWVhcil9LHRoaXMpKSxjPWEuZ3JlcChjLGEucHJveHkoZnVuY3Rpb24oYSl7cmV0dXJuIXRoaXMuZGF0ZVdpdGhpblJhbmdlKGEpfHwhYX0sdGhpcyksITApLHRoaXMuZGF0ZXMucmVwbGFjZShjKSx0aGlzLm8udXBkYXRlVmlld0RhdGUmJih0aGlzLmRhdGVzLmxlbmd0aD90aGlzLnZpZXdEYXRlPW5ldyBEYXRlKHRoaXMuZGF0ZXMuZ2V0KC0xKSk6dGhpcy52aWV3RGF0ZTx0aGlzLm8uc3RhcnREYXRlP3RoaXMudmlld0RhdGU9bmV3IERhdGUodGhpcy5vLnN0YXJ0RGF0ZSk6dGhpcy52aWV3RGF0ZT50aGlzLm8uZW5kRGF0ZT90aGlzLnZpZXdEYXRlPW5ldyBEYXRlKHRoaXMuby5lbmREYXRlKTp0aGlzLnZpZXdEYXRlPXRoaXMuby5kZWZhdWx0Vmlld0RhdGUpLGQ/KHRoaXMuc2V0VmFsdWUoKSx0aGlzLmVsZW1lbnQuY2hhbmdlKCkpOnRoaXMuZGF0ZXMubGVuZ3RoJiZTdHJpbmcoYikhPT1TdHJpbmcodGhpcy5kYXRlcykmJmQmJih0aGlzLl90cmlnZ2VyKFwiY2hhbmdlRGF0ZVwiKSx0aGlzLmVsZW1lbnQuY2hhbmdlKCkpLCF0aGlzLmRhdGVzLmxlbmd0aCYmYi5sZW5ndGgmJih0aGlzLl90cmlnZ2VyKFwiY2xlYXJEYXRlXCIpLHRoaXMuZWxlbWVudC5jaGFuZ2UoKSksdGhpcy5maWxsKCksdGhpc30sZmlsbERvdzpmdW5jdGlvbigpe2lmKHRoaXMuby5zaG93V2Vla0RheXMpe3ZhciBiPXRoaXMuby53ZWVrU3RhcnQsYz1cIjx0cj5cIjtmb3IodGhpcy5vLmNhbGVuZGFyV2Vla3MmJihjKz0nPHRoIGNsYXNzPVwiY3dcIj4mIzE2MDs8L3RoPicpO2I8dGhpcy5vLndlZWtTdGFydCs3OyljKz0nPHRoIGNsYXNzPVwiZG93JywtMSE9PWEuaW5BcnJheShiLHRoaXMuby5kYXlzT2ZXZWVrRGlzYWJsZWQpJiYoYys9XCIgZGlzYWJsZWRcIiksYys9J1wiPicrcVt0aGlzLm8ubGFuZ3VhZ2VdLmRheXNNaW5bYisrJTddK1wiPC90aD5cIjtjKz1cIjwvdHI+XCIsdGhpcy5waWNrZXIuZmluZChcIi5kYXRlcGlja2VyLWRheXMgdGhlYWRcIikuYXBwZW5kKGMpfX0sZmlsbE1vbnRoczpmdW5jdGlvbigpe2Zvcih2YXIgYSxiPXRoaXMuX3V0Y190b19sb2NhbCh0aGlzLnZpZXdEYXRlKSxjPVwiXCIsZD0wO2Q8MTI7ZCsrKWE9YiYmYi5nZXRNb250aCgpPT09ZD9cIiBmb2N1c2VkXCI6XCJcIixjKz0nPHNwYW4gY2xhc3M9XCJtb250aCcrYSsnXCI+JytxW3RoaXMuby5sYW5ndWFnZV0ubW9udGhzU2hvcnRbZF0rXCI8L3NwYW4+XCI7dGhpcy5waWNrZXIuZmluZChcIi5kYXRlcGlja2VyLW1vbnRocyB0ZFwiKS5odG1sKGMpfSxzZXRSYW5nZTpmdW5jdGlvbihiKXtiJiZiLmxlbmd0aD90aGlzLnJhbmdlPWEubWFwKGIsZnVuY3Rpb24oYSl7cmV0dXJuIGEudmFsdWVPZigpfSk6ZGVsZXRlIHRoaXMucmFuZ2UsdGhpcy5maWxsKCl9LGdldENsYXNzTmFtZXM6ZnVuY3Rpb24oYil7dmFyIGM9W10sZj10aGlzLnZpZXdEYXRlLmdldFVUQ0Z1bGxZZWFyKCksZz10aGlzLnZpZXdEYXRlLmdldFVUQ01vbnRoKCksaD1kKCk7cmV0dXJuIGIuZ2V0VVRDRnVsbFllYXIoKTxmfHxiLmdldFVUQ0Z1bGxZZWFyKCk9PT1mJiZiLmdldFVUQ01vbnRoKCk8Zz9jLnB1c2goXCJvbGRcIik6KGIuZ2V0VVRDRnVsbFllYXIoKT5mfHxiLmdldFVUQ0Z1bGxZZWFyKCk9PT1mJiZiLmdldFVUQ01vbnRoKCk+ZykmJmMucHVzaChcIm5ld1wiKSx0aGlzLmZvY3VzRGF0ZSYmYi52YWx1ZU9mKCk9PT10aGlzLmZvY3VzRGF0ZS52YWx1ZU9mKCkmJmMucHVzaChcImZvY3VzZWRcIiksdGhpcy5vLnRvZGF5SGlnaGxpZ2h0JiZlKGIsaCkmJmMucHVzaChcInRvZGF5XCIpLC0xIT09dGhpcy5kYXRlcy5jb250YWlucyhiKSYmYy5wdXNoKFwiYWN0aXZlXCIpLHRoaXMuZGF0ZVdpdGhpblJhbmdlKGIpfHxjLnB1c2goXCJkaXNhYmxlZFwiKSx0aGlzLmRhdGVJc0Rpc2FibGVkKGIpJiZjLnB1c2goXCJkaXNhYmxlZFwiLFwiZGlzYWJsZWQtZGF0ZVwiKSwtMSE9PWEuaW5BcnJheShiLmdldFVUQ0RheSgpLHRoaXMuby5kYXlzT2ZXZWVrSGlnaGxpZ2h0ZWQpJiZjLnB1c2goXCJoaWdobGlnaHRlZFwiKSx0aGlzLnJhbmdlJiYoYj50aGlzLnJhbmdlWzBdJiZiPHRoaXMucmFuZ2VbdGhpcy5yYW5nZS5sZW5ndGgtMV0mJmMucHVzaChcInJhbmdlXCIpLC0xIT09YS5pbkFycmF5KGIudmFsdWVPZigpLHRoaXMucmFuZ2UpJiZjLnB1c2goXCJzZWxlY3RlZFwiKSxiLnZhbHVlT2YoKT09PXRoaXMucmFuZ2VbMF0mJmMucHVzaChcInJhbmdlLXN0YXJ0XCIpLGIudmFsdWVPZigpPT09dGhpcy5yYW5nZVt0aGlzLnJhbmdlLmxlbmd0aC0xXSYmYy5wdXNoKFwicmFuZ2UtZW5kXCIpKSxjfSxfZmlsbF95ZWFyc1ZpZXc6ZnVuY3Rpb24oYyxkLGUsZixnLGgsaSl7Zm9yKHZhciBqLGssbCxtPVwiXCIsbj1lLzEwLG89dGhpcy5waWNrZXIuZmluZChjKSxwPU1hdGguZmxvb3IoZi9lKSplLHE9cCs5Km4scj1NYXRoLmZsb29yKHRoaXMudmlld0RhdGUuZ2V0RnVsbFllYXIoKS9uKSpuLHM9YS5tYXAodGhpcy5kYXRlcyxmdW5jdGlvbihhKXtyZXR1cm4gTWF0aC5mbG9vcihhLmdldFVUQ0Z1bGxZZWFyKCkvbikqbn0pLHQ9cC1uO3Q8PXErbjt0Kz1uKWo9W2RdLGs9bnVsbCx0PT09cC1uP2oucHVzaChcIm9sZFwiKTp0PT09cStuJiZqLnB1c2goXCJuZXdcIiksLTEhPT1hLmluQXJyYXkodCxzKSYmai5wdXNoKFwiYWN0aXZlXCIpLCh0PGd8fHQ+aCkmJmoucHVzaChcImRpc2FibGVkXCIpLHQ9PT1yJiZqLnB1c2goXCJmb2N1c2VkXCIpLGkhPT1hLm5vb3AmJihsPWkobmV3IERhdGUodCwwLDEpKSxsPT09Yj9sPXt9OlwiYm9vbGVhblwiPT10eXBlb2YgbD9sPXtlbmFibGVkOmx9Olwic3RyaW5nXCI9PXR5cGVvZiBsJiYobD17Y2xhc3NlczpsfSksITE9PT1sLmVuYWJsZWQmJmoucHVzaChcImRpc2FibGVkXCIpLGwuY2xhc3NlcyYmKGo9ai5jb25jYXQobC5jbGFzc2VzLnNwbGl0KC9cXHMrLykpKSxsLnRvb2x0aXAmJihrPWwudG9vbHRpcCkpLG0rPSc8c3BhbiBjbGFzcz1cIicrai5qb2luKFwiIFwiKSsnXCInKyhrPycgdGl0bGU9XCInK2srJ1wiJzpcIlwiKStcIj5cIit0K1wiPC9zcGFuPlwiO28uZmluZChcIi5kYXRlcGlja2VyLXN3aXRjaFwiKS50ZXh0KHArXCItXCIrcSksby5maW5kKFwidGRcIikuaHRtbChtKX0sZmlsbDpmdW5jdGlvbigpe3ZhciBlLGYsZz1uZXcgRGF0ZSh0aGlzLnZpZXdEYXRlKSxoPWcuZ2V0VVRDRnVsbFllYXIoKSxpPWcuZ2V0VVRDTW9udGgoKSxqPXRoaXMuby5zdGFydERhdGUhPT0tMS8wP3RoaXMuby5zdGFydERhdGUuZ2V0VVRDRnVsbFllYXIoKTotMS8wLGs9dGhpcy5vLnN0YXJ0RGF0ZSE9PS0xLzA/dGhpcy5vLnN0YXJ0RGF0ZS5nZXRVVENNb250aCgpOi0xLzAsbD10aGlzLm8uZW5kRGF0ZSE9PTEvMD90aGlzLm8uZW5kRGF0ZS5nZXRVVENGdWxsWWVhcigpOjEvMCxtPXRoaXMuby5lbmREYXRlIT09MS8wP3RoaXMuby5lbmREYXRlLmdldFVUQ01vbnRoKCk6MS8wLG49cVt0aGlzLm8ubGFuZ3VhZ2VdLnRvZGF5fHxxLmVuLnRvZGF5fHxcIlwiLG89cVt0aGlzLm8ubGFuZ3VhZ2VdLmNsZWFyfHxxLmVuLmNsZWFyfHxcIlwiLHA9cVt0aGlzLm8ubGFuZ3VhZ2VdLnRpdGxlRm9ybWF0fHxxLmVuLnRpdGxlRm9ybWF0LHM9ZCgpLHQ9KCEwPT09dGhpcy5vLnRvZGF5QnRufHxcImxpbmtlZFwiPT09dGhpcy5vLnRvZGF5QnRuKSYmcz49dGhpcy5vLnN0YXJ0RGF0ZSYmczw9dGhpcy5vLmVuZERhdGUmJiF0aGlzLndlZWtPZkRhdGVJc0Rpc2FibGVkKHMpO2lmKCFpc05hTihoKSYmIWlzTmFOKGkpKXt0aGlzLnBpY2tlci5maW5kKFwiLmRhdGVwaWNrZXItZGF5cyAuZGF0ZXBpY2tlci1zd2l0Y2hcIikudGV4dChyLmZvcm1hdERhdGUoZyxwLHRoaXMuby5sYW5ndWFnZSkpLHRoaXMucGlja2VyLmZpbmQoXCJ0Zm9vdCAudG9kYXlcIikudGV4dChuKS5jc3MoXCJkaXNwbGF5XCIsdD9cInRhYmxlLWNlbGxcIjpcIm5vbmVcIiksdGhpcy5waWNrZXIuZmluZChcInRmb290IC5jbGVhclwiKS50ZXh0KG8pLmNzcyhcImRpc3BsYXlcIiwhMD09PXRoaXMuby5jbGVhckJ0bj9cInRhYmxlLWNlbGxcIjpcIm5vbmVcIiksdGhpcy5waWNrZXIuZmluZChcInRoZWFkIC5kYXRlcGlja2VyLXRpdGxlXCIpLnRleHQodGhpcy5vLnRpdGxlKS5jc3MoXCJkaXNwbGF5XCIsXCJzdHJpbmdcIj09dHlwZW9mIHRoaXMuby50aXRsZSYmXCJcIiE9PXRoaXMuby50aXRsZT9cInRhYmxlLWNlbGxcIjpcIm5vbmVcIiksdGhpcy51cGRhdGVOYXZBcnJvd3MoKSx0aGlzLmZpbGxNb250aHMoKTt2YXIgdT1jKGgsaSwwKSx2PXUuZ2V0VVRDRGF0ZSgpO3Uuc2V0VVRDRGF0ZSh2LSh1LmdldFVUQ0RheSgpLXRoaXMuby53ZWVrU3RhcnQrNyklNyk7dmFyIHc9bmV3IERhdGUodSk7dS5nZXRVVENGdWxsWWVhcigpPDEwMCYmdy5zZXRVVENGdWxsWWVhcih1LmdldFVUQ0Z1bGxZZWFyKCkpLHcuc2V0VVRDRGF0ZSh3LmdldFVUQ0RhdGUoKSs0Miksdz13LnZhbHVlT2YoKTtmb3IodmFyIHgseSx6PVtdO3UudmFsdWVPZigpPHc7KXtpZigoeD11LmdldFVUQ0RheSgpKT09PXRoaXMuby53ZWVrU3RhcnQmJih6LnB1c2goXCI8dHI+XCIpLHRoaXMuby5jYWxlbmRhcldlZWtzKSl7dmFyIEE9bmV3IERhdGUoK3UrKHRoaXMuby53ZWVrU3RhcnQteC03KSU3Kjg2NGU1KSxCPW5ldyBEYXRlKE51bWJlcihBKSsoMTEtQS5nZXRVVENEYXkoKSklNyo4NjRlNSksQz1uZXcgRGF0ZShOdW1iZXIoQz1jKEIuZ2V0VVRDRnVsbFllYXIoKSwwLDEpKSsoMTEtQy5nZXRVVENEYXkoKSklNyo4NjRlNSksRD0oQi1DKS84NjRlNS83KzE7ei5wdXNoKCc8dGQgY2xhc3M9XCJjd1wiPicrRCtcIjwvdGQ+XCIpfXk9dGhpcy5nZXRDbGFzc05hbWVzKHUpLHkucHVzaChcImRheVwiKTt2YXIgRT11LmdldFVUQ0RhdGUoKTt0aGlzLm8uYmVmb3JlU2hvd0RheSE9PWEubm9vcCYmKGY9dGhpcy5vLmJlZm9yZVNob3dEYXkodGhpcy5fdXRjX3RvX2xvY2FsKHUpKSxmPT09Yj9mPXt9OlwiYm9vbGVhblwiPT10eXBlb2YgZj9mPXtlbmFibGVkOmZ9Olwic3RyaW5nXCI9PXR5cGVvZiBmJiYoZj17Y2xhc3NlczpmfSksITE9PT1mLmVuYWJsZWQmJnkucHVzaChcImRpc2FibGVkXCIpLGYuY2xhc3NlcyYmKHk9eS5jb25jYXQoZi5jbGFzc2VzLnNwbGl0KC9cXHMrLykpKSxmLnRvb2x0aXAmJihlPWYudG9vbHRpcCksZi5jb250ZW50JiYoRT1mLmNvbnRlbnQpKSx5PWEuaXNGdW5jdGlvbihhLnVuaXF1ZVNvcnQpP2EudW5pcXVlU29ydCh5KTphLnVuaXF1ZSh5KSx6LnB1c2goJzx0ZCBjbGFzcz1cIicreS5qb2luKFwiIFwiKSsnXCInKyhlPycgdGl0bGU9XCInK2UrJ1wiJzpcIlwiKSsnIGRhdGEtZGF0ZT1cIicrdS5nZXRUaW1lKCkudG9TdHJpbmcoKSsnXCI+JytFK1wiPC90ZD5cIiksZT1udWxsLHg9PT10aGlzLm8ud2Vla0VuZCYmei5wdXNoKFwiPC90cj5cIiksdS5zZXRVVENEYXRlKHUuZ2V0VVRDRGF0ZSgpKzEpfXRoaXMucGlja2VyLmZpbmQoXCIuZGF0ZXBpY2tlci1kYXlzIHRib2R5XCIpLmh0bWwoei5qb2luKFwiXCIpKTt2YXIgRj1xW3RoaXMuby5sYW5ndWFnZV0ubW9udGhzVGl0bGV8fHEuZW4ubW9udGhzVGl0bGV8fFwiTW9udGhzXCIsRz10aGlzLnBpY2tlci5maW5kKFwiLmRhdGVwaWNrZXItbW9udGhzXCIpLmZpbmQoXCIuZGF0ZXBpY2tlci1zd2l0Y2hcIikudGV4dCh0aGlzLm8ubWF4Vmlld01vZGU8Mj9GOmgpLmVuZCgpLmZpbmQoXCJ0Ym9keSBzcGFuXCIpLnJlbW92ZUNsYXNzKFwiYWN0aXZlXCIpO2lmKGEuZWFjaCh0aGlzLmRhdGVzLGZ1bmN0aW9uKGEsYil7Yi5nZXRVVENGdWxsWWVhcigpPT09aCYmRy5lcShiLmdldFVUQ01vbnRoKCkpLmFkZENsYXNzKFwiYWN0aXZlXCIpfSksKGg8anx8aD5sKSYmRy5hZGRDbGFzcyhcImRpc2FibGVkXCIpLGg9PT1qJiZHLnNsaWNlKDAsaykuYWRkQ2xhc3MoXCJkaXNhYmxlZFwiKSxoPT09bCYmRy5zbGljZShtKzEpLmFkZENsYXNzKFwiZGlzYWJsZWRcIiksdGhpcy5vLmJlZm9yZVNob3dNb250aCE9PWEubm9vcCl7dmFyIEg9dGhpczthLmVhY2goRyxmdW5jdGlvbihjLGQpe3ZhciBlPW5ldyBEYXRlKGgsYywxKSxmPUguby5iZWZvcmVTaG93TW9udGgoZSk7Zj09PWI/Zj17fTpcImJvb2xlYW5cIj09dHlwZW9mIGY/Zj17ZW5hYmxlZDpmfTpcInN0cmluZ1wiPT10eXBlb2YgZiYmKGY9e2NsYXNzZXM6Zn0pLCExIT09Zi5lbmFibGVkfHxhKGQpLmhhc0NsYXNzKFwiZGlzYWJsZWRcIil8fGEoZCkuYWRkQ2xhc3MoXCJkaXNhYmxlZFwiKSxmLmNsYXNzZXMmJmEoZCkuYWRkQ2xhc3MoZi5jbGFzc2VzKSxmLnRvb2x0aXAmJmEoZCkucHJvcChcInRpdGxlXCIsZi50b29sdGlwKX0pfXRoaXMuX2ZpbGxfeWVhcnNWaWV3KFwiLmRhdGVwaWNrZXIteWVhcnNcIixcInllYXJcIiwxMCxoLGosbCx0aGlzLm8uYmVmb3JlU2hvd1llYXIpLHRoaXMuX2ZpbGxfeWVhcnNWaWV3KFwiLmRhdGVwaWNrZXItZGVjYWRlc1wiLFwiZGVjYWRlXCIsMTAwLGgsaixsLHRoaXMuby5iZWZvcmVTaG93RGVjYWRlKSx0aGlzLl9maWxsX3llYXJzVmlldyhcIi5kYXRlcGlja2VyLWNlbnR1cmllc1wiLFwiY2VudHVyeVwiLDFlMyxoLGosbCx0aGlzLm8uYmVmb3JlU2hvd0NlbnR1cnkpfX0sdXBkYXRlTmF2QXJyb3dzOmZ1bmN0aW9uKCl7aWYodGhpcy5fYWxsb3dfdXBkYXRlKXt2YXIgYSxiLGM9bmV3IERhdGUodGhpcy52aWV3RGF0ZSksZD1jLmdldFVUQ0Z1bGxZZWFyKCksZT1jLmdldFVUQ01vbnRoKCksZj10aGlzLm8uc3RhcnREYXRlIT09LTEvMD90aGlzLm8uc3RhcnREYXRlLmdldFVUQ0Z1bGxZZWFyKCk6LTEvMCxnPXRoaXMuby5zdGFydERhdGUhPT0tMS8wP3RoaXMuby5zdGFydERhdGUuZ2V0VVRDTW9udGgoKTotMS8wLGg9dGhpcy5vLmVuZERhdGUhPT0xLzA/dGhpcy5vLmVuZERhdGUuZ2V0VVRDRnVsbFllYXIoKToxLzAsaT10aGlzLm8uZW5kRGF0ZSE9PTEvMD90aGlzLm8uZW5kRGF0ZS5nZXRVVENNb250aCgpOjEvMCxqPTE7c3dpdGNoKHRoaXMudmlld01vZGUpe2Nhc2UgNDpqKj0xMDtjYXNlIDM6aio9MTA7Y2FzZSAyOmoqPTEwO2Nhc2UgMTphPU1hdGguZmxvb3IoZC9qKSpqPD1mLGI9TWF0aC5mbG9vcihkL2opKmoraj5oO2JyZWFrO2Nhc2UgMDphPWQ8PWYmJmU8PWcsYj1kPj1oJiZlPj1pfXRoaXMucGlja2VyLmZpbmQoXCIucHJldlwiKS50b2dnbGVDbGFzcyhcImRpc2FibGVkXCIsYSksdGhpcy5waWNrZXIuZmluZChcIi5uZXh0XCIpLnRvZ2dsZUNsYXNzKFwiZGlzYWJsZWRcIixiKX19LGNsaWNrOmZ1bmN0aW9uKGIpe2IucHJldmVudERlZmF1bHQoKSxiLnN0b3BQcm9wYWdhdGlvbigpO3ZhciBlLGYsZyxoO2U9YShiLnRhcmdldCksZS5oYXNDbGFzcyhcImRhdGVwaWNrZXItc3dpdGNoXCIpJiZ0aGlzLnZpZXdNb2RlIT09dGhpcy5vLm1heFZpZXdNb2RlJiZ0aGlzLnNldFZpZXdNb2RlKHRoaXMudmlld01vZGUrMSksZS5oYXNDbGFzcyhcInRvZGF5XCIpJiYhZS5oYXNDbGFzcyhcImRheVwiKSYmKHRoaXMuc2V0Vmlld01vZGUoMCksdGhpcy5fc2V0RGF0ZShkKCksXCJsaW5rZWRcIj09PXRoaXMuby50b2RheUJ0bj9udWxsOlwidmlld1wiKSksZS5oYXNDbGFzcyhcImNsZWFyXCIpJiZ0aGlzLmNsZWFyRGF0ZXMoKSxlLmhhc0NsYXNzKFwiZGlzYWJsZWRcIil8fChlLmhhc0NsYXNzKFwibW9udGhcIil8fGUuaGFzQ2xhc3MoXCJ5ZWFyXCIpfHxlLmhhc0NsYXNzKFwiZGVjYWRlXCIpfHxlLmhhc0NsYXNzKFwiY2VudHVyeVwiKSkmJih0aGlzLnZpZXdEYXRlLnNldFVUQ0RhdGUoMSksZj0xLDE9PT10aGlzLnZpZXdNb2RlPyhoPWUucGFyZW50KCkuZmluZChcInNwYW5cIikuaW5kZXgoZSksZz10aGlzLnZpZXdEYXRlLmdldFVUQ0Z1bGxZZWFyKCksdGhpcy52aWV3RGF0ZS5zZXRVVENNb250aChoKSk6KGg9MCxnPU51bWJlcihlLnRleHQoKSksdGhpcy52aWV3RGF0ZS5zZXRVVENGdWxsWWVhcihnKSksdGhpcy5fdHJpZ2dlcihyLnZpZXdNb2Rlc1t0aGlzLnZpZXdNb2RlLTFdLmUsdGhpcy52aWV3RGF0ZSksdGhpcy52aWV3TW9kZT09PXRoaXMuby5taW5WaWV3TW9kZT90aGlzLl9zZXREYXRlKGMoZyxoLGYpKToodGhpcy5zZXRWaWV3TW9kZSh0aGlzLnZpZXdNb2RlLTEpLHRoaXMuZmlsbCgpKSksdGhpcy5waWNrZXIuaXMoXCI6dmlzaWJsZVwiKSYmdGhpcy5fZm9jdXNlZF9mcm9tJiZ0aGlzLl9mb2N1c2VkX2Zyb20uZm9jdXMoKSxkZWxldGUgdGhpcy5fZm9jdXNlZF9mcm9tfSxkYXlDZWxsQ2xpY2s6ZnVuY3Rpb24oYil7dmFyIGM9YShiLmN1cnJlbnRUYXJnZXQpLGQ9Yy5kYXRhKFwiZGF0ZVwiKSxlPW5ldyBEYXRlKGQpO3RoaXMuby51cGRhdGVWaWV3RGF0ZSYmKGUuZ2V0VVRDRnVsbFllYXIoKSE9PXRoaXMudmlld0RhdGUuZ2V0VVRDRnVsbFllYXIoKSYmdGhpcy5fdHJpZ2dlcihcImNoYW5nZVllYXJcIix0aGlzLnZpZXdEYXRlKSxlLmdldFVUQ01vbnRoKCkhPT10aGlzLnZpZXdEYXRlLmdldFVUQ01vbnRoKCkmJnRoaXMuX3RyaWdnZXIoXCJjaGFuZ2VNb250aFwiLHRoaXMudmlld0RhdGUpKSx0aGlzLl9zZXREYXRlKGUpfSxuYXZBcnJvd3NDbGljazpmdW5jdGlvbihiKXt2YXIgYz1hKGIuY3VycmVudFRhcmdldCksZD1jLmhhc0NsYXNzKFwicHJldlwiKT8tMToxOzAhPT10aGlzLnZpZXdNb2RlJiYoZCo9MTIqci52aWV3TW9kZXNbdGhpcy52aWV3TW9kZV0ubmF2U3RlcCksdGhpcy52aWV3RGF0ZT10aGlzLm1vdmVNb250aCh0aGlzLnZpZXdEYXRlLGQpLHRoaXMuX3RyaWdnZXIoci52aWV3TW9kZXNbdGhpcy52aWV3TW9kZV0uZSx0aGlzLnZpZXdEYXRlKSx0aGlzLmZpbGwoKX0sX3RvZ2dsZV9tdWx0aWRhdGU6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5kYXRlcy5jb250YWlucyhhKTtpZihhfHx0aGlzLmRhdGVzLmNsZWFyKCksLTEhPT1iPyghMD09PXRoaXMuby5tdWx0aWRhdGV8fHRoaXMuby5tdWx0aWRhdGU+MXx8dGhpcy5vLnRvZ2dsZUFjdGl2ZSkmJnRoaXMuZGF0ZXMucmVtb3ZlKGIpOiExPT09dGhpcy5vLm11bHRpZGF0ZT8odGhpcy5kYXRlcy5jbGVhcigpLHRoaXMuZGF0ZXMucHVzaChhKSk6dGhpcy5kYXRlcy5wdXNoKGEpLFwibnVtYmVyXCI9PXR5cGVvZiB0aGlzLm8ubXVsdGlkYXRlKWZvcig7dGhpcy5kYXRlcy5sZW5ndGg+dGhpcy5vLm11bHRpZGF0ZTspdGhpcy5kYXRlcy5yZW1vdmUoMCl9LF9zZXREYXRlOmZ1bmN0aW9uKGEsYil7YiYmXCJkYXRlXCIhPT1ifHx0aGlzLl90b2dnbGVfbXVsdGlkYXRlKGEmJm5ldyBEYXRlKGEpKSwoIWImJnRoaXMuby51cGRhdGVWaWV3RGF0ZXx8XCJ2aWV3XCI9PT1iKSYmKHRoaXMudmlld0RhdGU9YSYmbmV3IERhdGUoYSkpLHRoaXMuZmlsbCgpLHRoaXMuc2V0VmFsdWUoKSxiJiZcInZpZXdcIj09PWJ8fHRoaXMuX3RyaWdnZXIoXCJjaGFuZ2VEYXRlXCIpLHRoaXMuaW5wdXRGaWVsZC50cmlnZ2VyKFwiY2hhbmdlXCIpLCF0aGlzLm8uYXV0b2Nsb3NlfHxiJiZcImRhdGVcIiE9PWJ8fHRoaXMuaGlkZSgpfSxtb3ZlRGF5OmZ1bmN0aW9uKGEsYil7dmFyIGM9bmV3IERhdGUoYSk7cmV0dXJuIGMuc2V0VVRDRGF0ZShhLmdldFVUQ0RhdGUoKStiKSxjfSxtb3ZlV2VlazpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdmVEYXkoYSw3KmIpfSxtb3ZlTW9udGg6ZnVuY3Rpb24oYSxiKXtpZighZyhhKSlyZXR1cm4gdGhpcy5vLmRlZmF1bHRWaWV3RGF0ZTtpZighYilyZXR1cm4gYTt2YXIgYyxkLGU9bmV3IERhdGUoYS52YWx1ZU9mKCkpLGY9ZS5nZXRVVENEYXRlKCksaD1lLmdldFVUQ01vbnRoKCksaT1NYXRoLmFicyhiKTtpZihiPWI+MD8xOi0xLDE9PT1pKWQ9LTE9PT1iP2Z1bmN0aW9uKCl7cmV0dXJuIGUuZ2V0VVRDTW9udGgoKT09PWh9OmZ1bmN0aW9uKCl7cmV0dXJuIGUuZ2V0VVRDTW9udGgoKSE9PWN9LGM9aCtiLGUuc2V0VVRDTW9udGgoYyksYz0oYysxMiklMTI7ZWxzZXtmb3IodmFyIGo9MDtqPGk7aisrKWU9dGhpcy5tb3ZlTW9udGgoZSxiKTtjPWUuZ2V0VVRDTW9udGgoKSxlLnNldFVUQ0RhdGUoZiksZD1mdW5jdGlvbigpe3JldHVybiBjIT09ZS5nZXRVVENNb250aCgpfX1mb3IoO2QoKTspZS5zZXRVVENEYXRlKC0tZiksZS5zZXRVVENNb250aChjKTtyZXR1cm4gZX0sbW92ZVllYXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5tb3ZlTW9udGgoYSwxMipiKX0sbW92ZUF2YWlsYWJsZURhdGU6ZnVuY3Rpb24oYSxiLGMpe2Rve2lmKGE9dGhpc1tjXShhLGIpLCF0aGlzLmRhdGVXaXRoaW5SYW5nZShhKSlyZXR1cm4hMTtjPVwibW92ZURheVwifXdoaWxlKHRoaXMuZGF0ZUlzRGlzYWJsZWQoYSkpO3JldHVybiBhfSx3ZWVrT2ZEYXRlSXNEaXNhYmxlZDpmdW5jdGlvbihiKXtyZXR1cm4tMSE9PWEuaW5BcnJheShiLmdldFVUQ0RheSgpLHRoaXMuby5kYXlzT2ZXZWVrRGlzYWJsZWQpfSxkYXRlSXNEaXNhYmxlZDpmdW5jdGlvbihiKXtyZXR1cm4gdGhpcy53ZWVrT2ZEYXRlSXNEaXNhYmxlZChiKXx8YS5ncmVwKHRoaXMuby5kYXRlc0Rpc2FibGVkLGZ1bmN0aW9uKGEpe3JldHVybiBlKGIsYSl9KS5sZW5ndGg+MH0sZGF0ZVdpdGhpblJhbmdlOmZ1bmN0aW9uKGEpe3JldHVybiBhPj10aGlzLm8uc3RhcnREYXRlJiZhPD10aGlzLm8uZW5kRGF0ZX0sa2V5ZG93bjpmdW5jdGlvbihhKXtpZighdGhpcy5waWNrZXIuaXMoXCI6dmlzaWJsZVwiKSlyZXR1cm4gdm9pZCg0MCE9PWEua2V5Q29kZSYmMjchPT1hLmtleUNvZGV8fCh0aGlzLnNob3coKSxhLnN0b3BQcm9wYWdhdGlvbigpKSk7dmFyIGIsYyxkPSExLGU9dGhpcy5mb2N1c0RhdGV8fHRoaXMudmlld0RhdGU7c3dpdGNoKGEua2V5Q29kZSl7Y2FzZSAyNzp0aGlzLmZvY3VzRGF0ZT8odGhpcy5mb2N1c0RhdGU9bnVsbCx0aGlzLnZpZXdEYXRlPXRoaXMuZGF0ZXMuZ2V0KC0xKXx8dGhpcy52aWV3RGF0ZSx0aGlzLmZpbGwoKSk6dGhpcy5oaWRlKCksYS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCk7YnJlYWs7Y2FzZSAzNzpjYXNlIDM4OmNhc2UgMzk6Y2FzZSA0MDppZighdGhpcy5vLmtleWJvYXJkTmF2aWdhdGlvbnx8Nz09PXRoaXMuby5kYXlzT2ZXZWVrRGlzYWJsZWQubGVuZ3RoKWJyZWFrO2I9Mzc9PT1hLmtleUNvZGV8fDM4PT09YS5rZXlDb2RlPy0xOjEsMD09PXRoaXMudmlld01vZGU/YS5jdHJsS2V5PyhjPXRoaXMubW92ZUF2YWlsYWJsZURhdGUoZSxiLFwibW92ZVllYXJcIikpJiZ0aGlzLl90cmlnZ2VyKFwiY2hhbmdlWWVhclwiLHRoaXMudmlld0RhdGUpOmEuc2hpZnRLZXk/KGM9dGhpcy5tb3ZlQXZhaWxhYmxlRGF0ZShlLGIsXCJtb3ZlTW9udGhcIikpJiZ0aGlzLl90cmlnZ2VyKFwiY2hhbmdlTW9udGhcIix0aGlzLnZpZXdEYXRlKTozNz09PWEua2V5Q29kZXx8Mzk9PT1hLmtleUNvZGU/Yz10aGlzLm1vdmVBdmFpbGFibGVEYXRlKGUsYixcIm1vdmVEYXlcIik6dGhpcy53ZWVrT2ZEYXRlSXNEaXNhYmxlZChlKXx8KGM9dGhpcy5tb3ZlQXZhaWxhYmxlRGF0ZShlLGIsXCJtb3ZlV2Vla1wiKSk6MT09PXRoaXMudmlld01vZGU/KDM4IT09YS5rZXlDb2RlJiY0MCE9PWEua2V5Q29kZXx8KGIqPTQpLGM9dGhpcy5tb3ZlQXZhaWxhYmxlRGF0ZShlLGIsXCJtb3ZlTW9udGhcIikpOjI9PT10aGlzLnZpZXdNb2RlJiYoMzghPT1hLmtleUNvZGUmJjQwIT09YS5rZXlDb2RlfHwoYio9NCksYz10aGlzLm1vdmVBdmFpbGFibGVEYXRlKGUsYixcIm1vdmVZZWFyXCIpKSxjJiYodGhpcy5mb2N1c0RhdGU9dGhpcy52aWV3RGF0ZT1jLHRoaXMuc2V0VmFsdWUoKSx0aGlzLmZpbGwoKSxhLnByZXZlbnREZWZhdWx0KCkpO2JyZWFrO2Nhc2UgMTM6aWYoIXRoaXMuby5mb3JjZVBhcnNlKWJyZWFrO2U9dGhpcy5mb2N1c0RhdGV8fHRoaXMuZGF0ZXMuZ2V0KC0xKXx8dGhpcy52aWV3RGF0ZSx0aGlzLm8ua2V5Ym9hcmROYXZpZ2F0aW9uJiYodGhpcy5fdG9nZ2xlX211bHRpZGF0ZShlKSxkPSEwKSx0aGlzLmZvY3VzRGF0ZT1udWxsLHRoaXMudmlld0RhdGU9dGhpcy5kYXRlcy5nZXQoLTEpfHx0aGlzLnZpZXdEYXRlLHRoaXMuc2V0VmFsdWUoKSx0aGlzLmZpbGwoKSx0aGlzLnBpY2tlci5pcyhcIjp2aXNpYmxlXCIpJiYoYS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5vLmF1dG9jbG9zZSYmdGhpcy5oaWRlKCkpO2JyZWFrO2Nhc2UgOTp0aGlzLmZvY3VzRGF0ZT1udWxsLHRoaXMudmlld0RhdGU9dGhpcy5kYXRlcy5nZXQoLTEpfHx0aGlzLnZpZXdEYXRlLHRoaXMuZmlsbCgpLHRoaXMuaGlkZSgpfWQmJih0aGlzLmRhdGVzLmxlbmd0aD90aGlzLl90cmlnZ2VyKFwiY2hhbmdlRGF0ZVwiKTp0aGlzLl90cmlnZ2VyKFwiY2xlYXJEYXRlXCIpLHRoaXMuaW5wdXRGaWVsZC50cmlnZ2VyKFwiY2hhbmdlXCIpKX0sc2V0Vmlld01vZGU6ZnVuY3Rpb24oYSl7dGhpcy52aWV3TW9kZT1hLHRoaXMucGlja2VyLmNoaWxkcmVuKFwiZGl2XCIpLmhpZGUoKS5maWx0ZXIoXCIuZGF0ZXBpY2tlci1cIityLnZpZXdNb2Rlc1t0aGlzLnZpZXdNb2RlXS5jbHNOYW1lKS5zaG93KCksdGhpcy51cGRhdGVOYXZBcnJvd3MoKSx0aGlzLl90cmlnZ2VyKFwiY2hhbmdlVmlld01vZGVcIixuZXcgRGF0ZSh0aGlzLnZpZXdEYXRlKSl9fTt2YXIgbD1mdW5jdGlvbihiLGMpe2EuZGF0YShiLFwiZGF0ZXBpY2tlclwiLHRoaXMpLHRoaXMuZWxlbWVudD1hKGIpLHRoaXMuaW5wdXRzPWEubWFwKGMuaW5wdXRzLGZ1bmN0aW9uKGEpe3JldHVybiBhLmpxdWVyeT9hWzBdOmF9KSxkZWxldGUgYy5pbnB1dHMsdGhpcy5rZWVwRW1wdHlWYWx1ZXM9Yy5rZWVwRW1wdHlWYWx1ZXMsZGVsZXRlIGMua2VlcEVtcHR5VmFsdWVzLG4uY2FsbChhKHRoaXMuaW5wdXRzKSxjKS5vbihcImNoYW5nZURhdGVcIixhLnByb3h5KHRoaXMuZGF0ZVVwZGF0ZWQsdGhpcykpLHRoaXMucGlja2Vycz1hLm1hcCh0aGlzLmlucHV0cyxmdW5jdGlvbihiKXtyZXR1cm4gYS5kYXRhKGIsXCJkYXRlcGlja2VyXCIpfSksdGhpcy51cGRhdGVEYXRlcygpfTtsLnByb3RvdHlwZT17dXBkYXRlRGF0ZXM6ZnVuY3Rpb24oKXt0aGlzLmRhdGVzPWEubWFwKHRoaXMucGlja2VycyxmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRVVENEYXRlKCl9KSx0aGlzLnVwZGF0ZVJhbmdlcygpfSx1cGRhdGVSYW5nZXM6ZnVuY3Rpb24oKXt2YXIgYj1hLm1hcCh0aGlzLmRhdGVzLGZ1bmN0aW9uKGEpe3JldHVybiBhLnZhbHVlT2YoKX0pO2EuZWFjaCh0aGlzLnBpY2tlcnMsZnVuY3Rpb24oYSxjKXtjLnNldFJhbmdlKGIpfSl9LGNsZWFyRGF0ZXM6ZnVuY3Rpb24oKXthLmVhY2godGhpcy5waWNrZXJzLGZ1bmN0aW9uKGEsYil7Yi5jbGVhckRhdGVzKCl9KX0sZGF0ZVVwZGF0ZWQ6ZnVuY3Rpb24oYyl7aWYoIXRoaXMudXBkYXRpbmcpe3RoaXMudXBkYXRpbmc9ITA7dmFyIGQ9YS5kYXRhKGMudGFyZ2V0LFwiZGF0ZXBpY2tlclwiKTtpZihkIT09Yil7dmFyIGU9ZC5nZXRVVENEYXRlKCksZj10aGlzLmtlZXBFbXB0eVZhbHVlcyxnPWEuaW5BcnJheShjLnRhcmdldCx0aGlzLmlucHV0cyksaD1nLTEsaT1nKzEsaj10aGlzLmlucHV0cy5sZW5ndGg7aWYoLTEhPT1nKXtpZihhLmVhY2godGhpcy5waWNrZXJzLGZ1bmN0aW9uKGEsYil7Yi5nZXRVVENEYXRlKCl8fGIhPT1kJiZmfHxiLnNldFVUQ0RhdGUoZSl9KSxlPHRoaXMuZGF0ZXNbaF0pZm9yKDtoPj0wJiZlPHRoaXMuZGF0ZXNbaF07KXRoaXMucGlja2Vyc1toLS1dLnNldFVUQ0RhdGUoZSk7ZWxzZSBpZihlPnRoaXMuZGF0ZXNbaV0pZm9yKDtpPGomJmU+dGhpcy5kYXRlc1tpXTspdGhpcy5waWNrZXJzW2krK10uc2V0VVRDRGF0ZShlKTt0aGlzLnVwZGF0ZURhdGVzKCksZGVsZXRlIHRoaXMudXBkYXRpbmd9fX19LGRlc3Ryb3k6ZnVuY3Rpb24oKXthLm1hcCh0aGlzLnBpY2tlcnMsZnVuY3Rpb24oYSl7YS5kZXN0cm95KCl9KSxhKHRoaXMuaW5wdXRzKS5vZmYoXCJjaGFuZ2VEYXRlXCIsdGhpcy5kYXRlVXBkYXRlZCksZGVsZXRlIHRoaXMuZWxlbWVudC5kYXRhKCkuZGF0ZXBpY2tlcn0scmVtb3ZlOmYoXCJkZXN0cm95XCIsXCJNZXRob2QgYHJlbW92ZWAgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHZlcnNpb24gMi4wLiBVc2UgYGRlc3Ryb3lgIGluc3RlYWRcIil9O3ZhciBtPWEuZm4uZGF0ZXBpY2tlcixuPWZ1bmN0aW9uKGMpe3ZhciBkPUFycmF5LmFwcGx5KG51bGwsYXJndW1lbnRzKTtkLnNoaWZ0KCk7dmFyIGU7aWYodGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9YSh0aGlzKSxmPWIuZGF0YShcImRhdGVwaWNrZXJcIiksZz1cIm9iamVjdFwiPT10eXBlb2YgYyYmYztpZighZil7dmFyIGo9aCh0aGlzLFwiZGF0ZVwiKSxtPWEuZXh0ZW5kKHt9LG8saixnKSxuPWkobS5sYW5ndWFnZSkscD1hLmV4dGVuZCh7fSxvLG4saixnKTtiLmhhc0NsYXNzKFwiaW5wdXQtZGF0ZXJhbmdlXCIpfHxwLmlucHV0cz8oYS5leHRlbmQocCx7aW5wdXRzOnAuaW5wdXRzfHxiLmZpbmQoXCJpbnB1dFwiKS50b0FycmF5KCl9KSxmPW5ldyBsKHRoaXMscCkpOmY9bmV3IGsodGhpcyxwKSxiLmRhdGEoXCJkYXRlcGlja2VyXCIsZil9XCJzdHJpbmdcIj09dHlwZW9mIGMmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGZbY10mJihlPWZbY10uYXBwbHkoZixkKSl9KSxlPT09Ynx8ZSBpbnN0YW5jZW9mIGt8fGUgaW5zdGFuY2VvZiBsKXJldHVybiB0aGlzO2lmKHRoaXMubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKFwiVXNpbmcgb25seSBhbGxvd2VkIGZvciB0aGUgY29sbGVjdGlvbiBvZiBhIHNpbmdsZSBlbGVtZW50IChcIitjK1wiIGZ1bmN0aW9uKVwiKTtyZXR1cm4gZX07YS5mbi5kYXRlcGlja2VyPW47dmFyIG89YS5mbi5kYXRlcGlja2VyLmRlZmF1bHRzPXthc3N1bWVOZWFyYnlZZWFyOiExLGF1dG9jbG9zZTohMSxiZWZvcmVTaG93RGF5OmEubm9vcCxiZWZvcmVTaG93TW9udGg6YS5ub29wLGJlZm9yZVNob3dZZWFyOmEubm9vcCxiZWZvcmVTaG93RGVjYWRlOmEubm9vcCxiZWZvcmVTaG93Q2VudHVyeTphLm5vb3AsY2FsZW5kYXJXZWVrczohMSxjbGVhckJ0bjohMSx0b2dnbGVBY3RpdmU6ITEsZGF5c09mV2Vla0Rpc2FibGVkOltdLGRheXNPZldlZWtIaWdobGlnaHRlZDpbXSxkYXRlc0Rpc2FibGVkOltdLGVuZERhdGU6MS8wLGZvcmNlUGFyc2U6ITAsZm9ybWF0OlwibW0vZGQveXl5eVwiLGtlZXBFbXB0eVZhbHVlczohMSxrZXlib2FyZE5hdmlnYXRpb246ITAsbGFuZ3VhZ2U6XCJlblwiLG1pblZpZXdNb2RlOjAsbWF4Vmlld01vZGU6NCxtdWx0aWRhdGU6ITEsbXVsdGlkYXRlU2VwYXJhdG9yOlwiLFwiLG9yaWVudGF0aW9uOlwiYXV0b1wiLHJ0bDohMSxzdGFydERhdGU6LTEvMCxzdGFydFZpZXc6MCx0b2RheUJ0bjohMSx0b2RheUhpZ2hsaWdodDohMSx1cGRhdGVWaWV3RGF0ZTohMCx3ZWVrU3RhcnQ6MCxkaXNhYmxlVG91Y2hLZXlib2FyZDohMSxlbmFibGVPblJlYWRvbmx5OiEwLHNob3dPbkZvY3VzOiEwLHpJbmRleE9mZnNldDoxMCxjb250YWluZXI6XCJib2R5XCIsaW1tZWRpYXRlVXBkYXRlczohMSx0aXRsZTpcIlwiLHRlbXBsYXRlczp7bGVmdEFycm93OlwiJiN4MDBBQjtcIixyaWdodEFycm93OlwiJiN4MDBCQjtcIn0sc2hvd1dlZWtEYXlzOiEwfSxwPWEuZm4uZGF0ZXBpY2tlci5sb2NhbGVfb3B0cz1bXCJmb3JtYXRcIixcInJ0bFwiLFwid2Vla1N0YXJ0XCJdO2EuZm4uZGF0ZXBpY2tlci5Db25zdHJ1Y3Rvcj1rO3ZhciBxPWEuZm4uZGF0ZXBpY2tlci5kYXRlcz17ZW46e2RheXM6W1wiU3VuZGF5XCIsXCJNb25kYXlcIixcIlR1ZXNkYXlcIixcIldlZG5lc2RheVwiLFwiVGh1cnNkYXlcIixcIkZyaWRheVwiLFwiU2F0dXJkYXlcIl0sZGF5c1Nob3J0OltcIlN1blwiLFwiTW9uXCIsXCJUdWVcIixcIldlZFwiLFwiVGh1XCIsXCJGcmlcIixcIlNhdFwiXSxkYXlzTWluOltcIlN1XCIsXCJNb1wiLFwiVHVcIixcIldlXCIsXCJUaFwiLFwiRnJcIixcIlNhXCJdLG1vbnRoczpbXCJKYW51YXJ5XCIsXCJGZWJydWFyeVwiLFwiTWFyY2hcIixcIkFwcmlsXCIsXCJNYXlcIixcIkp1bmVcIixcIkp1bHlcIixcIkF1Z3VzdFwiLFwiU2VwdGVtYmVyXCIsXCJPY3RvYmVyXCIsXCJOb3ZlbWJlclwiLFwiRGVjZW1iZXJcIl0sbW9udGhzU2hvcnQ6W1wiSmFuXCIsXCJGZWJcIixcIk1hclwiLFwiQXByXCIsXCJNYXlcIixcIkp1blwiLFwiSnVsXCIsXCJBdWdcIixcIlNlcFwiLFwiT2N0XCIsXCJOb3ZcIixcIkRlY1wiXSx0b2RheTpcIlRvZGF5XCIsY2xlYXI6XCJDbGVhclwiLHRpdGxlRm9ybWF0OlwiTU0geXl5eVwifX0scj17dmlld01vZGVzOlt7bmFtZXM6W1wiZGF5c1wiLFwibW9udGhcIl0sY2xzTmFtZTpcImRheXNcIixlOlwiY2hhbmdlTW9udGhcIn0se25hbWVzOltcIm1vbnRoc1wiLFwieWVhclwiXSxjbHNOYW1lOlwibW9udGhzXCIsZTpcImNoYW5nZVllYXJcIixuYXZTdGVwOjF9LHtuYW1lczpbXCJ5ZWFyc1wiLFwiZGVjYWRlXCJdLGNsc05hbWU6XCJ5ZWFyc1wiLGU6XCJjaGFuZ2VEZWNhZGVcIixuYXZTdGVwOjEwfSx7bmFtZXM6W1wiZGVjYWRlc1wiLFwiY2VudHVyeVwiXSxjbHNOYW1lOlwiZGVjYWRlc1wiLGU6XCJjaGFuZ2VDZW50dXJ5XCIsbmF2U3RlcDoxMDB9LHtuYW1lczpbXCJjZW50dXJpZXNcIixcIm1pbGxlbm5pdW1cIl0sY2xzTmFtZTpcImNlbnR1cmllc1wiLGU6XCJjaGFuZ2VNaWxsZW5uaXVtXCIsbmF2U3RlcDoxZTN9XSx2YWxpZFBhcnRzOi9kZD98REQ/fG1tP3xNTT98eXkoPzp5eSk/L2csbm9ucHVuY3R1YXRpb246L1teIC1cXC86LUBcXHU1ZTc0XFx1NjcwOFxcdTY1ZTVcXFstYHstflxcdFxcblxccl0rL2cscGFyc2VGb3JtYXQ6ZnVuY3Rpb24oYSl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgYS50b1ZhbHVlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLnRvRGlzcGxheSlyZXR1cm4gYTt2YXIgYj1hLnJlcGxhY2UodGhpcy52YWxpZFBhcnRzLFwiXFwwXCIpLnNwbGl0KFwiXFwwXCIpLGM9YS5tYXRjaCh0aGlzLnZhbGlkUGFydHMpO2lmKCFifHwhYi5sZW5ndGh8fCFjfHwwPT09Yy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBkYXRlIGZvcm1hdC5cIik7cmV0dXJue3NlcGFyYXRvcnM6YixwYXJ0czpjfX0scGFyc2VEYXRlOmZ1bmN0aW9uKGMsZSxmLGcpe2Z1bmN0aW9uIGgoYSxiKXtyZXR1cm4hMD09PWImJihiPTEwKSxhPDEwMCYmKGErPTJlMyk+KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpK2ImJihhLT0xMDApLGF9ZnVuY3Rpb24gaSgpe3ZhciBhPXRoaXMuc2xpY2UoMCxqW25dLmxlbmd0aCksYj1qW25dLnNsaWNlKDAsYS5sZW5ndGgpO3JldHVybiBhLnRvTG93ZXJDYXNlKCk9PT1iLnRvTG93ZXJDYXNlKCl9aWYoIWMpcmV0dXJuIGI7aWYoYyBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIGM7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUmJihlPXIucGFyc2VGb3JtYXQoZSkpLGUudG9WYWx1ZSlyZXR1cm4gZS50b1ZhbHVlKGMsZSxmKTt2YXIgaixsLG0sbixvLHA9e2Q6XCJtb3ZlRGF5XCIsbTpcIm1vdmVNb250aFwiLHc6XCJtb3ZlV2Vla1wiLHk6XCJtb3ZlWWVhclwifSxzPXt5ZXN0ZXJkYXk6XCItMWRcIix0b2RheTpcIiswZFwiLHRvbW9ycm93OlwiKzFkXCJ9O2lmKGMgaW4gcyYmKGM9c1tjXSksL15bXFwtK11cXGQrW2Rtd3ldKFtcXHMsXStbXFwtK11cXGQrW2Rtd3ldKSokL2kudGVzdChjKSl7Zm9yKGo9Yy5tYXRjaCgvKFtcXC0rXVxcZCspKFtkbXd5XSkvZ2kpLGM9bmV3IERhdGUsbj0wO248ai5sZW5ndGg7bisrKWw9altuXS5tYXRjaCgvKFtcXC0rXVxcZCspKFtkbXd5XSkvaSksbT1OdW1iZXIobFsxXSksbz1wW2xbMl0udG9Mb3dlckNhc2UoKV0sYz1rLnByb3RvdHlwZVtvXShjLG0pO3JldHVybiBrLnByb3RvdHlwZS5femVyb191dGNfdGltZShjKX1qPWMmJmMubWF0Y2godGhpcy5ub25wdW5jdHVhdGlvbil8fFtdO3ZhciB0LHUsdj17fSx3PVtcInl5eXlcIixcInl5XCIsXCJNXCIsXCJNTVwiLFwibVwiLFwibW1cIixcImRcIixcImRkXCJdLHg9e3l5eXk6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5zZXRVVENGdWxsWWVhcihnP2goYixnKTpiKX0sbTpmdW5jdGlvbihhLGIpe2lmKGlzTmFOKGEpKXJldHVybiBhO2ZvcihiLT0xO2I8MDspYis9MTI7Zm9yKGIlPTEyLGEuc2V0VVRDTW9udGgoYik7YS5nZXRVVENNb250aCgpIT09YjspYS5zZXRVVENEYXRlKGEuZ2V0VVRDRGF0ZSgpLTEpO3JldHVybiBhfSxkOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuc2V0VVRDRGF0ZShiKX19O3gueXk9eC55eXl5LHguTT14Lk1NPXgubW09eC5tLHguZGQ9eC5kLGM9ZCgpO3ZhciB5PWUucGFydHMuc2xpY2UoKTtpZihqLmxlbmd0aCE9PXkubGVuZ3RoJiYoeT1hKHkpLmZpbHRlcihmdW5jdGlvbihiLGMpe3JldHVybi0xIT09YS5pbkFycmF5KGMsdyl9KS50b0FycmF5KCkpLGoubGVuZ3RoPT09eS5sZW5ndGgpe3ZhciB6O2ZvcihuPTAsej15Lmxlbmd0aDtuPHo7bisrKXtpZih0PXBhcnNlSW50KGpbbl0sMTApLGw9eVtuXSxpc05hTih0KSlzd2l0Y2gobCl7Y2FzZVwiTU1cIjp1PWEocVtmXS5tb250aHMpLmZpbHRlcihpKSx0PWEuaW5BcnJheSh1WzBdLHFbZl0ubW9udGhzKSsxO2JyZWFrO2Nhc2VcIk1cIjp1PWEocVtmXS5tb250aHNTaG9ydCkuZmlsdGVyKGkpLHQ9YS5pbkFycmF5KHVbMF0scVtmXS5tb250aHNTaG9ydCkrMX12W2xdPXR9dmFyIEEsQjtmb3Iobj0wO248dy5sZW5ndGg7bisrKShCPXdbbl0paW4gdiYmIWlzTmFOKHZbQl0pJiYoQT1uZXcgRGF0ZShjKSx4W0JdKEEsdltCXSksaXNOYU4oQSl8fChjPUEpKX1yZXR1cm4gY30sZm9ybWF0RGF0ZTpmdW5jdGlvbihiLGMsZCl7aWYoIWIpcmV0dXJuXCJcIjtpZihcInN0cmluZ1wiPT10eXBlb2YgYyYmKGM9ci5wYXJzZUZvcm1hdChjKSksYy50b0Rpc3BsYXkpcmV0dXJuIGMudG9EaXNwbGF5KGIsYyxkKTt2YXIgZT17ZDpiLmdldFVUQ0RhdGUoKSxEOnFbZF0uZGF5c1Nob3J0W2IuZ2V0VVRDRGF5KCldLEREOnFbZF0uZGF5c1tiLmdldFVUQ0RheSgpXSxtOmIuZ2V0VVRDTW9udGgoKSsxLE06cVtkXS5tb250aHNTaG9ydFtiLmdldFVUQ01vbnRoKCldLE1NOnFbZF0ubW9udGhzW2IuZ2V0VVRDTW9udGgoKV0seXk6Yi5nZXRVVENGdWxsWWVhcigpLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIpLHl5eXk6Yi5nZXRVVENGdWxsWWVhcigpfTtlLmRkPShlLmQ8MTA/XCIwXCI6XCJcIikrZS5kLGUubW09KGUubTwxMD9cIjBcIjpcIlwiKStlLm0sYj1bXTtmb3IodmFyIGY9YS5leHRlbmQoW10sYy5zZXBhcmF0b3JzKSxnPTAsaD1jLnBhcnRzLmxlbmd0aDtnPD1oO2crKylmLmxlbmd0aCYmYi5wdXNoKGYuc2hpZnQoKSksYi5wdXNoKGVbYy5wYXJ0c1tnXV0pO3JldHVybiBiLmpvaW4oXCJcIil9LFxuaGVhZFRlbXBsYXRlOic8dGhlYWQ+PHRyPjx0aCBjb2xzcGFuPVwiN1wiIGNsYXNzPVwiZGF0ZXBpY2tlci10aXRsZVwiPjwvdGg+PC90cj48dHI+PHRoIGNsYXNzPVwicHJldlwiPicrby50ZW1wbGF0ZXMubGVmdEFycm93Kyc8L3RoPjx0aCBjb2xzcGFuPVwiNVwiIGNsYXNzPVwiZGF0ZXBpY2tlci1zd2l0Y2hcIj48L3RoPjx0aCBjbGFzcz1cIm5leHRcIj4nK28udGVtcGxhdGVzLnJpZ2h0QXJyb3crXCI8L3RoPjwvdHI+PC90aGVhZD5cIixjb250VGVtcGxhdGU6Jzx0Ym9keT48dHI+PHRkIGNvbHNwYW49XCI3XCI+PC90ZD48L3RyPjwvdGJvZHk+Jyxmb290VGVtcGxhdGU6Jzx0Zm9vdD48dHI+PHRoIGNvbHNwYW49XCI3XCIgY2xhc3M9XCJ0b2RheVwiPjwvdGg+PC90cj48dHI+PHRoIGNvbHNwYW49XCI3XCIgY2xhc3M9XCJjbGVhclwiPjwvdGg+PC90cj48L3Rmb290Pid9O3IudGVtcGxhdGU9JzxkaXYgY2xhc3M9XCJkYXRlcGlja2VyXCI+PGRpdiBjbGFzcz1cImRhdGVwaWNrZXItZGF5c1wiPjx0YWJsZSBjbGFzcz1cInRhYmxlLWNvbmRlbnNlZFwiPicrci5oZWFkVGVtcGxhdGUrXCI8dGJvZHk+PC90Ym9keT5cIityLmZvb3RUZW1wbGF0ZSsnPC90YWJsZT48L2Rpdj48ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1tb250aHNcIj48dGFibGUgY2xhc3M9XCJ0YWJsZS1jb25kZW5zZWRcIj4nK3IuaGVhZFRlbXBsYXRlK3IuY29udFRlbXBsYXRlK3IuZm9vdFRlbXBsYXRlKyc8L3RhYmxlPjwvZGl2PjxkaXYgY2xhc3M9XCJkYXRlcGlja2VyLXllYXJzXCI+PHRhYmxlIGNsYXNzPVwidGFibGUtY29uZGVuc2VkXCI+JytyLmhlYWRUZW1wbGF0ZStyLmNvbnRUZW1wbGF0ZStyLmZvb3RUZW1wbGF0ZSsnPC90YWJsZT48L2Rpdj48ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1kZWNhZGVzXCI+PHRhYmxlIGNsYXNzPVwidGFibGUtY29uZGVuc2VkXCI+JytyLmhlYWRUZW1wbGF0ZStyLmNvbnRUZW1wbGF0ZStyLmZvb3RUZW1wbGF0ZSsnPC90YWJsZT48L2Rpdj48ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1jZW50dXJpZXNcIj48dGFibGUgY2xhc3M9XCJ0YWJsZS1jb25kZW5zZWRcIj4nK3IuaGVhZFRlbXBsYXRlK3IuY29udFRlbXBsYXRlK3IuZm9vdFRlbXBsYXRlK1wiPC90YWJsZT48L2Rpdj48L2Rpdj5cIixhLmZuLmRhdGVwaWNrZXIuRFBHbG9iYWw9cixhLmZuLmRhdGVwaWNrZXIubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLmRhdGVwaWNrZXI9bSx0aGlzfSxhLmZuLmRhdGVwaWNrZXIudmVyc2lvbj1cIjEuOS4wXCIsYS5mbi5kYXRlcGlja2VyLmRlcHJlY2F0ZWQ9ZnVuY3Rpb24oYSl7dmFyIGI9d2luZG93LmNvbnNvbGU7YiYmYi53YXJuJiZiLndhcm4oXCJERVBSRUNBVEVEOiBcIithKX0sYShkb2N1bWVudCkub24oXCJmb2N1cy5kYXRlcGlja2VyLmRhdGEtYXBpIGNsaWNrLmRhdGVwaWNrZXIuZGF0YS1hcGlcIiwnW2RhdGEtcHJvdmlkZT1cImRhdGVwaWNrZXJcIl0nLGZ1bmN0aW9uKGIpe3ZhciBjPWEodGhpcyk7Yy5kYXRhKFwiZGF0ZXBpY2tlclwiKXx8KGIucHJldmVudERlZmF1bHQoKSxuLmNhbGwoYyxcInNob3dcIikpfSksYShmdW5jdGlvbigpe24uY2FsbChhKCdbZGF0YS1wcm92aWRlPVwiZGF0ZXBpY2tlci1pbmxpbmVcIl0nKSl9KX0pOyJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxDQUFDLFVBQVNBLENBQVQsRUFBVztFQUFDLGNBQVksT0FBT0MsTUFBbkIsSUFBMkJBLE1BQU0sQ0FBQ0MsR0FBbEMsR0FBc0NELE1BQU0sQ0FBQyxDQUFDLFFBQUQsQ0FBRCxFQUFZRCxDQUFaLENBQTVDLEdBQTJEQSxDQUFDLENBQUMsb0JBQWlCRyxPQUFqQix5Q0FBaUJBLE9BQWpCLEtBQXlCQyxPQUFPLENBQUMsUUFBRCxDQUFoQyxHQUEyQ0MsTUFBNUMsQ0FBNUQ7QUFBZ0gsQ0FBNUgsQ0FBNkgsVUFBU0wsQ0FBVCxFQUFXTSxDQUFYLEVBQWE7RUFBQyxTQUFTQyxDQUFULEdBQVk7SUFBQyxPQUFPLElBQUlDLElBQUosQ0FBU0EsSUFBSSxDQUFDQyxHQUFMLENBQVNDLEtBQVQsQ0FBZUYsSUFBZixFQUFvQkcsU0FBcEIsQ0FBVCxDQUFQO0VBQWdEOztFQUFBLFNBQVNDLENBQVQsR0FBWTtJQUFDLElBQUlaLENBQUMsR0FBQyxJQUFJ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
},{"jquery":20}],11:[function(require,module,exports){
"use strict";
@@ -23035,6302 +22063,9 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
-/*!
- * Bootstrap v5.2.0 (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 (global, factory) {
- (typeof exports === "undefined" ? "undefined" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@popperjs/core')) : typeof define === 'function' && define.amd ? define(['@popperjs/core'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.bootstrap = factory(global.Popper));
-})(void 0, function (Popper) {
- 'use strict';
- var _KEY_TO_DIRECTION;
+// bootstrap was here
- function _interopNamespace(e) {
- if (e && e.__esModule) return e;
- var n = Object.create(null, _defineProperty({}, Symbol.toStringTag, {
- value: 'Module'
- }));
-
- if (e) {
- var _loop = function _loop(k) {
- if (k !== 'default') {
- var d = Object.getOwnPropertyDescriptor(e, k);
- Object.defineProperty(n, k, d.get ? d : {
- enumerable: true,
- get: function get() {
- return e[k];
- }
- });
- }
- };
-
- for (var k in e) {
- _loop(k);
- }
- }
-
- n["default"] = e;
- return Object.freeze(n);
- }
-
- var Popper__namespace = /*#__PURE__*/_interopNamespace(Popper);
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v5.2.0): util/index.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-
- var MAX_UID = 1000000;
- var MILLISECONDS_MULTIPLIER = 1000;
- var TRANSITION_END = 'transitionend'; // Shout-out Angus Croll (https://goo.gl/pxwQGp)
-
- var toType = function toType(object) {
- if (object === null || object === undefined) {
- return "".concat(object);
- }
-
- return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase();
- };
- /**
- * Public Util API
- */
-
-
- var getUID = function getUID(prefix) {
- do {
- prefix += Math.floor(Math.random() * MAX_UID);
- } while (document.getElementById(prefix));
-
- return prefix;
- };
-
- var getSelector = function getSelector(element) {
- var selector = element.getAttribute('data-bs-target');
-
- if (!selector || selector === '#') {
- var hrefAttribute = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,
- // so everything starting with `#` or `.`. If a "real" URL is used as the selector,
- // `document.querySelector` will rightfully complain it is invalid.
- // See https://github.com/twbs/bootstrap/issues/32273
-
- if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {
- return null;
- } // Just in case some CMS puts out a full URL with the anchor appended
-
-
- if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {
- hrefAttribute = "#".concat(hrefAttribute.split('#')[1]);
- }
-
- selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;
- }
-
- return selector;
- };
-
- var getSelectorFromElement = function getSelectorFromElement(element) {
- var selector = getSelector(element);
-
- if (selector) {
- return document.querySelector(selector) ? selector : null;
- }
-
- return null;
- };
-
- var getElementFromSelector = function getElementFromSelector(element) {
- var selector = getSelector(element);
- return selector ? document.querySelector(selector) : null;
- };
-
- var getTransitionDurationFromElement = function getTransitionDurationFromElement(element) {
- if (!element) {
- return 0;
- } // Get transition-duration of the element
-
-
- var _window$getComputedSt = window.getComputedStyle(element),
- transitionDuration = _window$getComputedSt.transitionDuration,
- transitionDelay = _window$getComputedSt.transitionDelay;
-
- var floatTransitionDuration = Number.parseFloat(transitionDuration);
- var floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
-
- if (!floatTransitionDuration && !floatTransitionDelay) {
- return 0;
- } // If multiple durations are defined, take the first
-
-
- transitionDuration = transitionDuration.split(',')[0];
- transitionDelay = transitionDelay.split(',')[0];
- return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
- };
-
- var triggerTransitionEnd = function triggerTransitionEnd(element) {
- element.dispatchEvent(new Event(TRANSITION_END));
- };
-
- var isElement = function isElement(object) {
- if (!object || _typeof(object) !== 'object') {
- return false;
- }
-
- if (typeof object.jquery !== 'undefined') {
- object = object[0];
- }
-
- return typeof object.nodeType !== 'undefined';
- };
-
- var getElement = function getElement(object) {
- // it's a jQuery object or a node element
- if (isElement(object)) {
- return object.jquery ? object[0] : object;
- }
-
- if (typeof object === 'string' && object.length > 0) {
- return document.querySelector(object);
- }
-
- return null;
- };
-
- var isVisible = function isVisible(element) {
- if (!isElement(element) || element.getClientRects().length === 0) {
- return false;
- }
-
- var elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'; // Handle `details` element as its content may falsie appear visible when it is closed
-
- var closedDetails = element.closest('details:not([open])');
-
- if (!closedDetails) {
- return elementIsVisible;
- }
-
- if (closedDetails !== element) {
- var summary = element.closest('summary');
-
- if (summary && summary.parentNode !== closedDetails) {
- return false;
- }
-
- if (summary === null) {
- return false;
- }
- }
-
- return elementIsVisible;
- };
-
- var isDisabled = function isDisabled(element) {
- if (!element || element.nodeType !== Node.ELEMENT_NODE) {
- return true;
- }
-
- if (element.classList.contains('disabled')) {
- return true;
- }
-
- if (typeof element.disabled !== 'undefined') {
- return element.disabled;
- }
-
- return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';
- };
-
- var findShadowRoot = function findShadowRoot(element) {
- if (!document.documentElement.attachShadow) {
- return null;
- } // Can find the shadow root otherwise it'll return the document
-
-
- if (typeof element.getRootNode === 'function') {
- var root = element.getRootNode();
- return root instanceof ShadowRoot ? root : null;
- }
-
- if (element instanceof ShadowRoot) {
- return element;
- } // when we don't find a shadow root
-
-
- if (!element.parentNode) {
- return null;
- }
-
- return findShadowRoot(element.parentNode);
- };
-
- var noop = function noop() {};
- /**
- * Trick to restart an element's animation
- *
- * @param {HTMLElement} element
- * @return void
- *
- * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation
- */
-
-
- var reflow = function reflow(element) {
- element.offsetHeight; // eslint-disable-line no-unused-expressions
- };
-
- var getjQuery = function getjQuery() {
- if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
- return window.jQuery;
- }
-
- return null;
- };
-
- var DOMContentLoadedCallbacks = [];
-
- var onDOMContentLoaded = function onDOMContentLoaded(callback) {
- if (document.readyState === 'loading') {
- // add listener on the first call when the document is in loading state
- if (!DOMContentLoadedCallbacks.length) {
- document.addEventListener('DOMContentLoaded', function () {
- var _iterator = _createForOfIteratorHelper(DOMContentLoadedCallbacks),
- _step;
-
- try {
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
- var _callback = _step.value;
-
- _callback();
- }
- } catch (err) {
- _iterator.e(err);
- } finally {
- _iterator.f();
- }
- });
- }
-
- DOMContentLoadedCallbacks.push(callback);
- } else {
- callback();
- }
- };
-
- var isRTL = function isRTL() {
- return document.documentElement.dir === 'rtl';
- };
-
- var defineJQueryPlugin = function defineJQueryPlugin(plugin) {
- onDOMContentLoaded(function () {
- var $ = getjQuery();
- /* istanbul ignore if */
-
- if ($) {
- var name = plugin.NAME;
- var JQUERY_NO_CONFLICT = $.fn[name];
- $.fn[name] = plugin.jQueryInterface;
- $.fn[name].Constructor = plugin;
-
- $.fn[name].noConflict = function () {
- $.fn[name] = JQUERY_NO_CONFLICT;
- return plugin.jQueryInterface;
- };
- }
- });
- };
-
- var execute = function execute(callback) {
- if (typeof callback === 'function') {
- callback();
- }
- };
-
- var executeAfterTransition = function executeAfterTransition(callback, transitionElement) {
- var waitForTransition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
-
- if (!waitForTransition) {
- execute(callback);
- return;
- }
-
- var durationPadding = 5;
- var emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;
- var called = false;
-
- var handler = function handler(_ref) {
- var target = _ref.target;
-
- if (target !== transitionElement) {
- return;
- }
-
- called = true;
- transitionElement.removeEventListener(TRANSITION_END, handler);
- execute(callback);
- };
-
- transitionElement.addEventListener(TRANSITION_END, handler);
- setTimeout(function () {
- if (!called) {
- triggerTransitionEnd(transitionElement);
- }
- }, emulatedDuration);
- };
- /**
- * Return the previous/next element of a list.
- *
- * @param {array} list The list of elements
- * @param activeElement The active element
- * @param shouldGetNext Choose to get next or previous element
- * @param isCycleAllowed
- * @return {Element|elem} The proper element
- */
-
-
- var getNextActiveElement = function getNextActiveElement(list, activeElement, shouldGetNext, isCycleAllowed) {
- var listLength = list.length;
- var index = list.indexOf(activeElement); // if the element does not exist in the list return an element
- // depending on the direction and if cycle is allowed
-
- if (index === -1) {
- return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];
- }
-
- index += shouldGetNext ? 1 : -1;
-
- if (isCycleAllowed) {
- index = (index + listLength) % listLength;
- }
-
- return list[Math.max(0, Math.min(index, listLength - 1))];
- };
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v5.2.0): dom/event-handler.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- /**
- * Constants
- */
-
-
- var namespaceRegex = /[^.]*(?=\..*)\.|.*/;
- var stripNameRegex = /\..*/;
- var stripUidRegex = /::\d+$/;
- var eventRegistry = {}; // Events storage
-
- var uidEvent = 1;
- var customEvents = {
- mouseenter: 'mouseover',
- mouseleave: 'mouseout'
- };
- var nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);
- /**
- * Private methods
- */
-
- function makeEventUid(element, uid) {
- return uid && "".concat(uid, "::").concat(uidEvent++) || element.uidEvent || uidEvent++;
- }
-
- function getElementEvents(element) {
- var uid = makeEventUid(element);
- element.uidEvent = uid;
- eventRegistry[uid] = eventRegistry[uid] || {};
- return eventRegistry[uid];
- }
-
- function bootstrapHandler(element, fn) {
- return function handler(event) {
- hydrateObj(event, {
- delegateTarget: element
- });
-
- if (handler.oneOff) {
- EventHandler.off(element, event.type, fn);
- }
-
- return fn.apply(element, [event]);
- };
- }
-
- function bootstrapDelegationHandler(element, selector, fn) {
- return function handler(event) {
- var domElements = element.querySelectorAll(selector);
-
- for (var target = event.target; target && target !== this; target = target.parentNode) {
- var _iterator2 = _createForOfIteratorHelper(domElements),
- _step2;
-
- try {
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
- var domElement = _step2.value;
-
- if (domElement !== target) {
- continue;
- }
-
- hydrateObj(event, {
- delegateTarget: target
- });
-
- if (handler.oneOff) {
- EventHandler.off(element, event.type, selector, fn);
- }
-
- return fn.apply(target, [event]);
- }
- } catch (err) {
- _iterator2.e(err);
- } finally {
- _iterator2.f();
- }
- }
- };
- }
-
- function findHandler(events, callable) {
- var delegationSelector = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
- return Object.values(events).find(function (event) {
- return event.callable === callable && event.delegationSelector === delegationSelector;
- });
- }
-
- function normalizeParameters(originalTypeEvent, handler, delegationFunction) {
- var isDelegated = typeof handler === 'string'; // todo: tooltip passes `false` instead of selector, so we need to check
-
- var callable = isDelegated ? delegationFunction : handler || delegationFunction;
- var typeEvent = getTypeEvent(originalTypeEvent);
-
- if (!nativeEvents.has(typeEvent)) {
- typeEvent = originalTypeEvent;
- }
-
- return [isDelegated, callable, typeEvent];
- }
-
- function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {
- if (typeof originalTypeEvent !== 'string' || !element) {
- return;
- }
-
- var _normalizeParameters = normalizeParameters(originalTypeEvent, handler, delegationFunction),
- _normalizeParameters2 = _slicedToArray(_normalizeParameters, 3),
- isDelegated = _normalizeParameters2[0],
- callable = _normalizeParameters2[1],
- typeEvent = _normalizeParameters2[2]; // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position
- // this prevents the handler from being dispatched the same way as mouseover or mouseout does
-
-
- if (originalTypeEvent in customEvents) {
- var wrapFunction = function wrapFunction(fn) {
- return function (event) {
- if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {
- return fn.call(this, event);
- }
- };
- };
-
- callable = wrapFunction(callable);
- }
-
- var events = getElementEvents(element);
- var handlers = events[typeEvent] || (events[typeEvent] = {});
- var previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);
-
- if (previousFunction) {
- previousFunction.oneOff = previousFunction.oneOff && oneOff;
- return;
- }
-
- var uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));
- var fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);
- fn.delegationSelector = isDelegated ? handler : null;
- fn.callable = callable;
- fn.oneOff = oneOff;
- fn.uidEvent = uid;
- handlers[uid] = fn;
- element.addEventListener(typeEvent, fn, isDelegated);
- }
-
- function removeHandler(element, events, typeEvent, handler, delegationSelector) {
- var fn = findHandler(events[typeEvent], handler, delegationSelector);
-
- if (!fn) {
- return;
- }
-
- element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));
- delete events[typeEvent][fn.uidEvent];
- }
-
- function removeNamespacedHandlers(element, events, typeEvent, namespace) {
- var storeElementEvent = events[typeEvent] || {};
-
- for (var _i2 = 0, _Object$keys = Object.keys(storeElementEvent); _i2 < _Object$keys.length; _i2++) {
- var handlerKey = _Object$keys[_i2];
-
- if (handlerKey.includes(namespace)) {
- var event = storeElementEvent[handlerKey];
- removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
- }
- }
- }
-
- function getTypeEvent(event) {
- // allow to get the native events from namespaced events ('click.bs.button' --> 'click')
- event = event.replace(stripNameRegex, '');
- return customEvents[event] || event;
- }
-
- var EventHandler = {
- on: function on(element, event, handler, delegationFunction) {
- addHandler(element, event, handler, delegationFunction, false);
- },
- one: function one(element, event, handler, delegationFunction) {
- addHandler(element, event, handler, delegationFunction, true);
- },
- off: function off(element, originalTypeEvent, handler, delegationFunction) {
- if (typeof originalTypeEvent !== 'string' || !element) {
- return;
- }
-
- var _normalizeParameters3 = normalizeParameters(originalTypeEvent, handler, delegationFunction),
- _normalizeParameters4 = _slicedToArray(_normalizeParameters3, 3),
- isDelegated = _normalizeParameters4[0],
- callable = _normalizeParameters4[1],
- typeEvent = _normalizeParameters4[2];
-
- var inNamespace = typeEvent !== originalTypeEvent;
- var events = getElementEvents(element);
- var storeElementEvent = events[typeEvent] || {};
- var isNamespace = originalTypeEvent.startsWith('.');
-
- if (typeof callable !== 'undefined') {
- // Simplest case: handler is passed, remove that listener ONLY.
- if (!Object.keys(storeElementEvent).length) {
- return;
- }
-
- removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);
- return;
- }
-
- if (isNamespace) {
- for (var _i3 = 0, _Object$keys2 = Object.keys(events); _i3 < _Object$keys2.length; _i3++) {
- var elementEvent = _Object$keys2[_i3];
- removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
- }
- }
-
- for (var _i4 = 0, _Object$keys3 = Object.keys(storeElementEvent); _i4 < _Object$keys3.length; _i4++) {
- var keyHandlers = _Object$keys3[_i4];
- var handlerKey = keyHandlers.replace(stripUidRegex, '');
-
- if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
- var event = storeElementEvent[keyHandlers];
- removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
- }
- }
- },
- trigger: function trigger(element, event, args) {
- if (typeof event !== 'string' || !element) {
- return null;
- }
-
- var $ = getjQuery();
- var typeEvent = getTypeEvent(event);
- var inNamespace = event !== typeEvent;
- var jQueryEvent = null;
- var bubbles = true;
- var nativeDispatch = true;
- var defaultPrevented = false;
-
- if (inNamespace && $) {
- jQueryEvent = $.Event(event, args);
- $(element).trigger(jQueryEvent);
- bubbles = !jQueryEvent.isPropagationStopped();
- nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();
- defaultPrevented = jQueryEvent.isDefaultPrevented();
- }
-
- var evt = new Event(event, {
- bubbles: bubbles,
- cancelable: true
- });
- evt = hydrateObj(evt, args);
-
- if (defaultPrevented) {
- evt.preventDefault();
- }
-
- if (nativeDispatch) {
- element.dispatchEvent(evt);
- }
-
- if (evt.defaultPrevented && jQueryEvent) {
- jQueryEvent.preventDefault();
- }
-
- return evt;
- }
- };
-
- function hydrateObj(obj, meta) {
- var _loop2 = function _loop2() {
- var _Object$entries$_i = _slicedToArray(_Object$entries[_i5], 2),
- key = _Object$entries$_i[0],
- value = _Object$entries$_i[1];
-
- try {
- obj[key] = value;
- } catch (_unused) {
- Object.defineProperty(obj, key, {
- configurable: true,
- get: function get() {
- return value;
- }
- });
- }
- };
-
- for (var _i5 = 0, _Object$entries = Object.entries(meta || {}); _i5 < _Object$entries.length; _i5++) {
- _loop2();
- }
-
- return obj;
- }
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v5.2.0): dom/data.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- /**
- * Constants
- */
-
-
- var elementMap = new Map();
- var Data = {
- set: function set(element, key, instance) {
- if (!elementMap.has(element)) {
- elementMap.set(element, new Map());
- }
-
- var instanceMap = elementMap.get(element); // make it clear we only want one instance per element
- // can be removed later when multiple key/instances are fine to be used
-
- if (!instanceMap.has(key) && instanceMap.size !== 0) {
- // eslint-disable-next-line no-console
- console.error("Bootstrap doesn't allow more than one instance per element. Bound instance: ".concat(Array.from(instanceMap.keys())[0], "."));
- return;
- }
-
- instanceMap.set(key, instance);
- },
- get: function get(element, key) {
- if (elementMap.has(element)) {
- return elementMap.get(element).get(key) || null;
- }
-
- return null;
- },
- remove: function remove(element, key) {
- if (!elementMap.has(element)) {
- return;
- }
-
- var instanceMap = elementMap.get(element);
- instanceMap["delete"](key); // free up element references if there are no instances left for an element
-
- if (instanceMap.size === 0) {
- elementMap["delete"](element);
- }
- }
- };
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v5.2.0): dom/manipulator.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- function normalizeData(value) {
- if (value === 'true') {
- return true;
- }
-
- if (value === 'false') {
- return false;
- }
-
- if (value === Number(value).toString()) {
- return Number(value);
- }
-
- if (value === '' || value === 'null') {
- return null;
- }
-
- if (typeof value !== 'string') {
- return value;
- }
-
- try {
- return JSON.parse(decodeURIComponent(value));
- } catch (_unused) {
- return value;
- }
- }
-
- function normalizeDataKey(key) {
- return key.replace(/[A-Z]/g, function (chr) {
- return "-".concat(chr.toLowerCase());
- });
- }
-
- var Manipulator = {
- setDataAttribute: function setDataAttribute(element, key, value) {
- element.setAttribute("data-bs-".concat(normalizeDataKey(key)), value);
- },
- removeDataAttribute: function removeDataAttribute(element, key) {
- element.removeAttribute("data-bs-".concat(normalizeDataKey(key)));
- },
- getDataAttributes: function getDataAttributes(element) {
- if (!element) {
- return {};
- }
-
- var attributes = {};
- var bsKeys = Object.keys(element.dataset).filter(function (key) {
- return key.startsWith('bs') && !key.startsWith('bsConfig');
- });
-
- var _iterator3 = _createForOfIteratorHelper(bsKeys),
- _step3;
-
- try {
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
- var key = _step3.value;
- var pureKey = key.replace(/^bs/, '');
- pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);
- attributes[pureKey] = normalizeData(element.dataset[key]);
- }
- } catch (err) {
- _iterator3.e(err);
- } finally {
- _iterator3.f();
- }
-
- return attributes;
- },
- getDataAttribute: function getDataAttribute(element, key) {
- return normalizeData(element.getAttribute("data-bs-".concat(normalizeDataKey(key))));
- }
- };
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v5.2.0): util/config.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- /**
- * Class definition
- */
-
- var Config = /*#__PURE__*/function () {
- function Config() {
- _classCallCheck(this, Config);
- }
-
- _createClass(Config, [{
- key: "_getConfig",
- value: function _getConfig(config) {
- config = this._mergeConfigObj(config);
- config = this._configAfterMerge(config);
-
- this._typeCheckConfig(config);
-
- return config;
- }
- }, {
- key: "_configAfterMerge",
- value: function _configAfterMerge(config) {
- return config;
- }
- }, {
- key: "_mergeConfigObj",
- value: function _mergeConfigObj(config, element) {
- var jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse
-
- return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, this.constructor.Default), _typeof(jsonConfig) === 'object' ? jsonConfig : {}), isElement(element) ? Manipulator.getDataAttributes(element) : {}), _typeof(config) === 'object' ? config : {});
- }
- }, {
- key: "_typeCheckConfig",
- value: function _typeCheckConfig(config) {
- var configTypes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.constructor.DefaultType;
-
- for (var _i6 = 0, _Object$keys4 = Object.keys(configTypes); _i6 < _Object$keys4.length; _i6++) {
- var property = _Object$keys4[_i6];
- var expectedTypes = configTypes[property];
- var value = config[property];
- var valueType = isElement(value) ? 'element' : toType(value);
-
- if (!new RegExp(expectedTypes).test(valueType)) {
- throw new TypeError("".concat(this.constructor.NAME.toUpperCase(), ": Option \"").concat(property, "\" provided type \"").concat(valueType, "\" but expected type \"").concat(expectedTypes, "\"."));
- }
- }
- }
- }], [{
- key: "Default",
- get: // Getters
- function get() {
- return {};
- }
- }, {
- key: "DefaultType",
- get: function get() {
- return {};
- }
- }, {
- key: "NAME",
- get: function get() {
- throw new Error('You have to implement the static method "NAME", for each component!');
- }
- }]);
-
- return Config;
- }();
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v5.2.0): base-component.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- /**
- * Constants
- */
-
-
- var VERSION = '5.2.0';
- /**
- * Class definition
- */
-
- var BaseComponent = /*#__PURE__*/function (_Config) {
- _inherits(BaseComponent, _Config);
-
- var _super = _createSuper(BaseComponent);
-
- function BaseComponent(element, config) {
- var _this;
-
- _classCallCheck(this, BaseComponent);
-
- _this = _super.call(this);
- element = getElement(element);
-
- if (!element) {
- return _possibleConstructorReturn(_this);
- }
-
- _this._element = element;
- _this._config = _this._getConfig(config);
- Data.set(_this._element, _this.constructor.DATA_KEY, _assertThisInitialized(_this));
- return _this;
- } // Public
-
-
- _createClass(BaseComponent, [{
- key: "dispose",
- value: function dispose() {
- Data.remove(this._element, this.constructor.DATA_KEY);
- EventHandler.off(this._element, this.constructor.EVENT_KEY);
-
- var _iterator4 = _createForOfIteratorHelper(Object.getOwnPropertyNames(this)),
- _step4;
-
- try {
- for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
- var propertyName = _step4.value;
- this[propertyName] = null;
- }
- } catch (err) {
- _iterator4.e(err);
- } finally {
- _iterator4.f();
- }
- }
- }, {
- key: "_queueCallback",
- value: function _queueCallback(callback, element) {
- var isAnimated = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
- executeAfterTransition(callback, element, isAnimated);
- }
- }, {
- key: "_getConfig",
- value: function _getConfig(config) {
- config = this._mergeConfigObj(config, this._element);
- config = this._configAfterMerge(config);
-
- this._typeCheckConfig(config);
-
- return config;
- } // Static
-
- }], [{
- key: "getInstance",
- value: function getInstance(element) {
- return Data.get(getElement(element), this.DATA_KEY);
- }
- }, {
- key: "getOrCreateInstance",
- value: function getOrCreateInstance(element) {
- var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
- return this.getInstance(element) || new this(element, _typeof(config) === 'object' ? config : null);
- }
- }, {
- key: "VERSION",
- get: function get() {
- return VERSION;
- }
- }, {
- key: "DATA_KEY",
- get: function get() {
- return "bs.".concat(this.NAME);
- }
- }, {
- key: "EVENT_KEY",
- get: function get() {
- return ".".concat(this.DATA_KEY);
- }
- }, {
- key: "eventName",
- value: function eventName(name) {
- return "".concat(name).concat(this.EVENT_KEY);
- }
- }]);
-
- return BaseComponent;
- }(Config);
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v5.2.0): util/component-functions.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-
- var enableDismissTrigger = function enableDismissTrigger(component) {
- var method = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'hide';
- var clickEvent = "click.dismiss".concat(component.EVENT_KEY);
- var name = component.NAME;
- EventHandler.on(document, clickEvent, "[data-bs-dismiss=\"".concat(name, "\"]"), function (event) {
- if (['A', 'AREA'].includes(this.tagName)) {
- event.preventDefault();
- }
-
- if (isDisabled(this)) {
- return;
- }
-
- var target = getElementFromSelector(this) || this.closest(".".concat(name));
- var instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method
-
- instance[method]();
- });
- };
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v5.2.0): alert.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- /**
- * Constants
- */
-
-
- var NAME$f = 'alert';
- var DATA_KEY$a = 'bs.alert';
- var EVENT_KEY$b = ".".concat(DATA_KEY$a);
- var EVENT_CLOSE = "close".concat(EVENT_KEY$b);
- var EVENT_CLOSED = "closed".concat(EVENT_KEY$b);
- var CLASS_NAME_FADE$5 = 'fade';
- var CLASS_NAME_SHOW$8 = 'show';
- /**
- * Class definition
- */
-
- var Alert = /*#__PURE__*/function (_BaseComponent) {
- _inherits(Alert, _BaseComponent);
-
- var _super2 = _createSuper(Alert);
-
- function Alert() {
- _classCallCheck(this, Alert);
-
- return _super2.apply(this, arguments);
- }
-
- _createClass(Alert, [{
- key: "close",
- value: // Public
- function close() {
- var _this2 = this;
-
- var closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);
-
- if (closeEvent.defaultPrevented) {
- return;
- }
-
- this._element.classList.remove(CLASS_NAME_SHOW$8);
-
- var isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);
-
- this._queueCallback(function () {
- return _this2._destroyElement();
- }, this._element, isAnimated);
- } // Private
-
- }, {
- key: "_destroyElement",
- value: function _destroyElement() {
- this._element.remove();
-
- EventHandler.trigger(this._element, EVENT_CLOSED);
- this.dispose();
- } // Static
-
- }], [{
- key: "NAME",
- get: // Getters
- function get() {
- return NAME$f;
- }
- }, {
- key: "jQueryInterface",
- value: function jQueryInterface(config) {
- return this.each(function () {
- var data = Alert.getOrCreateInstance(this);
-
- if (typeof config !== 'string') {
- return;
- }
-
- if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
- throw new TypeError("No method named \"".concat(config, "\""));
- }
-
- data[config](this);
- });
- }
- }]);
-
- return Alert;
- }(BaseComponent);
- /**
- * Data API implementation
- */
-
-
- enableDismissTrigger(Alert, 'close');
- /**
- * jQuery
- */
-
- defineJQueryPlugin(Alert);
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v5.2.0): button.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- /**
- * Constants
- */
-
- var NAME$e = 'button';
- var DATA_KEY$9 = 'bs.button';
- var EVENT_KEY$a = ".".concat(DATA_KEY$9);
- var DATA_API_KEY$6 = '.data-api';
- var CLASS_NAME_ACTIVE$3 = 'active';
- var SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]';
- var EVENT_CLICK_DATA_API$6 = "click".concat(EVENT_KEY$a).concat(DATA_API_KEY$6);
- /**
- * Class definition
- */
-
- var Button = /*#__PURE__*/function (_BaseComponent2) {
- _inherits(Button, _BaseComponent2);
-
- var _super3 = _createSuper(Button);
-
- function Button() {
- _classCallCheck(this, Button);
-
- return _super3.apply(this, arguments);
- }
-
- _createClass(Button, [{
- key: "toggle",
- value: // Public
- function toggle() {
- // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method
- this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));
- } // Static
-
- }], [{
- key: "NAME",
- get: // Getters
- function get() {
- return NAME$e;
- }
- }, {
- key: "jQueryInterface",
- value: function jQueryInterface(config) {
- return this.each(function () {
- var data = Button.getOrCreateInstance(this);
-
- if (config === 'toggle') {
- data[config]();
- }
- });
- }
- }]);
-
- return Button;
- }(BaseComponent);
- /**
- * Data API implementation
- */
-
-
- EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, function (event) {
- event.preventDefault();
- var button = event.target.closest(SELECTOR_DATA_TOGGLE$5);
- var data = Button.getOrCreateInstance(button);
- data.toggle();
- });
- /**
- * jQuery
- */
-
- defineJQueryPlugin(Button);
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v5.2.0): dom/selector-engine.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- /**
- * Constants
- */
-
- var SelectorEngine = {
- find: function find(selector) {
- var _ref2;
-
- var element = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document.documentElement;
- return (_ref2 = []).concat.apply(_ref2, _toConsumableArray(Element.prototype.querySelectorAll.call(element, selector)));
- },
- findOne: function findOne(selector) {
- var element = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document.documentElement;
- return Element.prototype.querySelector.call(element, selector);
- },
- children: function children(element, selector) {
- var _ref3;
-
- return (_ref3 = []).concat.apply(_ref3, _toConsumableArray(element.children)).filter(function (child) {
- return child.matches(selector);
- });
- },
- parents: function parents(element, selector) {
- var parents = [];
- var ancestor = element.parentNode.closest(selector);
-
- while (ancestor) {
- parents.push(ancestor);
- ancestor = ancestor.parentNode.closest(selector);
- }
-
- return parents;
- },
- prev: function prev(element, selector) {
- var previous = element.previousElementSibling;
-
- while (previous) {
- if (previous.matches(selector)) {
- return [previous];
- }
-
- previous = previous.previousElementSibling;
- }
-
- return [];
- },
- // TODO: this is now unused; remove later along with prev()
- next: function next(element, selector) {
- var next = element.nextElementSibling;
-
- while (next) {
- if (next.matches(selector)) {
- return [next];
- }
-
- next = next.nextElementSibling;
- }
-
- return [];
- },
- focusableChildren: function focusableChildren(element) {
- var focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(function (selector) {
- return "".concat(selector, ":not([tabindex^=\"-\"])");
- }).join(',');
- return this.find(focusables, element).filter(function (el) {
- return !isDisabled(el) && isVisible(el);
- });
- }
- };
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v5.2.0): util/swipe.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- /**
- * Constants
- */
-
- var NAME$d = 'swipe';
- var EVENT_KEY$9 = '.bs.swipe';
- var EVENT_TOUCHSTART = "touchstart".concat(EVENT_KEY$9);
- var EVENT_TOUCHMOVE = "touchmove".concat(EVENT_KEY$9);
- var EVENT_TOUCHEND = "touchend".concat(EVENT_KEY$9);
- var EVENT_POINTERDOWN = "pointerdown".concat(EVENT_KEY$9);
- var EVENT_POINTERUP = "pointerup".concat(EVENT_KEY$9);
- var POINTER_TYPE_TOUCH = 'touch';
- var POINTER_TYPE_PEN = 'pen';
- var CLASS_NAME_POINTER_EVENT = 'pointer-event';
- var SWIPE_THRESHOLD = 40;
- var Default$c = {
- endCallback: null,
- leftCallback: null,
- rightCallback: null
- };
- var DefaultType$c = {
- endCallback: '(function|null)',
- leftCallback: '(function|null)',
- rightCallback: '(function|null)'
- };
- /**
- * Class definition
- */
-
- var Swipe = /*#__PURE__*/function (_Config2) {
- _inherits(Swipe, _Config2);
-
- var _super4 = _createSuper(Swipe);
-
- function Swipe(element, config) {
- var _this3;
-
- _classCallCheck(this, Swipe);
-
- _this3 = _super4.call(this);
- _this3._element = element;
-
- if (!element || !Swipe.isSupported()) {
- return _possibleConstructorReturn(_this3);
- }
-
- _this3._config = _this3._getConfig(config);
- _this3._deltaX = 0;
- _this3._supportPointerEvents = Boolean(window.PointerEvent);
-
- _this3._initEvents();
-
- return _this3;
- } // Getters
-
-
- _createClass(Swipe, [{
- key: "dispose",
- value: // Public
- function dispose() {
- EventHandler.off(this._element, EVENT_KEY$9);
- } // Private
-
- }, {
- key: "_start",
- value: function _start(event) {
- if (!this._supportPointerEvents) {
- this._deltaX = event.touches[0].clientX;
- return;
- }
-
- if (this._eventIsPointerPenTouch(event)) {
- this._deltaX = event.clientX;
- }
- }
- }, {
- key: "_end",
- value: function _end(event) {
- if (this._eventIsPointerPenTouch(event)) {
- this._deltaX = event.clientX - this._deltaX;
- }
-
- this._handleSwipe();
-
- execute(this._config.endCallback);
- }
- }, {
- key: "_move",
- value: function _move(event) {
- this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;
- }
- }, {
- key: "_handleSwipe",
- value: function _handleSwipe() {
- var absDeltaX = Math.abs(this._deltaX);
-
- if (absDeltaX <= SWIPE_THRESHOLD) {
- return;
- }
-
- var direction = absDeltaX / this._deltaX;
- this._deltaX = 0;
-
- if (!direction) {
- return;
- }
-
- execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);
- }
- }, {
- key: "_initEvents",
- value: function _initEvents() {
- var _this4 = this;
-
- if (this._supportPointerEvents) {
- EventHandler.on(this._element, EVENT_POINTERDOWN, function (event) {
- return _this4._start(event);
- });
- EventHandler.on(this._element, EVENT_POINTERUP, function (event) {
- return _this4._end(event);
- });
-
- this._element.classList.add(CLASS_NAME_POINTER_EVENT);
- } else {
- EventHandler.on(this._element, EVENT_TOUCHSTART, function (event) {
- return _this4._start(event);
- });
- EventHandler.on(this._element, EVENT_TOUCHMOVE, function (event) {
- return _this4._move(event);
- });
- EventHandler.on(this._element, EVENT_TOUCHEND, function (event) {
- return _this4._end(event);
- });
- }
- }
- }, {
- key: "_eventIsPointerPenTouch",
- value: function _eventIsPointerPenTouch(event) {
- return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);
- } // Static
-
- }], [{
- key: "Default",
- get: function get() {
- return Default$c;
- }
- }, {
- key: "DefaultType",
- get: function get() {
- return DefaultType$c;
- }
- }, {
- key: "NAME",
- get: function get() {
- return NAME$d;
- }
- }, {
- key: "isSupported",
- value: function isSupported() {
- return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
- }
- }]);
-
- return Swipe;
- }(Config);
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v5.2.0): carousel.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- /**
- * Constants
- */
-
-
- var NAME$c = 'carousel';
- var DATA_KEY$8 = 'bs.carousel';
- var EVENT_KEY$8 = ".".concat(DATA_KEY$8);
- var DATA_API_KEY$5 = '.data-api';
- var ARROW_LEFT_KEY$1 = 'ArrowLeft';
- var ARROW_RIGHT_KEY$1 = 'ArrowRight';
- var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
-
- var ORDER_NEXT = 'next';
- var ORDER_PREV = 'prev';
- var DIRECTION_LEFT = 'left';
- var DIRECTION_RIGHT = 'right';
- var EVENT_SLIDE = "slide".concat(EVENT_KEY$8);
- var EVENT_SLID = "slid".concat(EVENT_KEY$8);
- var EVENT_KEYDOWN$1 = "keydown".concat(EVENT_KEY$8);
- var EVENT_MOUSEENTER$1 = "mouseenter".concat(EVENT_KEY$8);
- var EVENT_MOUSELEAVE$1 = "mouseleave".concat(EVENT_KEY$8);
- var EVENT_DRAG_START = "dragstart".concat(EVENT_KEY$8);
- var EVENT_LOAD_DATA_API$3 = "load".concat(EVENT_KEY$8).concat(DATA_API_KEY$5);
- var EVENT_CLICK_DATA_API$5 = "click".concat(EVENT_KEY$8).concat(DATA_API_KEY$5);
- var CLASS_NAME_CAROUSEL = 'carousel';
- var CLASS_NAME_ACTIVE$2 = 'active';
- var CLASS_NAME_SLIDE = 'slide';
- var CLASS_NAME_END = 'carousel-item-end';
- var CLASS_NAME_START = 'carousel-item-start';
- var CLASS_NAME_NEXT = 'carousel-item-next';
- var CLASS_NAME_PREV = 'carousel-item-prev';
- var SELECTOR_ACTIVE = '.active';
- var SELECTOR_ITEM = '.carousel-item';
- var SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;
- var SELECTOR_ITEM_IMG = '.carousel-item img';
- var SELECTOR_INDICATORS = '.carousel-indicators';
- var SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';
- var SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]';
- var KEY_TO_DIRECTION = (_KEY_TO_DIRECTION = {}, _defineProperty(_KEY_TO_DIRECTION, ARROW_LEFT_KEY$1, DIRECTION_RIGHT), _defineProperty(_KEY_TO_DIRECTION, ARROW_RIGHT_KEY$1, DIRECTION_LEFT), _KEY_TO_DIRECTION);
- var Default$b = {
- interval: 5000,
- keyboard: true,
- pause: 'hover',
- ride: false,
- touch: true,
- wrap: true
- };
- var DefaultType$b = {
- interval: '(number|boolean)',
- // TODO:v6 remove boolean support
- keyboard: 'boolean',
- pause: '(string|boolean)',
- ride: '(boolean|string)',
- touch: 'boolean',
- wrap: 'boolean'
- };
- /**
- * Class definition
- */
-
- var Carousel = /*#__PURE__*/function (_BaseComponent3) {
- _inherits(Carousel, _BaseComponent3);
-
- var _super5 = _createSuper(Carousel);
-
- function Carousel(element, config) {
- var _this5;
-
- _classCallCheck(this, Carousel);
-
- _this5 = _super5.call(this, element, config);
- _this5._interval = null;
- _this5._activeElement = null;
- _this5._isSliding = false;
- _this5.touchTimeout = null;
- _this5._swipeHelper = null;
- _this5._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, _this5._element);
-
- _this5._addEventListeners();
-
- if (_this5._config.ride === CLASS_NAME_CAROUSEL) {
- _this5.cycle();
- }
-
- return _this5;
- } // Getters
-
-
- _createClass(Carousel, [{
- key: "next",
- value: // Public
- function next() {
- this._slide(ORDER_NEXT);
- }
- }, {
- key: "nextWhenVisible",
- value: function nextWhenVisible() {
- // FIXME TODO use `document.visibilityState`
- // Don't call next when the page isn't visible
- // or the carousel or its parent isn't visible
- if (!document.hidden && isVisible(this._element)) {
- this.next();
- }
- }
- }, {
- key: "prev",
- value: function prev() {
- this._slide(ORDER_PREV);
- }
- }, {
- key: "pause",
- value: function pause() {
- if (this._isSliding) {
- triggerTransitionEnd(this._element);
- }
-
- this._clearInterval();
- }
- }, {
- key: "cycle",
- value: function cycle() {
- var _this6 = this;
-
- this._clearInterval();
-
- this._updateInterval();
-
- this._interval = setInterval(function () {
- return _this6.nextWhenVisible();
- }, this._config.interval);
- }
- }, {
- key: "_maybeEnableCycle",
- value: function _maybeEnableCycle() {
- var _this7 = this;
-
- if (!this._config.ride) {
- return;
- }
-
- if (this._isSliding) {
- EventHandler.one(this._element, EVENT_SLID, function () {
- return _this7.cycle();
- });
- return;
- }
-
- this.cycle();
- }
- }, {
- key: "to",
- value: function to(index) {
- var _this8 = this;
-
- var items = this._getItems();
-
- if (index > items.length - 1 || index < 0) {
- return;
- }
-
- if (this._isSliding) {
- EventHandler.one(this._element, EVENT_SLID, function () {
- return _this8.to(index);
- });
- return;
- }
-
- var activeIndex = this._getItemIndex(this._getActive());
-
- if (activeIndex === index) {
- return;
- }
-
- var order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;
-
- this._slide(order, items[index]);
- }
- }, {
- key: "dispose",
- value: function dispose() {
- if (this._swipeHelper) {
- this._swipeHelper.dispose();
- }
-
- _get(_getPrototypeOf(Carousel.prototype), "dispose", this).call(this);
- } // Private
-
- }, {
- key: "_configAfterMerge",
- value: function _configAfterMerge(config) {
- config.defaultInterval = config.interval;
- return config;
- }
- }, {
- key: "_addEventListeners",
- value: function _addEventListeners() {
- var _this9 = this;
-
- if (this._config.keyboard) {
- EventHandler.on(this._element, EVENT_KEYDOWN$1, function (event) {
- return _this9._keydown(event);
- });
- }
-
- if (this._config.pause === 'hover') {
- EventHandler.on(this._element, EVENT_MOUSEENTER$1, function () {
- return _this9.pause();
- });
- EventHandler.on(this._element, EVENT_MOUSELEAVE$1, function () {
- return _this9._maybeEnableCycle();
- });
- }
-
- if (this._config.touch && Swipe.isSupported()) {
- this._addTouchEventListeners();
- }
- }
- }, {
- key: "_addTouchEventListeners",
- value: function _addTouchEventListeners() {
- var _this10 = this;
-
- var _iterator5 = _createForOfIteratorHelper(SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)),
- _step5;
-
- try {
- for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
- var img = _step5.value;
- EventHandler.on(img, EVENT_DRAG_START, function (event) {
- return event.preventDefault();
- });
- }
- } catch (err) {
- _iterator5.e(err);
- } finally {
- _iterator5.f();
- }
-
- var endCallBack = function endCallBack() {
- if (_this10._config.pause !== 'hover') {
- return;
- } // If it's a touch-enabled device, mouseenter/leave are fired as
- // part of the mouse compatibility events on first tap - the carousel
- // would stop cycling until user tapped out of it;
- // here, we listen for touchend, explicitly pause the carousel
- // (as if it's the second time we tap on it, mouseenter compat event
- // is NOT fired) and after a timeout (to allow for mouse compatibility
- // events to fire) we explicitly restart cycling
-
-
- _this10.pause();
-
- if (_this10.touchTimeout) {
- clearTimeout(_this10.touchTimeout);
- }
-
- _this10.touchTimeout = setTimeout(function () {
- return _this10._maybeEnableCycle();
- }, TOUCHEVENT_COMPAT_WAIT + _this10._config.interval);
- };
-
- var swipeConfig = {
- leftCallback: function leftCallback() {
- return _this10._slide(_this10._directionToOrder(DIRECTION_LEFT));
- },
- rightCallback: function rightCallback() {
- return _this10._slide(_this10._directionToOrder(DIRECTION_RIGHT));
- },
- endCallback: endCallBack
- };
- this._swipeHelper = new Swipe(this._element, swipeConfig);
- }
- }, {
- key: "_keydown",
- value: function _keydown(event) {
- if (/input|textarea/i.test(event.target.tagName)) {
- return;
- }
-
- var direction = KEY_TO_DIRECTION[event.key];
-
- if (direction) {
- event.preventDefault();
-
- this._slide(this._directionToOrder(direction));
- }
- }
- }, {
- key: "_getItemIndex",
- value: function _getItemIndex(element) {
- return this._getItems().indexOf(element);
- }
- }, {
- key: "_setActiveIndicatorElement",
- value: function _setActiveIndicatorElement(index) {
- if (!this._indicatorsElement) {
- return;
- }
-
- var activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);
- activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);
- activeIndicator.removeAttribute('aria-current');
- var newActiveIndicator = SelectorEngine.findOne("[data-bs-slide-to=\"".concat(index, "\"]"), this._indicatorsElement);
-
- if (newActiveIndicator) {
- newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);
- newActiveIndicator.setAttribute('aria-current', 'true');
- }
- }
- }, {
- key: "_updateInterval",
- value: function _updateInterval() {
- var element = this._activeElement || this._getActive();
-
- if (!element) {
- return;
- }
-
- var elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);
- this._config.interval = elementInterval || this._config.defaultInterval;
- }
- }, {
- key: "_slide",
- value: function _slide(order) {
- var _this11 = this;
-
- var element = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
-
- if (this._isSliding) {
- return;
- }
-
- var activeElement = this._getActive();
-
- var isNext = order === ORDER_NEXT;
- var nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);
-
- if (nextElement === activeElement) {
- return;
- }
-
- var nextElementIndex = this._getItemIndex(nextElement);
-
- var triggerEvent = function triggerEvent(eventName) {
- return EventHandler.trigger(_this11._element, eventName, {
- relatedTarget: nextElement,
- direction: _this11._orderToDirection(order),
- from: _this11._getItemIndex(activeElement),
- to: nextElementIndex
- });
- };
-
- var slideEvent = triggerEvent(EVENT_SLIDE);
-
- if (slideEvent.defaultPrevented) {
- return;
- }
-
- if (!activeElement || !nextElement) {
- // Some weirdness is happening, so we bail
- // todo: change tests that use empty divs to avoid this check
- return;
- }
-
- var isCycling = Boolean(this._interval);
- this.pause();
- this._isSliding = true;
-
- this._setActiveIndicatorElement(nextElementIndex);
-
- this._activeElement = nextElement;
- var directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;
- var orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;
- nextElement.classList.add(orderClassName);
- reflow(nextElement);
- activeElement.classList.add(directionalClassName);
- nextElement.classList.add(directionalClassName);
-
- var completeCallBack = function completeCallBack() {
- nextElement.classList.remove(directionalClassName, orderClassName);
- nextElement.classList.add(CLASS_NAME_ACTIVE$2);
- activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);
- _this11._isSliding = false;
- triggerEvent(EVENT_SLID);
- };
-
- this._queueCallback(completeCallBack, activeElement, this._isAnimated());
-
- if (isCycling) {
- this.cycle();
- }
- }
- }, {
- key: "_isAnimated",
- value: function _isAnimated() {
- return this._element.classList.contains(CLASS_NAME_SLIDE);
- }
- }, {
- key: "_getActive",
- value: function _getActive() {
- return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
- }
- }, {
- key: "_getItems",
- value: function _getItems() {
- return SelectorEngine.find(SELECTOR_ITEM, this._element);
- }
- }, {
- key: "_clearInterval",
- value: function _clearInterval() {
- if (this._interval) {
- clearInterval(this._interval);
- this._interval = null;
- }
- }
- }, {
- key: "_directionToOrder",
- value: function _directionToOrder(direction) {
- if (isRTL()) {
- return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;
- }
-
- return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;
- }
- }, {
- key: "_orderToDirection",
- value: function _orderToDirection(order) {
- if (isRTL()) {
- return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;
- }
-
- return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;
- } // Static
-
- }], [{
- key: "Default",
- get: function get() {
- return Default$b;
- }
- }, {
- key: "DefaultType",
- get: function get() {
- return DefaultType$b;
- }
- }, {
- key: "NAME",
- get: function get() {
- return NAME$c;
- }
- }, {
- key: "jQueryInterface",
- value: function jQueryInterface(config) {
- return this.each(function () {
- var data = Carousel.getOrCreateInstance(this, config);
-
- if (typeof config === 'number') {
- data.to(config);
- return;
- }
-
- if (typeof config === 'string') {
- if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
- throw new TypeError("No method named \"".concat(config, "\""));
- }
-
- data[config]();
- }
- });
- }
- }]);
-
- return Carousel;
- }(BaseComponent);
- /**
- * Data API implementation
- */
-
-
- EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) {
- var target = getElementFromSelector(this);
-
- if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
- return;
- }
-
- event.preventDefault();
- var carousel = Carousel.getOrCreateInstance(target);
- var slideIndex = this.getAttribute('data-bs-slide-to');
-
- if (slideIndex) {
- carousel.to(slideIndex);
-
- carousel._maybeEnableCycle();
-
- return;
- }
-
- if (Manipulator.getDataAttribute(this, 'slide') === 'next') {
- carousel.next();
-
- carousel._maybeEnableCycle();
-
- return;
- }
-
- carousel.prev();
-
- carousel._maybeEnableCycle();
- });
- EventHandler.on(window, EVENT_LOAD_DATA_API$3, function () {
- var carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);
-
- var _iterator6 = _createForOfIteratorHelper(carousels),
- _step6;
-
- try {
- for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
- var carousel = _step6.value;
- Carousel.getOrCreateInstance(carousel);
- }
- } catch (err) {
- _iterator6.e(err);
- } finally {
- _iterator6.f();
- }
- });
- /**
- * jQuery
- */
-
- defineJQueryPlugin(Carousel);
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v5.2.0): collapse.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- /**
- * Constants
- */
-
- var NAME$b = 'collapse';
- var DATA_KEY$7 = 'bs.collapse';
- var EVENT_KEY$7 = ".".concat(DATA_KEY$7);
- var DATA_API_KEY$4 = '.data-api';
- var EVENT_SHOW$6 = "show".concat(EVENT_KEY$7);
- var EVENT_SHOWN$6 = "shown".concat(EVENT_KEY$7);
- var EVENT_HIDE$6 = "hide".concat(EVENT_KEY$7);
- var EVENT_HIDDEN$6 = "hidden".concat(EVENT_KEY$7);
- var EVENT_CLICK_DATA_API$4 = "click".concat(EVENT_KEY$7).concat(DATA_API_KEY$4);
- var CLASS_NAME_SHOW$7 = 'show';
- var CLASS_NAME_COLLAPSE = 'collapse';
- var CLASS_NAME_COLLAPSING = 'collapsing';
- var CLASS_NAME_COLLAPSED = 'collapsed';
- var CLASS_NAME_DEEPER_CHILDREN = ":scope .".concat(CLASS_NAME_COLLAPSE, " .").concat(CLASS_NAME_COLLAPSE);
- var CLASS_NAME_HORIZONTAL = 'collapse-horizontal';
- var WIDTH = 'width';
- var HEIGHT = 'height';
- var SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';
- var SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]';
- var Default$a = {
- parent: null,
- toggle: true
- };
- var DefaultType$a = {
- parent: '(null|element)',
- toggle: 'boolean'
- };
- /**
- * Class definition
- */
-
- var Collapse = /*#__PURE__*/function (_BaseComponent4) {
- _inherits(Collapse, _BaseComponent4);
-
- var _super6 = _createSuper(Collapse);
-
- function Collapse(element, config) {
- var _this12;
-
- _classCallCheck(this, Collapse);
-
- _this12 = _super6.call(this, element, config);
- _this12._isTransitioning = false;
- _this12._triggerArray = [];
- var toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);
-
- var _iterator7 = _createForOfIteratorHelper(toggleList),
- _step7;
-
- try {
- for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
- var elem = _step7.value;
- var selector = getSelectorFromElement(elem);
- var filterElement = SelectorEngine.find(selector).filter(function (foundElement) {
- return foundElement === _this12._element;
- });
-
- if (selector !== null && filterElement.length) {
- _this12._triggerArray.push(elem);
- }
- }
- } catch (err) {
- _iterator7.e(err);
- } finally {
- _iterator7.f();
- }
-
- _this12._initializeChildren();
-
- if (!_this12._config.parent) {
- _this12._addAriaAndCollapsedClass(_this12._triggerArray, _this12._isShown());
- }
-
- if (_this12._config.toggle) {
- _this12.toggle();
- }
-
- return _this12;
- } // Getters
-
-
- _createClass(Collapse, [{
- key: "toggle",
- value: // Public
- function toggle() {
- if (this._isShown()) {
- this.hide();
- } else {
- this.show();
- }
- }
- }, {
- key: "show",
- value: function show() {
- var _this13 = this;
-
- if (this._isTransitioning || this._isShown()) {
- return;
- }
-
- var activeChildren = []; // find active children
-
- if (this._config.parent) {
- activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(function (element) {
- return element !== _this13._element;
- }).map(function (element) {
- return Collapse.getOrCreateInstance(element, {
- toggle: false
- });
- });
- }
-
- if (activeChildren.length && activeChildren[0]._isTransitioning) {
- return;
- }
-
- var startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);
-
- if (startEvent.defaultPrevented) {
- return;
- }
-
- var _iterator8 = _createForOfIteratorHelper(activeChildren),
- _step8;
-
- try {
- for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
- var activeInstance = _step8.value;
- activeInstance.hide();
- }
- } catch (err) {
- _iterator8.e(err);
- } finally {
- _iterator8.f();
- }
-
- var dimension = this._getDimension();
-
- this._element.classList.remove(CLASS_NAME_COLLAPSE);
-
- this._element.classList.add(CLASS_NAME_COLLAPSING);
-
- this._element.style[dimension] = 0;
-
- this._addAriaAndCollapsedClass(this._triggerArray, true);
-
- this._isTransitioning = true;
-
- var complete = function complete() {
- _this13._isTransitioning = false;
-
- _this13._element.classList.remove(CLASS_NAME_COLLAPSING);
-
- _this13._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
-
- _this13._element.style[dimension] = '';
- EventHandler.trigger(_this13._element, EVENT_SHOWN$6);
- };
-
- var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
- var scrollSize = "scroll".concat(capitalizedDimension);
-
- this._queueCallback(complete, this._element, true);
-
- this._element.style[dimension] = "".concat(this._element[scrollSize], "px");
- }
- }, {
- key: "hide",
- value: function hide() {
- var _this14 = this;
-
- if (this._isTransitioning || !this._isShown()) {
- return;
- }
-
- var startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);
-
- if (startEvent.defaultPrevented) {
- return;
- }
-
- var dimension = this._getDimension();
-
- this._element.style[dimension] = "".concat(this._element.getBoundingClientRect()[dimension], "px");
- reflow(this._element);
-
- this._element.classList.add(CLASS_NAME_COLLAPSING);
-
- this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
-
- var _iterator9 = _createForOfIteratorHelper(this._triggerArray),
- _step9;
-
- try {
- for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
- var trigger = _step9.value;
- var element = getElementFromSelector(trigger);
-
- if (element && !this._isShown(element)) {
- this._addAriaAndCollapsedClass([trigger], false);
- }
- }
- } catch (err) {
- _iterator9.e(err);
- } finally {
- _iterator9.f();
- }
-
- this._isTransitioning = true;
-
- var complete = function complete() {
- _this14._isTransitioning = false;
-
- _this14._element.classList.remove(CLASS_NAME_COLLAPSING);
-
- _this14._element.classList.add(CLASS_NAME_COLLAPSE);
-
- EventHandler.trigger(_this14._element, EVENT_HIDDEN$6);
- };
-
- this._element.style[dimension] = '';
-
- this._queueCallback(complete, this._element, true);
- }
- }, {
- key: "_isShown",
- value: function _isShown() {
- var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this._element;
- return element.classList.contains(CLASS_NAME_SHOW$7);
- } // Private
-
- }, {
- key: "_configAfterMerge",
- value: function _configAfterMerge(config) {
- config.toggle = Boolean(config.toggle); // Coerce string values
-
- config.parent = getElement(config.parent);
- return config;
- }
- }, {
- key: "_getDimension",
- value: function _getDimension() {
- return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;
- }
- }, {
- key: "_initializeChildren",
- value: function _initializeChildren() {
- if (!this._config.parent) {
- return;
- }
-
- var children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);
-
- var _iterator10 = _createForOfIteratorHelper(children),
- _step10;
-
- try {
- for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
- var element = _step10.value;
- var selected = getElementFromSelector(element);
-
- if (selected) {
- this._addAriaAndCollapsedClass([element], this._isShown(selected));
- }
- }
- } catch (err) {
- _iterator10.e(err);
- } finally {
- _iterator10.f();
- }
- }
- }, {
- key: "_getFirstLevelChildren",
- value: function _getFirstLevelChildren(selector) {
- var children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); // remove children if greater depth
-
- return SelectorEngine.find(selector, this._config.parent).filter(function (element) {
- return !children.includes(element);
- });
- }
- }, {
- key: "_addAriaAndCollapsedClass",
- value: function _addAriaAndCollapsedClass(triggerArray, isOpen) {
- if (!triggerArray.length) {
- return;
- }
-
- var _iterator11 = _createForOfIteratorHelper(triggerArray),
- _step11;
-
- try {
- for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
- var element = _step11.value;
- element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);
- element.setAttribute('aria-expanded', isOpen);
- }
- } catch (err) {
- _iterator11.e(err);
- } finally {
- _iterator11.f();
- }
- } // Static
-
- }], [{
- key: "Default",
- get: function get() {
- return Default$a;
- }
- }, {
- key: "DefaultType",
- get: function get() {
- return DefaultType$a;
- }
- }, {
- key: "NAME",
- get: function get() {
- return NAME$b;
- }
- }, {
- key: "jQueryInterface",
- value: function jQueryInterface(config) {
- var _config = {};
-
- if (typeof config === 'string' && /show|hide/.test(config)) {
- _config.toggle = false;
- }
-
- return this.each(function () {
- var data = Collapse.getOrCreateInstance(this, _config);
-
- if (typeof config === 'string') {
- if (typeof data[config] === 'undefined') {
- throw new TypeError("No method named \"".concat(config, "\""));
- }
-
- data[config]();
- }
- });
- }
- }]);
-
- return Collapse;
- }(BaseComponent);
- /**
- * Data API implementation
- */
-
-
- EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {
- // preventDefault only for elements (which change the URL) not inside the collapsible element
- if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {
- event.preventDefault();
- }
-
- var selector = getSelectorFromElement(this);
- var selectorElements = SelectorEngine.find(selector);
-
- var _iterator12 = _createForOfIteratorHelper(selectorElements),
- _step12;
-
- try {
- for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
- var element = _step12.value;
- Collapse.getOrCreateInstance(element, {
- toggle: false
- }).toggle();
- }
- } catch (err) {
- _iterator12.e(err);
- } finally {
- _iterator12.f();
- }
- });
- /**
- * jQuery
- */
-
- defineJQueryPlugin(Collapse);
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v5.2.0): dropdown.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- /**
- * Constants
- */
-
- var NAME$a = 'dropdown';
- var DATA_KEY$6 = 'bs.dropdown';
- var EVENT_KEY$6 = ".".concat(DATA_KEY$6);
- var DATA_API_KEY$3 = '.data-api';
- var ESCAPE_KEY$2 = 'Escape';
- var TAB_KEY$1 = 'Tab';
- var ARROW_UP_KEY$1 = 'ArrowUp';
- var ARROW_DOWN_KEY$1 = 'ArrowDown';
- var RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button
-
- var EVENT_HIDE$5 = "hide".concat(EVENT_KEY$6);
- var EVENT_HIDDEN$5 = "hidden".concat(EVENT_KEY$6);
- var EVENT_SHOW$5 = "show".concat(EVENT_KEY$6);
- var EVENT_SHOWN$5 = "shown".concat(EVENT_KEY$6);
- var EVENT_CLICK_DATA_API$3 = "click".concat(EVENT_KEY$6).concat(DATA_API_KEY$3);
- var EVENT_KEYDOWN_DATA_API = "keydown".concat(EVENT_KEY$6).concat(DATA_API_KEY$3);
- var EVENT_KEYUP_DATA_API = "keyup".concat(EVENT_KEY$6).concat(DATA_API_KEY$3);
- var CLASS_NAME_SHOW$6 = 'show';
- var CLASS_NAME_DROPUP = 'dropup';
- var CLASS_NAME_DROPEND = 'dropend';
- var CLASS_NAME_DROPSTART = 'dropstart';
- var CLASS_NAME_DROPUP_CENTER = 'dropup-center';
- var CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';
- var SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)';
- var SELECTOR_DATA_TOGGLE_SHOWN = "".concat(SELECTOR_DATA_TOGGLE$3, ".").concat(CLASS_NAME_SHOW$6);
- var SELECTOR_MENU = '.dropdown-menu';
- var SELECTOR_NAVBAR = '.navbar';
- var SELECTOR_NAVBAR_NAV = '.navbar-nav';
- var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';
- var PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';
- var PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';
- var PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';
- var PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';
- var PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';
- var PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';
- var PLACEMENT_TOPCENTER = 'top';
- var PLACEMENT_BOTTOMCENTER = 'bottom';
- var Default$9 = {
- autoClose: true,
- boundary: 'clippingParents',
- display: 'dynamic',
- offset: [0, 2],
- popperConfig: null,
- reference: 'toggle'
- };
- var DefaultType$9 = {
- autoClose: '(boolean|string)',
- boundary: '(string|element)',
- display: 'string',
- offset: '(array|string|function)',
- popperConfig: '(null|object|function)',
- reference: '(string|element|object)'
- };
- /**
- * Class definition
- */
-
- var Dropdown = /*#__PURE__*/function (_BaseComponent5) {
- _inherits(Dropdown, _BaseComponent5);
-
- var _super7 = _createSuper(Dropdown);
-
- function Dropdown(element, config) {
- var _this15;
-
- _classCallCheck(this, Dropdown);
-
- _this15 = _super7.call(this, element, config);
- _this15._popper = null;
- _this15._parent = _this15._element.parentNode; // dropdown wrapper
-
- _this15._menu = SelectorEngine.findOne(SELECTOR_MENU, _this15._parent);
- _this15._inNavbar = _this15._detectNavbar();
- return _this15;
- } // Getters
-
-
- _createClass(Dropdown, [{
- key: "toggle",
- value: // Public
- function toggle() {
- return this._isShown() ? this.hide() : this.show();
- }
- }, {
- key: "show",
- value: function show() {
- if (isDisabled(this._element) || this._isShown()) {
- return;
- }
-
- var relatedTarget = {
- relatedTarget: this._element
- };
- var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);
-
- if (showEvent.defaultPrevented) {
- return;
- }
-
- this._createPopper(); // If this is a touch-enabled device we add extra
- // empty mouseover listeners to the body's immediate children;
- // only needed because of broken event delegation on iOS
- // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
-
-
- if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {
- var _ref4;
-
- var _iterator13 = _createForOfIteratorHelper((_ref4 = []).concat.apply(_ref4, _toConsumableArray(document.body.children))),
- _step13;
-
- try {
- for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
- var element = _step13.value;
- EventHandler.on(element, 'mouseover', noop);
- }
- } catch (err) {
- _iterator13.e(err);
- } finally {
- _iterator13.f();
- }
- }
-
- this._element.focus();
-
- this._element.setAttribute('aria-expanded', true);
-
- this._menu.classList.add(CLASS_NAME_SHOW$6);
-
- this._element.classList.add(CLASS_NAME_SHOW$6);
-
- EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);
- }
- }, {
- key: "hide",
- value: function hide() {
- if (isDisabled(this._element) || !this._isShown()) {
- return;
- }
-
- var relatedTarget = {
- relatedTarget: this._element
- };
-
- this._completeHide(relatedTarget);
- }
- }, {
- key: "dispose",
- value: function dispose() {
- if (this._popper) {
- this._popper.destroy();
- }
-
- _get(_getPrototypeOf(Dropdown.prototype), "dispose", this).call(this);
- }
- }, {
- key: "update",
- value: function update() {
- this._inNavbar = this._detectNavbar();
-
- if (this._popper) {
- this._popper.update();
- }
- } // Private
-
- }, {
- key: "_completeHide",
- value: function _completeHide(relatedTarget) {
- var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);
-
- if (hideEvent.defaultPrevented) {
- return;
- } // If this is a touch-enabled device we remove the extra
- // empty mouseover listeners we added for iOS support
-
-
- if ('ontouchstart' in document.documentElement) {
- var _ref5;
-
- var _iterator14 = _createForOfIteratorHelper((_ref5 = []).concat.apply(_ref5, _toConsumableArray(document.body.children))),
- _step14;
-
- try {
- for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {
- var element = _step14.value;
- EventHandler.off(element, 'mouseover', noop);
- }
- } catch (err) {
- _iterator14.e(err);
- } finally {
- _iterator14.f();
- }
- }
-
- if (this._popper) {
- this._popper.destroy();
- }
-
- this._menu.classList.remove(CLASS_NAME_SHOW$6);
-
- this._element.classList.remove(CLASS_NAME_SHOW$6);
-
- this._element.setAttribute('aria-expanded', 'false');
-
- Manipulator.removeDataAttribute(this._menu, 'popper');
- EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);
- }
- }, {
- key: "_getConfig",
- value: function _getConfig(config) {
- config = _get(_getPrototypeOf(Dropdown.prototype), "_getConfig", this).call(this, config);
-
- if (_typeof(config.reference) === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {
- // Popper virtual elements require a getBoundingClientRect method
- throw new TypeError("".concat(NAME$a.toUpperCase(), ": Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method."));
- }
-
- return config;
- }
- }, {
- key: "_createPopper",
- value: function _createPopper() {
- if (typeof Popper__namespace === 'undefined') {
- throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)');
- }
-
- var referenceElement = this._element;
-
- if (this._config.reference === 'parent') {
- referenceElement = this._parent;
- } else if (isElement(this._config.reference)) {
- referenceElement = getElement(this._config.reference);
- } else if (_typeof(this._config.reference) === 'object') {
- referenceElement = this._config.reference;
- }
-
- var popperConfig = this._getPopperConfig();
-
- this._popper = Popper__namespace.createPopper(referenceElement, this._menu, popperConfig);
- }
- }, {
- key: "_isShown",
- value: function _isShown() {
- return this._menu.classList.contains(CLASS_NAME_SHOW$6);
- }
- }, {
- key: "_getPlacement",
- value: function _getPlacement() {
- var parentDropdown = this._parent;
-
- if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {
- return PLACEMENT_RIGHT;
- }
-
- if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {
- return PLACEMENT_LEFT;
- }
-
- if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {
- return PLACEMENT_TOPCENTER;
- }
-
- if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {
- return PLACEMENT_BOTTOMCENTER;
- } // We need to trim the value because custom properties can also include spaces
-
-
- var isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';
-
- if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {
- return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;
- }
-
- return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;
- }
- }, {
- key: "_detectNavbar",
- value: function _detectNavbar() {
- return this._element.closest(SELECTOR_NAVBAR) !== null;
- }
- }, {
- key: "_getOffset",
- value: function _getOffset() {
- var _this16 = this;
-
- var offset = this._config.offset;
-
- if (typeof offset === 'string') {
- return offset.split(',').map(function (value) {
- return Number.parseInt(value, 10);
- });
- }
-
- if (typeof offset === 'function') {
- return function (popperData) {
- return offset(popperData, _this16._element);
- };
- }
-
- return offset;
- }
- }, {
- key: "_getPopperConfig",
- value: function _getPopperConfig() {
- var defaultBsPopperConfig = {
- placement: this._getPlacement(),
- modifiers: [{
- name: 'preventOverflow',
- options: {
- boundary: this._config.boundary
- }
- }, {
- name: 'offset',
- options: {
- offset: this._getOffset()
- }
- }]
- }; // Disable Popper if we have a static display or Dropdown is in Navbar
-
- if (this._inNavbar || this._config.display === 'static') {
- Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // todo:v6 remove
-
- defaultBsPopperConfig.modifiers = [{
- name: 'applyStyles',
- enabled: false
- }];
- }
-
- return _objectSpread(_objectSpread({}, defaultBsPopperConfig), typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig);
- }
- }, {
- key: "_selectMenuItem",
- value: function _selectMenuItem(_ref6) {
- var key = _ref6.key,
- target = _ref6.target;
- var items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(function (element) {
- return isVisible(element);
- });
-
- if (!items.length) {
- return;
- } // if target isn't included in items (e.g. when expanding the dropdown)
- // allow cycling to get the last item in case key equals ARROW_UP_KEY
-
-
- getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();
- } // Static
-
- }], [{
- key: "Default",
- get: function get() {
- return Default$9;
- }
- }, {
- key: "DefaultType",
- get: function get() {
- return DefaultType$9;
- }
- }, {
- key: "NAME",
- get: function get() {
- return NAME$a;
- }
- }, {
- key: "jQueryInterface",
- value: function jQueryInterface(config) {
- return this.each(function () {
- var data = Dropdown.getOrCreateInstance(this, config);
-
- if (typeof config !== 'string') {
- return;
- }
-
- if (typeof data[config] === 'undefined') {
- throw new TypeError("No method named \"".concat(config, "\""));
- }
-
- data[config]();
- });
- }
- }, {
- key: "clearMenus",
- value: function clearMenus(event) {
- if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) {
- return;
- }
-
- var openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);
-
- var _iterator15 = _createForOfIteratorHelper(openToggles),
- _step15;
-
- try {
- for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
- var toggle = _step15.value;
- var context = Dropdown.getInstance(toggle);
-
- if (!context || context._config.autoClose === false) {
- continue;
- }
-
- var composedPath = event.composedPath();
- var isMenuTarget = composedPath.includes(context._menu);
-
- if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {
- continue;
- } // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu
-
-
- if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {
- continue;
- }
-
- var relatedTarget = {
- relatedTarget: context._element
- };
-
- if (event.type === 'click') {
- relatedTarget.clickEvent = event;
- }
-
- context._completeHide(relatedTarget);
- }
- } catch (err) {
- _iterator15.e(err);
- } finally {
- _iterator15.f();
- }
- }
- }, {
- key: "dataApiKeydownHandler",
- value: function dataApiKeydownHandler(event) {
- // If not an UP | DOWN | ESCAPE key => not a dropdown command
- // If input/textarea && if key is other than ESCAPE => not a dropdown command
- var isInput = /input|textarea/i.test(event.target.tagName);
- var isEscapeEvent = event.key === ESCAPE_KEY$2;
- var isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);
-
- if (!isUpOrDownEvent && !isEscapeEvent) {
- return;
- }
-
- if (isInput && !isEscapeEvent) {
- return;
- }
-
- event.preventDefault();
- var getToggleButton = SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode);
- var instance = Dropdown.getOrCreateInstance(getToggleButton);
-
- if (isUpOrDownEvent) {
- event.stopPropagation();
- instance.show();
-
- instance._selectMenuItem(event);
-
- return;
- }
-
- if (instance._isShown()) {
- // else is escape and we check if it is shown
- event.stopPropagation();
- instance.hide();
- getToggleButton.focus();
- }
- }
- }]);
-
- return Dropdown;
- }(BaseComponent);
- /**
- * Data API implementation
- */
-
-
- EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);
- EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
- EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);
- EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
- EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {
- event.preventDefault();
- Dropdown.getOrCreateInstance(this).toggle();
- });
- /**
- * jQuery
- */
-
- defineJQueryPlugin(Dropdown);
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v5.2.0): util/scrollBar.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- /**
- * Constants
- */
-
- var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
- var SELECTOR_STICKY_CONTENT = '.sticky-top';
- var PROPERTY_PADDING = 'padding-right';
- var PROPERTY_MARGIN = 'margin-right';
- /**
- * Class definition
- */
-
- var ScrollBarHelper = /*#__PURE__*/function () {
- function ScrollBarHelper() {
- _classCallCheck(this, ScrollBarHelper);
-
- this._element = document.body;
- } // Public
-
-
- _createClass(ScrollBarHelper, [{
- key: "getWidth",
- value: function getWidth() {
- // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes
- var documentWidth = document.documentElement.clientWidth;
- return Math.abs(window.innerWidth - documentWidth);
- }
- }, {
- key: "hide",
- value: function hide() {
- var width = this.getWidth();
-
- this._disableOverFlow(); // give padding to element to balance the hidden scrollbar width
-
-
- this._setElementAttributes(this._element, PROPERTY_PADDING, function (calculatedValue) {
- return calculatedValue + width;
- }); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth
-
-
- this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, function (calculatedValue) {
- return calculatedValue + width;
- });
-
- this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, function (calculatedValue) {
- return calculatedValue - width;
- });
- }
- }, {
- key: "reset",
- value: function reset() {
- this._resetElementAttributes(this._element, 'overflow');
-
- this._resetElementAttributes(this._element, PROPERTY_PADDING);
-
- this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);
-
- this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);
- }
- }, {
- key: "isOverflowing",
- value: function isOverflowing() {
- return this.getWidth() > 0;
- } // Private
-
- }, {
- key: "_disableOverFlow",
- value: function _disableOverFlow() {
- this._saveInitialAttribute(this._element, 'overflow');
-
- this._element.style.overflow = 'hidden';
- }
- }, {
- key: "_setElementAttributes",
- value: function _setElementAttributes(selector, styleProperty, callback) {
- var _this17 = this;
-
- var scrollbarWidth = this.getWidth();
-
- var manipulationCallBack = function manipulationCallBack(element) {
- if (element !== _this17._element && window.innerWidth > element.clientWidth + scrollbarWidth) {
- return;
- }
-
- _this17._saveInitialAttribute(element, styleProperty);
-
- var calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);
- element.style.setProperty(styleProperty, "".concat(callback(Number.parseFloat(calculatedValue)), "px"));
- };
-
- this._applyManipulationCallback(selector, manipulationCallBack);
- }
- }, {
- key: "_saveInitialAttribute",
- value: function _saveInitialAttribute(element, styleProperty) {
- var actualValue = element.style.getPropertyValue(styleProperty);
-
- if (actualValue) {
- Manipulator.setDataAttribute(element, styleProperty, actualValue);
- }
- }
- }, {
- key: "_resetElementAttributes",
- value: function _resetElementAttributes(selector, styleProperty) {
- var manipulationCallBack = function manipulationCallBack(element) {
- var value = Manipulator.getDataAttribute(element, styleProperty); // We only want to remove the property if the value is `null`; the value can also be zero
-
- if (value === null) {
- element.style.removeProperty(styleProperty);
- return;
- }
-
- Manipulator.removeDataAttribute(element, styleProperty);
- element.style.setProperty(styleProperty, value);
- };
-
- this._applyManipulationCallback(selector, manipulationCallBack);
- }
- }, {
- key: "_applyManipulationCallback",
- value: function _applyManipulationCallback(selector, callBack) {
- if (isElement(selector)) {
- callBack(selector);
- return;
- }
-
- var _iterator16 = _createForOfIteratorHelper(SelectorEngine.find(selector, this._element)),
- _step16;
-
- try {
- for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
- var sel = _step16.value;
- callBack(sel);
- }
- } catch (err) {
- _iterator16.e(err);
- } finally {
- _iterator16.f();
- }
- }
- }]);
-
- return ScrollBarHelper;
- }();
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v5.2.0): util/backdrop.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- /**
- * Constants
- */
-
-
- var NAME$9 = 'backdrop';
- var CLASS_NAME_FADE$4 = 'fade';
- var CLASS_NAME_SHOW$5 = 'show';
- var EVENT_MOUSEDOWN = "mousedown.bs.".concat(NAME$9);
- var Default$8 = {
- className: 'modal-backdrop',
- clickCallback: null,
- isAnimated: false,
- isVisible: true,
- // if false, we use the backdrop helper without adding any element to the dom
- rootElement: 'body' // give the choice to place backdrop under different elements
-
- };
- var DefaultType$8 = {
- className: 'string',
- clickCallback: '(function|null)',
- isAnimated: 'boolean',
- isVisible: 'boolean',
- rootElement: '(element|string)'
- };
- /**
- * Class definition
- */
-
- var Backdrop = /*#__PURE__*/function (_Config3) {
- _inherits(Backdrop, _Config3);
-
- var _super8 = _createSuper(Backdrop);
-
- function Backdrop(config) {
- var _this18;
-
- _classCallCheck(this, Backdrop);
-
- _this18 = _super8.call(this);
- _this18._config = _this18._getConfig(config);
- _this18._isAppended = false;
- _this18._element = null;
- return _this18;
- } // Getters
-
-
- _createClass(Backdrop, [{
- key: "show",
- value: // Public
- function show(callback) {
- if (!this._config.isVisible) {
- execute(callback);
- return;
- }
-
- this._append();
-
- var element = this._getElement();
-
- if (this._config.isAnimated) {
- reflow(element);
- }
-
- element.classList.add(CLASS_NAME_SHOW$5);
-
- this._emulateAnimation(function () {
- execute(callback);
- });
- }
- }, {
- key: "hide",
- value: function hide(callback) {
- var _this19 = this;
-
- if (!this._config.isVisible) {
- execute(callback);
- return;
- }
-
- this._getElement().classList.remove(CLASS_NAME_SHOW$5);
-
- this._emulateAnimation(function () {
- _this19.dispose();
-
- execute(callback);
- });
- }
- }, {
- key: "dispose",
- value: function dispose() {
- if (!this._isAppended) {
- return;
- }
-
- EventHandler.off(this._element, EVENT_MOUSEDOWN);
-
- this._element.remove();
-
- this._isAppended = false;
- } // Private
-
- }, {
- key: "_getElement",
- value: function _getElement() {
- if (!this._element) {
- var backdrop = document.createElement('div');
- backdrop.className = this._config.className;
-
- if (this._config.isAnimated) {
- backdrop.classList.add(CLASS_NAME_FADE$4);
- }
-
- this._element = backdrop;
- }
-
- return this._element;
- }
- }, {
- key: "_configAfterMerge",
- value: function _configAfterMerge(config) {
- // use getElement() with the default "body" to get a fresh Element on each instantiation
- config.rootElement = getElement(config.rootElement);
- return config;
- }
- }, {
- key: "_append",
- value: function _append() {
- var _this20 = this;
-
- if (this._isAppended) {
- return;
- }
-
- var element = this._getElement();
-
- this._config.rootElement.append(element);
-
- EventHandler.on(element, EVENT_MOUSEDOWN, function () {
- execute(_this20._config.clickCallback);
- });
- this._isAppended = true;
- }
- }, {
- key: "_emulateAnimation",
- value: function _emulateAnimation(callback) {
- executeAfterTransition(callback, this._getElement(), this._config.isAnimated);
- }
- }], [{
- key: "Default",
- get: function get() {
- return Default$8;
- }
- }, {
- key: "DefaultType",
- get: function get() {
- return DefaultType$8;
- }
- }, {
- key: "NAME",
- get: function get() {
- return NAME$9;
- }
- }]);
-
- return Backdrop;
- }(Config);
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v5.2.0): util/focustrap.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- /**
- * Constants
- */
-
-
- var NAME$8 = 'focustrap';
- var DATA_KEY$5 = 'bs.focustrap';
- var EVENT_KEY$5 = ".".concat(DATA_KEY$5);
- var EVENT_FOCUSIN$2 = "focusin".concat(EVENT_KEY$5);
- var EVENT_KEYDOWN_TAB = "keydown.tab".concat(EVENT_KEY$5);
- var TAB_KEY = 'Tab';
- var TAB_NAV_FORWARD = 'forward';
- var TAB_NAV_BACKWARD = 'backward';
- var Default$7 = {
- autofocus: true,
- trapElement: null // The element to trap focus inside of
-
- };
- var DefaultType$7 = {
- autofocus: 'boolean',
- trapElement: 'element'
- };
- /**
- * Class definition
- */
-
- var FocusTrap = /*#__PURE__*/function (_Config4) {
- _inherits(FocusTrap, _Config4);
-
- var _super9 = _createSuper(FocusTrap);
-
- function FocusTrap(config) {
- var _this21;
-
- _classCallCheck(this, FocusTrap);
-
- _this21 = _super9.call(this);
- _this21._config = _this21._getConfig(config);
- _this21._isActive = false;
- _this21._lastTabNavDirection = null;
- return _this21;
- } // Getters
-
-
- _createClass(FocusTrap, [{
- key: "activate",
- value: // Public
- function activate() {
- var _this22 = this;
-
- if (this._isActive) {
- return;
- }
-
- if (this._config.autofocus) {
- this._config.trapElement.focus();
- }
-
- EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop
-
- EventHandler.on(document, EVENT_FOCUSIN$2, function (event) {
- return _this22._handleFocusin(event);
- });
- EventHandler.on(document, EVENT_KEYDOWN_TAB, function (event) {
- return _this22._handleKeydown(event);
- });
- this._isActive = true;
- }
- }, {
- key: "deactivate",
- value: function deactivate() {
- if (!this._isActive) {
- return;
- }
-
- this._isActive = false;
- EventHandler.off(document, EVENT_KEY$5);
- } // Private
-
- }, {
- key: "_handleFocusin",
- value: function _handleFocusin(event) {
- var trapElement = this._config.trapElement;
-
- if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {
- return;
- }
-
- var elements = SelectorEngine.focusableChildren(trapElement);
-
- if (elements.length === 0) {
- trapElement.focus();
- } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {
- elements[elements.length - 1].focus();
- } else {
- elements[0].focus();
- }
- }
- }, {
- key: "_handleKeydown",
- value: function _handleKeydown(event) {
- if (event.key !== TAB_KEY) {
- return;
- }
-
- this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;
- }
- }], [{
- key: "Default",
- get: function get() {
- return Default$7;
- }
- }, {
- key: "DefaultType",
- get: function get() {
- return DefaultType$7;
- }
- }, {
- key: "NAME",
- get: function get() {
- return NAME$8;
- }
- }]);
-
- return FocusTrap;
- }(Config);
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v5.2.0): modal.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- /**
- * Constants
- */
-
-
- var NAME$7 = 'modal';
- var DATA_KEY$4 = 'bs.modal';
- var EVENT_KEY$4 = ".".concat(DATA_KEY$4);
- var DATA_API_KEY$2 = '.data-api';
- var ESCAPE_KEY$1 = 'Escape';
- var EVENT_HIDE$4 = "hide".concat(EVENT_KEY$4);
- var EVENT_HIDE_PREVENTED$1 = "hidePrevented".concat(EVENT_KEY$4);
- var EVENT_HIDDEN$4 = "hidden".concat(EVENT_KEY$4);
- var EVENT_SHOW$4 = "show".concat(EVENT_KEY$4);
- var EVENT_SHOWN$4 = "shown".concat(EVENT_KEY$4);
- var EVENT_RESIZE$1 = "resize".concat(EVENT_KEY$4);
- var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss".concat(EVENT_KEY$4);
- var EVENT_KEYDOWN_DISMISS$1 = "keydown.dismiss".concat(EVENT_KEY$4);
- var EVENT_CLICK_DATA_API$2 = "click".concat(EVENT_KEY$4).concat(DATA_API_KEY$2);
- var CLASS_NAME_OPEN = 'modal-open';
- var CLASS_NAME_FADE$3 = 'fade';
- var CLASS_NAME_SHOW$4 = 'show';
- var CLASS_NAME_STATIC = 'modal-static';
- var OPEN_SELECTOR$1 = '.modal.show';
- var SELECTOR_DIALOG = '.modal-dialog';
- var SELECTOR_MODAL_BODY = '.modal-body';
- var SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]';
- var Default$6 = {
- backdrop: true,
- focus: true,
- keyboard: true
- };
- var DefaultType$6 = {
- backdrop: '(boolean|string)',
- focus: 'boolean',
- keyboard: 'boolean'
- };
- /**
- * Class definition
- */
-
- var Modal = /*#__PURE__*/function (_BaseComponent6) {
- _inherits(Modal, _BaseComponent6);
-
- var _super10 = _createSuper(Modal);
-
- function Modal(element, config) {
- var _this23;
-
- _classCallCheck(this, Modal);
-
- _this23 = _super10.call(this, element, config);
- _this23._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, _this23._element);
- _this23._backdrop = _this23._initializeBackDrop();
- _this23._focustrap = _this23._initializeFocusTrap();
- _this23._isShown = false;
- _this23._isTransitioning = false;
- _this23._scrollBar = new ScrollBarHelper();
-
- _this23._addEventListeners();
-
- return _this23;
- } // Getters
-
-
- _createClass(Modal, [{
- key: "toggle",
- value: // Public
- function toggle(relatedTarget) {
- return this._isShown ? this.hide() : this.show(relatedTarget);
- }
- }, {
- key: "show",
- value: function show(relatedTarget) {
- var _this24 = this;
-
- if (this._isShown || this._isTransitioning) {
- return;
- }
-
- var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {
- relatedTarget: relatedTarget
- });
-
- if (showEvent.defaultPrevented) {
- return;
- }
-
- this._isShown = true;
- this._isTransitioning = true;
-
- this._scrollBar.hide();
-
- document.body.classList.add(CLASS_NAME_OPEN);
-
- this._adjustDialog();
-
- this._backdrop.show(function () {
- return _this24._showElement(relatedTarget);
- });
- }
- }, {
- key: "hide",
- value: function hide() {
- var _this25 = this;
-
- if (!this._isShown || this._isTransitioning) {
- return;
- }
-
- var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);
-
- if (hideEvent.defaultPrevented) {
- return;
- }
-
- this._isShown = false;
- this._isTransitioning = true;
-
- this._focustrap.deactivate();
-
- this._element.classList.remove(CLASS_NAME_SHOW$4);
-
- this._queueCallback(function () {
- return _this25._hideModal();
- }, this._element, this._isAnimated());
- }
- }, {
- key: "dispose",
- value: function dispose() {
- for (var _i7 = 0, _arr2 = [window, this._dialog]; _i7 < _arr2.length; _i7++) {
- var htmlElement = _arr2[_i7];
- EventHandler.off(htmlElement, EVENT_KEY$4);
- }
-
- this._backdrop.dispose();
-
- this._focustrap.deactivate();
-
- _get(_getPrototypeOf(Modal.prototype), "dispose", this).call(this);
- }
- }, {
- key: "handleUpdate",
- value: function handleUpdate() {
- this._adjustDialog();
- } // Private
-
- }, {
- key: "_initializeBackDrop",
- value: function _initializeBackDrop() {
- return new Backdrop({
- isVisible: Boolean(this._config.backdrop),
- // 'static' option will be translated to true, and booleans will keep their value,
- isAnimated: this._isAnimated()
- });
- }
- }, {
- key: "_initializeFocusTrap",
- value: function _initializeFocusTrap() {
- return new FocusTrap({
- trapElement: this._element
- });
- }
- }, {
- key: "_showElement",
- value: function _showElement(relatedTarget) {
- var _this26 = this;
-
- // try to append dynamic modal
- if (!document.body.contains(this._element)) {
- document.body.append(this._element);
- }
-
- this._element.style.display = 'block';
-
- this._element.removeAttribute('aria-hidden');
-
- this._element.setAttribute('aria-modal', true);
-
- this._element.setAttribute('role', 'dialog');
-
- this._element.scrollTop = 0;
- var modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);
-
- if (modalBody) {
- modalBody.scrollTop = 0;
- }
-
- reflow(this._element);
-
- this._element.classList.add(CLASS_NAME_SHOW$4);
-
- var transitionComplete = function transitionComplete() {
- if (_this26._config.focus) {
- _this26._focustrap.activate();
- }
-
- _this26._isTransitioning = false;
- EventHandler.trigger(_this26._element, EVENT_SHOWN$4, {
- relatedTarget: relatedTarget
- });
- };
-
- this._queueCallback(transitionComplete, this._dialog, this._isAnimated());
- }
- }, {
- key: "_addEventListeners",
- value: function _addEventListeners() {
- var _this27 = this;
-
- EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, function (event) {
- if (event.key !== ESCAPE_KEY$1) {
- return;
- }
-
- if (_this27._config.keyboard) {
- event.preventDefault();
-
- _this27.hide();
-
- return;
- }
-
- _this27._triggerBackdropTransition();
- });
- EventHandler.on(window, EVENT_RESIZE$1, function () {
- if (_this27._isShown && !_this27._isTransitioning) {
- _this27._adjustDialog();
- }
- });
- EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, function (event) {
- if (event.target !== event.currentTarget) {
- // click is inside modal-dialog
- return;
- }
-
- if (_this27._config.backdrop === 'static') {
- _this27._triggerBackdropTransition();
-
- return;
- }
-
- if (_this27._config.backdrop) {
- _this27.hide();
- }
- });
- }
- }, {
- key: "_hideModal",
- value: function _hideModal() {
- var _this28 = this;
-
- this._element.style.display = 'none';
-
- this._element.setAttribute('aria-hidden', true);
-
- this._element.removeAttribute('aria-modal');
-
- this._element.removeAttribute('role');
-
- this._isTransitioning = false;
-
- this._backdrop.hide(function () {
- document.body.classList.remove(CLASS_NAME_OPEN);
-
- _this28._resetAdjustments();
-
- _this28._scrollBar.reset();
-
- EventHandler.trigger(_this28._element, EVENT_HIDDEN$4);
- });
- }
- }, {
- key: "_isAnimated",
- value: function _isAnimated() {
- return this._element.classList.contains(CLASS_NAME_FADE$3);
- }
- }, {
- key: "_triggerBackdropTransition",
- value: function _triggerBackdropTransition() {
- var _this29 = this;
-
- var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);
-
- if (hideEvent.defaultPrevented) {
- return;
- }
-
- var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
- var initialOverflowY = this._element.style.overflowY; // return if the following background transition hasn't yet completed
-
- if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {
- return;
- }
-
- if (!isModalOverflowing) {
- this._element.style.overflowY = 'hidden';
- }
-
- this._element.classList.add(CLASS_NAME_STATIC);
-
- this._queueCallback(function () {
- _this29._element.classList.remove(CLASS_NAME_STATIC);
-
- _this29._queueCallback(function () {
- _this29._element.style.overflowY = initialOverflowY;
- }, _this29._dialog);
- }, this._dialog);
-
- this._element.focus();
- }
- /**
- * The following methods are used to handle overflowing modals
- */
-
- }, {
- key: "_adjustDialog",
- value: function _adjustDialog() {
- var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
-
- var scrollbarWidth = this._scrollBar.getWidth();
-
- var isBodyOverflowing = scrollbarWidth > 0;
-
- if (isBodyOverflowing && !isModalOverflowing) {
- var property = isRTL() ? 'paddingLeft' : 'paddingRight';
- this._element.style[property] = "".concat(scrollbarWidth, "px");
- }
-
- if (!isBodyOverflowing && isModalOverflowing) {
- var _property = isRTL() ? 'paddingRight' : 'paddingLeft';
-
- this._element.style[_property] = "".concat(scrollbarWidth, "px");
- }
- }
- }, {
- key: "_resetAdjustments",
- value: function _resetAdjustments() {
- this._element.style.paddingLeft = '';
- this._element.style.paddingRight = '';
- } // Static
-
- }], [{
- key: "Default",
- get: function get() {
- return Default$6;
- }
- }, {
- key: "DefaultType",
- get: function get() {
- return DefaultType$6;
- }
- }, {
- key: "NAME",
- get: function get() {
- return NAME$7;
- }
- }, {
- key: "jQueryInterface",
- value: function jQueryInterface(config, relatedTarget) {
- return this.each(function () {
- var data = Modal.getOrCreateInstance(this, config);
-
- if (typeof config !== 'string') {
- return;
- }
-
- if (typeof data[config] === 'undefined') {
- throw new TypeError("No method named \"".concat(config, "\""));
- }
-
- data[config](relatedTarget);
- });
- }
- }]);
-
- return Modal;
- }(BaseComponent);
- /**
- * Data API implementation
- */
-
-
- EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {
- var _this30 = this;
-
- var target = getElementFromSelector(this);
-
- if (['A', 'AREA'].includes(this.tagName)) {
- event.preventDefault();
- }
-
- EventHandler.one(target, EVENT_SHOW$4, function (showEvent) {
- if (showEvent.defaultPrevented) {
- // only register focus restorer if modal will actually get shown
- return;
- }
-
- EventHandler.one(target, EVENT_HIDDEN$4, function () {
- if (isVisible(_this30)) {
- _this30.focus();
- }
- });
- }); // avoid conflict when clicking modal toggler while another one is open
-
- var alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);
-
- if (alreadyOpen) {
- Modal.getInstance(alreadyOpen).hide();
- }
-
- var data = Modal.getOrCreateInstance(target);
- data.toggle(this);
- });
- enableDismissTrigger(Modal);
- /**
- * jQuery
- */
-
- defineJQueryPlugin(Modal);
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v5.2.0): offcanvas.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- /**
- * Constants
- */
-
- var NAME$6 = 'offcanvas';
- var DATA_KEY$3 = 'bs.offcanvas';
- var EVENT_KEY$3 = ".".concat(DATA_KEY$3);
- var DATA_API_KEY$1 = '.data-api';
- var EVENT_LOAD_DATA_API$2 = "load".concat(EVENT_KEY$3).concat(DATA_API_KEY$1);
- var ESCAPE_KEY = 'Escape';
- var CLASS_NAME_SHOW$3 = 'show';
- var CLASS_NAME_SHOWING$1 = 'showing';
- var CLASS_NAME_HIDING = 'hiding';
- var CLASS_NAME_BACKDROP = 'offcanvas-backdrop';
- var OPEN_SELECTOR = '.offcanvas.show';
- var EVENT_SHOW$3 = "show".concat(EVENT_KEY$3);
- var EVENT_SHOWN$3 = "shown".concat(EVENT_KEY$3);
- var EVENT_HIDE$3 = "hide".concat(EVENT_KEY$3);
- var EVENT_HIDE_PREVENTED = "hidePrevented".concat(EVENT_KEY$3);
- var EVENT_HIDDEN$3 = "hidden".concat(EVENT_KEY$3);
- var EVENT_RESIZE = "resize".concat(EVENT_KEY$3);
- var EVENT_CLICK_DATA_API$1 = "click".concat(EVENT_KEY$3).concat(DATA_API_KEY$1);
- var EVENT_KEYDOWN_DISMISS = "keydown.dismiss".concat(EVENT_KEY$3);
- var SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]';
- var Default$5 = {
- backdrop: true,
- keyboard: true,
- scroll: false
- };
- var DefaultType$5 = {
- backdrop: '(boolean|string)',
- keyboard: 'boolean',
- scroll: 'boolean'
- };
- /**
- * Class definition
- */
-
- var Offcanvas = /*#__PURE__*/function (_BaseComponent7) {
- _inherits(Offcanvas, _BaseComponent7);
-
- var _super11 = _createSuper(Offcanvas);
-
- function Offcanvas(element, config) {
- var _this31;
-
- _classCallCheck(this, Offcanvas);
-
- _this31 = _super11.call(this, element, config);
- _this31._isShown = false;
- _this31._backdrop = _this31._initializeBackDrop();
- _this31._focustrap = _this31._initializeFocusTrap();
-
- _this31._addEventListeners();
-
- return _this31;
- } // Getters
-
-
- _createClass(Offcanvas, [{
- key: "toggle",
- value: // Public
- function toggle(relatedTarget) {
- return this._isShown ? this.hide() : this.show(relatedTarget);
- }
- }, {
- key: "show",
- value: function show(relatedTarget) {
- var _this32 = this;
-
- if (this._isShown) {
- return;
- }
-
- var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {
- relatedTarget: relatedTarget
- });
-
- if (showEvent.defaultPrevented) {
- return;
- }
-
- this._isShown = true;
-
- this._backdrop.show();
-
- if (!this._config.scroll) {
- new ScrollBarHelper().hide();
- }
-
- this._element.setAttribute('aria-modal', true);
-
- this._element.setAttribute('role', 'dialog');
-
- this._element.classList.add(CLASS_NAME_SHOWING$1);
-
- var completeCallBack = function completeCallBack() {
- if (!_this32._config.scroll || _this32._config.backdrop) {
- _this32._focustrap.activate();
- }
-
- _this32._element.classList.add(CLASS_NAME_SHOW$3);
-
- _this32._element.classList.remove(CLASS_NAME_SHOWING$1);
-
- EventHandler.trigger(_this32._element, EVENT_SHOWN$3, {
- relatedTarget: relatedTarget
- });
- };
-
- this._queueCallback(completeCallBack, this._element, true);
- }
- }, {
- key: "hide",
- value: function hide() {
- var _this33 = this;
-
- if (!this._isShown) {
- return;
- }
-
- var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);
-
- if (hideEvent.defaultPrevented) {
- return;
- }
-
- this._focustrap.deactivate();
-
- this._element.blur();
-
- this._isShown = false;
-
- this._element.classList.add(CLASS_NAME_HIDING);
-
- this._backdrop.hide();
-
- var completeCallback = function completeCallback() {
- _this33._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);
-
- _this33._element.removeAttribute('aria-modal');
-
- _this33._element.removeAttribute('role');
-
- if (!_this33._config.scroll) {
- new ScrollBarHelper().reset();
- }
-
- EventHandler.trigger(_this33._element, EVENT_HIDDEN$3);
- };
-
- this._queueCallback(completeCallback, this._element, true);
- }
- }, {
- key: "dispose",
- value: function dispose() {
- this._backdrop.dispose();
-
- this._focustrap.deactivate();
-
- _get(_getPrototypeOf(Offcanvas.prototype), "dispose", this).call(this);
- } // Private
-
- }, {
- key: "_initializeBackDrop",
- value: function _initializeBackDrop() {
- var _this34 = this;
-
- var clickCallback = function clickCallback() {
- if (_this34._config.backdrop === 'static') {
- EventHandler.trigger(_this34._element, EVENT_HIDE_PREVENTED);
- return;
- }
-
- _this34.hide();
- }; // 'static' option will be translated to true, and booleans will keep their value
-
-
- var isVisible = Boolean(this._config.backdrop);
- return new Backdrop({
- className: CLASS_NAME_BACKDROP,
- isVisible: isVisible,
- isAnimated: true,
- rootElement: this._element.parentNode,
- clickCallback: isVisible ? clickCallback : null
- });
- }
- }, {
- key: "_initializeFocusTrap",
- value: function _initializeFocusTrap() {
- return new FocusTrap({
- trapElement: this._element
- });
- }
- }, {
- key: "_addEventListeners",
- value: function _addEventListeners() {
- var _this35 = this;
-
- EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, function (event) {
- if (event.key !== ESCAPE_KEY) {
- return;
- }
-
- if (!_this35._config.keyboard) {
- EventHandler.trigger(_this35._element, EVENT_HIDE_PREVENTED);
- return;
- }
-
- _this35.hide();
- });
- } // Static
-
- }], [{
- key: "Default",
- get: function get() {
- return Default$5;
- }
- }, {
- key: "DefaultType",
- get: function get() {
- return DefaultType$5;
- }
- }, {
- key: "NAME",
- get: function get() {
- return NAME$6;
- }
- }, {
- key: "jQueryInterface",
- value: function jQueryInterface(config) {
- return this.each(function () {
- var data = Offcanvas.getOrCreateInstance(this, config);
-
- if (typeof config !== 'string') {
- return;
- }
-
- if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
- throw new TypeError("No method named \"".concat(config, "\""));
- }
-
- data[config](this);
- });
- }
- }]);
-
- return Offcanvas;
- }(BaseComponent);
- /**
- * Data API implementation
- */
-
-
- EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {
- var _this36 = this;
-
- var target = getElementFromSelector(this);
-
- if (['A', 'AREA'].includes(this.tagName)) {
- event.preventDefault();
- }
-
- if (isDisabled(this)) {
- return;
- }
-
- EventHandler.one(target, EVENT_HIDDEN$3, function () {
- // focus on trigger when it is closed
- if (isVisible(_this36)) {
- _this36.focus();
- }
- }); // avoid conflict when clicking a toggler of an offcanvas, while another is open
-
- var alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);
-
- if (alreadyOpen && alreadyOpen !== target) {
- Offcanvas.getInstance(alreadyOpen).hide();
- }
-
- var data = Offcanvas.getOrCreateInstance(target);
- data.toggle(this);
- });
- EventHandler.on(window, EVENT_LOAD_DATA_API$2, function () {
- var _iterator17 = _createForOfIteratorHelper(SelectorEngine.find(OPEN_SELECTOR)),
- _step17;
-
- try {
- for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {
- var selector = _step17.value;
- Offcanvas.getOrCreateInstance(selector).show();
- }
- } catch (err) {
- _iterator17.e(err);
- } finally {
- _iterator17.f();
- }
- });
- EventHandler.on(window, EVENT_RESIZE, function () {
- var _iterator18 = _createForOfIteratorHelper(SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')),
- _step18;
-
- try {
- for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {
- var element = _step18.value;
-
- if (getComputedStyle(element).position !== 'fixed') {
- Offcanvas.getOrCreateInstance(element).hide();
- }
- }
- } catch (err) {
- _iterator18.e(err);
- } finally {
- _iterator18.f();
- }
- });
- enableDismissTrigger(Offcanvas);
- /**
- * jQuery
- */
-
- defineJQueryPlugin(Offcanvas);
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v5.2.0): util/sanitizer.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- var uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);
- var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
- /**
- * A pattern that recognizes a commonly useful subset of URLs that are safe.
- *
- * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts
- */
-
- var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;
- /**
- * A pattern that matches safe data URLs. Only matches image, video and audio types.
- *
- * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts
- */
-
- var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i;
-
- var allowedAttribute = function allowedAttribute(attribute, allowedAttributeList) {
- var attributeName = attribute.nodeName.toLowerCase();
-
- if (allowedAttributeList.includes(attributeName)) {
- if (uriAttributes.has(attributeName)) {
- return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue));
- }
-
- return true;
- } // Check if a regular expression validates the attribute.
-
-
- return allowedAttributeList.filter(function (attributeRegex) {
- return attributeRegex instanceof RegExp;
- }).some(function (regex) {
- return regex.test(attributeName);
- });
- };
-
- var DefaultAllowlist = {
- // Global attributes allowed on any supplied element below.
- '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
- 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: []
- };
-
- function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {
- var _ref7;
-
- if (!unsafeHtml.length) {
- return unsafeHtml;
- }
-
- if (sanitizeFunction && typeof sanitizeFunction === 'function') {
- return sanitizeFunction(unsafeHtml);
- }
-
- var domParser = new window.DOMParser();
- var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
-
- var elements = (_ref7 = []).concat.apply(_ref7, _toConsumableArray(createdDocument.body.querySelectorAll('*')));
-
- var _iterator19 = _createForOfIteratorHelper(elements),
- _step19;
-
- try {
- for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) {
- var _ref8;
-
- var element = _step19.value;
- var elementName = element.nodeName.toLowerCase();
-
- if (!Object.keys(allowList).includes(elementName)) {
- element.remove();
- continue;
- }
-
- var attributeList = (_ref8 = []).concat.apply(_ref8, _toConsumableArray(element.attributes));
-
- var allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);
-
- var _iterator20 = _createForOfIteratorHelper(attributeList),
- _step20;
-
- try {
- for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) {
- var attribute = _step20.value;
-
- if (!allowedAttribute(attribute, allowedAttributes)) {
- element.removeAttribute(attribute.nodeName);
- }
- }
- } catch (err) {
- _iterator20.e(err);
- } finally {
- _iterator20.f();
- }
- }
- } catch (err) {
- _iterator19.e(err);
- } finally {
- _iterator19.f();
- }
-
- return createdDocument.body.innerHTML;
- }
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v5.2.0): util/template-factory.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- /**
- * Constants
- */
-
-
- var NAME$5 = 'TemplateFactory';
- var Default$4 = {
- allowList: DefaultAllowlist,
- content: {},
- // { selector : text , selector2 : text2 , }
- extraClass: '',
- html: false,
- sanitize: true,
- sanitizeFn: null,
- template: ''
- };
- var DefaultType$4 = {
- allowList: 'object',
- content: 'object',
- extraClass: '(string|function)',
- html: 'boolean',
- sanitize: 'boolean',
- sanitizeFn: '(null|function)',
- template: 'string'
- };
- var DefaultContentType = {
- entry: '(string|element|function|null)',
- selector: '(string|element)'
- };
- /**
- * Class definition
- */
-
- var TemplateFactory = /*#__PURE__*/function (_Config5) {
- _inherits(TemplateFactory, _Config5);
-
- var _super12 = _createSuper(TemplateFactory);
-
- function TemplateFactory(config) {
- var _this37;
-
- _classCallCheck(this, TemplateFactory);
-
- _this37 = _super12.call(this);
- _this37._config = _this37._getConfig(config);
- return _this37;
- } // Getters
-
-
- _createClass(TemplateFactory, [{
- key: "getContent",
- value: // Public
- function getContent() {
- var _this38 = this;
-
- return Object.values(this._config.content).map(function (config) {
- return _this38._resolvePossibleFunction(config);
- }).filter(Boolean);
- }
- }, {
- key: "hasContent",
- value: function hasContent() {
- return this.getContent().length > 0;
- }
- }, {
- key: "changeContent",
- value: function changeContent(content) {
- this._checkContent(content);
-
- this._config.content = _objectSpread(_objectSpread({}, this._config.content), content);
- return this;
- }
- }, {
- key: "toHtml",
- value: function toHtml() {
- var templateWrapper = document.createElement('div');
- templateWrapper.innerHTML = this._maybeSanitize(this._config.template);
-
- for (var _i8 = 0, _Object$entries2 = Object.entries(this._config.content); _i8 < _Object$entries2.length; _i8++) {
- var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i8], 2),
- selector = _Object$entries2$_i[0],
- text = _Object$entries2$_i[1];
-
- this._setContent(templateWrapper, text, selector);
- }
-
- var template = templateWrapper.children[0];
-
- var extraClass = this._resolvePossibleFunction(this._config.extraClass);
-
- if (extraClass) {
- var _template$classList;
-
- (_template$classList = template.classList).add.apply(_template$classList, _toConsumableArray(extraClass.split(' ')));
- }
-
- return template;
- } // Private
-
- }, {
- key: "_typeCheckConfig",
- value: function _typeCheckConfig(config) {
- _get(_getPrototypeOf(TemplateFactory.prototype), "_typeCheckConfig", this).call(this, config);
-
- this._checkContent(config.content);
- }
- }, {
- key: "_checkContent",
- value: function _checkContent(arg) {
- for (var _i9 = 0, _Object$entries3 = Object.entries(arg); _i9 < _Object$entries3.length; _i9++) {
- var _Object$entries3$_i = _slicedToArray(_Object$entries3[_i9], 2),
- selector = _Object$entries3$_i[0],
- content = _Object$entries3$_i[1];
-
- _get(_getPrototypeOf(TemplateFactory.prototype), "_typeCheckConfig", this).call(this, {
- selector: selector,
- entry: content
- }, DefaultContentType);
- }
- }
- }, {
- key: "_setContent",
- value: function _setContent(template, content, selector) {
- var templateElement = SelectorEngine.findOne(selector, template);
-
- if (!templateElement) {
- return;
- }
-
- content = this._resolvePossibleFunction(content);
-
- if (!content) {
- templateElement.remove();
- return;
- }
-
- if (isElement(content)) {
- this._putElementInTemplate(getElement(content), templateElement);
-
- return;
- }
-
- if (this._config.html) {
- templateElement.innerHTML = this._maybeSanitize(content);
- return;
- }
-
- templateElement.textContent = content;
- }
- }, {
- key: "_maybeSanitize",
- value: function _maybeSanitize(arg) {
- return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;
- }
- }, {
- key: "_resolvePossibleFunction",
- value: function _resolvePossibleFunction(arg) {
- return typeof arg === 'function' ? arg(this) : arg;
- }
- }, {
- key: "_putElementInTemplate",
- value: function _putElementInTemplate(element, templateElement) {
- if (this._config.html) {
- templateElement.innerHTML = '';
- templateElement.append(element);
- return;
- }
-
- templateElement.textContent = element.textContent;
- }
- }], [{
- key: "Default",
- get: function get() {
- return Default$4;
- }
- }, {
- key: "DefaultType",
- get: function get() {
- return DefaultType$4;
- }
- }, {
- key: "NAME",
- get: function get() {
- return NAME$5;
- }
- }]);
-
- return TemplateFactory;
- }(Config);
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v5.2.0): tooltip.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- /**
- * Constants
- */
-
-
- var NAME$4 = 'tooltip';
- var DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);
- var CLASS_NAME_FADE$2 = 'fade';
- var CLASS_NAME_MODAL = 'modal';
- var CLASS_NAME_SHOW$2 = 'show';
- var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';
- var SELECTOR_MODAL = ".".concat(CLASS_NAME_MODAL);
- var EVENT_MODAL_HIDE = 'hide.bs.modal';
- var TRIGGER_HOVER = 'hover';
- var TRIGGER_FOCUS = 'focus';
- var TRIGGER_CLICK = 'click';
- var TRIGGER_MANUAL = 'manual';
- var EVENT_HIDE$2 = 'hide';
- var EVENT_HIDDEN$2 = 'hidden';
- var EVENT_SHOW$2 = 'show';
- var EVENT_SHOWN$2 = 'shown';
- var EVENT_INSERTED = 'inserted';
- var EVENT_CLICK$1 = 'click';
- var EVENT_FOCUSIN$1 = 'focusin';
- var EVENT_FOCUSOUT$1 = 'focusout';
- var EVENT_MOUSEENTER = 'mouseenter';
- var EVENT_MOUSELEAVE = 'mouseleave';
- var AttachmentMap = {
- AUTO: 'auto',
- TOP: 'top',
- RIGHT: isRTL() ? 'left' : 'right',
- BOTTOM: 'bottom',
- LEFT: isRTL() ? 'right' : 'left'
- };
- var Default$3 = {
- allowList: DefaultAllowlist,
- animation: true,
- boundary: 'clippingParents',
- container: false,
- customClass: '',
- delay: 0,
- fallbackPlacements: ['top', 'right', 'bottom', 'left'],
- html: false,
- offset: [0, 0],
- placement: 'top',
- popperConfig: null,
- sanitize: true,
- sanitizeFn: null,
- selector: false,
- template: '',
- title: '',
- trigger: 'hover focus'
- };
- var DefaultType$3 = {
- allowList: 'object',
- animation: 'boolean',
- boundary: '(string|element)',
- container: '(string|element|boolean)',
- customClass: '(string|function)',
- delay: '(number|object)',
- fallbackPlacements: 'array',
- html: 'boolean',
- offset: '(array|string|function)',
- placement: '(string|function)',
- popperConfig: '(null|object|function)',
- sanitize: 'boolean',
- sanitizeFn: '(null|function)',
- selector: '(string|boolean)',
- template: 'string',
- title: '(string|element|function)',
- trigger: 'string'
- };
- /**
- * Class definition
- */
-
- var Tooltip = /*#__PURE__*/function (_BaseComponent8) {
- _inherits(Tooltip, _BaseComponent8);
-
- var _super13 = _createSuper(Tooltip);
-
- function Tooltip(element, config) {
- var _this39;
-
- _classCallCheck(this, Tooltip);
-
- if (typeof Popper__namespace === 'undefined') {
- throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)');
- }
-
- _this39 = _super13.call(this, element, config); // Private
-
- _this39._isEnabled = true;
- _this39._timeout = 0;
- _this39._isHovered = false;
- _this39._activeTrigger = {};
- _this39._popper = null;
- _this39._templateFactory = null;
- _this39._newContent = null; // Protected
-
- _this39.tip = null;
-
- _this39._setListeners();
-
- return _this39;
- } // Getters
-
-
- _createClass(Tooltip, [{
- key: "enable",
- value: // Public
- function enable() {
- this._isEnabled = true;
- }
- }, {
- key: "disable",
- value: function disable() {
- this._isEnabled = false;
- }
- }, {
- key: "toggleEnabled",
- value: function toggleEnabled() {
- this._isEnabled = !this._isEnabled;
- }
- }, {
- key: "toggle",
- value: function toggle(event) {
- if (!this._isEnabled) {
- return;
- }
-
- if (event) {
- var context = this._initializeOnDelegatedTarget(event);
-
- context._activeTrigger.click = !context._activeTrigger.click;
-
- if (context._isWithActiveTrigger()) {
- context._enter();
- } else {
- context._leave();
- }
-
- return;
- }
-
- if (this._isShown()) {
- this._leave();
-
- return;
- }
-
- this._enter();
- }
- }, {
- key: "dispose",
- value: function dispose() {
- clearTimeout(this._timeout);
- EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
-
- if (this.tip) {
- this.tip.remove();
- }
-
- this._disposePopper();
-
- _get(_getPrototypeOf(Tooltip.prototype), "dispose", this).call(this);
- }
- }, {
- key: "show",
- value: function show() {
- var _this40 = this;
-
- if (this._element.style.display === 'none') {
- throw new Error('Please use show on visible elements');
- }
-
- if (!(this._isWithContent() && this._isEnabled)) {
- return;
- }
-
- var showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));
- var shadowRoot = findShadowRoot(this._element);
-
- var isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);
-
- if (showEvent.defaultPrevented || !isInTheDom) {
- return;
- } // todo v6 remove this OR make it optional
-
-
- if (this.tip) {
- this.tip.remove();
- this.tip = null;
- }
-
- var tip = this._getTipElement();
-
- this._element.setAttribute('aria-describedby', tip.getAttribute('id'));
-
- var container = this._config.container;
-
- if (!this._element.ownerDocument.documentElement.contains(this.tip)) {
- container.append(tip);
- EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));
- }
-
- if (this._popper) {
- this._popper.update();
- } else {
- this._popper = this._createPopper(tip);
- }
-
- tip.classList.add(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we add extra
- // empty mouseover listeners to the body's immediate children;
- // only needed because of broken event delegation on iOS
- // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
-
- if ('ontouchstart' in document.documentElement) {
- var _ref9;
-
- var _iterator21 = _createForOfIteratorHelper((_ref9 = []).concat.apply(_ref9, _toConsumableArray(document.body.children))),
- _step21;
-
- try {
- for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) {
- var element = _step21.value;
- EventHandler.on(element, 'mouseover', noop);
- }
- } catch (err) {
- _iterator21.e(err);
- } finally {
- _iterator21.f();
- }
- }
-
- var complete = function complete() {
- var previousHoverState = _this40._isHovered;
- _this40._isHovered = false;
- EventHandler.trigger(_this40._element, _this40.constructor.eventName(EVENT_SHOWN$2));
-
- if (previousHoverState) {
- _this40._leave();
- }
- };
-
- this._queueCallback(complete, this.tip, this._isAnimated());
- }
- }, {
- key: "hide",
- value: function hide() {
- var _this41 = this;
-
- if (!this._isShown()) {
- return;
- }
-
- var hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));
-
- if (hideEvent.defaultPrevented) {
- return;
- }
-
- var tip = this._getTipElement();
-
- tip.classList.remove(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we remove the extra
- // empty mouseover listeners we added for iOS support
-
- if ('ontouchstart' in document.documentElement) {
- var _ref10;
-
- var _iterator22 = _createForOfIteratorHelper((_ref10 = []).concat.apply(_ref10, _toConsumableArray(document.body.children))),
- _step22;
-
- try {
- for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) {
- var element = _step22.value;
- EventHandler.off(element, 'mouseover', noop);
- }
- } catch (err) {
- _iterator22.e(err);
- } finally {
- _iterator22.f();
- }
- }
-
- this._activeTrigger[TRIGGER_CLICK] = false;
- this._activeTrigger[TRIGGER_FOCUS] = false;
- this._activeTrigger[TRIGGER_HOVER] = false;
- this._isHovered = false;
-
- var complete = function complete() {
- if (_this41._isWithActiveTrigger()) {
- return;
- }
-
- if (!_this41._isHovered) {
- tip.remove();
- }
-
- _this41._element.removeAttribute('aria-describedby');
-
- EventHandler.trigger(_this41._element, _this41.constructor.eventName(EVENT_HIDDEN$2));
-
- _this41._disposePopper();
- };
-
- this._queueCallback(complete, this.tip, this._isAnimated());
- }
- }, {
- key: "update",
- value: function update() {
- if (this._popper) {
- this._popper.update();
- }
- } // Protected
-
- }, {
- key: "_isWithContent",
- value: function _isWithContent() {
- return Boolean(this._getTitle());
- }
- }, {
- key: "_getTipElement",
- value: function _getTipElement() {
- if (!this.tip) {
- this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());
- }
-
- return this.tip;
- }
- }, {
- key: "_createTipElement",
- value: function _createTipElement(content) {
- var tip = this._getTemplateFactory(content).toHtml(); // todo: remove this check on v6
-
-
- if (!tip) {
- return null;
- }
-
- tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2); // todo: on v6 the following can be achieved with CSS only
-
- tip.classList.add("bs-".concat(this.constructor.NAME, "-auto"));
- var tipId = getUID(this.constructor.NAME).toString();
- tip.setAttribute('id', tipId);
-
- if (this._isAnimated()) {
- tip.classList.add(CLASS_NAME_FADE$2);
- }
-
- return tip;
- }
- }, {
- key: "setContent",
- value: function setContent(content) {
- this._newContent = content;
-
- if (this._isShown()) {
- this._disposePopper();
-
- this.show();
- }
- }
- }, {
- key: "_getTemplateFactory",
- value: function _getTemplateFactory(content) {
- if (this._templateFactory) {
- this._templateFactory.changeContent(content);
- } else {
- this._templateFactory = new TemplateFactory(_objectSpread(_objectSpread({}, this._config), {}, {
- // the `content` var has to be after `this._config`
- // to override config.content in case of popover
- content: content,
- extraClass: this._resolvePossibleFunction(this._config.customClass)
- }));
- }
-
- return this._templateFactory;
- }
- }, {
- key: "_getContentForTemplate",
- value: function _getContentForTemplate() {
- return _defineProperty({}, SELECTOR_TOOLTIP_INNER, this._getTitle());
- }
- }, {
- key: "_getTitle",
- value: function _getTitle() {
- return this._resolvePossibleFunction(this._config.title) || this._config.originalTitle;
- } // Private
-
- }, {
- key: "_initializeOnDelegatedTarget",
- value: function _initializeOnDelegatedTarget(event) {
- return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());
- }
- }, {
- key: "_isAnimated",
- value: function _isAnimated() {
- return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);
- }
- }, {
- key: "_isShown",
- value: function _isShown() {
- return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);
- }
- }, {
- key: "_createPopper",
- value: function _createPopper(tip) {
- var placement = typeof this._config.placement === 'function' ? this._config.placement.call(this, tip, this._element) : this._config.placement;
- var attachment = AttachmentMap[placement.toUpperCase()];
- return Popper__namespace.createPopper(this._element, tip, this._getPopperConfig(attachment));
- }
- }, {
- key: "_getOffset",
- value: function _getOffset() {
- var _this42 = this;
-
- var offset = this._config.offset;
-
- if (typeof offset === 'string') {
- return offset.split(',').map(function (value) {
- return Number.parseInt(value, 10);
- });
- }
-
- if (typeof offset === 'function') {
- return function (popperData) {
- return offset(popperData, _this42._element);
- };
- }
-
- return offset;
- }
- }, {
- key: "_resolvePossibleFunction",
- value: function _resolvePossibleFunction(arg) {
- return typeof arg === 'function' ? arg.call(this._element) : arg;
- }
- }, {
- key: "_getPopperConfig",
- value: function _getPopperConfig(attachment) {
- var _this43 = this;
-
- var defaultBsPopperConfig = {
- placement: attachment,
- modifiers: [{
- name: 'flip',
- options: {
- fallbackPlacements: this._config.fallbackPlacements
- }
- }, {
- name: 'offset',
- options: {
- offset: this._getOffset()
- }
- }, {
- name: 'preventOverflow',
- options: {
- boundary: this._config.boundary
- }
- }, {
- name: 'arrow',
- options: {
- element: ".".concat(this.constructor.NAME, "-arrow")
- }
- }, {
- name: 'preSetPlacement',
- enabled: true,
- phase: 'beforeMain',
- fn: function fn(data) {
- // Pre-set Popper's placement attribute in order to read the arrow sizes properly.
- // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement
- _this43._getTipElement().setAttribute('data-popper-placement', data.state.placement);
- }
- }]
- };
- return _objectSpread(_objectSpread({}, defaultBsPopperConfig), typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig);
- }
- }, {
- key: "_setListeners",
- value: function _setListeners() {
- var _this44 = this;
-
- var triggers = this._config.trigger.split(' ');
-
- var _iterator23 = _createForOfIteratorHelper(triggers),
- _step23;
-
- try {
- for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) {
- var trigger = _step23.value;
-
- if (trigger === 'click') {
- EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, function (event) {
- return _this44.toggle(event);
- });
- } else if (trigger !== TRIGGER_MANUAL) {
- var eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);
- var eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);
- EventHandler.on(this._element, eventIn, this._config.selector, function (event) {
- var context = _this44._initializeOnDelegatedTarget(event);
-
- context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
-
- context._enter();
- });
- EventHandler.on(this._element, eventOut, this._config.selector, function (event) {
- var context = _this44._initializeOnDelegatedTarget(event);
-
- context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);
-
- context._leave();
- });
- }
- }
- } catch (err) {
- _iterator23.e(err);
- } finally {
- _iterator23.f();
- }
-
- this._hideModalHandler = function () {
- if (_this44._element) {
- _this44.hide();
- }
- };
-
- EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
-
- if (this._config.selector) {
- this._config = _objectSpread(_objectSpread({}, this._config), {}, {
- trigger: 'manual',
- selector: ''
- });
- } else {
- this._fixTitle();
- }
- }
- }, {
- key: "_fixTitle",
- value: function _fixTitle() {
- var title = this._config.originalTitle;
-
- if (!title) {
- return;
- }
-
- if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {
- this._element.setAttribute('aria-label', title);
- }
-
- this._element.removeAttribute('title');
- }
- }, {
- key: "_enter",
- value: function _enter() {
- var _this45 = this;
-
- if (this._isShown() || this._isHovered) {
- this._isHovered = true;
- return;
- }
-
- this._isHovered = true;
-
- this._setTimeout(function () {
- if (_this45._isHovered) {
- _this45.show();
- }
- }, this._config.delay.show);
- }
- }, {
- key: "_leave",
- value: function _leave() {
- var _this46 = this;
-
- if (this._isWithActiveTrigger()) {
- return;
- }
-
- this._isHovered = false;
-
- this._setTimeout(function () {
- if (!_this46._isHovered) {
- _this46.hide();
- }
- }, this._config.delay.hide);
- }
- }, {
- key: "_setTimeout",
- value: function _setTimeout(handler, timeout) {
- clearTimeout(this._timeout);
- this._timeout = setTimeout(handler, timeout);
- }
- }, {
- key: "_isWithActiveTrigger",
- value: function _isWithActiveTrigger() {
- return Object.values(this._activeTrigger).includes(true);
- }
- }, {
- key: "_getConfig",
- value: function _getConfig(config) {
- var dataAttributes = Manipulator.getDataAttributes(this._element);
-
- for (var _i10 = 0, _Object$keys5 = Object.keys(dataAttributes); _i10 < _Object$keys5.length; _i10++) {
- var dataAttribute = _Object$keys5[_i10];
-
- if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {
- delete dataAttributes[dataAttribute];
- }
- }
-
- config = _objectSpread(_objectSpread({}, dataAttributes), _typeof(config) === 'object' && config ? config : {});
- config = this._mergeConfigObj(config);
- config = this._configAfterMerge(config);
-
- this._typeCheckConfig(config);
-
- return config;
- }
- }, {
- key: "_configAfterMerge",
- value: function _configAfterMerge(config) {
- config.container = config.container === false ? document.body : getElement(config.container);
-
- if (typeof config.delay === 'number') {
- config.delay = {
- show: config.delay,
- hide: config.delay
- };
- }
-
- config.originalTitle = this._element.getAttribute('title') || '';
-
- if (typeof config.title === 'number') {
- config.title = config.title.toString();
- }
-
- if (typeof config.content === 'number') {
- config.content = config.content.toString();
- }
-
- return config;
- }
- }, {
- key: "_getDelegateConfig",
- value: function _getDelegateConfig() {
- var config = {};
-
- for (var key in this._config) {
- if (this.constructor.Default[key] !== this._config[key]) {
- config[key] = this._config[key];
- }
- } // In the future can be replaced with:
- // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])
- // `Object.fromEntries(keysWithDifferentValues)`
-
-
- return config;
- }
- }, {
- key: "_disposePopper",
- value: function _disposePopper() {
- if (this._popper) {
- this._popper.destroy();
-
- this._popper = null;
- }
- } // Static
-
- }], [{
- key: "Default",
- get: function get() {
- return Default$3;
- }
- }, {
- key: "DefaultType",
- get: function get() {
- return DefaultType$3;
- }
- }, {
- key: "NAME",
- get: function get() {
- return NAME$4;
- }
- }, {
- key: "jQueryInterface",
- value: function jQueryInterface(config) {
- return this.each(function () {
- var data = Tooltip.getOrCreateInstance(this, config);
-
- if (typeof config !== 'string') {
- return;
- }
-
- if (typeof data[config] === 'undefined') {
- throw new TypeError("No method named \"".concat(config, "\""));
- }
-
- data[config]();
- });
- }
- }]);
-
- return Tooltip;
- }(BaseComponent);
- /**
- * jQuery
- */
-
-
- defineJQueryPlugin(Tooltip);
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v5.2.0): popover.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- /**
- * Constants
- */
-
- var NAME$3 = 'popover';
- var SELECTOR_TITLE = '.popover-header';
- var SELECTOR_CONTENT = '.popover-body';
-
- var Default$2 = _objectSpread(_objectSpread({}, Tooltip.Default), {}, {
- content: '',
- offset: [0, 8],
- placement: 'right',
- template: '',
- trigger: 'click'
- });
-
- var DefaultType$2 = _objectSpread(_objectSpread({}, Tooltip.DefaultType), {}, {
- content: '(null|string|element|function)'
- });
- /**
- * Class definition
- */
-
-
- var Popover = /*#__PURE__*/function (_Tooltip) {
- _inherits(Popover, _Tooltip);
-
- var _super14 = _createSuper(Popover);
-
- function Popover() {
- _classCallCheck(this, Popover);
-
- return _super14.apply(this, arguments);
- }
-
- _createClass(Popover, [{
- key: "_isWithContent",
- value: // Overrides
- function _isWithContent() {
- return this._getTitle() || this._getContent();
- } // Private
-
- }, {
- key: "_getContentForTemplate",
- value: function _getContentForTemplate() {
- var _ref12;
-
- return _ref12 = {}, _defineProperty(_ref12, SELECTOR_TITLE, this._getTitle()), _defineProperty(_ref12, SELECTOR_CONTENT, this._getContent()), _ref12;
- }
- }, {
- key: "_getContent",
- value: function _getContent() {
- return this._resolvePossibleFunction(this._config.content);
- } // Static
-
- }], [{
- key: "Default",
- get: // Getters
- function get() {
- return Default$2;
- }
- }, {
- key: "DefaultType",
- get: function get() {
- return DefaultType$2;
- }
- }, {
- key: "NAME",
- get: function get() {
- return NAME$3;
- }
- }, {
- key: "jQueryInterface",
- value: function jQueryInterface(config) {
- return this.each(function () {
- var data = Popover.getOrCreateInstance(this, config);
-
- if (typeof config !== 'string') {
- return;
- }
-
- if (typeof data[config] === 'undefined') {
- throw new TypeError("No method named \"".concat(config, "\""));
- }
-
- data[config]();
- });
- }
- }]);
-
- return Popover;
- }(Tooltip);
- /**
- * jQuery
- */
-
-
- defineJQueryPlugin(Popover);
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v5.2.0): scrollspy.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- /**
- * Constants
- */
-
- var NAME$2 = 'scrollspy';
- var DATA_KEY$2 = 'bs.scrollspy';
- var EVENT_KEY$2 = ".".concat(DATA_KEY$2);
- var DATA_API_KEY = '.data-api';
- var EVENT_ACTIVATE = "activate".concat(EVENT_KEY$2);
- var EVENT_CLICK = "click".concat(EVENT_KEY$2);
- var EVENT_LOAD_DATA_API$1 = "load".concat(EVENT_KEY$2).concat(DATA_API_KEY);
- var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
- var CLASS_NAME_ACTIVE$1 = 'active';
- var SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]';
- var SELECTOR_TARGET_LINKS = '[href]';
- var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
- var SELECTOR_NAV_LINKS = '.nav-link';
- var SELECTOR_NAV_ITEMS = '.nav-item';
- var SELECTOR_LIST_ITEMS = '.list-group-item';
- var SELECTOR_LINK_ITEMS = "".concat(SELECTOR_NAV_LINKS, ", ").concat(SELECTOR_NAV_ITEMS, " > ").concat(SELECTOR_NAV_LINKS, ", ").concat(SELECTOR_LIST_ITEMS);
- var SELECTOR_DROPDOWN = '.dropdown';
- var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';
- var Default$1 = {
- offset: null,
- // TODO: v6 @deprecated, keep it for backwards compatibility reasons
- rootMargin: '0px 0px -25%',
- smoothScroll: false,
- target: null
- };
- var DefaultType$1 = {
- offset: '(number|null)',
- // TODO v6 @deprecated, keep it for backwards compatibility reasons
- rootMargin: 'string',
- smoothScroll: 'boolean',
- target: 'element'
- };
- /**
- * Class definition
- */
-
- var ScrollSpy = /*#__PURE__*/function (_BaseComponent9) {
- _inherits(ScrollSpy, _BaseComponent9);
-
- var _super15 = _createSuper(ScrollSpy);
-
- function ScrollSpy(element, config) {
- var _this47;
-
- _classCallCheck(this, ScrollSpy);
-
- _this47 = _super15.call(this, element, config); // this._element is the observablesContainer and config.target the menu links wrapper
-
- _this47._targetLinks = new Map();
- _this47._observableSections = new Map();
- _this47._rootElement = getComputedStyle(_this47._element).overflowY === 'visible' ? null : _this47._element;
- _this47._activeTarget = null;
- _this47._observer = null;
- _this47._previousScrollData = {
- visibleEntryTop: 0,
- parentScrollTop: 0
- };
-
- _this47.refresh(); // initialize
-
-
- return _this47;
- } // Getters
-
-
- _createClass(ScrollSpy, [{
- key: "refresh",
- value: // Public
- function refresh() {
- this._initializeTargetsAndObservables();
-
- this._maybeEnableSmoothScroll();
-
- if (this._observer) {
- this._observer.disconnect();
- } else {
- this._observer = this._getNewObserver();
- }
-
- var _iterator24 = _createForOfIteratorHelper(this._observableSections.values()),
- _step24;
-
- try {
- for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) {
- var section = _step24.value;
-
- this._observer.observe(section);
- }
- } catch (err) {
- _iterator24.e(err);
- } finally {
- _iterator24.f();
- }
- }
- }, {
- key: "dispose",
- value: function dispose() {
- this._observer.disconnect();
-
- _get(_getPrototypeOf(ScrollSpy.prototype), "dispose", this).call(this);
- } // Private
-
- }, {
- key: "_configAfterMerge",
- value: function _configAfterMerge(config) {
- // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case
- config.target = getElement(config.target) || document.body;
- return config;
- }
- }, {
- key: "_maybeEnableSmoothScroll",
- value: function _maybeEnableSmoothScroll() {
- var _this48 = this;
-
- if (!this._config.smoothScroll) {
- return;
- } // unregister any previous listeners
-
-
- EventHandler.off(this._config.target, EVENT_CLICK);
- EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, function (event) {
- var observableSection = _this48._observableSections.get(event.target.hash);
-
- if (observableSection) {
- event.preventDefault();
- var root = _this48._rootElement || window;
- var height = observableSection.offsetTop - _this48._element.offsetTop;
-
- if (root.scrollTo) {
- root.scrollTo({
- top: height,
- behavior: 'smooth'
- });
- return;
- } // Chrome 60 doesn't support `scrollTo`
-
-
- root.scrollTop = height;
- }
- });
- }
- }, {
- key: "_getNewObserver",
- value: function _getNewObserver() {
- var _this49 = this;
-
- var options = {
- root: this._rootElement,
- threshold: [0.1, 0.5, 1],
- rootMargin: this._getRootMargin()
- };
- return new IntersectionObserver(function (entries) {
- return _this49._observerCallback(entries);
- }, options);
- } // The logic of selection
-
- }, {
- key: "_observerCallback",
- value: function _observerCallback(entries) {
- var _this50 = this;
-
- var targetElement = function targetElement(entry) {
- return _this50._targetLinks.get("#".concat(entry.target.id));
- };
-
- var activate = function activate(entry) {
- _this50._previousScrollData.visibleEntryTop = entry.target.offsetTop;
-
- _this50._process(targetElement(entry));
- };
-
- var parentScrollTop = (this._rootElement || document.documentElement).scrollTop;
- var userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;
- this._previousScrollData.parentScrollTop = parentScrollTop;
-
- var _iterator25 = _createForOfIteratorHelper(entries),
- _step25;
-
- try {
- for (_iterator25.s(); !(_step25 = _iterator25.n()).done;) {
- var entry = _step25.value;
-
- if (!entry.isIntersecting) {
- this._activeTarget = null;
-
- this._clearActiveClass(targetElement(entry));
-
- continue;
- }
-
- var entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop; // if we are scrolling down, pick the bigger offsetTop
-
- if (userScrollsDown && entryIsLowerThanPrevious) {
- activate(entry); // if parent isn't scrolled, let's keep the first visible item, breaking the iteration
-
- if (!parentScrollTop) {
- return;
- }
-
- continue;
- } // if we are scrolling up, pick the smallest offsetTop
-
-
- if (!userScrollsDown && !entryIsLowerThanPrevious) {
- activate(entry);
- }
- }
- } catch (err) {
- _iterator25.e(err);
- } finally {
- _iterator25.f();
- }
- } // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only
-
- }, {
- key: "_getRootMargin",
- value: function _getRootMargin() {
- return this._config.offset ? "".concat(this._config.offset, "px 0px -30%") : this._config.rootMargin;
- }
- }, {
- key: "_initializeTargetsAndObservables",
- value: function _initializeTargetsAndObservables() {
- this._targetLinks = new Map();
- this._observableSections = new Map();
- var targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);
-
- var _iterator26 = _createForOfIteratorHelper(targetLinks),
- _step26;
-
- try {
- for (_iterator26.s(); !(_step26 = _iterator26.n()).done;) {
- var anchor = _step26.value;
-
- // ensure that the anchor has an id and is not disabled
- if (!anchor.hash || isDisabled(anchor)) {
- continue;
- }
-
- var observableSection = SelectorEngine.findOne(anchor.hash, this._element); // ensure that the observableSection exists & is visible
-
- if (isVisible(observableSection)) {
- this._targetLinks.set(anchor.hash, anchor);
-
- this._observableSections.set(anchor.hash, observableSection);
- }
- }
- } catch (err) {
- _iterator26.e(err);
- } finally {
- _iterator26.f();
- }
- }
- }, {
- key: "_process",
- value: function _process(target) {
- if (this._activeTarget === target) {
- return;
- }
-
- this._clearActiveClass(this._config.target);
-
- this._activeTarget = target;
- target.classList.add(CLASS_NAME_ACTIVE$1);
-
- this._activateParents(target);
-
- EventHandler.trigger(this._element, EVENT_ACTIVATE, {
- relatedTarget: target
- });
- }
- }, {
- key: "_activateParents",
- value: function _activateParents(target) {
- // Activate dropdown parents
- if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
- SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);
- return;
- }
-
- var _iterator27 = _createForOfIteratorHelper(SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)),
- _step27;
-
- try {
- for (_iterator27.s(); !(_step27 = _iterator27.n()).done;) {
- var listGroup = _step27.value;
-
- // Set triggered links parents as active
- // With both and