commit 7f475cc503123b5d756c298abe0a123df95187a0 Author: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat Mar 7 21:58:26 2026 +0000 [Automation] Site update No.19 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/.nojekyll @@ -0,0 +1 @@ + diff --git a/404.html b/404.html new file mode 100644 index 0000000..760acb3 --- /dev/null +++ b/404.html @@ -0,0 +1 @@ + 404: Page not found | Cole Maxwell
404: Page not found

404: Page not found

Sorry, we've misplaced that URL or it's pointing to something that doesn't exist.

diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..ec827dc --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +colemaxwell.dev \ No newline at end of file diff --git a/about/index.html b/about/index.html new file mode 100644 index 0000000..5d4fcd0 --- /dev/null +++ b/about/index.html @@ -0,0 +1 @@ + About | Cole Maxwell
About

About

šŸ‘‹ Hi, I’m Cole

  • šŸ“ Mankato, Minnesota
  • šŸŽ“ University of Minnesota, Morris
  • 🌱 I’m currently learning: Go logo

Hi my name is Cole and I am a growing software engineer. I am currently studying Computer Science at the University of Minnesota, Morris.

diff --git a/app.min.js b/app.min.js new file mode 100644 index 0000000..8a462fa --- /dev/null +++ b/app.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.4.1 | Ā© 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";const e=new Map;var t={set(t,n,r){e.has(t)||e.set(t,new Map);const o=e.get(t);o.has(n)||0===o.size?o.set(n,r):console.error("Bootstrap doesn't allow more than one instance per element. Bound instance: ".concat(Array.from(o.keys())[0],"."))},get:(t,n)=>e.has(t)&&e.get(t).get(n)||null,remove(t,n){if(!e.has(t))return;const r=e.get(t);r.delete(n),0===r.size&&e.delete(t)}};const n="transitionend",r=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(e,t)=>"#".concat(CSS.escape(t)))),e),o=e=>null==e?"".concat(e):Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),i=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),s=e=>i(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(r(e)):null,c=e=>!e||e.nodeType!==Node.ELEMENT_NODE||(!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled"))),a=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,l=[],u=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;return"function"==typeof e?e.call(...t):n},f=function(e,t){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void u(e);const r=(e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const r=Number.parseFloat(t),o=Number.parseFloat(n);return r||o?(t=t.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(n))):0})(t)+5;let o=!1;const i=r=>{let{target:s}=r;s===t&&(o=!0,t.removeEventListener(n,i),u(e))};t.addEventListener(n,i),setTimeout(()=>{o||t.dispatchEvent(new Event(n))},r)},d=/[^.]*(?=\..*)\.|.*/,h=/\..*/,g=/::\d+$/,m={};let p=1;const b={mouseenter:"mouseover",mouseleave:"mouseout"},v=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 y(e,t){return t&&"".concat(t,"::").concat(p++)||e.uidEvent||p++}function _(e){const t=y(e);return e.uidEvent=t,m[t]=m[t]||{},m[t]}function E(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(e).find(e=>e.callable===t&&e.delegationSelector===n)}function w(e,t,n){const r="string"==typeof t,o=r?n:t||n;let i=A(e);return v.has(i)||(i=e),[r,o,i]}function O(e,t,n,r,o){if("string"!=typeof t||!e)return;let[i,s,c]=w(t,n,r);if(t in b){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};s=e(s)}const a=_(e),l=a[c]||(a[c]={}),u=E(l,s,i?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=y(s,t.replace(d,"")),h=i?function(e,t,n){return function r(o){const i=e.querySelectorAll(t);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const c of i)if(c===s)return T(o,{delegateTarget:s}),r.oneOff&&C.off(e,o.type,t,n),n.apply(s,[o])}}(e,n,s):function(e,t){return function n(r){return T(r,{delegateTarget:e}),n.oneOff&&C.off(e,r.type,t),t.apply(e,[r])}}(e,s);h.delegationSelector=i?n:null,h.callable=s,h.oneOff=o,h.uidEvent=f,l[f]=h,e.addEventListener(c,h,i)}function S(e,t,n,r,o){const i=E(t[n],r,o);i&&(e.removeEventListener(n,i,Boolean(o)),delete t[n][i.uidEvent])}function j(e,t,n,r){const o=t[n]||{};for(const[i,s]of Object.entries(o))i.includes(r)&&S(e,t,n,s.callable,s.delegationSelector)}function A(e){return e=e.replace(h,""),b[e]||e}const C={on(e,t,n,r){O(e,t,n,r,!1)},one(e,t,n,r){O(e,t,n,r,!0)},off(e,t,n,r){if("string"!=typeof t||!e)return;const[o,i,s]=w(t,n,r),c=s!==t,a=_(e),l=a[s]||{},u=t.startsWith(".");if(void 0===i){if(u)for(const n of Object.keys(a))j(e,a,n,t.slice(1));for(const[n,r]of Object.entries(l)){const o=n.replace(g,"");c&&!t.includes(o)||S(e,a,s,r.callable,r.delegationSelector)}}else{if(!Object.keys(l).length)return;S(e,a,s,i,o?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const r=a();let o=null,i=!0,s=!0,c=!1;t!==A(t)&&r&&(o=r.Event(t,n),r(e).trigger(o),i=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),c=o.isDefaultPrevented());const l=T(new Event(t,{bubbles:i,cancelable:!0}),n);return c&&l.preventDefault(),s&&e.dispatchEvent(l),l.defaultPrevented&&o&&o.preventDefault(),l}};function T(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,r]of Object.entries(t))try{e[n]=r}catch(t){Object.defineProperty(e,n,{configurable:!0,get:()=>r})}return e}function N(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function D(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function L(e){for(var t=1;t"-".concat(e.toLowerCase()))}const P={setDataAttribute(e,t,n){e.setAttribute("data-bs-".concat(k(t)),n)},removeDataAttribute(e,t){e.removeAttribute("data-bs-".concat(k(t)))},getDataAttributes(e){if(!e)return{};const t={},n=Object.keys(e.dataset).filter(e=>e.startsWith("bs")&&!e.startsWith("bsConfig"));for(const r of n){let n=r.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1),t[n]=I(e.dataset[r])}return t},getDataAttribute:(e,t)=>I(e.getAttribute("data-bs-".concat(k(t))))};class M{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(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const n=i(t)?P.getDataAttribute(t,"config"):{};return L(L(L(L({},this.constructor.Default),"object"==typeof n?n:{}),i(t)?P.getDataAttributes(t):{}),"object"==typeof e?e:{})}_typeCheckConfig(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[n,r]of Object.entries(t)){const t=e[n],s=i(t)?"element":o(t);if(!new RegExp(r).test(s))throw new TypeError("".concat(this.constructor.NAME.toUpperCase(),': Option "').concat(n,'" provided type "').concat(s,'" but expected type "').concat(r,'".'))}}}class K extends M{constructor(e,n){super(),(e=s(e))&&(this._element=e,this._config=this._getConfig(n),t.set(this._element,this.constructor.DATA_KEY,this))}dispose(){t.remove(this._element,this.constructor.DATA_KEY),C.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t){f(e,t,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return t.get(s(e),this.DATA_KEY)}static getOrCreateInstance(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return"5.3.8"}static get DATA_KEY(){return"bs.".concat(this.NAME)}static get EVENT_KEY(){return".".concat(this.DATA_KEY)}static eventName(e){return"".concat(e).concat(this.EVENT_KEY)}}const q=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n="#".concat(n.split("#")[1])),t=n&&"#"!==n?n.trim():null}return t?t.split(",").map(e=>r(e)).join(","):null},x={find(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(t,e)},children:(e,t)=>[].concat(...e.children).filter(e=>e.matches(t)),parents(e,t){const n=[];let r=e.parentNode.closest(t);for(;r;)n.push(r),r=r.parentNode.closest(t);return n},prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(e=>"".concat(e,':not([tabindex^="-"])')).join(",");return this.find(t,e).filter(e=>!c(e)&&(e=>{if(!i(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){const t=e.closest("summary");if(t&&t.parentNode!==n)return!1;if(null===t)return!1}return t})(e))},getSelectorFromElement(e){const t=q(e);return t&&x.findOne(t)?t:null},getElementFromSelector(e){const t=q(e);return t?x.findOne(t):null},getMultipleElementsFromSelector(e){const t=q(e);return t?x.find(t):[]}},W=".".concat("bs.toast"),Y="mouseover".concat(W),F="mouseout".concat(W),R="focusin".concat(W),V="focusout".concat(W),Q="hide".concat(W),z="hidden".concat(W),B="show".concat(W),H="shown".concat(W),U="hide",G="show",J="showing",Z={animation:"boolean",autohide:"boolean",delay:"number"},$={animation:!0,autohide:!0,delay:5e3};class X extends K{constructor(e,t){super(e,t),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return $}static get DefaultType(){return Z}static get NAME(){return"toast"}show(){if(C.trigger(this._element,B).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");this._element.classList.remove(U),this._element.offsetHeight,this._element.classList.add(G,J),this._queueCallback(()=>{this._element.classList.remove(J),C.trigger(this._element,H),this._maybeScheduleHide()},this._element,this._config.animation)}hide(){if(!this.isShown())return;if(C.trigger(this._element,Q).defaultPrevented)return;this._element.classList.add(J),this._queueCallback(()=>{this._element.classList.add(U),this._element.classList.remove(J,G),C.trigger(this._element,z)},this._element,this._config.animation)}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(G),super.dispose()}isShown(){return this._element.classList.contains(G)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(e,t){switch(e.type){case"mouseover":case"mouseout":this._hasMouseInteraction=t;break;case"focusin":case"focusout":this._hasKeyboardInteraction=t}if(t)return void this._clearTimeout();const n=e.relatedTarget;this._element===n||this._element.contains(n)||this._maybeScheduleHide()}_setListeners(){C.on(this._element,Y,e=>this._onInteraction(e,!0)),C.on(this._element,F,e=>this._onInteraction(e,!1)),C.on(this._element,R,e=>this._onInteraction(e,!0)),C.on(this._element,V,e=>this._onInteraction(e,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(e){return this.each(function(){const t=X.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError('No method named "'.concat(e,'"'));t[e](this)}})}}var ee,te;if(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"hide";const n="click.dismiss".concat(e.EVENT_KEY),r=e.NAME;C.on(document,n,'[data-bs-dismiss="'.concat(r,'"]'),function(n){if(["A","AREA"].includes(this.tagName)&&n.preventDefault(),c(this))return;const o=x.getElementFromSelector(this)||this.closest(".".concat(r));e.getOrCreateInstance(o)[t]()})}(X),ee=X,te=()=>{const e=a();if(e){const t=ee.NAME,n=e.fn[t];e.fn[t]=ee.jQueryInterface,e.fn[t].Constructor=ee,e.fn[t].noConflict=()=>(e.fn[t]=n,ee.jQueryInterface)}},"loading"===document.readyState?(l.length||document.addEventListener("DOMContentLoaded",()=>{for(const e of l)e()}),l.push(te)):te(),"serviceWorker"in navigator){const e=new URL(document.currentScript.src),t=e.searchParams.get("register"),n=e.searchParams.get("baseurl");if(t){const e="".concat(n,"/sw.min.js"),t=document.getElementById("notification"),r=t.querySelector(".toast-body>button"),o=X.getOrCreateInstance(t);navigator.serviceWorker.register(e).then(e=>{e.waiting&&o.show(),e.addEventListener("updatefound",()=>{e.installing.addEventListener("statechange",()=>{e.waiting&&navigator.serviceWorker.controller&&o.show()})}),r.addEventListener("click",()=>{e.waiting&&e.waiting.postMessage("SKIP_WAITING"),o.hide()})});let i=!1;navigator.serviceWorker.addEventListener("controllerchange",()=>{i||(window.location.reload(),i=!0)})}else navigator.serviceWorker.getRegistrations().then(function(e){for(let t of e)t.unregister()})}}(); diff --git a/archives/index.html b/archives/index.html new file mode 100644 index 0000000..ab5026e --- /dev/null +++ b/archives/index.html @@ -0,0 +1 @@ + Archives | Cole Maxwell
diff --git a/assets/css/jekyll-theme-chirpy.css b/assets/css/jekyll-theme-chirpy.css new file mode 100644 index 0000000..ad4f0cf --- /dev/null +++ b/assets/css/jekyll-theme-chirpy.css @@ -0,0 +1,5 @@ +/*! +* Bootstrap v5.3.8 (https://getbootstrap.com/) +* Copyright 2011-2025 The Bootstrap Authors +* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) +*/:root{--bs-success:#198754;--bs-danger:#dc3545;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-secondary-color:rgba(33, 37, 41, 0.75);--bs-secondary-bg:#e9ecef;--bs-tertiary-bg:#f8f9fa;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15)}*,::after,::before{box-sizing:border-box}@media(prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media(min-width: 1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media(min-width: 1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media(min-width: 1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media(min-width: 1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}.small,small{font-size:.875em}a{color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));text-decoration:underline}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button{text-transform:none}[role=button]{cursor:pointer}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none !important}[type=button],[type=reset],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button{cursor:pointer;filter:grayscale(1)}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}iframe{border:0}summary{display:list-item;cursor:pointer}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.list-unstyled{padding-left:0;list-style:none}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.figure{display:inline-block}.container{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-right:auto;margin-left:auto}@media(min-width: 576px){.container{max-width:540px}}@media(min-width: 768px){.container{max-width:720px}}@media(min-width: 992px){.container{max-width:960px}}@media(min-width: 1200px){.container{max-width:1140px}}@media(min-width: 1400px){.container{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1*var(--bs-gutter-y));margin-right:calc(-0.5*var(--bs-gutter-x));margin-left:calc(-0.5*var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0}.row-cols-1>*{flex:0 0 auto;width:100%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.g-0{--bs-gutter-x:0}.g-0{--bs-gutter-y:0}.g-4{--bs-gutter-x:1.5rem}.g-4{--bs-gutter-y:1.5rem}@media(min-width: 576px){.col-sm{flex:1 0 0}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}}@media(min-width: 768px){.col-md{flex:1 0 0}.row-cols-md-2>*{flex:0 0 auto;width:50%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}}@media(min-width: 992px){.col-lg{flex:1 0 0}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}}@media(min-width: 1200px){.col-xl{flex:1 0 0}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}}@media(min-width: 1400px){.col-xxl{flex:1 0 0}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}}.table{--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;--bs-table-color:var(--bs-emphasis-color);--bs-table-bg:var(--bs-body-bg);--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--bs-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.is-valid~.valid-tooltip,.was-validated :valid~.valid-tooltip{display:block}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-tooltip{display:block}.btn{--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:var(--bs-body-color);--bs-btn-bg:transparent;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:var(--bs-border-radius-lg)}.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:var(--bs-border-radius-sm)}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media(prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:0 0;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-title-color: ;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-border-radius);--bs-card-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(var(--bs-body-color-rgb), 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:var(--bs-body-bg);position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-text:last-child{margin-bottom:0}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.pagination{--bs-pagination-padding-x:0.75rem;--bs-pagination-padding-y:0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-body-bg);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-tertiary-bg);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-secondary-bg);--bs-pagination-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:var(--bs-secondary-color);--bs-pagination-disabled-bg:var(--bs-secondary-bg);--bs-pagination-disabled-border-color:var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(-1*var(--bs-border-width))}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-border-radius);position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.list-group{--bs-list-group-color:var(--bs-body-color);--bs-list-group-bg:var(--bs-body-bg);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-border-radius);--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:0.5rem;--bs-list-group-disabled-color:var(--bs-secondary-color);--bs-list-group-disabled-bg:var(--bs-body-bg);--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1*var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.btn-close{--bs-btn-close-color:#000;--bs-btn-close-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414'/%3e%3c/svg%3e");--bs-btn-close-opacity:0.5;--bs-btn-close-hover-opacity:0.75;--bs-btn-close-focus-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-btn-close-focus-opacity:1;--bs-btn-close-disabled-opacity:0.25;box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:rgba(0,0,0,0) var(--bs-btn-close-bg) center/1em auto no-repeat;filter:var(--bs-btn-close-filter);border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}:root{--bs-btn-close-filter: }.toast{--bs-toast-padding-x:0.75rem;--bs-toast-padding-y:0.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:var(--bs-border-radius);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-secondary-color);--bs-toast-header-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-header-border-color:var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast:not(.show){display:none}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-0.5*var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:0.5rem;--bs-tooltip-padding-y:0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color:var(--bs-body-bg);--bs-tooltip-bg:var(--bs-emphasis-color);--bs-tooltip-border-radius:var(--bs-border-radius);--bs-tooltip-opacity:0.9;--bs-tooltip-arrow-width:0.8rem;--bs-tooltip-arrow-height:0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) 0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.align-middle{vertical-align:middle !important}.opacity-75{opacity:.75 !important}.overflow-hidden{overflow:hidden !important}.d-block{display:block !important}.d-flex{display:flex !important}.d-none{display:none !important}.shadow{box-shadow:var(--bs-box-shadow) !important}.position-fixed{position:fixed !important}.position-sticky{position:-webkit-sticky !important;position:sticky !important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.h-100{height:100% !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-wrap{flex-wrap:wrap !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.pt-0{padding-top:0 !important}.pt-2{padding-top:.5rem !important}.pe-1{padding-right:.25rem !important}.pe-4{padding-right:1.5rem !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-4{padding-bottom:1.5rem !important}.ps-0{padding-left:0 !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.fs-6{font-size:1rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-light{font-weight:300 !important}.lh-lg{line-height:2 !important}.text-start{text-align:left !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-nowrap{white-space:nowrap !important}.text-muted{color:var(--bs-secondary-color) !important}.pe-none{pointer-events:none !important}.rounded-circle{border-radius:50% !important}.invisible{visibility:hidden !important}.z-1{z-index:1 !important}.z-2{z-index:2 !important}.z-3{z-index:3 !important}@media(min-width: 576px){.flex-sm-row{flex-direction:row !important}.me-sm-4{margin-right:1.5rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}}@media(min-width: 768px){.flex-md-row-reverse{flex-direction:row-reverse !important}.mt-md-0{margin-top:0 !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}}@media(min-width: 992px){.flex-lg-row{flex-direction:row !important}.justify-content-lg-between{justify-content:space-between !important}.align-items-lg-center{align-items:center !important}.ms-lg-0{margin-left:0 !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.ps-lg-2{padding-left:.5rem !important}}@media(min-width: 1200px){.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}}@media(min-width: 1400px){.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}}::-webkit-input-placeholder{color:var(--text-muted-color) !important}::-moz-placeholder{color:var(--text-muted-color) !important}:-ms-input-placeholder{color:var(--text-muted-color) !important}::-ms-input-placeholder{color:var(--text-muted-color) !important}::placeholder{color:var(--text-muted-color) !important}:focus::-webkit-input-placeholder{opacity:.6}:focus::-moz-placeholder{opacity:.6}:focus:-ms-input-placeholder{opacity:.6}:focus::-ms-input-placeholder{opacity:.6}:focus::placeholder{opacity:.6}header .post-desc,#toc-bar .label,#search-results a,h1,h2,h3,h4,h5{color:var(--heading-color);font-weight:400;font-family:Lato,"Microsoft Yahei",sans-serif;scroll-margin-top:3.5rem}h2 .anchor,h3 .anchor,h4 .anchor,h5 .anchor{font-size:80%}@media(hover: hover){h2 .anchor,h3 .anchor,h4 .anchor,h5 .anchor{visibility:hidden;opacity:0;transition:opacity .25s ease-in,visibility 0s ease-in .25s}h2:hover .anchor,h3:hover .anchor,h4:hover .anchor,h5:hover .anchor{visibility:visible;opacity:1;transition:opacity .25s ease-in,visibility 0s ease-in 0s}}.post-tags .post-tag:hover,.tag:hover{background:var(--tag-hover);border-color:var(--tag-hover);transition:background .35s ease-in-out}.table-wrapper>table thead th,.table-wrapper>table tbody tr td{padding:.4rem 1rem;font-size:95%;white-space:nowrap}#page-category a:hover,#page-tag a:hover,#access-lastmod a:hover,.post-tail-wrapper .license-wrapper>a:hover,#search-results a:hover,footer a:hover,#topbar #breadcrumb a:hover,.post-meta a:not([class]):hover,.content a:not(.img-link):hover{color:#d2603a !important;border-bottom:1px solid #d2603a;text-decoration:none}#search-results a,#search-hints .post-tag,a,.post-tags .post-tag:hover,.tag:hover{color:var(--link-color)}.post-tail-wrapper .post-meta a:not(:hover),.content a:not(.img-link){border-bottom:1px solid var(--link-underline-color)}#sidebar .profile-wrapper,#sidebar .site-title,#sidebar .sidebar-bottom a{transition:all .3s ease-in-out}#sidebar .sidebar-bottom .icon-border,.code-header,i.far,i.fas,.content a.popup{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#page-category ul>li>a,#page-tag ul>li>a,#search-results a,#access-lastmod a,main .categories a:not(:hover),main #tags a:not(:hover),main #archives a:not(:hover){border-bottom:none}.post-tail-wrapper .share-wrapper .share-icons button,#search-cancel,.code-header button{cursor:pointer}#related-posts time,#post-list .card .card-body .post-meta em,.post-meta em{font-style:normal}.categories.card,.categories .list-group,.highlight,div[class^=language-],.code-header button,blockquote[class^=prompt-],.preview-img,.preview-img img,.post-preview,.post-preview::before,.embed-video{border-radius:10px}.content a.popup+em,.embed-video+em,.embed-audio+em{display:block;text-align:center;font-style:normal;font-size:80%;padding:0;color:#6d6c6c}#sidebar a,#sidebar .sidebar-bottom #mode-toggle{color:var(--sidebar-muted-color);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#related-posts .card h4,#post-list .card .card-body .card-title,#post-list .card .card-body .card-text.content p{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical}#archives ul li,#toc-wrapper ul .toc-link,#related-posts p,#post-list .card .card-body .post-meta>div:first-child,#search-results>article>p{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}header .post-meta em,header .post-meta time,.post-tail-wrapper .license-wrapper>a,footer a,footer em{color:var(--text-muted-highlight-color);font-weight:600}.post-tail-wrapper,.post-tail-wrapper .license-wrapper span:last-child,.post-meta{font-size:.85rem}#related-posts time,footer{font-size:.8rem}sup:target,.footnotes>ol>li:target{background-color:var(--footnote-target-bg);width:-moz-fit-content;width:-webkit-fit-content;width:fit-content;transition:background-color 1.75s ease-in-out}#toc-bar button i,#topbar button i,#toc-popup .header button i{color:#999}.highlight,figure.highlight,div[class^=language-]{background-color:var(--highlight-bg-color)}td.rouge-code{padding-left:1rem;padding-right:1.5rem}#toc-wrapper>*,.access>section{border-left:1px solid var(--main-border-color)}:root{font-size:16px}@media(prefers-color-scheme: light){html:not([data-mode]),html[data-mode=light]{--main-bg: white;--mask-bg: #c1c3c5;--main-border-color: #f3f3f3;--text-color: #34343c;--text-muted-color: #757575;--text-muted-highlight-color: inherit;--heading-color: #2a2a2a;--label-color: #585858;--blockquote-border-color: #eeeeee;--blockquote-text-color: #757575;--link-color: #0056b2;--link-underline-color: #dee2e6;--button-bg: #ffffff;--btn-border-color: #e9ecef;--btn-backtotop-color: #686868;--btn-backtotop-border-color: #f1f1f1;--checkbox-color: #c5c5c5;--checkbox-checked-color: #07a8f7;--img-bg: radial-gradient(circle, rgb(255 255 255) 0%, rgb(239 239 239) 100%);--shimmer-bg: linear-gradient( 90deg, rgb(250 250 250 / 0%) 0%, rgb(232 230 230 / 100%) 50%, rgb(250 250 250 / 0%) 100% );--site-title-color: rgb(113 113 113);--site-subtitle-color: #717171;--sidebar-bg: #f6f8fa;--sidebar-border-color: #efefef;--sidebar-muted-color: #545454;--sidebar-active-color: #1d1d1d;--sidebar-hover-bg: rgb(223 233 241 / 64%);--sidebar-btn-bg: white;--sidebar-btn-color: #8e8e8e;--avatar-border-color: white;--topbar-bg: rgb(255 255 255 / 70%);--topbar-text-color: rgb(78 78 78);--search-border-color: rgb(240 240 240);--search-icon-color: #c2c6cc;--input-focus-border-color: #b8b8b8;--post-list-text-color: dimgray;--btn-patinator-text-color: #555555;--btn-paginator-hover-color: var(--sidebar-bg);--toc-highlight: #0550ae;--toc-popup-border-color: lightgray;--btn-share-color: gray;--btn-share-hover-color: #0d6efd;--card-bg: white;--card-hover-bg: #e2e2e2;--card-shadow: rgb(104 104 104 / 5%) 0 2px 6px 0, rgb(211 209 209 / 15%) 0 0 0 1px;--footnote-target-bg: lightcyan;--tb-odd-bg: #fbfcfd;--tb-border-color: #eaeaea;--dash-color: silver;--kbd-wrap-color: #bdbdbd;--kbd-text-color: var(--text-color);--kbd-bg-color: white;--prompt-text-color: rgb(46 46 46 / 77%);--prompt-tip-bg: rgb(123 247 144 / 20%);--prompt-tip-icon-color: #03b303;--prompt-info-bg: #e1f5fe;--prompt-info-icon-color: #0070cb;--prompt-warning-bg: rgb(255 243 205);--prompt-warning-icon-color: #ef9c03;--prompt-danger-bg: rgb(248 215 218 / 56%);--prompt-danger-icon-color: #df3c30;--tag-border: #dee2e6;--tag-shadow: var(--btn-border-color);--tag-hover: rgb(222 226 230);--search-tag-bg: #f8f9fa;--categories-border: rgb(0 0 0 / 12.5%);--categories-hover-bg: var(--btn-border-color);--categories-icon-hover-color: darkslategray;--timeline-color: rgb(0 0 0 / 7.5%);--timeline-node-bg: #c2c6cc;--timeline-year-dot-color: #ffffff;--language-border-color: #ececec;--highlight-bg-color: #f6f8fa;--highlighter-rouge-color: #3f596f;--highlight-lineno-color: #9e9e9e;--inline-code-bg: rgb(25 25 28 / 5%);--code-color: #3a3a3a;--code-header-text-color: #a3a3a3;--code-header-muted-color: #e5e5e5;--code-header-icon-color: #c9c8c8;--clipboard-checked-color: #43c743}html:not([data-mode]) [class^=prompt-],html[data-mode=light] [class^=prompt-]{--link-underline-color: rgb(219 216 216)}html:not([data-mode]) .dark,html[data-mode=light] .dark{display:none}html:not([data-mode]) .highlight table td,html[data-mode=light] .highlight table td{padding:5px}html:not([data-mode]) .highlight table pre,html[data-mode=light] .highlight table pre{margin:0}html:not([data-mode]) .highlight,html:not([data-mode]) .highlight .w,html[data-mode=light] .highlight,html[data-mode=light] .highlight .w{color:#24292f;background-color:#f6f8fa}html:not([data-mode]) .highlight .k,html:not([data-mode]) .highlight .kd,html:not([data-mode]) .highlight .kn,html:not([data-mode]) .highlight .kp,html:not([data-mode]) .highlight .kr,html:not([data-mode]) .highlight .kt,html:not([data-mode]) .highlight .kv,html[data-mode=light] .highlight .k,html[data-mode=light] .highlight .kd,html[data-mode=light] .highlight .kn,html[data-mode=light] .highlight .kp,html[data-mode=light] .highlight .kr,html[data-mode=light] .highlight .kt,html[data-mode=light] .highlight .kv{color:#cf222e}html:not([data-mode]) .highlight .gr,html[data-mode=light] .highlight .gr{color:#f6f8fa}html:not([data-mode]) .highlight .gd,html[data-mode=light] .highlight .gd{color:#82071e;background-color:#ffebe9}html:not([data-mode]) .highlight .nb,html[data-mode=light] .highlight .nb{color:#953800}html:not([data-mode]) .highlight .nc,html[data-mode=light] .highlight .nc{color:#953800}html:not([data-mode]) .highlight .no,html[data-mode=light] .highlight .no{color:#953800}html:not([data-mode]) .highlight .nn,html[data-mode=light] .highlight .nn{color:#953800}html:not([data-mode]) .highlight .sr,html[data-mode=light] .highlight .sr{color:#116329}html:not([data-mode]) .highlight .na,html[data-mode=light] .highlight .na{color:#116329}html:not([data-mode]) .highlight .nt,html[data-mode=light] .highlight .nt{color:#116329}html:not([data-mode]) .highlight .gi,html[data-mode=light] .highlight .gi{color:#116329;background-color:#dafbe1}html:not([data-mode]) .highlight .kc,html[data-mode=light] .highlight .kc{color:#0550ae}html:not([data-mode]) .highlight .l,html:not([data-mode]) .highlight .ld,html:not([data-mode]) .highlight .m,html:not([data-mode]) .highlight .mb,html:not([data-mode]) .highlight .mf,html:not([data-mode]) .highlight .mh,html:not([data-mode]) .highlight .mi,html:not([data-mode]) .highlight .il,html:not([data-mode]) .highlight .mo,html:not([data-mode]) .highlight .mx,html[data-mode=light] .highlight .l,html[data-mode=light] .highlight .ld,html[data-mode=light] .highlight .m,html[data-mode=light] .highlight .mb,html[data-mode=light] .highlight .mf,html[data-mode=light] .highlight .mh,html[data-mode=light] .highlight .mi,html[data-mode=light] .highlight .il,html[data-mode=light] .highlight .mo,html[data-mode=light] .highlight .mx{color:#0550ae}html:not([data-mode]) .highlight .sb,html[data-mode=light] .highlight .sb{color:#0550ae}html:not([data-mode]) .highlight .bp,html[data-mode=light] .highlight .bp{color:#0550ae}html:not([data-mode]) .highlight .ne,html[data-mode=light] .highlight .ne{color:#0550ae}html:not([data-mode]) .highlight .nl,html[data-mode=light] .highlight .nl{color:#0550ae}html:not([data-mode]) .highlight .py,html[data-mode=light] .highlight .py{color:#0550ae}html:not([data-mode]) .highlight .nv,html:not([data-mode]) .highlight .vc,html:not([data-mode]) .highlight .vg,html:not([data-mode]) .highlight .vi,html:not([data-mode]) .highlight .vm,html[data-mode=light] .highlight .nv,html[data-mode=light] .highlight .vc,html[data-mode=light] .highlight .vg,html[data-mode=light] .highlight .vi,html[data-mode=light] .highlight .vm{color:#0550ae}html:not([data-mode]) .highlight .o,html:not([data-mode]) .highlight .ow,html[data-mode=light] .highlight .o,html[data-mode=light] .highlight .ow{color:#0550ae}html:not([data-mode]) .highlight .gh,html[data-mode=light] .highlight .gh{color:#0550ae;font-weight:bold}html:not([data-mode]) .highlight .gu,html[data-mode=light] .highlight .gu{color:#0550ae;font-weight:bold}html:not([data-mode]) .highlight .s,html:not([data-mode]) .highlight .sa,html:not([data-mode]) .highlight .sc,html:not([data-mode]) .highlight .dl,html:not([data-mode]) .highlight .sd,html:not([data-mode]) .highlight .s2,html:not([data-mode]) .highlight .se,html:not([data-mode]) .highlight .sh,html:not([data-mode]) .highlight .sx,html:not([data-mode]) .highlight .s1,html:not([data-mode]) .highlight .ss,html[data-mode=light] .highlight .s,html[data-mode=light] .highlight .sa,html[data-mode=light] .highlight .sc,html[data-mode=light] .highlight .dl,html[data-mode=light] .highlight .sd,html[data-mode=light] .highlight .s2,html[data-mode=light] .highlight .se,html[data-mode=light] .highlight .sh,html[data-mode=light] .highlight .sx,html[data-mode=light] .highlight .s1,html[data-mode=light] .highlight .ss{color:#0a3069}html:not([data-mode]) .highlight .nd,html[data-mode=light] .highlight .nd{color:#8250df}html:not([data-mode]) .highlight .nf,html:not([data-mode]) .highlight .fm,html[data-mode=light] .highlight .nf,html[data-mode=light] .highlight .fm{color:#8250df}html:not([data-mode]) .highlight .err,html[data-mode=light] .highlight .err{color:#f6f8fa;background-color:#82071e}html:not([data-mode]) .highlight .c,html:not([data-mode]) .highlight .ch,html:not([data-mode]) .highlight .cd,html:not([data-mode]) .highlight .cm,html:not([data-mode]) .highlight .cp,html:not([data-mode]) .highlight .cpf,html:not([data-mode]) .highlight .c1,html:not([data-mode]) .highlight .cs,html[data-mode=light] .highlight .c,html[data-mode=light] .highlight .ch,html[data-mode=light] .highlight .cd,html[data-mode=light] .highlight .cm,html[data-mode=light] .highlight .cp,html[data-mode=light] .highlight .cpf,html[data-mode=light] .highlight .c1,html[data-mode=light] .highlight .cs{color:#68717a}html:not([data-mode]) .highlight .gl,html[data-mode=light] .highlight .gl{color:#68717a}html:not([data-mode]) .highlight .gt,html[data-mode=light] .highlight .gt{color:#68717a}html:not([data-mode]) .highlight .ni,html[data-mode=light] .highlight .ni{color:#24292f}html:not([data-mode]) .highlight .si,html[data-mode=light] .highlight .si{color:#24292f}html:not([data-mode]) .highlight .ge,html[data-mode=light] .highlight .ge{color:#24292f;font-style:italic}html:not([data-mode]) .highlight .gs,html[data-mode=light] .highlight .gs{color:#24292f;font-weight:bold}html[data-mode=dark]{color-scheme:dark;--main-bg: rgb(27 27 30);--mask-bg: rgb(68 69 70);--main-border-color: rgb(44 45 45);--text-color: rgb(175 176 177);--text-muted-color: #868686;--text-muted-highlight-color: #aeaeae;--heading-color: #cccccc;--label-color: #a7a7a7;--blockquote-border-color: rgb(66 66 66);--blockquote-text-color: #868686;--link-color: rgb(138 180 248);--link-underline-color: rgb(82 108 150);--button-bg: #1e1e1e;--btn-border-color: #2e2f31;--btn-backtotop-color: var(--text-color);--btn-backtotop-border-color: #212122;--card-header-bg: #292929;--checkbox-color: rgb(118 120 121);--checkbox-checked-color: var(--link-color);--img-bg: radial-gradient(circle, rgb(22 22 24) 0%, rgb(32 32 32) 100%);--shimmer-bg: linear-gradient( 90deg, rgb(255 255 255 / 0%) 0%, rgb(58 55 55 / 40%) 50%, rgb(255 255 255 / 0%) 100% );--site-title-color: #717070;--site-subtitle-color: #868686;--sidebar-bg: #1e1e1e;--sidebar-border-color: #292929;--sidebar-muted-color: #868686;--sidebar-active-color: rgb(255 255 255 / 95%);--sidebar-hover-bg: #262626;--sidebar-btn-bg: #232328;--sidebar-btn-color: #787878;--avatar-border-color: rgb(206 206 206 / 90%);--topbar-bg: rgb(27 27 30 / 64%);--topbar-text-color: var(--text-color);--search-border-color: rgb(55 55 55);--search-icon-color: rgb(100 102 105);--input-focus-border-color: rgb(112 114 115);--post-list-text-color: rgb(175 176 177);--btn-patinator-text-color: var(--text-color);--btn-paginator-hover-color: #2e2e2e;--toc-highlight: rgb(116 178 243);--toc-popup-border-color: #373737;--tag-hover: rgb(43 56 62);--tb-odd-bg: #252526;--tb-even-bg: rgb(31 31 34);--tb-border-color: var(--tb-odd-bg);--footnote-target-bg: rgb(63 81 181);--btn-share-color: #6c757d;--btn-share-hover-color: #bfc1ca;--card-bg: #1e1e1e;--card-hover-bg: #464d51;--card-shadow: rgb(21 21 21 / 72%) 0 6px 18px 0, rgb(137 135 135 / 24%) 0 0 0 1px;--kbd-wrap-color: #6a6a6a;--kbd-text-color: #d3d3d3;--kbd-bg-color: #242424;--prompt-text-color: rgb(216 212 212 / 75%);--prompt-tip-bg: rgb(22 60 36 / 64%);--prompt-tip-icon-color: rgb(15 164 15 / 81%);--prompt-info-bg: rgb(7 59 104 / 80%);--prompt-info-icon-color: #0075d1;--prompt-warning-bg: rgb(90 69 3 / 88%);--prompt-warning-icon-color: rgb(255 165 0 / 80%);--prompt-danger-bg: rgb(86 28 8 / 80%);--prompt-danger-icon-color: #cd0202;--tag-border: rgb(59 79 88);--tag-shadow: rgb(32 33 33);--dash-color: rgb(63 65 68);--search-tag-bg: #292828;--categories-border: rgb(64 66 69 / 50%);--categories-hover-bg: rgb(73 75 76);--categories-icon-hover-color: white;--timeline-node-bg: rgb(150 152 156);--timeline-color: rgb(63 65 68);--timeline-year-dot-color: var(--timeline-color);--language-border-color: #2d2d2d;--highlight-bg-color: #151515;--highlighter-rouge-color: #c9def1;--highlight-lineno-color: #808080;--inline-code-bg: rgb(255 255 255 / 5%);--code-color: #b0b0b0;--code-header-text-color: #6a6a6a;--code-header-muted-color: #353535;--code-header-icon-color: #565656;--clipboard-checked-color: #2bcc2b;--filepath-text-color: #cacaca}html[data-mode=dark] .light{display:none}html[data-mode=dark] .categories.card,html[data-mode=dark] .list-group-item{background-color:var(--card-bg)}html[data-mode=dark] .categories .card-header{background-color:var(--card-header-bg)}html[data-mode=dark] .categories .list-group-item{border-left:none;border-right:none;padding-left:2rem;border-color:var(--categories-border)}html[data-mode=dark] .categories .list-group-item:last-child{border-bottom-color:var(--card-bg)}html[data-mode=dark] #archives li:nth-child(odd){background-image:linear-gradient(to left, rgb(26, 26, 30), rgb(39, 39, 45), rgb(39, 39, 45), rgb(39, 39, 45), rgb(26, 26, 30))}html[data-mode=dark] #disqus_thread{color-scheme:none}html[data-mode=dark] .highlight .gp{color:#87939d}html[data-mode=dark] .highlight table td{padding:5px}html[data-mode=dark] .highlight table pre{margin:0}html[data-mode=dark] .highlight,html[data-mode=dark] .highlight .w{color:#d0d0d0;background-color:#151515}html[data-mode=dark] .highlight .err{color:#151515;background-color:#ac4142}html[data-mode=dark] .highlight .c,html[data-mode=dark] .highlight .ch,html[data-mode=dark] .highlight .cd,html[data-mode=dark] .highlight .cm,html[data-mode=dark] .highlight .cpf,html[data-mode=dark] .highlight .c1,html[data-mode=dark] .highlight .cs{color:#848484}html[data-mode=dark] .highlight .cp{color:#f4bf75}html[data-mode=dark] .highlight .nt{color:#f4bf75}html[data-mode=dark] .highlight .o,html[data-mode=dark] .highlight .ow{color:#d0d0d0}html[data-mode=dark] .highlight .p,html[data-mode=dark] .highlight .pi{color:#d0d0d0}html[data-mode=dark] .highlight .gi{color:#90a959}html[data-mode=dark] .highlight .gd{color:#f08a8b;background-color:#320000}html[data-mode=dark] .highlight .gh{color:#6a9fb5;background-color:#151515;font-weight:bold}html[data-mode=dark] .highlight .k,html[data-mode=dark] .highlight .kn,html[data-mode=dark] .highlight .kp,html[data-mode=dark] .highlight .kr,html[data-mode=dark] .highlight .kv{color:#aa759f}html[data-mode=dark] .highlight .kc{color:#d28445}html[data-mode=dark] .highlight .kt{color:#d28445}html[data-mode=dark] .highlight .kd{color:#d28445}html[data-mode=dark] .highlight .s,html[data-mode=dark] .highlight .sb,html[data-mode=dark] .highlight .sc,html[data-mode=dark] .highlight .dl,html[data-mode=dark] .highlight .sd,html[data-mode=dark] .highlight .s2,html[data-mode=dark] .highlight .sh,html[data-mode=dark] .highlight .sx,html[data-mode=dark] .highlight .s1{color:#90a959}html[data-mode=dark] .highlight .sa{color:#aa759f}html[data-mode=dark] .highlight .sr{color:#75b5aa}html[data-mode=dark] .highlight .si{color:#b76d45}html[data-mode=dark] .highlight .se{color:#b76d45}html[data-mode=dark] .highlight .nn{color:#f4bf75}html[data-mode=dark] .highlight .nc{color:#f4bf75}html[data-mode=dark] .highlight .no{color:#f4bf75}html[data-mode=dark] .highlight .na{color:#6a9fb5}html[data-mode=dark] .highlight .m,html[data-mode=dark] .highlight .mb,html[data-mode=dark] .highlight .mf,html[data-mode=dark] .highlight .mh,html[data-mode=dark] .highlight .mi,html[data-mode=dark] .highlight .il,html[data-mode=dark] .highlight .mo,html[data-mode=dark] .highlight .mx{color:#90a959}html[data-mode=dark] .highlight .ss{color:#90a959}}@media(prefers-color-scheme: dark){html:not([data-mode]),html[data-mode=dark]{color-scheme:dark;--main-bg: rgb(27 27 30);--mask-bg: rgb(68 69 70);--main-border-color: rgb(44 45 45);--text-color: rgb(175 176 177);--text-muted-color: #868686;--text-muted-highlight-color: #aeaeae;--heading-color: #cccccc;--label-color: #a7a7a7;--blockquote-border-color: rgb(66 66 66);--blockquote-text-color: #868686;--link-color: rgb(138 180 248);--link-underline-color: rgb(82 108 150);--button-bg: #1e1e1e;--btn-border-color: #2e2f31;--btn-backtotop-color: var(--text-color);--btn-backtotop-border-color: #212122;--card-header-bg: #292929;--checkbox-color: rgb(118 120 121);--checkbox-checked-color: var(--link-color);--img-bg: radial-gradient(circle, rgb(22 22 24) 0%, rgb(32 32 32) 100%);--shimmer-bg: linear-gradient( 90deg, rgb(255 255 255 / 0%) 0%, rgb(58 55 55 / 40%) 50%, rgb(255 255 255 / 0%) 100% );--site-title-color: #717070;--site-subtitle-color: #868686;--sidebar-bg: #1e1e1e;--sidebar-border-color: #292929;--sidebar-muted-color: #868686;--sidebar-active-color: rgb(255 255 255 / 95%);--sidebar-hover-bg: #262626;--sidebar-btn-bg: #232328;--sidebar-btn-color: #787878;--avatar-border-color: rgb(206 206 206 / 90%);--topbar-bg: rgb(27 27 30 / 64%);--topbar-text-color: var(--text-color);--search-border-color: rgb(55 55 55);--search-icon-color: rgb(100 102 105);--input-focus-border-color: rgb(112 114 115);--post-list-text-color: rgb(175 176 177);--btn-patinator-text-color: var(--text-color);--btn-paginator-hover-color: #2e2e2e;--toc-highlight: rgb(116 178 243);--toc-popup-border-color: #373737;--tag-hover: rgb(43 56 62);--tb-odd-bg: #252526;--tb-even-bg: rgb(31 31 34);--tb-border-color: var(--tb-odd-bg);--footnote-target-bg: rgb(63 81 181);--btn-share-color: #6c757d;--btn-share-hover-color: #bfc1ca;--card-bg: #1e1e1e;--card-hover-bg: #464d51;--card-shadow: rgb(21 21 21 / 72%) 0 6px 18px 0, rgb(137 135 135 / 24%) 0 0 0 1px;--kbd-wrap-color: #6a6a6a;--kbd-text-color: #d3d3d3;--kbd-bg-color: #242424;--prompt-text-color: rgb(216 212 212 / 75%);--prompt-tip-bg: rgb(22 60 36 / 64%);--prompt-tip-icon-color: rgb(15 164 15 / 81%);--prompt-info-bg: rgb(7 59 104 / 80%);--prompt-info-icon-color: #0075d1;--prompt-warning-bg: rgb(90 69 3 / 88%);--prompt-warning-icon-color: rgb(255 165 0 / 80%);--prompt-danger-bg: rgb(86 28 8 / 80%);--prompt-danger-icon-color: #cd0202;--tag-border: rgb(59 79 88);--tag-shadow: rgb(32 33 33);--dash-color: rgb(63 65 68);--search-tag-bg: #292828;--categories-border: rgb(64 66 69 / 50%);--categories-hover-bg: rgb(73 75 76);--categories-icon-hover-color: white;--timeline-node-bg: rgb(150 152 156);--timeline-color: rgb(63 65 68);--timeline-year-dot-color: var(--timeline-color);--language-border-color: #2d2d2d;--highlight-bg-color: #151515;--highlighter-rouge-color: #c9def1;--highlight-lineno-color: #808080;--inline-code-bg: rgb(255 255 255 / 5%);--code-color: #b0b0b0;--code-header-text-color: #6a6a6a;--code-header-muted-color: #353535;--code-header-icon-color: #565656;--clipboard-checked-color: #2bcc2b;--filepath-text-color: #cacaca}html:not([data-mode]) .light,html[data-mode=dark] .light{display:none}html:not([data-mode]) .categories.card,html:not([data-mode]) .list-group-item,html[data-mode=dark] .categories.card,html[data-mode=dark] .list-group-item{background-color:var(--card-bg)}html:not([data-mode]) .categories .card-header,html[data-mode=dark] .categories .card-header{background-color:var(--card-header-bg)}html:not([data-mode]) .categories .list-group-item,html[data-mode=dark] .categories .list-group-item{border-left:none;border-right:none;padding-left:2rem;border-color:var(--categories-border)}html:not([data-mode]) .categories .list-group-item:last-child,html[data-mode=dark] .categories .list-group-item:last-child{border-bottom-color:var(--card-bg)}html:not([data-mode]) #archives li:nth-child(odd),html[data-mode=dark] #archives li:nth-child(odd){background-image:linear-gradient(to left, rgb(26, 26, 30), rgb(39, 39, 45), rgb(39, 39, 45), rgb(39, 39, 45), rgb(26, 26, 30))}html:not([data-mode]) #disqus_thread,html[data-mode=dark] #disqus_thread{color-scheme:none}html:not([data-mode]) .highlight .gp,html[data-mode=dark] .highlight .gp{color:#87939d}html:not([data-mode]) .highlight table td,html[data-mode=dark] .highlight table td{padding:5px}html:not([data-mode]) .highlight table pre,html[data-mode=dark] .highlight table pre{margin:0}html:not([data-mode]) .highlight,html:not([data-mode]) .highlight .w,html[data-mode=dark] .highlight,html[data-mode=dark] .highlight .w{color:#d0d0d0;background-color:#151515}html:not([data-mode]) .highlight .err,html[data-mode=dark] .highlight .err{color:#151515;background-color:#ac4142}html:not([data-mode]) .highlight .c,html:not([data-mode]) .highlight .ch,html:not([data-mode]) .highlight .cd,html:not([data-mode]) .highlight .cm,html:not([data-mode]) .highlight .cpf,html:not([data-mode]) .highlight .c1,html:not([data-mode]) .highlight .cs,html[data-mode=dark] .highlight .c,html[data-mode=dark] .highlight .ch,html[data-mode=dark] .highlight .cd,html[data-mode=dark] .highlight .cm,html[data-mode=dark] .highlight .cpf,html[data-mode=dark] .highlight .c1,html[data-mode=dark] .highlight .cs{color:#848484}html:not([data-mode]) .highlight .cp,html[data-mode=dark] .highlight .cp{color:#f4bf75}html:not([data-mode]) .highlight .nt,html[data-mode=dark] .highlight .nt{color:#f4bf75}html:not([data-mode]) .highlight .o,html:not([data-mode]) .highlight .ow,html[data-mode=dark] .highlight .o,html[data-mode=dark] .highlight .ow{color:#d0d0d0}html:not([data-mode]) .highlight .p,html:not([data-mode]) .highlight .pi,html[data-mode=dark] .highlight .p,html[data-mode=dark] .highlight .pi{color:#d0d0d0}html:not([data-mode]) .highlight .gi,html[data-mode=dark] .highlight .gi{color:#90a959}html:not([data-mode]) .highlight .gd,html[data-mode=dark] .highlight .gd{color:#f08a8b;background-color:#320000}html:not([data-mode]) .highlight .gh,html[data-mode=dark] .highlight .gh{color:#6a9fb5;background-color:#151515;font-weight:bold}html:not([data-mode]) .highlight .k,html:not([data-mode]) .highlight .kn,html:not([data-mode]) .highlight .kp,html:not([data-mode]) .highlight .kr,html:not([data-mode]) .highlight .kv,html[data-mode=dark] .highlight .k,html[data-mode=dark] .highlight .kn,html[data-mode=dark] .highlight .kp,html[data-mode=dark] .highlight .kr,html[data-mode=dark] .highlight .kv{color:#aa759f}html:not([data-mode]) .highlight .kc,html[data-mode=dark] .highlight .kc{color:#d28445}html:not([data-mode]) .highlight .kt,html[data-mode=dark] .highlight .kt{color:#d28445}html:not([data-mode]) .highlight .kd,html[data-mode=dark] .highlight .kd{color:#d28445}html:not([data-mode]) .highlight .s,html:not([data-mode]) .highlight .sb,html:not([data-mode]) .highlight .sc,html:not([data-mode]) .highlight .dl,html:not([data-mode]) .highlight .sd,html:not([data-mode]) .highlight .s2,html:not([data-mode]) .highlight .sh,html:not([data-mode]) .highlight .sx,html:not([data-mode]) .highlight .s1,html[data-mode=dark] .highlight .s,html[data-mode=dark] .highlight .sb,html[data-mode=dark] .highlight .sc,html[data-mode=dark] .highlight .dl,html[data-mode=dark] .highlight .sd,html[data-mode=dark] .highlight .s2,html[data-mode=dark] .highlight .sh,html[data-mode=dark] .highlight .sx,html[data-mode=dark] .highlight .s1{color:#90a959}html:not([data-mode]) .highlight .sa,html[data-mode=dark] .highlight .sa{color:#aa759f}html:not([data-mode]) .highlight .sr,html[data-mode=dark] .highlight .sr{color:#75b5aa}html:not([data-mode]) .highlight .si,html[data-mode=dark] .highlight .si{color:#b76d45}html:not([data-mode]) .highlight .se,html[data-mode=dark] .highlight .se{color:#b76d45}html:not([data-mode]) .highlight .nn,html[data-mode=dark] .highlight .nn{color:#f4bf75}html:not([data-mode]) .highlight .nc,html[data-mode=dark] .highlight .nc{color:#f4bf75}html:not([data-mode]) .highlight .no,html[data-mode=dark] .highlight .no{color:#f4bf75}html:not([data-mode]) .highlight .na,html[data-mode=dark] .highlight .na{color:#6a9fb5}html:not([data-mode]) .highlight .m,html:not([data-mode]) .highlight .mb,html:not([data-mode]) .highlight .mf,html:not([data-mode]) .highlight .mh,html:not([data-mode]) .highlight .mi,html:not([data-mode]) .highlight .il,html:not([data-mode]) .highlight .mo,html:not([data-mode]) .highlight .mx,html[data-mode=dark] .highlight .m,html[data-mode=dark] .highlight .mb,html[data-mode=dark] .highlight .mf,html[data-mode=dark] .highlight .mh,html[data-mode=dark] .highlight .mi,html[data-mode=dark] .highlight .il,html[data-mode=dark] .highlight .mo,html[data-mode=dark] .highlight .mx{color:#90a959}html:not([data-mode]) .highlight .ss,html[data-mode=dark] .highlight .ss{color:#90a959}html[data-mode=light]{--main-bg: white;--mask-bg: #c1c3c5;--main-border-color: #f3f3f3;--text-color: #34343c;--text-muted-color: #757575;--text-muted-highlight-color: inherit;--heading-color: #2a2a2a;--label-color: #585858;--blockquote-border-color: #eeeeee;--blockquote-text-color: #757575;--link-color: #0056b2;--link-underline-color: #dee2e6;--button-bg: #ffffff;--btn-border-color: #e9ecef;--btn-backtotop-color: #686868;--btn-backtotop-border-color: #f1f1f1;--checkbox-color: #c5c5c5;--checkbox-checked-color: #07a8f7;--img-bg: radial-gradient(circle, rgb(255 255 255) 0%, rgb(239 239 239) 100%);--shimmer-bg: linear-gradient( 90deg, rgb(250 250 250 / 0%) 0%, rgb(232 230 230 / 100%) 50%, rgb(250 250 250 / 0%) 100% );--site-title-color: rgb(113 113 113);--site-subtitle-color: #717171;--sidebar-bg: #f6f8fa;--sidebar-border-color: #efefef;--sidebar-muted-color: #545454;--sidebar-active-color: #1d1d1d;--sidebar-hover-bg: rgb(223 233 241 / 64%);--sidebar-btn-bg: white;--sidebar-btn-color: #8e8e8e;--avatar-border-color: white;--topbar-bg: rgb(255 255 255 / 70%);--topbar-text-color: rgb(78 78 78);--search-border-color: rgb(240 240 240);--search-icon-color: #c2c6cc;--input-focus-border-color: #b8b8b8;--post-list-text-color: dimgray;--btn-patinator-text-color: #555555;--btn-paginator-hover-color: var(--sidebar-bg);--toc-highlight: #0550ae;--toc-popup-border-color: lightgray;--btn-share-color: gray;--btn-share-hover-color: #0d6efd;--card-bg: white;--card-hover-bg: #e2e2e2;--card-shadow: rgb(104 104 104 / 5%) 0 2px 6px 0, rgb(211 209 209 / 15%) 0 0 0 1px;--footnote-target-bg: lightcyan;--tb-odd-bg: #fbfcfd;--tb-border-color: #eaeaea;--dash-color: silver;--kbd-wrap-color: #bdbdbd;--kbd-text-color: var(--text-color);--kbd-bg-color: white;--prompt-text-color: rgb(46 46 46 / 77%);--prompt-tip-bg: rgb(123 247 144 / 20%);--prompt-tip-icon-color: #03b303;--prompt-info-bg: #e1f5fe;--prompt-info-icon-color: #0070cb;--prompt-warning-bg: rgb(255 243 205);--prompt-warning-icon-color: #ef9c03;--prompt-danger-bg: rgb(248 215 218 / 56%);--prompt-danger-icon-color: #df3c30;--tag-border: #dee2e6;--tag-shadow: var(--btn-border-color);--tag-hover: rgb(222 226 230);--search-tag-bg: #f8f9fa;--categories-border: rgb(0 0 0 / 12.5%);--categories-hover-bg: var(--btn-border-color);--categories-icon-hover-color: darkslategray;--timeline-color: rgb(0 0 0 / 7.5%);--timeline-node-bg: #c2c6cc;--timeline-year-dot-color: #ffffff;--language-border-color: #ececec;--highlight-bg-color: #f6f8fa;--highlighter-rouge-color: #3f596f;--highlight-lineno-color: #9e9e9e;--inline-code-bg: rgb(25 25 28 / 5%);--code-color: #3a3a3a;--code-header-text-color: #a3a3a3;--code-header-muted-color: #e5e5e5;--code-header-icon-color: #c9c8c8;--clipboard-checked-color: #43c743}html[data-mode=light] [class^=prompt-]{--link-underline-color: rgb(219 216 216)}html[data-mode=light] .dark{display:none}html[data-mode=light] .highlight table td{padding:5px}html[data-mode=light] .highlight table pre{margin:0}html[data-mode=light] .highlight,html[data-mode=light] .highlight .w{color:#24292f;background-color:#f6f8fa}html[data-mode=light] .highlight .k,html[data-mode=light] .highlight .kd,html[data-mode=light] .highlight .kn,html[data-mode=light] .highlight .kp,html[data-mode=light] .highlight .kr,html[data-mode=light] .highlight .kt,html[data-mode=light] .highlight .kv{color:#cf222e}html[data-mode=light] .highlight .gr{color:#f6f8fa}html[data-mode=light] .highlight .gd{color:#82071e;background-color:#ffebe9}html[data-mode=light] .highlight .nb{color:#953800}html[data-mode=light] .highlight .nc{color:#953800}html[data-mode=light] .highlight .no{color:#953800}html[data-mode=light] .highlight .nn{color:#953800}html[data-mode=light] .highlight .sr{color:#116329}html[data-mode=light] .highlight .na{color:#116329}html[data-mode=light] .highlight .nt{color:#116329}html[data-mode=light] .highlight .gi{color:#116329;background-color:#dafbe1}html[data-mode=light] .highlight .kc{color:#0550ae}html[data-mode=light] .highlight .l,html[data-mode=light] .highlight .ld,html[data-mode=light] .highlight .m,html[data-mode=light] .highlight .mb,html[data-mode=light] .highlight .mf,html[data-mode=light] .highlight .mh,html[data-mode=light] .highlight .mi,html[data-mode=light] .highlight .il,html[data-mode=light] .highlight .mo,html[data-mode=light] .highlight .mx{color:#0550ae}html[data-mode=light] .highlight .sb{color:#0550ae}html[data-mode=light] .highlight .bp{color:#0550ae}html[data-mode=light] .highlight .ne{color:#0550ae}html[data-mode=light] .highlight .nl{color:#0550ae}html[data-mode=light] .highlight .py{color:#0550ae}html[data-mode=light] .highlight .nv,html[data-mode=light] .highlight .vc,html[data-mode=light] .highlight .vg,html[data-mode=light] .highlight .vi,html[data-mode=light] .highlight .vm{color:#0550ae}html[data-mode=light] .highlight .o,html[data-mode=light] .highlight .ow{color:#0550ae}html[data-mode=light] .highlight .gh{color:#0550ae;font-weight:bold}html[data-mode=light] .highlight .gu{color:#0550ae;font-weight:bold}html[data-mode=light] .highlight .s,html[data-mode=light] .highlight .sa,html[data-mode=light] .highlight .sc,html[data-mode=light] .highlight .dl,html[data-mode=light] .highlight .sd,html[data-mode=light] .highlight .s2,html[data-mode=light] .highlight .se,html[data-mode=light] .highlight .sh,html[data-mode=light] .highlight .sx,html[data-mode=light] .highlight .s1,html[data-mode=light] .highlight .ss{color:#0a3069}html[data-mode=light] .highlight .nd{color:#8250df}html[data-mode=light] .highlight .nf,html[data-mode=light] .highlight .fm{color:#8250df}html[data-mode=light] .highlight .err{color:#f6f8fa;background-color:#82071e}html[data-mode=light] .highlight .c,html[data-mode=light] .highlight .ch,html[data-mode=light] .highlight .cd,html[data-mode=light] .highlight .cm,html[data-mode=light] .highlight .cp,html[data-mode=light] .highlight .cpf,html[data-mode=light] .highlight .c1,html[data-mode=light] .highlight .cs{color:#68717a}html[data-mode=light] .highlight .gl{color:#68717a}html[data-mode=light] .highlight .gt{color:#68717a}html[data-mode=light] .highlight .ni{color:#24292f}html[data-mode=light] .highlight .si{color:#24292f}html[data-mode=light] .highlight .ge{color:#24292f;font-style:italic}html[data-mode=light] .highlight .gs{color:#24292f;font-weight:bold}}@media all and (min-width: 850px){html{overflow-y:scroll}}body{background:var(--main-bg);padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);color:var(--text-color);-webkit-font-smoothing:antialiased;font-family:"Source Sans Pro","Microsoft Yahei",sans-serif}@media all and (max-width: calc(850px - 1px)){h1.dynamic-title{display:none}h1.dynamic-title~.content{margin-top:2.5rem}}@media all and (min-width: 1650px){main.col-12{padding-right:4.5rem !important}}.preview-img{aspect-ratio:40/21;width:100%;height:100%;overflow:hidden}.preview-img:not(.no-bg){background:var(--img-bg)}.preview-img img{height:100%;-o-object-fit:cover;object-fit:cover}#post-list .preview-img img{width:100%}.post-preview{border:0;background:var(--card-bg);box-shadow:var(--card-shadow)}.post-preview::before{content:"";width:100%;height:100%;position:absolute;background-color:var(--card-hover-bg);opacity:0;transition:opacity .35s ease-in-out}.post-preview:hover::before{opacity:.3}.content{font-size:1.08rem;margin-top:2rem;overflow-wrap:break-word}@media all and (min-width: 1200px){.content{font-size:1.03rem}}.content a.popup{margin-top:.5rem;margin-bottom:.5rem;cursor:zoom-in}.content ol:not([class]),.content ol.task-list,.content ul:not([class]),.content ul.task-list{-webkit-padding-start:1.75rem;padding-inline-start:1.75rem}.content ol:not([class]) li,.content ol.task-list li,.content ul:not([class]) li,.content ul.task-list li{margin:.25rem 0;padding-left:.25rem}.content ol:not([class]) ol,.content ol:not([class]) ul,.content ol.task-list ol,.content ol.task-list ul,.content ul:not([class]) ol,.content ul:not([class]) ul,.content ul.task-list ol,.content ul.task-list ul{-webkit-padding-start:1.25rem;padding-inline-start:1.25rem;margin:.5rem 0}.content ul.task-list{-webkit-padding-start:1.25rem;padding-inline-start:1.25rem}.content ul.task-list li{list-style-type:none;padding-left:0}.content ul.task-list li>i{width:2rem;margin-left:-1.25rem;color:var(--checkbox-color)}.content ul.task-list li>i.checked{color:var(--checkbox-checked-color)}.content ul.task-list li ul{-webkit-padding-start:1.75rem;padding-inline-start:1.75rem}.content ul.task-list input[type=checkbox]{margin:0 .5rem .2rem -1.3rem;vertical-align:middle}.content dl>dd{margin-left:1rem}.content ::marker{color:var(--text-muted-color)}@media all and (min-width: 850px){.content .table-wrapper>table{min-width:70%}}.post-tag{display:inline-block;min-width:2rem;text-align:center;border-radius:.5rem;border:1px solid var(--btn-border-color);padding:0 .4rem;color:var(--text-muted-color);line-height:1.3rem}.post-tag:not(:last-child){margin-right:.2rem}.rounded-10{border-radius:10px !important}.img-link{color:rgba(0,0,0,0);display:inline-flex}.shimmer{overflow:hidden;position:relative;background:var(--img-bg)}.shimmer::before{content:"";position:absolute;background:var(--shimmer-bg);height:100%;width:100%;-webkit-animation:shimmer 1.3s infinite;animation:shimmer 1.3s infinite}@-webkit-keyframes shimmer{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}@keyframes shimmer{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}.embed-video{width:100%;height:100%;margin-bottom:1rem;aspect-ratio:16/9}.embed-video.twitch{aspect-ratio:310/189}.embed-video.file{display:block;width:auto;height:auto;max-width:100%;max-height:100%;margin:auto;margin-bottom:0}.embed-audio{width:100%}.embed-audio.file{display:block}.embed-audio.spotify{border-radius:14px}.flex-grow-1{flex-grow:1 !important}.btn-box-shadow{box-shadow:var(--card-shadow)}.text-muted{color:var(--text-muted-color) !important}.tooltip-inner{font-size:.7rem;max-width:220px;text-align:left}.btn.btn-outline-primary:not(.disabled):hover{border-color:#007bff !important}.disabled{color:#cec4c4;pointer-events:auto;cursor:not-allowed}.hide-border-bottom{border-bottom:none !important}.input-focus{box-shadow:none;border-color:var(--input-focus-border-color) !important;background:center !important;transition:background-color .15s ease-in-out,border-color .15s ease-in-out}.left{float:left;margin:.75rem 1rem 1rem 0}.right{float:right;margin:.75rem 0 1rem 1rem}.mermaid{text-align:center}mjx-container{overflow-y:hidden;min-width:auto !important}@media(hover: hover){#sidebar ul>li:last-child::after{transition:top .5s ease}.nav-link{transition:background-color .3s ease-in-out}.post-preview{transition:background-color .35s ease-in-out}}#mask{inset:0 0 0 0}#main-wrapper{position:relative;padding-left:0;padding-right:0}@media all and (max-width: calc(850px - 1px)){#main-wrapper{transition:transform .4s ease}}@media all and (min-width: 850px){#main-wrapper{margin-left:260px}}@media all and (min-width: 1650px){#main-wrapper{margin-left:300px}}#main-wrapper>.container{min-height:100vh}@media all and (max-width: 768px){#main-wrapper>.container{max-width:100%;padding-left:0;padding-right:0}}@media all and (max-width: calc(850px - 1px)){#main-wrapper>.container{max-width:100%}}@media all and (min-width: 992px)and (max-width: calc(1200px - 1px)){#main-wrapper>.container .col-lg-11{flex:0 0 96%;max-width:96%}}@media all and (max-width: calc(1200px - 1px)){#main-wrapper>.container>.row{justify-content:center !important}}@media all and (min-width: 1650px){#main-wrapper>.container{max-width:1250px;padding-left:1.75rem !important;padding-right:1.75rem !important}}#topbar-wrapper.row,#main-wrapper>.container>.row,#search-result-wrapper>.row{margin-left:0;margin-right:0}@media all and (min-width: 1650px){#tail-wrapper{padding-right:4.5rem !important}}#tail-wrapper>:not(script){margin-top:3rem}h1{font-size:2rem}main h2{margin:2.5rem 0 1.25rem}h2{font-size:1.54rem}main h3{margin:2rem 0 1rem}h3{font-size:1.36rem}main h4{margin:2rem 0 1rem}h4{font-size:1.18rem}h5{font-size:1.05rem}a{text-decoration:none}img{max-width:100%;height:auto;transition:all .35s ease-in-out}.blur img{-webkit-filter:blur(20px);filter:blur(20px)}blockquote{border-left:.125rem solid var(--blockquote-border-color);padding-left:1rem;color:var(--blockquote-text-color);margin-top:.5rem}blockquote>p:last-child{margin-bottom:0}blockquote[class^=prompt-]{border-left:0;position:relative;padding:1rem 1rem 1rem 3rem;color:var(--prompt-text-color)}blockquote[class^=prompt-]::before{text-align:center;width:3rem;position:absolute;left:.25rem;margin-top:.4rem;text-rendering:auto;-webkit-font-smoothing:antialiased}blockquote.prompt-tip{background-color:var(--prompt-tip-bg)}blockquote.prompt-tip::before{content:"";color:var(--prompt-tip-icon-color);font:var(--fa-font-regular)}blockquote.prompt-info{background-color:var(--prompt-info-bg)}blockquote.prompt-info::before{content:"";color:var(--prompt-info-icon-color);font:var(--fa-font-solid);transform:rotate(180deg)}blockquote.prompt-warning{background-color:var(--prompt-warning-bg)}blockquote.prompt-warning::before{content:"";color:var(--prompt-warning-icon-color);font:var(--fa-font-solid)}blockquote.prompt-danger{background-color:var(--prompt-danger-bg)}blockquote.prompt-danger::before{content:"";color:var(--prompt-danger-icon-color);font:var(--fa-font-solid)}kbd{font-family:Lato,sans-serif;display:inline-block;vertical-align:middle;line-height:1.3rem;min-width:1.75rem;text-align:center;margin:0 .3rem;padding-top:.1rem;color:var(--kbd-text-color);background-color:var(--kbd-bg-color);border-radius:6px;border:solid 1px var(--kbd-wrap-color);box-shadow:inset 0 -2px 0 var(--kbd-wrap-color)}hr{border-color:var(--main-border-color);opacity:1}footer{background-color:var(--main-bg);height:5rem;border-top:1px solid var(--main-border-color)}footer p{text-align:center;margin-bottom:0}main{line-height:1.75}main h1{margin-top:2rem}@media all and (min-width: 850px){main h1{margin-top:3rem}}main p>a.popup:not(.normal):not(.left):not(.right){position:relative;left:50%;transform:translateX(-50%)}@media all and (max-width: 576px){main .content>blockquote[class^=prompt-]{margin-left:-1rem;margin-right:-1rem;border-radius:0;max-width:none}}.footnotes>ol{padding-left:2rem;margin-top:.5rem}.footnotes>ol>li:not(:last-child){margin-bottom:.3rem}.footnotes>ol>li>p{margin-left:.25em;margin-top:0;margin-bottom:0}a.footnote{margin-left:1px;margin-right:1px;padding-left:2px;padding-right:2px;border-bottom-style:none !important}a.reversefootnote{font-size:.6rem;line-height:1;position:relative;bottom:.25em;margin-left:.25em;border-bottom-style:none !important}.table-wrapper{overflow-x:auto;margin-bottom:1.5rem}.table-wrapper>table{min-width:100%;overflow-x:auto;border-spacing:0}.table-wrapper>table thead{border-bottom:solid 2px rgba(210,215,217,.75)}.table-wrapper>table tbody tr{border-bottom:1px solid var(--tb-border-color)}.table-wrapper>table tbody tr:nth-child(2n){background-color:var(--tb-even-bg)}.table-wrapper>table tbody tr:nth-child(2n+1){background-color:var(--tb-odd-bg)}.highlighter-rouge{color:var(--highlighter-rouge-color);margin-top:.5rem;margin-bottom:1.2em}.highlight{overflow:auto;padding-bottom:.75rem}.highlight pre{margin-bottom:0;font-size:.85rem;line-height:1.4rem}.highlight table td:first-child{display:inline-block;margin-left:1rem;margin-right:.75rem}.highlight table td:last-child{padding-right:2rem !important}.highlight table td pre{overflow:visible;word-break:normal}.highlight .lineno{text-align:right;color:var(--highlight-lineno-color);-webkit-user-select:none;-moz-user-select:none;-o-user-select:none;-ms-user-select:none;user-select:none}code{-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;color:var(--code-color)}code.highlighter-rouge{font-size:.85rem;padding:3px 5px;overflow-wrap:break-word;border-radius:6px;background-color:var(--inline-code-bg)}code.filepath{background-color:inherit;color:var(--filepath-text-color);font-weight:600;padding:0}a>code.highlighter-rouge{padding-bottom:0;color:inherit}a:hover>code.highlighter-rouge{border-bottom:none}blockquote code{color:inherit}td.rouge-code a{color:inherit !important;border-bottom:none !important;pointer-events:none}div[class^=language-]{box-shadow:var(--language-border-color) 0 0 0 1px}.content>div[class^=language-]{margin-left:-1rem;margin-right:-1rem;border-radius:0}@media all and (min-width: 576px){.content>div[class^=language-]{margin-left:0;margin-right:0;border-radius:10px}}@media all and (min-width: 576px){div[class^=language-] .code-header{margin-left:0;margin-right:0}div[class^=language-] .code-header::before{content:"";display:inline-block;margin-left:1rem;width:.75rem;height:.75rem;border-radius:50%;background-color:var(--code-header-muted-color);box-shadow:1.25rem 0 0 var(--code-header-muted-color),2.5rem 0 0 var(--code-header-muted-color)}div[class^=language-] .code-header span{margin-left:-0.875rem}}div[class^=language-] .highlight{border-top-left-radius:0;border-top-right-radius:0}div.nolineno td:first-child,div.language-plaintext td:first-child,div.language-console td:first-child,div.language-terminal td:first-child{padding:0 !important;margin-right:0}div.nolineno td:first-child .lineno,div.language-plaintext td:first-child .lineno,div.language-console td:first-child .lineno,div.language-terminal td:first-child .lineno{display:none}.code-header{display:flex;justify-content:space-between;align-items:center;height:2.25rem;margin-left:.75rem;margin-right:.25rem}.code-header span{line-height:2.25rem}.code-header span i{font-size:1rem;width:1.75rem;color:var(--code-header-icon-color)}.code-header span i.small{font-size:70%}[file] .code-header span>i{position:relative;top:1px}.code-header span::after{content:attr(data-label-text);font-size:.85rem;font-weight:600;color:var(--code-header-text-color)}.code-header button{border:1px solid rgba(0,0,0,0);height:2.25rem;width:2.25rem;padding:0;background-color:inherit}.code-header button i{color:var(--code-header-icon-color)}.code-header button[timeout]:hover{border-color:var(--clipboard-checked-color)}.code-header button[timeout] i{color:var(--clipboard-checked-color)}.code-header button:focus{outline:none}.code-header button:not([timeout]):hover{background-color:rgba(128,128,128,.37)}.code-header button:not([timeout]):hover i{color:#fff}#back-to-top{visibility:hidden;opacity:0;z-index:1;cursor:pointer;position:fixed;right:1rem;bottom:4.625rem;background:var(--button-bg);color:var(--btn-backtotop-color);padding:0;width:2.75rem;height:2.75rem;border-radius:50%;border:1px solid var(--btn-backtotop-border-color);transition:opacity .5s ease-in-out,transform .2s ease-out}@media all and (min-width: 850px){#back-to-top{right:5%;bottom:3.625rem}}@media all and (min-width: 1400px){#back-to-top{right:calc((100vw - 260px - 1140px)/2 + 3rem)}}@media all and (min-width: 1650px){#back-to-top{right:calc((100vw - 300px - 1250px)/2 + 2rem)}}#back-to-top:hover{transform:translate3d(0, -5px, 0);-webkit-transform:translate3d(0, -5px, 0)}#back-to-top i{line-height:2.75rem;position:relative;bottom:2px}#back-to-top.show{opacity:1;visibility:visible}@-webkit-keyframes popup{from{opacity:0;bottom:0}}@keyframes popup{from{opacity:0;bottom:0}}#notification .toast-header{background:none;border-bottom:none;color:inherit}#notification .toast-body{font-family:Lato,sans-serif;line-height:1.25rem}#notification .toast-body button{font-size:90%;min-width:4rem}#notification.toast.show{display:block;min-width:20rem;border-radius:.5rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background-color:hsla(0,0%,100%,.5);color:rgba(27,27,30,.7294117647);position:fixed;left:50%;bottom:20%;transform:translateX(-50%);-webkit-animation:popup .8s;animation:popup .8s}#toc-popup{border-color:var(--toc-popup-border-color);border-width:1px;border-radius:10px;color:var(--text-color);background:var(--card-bg);margin-top:3rem;min-width:20rem;font-size:1.05rem}@media all and (min-width: 576px){#toc-popup{max-width:32rem}}#toc-popup[open]{-webkit-animation:slide-in .3s ease-out;animation:slide-in .3s ease-out}#toc-popup[closing]{-webkit-animation:slide-out .3s ease-out;animation:slide-out .3s ease-out}@media all and (min-width: 850px){#toc-popup{left:260px}}#toc-popup .header{position:-webkit-sticky;position:sticky;top:0;background-color:inherit;border-bottom:1px solid var(--main-border-color)}#toc-popup .header .label{font-family:Lato,"Microsoft Yahei",sans-serif}#toc-popup button>i{font-size:1.25rem;vertical-align:middle}#toc-popup button:focus-visible{box-shadow:none}#toc-popup ul{list-style-type:none;padding-left:0}#toc-popup ul li ul,#toc-popup ul li+li{margin-top:.25rem}#toc-popup ul li a{display:flex;line-height:1.5;padding:.375rem 0;padding-right:1.125rem}#toc-popup ul li a.toc-link::before{display:none}#toc-popup .node-name--H2{padding-left:1.125rem}#toc-popup .node-name--H3{padding-left:2.25rem}#toc-popup .node-name--H4{padding-left:3.375rem}#toc-popup .is-active-link{color:var(--toc-highlight) !important;font-weight:600}#toc-popup::-webkit-backdrop{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}#toc-popup::backdrop{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}#toc-popup::after{display:flex;content:"";position:relative;background:linear-gradient(transparent, var(--card-bg) 70%);height:2rem}#toc-popup #toc-popup-content{overflow:auto;max-height:calc(100vh - 12rem);font-family:Lato,"Microsoft Yahei",sans-serif;margin-bottom:-2rem}#sidebar{padding-left:0;padding-right:0;position:fixed;top:0;left:0;height:100%;overflow-y:auto;width:260px;background:var(--sidebar-bg);border-right:1px solid var(--sidebar-border-color);-ms-overflow-style:none;scrollbar-width:none}#sidebar::-webkit-scrollbar{display:none}@media all and (max-width: calc(850px - 1px)){#sidebar{transition:transform .4s ease;transform:translateX(-260px);-webkit-transform:translateX(-260px)}[sidebar-display] #sidebar{transform:translateX(0)}}@media all and (min-width: 1650px){#sidebar{width:300px}}#sidebar .sidebar-bottom #mode-toggle:hover,#sidebar .sidebar-bottom a:hover,#sidebar .site-title:hover{color:var(--sidebar-active-color)}#sidebar #avatar{display:block;width:6.5rem;height:6.5rem;overflow:hidden;box-shadow:var(--avatar-border-color) 0 0 0 2px;transform:translateZ(0)}@media all and (min-width: 576px){#sidebar #avatar{width:7rem;height:7rem}}#sidebar #avatar img{transition:transform .5s}#sidebar #avatar img:hover{transform:scale(1.2)}#sidebar .profile-wrapper{margin-top:2.5rem;margin-bottom:2.5rem;padding-left:2.5rem;padding-right:1.25rem;width:100%}@media all and (min-width: 850px){#sidebar .profile-wrapper{margin-top:3rem}}@media all and (min-width: 1650px){#sidebar .profile-wrapper{margin-top:3.5rem;margin-bottom:2.5rem;padding-left:3.5rem}}#sidebar .site-title{font-family:inherit;font-weight:900;font-size:1.75rem;line-height:1.2;letter-spacing:.25px;margin-top:1.25rem;margin-bottom:.5rem;width:fit-content;color:var(--site-title-color)}#sidebar .site-subtitle{font-size:95%;color:var(--site-subtitle-color);margin-top:.25rem;word-spacing:1px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#sidebar ul{margin-bottom:2rem}#sidebar ul li.nav-item{opacity:.9;width:100%;padding-left:1.5rem;padding-right:1.5rem}@media all and (min-width: 1650px){#sidebar ul li.nav-item{padding-left:2.75rem;padding-right:2.75rem}}#sidebar ul li.nav-item a.nav-link{padding-top:.6rem;padding-bottom:.6rem;display:flex;align-items:center;border-radius:.75rem;font-weight:600}#sidebar ul li.nav-item a.nav-link:hover{background-color:var(--sidebar-hover-bg)}#sidebar ul li.nav-item a.nav-link i{font-size:95%;opacity:.8;margin-right:1.5rem}#sidebar ul li.nav-item a.nav-link span{font-size:90%;letter-spacing:.2px}#sidebar ul li.nav-item.active .nav-link{color:var(--sidebar-active-color);background-color:var(--sidebar-hover-bg)}#sidebar ul li.nav-item.active .nav-link span{opacity:1}#sidebar ul li.nav-item:not(:first-child){margin-top:.25rem}#sidebar .sidebar-bottom{padding-left:2rem;padding-right:1rem;margin-bottom:1.5rem}@media all and (min-width: 1650px){#sidebar .sidebar-bottom{padding-left:2.75rem;margin-bottom:1.75rem}}#sidebar .sidebar-bottom #mode-toggle,#sidebar .sidebar-bottom a{width:1.75rem;height:1.75rem;margin-bottom:.5rem;border-radius:50%;color:var(--sidebar-btn-color);background-color:var(--sidebar-btn-bg);text-align:center;display:flex;align-items:center;justify-content:center}#sidebar .sidebar-bottom #mode-toggle:not(:focus-visible),#sidebar .sidebar-bottom a:not(:focus-visible){box-shadow:var(--sidebar-border-color) 0 0 0 1px}#sidebar .sidebar-bottom #mode-toggle:hover,#sidebar .sidebar-bottom a:hover{background-color:var(--sidebar-hover-bg)}#sidebar .sidebar-bottom a:not(:last-child){margin-right:.8rem}@media all and (min-width: 1650px){#sidebar .sidebar-bottom a:not(:last-child){margin-right:1rem}}#sidebar .sidebar-bottom i{line-height:1.75rem}#sidebar .sidebar-bottom .icon-border{margin-left:calc((.8rem - 3px)/2);margin-right:calc((.8rem - 3px)/2);background-color:var(--sidebar-btn-color);content:"";width:3px;height:3px;border-radius:50%;margin-bottom:.5rem}@media all and (min-width: 1650px){#sidebar .sidebar-bottom .icon-border{margin-left:calc((1rem - 3px)/2);margin-right:calc((1rem - 3px)/2)}}@media all and (max-width: calc(850px - 1px)){[sidebar-display] #main-wrapper{transform:translateX(260px)}}#topbar-wrapper{height:3rem;background-color:var(--topbar-bg)}@media all and (max-width: calc(850px - 1px)){#topbar-wrapper{transition:transform .4s ease,top .2s ease;left:0}}#topbar #breadcrumb{font-size:1rem;color:var(--text-muted-color);padding-left:.5rem}#topbar #breadcrumb span:not(:last-child)::after{content:"›";padding:0 .3rem}@media all and (max-width: calc(850px - 1px)){#topbar #breadcrumb{display:none}}@media all and (min-width: 850px)and (max-width: calc(1200px - 1px)){#topbar #breadcrumb{width:65%;overflow:hidden;text-overflow:ellipsis;word-break:keep-all;white-space:nowrap}}@media all and (max-width: 768px){#topbar{max-width:100%}}@media all and (max-width: calc(850px - 1px)){#topbar{max-width:100%}}#topbar-title{display:none;font-size:1.1rem;font-weight:600;font-family:sans-serif;color:var(--topbar-text-color);text-align:center;width:70%;word-break:keep-all}@media all and (max-width: calc(850px - 1px)){#topbar-title{display:block}}@media all and (min-width: 850px){#topbar-title{text-align:left}}#sidebar-trigger,#search-trigger{display:none}@media all and (max-width: calc(850px - 1px)){#sidebar-trigger,#search-trigger{display:block}}.access{top:2rem;transition:top .2s ease-in-out;margin-top:3rem}.access:only-child{position:-webkit-sticky;position:sticky}.access>section{padding-left:1rem}.access>section:not(:first-child){margin-top:4rem}.access .content{font-size:.9rem}#panel-wrapper .panel-heading{font-family:inherit;line-height:inherit;color:var(--label-color);font-size:inherit;font-weight:600}#panel-wrapper .post-tag{line-height:1.05rem;font-size:.85rem;border-radius:.8rem;padding:.3rem .5rem;margin:0 .35rem .5rem 0}#panel-wrapper .post-tag:hover{transition:all .3s ease-in}#panel-wrapper>:last-child{margin-bottom:4rem}@media all and (max-width: calc(1200px - 1px)){#panel-wrapper{display:none}}#access-lastmod a{color:inherit}footer{background-color:var(--main-bg);height:5rem;border-top:1px solid var(--main-border-color)}@media all and (max-width: calc(850px - 1px)){footer{transition:transform .4s ease;height:6rem;padding:1.5rem 0}}footer p{text-align:center;margin-bottom:0}search{display:flex;width:100%;border-radius:1rem;border:1px solid var(--search-border-color);background:var(--main-bg);padding:0 .5rem}search i{z-index:2;font-size:.9rem;color:var(--search-icon-color)}@media all and (max-width: calc(850px - 1px)){search{display:none}}@media all and (min-width: 850px){search{max-width:200px}}@media all and (min-width: 1200px){search{margin-right:4rem}}@media all and (min-width: 1650px){search{margin-right:calc(112.5px - .75rem)}}#search-result-wrapper{display:none;height:100%;width:100%;overflow:auto}#search-result-wrapper .content{margin-top:2rem}@media all and (max-width: calc(850px - 1px)){#search-result-wrapper{width:100%}#search-result-wrapper .content{letter-spacing:0}}@media all and (min-width: 850px){#search-result-wrapper{max-width:1250px;justify-content:start !important}}#search-results{padding-bottom:3rem}@media all and (min-width: 850px)and (max-width: calc(1200px - 1px)){#search-results>div{max-width:700px}}#search-results a{font-size:1.4rem;line-height:1.5rem}#search-results>article{width:100%}#search-results>article:not(:last-child){margin-bottom:1rem}@media all and (min-width: 1200px){#search-results>article{width:45%}#search-results>article:nth-child(odd){margin-right:1.5rem}#search-results>article:nth-child(even){margin-left:1.5rem}#search-results>article:last-child:nth-child(odd){position:relative;right:24.3%}}#search-results>article h2{line-height:2.5rem}#search-results>article i{color:#818182;margin-right:.15rem;font-size:80%}#search-results>article>p{white-space:break-spaces;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}#search-cancel{color:var(--link-color);display:none;white-space:nowrap}#search-input{background:center;border:0;border-radius:0;padding:.18rem .3rem;color:var(--text-color);height:auto}#search-input:focus{box-shadow:none}@media all and (min-width: 1200px){#search-input{transition:all .3s ease-in-out}}#search-hints{padding:0 1rem}@media all and (min-width: 850px){#search-hints{display:none}}#search-hints h4{margin-bottom:1.5rem}#search-hints .post-tag{display:inline-block;line-height:1rem;font-size:1rem;background:var(--search-tag-bg);border:none;padding:.5rem;margin:0 1.25rem 1rem 0}#search-hints .post-tag::before{content:"#";color:var(--text-muted-color);padding-right:.2rem}#post-list{margin-top:2rem}@media all and (min-width: 850px){#post-list{margin-top:2.5rem}}#post-list .card-wrapper:hover{text-decoration:none}#post-list .card-wrapper:not(:last-child){margin-bottom:1.25rem}#post-list .card{border:0;background:none}#post-list .card .preview-img img,#post-list .card .preview-img{border-radius:10px 10px 0 0}@media all and (min-width: 768px){#post-list .card .preview-img img,#post-list .card .preview-img{border-radius:0 10px 10px 0}}#post-list .card .card-body{height:100%;padding:1rem}@media all and (min-width: 768px){#post-list .card .card-body{padding:1.75rem 1.75rem 1.25rem}}#post-list .card .card-body .card-title{color:var(--heading-color) !important;font-size:1.25rem}#post-list .card .card-body .post-meta,#post-list .card .card-body .card-text.content{color:var(--text-muted-color) !important}@media all and (min-width: 768px){#post-list .card .card-body .card-text{display:inherit !important}}#post-list .card .card-body .card-text.content p{line-height:1.5;margin:0}#post-list .card .card-body .post-meta i:not(:first-child){margin-left:1.5rem}@media all and (min-width: 768px){#post-list .card .card-body .post-meta i:not(:first-child){margin-left:1.75rem}}#post-list .card .card-body .post-meta em{color:inherit}#post-list .card .card-body .post-meta>div:first-child{display:block}.pagination{color:var(--text-color);font-family:Lato,sans-serif;justify-content:space-evenly}@media all and (min-width: 850px){.pagination{font-size:.85rem;justify-content:center}}.pagination a:hover{text-decoration:none}@media all and (max-width: calc(850px - 1px)){.pagination .page-item:not(:first-child):not(:last-child){display:none}}@media all and (min-width: 850px){.pagination .page-item:not(:last-child){margin-right:.7rem}}.pagination .page-item .page-link{color:var(--btn-patinator-text-color);padding:0 .6rem;border-radius:.5rem;border:0;background-color:inherit}.pagination .page-item.active .page-link{background-color:var(--btn-paginator-hover-color)}.pagination .page-item:not(.active) .page-link:hover{box-shadow:inset var(--btn-border-color) 0 0 0 1px}.pagination .page-item.disabled{cursor:not-allowed}.pagination .page-item.disabled .page-link{color:rgba(108,117,125,.57)}@media all and (min-width: 850px){.pagination .page-index{display:none}}.post-navigation .btn.disabled,.post-navigation .btn{width:50%;position:relative;border-color:var(--btn-border-color)}header .post-desc{font-size:1.125rem;line-height:1.6}header .post-meta span+span::before{content:"•";padding-left:.25rem;padding-right:.25rem}header .post-meta em a{color:inherit}header h1+.post-meta{margin-top:1.5rem}.post-tail-wrapper{margin-top:6rem;border-bottom:1px double var(--main-border-color)}.post-tail-wrapper .license-wrapper{line-height:1.2rem}.post-tail-wrapper .share-wrapper{vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.post-tail-wrapper .share-wrapper .share-icons>*,.post-tail-wrapper .share-wrapper .share-icons i{font-size:1.125rem}.post-tail-wrapper .share-wrapper .share-icons{display:flex}.post-tail-wrapper .share-wrapper .share-icons i{color:var(--btn-share-color)}.post-tail-wrapper .share-wrapper .share-icons>*{margin-left:.5rem}.post-tail-wrapper .share-wrapper .share-icons button{padding:0;border:none;line-height:inherit}@media all and (max-width: 576px){.post-tail-bottom{flex-wrap:wrap-reverse !important}.post-tail-bottom>div:first-child{width:100%;margin-top:1rem}}.share-mastodon{--wc-stm-font-family: v.$font-family-base;--wc-stm-dialog-background-color: var(--card-bg);--wc-stm-form-button-border: 1px solid var(--btn-border-color);--wc-stm-form-submit-background-color: var(--sidebar-btn-bg);--wc-stm-form-cancel-background-color: var(--sidebar-btn-bg);--wc-stm-form-button-background-color-hover: #007bff;--wc-stm-form-button-color-hover: white;font-size:1rem}.post-tags{line-height:2rem}@media all and (max-width: calc(850px - 1px)){.post-navigation{padding-left:0;padding-right:0;margin-left:-0.5rem;margin-right:-0.5rem}}.post-navigation .btn:not(:hover){color:var(--link-color)}.post-navigation .btn:hover:not(.disabled)::before{color:#f5f5f5}.post-navigation .btn.disabled{pointer-events:auto;cursor:not-allowed;background:none;color:gray}.post-navigation .btn.btn-outline-primary.disabled:focus{box-shadow:none}.post-navigation .btn::before{color:var(--text-muted-color);font-size:.65rem;text-transform:uppercase;content:attr(aria-label)}.post-navigation .btn:first-child{border-radius:10px 0 0 10px;left:.5px}.post-navigation .btn:last-child{border-radius:0 10px 10px 0;right:.5px}.post-navigation p{font-size:1.1rem;line-height:1.5rem;margin-top:.3rem;white-space:normal}@media(hover: hover){.post-navigation .btn,.post-navigation .btn::before{transition:all .35s ease-in-out}}@-webkit-keyframes fade-up{from{opacity:0;margin-top:4rem}to{opacity:1}}@keyframes fade-up{from{opacity:0;margin-top:4rem}to{opacity:1}}#toc-wrapper::before,.toc-border-cover{content:"";display:block;position:-webkit-sticky;position:sticky;top:0;width:100%;height:3rem;background:linear-gradient(var(--main-bg) 50%, transparent)}#toc-wrapper{top:0;transition:top .2s ease-in-out;overflow-y:auto;max-height:100vh;scrollbar-width:none;margin-top:2rem}#toc-wrapper:not(.invisible){-webkit-animation:fade-up .8s;animation:fade-up .8s}#toc-wrapper ul{list-style:none;font-size:.85rem;line-height:1.25;padding-left:0}#toc-wrapper ul li a{padding:.4rem 0 .4rem 1.25rem}#toc-wrapper ul .toc-link{display:block}#toc-wrapper ul .toc-link:hover{color:var(--toc-highlight);text-decoration:none}#toc-wrapper ul .toc-link::before{display:none}#toc-wrapper ul .is-active-link{color:var(--toc-highlight) !important;font-weight:600}#toc-wrapper ul .is-active-link::before{display:inline-block;width:1px;height:1.25rem;background-color:var(--toc-highlight) !important}#toc-wrapper ul ul{padding-left:.75rem}.toc-border-cover{margin-bottom:-4rem}#toc-wrapper::after{content:"";position:fixed;bottom:0;width:15%;height:2.25rem;margin-left:-1px;background:linear-gradient(transparent, var(--main-bg) 70%)}#toc-bar{position:-webkit-sticky;position:sticky;top:0;z-index:1;margin:0 -1rem;height:3rem;background:var(--main-bg);border-bottom:1px solid var(--main-border-color);transition:all .2s ease-in-out}@media all and (min-width: 1200px){#toc-bar{display:none !important}}#toc-bar .label{margin-left:.375rem;padding:0 .75rem;color:inherit}#toc-bar.invisible{top:-3rem;transition:none}#toc-solo-trigger{color:var(--text-muted-color);border-color:var(--btn-border-color);border-radius:10px}@media all and (min-width: 1200px){#toc-solo-trigger{display:none !important}}#toc-solo-trigger .label{font-size:1rem;font-family:Lato,"Microsoft Yahei",sans-serif}#toc-solo-trigger:hover{box-shadow:none;background:none}@-webkit-keyframes slide-in{from{opacity:.7;transform:translateY(-3rem)}to{opacity:1;transform:translateY(0)}}@keyframes slide-in{from{opacity:.7;transform:translateY(-3rem)}to{opacity:1;transform:translateY(0)}}@-webkit-keyframes slide-out{0%{transform:translateY(0);opacity:1}100%{transform:translateY(-3rem);opacity:0}}@keyframes slide-out{0%{transform:translateY(0);opacity:1}100%{transform:translateY(-3rem);opacity:0}}#related-posts>h3{color:var(--label-color);font-size:1.1rem;font-weight:600}#related-posts time{color:var(--text-muted-color)}#related-posts p{font-size:.9rem;margin-bottom:.5rem;white-space:break-spaces;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}#disqus_thread{min-height:8.5rem}.utterances{max-width:100%;min-height:269px}.post-tail-wrapper .share-wrapper .share-icons>*:hover i{color:var(--btn-share-hover-color) !important}.share-label{color:inherit;font-size:inherit;font-weight:400}.share-label::after{content:":"}@media all and (max-width: 768px){.content>p>img{max-width:calc(100% + 1rem)}}@media all and (min-width: 1200px){h2,h3,h4{scroll-margin-top:2rem}}.categories i{color:gray}.categories{margin-bottom:2rem;border-color:var(--categories-border)}.categories .card-header{padding:.75rem;border-radius:9px;border-bottom:0}.categories .card-header.hide-border-bottom{border-bottom-left-radius:0;border-bottom-right-radius:0}.categories i{font-size:86%}.categories .list-group-item{border-left:none;border-right:none;padding-left:2rem}.categories .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.categories .list-group-item:last-child{border-bottom:0}.category-trigger{width:1.7rem;height:1.7rem;border-radius:50%;text-align:center;color:#6c757d !important}.category-trigger i{position:relative;height:.7rem;width:1rem;transition:transform 300ms ease}.category-trigger:hover i{color:var(--categories-icon-hover-color)}@media(hover: hover){.category-trigger:hover{background-color:var(--categories-hover-bg)}}.rotate{transform:rotate(-90deg)}.tag{border-radius:.7em;padding:6px 8px 7px;margin-right:.8rem;line-height:3rem;letter-spacing:0;border:1px solid var(--tag-border) !important;box-shadow:0 0 3px 0 var(--tag-shadow)}.tag span{margin-left:.6em;font-size:.7em;font-family:Oswald,sans-serif}@media all and (max-width: calc(850px - 1px)){#tags{justify-content:center !important}}#archives{letter-spacing:.03rem}@media all and (max-width: calc(576px - 1px)){#archives{margin-top:-1rem}#archives ul{letter-spacing:0}}#archives ul li::before,#archives .year:first-child::before,#archives .year::before{content:"";width:4px;position:relative;float:left;background-color:var(--timeline-color)}#archives .year{height:3.5rem;font-size:1.5rem;position:relative;left:2px;margin-left:-4px}#archives .year::before{height:72px;left:79px;bottom:16px}#archives .year:first-child::before{height:32px;top:24px}#archives .year::after{content:"";display:inline-block;position:relative;border-radius:50%;width:12px;height:12px;left:21.5px;border:3px solid;background-color:var(--timeline-year-dot-color);border-color:var(--timeline-node-bg);box-shadow:0 0 2px 0 #c2c6cc;z-index:1}#archives ul li{font-size:1.1rem;line-height:3rem}#archives ul li:nth-child(odd){background-color:var(--main-bg, #ffffff);background-image:linear-gradient(to left, #ffffff, #fbfbfb, #fbfbfb, #fbfbfb, #ffffff)}#archives ul li::before{top:0;left:77px;height:3.1rem}#archives ul:last-child li:last-child::before{height:1.5rem}#archives .date{white-space:nowrap;display:inline-block;position:relative;right:.5rem}#archives .date.month{width:1.4rem;text-align:center}#archives .date.day{font-size:85%;font-family:Lato,sans-serif}#archives a{margin-left:2.5rem;position:relative;top:.1rem}#archives a:hover{border-bottom:none}#archives a::before{content:"";display:inline-block;position:relative;border-radius:50%;width:8px;height:8px;float:left;top:1.35rem;left:71px;background-color:var(--timeline-node-bg);box-shadow:0 0 3px 0 #c2c6cc;z-index:1}.dash{margin:0 .5rem .6rem .5rem;border-bottom:2px dotted var(--dash-color)}#page-category ul>li,#page-tag ul>li{line-height:1.5rem;padding:.6rem 0}#page-category ul>li::before,#page-tag ul>li::before{background:#999;width:5px;height:5px;border-radius:50%;display:block;content:"";position:relative;top:.6rem;margin-right:.5rem}@media all and (max-width: calc(576px - 1px)){#page-category ul>li::before,#page-tag ul>li::before{margin:0 .5rem}}#page-category ul>li>a,#page-tag ul>li>a{font-size:1.1rem}@media all and (max-width: calc(576px - 1px)){#page-category ul>li>a,#page-tag ul>li>a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}#page-tag h1>i{font-size:1.2rem}#page-category h1>i{font-size:1.25rem}#page-category a:hover,#page-tag a:hover,#access-lastmod a:hover{margin-bottom:-1px}/*# sourceMappingURL=jekyll-theme-chirpy.css.map */ \ No newline at end of file diff --git a/assets/css/jekyll-theme-chirpy.css.map b/assets/css/jekyll-theme-chirpy.css.map new file mode 100644 index 0000000..4e5805c --- /dev/null +++ b/assets/css/jekyll-theme-chirpy.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.4.1/_sass/vendors/_bootstrap.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.4.1/_sass/base/_reset.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.4.1/_sass/abstracts/_mixins.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.4.1/_sass/abstracts/_placeholders.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.4.1/_sass/abstracts/_variables.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.4.1/_sass/base/_base.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.4.1/_sass/themes/_light.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.4.1/_sass/themes/_dark.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.4.1/_sass/abstracts/_breakpoints.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.4.1/_sass/base/_typography.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.4.1/_sass/base/_syntax.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.4.1/_sass/components/_buttons.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.4.1/_sass/components/_popups.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.4.1/_sass/layout/_sidebar.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.4.1/_sass/layout/_topbar.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.4.1/_sass/layout/_panel.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.4.1/_sass/layout/_footer.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.4.1/_sass/pages/_search.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.4.1/_sass/pages/_home.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.4.1/_sass/pages/_post.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.4.1/_sass/pages/_categories.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.4.1/_sass/pages/_tags.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.4.1/_sass/pages/_archives.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.4.1/_sass/pages/_category-tag.scss"],"names":[],"mappings":"CAAiB;AAAA;AAAA;AAAA;AAAA,EAId,s9oCCFH,4BC8BE,yCD1BF,mBC0BE,yCDtBF,uBCsBE,yCDlBF,wBCkBE,yCDdF,cCcE,yCDVF,kCCcE,WDVF,yBCUE,WDNF,6BCME,WDFF,8BCEE,WDEF,oBCFE,WCjCF,mEACE,2BACA,gBACA,YCuBoB,kCDtBpB,yBAIA,4CACE,cAGF,qBACE,4CACE,kBACA,UACA,2DAIA,oEACE,mBACA,UACA,0DAMR,sCAGE,4BACA,8BACA,uCAGF,+DACE,mBACA,cACA,mBAGF,gPACE,yBACA,gCACA,qBAGF,kFACE,wBAGF,sEACE,oDAGF,0EACE,+BAGF,gFACE,yBACA,sBACA,qBACA,iBAGF,kKACE,mBAGF,yFACE,eAGF,4EACE,kBAGF,wMACE,cCrEU,KDyEV,oDACE,cACA,kBACA,kBACA,cACA,UACA,cAIJ,iDACE,iCACA,yBACA,sBACA,qBACA,iBAGF,iHACE,oBACA,gBACA,uBACA,qBACA,4BAGF,4IDjHE,gBACA,uBACA,mBCmHF,qGACE,wCACA,gBAGF,kFACE,iBAGF,2BACE,gBAIA,mCACE,2CACA,uBACA,0BACA,kBACA,8CAKF,+DACE,WAIJ,kDACE,2CAGF,cACE,kBACA,qBAOF,+BACE,+CE1JF,MACE,eAIA,oCACE,4CCXF,iBACA,mBACA,6BAGA,sBACA,4BACA,sCACA,yBACA,uBACA,mCACA,iCACA,sBACA,gCACA,qBACA,4BACA,+BACA,sCACA,0BACA,kCACA,8EACA,0HAQA,qCACA,+BACA,sBACA,gCACA,+BACA,gCACA,2CACA,wBACA,6BACA,6BAGA,oCACA,mCACA,wCACA,6BACA,oCAGA,gCACA,oCACA,+CAGA,yBACA,oCACA,wBACA,iCACA,iBACA,yBACA,mFAEA,gCACA,qBACA,2BACA,qBACA,0BACA,oCACA,sBACA,yCACA,wCACA,iCACA,0BACA,kCACA,sCACA,qCACA,2CACA,oCAGA,sBACA,sCACA,8BACA,yBAGA,wCACA,+CACA,6CAGA,oCACA,4BACA,mCAGA,iCACA,8BACA,mCACA,kCACA,qCACA,sBACA,kCACA,mCACA,kCACA,mCAEA,8EACE,yCAGF,wDACE,aAKF,oFACE,YAGF,sFACE,SAGF,0IAEE,cACA,yBAGF,ogBAOE,cAGF,0EACE,cAGF,0EACE,cACA,yBAGF,0EACE,cAGF,0EACE,cAGF,0EACE,cAGF,0EACE,cAGF,0EACE,cAGF,0EACE,cAGF,0EACE,cAGF,0EACE,cACA,yBAGF,0EACE,cAGF,guBAUE,cAGF,0EACE,cAGF,0EACE,cAGF,0EACE,cAGF,0EACE,cAGF,0EACE,cAGF,kXAKE,cAGF,kJAEE,cAGF,0EACE,cACA,iBAGF,0EACE,cACA,iBAGF,4yBAWE,cAGF,0EACE,cAGF,oJAEE,cAGF,4EACE,cACA,yBAGF,glBAQE,cAGF,0EACE,cAGF,0EACE,cAGF,0EACE,cAGF,0EACE,cAGF,0EACE,cACA,kBAGF,0EACE,cACA,iBDhSA,qBEjBF,kBAGA,yBACA,yBACA,mCAGA,+BACA,4BACA,sCACA,yBACA,uBACA,yCACA,iCACA,+BACA,wCACA,qBACA,4BACA,yCACA,sCACA,0BACA,mCACA,4CACA,wEACA,sHAQA,4BACA,+BACA,sBACA,gCACA,+BACA,+CACA,4BACA,0BACA,6BACA,8CAGA,iCACA,uCACA,qCACA,sCACA,6CAGA,yCACA,8CACA,qCAGA,kCACA,kCACA,2BACA,qBACA,4BACA,oCACA,qCACA,2BACA,iCACA,mBACA,yBACA,kFAEA,0BACA,0BACA,wBACA,4CACA,qCACA,8CACA,sCACA,kCACA,wCACA,kDACA,uCACA,oCAGA,4BACA,4BACA,4BACA,yBAGA,yCACA,qCACA,qCAGA,qCACA,gCACA,iDAGA,iCACA,8BACA,mCACA,kCACA,wCACA,sBACA,kCACA,mCACA,kCACA,mCACA,+BAEA,4BACE,aAIF,4EAEE,gCAIA,8CACE,uCAGF,kDACE,iBACA,kBACA,kBACA,sCAEA,6DACE,mCAKN,iDACE,+HAWF,oCACE,kBAKF,oCACE,cAGF,yCACE,YAGF,0CACE,SAGF,mEAEE,cACA,yBAGF,qCACE,cACA,yBAGF,4PAOE,cAGF,oCACE,cAGF,oCACE,cAGF,uEAEE,cAGF,uEAEE,cAGF,oCACE,cAGF,oCACE,cACA,yBAGF,oCACE,cACA,yBACA,iBAGF,mLAKE,cAGF,oCACE,cAGF,oCACE,cAGF,oCACE,cAGF,mUASE,cAGF,oCACE,cAGF,oCACE,cAGF,oCACE,cAGF,oCACE,cAGF,oCACE,cAGF,oCACE,cAGF,oCACE,cAGF,oCACE,cAGF,+RAQE,cAGF,oCACE,eFrRF,mCACE,2CEvBF,kBAGA,yBACA,yBACA,mCAGA,+BACA,4BACA,sCACA,yBACA,uBACA,yCACA,iCACA,+BACA,wCACA,qBACA,4BACA,yCACA,sCACA,0BACA,mCACA,4CACA,wEACA,sHAQA,4BACA,+BACA,sBACA,gCACA,+BACA,+CACA,4BACA,0BACA,6BACA,8CAGA,iCACA,uCACA,qCACA,sCACA,6CAGA,yCACA,8CACA,qCAGA,kCACA,kCACA,2BACA,qBACA,4BACA,oCACA,qCACA,2BACA,iCACA,mBACA,yBACA,kFAEA,0BACA,0BACA,wBACA,4CACA,qCACA,8CACA,sCACA,kCACA,wCACA,kDACA,uCACA,oCAGA,4BACA,4BACA,4BACA,yBAGA,yCACA,qCACA,qCAGA,qCACA,gCACA,iDAGA,iCACA,8BACA,mCACA,kCACA,wCACA,sBACA,kCACA,mCACA,kCACA,mCACA,+BAEA,yDACE,aAIF,0JAEE,gCAIA,6FACE,uCAGF,qGACE,iBACA,kBACA,kBACA,sCAEA,2HACE,mCAKN,mGACE,+HAWF,yEACE,kBAKF,yEACE,cAGF,mFACE,YAGF,qFACE,SAGF,wIAEE,cACA,yBAGF,2EACE,cACA,yBAGF,+fAOE,cAGF,yEACE,cAGF,yEACE,cAGF,gJAEE,cAGF,gJAEE,cAGF,yEACE,cAGF,yEACE,cACA,yBAGF,yEACE,cACA,yBACA,iBAGF,2WAKE,cAGF,yEACE,cAGF,yEACE,cAGF,yEACE,cAGF,+oBASE,cAGF,yEACE,cAGF,yEACE,cAGF,yEACE,cAGF,yEACE,cAGF,yEACE,cAGF,yEACE,cAGF,yEACE,cAGF,yEACE,cAGF,skBAQE,cAGF,yEACE,cF/QA,sBC3BF,iBACA,mBACA,6BAGA,sBACA,4BACA,sCACA,yBACA,uBACA,mCACA,iCACA,sBACA,gCACA,qBACA,4BACA,+BACA,sCACA,0BACA,kCACA,8EACA,0HAQA,qCACA,+BACA,sBACA,gCACA,+BACA,gCACA,2CACA,wBACA,6BACA,6BAGA,oCACA,mCACA,wCACA,6BACA,oCAGA,gCACA,oCACA,+CAGA,yBACA,oCACA,wBACA,iCACA,iBACA,yBACA,mFAEA,gCACA,qBACA,2BACA,qBACA,0BACA,oCACA,sBACA,yCACA,wCACA,iCACA,0BACA,kCACA,sCACA,qCACA,2CACA,oCAGA,sBACA,sCACA,8BACA,yBAGA,wCACA,+CACA,6CAGA,oCACA,4BACA,mCAGA,iCACA,8BACA,mCACA,kCACA,qCACA,sBACA,kCACA,mCACA,kCACA,mCAEA,uCACE,yCAGF,4BACE,aAKF,0CACE,YAGF,2CACE,SAGF,qEAEE,cACA,yBAGF,kQAOE,cAGF,qCACE,cAGF,qCACE,cACA,yBAGF,qCACE,cAGF,qCACE,cAGF,qCACE,cAGF,qCACE,cAGF,qCACE,cAGF,qCACE,cAGF,qCACE,cAGF,qCACE,cACA,yBAGF,qCACE,cAGF,gXAUE,cAGF,qCACE,cAGF,qCACE,cAGF,qCACE,cAGF,qCACE,cAGF,qCACE,cAGF,yLAKE,cAGF,yEAEE,cAGF,qCACE,cACA,iBAGF,qCACE,cACA,iBAGF,sZAWE,cAGF,qCACE,cAGF,0EAEE,cAGF,sCACE,cACA,yBAGF,wSAQE,cAGF,qCACE,cAGF,qCACE,cAGF,qCACE,cAGF,qCACE,cAGF,qCACE,cACA,kBAGF,qCACE,cACA,kBErQF,kCHlCF,KAwBI,mBAIJ,KACE,0BACA,kHAEA,wBACA,mCACA,YDjBiB,+CIRjB,8CH4BF,iBAEI,aAEA,0BACE,mBGUJ,mCHJA,YAEI,iCAKN,aACE,mBACA,WACA,YACA,gBAIA,yBACE,yBAGF,iBACE,YACA,oBACA,iBAIS,4BACP,WAKN,cAGE,SACA,0BACA,8BAEA,sBAGE,WACA,WACA,YACA,kBACA,sCACA,UACA,oCAIA,4BACE,WAmBN,SACE,kBACA,gBACA,yBGnFA,mCHgFF,SAMI,mBAIA,iBHtIF,WGyIsB,MHxItB,cGwIsB,MAElB,eAcF,8FAEE,8BACA,6BAEA,0GACE,gBACA,oBAGF,oNAEE,8BACA,6BACA,eAKN,sBACE,8BACA,6BAEA,yBACE,qBACA,eAGA,2BACE,WACA,qBACA,4BAEA,mCACE,oCAIJ,4BACE,8BACA,6BAIJ,2CACE,6BACA,sBAIJ,eACE,iBAGF,kBACE,8BG1KF,kCH6KA,8BAEI,eASN,UACE,qBACA,eACA,kBACA,oBACA,yCACA,gBACA,8BACA,mBAEA,2BACE,mBAIJ,YACE,8BAGF,UACE,oBACA,oBAGF,SACE,gBACA,kBACA,yBAEA,iBACE,WACA,kBACA,6BACA,YACA,WACA,wCACA,gCAGF,2BACE,GACE,4BAGF,KACE,4BAIJ,mBACE,GACE,4BAGF,KACE,4BAKN,aACE,WACA,YACA,mBACA,kBAIA,oBACE,qBAGF,kBACE,cACA,WACA,YACA,eACA,gBACA,YACA,gBAMJ,aACE,WAEA,kBACE,cAGF,qBACE,mBAQJ,aACE,uBAGF,gBACE,8BAIF,YACE,yCAIF,eACE,gBACA,gBACA,gBAKA,8CACE,gCAIJ,UACE,cACA,oBACA,mBAGF,oBACE,8BAGF,aACE,gBACA,wDACA,6BACA,2EAGF,MACE,WACA,0BAGF,OACE,YACA,0BAMF,SACE,kBAIF,cACE,kBACA,0BAGF,qBACE,iCACE,wBAGF,UACE,4CAGF,cACE,8CAIJ,MACE,cAGF,cACE,kBHtYE,aGwYgB,EHvYhB,cGuYgB,EG9YlB,8CH2YF,cHtVI,WALM,oBMvBR,kCHkXF,cAUI,YDvaY,OI6Dd,mCHgWF,cAcI,YD1akB,OC6apB,yBACE,iBGtZF,kCHqZA,yBHlWA,eApDE,aG2ZoB,EH1ZpB,cG0ZoB,GGjatB,8CH4ZA,yBASI,gBGpXJ,qEHyXI,oCACE,aACA,eG5aN,+CHibI,8BACE,mCGvYN,mCHiXA,yBA2BI,UD9bmB,OFUrB,gCACA,kCG4bJ,8EHxcE,YG2ckB,EH1clB,aG0ckB,EGxZlB,mCH2ZF,cAEI,iCAGF,2BACE,gBI1dF,GAsBI,eATE,QAEI,wBAfV,GAsBI,kBATE,QAII,mBAjBV,GAsBI,kBATE,QAII,mBAjBV,GAsBI,kBAtBJ,GAwBI,kBAKN,EAGE,qBAGF,IACE,eACA,YACA,gCAEA,UAGE,0BACA,kBAIJ,WACE,yDACA,kBACA,mCACA,iBAEA,wBACE,gBAGF,2BACE,cACA,kBACA,4BACA,+BAIA,mCACE,kBACA,WACA,kBACA,YACA,iBACA,oBACA,mCP3BJ,sBACE,sCAEA,8BACE,QO2BsB,IP1BtB,mCACA,4BANJ,uBACE,uCAEA,+BACE,QO4BuB,IP3BvB,oCACA,0BAGE,yBATN,0BACE,0CAEA,kCACE,QO6B0B,IP5B1B,uCACA,0BANJ,yBACE,yCAEA,iCACE,QO8ByB,IP7BzB,sCACA,0BO+BN,IACE,4BACA,qBACA,sBACA,mBACA,kBACA,kBACA,eACA,kBACA,4BACA,qCACA,cLtFU,IKuFV,uCACA,gDAGF,GACE,sCACA,UAGF,OACE,gCACA,OLrGc,KKsGd,8CAgBA,SACE,kBACA,gBAgBJ,KACE,iBAEA,QACE,gBD1GF,kCCyGA,QAII,iBAMA,mDPlHJ,kBACA,SACA,2BMrBA,kCCqJI,yCPpKJ,YOqKwB,MPpKxB,aOoKwB,MAElB,gBACA,gBAMR,cACE,kBACA,iBAGE,kCACE,oBAKF,mBACE,kBP/LJ,WOiMsB,EPhMtB,cOgMsB,EAMb,WPlMT,YOmMoB,IPlMpB,aOkMoB,IPrLlB,aOsLkB,IPrLlB,cOqLkB,IAElB,oCAKO,kBACP,gBACA,cACA,kBACA,aACA,kBACA,oCAOJ,eACE,gBACA,qBAEA,qBACE,eACA,gBACA,iBAEA,2BACE,8CAQA,8BACE,+CAEA,4CACE,mCAGF,8CACE,kCCzPV,mBACE,qCACA,iBACA,oBAGF,WAIE,cACA,sBAMA,eACE,gBACA,UNJa,OMKb,mBAKE,gCACE,qBACA,iBACA,oBAGF,+BACE,8BAGF,wBACE,iBACA,kBAKN,mBACE,iBACA,oCACA,yBACA,sBACA,oBACA,qBACA,iBAIJ,KACE,qBACA,iBACA,aACA,wBAEA,uBACE,UN7Ca,OM8Cb,gBACA,yBACA,cNtDQ,IMuDR,uCAGF,cACE,yBACA,iCACA,gBACA,UAGF,yBACE,iBACA,cAGF,+BACE,mBAGF,gBACE,cAWF,gBACE,yBACA,8BACA,oBAIJ,sBAIE,kDAEA,+BRrGA,YQsGoB,MRrGpB,aQqGoB,MAElB,gBFnFF,kCEgFA,+BRrGA,YQ2GsB,ER1GtB,aQ0GsB,EAElB,cN1GM,MIkBV,kCE4FA,mCRjHA,YQmHsB,ERlHtB,aQkHsB,EAIlB,2CACE,WACA,qBACA,YALW,KAMX,MNjHQ,OMkHR,ONlHQ,OMmHR,kBACA,gDACA,gGAMF,wCAEE,uBAKN,iCACE,yBACA,0BAUA,2IACE,qBACA,eAEA,2KACE,aAMR,aAGE,aACA,8BACA,mBACA,ONhKmB,QMiKnB,mBACA,oBAGA,kBACE,YNtKiB,QMyKjB,oBACE,eACA,MNxKY,QMyKZ,oCAEA,0BACE,cAIK,2BACP,kBACA,QAIF,yBACE,8BACA,iBACA,gBACA,oCAKJ,oBAIE,+BACA,ONvMiB,QMwMjB,MNxMiB,QMyMjB,UACA,yBAEA,sBACE,oCAIA,mCACE,4CAGF,+BACE,qCAIJ,0BACE,aAGF,yCACE,uCAEA,2CACE,WCpPR,aACE,kBACA,UACA,UACA,eACA,eACA,WACA,gBACA,4BACA,iCACA,UACA,MPEc,QODd,OPCc,0BOCd,mDACA,0DH2BA,kCG1CF,aAkBI,SACA,iBHmCF,mCGtDF,aAuBI,+CHqCF,mCG5DF,aA2BI,+CAKF,mBACE,kCACA,0CAGF,eACE,YPzBY,QO0BZ,kBACA,WAGF,kBACE,UACA,mBC1CF,yBACE,KACE,UACA,UAIJ,iBACE,KACE,UACA,UAIJ,4BACE,gBACA,mBACA,cAGF,0BACE,4BACA,oBAEA,iCACE,cACA,eAKF,yBACE,cACA,gBACA,oBACA,mCACA,2BACA,oCACA,iCACA,eACA,SACA,WACA,2BACA,4BACA,oBAKN,WAME,2CACA,iBACA,cRhDU,KQiDV,wBACA,0BACA,WRzDc,KQ0Dd,gBACA,kBJnCA,kCIsBF,WAgBI,iBAGF,iBACE,kBAnBS,sBAoBT,UApBS,sBAuBX,oBACE,kBAvBU,uBAwBV,UAxBU,uBJZZ,kCIUF,WA8BI,KRnFY,OQsFd,mBAGE,wBACA,gBACA,MACA,yBACA,iDAEA,0BACE,YRrEgB,kCQ0ElB,oBACE,kBACA,sBAGF,gCACE,gBAIJ,cACE,qBACA,eAGE,wCAEE,kBAGF,mBACE,aACA,gBACA,kBACA,uBAEA,oCACE,aAON,0BACE,sBADF,0BACE,qBADF,0BACE,sBAIJ,2BACE,sCACA,gBAGF,6BACE,wBAzFS,UA0FT,gBA1FS,UA6FX,qBACE,wBA9FS,UA+FT,gBA/FS,UAkGX,kBACE,aACA,WACA,kBACA,4DACA,OAxGe,KA2GjB,8BACE,cACA,+BACA,YR3IkB,kCQ4IlB,oBChKJ,SXiBI,aWhBgB,EXiBhB,cWjBgB,EAElB,eACA,MACA,OACA,YACA,gBACA,MTfc,MSgBd,6BACA,mDAGA,wBACA,qBAGA,4BACE,aLPF,8CKXF,SXgEI,WALM,mBWnCN,6BACA,qCAEA,2BACE,yBL0BJ,mCKtDF,SAiCI,MTvCkB,OS2ClB,wGACE,kCAQJ,iBACE,cACA,aACA,cACA,gBACA,gDACA,wBL5BF,kCKsBA,iBASI,WACA,aAGF,qBACE,yBAEA,2BACE,qBAKN,0BXtEA,WWuEoB,OXtEpB,cWsEoB,OAGlB,oBACA,sBACA,WLtCF,kCKgCA,0BASI,iBLvBJ,mCKcA,0BAaI,kBACA,qBACA,qBAIJ,qBAIE,oBACA,gBACA,kBACA,gBACA,qBACA,mBACA,oBACA,kBACA,8BAGF,wBACE,cACA,iCACA,kBACA,iBACA,yBACA,sBACA,qBACA,iBAGF,YACE,mBAEA,wBACE,WACA,WXrGF,aWuGoB,OXtGpB,cWsGoB,OLlEtB,mCK8DE,wBXnGA,aW0GsB,QXzGtB,cWyGsB,SAGpB,mCXtHJ,YWuHwB,MXtHxB,eWsHwB,MAElB,aACA,mBACA,qBACA,gBAEA,yCACE,yCAGF,qCACE,cACA,WACA,oBAGF,wCACE,cACA,oBAKF,yCACE,kCACA,yCAEA,8CACE,UAKN,0CACE,kBAKN,yBACE,kBACA,mBACA,qBLpHF,mCKiHA,yBAMI,qBACA,uBAKF,iEACE,MAHS,QAIT,OAJS,QAKT,cAzLG,MA0LH,kBACA,+BACA,uCACA,kBACA,aACA,mBACA,uBAEA,yGACE,iDAGF,6EACE,yCASF,4CACE,aTnNK,MI2DX,mCKuJI,4CAII,aTrNM,MS0NZ,2BACE,YAtCS,QA+CX,sCX7NF,YW+NsB,sBX9NtB,aW8NsB,sBAElB,0CACA,WACA,MA1Oa,IA2Ob,OA3Oa,IA4Ob,kBACA,cA5OG,MLyDP,mCK0KE,sCX7NF,YWyOwB,qBXxOxB,aWwOwB,sBLjOxB,8CKwOA,gCAEI,6BCzPN,gBACE,OVGc,KUFd,kCNaA,8CMfF,gBZkEI,2CY3DA,QAOF,oBACE,eACA,8BACA,mBAQI,iDACE,YACA,gBNZR,8CMDA,oBAmBI,cN+BJ,qEMlDA,oBAuBI,UACA,gBACA,uBACA,oBACA,oBNnBJ,kCMXF,QZ8DE,gBM1DA,8CMJF,QAuCI,gBAIJ,cACE,aACA,iBACA,gBACA,uBACA,+BACA,kBACA,UACA,oBN/CA,8CMuCF,cAWI,eNzBF,kCMcF,cAeI,iBAIJ,iCAEE,aN5DA,8CM0DF,iCAKI,eC/EJ,QACE,SACA,+BACA,gBAEA,mBACE,wBACA,gBAGF,gBAGE,kBAEA,kCACE,gBAIJ,iBACE,gBAMF,8BACE,oBACA,oBbOF,MADwD,mBAExD,UaNoB,QbOpB,YAH2C,IaD3C,yBACE,oBACA,iBACA,oBACA,oBACA,wBAEA,+BACE,2BAIJ,2BACE,mBP/BF,+COSF,eA0BI,cAKF,kBACE,cCxDJ,OACE,gCACA,OZIc,KYHd,8CRYA,8CQfF,OdoEI,WALM,mBcrDN,OZHkB,KYIlB,kBAeF,SACE,kBACA,gBC7BJ,OACE,aACA,WACA,mBACA,4CACA,0BACA,gBAEA,SACE,UACA,gBACA,+BTKF,8CShBF,OAeI,cT0BF,kCSzCF,OAmBI,Ubbe,OIyCjB,mCS/CF,OAuBI,mBToCF,mCS3DF,OA2BI,qCAMJ,uBACE,aACA,YACA,WACA,cAEA,gCACE,gBTxBF,8CSiBF,uBAWI,WAEA,gCACE,kBTNJ,kCSRF,uBAmBI,Ub3CqB,Oa4CrB,kCAIJ,gBACE,oBTOA,qESJE,oBACE,iBAIJ,kBACE,iBACA,mBAWF,wBACE,WAEA,yCACE,mBTpCJ,mCSgCA,wBAQI,UAEA,uCACE,oBAGF,wCACE,mBAGF,kDACE,kBACA,aAIJ,2BACE,mBAIF,0BACE,cACA,oBACA,cAGF,0BAGE,yBACA,oBACA,qBACA,4BAMN,eACE,wBACA,aACA,mBAKF,cACE,kBACA,SACA,gBACA,qBACA,wBACA,YAEA,oBACE,gBThGF,mCSuFF,cAaI,gCAIJ,cACE,eT/GA,kCS8GF,cAII,cAGF,iBACE,qBAGF,wBACE,qBACA,iBACA,eACA,gCACA,YACA,cACA,wBAEA,gCACE,YACA,8BACA,oBC9KN,WACE,gBVwCA,kCUzCF,WAII,mBAIA,+BACE,qBAGF,0CACE,sBAIJ,iBACE,SACA,gBAEA,gEACE,4BVaJ,kCUdE,gEAII,6BAYJ,4BACE,YACA,aVJJ,kCUEE,4BAKI,iCAGF,wCAGE,sCACA,kBAGF,sFACE,yCVlBN,kCUqBI,uCAEI,4BAMA,iDAGE,gBACA,SASF,2DACE,mBV3CV,kCU0CQ,2DAII,qBAKN,0CAGE,cAGF,uDACE,cASV,YACE,wBACA,4BACA,6BVhEA,kCU6DF,YAMI,iBACA,wBAGF,oBACE,qBVjGF,8CUsGI,0DACE,cV9EN,kCUmFI,wCACE,oBAIJ,kCACE,sCACA,gBACA,oBACA,SACA,yBAIA,yCACE,kDAMA,qDACE,mDAKN,gCACE,mBAEA,2CACE,4BVlHN,kCUuHA,wBAEI,cCjKN,qDACE,UACA,kBACA,qCAUA,kBAGE,mBACA,gBAIA,oCAdF,YACA,aAFe,OAGf,cAH6B,OAyBzB,uBACE,cAKN,qBACE,kBAIJ,mBAGE,gBACA,kDAEA,oCACE,mBAmBF,kCACE,sBACA,yBACA,sBACA,qBACA,iBAEA,kGACE,mBAGF,+CACE,aAEA,iDACE,6BAKF,iDAGE,kBASF,sDACE,UACA,YACA,oBXjFN,kCWyFF,kBAEI,kCAEA,kCACE,WACA,iBAKN,gBAEE,0CACA,iDACA,+DACA,6DACA,6DACA,qDACA,wCAEA,eAGF,WACE,iBXzHA,8CWkIF,iBjB5HI,aiB8HkB,EjB7HlB,ciB6HkB,EjB5IpB,YiB6IoB,QjB5IpB,aiB4IoB,SAMlB,kCACE,wBAIA,mDACE,cAIJ,+BAGE,oBACA,mBACA,gBACA,WAGF,yDACE,gBAGF,8BACE,8BACA,iBACA,yBACA,yBAGF,kCACE,4BACA,UAGF,iCACE,4BACA,WAIJ,mBACE,iBACA,mBACA,iBACA,mBAIJ,qBAEI,oDAEE,iCAKN,2BACE,KACE,UACA,gBAGF,GACE,WAIJ,mBACE,KACE,UACA,gBAGF,GACE,WAMJ,uCACE,WACA,cACA,wBACA,gBACA,MACA,WACA,YACA,4DAGF,aACE,MACA,+BACA,gBACA,iBACA,qBACA,gBAEA,6BACE,8BACA,sBAGF,gBACE,gBACA,iBACA,iBACA,eAGE,qBACE,8BAMJ,0BACE,cAIA,gCACE,2BACA,qBAGF,kCACE,aAIJ,gCACE,sCACA,gBAEA,wCACE,qBACA,UACA,eACA,iDAIJ,mBACE,oBAIK,kBAGP,oBAOF,oBACE,WACA,eACA,SACA,UACA,eACA,iBACA,4DAUJ,SACE,wBACA,gBACA,MACA,UACA,eACA,Of/Uc,KegVd,0BACA,iDACA,+BXxSA,mCW+RF,SAcI,yBAGF,gBAGE,oBACA,iBACA,cAGF,mBACE,UACA,gBAIJ,kBACE,8BACA,qCACA,cfrWU,KIoCV,mCW8TF,kBAMI,yBAGF,yBACE,eACA,Yf/VkB,kCekWpB,wBACE,gBACA,gBA4BJ,4BAvBE,KACE,WACA,4BAGF,GACE,UACA,yBAoBJ,oBA3BE,KACE,WACA,4BAGF,GACE,UACA,yBAwBJ,6BAnBE,GACE,wBACA,UAGF,KACE,4BACA,WAgBJ,qBAvBE,GACE,wBACA,UAGF,KACE,4BACA,WAuBF,kBjBxYA,MADwD,mBAExD,UiBwYoB,OjBvYpB,YiBuY4B,IAG5B,oBAIE,8BAGF,iBAGE,gBACA,oBACA,yBACA,oBACA,qBACA,4BAWJ,eACE,kBAGF,YACE,eACA,iBAGF,yDACE,8CAGF,ajBnbE,MiBobgC,QjBnbhC,UiBmbkB,QjBlblB,YiBkb2B,IAE3B,oBACE,YXpcF,kCWwcF,eAEI,6BXlbF,mCWsbF,SAII,wBC1eJ,cACE,WAGF,YACE,mBACA,sCAOA,yBAGE,eACA,cAHS,IAIT,gBAEA,4CACE,4BACA,6BAIJ,cAGE,cAGF,6BACE,iBACA,kBACA,kBAEA,yCACE,yBACA,0BAGF,wCACE,gBAKN,kBACE,aACA,cACA,kBACA,kBACA,yBAEA,oBACE,kBACA,aACA,WACA,gCAIA,0BACE,yCAMN,qBACE,wBACE,6CAIJ,QACE,yBC9EF,KACE,mBACA,oBACA,mBACA,iBACA,iBACA,8CACA,uCAEA,UACE,iBACA,eACA,8BbMF,8CaFF,MAEI,mCCjBJ,UACE,sBdgBA,8CcjBF,UAII,iBAEA,aACE,kBAMJ,oFACE,WACA,MAJe,IAKf,kBACA,WACA,uCAGF,gBACE,cACA,iBACA,kBACA,SACA,iBAEA,wBAGE,YACA,UACA,YAGF,oCAGE,YACA,SAIF,uBACE,WACA,qBACA,kBACA,kBACA,WACA,YACA,YACA,iBACA,gDACA,qCACA,6BACA,UAKF,gBACE,iBACA,iBAIA,+BACE,yCACA,uFAUF,wBAGE,MACA,UACA,cAIJ,8CACE,cAIJ,gBACE,mBACA,qBACA,kBACA,YAEA,sBACE,aACA,kBAGF,oBACE,cACA,4BAIJ,YAEE,mBACA,kBACA,UAEA,kBACE,mBAGF,oBAEE,WACA,qBACA,kBACA,kBACA,UACA,WACA,WACA,YACA,UACA,yCACA,6BACA,UCpIN,MACE,2BACA,2CAKA,qCACE,mBACA,gBAGA,qDACE,gBACA,UACA,WACA,kBACA,cACA,WACA,kBACA,UACA,mBfLJ,8CeJE,qDAYI,gBAKJ,yCAGE,iBfhBJ,8CeaE,yCrBhCF,gBACA,uBACA,oBqB2CF,eACE,iBAGF,oBACE,kBAMA,iEAGE","sourcesContent":["@charset \"UTF-8\";/*!\n * Bootstrap v5.3.8 (https://getbootstrap.com/)\n * Copyright 2011-2025 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */:root{--bs-success:#198754;--bs-danger:#dc3545;--bs-font-sans-serif:system-ui,-apple-system,\"Segoe UI\",Roboto,\"Helvetica Neue\",\"Noto Sans\",\"Liberation Sans\",Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-secondary-color:rgba(33, 37, 41, 0.75);--bs-secondary-bg:#e9ecef;--bs-tertiary-bg:#f8f9fa;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15)}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}.small,small{font-size:.875em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button{text-transform:none}[role=button]{cursor:pointer}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button{cursor:pointer;filter:grayscale(1)}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}iframe{border:0}summary{display:list-item;cursor:pointer}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.list-unstyled{padding-left:0;list-style:none}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.figure{display:inline-block}.container{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}@media (min-width:1400px){.container{max-width:1320px}}:root{}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0}.row-cols-1>*{flex:0 0 auto;width:100%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.g-0{--bs-gutter-x:0}.g-0{--bs-gutter-y:0}.g-4{--bs-gutter-x:1.5rem}.g-4{--bs-gutter-y:1.5rem}@media (min-width:576px){.col-sm{flex:1 0 0}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}}@media (min-width:768px){.col-md{flex:1 0 0}.row-cols-md-2>*{flex:0 0 auto;width:50%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}}@media (min-width:992px){.col-lg{flex:1 0 0}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}}@media (min-width:1200px){.col-xl{flex:1 0 0}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}}@media (min-width:1400px){.col-xxl{flex:1 0 0}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}}.table{--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;--bs-table-color:var(--bs-emphasis-color);--bs-table-bg:var(--bs-body-bg);--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--bs-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.is-valid~.valid-tooltip,.was-validated :valid~.valid-tooltip{display:block}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-tooltip{display:block}.btn{--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:var(--bs-body-color);--bs-btn-bg:transparent;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:var(--bs-border-radius-lg)}.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:var(--bs-border-radius-sm)}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:0 0;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-title-color: ;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-border-radius);--bs-card-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(var(--bs-body-color-rgb), 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:var(--bs-body-bg);position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-text:last-child{margin-bottom:0}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.pagination{--bs-pagination-padding-x:0.75rem;--bs-pagination-padding-y:0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-body-bg);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-tertiary-bg);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-secondary-bg);--bs-pagination-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:var(--bs-secondary-color);--bs-pagination-disabled-bg:var(--bs-secondary-bg);--bs-pagination-disabled-border-color:var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(-1 * var(--bs-border-width))}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-border-radius);position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.list-group{--bs-list-group-color:var(--bs-body-color);--bs-list-group-bg:var(--bs-body-bg);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-border-radius);--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:0.5rem;--bs-list-group-disabled-color:var(--bs-secondary-color);--bs-list-group-disabled-bg:var(--bs-body-bg);--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.btn-close{--bs-btn-close-color:#000;--bs-btn-close-bg:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414'/%3e%3c/svg%3e\");--bs-btn-close-opacity:0.5;--bs-btn-close-hover-opacity:0.75;--bs-btn-close-focus-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-btn-close-focus-opacity:1;--bs-btn-close-disabled-opacity:0.25;box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;filter:var(--bs-btn-close-filter);border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}:root{--bs-btn-close-filter: }.toast{--bs-toast-padding-x:0.75rem;--bs-toast-padding-y:0.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:var(--bs-border-radius);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-secondary-color);--bs-toast-header-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-header-border-color:var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast:not(.show){display:none}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:0.5rem;--bs-tooltip-padding-y:0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color:var(--bs-body-bg);--bs-tooltip-bg:var(--bs-emphasis-color);--bs-tooltip-border-radius:var(--bs-border-radius);--bs-tooltip-opacity:0.9;--bs-tooltip-arrow-width:0.8rem;--bs-tooltip-arrow-height:0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:\"\";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}:root{}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:\"\"}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.align-middle{vertical-align:middle!important}.opacity-75{opacity:.75!important}.overflow-hidden{overflow:hidden!important}.d-block{display:block!important}.d-flex{display:flex!important}.d-none{display:none!important}.shadow{box-shadow:var(--bs-box-shadow)!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-100{height:100%!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-wrap{flex-wrap:wrap!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.pt-0{padding-top:0!important}.pt-2{padding-top:.5rem!important}.pe-1{padding-right:.25rem!important}.pe-4{padding-right:1.5rem!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-4{padding-bottom:1.5rem!important}.ps-0{padding-left:0!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-nowrap{white-space:nowrap!important}.text-muted{color:var(--bs-secondary-color)!important}.pe-none{pointer-events:none!important}.rounded-circle{border-radius:50%!important}.invisible{visibility:hidden!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}@media (min-width:576px){.flex-sm-row{flex-direction:row!important}.me-sm-4{margin-right:1.5rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}}@media (min-width:768px){.flex-md-row-reverse{flex-direction:row-reverse!important}.mt-md-0{margin-top:0!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}}@media (min-width:992px){.flex-lg-row{flex-direction:row!important}.justify-content-lg-between{justify-content:space-between!important}.align-items-lg-center{align-items:center!important}.ms-lg-0{margin-left:0!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.ps-lg-2{padding-left:.5rem!important}}@media (min-width:1200px){.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}}@media (min-width:1400px){.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}}","@use '../abstracts/mixins' as *;\n\n::-webkit-input-placeholder {\n @include placeholder;\n}\n\n::-moz-placeholder {\n @include placeholder;\n}\n\n:-ms-input-placeholder {\n @include placeholder;\n}\n\n::-ms-input-placeholder {\n @include placeholder;\n}\n\n::placeholder {\n @include placeholder;\n}\n\n:focus::-webkit-input-placeholder {\n @include placeholder-focus;\n}\n\n:focus::-moz-placeholder {\n @include placeholder-focus;\n}\n\n:focus:-ms-input-placeholder {\n @include placeholder-focus;\n}\n\n:focus::-ms-input-placeholder {\n @include placeholder-focus;\n}\n\n:focus::placeholder {\n @include placeholder-focus;\n}\n","@mixin text-ellipsis {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n@mixin mt-mb($value) {\n margin-top: $value;\n margin-bottom: $value;\n}\n\n@mixin ml-mr($value) {\n margin-left: $value;\n margin-right: $value;\n}\n\n@mixin pt-pb($val) {\n padding-top: $val;\n padding-bottom: $val;\n}\n\n@mixin pl-pr($val, $important: false) {\n @if $important {\n padding-left: $val !important;\n padding-right: $val !important;\n } @else {\n padding-left: $val;\n padding-right: $val;\n }\n}\n\n@mixin placeholder {\n color: var(--text-muted-color) !important;\n}\n\n@mixin placeholder-focus {\n opacity: 0.6;\n}\n\n@mixin label($font-size: 1rem, $font-weight: 600, $color: var(--label-color)) {\n color: $color;\n font-size: $font-size;\n font-weight: $font-weight;\n}\n\n@mixin align-center {\n position: relative;\n left: 50%;\n transform: translateX(-50%);\n}\n\n@mixin prompt($type, $fa-content, $fa-style: 'solid', $rotate: 0) {\n &.prompt-#{$type} {\n background-color: var(--prompt-#{$type}-bg);\n\n &::before {\n content: $fa-content;\n color: var(--prompt-#{$type}-icon-color);\n font: var(--fa-font-#{$fa-style});\n\n @if $rotate != 0 {\n transform: rotate(#{$rotate}deg);\n }\n }\n }\n}\n\n@mixin slide($append: null) {\n $basic: transform 0.4s ease;\n\n @if $append {\n transition: $basic, $append;\n } @else {\n transition: $basic;\n }\n}\n\n@mixin max-w-100 {\n max-width: 100%;\n}\n","@use 'variables' as v;\n@use 'mixins' as mx;\n\n%heading {\n color: var(--heading-color);\n font-weight: 400;\n font-family: v.$font-family-heading;\n scroll-margin-top: 3.5rem;\n}\n\n%anchor {\n .anchor {\n font-size: 80%;\n }\n\n @media (hover: hover) {\n .anchor {\n visibility: hidden;\n opacity: 0;\n transition: opacity 0.25s ease-in, visibility 0s ease-in 0.25s;\n }\n\n &:hover {\n .anchor {\n visibility: visible;\n opacity: 1;\n transition: opacity 0.25s ease-in, visibility 0s ease-in 0s;\n }\n }\n }\n}\n\n%tag-hover {\n @extend %link-color;\n\n background: var(--tag-hover);\n border-color: var(--tag-hover);\n transition: background 0.35s ease-in-out;\n}\n\n%table-cell {\n padding: 0.4rem 1rem;\n font-size: 95%;\n white-space: nowrap;\n}\n\n%link-hover {\n color: #d2603a !important;\n border-bottom: 1px solid #d2603a;\n text-decoration: none;\n}\n\n%link-color {\n color: var(--link-color);\n}\n\n%link-underline {\n border-bottom: 1px solid var(--link-underline-color);\n}\n\n%clickable-transition {\n transition: all 0.3s ease-in-out;\n}\n\n%no-cursor {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n%no-bottom-border {\n border-bottom: none;\n}\n\n%cursor-pointer {\n cursor: pointer;\n}\n\n%normal-font-style {\n font-style: normal;\n}\n\n%rounded {\n border-radius: v.$radius-lg;\n}\n\n%img-caption {\n + em {\n display: block;\n text-align: center;\n font-style: normal;\n font-size: 80%;\n padding: 0;\n color: #6d6c6c;\n }\n}\n\n%sidebar-links {\n color: var(--sidebar-muted-color);\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n%text-clip {\n display: -webkit-box;\n overflow: hidden;\n text-overflow: ellipsis;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\n%text-ellipsis {\n @include mx.text-ellipsis;\n}\n\n%text-highlight {\n color: var(--text-muted-highlight-color);\n font-weight: 600;\n}\n\n%text-sm {\n font-size: 0.85rem;\n}\n\n%text-xs {\n font-size: 0.8rem;\n}\n\n%sup-fn-target {\n &:target {\n background-color: var(--footnote-target-bg);\n width: -moz-fit-content;\n width: -webkit-fit-content;\n width: fit-content;\n transition: background-color 1.75s ease-in-out;\n }\n}\n\n%btn-color {\n button i {\n color: #999999;\n }\n}\n\n%code-snippet-bg {\n background-color: var(--highlight-bg-color);\n}\n\n%code-snippet-padding {\n padding-left: 1rem;\n padding-right: 1.5rem;\n}\n\n%max-w-100 {\n max-width: 100%;\n}\n\n%panel-border {\n border-left: 1px solid var(--main-border-color);\n}\n","/* sidebar */\n\n$sidebar-width: 260px !default; /* the basic width */\n$sidebar-width-large: 300px !default; /* screen width: >= 1650px */\n$sb-btn-gap: 0.8rem !default;\n$sb-btn-gap-lg: 1rem !default;\n\n/* other framework sizes */\n\n$topbar-height: 3rem !default;\n$search-max-width: 200px !default;\n$footer-height: 5rem !default;\n$footer-height-large: 6rem !default; /* screen width: < 850px */\n$main-content-max-width: 1250px !default;\n$radius-sm: 6px !default;\n$radius-lg: 10px !default;\n$back2top-size: 2.75rem !default;\n\n/* syntax highlight */\n\n$code-font-size: 0.85rem !default;\n$code-header-height: 2.25rem !default;\n$code-dot-size: 0.75rem !default;\n$code-dot-gap: 0.5rem !default;\n$code-icon-width: 1.75rem !default;\n\n/* fonts */\n\n$font-family-base: 'Source Sans Pro', 'Microsoft Yahei', sans-serif !default;\n$font-family-heading: Lato, 'Microsoft Yahei', sans-serif !default;\n","@use '../abstracts/variables' as v;\n@use '../abstracts/breakpoints' as bp;\n@use '../abstracts/mixins' as mx;\n@use '../abstracts/placeholders';\n@use '../themes/light';\n@use '../themes/dark';\n\n:root {\n font-size: 16px;\n}\n\nhtml {\n @media (prefers-color-scheme: light) {\n &:not([data-mode]),\n &[data-mode='light'] {\n @include light.styles;\n }\n\n &[data-mode='dark'] {\n @include dark.styles;\n }\n }\n\n @media (prefers-color-scheme: dark) {\n &:not([data-mode]),\n &[data-mode='dark'] {\n @include dark.styles;\n }\n\n &[data-mode='light'] {\n @include light.styles;\n }\n }\n\n @include bp.lg {\n overflow-y: scroll;\n }\n}\n\nbody {\n background: var(--main-bg);\n padding: env(safe-area-inset-top) env(safe-area-inset-right)\n env(safe-area-inset-bottom) env(safe-area-inset-left);\n color: var(--text-color);\n -webkit-font-smoothing: antialiased;\n font-family: v.$font-family-base;\n}\n\nh1.dynamic-title {\n @include bp.lt(bp.get(lg)) {\n display: none;\n\n ~ .content {\n margin-top: 2.5rem;\n }\n }\n}\n\nmain {\n &.col-12 {\n @include bp.xxxl {\n padding-right: 4.5rem !important;\n }\n }\n}\n\n.preview-img {\n aspect-ratio: 40 / 21;\n width: 100%;\n height: 100%;\n overflow: hidden;\n\n @extend %rounded;\n\n &:not(.no-bg) {\n background: var(--img-bg);\n }\n\n img {\n height: 100%;\n -o-object-fit: cover;\n object-fit: cover;\n\n @extend %rounded;\n\n @at-root #post-list & {\n width: 100%;\n }\n }\n}\n\n.post-preview {\n @extend %rounded;\n\n border: 0;\n background: var(--card-bg);\n box-shadow: var(--card-shadow);\n\n &::before {\n @extend %rounded;\n\n content: '';\n width: 100%;\n height: 100%;\n position: absolute;\n background-color: var(--card-hover-bg);\n opacity: 0;\n transition: opacity 0.35s ease-in-out;\n }\n\n &:hover {\n &::before {\n opacity: 0.3;\n }\n }\n}\n\n.post-meta {\n @extend %text-sm;\n\n a {\n &:not([class]):hover {\n @extend %link-hover;\n }\n }\n\n em {\n @extend %normal-font-style;\n }\n}\n\n.content {\n font-size: 1.08rem;\n margin-top: 2rem;\n overflow-wrap: break-word;\n\n @include bp.xl {\n font-size: 1.03rem;\n }\n\n a {\n &.popup {\n @extend %no-cursor;\n @extend %img-caption;\n @include mx.mt-mb(0.5rem);\n\n cursor: zoom-in;\n }\n\n &:not(.img-link) {\n @extend %link-underline;\n\n &:hover {\n @extend %link-hover;\n }\n }\n }\n\n ol,\n ul {\n &:not([class]),\n &.task-list {\n -webkit-padding-start: 1.75rem;\n padding-inline-start: 1.75rem;\n\n li {\n margin: 0.25rem 0;\n padding-left: 0.25rem;\n }\n\n ol,\n ul {\n -webkit-padding-start: 1.25rem;\n padding-inline-start: 1.25rem;\n margin: 0.5rem 0;\n }\n }\n }\n\n ul.task-list {\n -webkit-padding-start: 1.25rem;\n padding-inline-start: 1.25rem;\n\n li {\n list-style-type: none;\n padding-left: 0;\n\n /* checkbox icon */\n > i {\n width: 2rem;\n margin-left: -1.25rem;\n color: var(--checkbox-color);\n\n &.checked {\n color: var(--checkbox-checked-color);\n }\n }\n\n ul {\n -webkit-padding-start: 1.75rem;\n padding-inline-start: 1.75rem;\n }\n }\n\n input[type='checkbox'] {\n margin: 0 0.5rem 0.2rem -1.3rem;\n vertical-align: middle;\n }\n } /* ul */\n\n dl > dd {\n margin-left: 1rem;\n }\n\n ::marker {\n color: var(--text-muted-color);\n }\n\n .table-wrapper > table {\n @include bp.lg {\n min-width: 70%;\n }\n }\n} /* .content */\n\n.tag:hover {\n @extend %tag-hover;\n}\n\n.post-tag {\n display: inline-block;\n min-width: 2rem;\n text-align: center;\n border-radius: 0.5rem;\n border: 1px solid var(--btn-border-color);\n padding: 0 0.4rem;\n color: var(--text-muted-color);\n line-height: 1.3rem;\n\n &:not(:last-child) {\n margin-right: 0.2rem;\n }\n}\n\n.rounded-10 {\n border-radius: 10px !important;\n}\n\n.img-link {\n color: transparent;\n display: inline-flex;\n}\n\n.shimmer {\n overflow: hidden;\n position: relative;\n background: var(--img-bg);\n\n &::before {\n content: '';\n position: absolute;\n background: var(--shimmer-bg);\n height: 100%;\n width: 100%;\n -webkit-animation: shimmer 1.3s infinite;\n animation: shimmer 1.3s infinite;\n }\n\n @-webkit-keyframes shimmer {\n 0% {\n transform: translateX(-100%);\n }\n\n 100% {\n transform: translateX(100%);\n }\n }\n\n @keyframes shimmer {\n 0% {\n transform: translateX(-100%);\n }\n\n 100% {\n transform: translateX(100%);\n }\n }\n}\n\n.embed-video {\n width: 100%;\n height: 100%;\n margin-bottom: 1rem;\n aspect-ratio: 16 / 9;\n\n @extend %rounded;\n\n &.twitch {\n aspect-ratio: 310 / 189;\n }\n\n &.file {\n display: block;\n width: auto;\n height: auto;\n max-width: 100%;\n max-height: 100%;\n margin: auto;\n margin-bottom: 0;\n }\n\n @extend %img-caption;\n}\n\n.embed-audio {\n width: 100%;\n\n &.file {\n display: block;\n }\n\n &.spotify {\n border-radius: 14px;\n }\n\n @extend %img-caption;\n}\n\n/* --- Effects classes --- */\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.btn-box-shadow {\n box-shadow: var(--card-shadow);\n}\n\n/* overwrite bootstrap muted */\n.text-muted {\n color: var(--text-muted-color) !important;\n}\n\n/* Overwrite bootstrap tooltip */\n.tooltip-inner {\n font-size: 0.7rem;\n max-width: 220px;\n text-align: left;\n}\n\n/* Overwrite bootstrap outline button */\n.btn.btn-outline-primary {\n &:not(.disabled):hover {\n border-color: #007bff !important;\n }\n}\n\n.disabled {\n color: rgb(206 196 196);\n pointer-events: auto;\n cursor: not-allowed;\n}\n\n.hide-border-bottom {\n border-bottom: none !important;\n}\n\n.input-focus {\n box-shadow: none;\n border-color: var(--input-focus-border-color) !important;\n background: center !important;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;\n}\n\n.left {\n float: left;\n margin: 0.75rem 1rem 1rem 0;\n}\n\n.right {\n float: right;\n margin: 0.75rem 0 1rem 1rem;\n}\n\n/* --- Overriding --- */\n\n/* mermaid */\n.mermaid {\n text-align: center;\n}\n\n/* MathJax */\nmjx-container {\n overflow-y: hidden;\n min-width: auto !important;\n}\n\n@media (hover: hover) {\n #sidebar ul > li:last-child::after {\n transition: top 0.5s ease;\n }\n\n .nav-link {\n transition: background-color 0.3s ease-in-out;\n }\n\n .post-preview {\n transition: background-color 0.35s ease-in-out;\n }\n}\n\n#mask {\n inset: 0 0 0 0;\n}\n\n#main-wrapper {\n position: relative;\n\n @include mx.pl-pr(0);\n\n @include bp.lt(bp.get(lg)) {\n @include mx.slide;\n }\n\n @include bp.lg {\n margin-left: v.$sidebar-width;\n }\n\n @include bp.xxxl {\n margin-left: v.$sidebar-width-large;\n }\n\n > .container {\n min-height: 100vh;\n\n @include bp.lte(bp.get(md)) {\n @include mx.max-w-100;\n @include mx.pl-pr(0);\n }\n\n @include bp.lt(bp.get(lg)) {\n max-width: 100%;\n }\n\n /* Pad horizontal */\n @include bp.between(992px, calc(#{bp.get(xl)} - 1px)) {\n .col-lg-11 {\n flex: 0 0 96%;\n max-width: 96%;\n }\n }\n\n @include bp.lt(bp.get(xl)) {\n > .row {\n justify-content: center !important;\n }\n }\n\n @include bp.xxxl {\n max-width: v.$main-content-max-width;\n\n @include mx.pl-pr(1.75rem, true);\n }\n }\n}\n\n/* --- basic wrappers --- */\n\n#topbar-wrapper.row,\n#main-wrapper > .container > .row,\n#search-result-wrapper > .row {\n @include mx.ml-mr(0);\n}\n\n#tail-wrapper {\n @include bp.xxxl {\n padding-right: 4.5rem !important;\n }\n\n > :not(script) {\n margin-top: 3rem;\n }\n}\n","@mixin styles {\n /* Framework color */\n --main-bg: white;\n --mask-bg: #c1c3c5;\n --main-border-color: #f3f3f3;\n\n /* Common color */\n --text-color: #34343c;\n --text-muted-color: #757575;\n --text-muted-highlight-color: inherit;\n --heading-color: #2a2a2a;\n --label-color: #585858;\n --blockquote-border-color: #eeeeee;\n --blockquote-text-color: #757575;\n --link-color: #0056b2;\n --link-underline-color: #dee2e6;\n --button-bg: #ffffff;\n --btn-border-color: #e9ecef;\n --btn-backtotop-color: #686868;\n --btn-backtotop-border-color: #f1f1f1;\n --checkbox-color: #c5c5c5;\n --checkbox-checked-color: #07a8f7;\n --img-bg: radial-gradient(circle, rgb(255 255 255) 0%, rgb(239 239 239) 100%);\n --shimmer-bg: linear-gradient(\n 90deg,\n rgb(250 250 250 / 0%) 0%,\n rgb(232 230 230 / 100%) 50%,\n rgb(250 250 250 / 0%) 100%\n );\n\n /* Sidebar */\n --site-title-color: rgb(113 113 113);\n --site-subtitle-color: #717171;\n --sidebar-bg: #f6f8fa;\n --sidebar-border-color: #efefef;\n --sidebar-muted-color: #545454;\n --sidebar-active-color: #1d1d1d;\n --sidebar-hover-bg: rgb(223 233 241 / 64%);\n --sidebar-btn-bg: white;\n --sidebar-btn-color: #8e8e8e;\n --avatar-border-color: white;\n\n /* Topbar */\n --topbar-bg: rgb(255 255 255 / 70%);\n --topbar-text-color: rgb(78 78 78);\n --search-border-color: rgb(240 240 240);\n --search-icon-color: #c2c6cc;\n --input-focus-border-color: #b8b8b8;\n\n /* Home page */\n --post-list-text-color: dimgray;\n --btn-patinator-text-color: #555555;\n --btn-paginator-hover-color: var(--sidebar-bg);\n\n /* Posts */\n --toc-highlight: #0550ae;\n --toc-popup-border-color: lightgray;\n --btn-share-color: gray;\n --btn-share-hover-color: #0d6efd;\n --card-bg: white;\n --card-hover-bg: #e2e2e2;\n --card-shadow: rgb(104 104 104 / 5%) 0 2px 6px 0,\n rgb(211 209 209 / 15%) 0 0 0 1px;\n --footnote-target-bg: lightcyan;\n --tb-odd-bg: #fbfcfd;\n --tb-border-color: #eaeaea;\n --dash-color: silver;\n --kbd-wrap-color: #bdbdbd;\n --kbd-text-color: var(--text-color);\n --kbd-bg-color: white;\n --prompt-text-color: rgb(46 46 46 / 77%);\n --prompt-tip-bg: rgb(123 247 144 / 20%);\n --prompt-tip-icon-color: #03b303;\n --prompt-info-bg: #e1f5fe;\n --prompt-info-icon-color: #0070cb;\n --prompt-warning-bg: rgb(255 243 205);\n --prompt-warning-icon-color: #ef9c03;\n --prompt-danger-bg: rgb(248 215 218 / 56%);\n --prompt-danger-icon-color: #df3c30;\n\n /* Tags */\n --tag-border: #dee2e6;\n --tag-shadow: var(--btn-border-color);\n --tag-hover: rgb(222 226 230);\n --search-tag-bg: #f8f9fa;\n\n /* Categories */\n --categories-border: rgb(0 0 0 / 12.5%);\n --categories-hover-bg: var(--btn-border-color);\n --categories-icon-hover-color: darkslategray;\n\n /* Archive */\n --timeline-color: rgb(0 0 0 / 7.5%);\n --timeline-node-bg: #c2c6cc;\n --timeline-year-dot-color: #ffffff;\n\n /* --- Custom code light mode colors --- */\n --language-border-color: #ececec;\n --highlight-bg-color: #f6f8fa;\n --highlighter-rouge-color: #3f596f;\n --highlight-lineno-color: #9e9e9e;\n --inline-code-bg: rgb(25 25 28 / 5%);\n --code-color: #3a3a3a;\n --code-header-text-color: #a3a3a3;\n --code-header-muted-color: #e5e5e5;\n --code-header-icon-color: #c9c8c8;\n --clipboard-checked-color: #43c743;\n\n [class^='prompt-'] {\n --link-underline-color: rgb(219 216 216);\n }\n\n .dark {\n display: none;\n }\n\n /* --- Syntax highlight theme from `rougify style github` --- */\n\n .highlight table td {\n padding: 5px;\n }\n\n .highlight table pre {\n margin: 0;\n }\n\n .highlight,\n .highlight .w {\n color: #24292f;\n background-color: #f6f8fa;\n }\n\n .highlight .k,\n .highlight .kd,\n .highlight .kn,\n .highlight .kp,\n .highlight .kr,\n .highlight .kt,\n .highlight .kv {\n color: #cf222e;\n }\n\n .highlight .gr {\n color: #f6f8fa;\n }\n\n .highlight .gd {\n color: #82071e;\n background-color: #ffebe9;\n }\n\n .highlight .nb {\n color: #953800;\n }\n\n .highlight .nc {\n color: #953800;\n }\n\n .highlight .no {\n color: #953800;\n }\n\n .highlight .nn {\n color: #953800;\n }\n\n .highlight .sr {\n color: #116329;\n }\n\n .highlight .na {\n color: #116329;\n }\n\n .highlight .nt {\n color: #116329;\n }\n\n .highlight .gi {\n color: #116329;\n background-color: #dafbe1;\n }\n\n .highlight .kc {\n color: #0550ae;\n }\n\n .highlight .l,\n .highlight .ld,\n .highlight .m,\n .highlight .mb,\n .highlight .mf,\n .highlight .mh,\n .highlight .mi,\n .highlight .il,\n .highlight .mo,\n .highlight .mx {\n color: #0550ae;\n }\n\n .highlight .sb {\n color: #0550ae;\n }\n\n .highlight .bp {\n color: #0550ae;\n }\n\n .highlight .ne {\n color: #0550ae;\n }\n\n .highlight .nl {\n color: #0550ae;\n }\n\n .highlight .py {\n color: #0550ae;\n }\n\n .highlight .nv,\n .highlight .vc,\n .highlight .vg,\n .highlight .vi,\n .highlight .vm {\n color: #0550ae;\n }\n\n .highlight .o,\n .highlight .ow {\n color: #0550ae;\n }\n\n .highlight .gh {\n color: #0550ae;\n font-weight: bold;\n }\n\n .highlight .gu {\n color: #0550ae;\n font-weight: bold;\n }\n\n .highlight .s,\n .highlight .sa,\n .highlight .sc,\n .highlight .dl,\n .highlight .sd,\n .highlight .s2,\n .highlight .se,\n .highlight .sh,\n .highlight .sx,\n .highlight .s1,\n .highlight .ss {\n color: #0a3069;\n }\n\n .highlight .nd {\n color: #8250df;\n }\n\n .highlight .nf,\n .highlight .fm {\n color: #8250df;\n }\n\n .highlight .err {\n color: #f6f8fa;\n background-color: #82071e;\n }\n\n .highlight .c,\n .highlight .ch,\n .highlight .cd,\n .highlight .cm,\n .highlight .cp,\n .highlight .cpf,\n .highlight .c1,\n .highlight .cs {\n color: #68717a;\n }\n\n .highlight .gl {\n color: #68717a;\n }\n\n .highlight .gt {\n color: #68717a;\n }\n\n .highlight .ni {\n color: #24292f;\n }\n\n .highlight .si {\n color: #24292f;\n }\n\n .highlight .ge {\n color: #24292f;\n font-style: italic;\n }\n\n .highlight .gs {\n color: #24292f;\n font-weight: bold;\n }\n}\n","@mixin styles {\n color-scheme: dark;\n\n /* Framework color */\n --main-bg: rgb(27 27 30);\n --mask-bg: rgb(68 69 70);\n --main-border-color: rgb(44 45 45);\n\n /* Common color */\n --text-color: rgb(175 176 177);\n --text-muted-color: #868686;\n --text-muted-highlight-color: #aeaeae;\n --heading-color: #cccccc;\n --label-color: #a7a7a7;\n --blockquote-border-color: rgb(66 66 66);\n --blockquote-text-color: #868686;\n --link-color: rgb(138 180 248);\n --link-underline-color: rgb(82 108 150);\n --button-bg: #1e1e1e;\n --btn-border-color: #2e2f31;\n --btn-backtotop-color: var(--text-color);\n --btn-backtotop-border-color: #212122;\n --card-header-bg: #292929;\n --checkbox-color: rgb(118 120 121);\n --checkbox-checked-color: var(--link-color);\n --img-bg: radial-gradient(circle, rgb(22 22 24) 0%, rgb(32 32 32) 100%);\n --shimmer-bg: linear-gradient(\n 90deg,\n rgb(255 255 255 / 0%) 0%,\n rgb(58 55 55 / 40%) 50%,\n rgb(255 255 255 / 0%) 100%\n );\n\n /* Sidebar */\n --site-title-color: #717070;\n --site-subtitle-color: #868686;\n --sidebar-bg: #1e1e1e;\n --sidebar-border-color: #292929;\n --sidebar-muted-color: #868686;\n --sidebar-active-color: rgb(255 255 255 / 95%);\n --sidebar-hover-bg: #262626;\n --sidebar-btn-bg: #232328;\n --sidebar-btn-color: #787878;\n --avatar-border-color: rgb(206 206 206 / 90%);\n\n /* Topbar */\n --topbar-bg: rgb(27 27 30 / 64%);\n --topbar-text-color: var(--text-color);\n --search-border-color: rgb(55 55 55);\n --search-icon-color: rgb(100 102 105);\n --input-focus-border-color: rgb(112 114 115);\n\n /* Home page */\n --post-list-text-color: rgb(175 176 177);\n --btn-patinator-text-color: var(--text-color);\n --btn-paginator-hover-color: #2e2e2e;\n\n /* Posts */\n --toc-highlight: rgb(116 178 243);\n --toc-popup-border-color: #373737;\n --tag-hover: rgb(43 56 62);\n --tb-odd-bg: #252526; /* odd rows of the posts' table */\n --tb-even-bg: rgb(31 31 34); /* even rows of the posts' table */\n --tb-border-color: var(--tb-odd-bg);\n --footnote-target-bg: rgb(63 81 181);\n --btn-share-color: #6c757d;\n --btn-share-hover-color: #bfc1ca;\n --card-bg: #1e1e1e;\n --card-hover-bg: #464d51;\n --card-shadow: rgb(21 21 21 / 72%) 0 6px 18px 0,\n rgb(137 135 135 / 24%) 0 0 0 1px;\n --kbd-wrap-color: #6a6a6a;\n --kbd-text-color: #d3d3d3;\n --kbd-bg-color: #242424;\n --prompt-text-color: rgb(216 212 212 / 75%);\n --prompt-tip-bg: rgb(22 60 36 / 64%);\n --prompt-tip-icon-color: rgb(15 164 15 / 81%);\n --prompt-info-bg: rgb(7 59 104 / 80%);\n --prompt-info-icon-color: #0075d1;\n --prompt-warning-bg: rgb(90 69 3 / 88%);\n --prompt-warning-icon-color: rgb(255 165 0 / 80%);\n --prompt-danger-bg: rgb(86 28 8 / 80%);\n --prompt-danger-icon-color: #cd0202;\n\n /* Tags */\n --tag-border: rgb(59 79 88);\n --tag-shadow: rgb(32 33 33);\n --dash-color: rgb(63 65 68);\n --search-tag-bg: #292828;\n\n /* Categories */\n --categories-border: rgb(64 66 69 / 50%);\n --categories-hover-bg: rgb(73 75 76);\n --categories-icon-hover-color: white;\n\n /* Archive */\n --timeline-node-bg: rgb(150 152 156);\n --timeline-color: rgb(63 65 68);\n --timeline-year-dot-color: var(--timeline-color);\n\n /* Code highlight colors */\n --language-border-color: #2d2d2d;\n --highlight-bg-color: #151515;\n --highlighter-rouge-color: #c9def1;\n --highlight-lineno-color: #808080;\n --inline-code-bg: rgb(255 255 255 / 5%);\n --code-color: #b0b0b0;\n --code-header-text-color: #6a6a6a;\n --code-header-muted-color: #353535;\n --code-header-icon-color: #565656;\n --clipboard-checked-color: #2bcc2b;\n --filepath-text-color: #cacaca;\n\n .light {\n display: none;\n }\n\n /* Categories */\n .categories.card,\n .list-group-item {\n background-color: var(--card-bg);\n }\n\n .categories {\n .card-header {\n background-color: var(--card-header-bg);\n }\n\n .list-group-item {\n border-left: none;\n border-right: none;\n padding-left: 2rem;\n border-color: var(--categories-border);\n\n &:last-child {\n border-bottom-color: var(--card-bg);\n }\n }\n }\n\n #archives li:nth-child(odd) {\n background-image: linear-gradient(\n to left,\n rgb(26 26 30),\n rgb(39 39 45),\n rgb(39 39 45),\n rgb(39 39 45),\n rgb(26 26 30)\n );\n }\n\n /* stylelint-disable-next-line selector-id-pattern */\n #disqus_thread {\n color-scheme: none;\n }\n\n /* --- Syntax highlight theme from `rougify style base16.dark` --- */\n\n .highlight .gp {\n color: #87939d;\n }\n\n .highlight table td {\n padding: 5px;\n }\n\n .highlight table pre {\n margin: 0;\n }\n\n .highlight,\n .highlight .w {\n color: #d0d0d0;\n background-color: #151515;\n }\n\n .highlight .err {\n color: #151515;\n background-color: #ac4142;\n }\n\n .highlight .c,\n .highlight .ch,\n .highlight .cd,\n .highlight .cm,\n .highlight .cpf,\n .highlight .c1,\n .highlight .cs {\n color: #848484;\n }\n\n .highlight .cp {\n color: #f4bf75;\n }\n\n .highlight .nt {\n color: #f4bf75;\n }\n\n .highlight .o,\n .highlight .ow {\n color: #d0d0d0;\n }\n\n .highlight .p,\n .highlight .pi {\n color: #d0d0d0;\n }\n\n .highlight .gi {\n color: #90a959;\n }\n\n .highlight .gd {\n color: #f08a8b;\n background-color: #320000;\n }\n\n .highlight .gh {\n color: #6a9fb5;\n background-color: #151515;\n font-weight: bold;\n }\n\n .highlight .k,\n .highlight .kn,\n .highlight .kp,\n .highlight .kr,\n .highlight .kv {\n color: #aa759f;\n }\n\n .highlight .kc {\n color: #d28445;\n }\n\n .highlight .kt {\n color: #d28445;\n }\n\n .highlight .kd {\n color: #d28445;\n }\n\n .highlight .s,\n .highlight .sb,\n .highlight .sc,\n .highlight .dl,\n .highlight .sd,\n .highlight .s2,\n .highlight .sh,\n .highlight .sx,\n .highlight .s1 {\n color: #90a959;\n }\n\n .highlight .sa {\n color: #aa759f;\n }\n\n .highlight .sr {\n color: #75b5aa;\n }\n\n .highlight .si {\n color: #b76d45;\n }\n\n .highlight .se {\n color: #b76d45;\n }\n\n .highlight .nn {\n color: #f4bf75;\n }\n\n .highlight .nc {\n color: #f4bf75;\n }\n\n .highlight .no {\n color: #f4bf75;\n }\n\n .highlight .na {\n color: #6a9fb5;\n }\n\n .highlight .m,\n .highlight .mb,\n .highlight .mf,\n .highlight .mh,\n .highlight .mi,\n .highlight .il,\n .highlight .mo,\n .highlight .mx {\n color: #90a959;\n }\n\n .highlight .ss {\n color: #90a959;\n }\n}\n","@use 'sass:map';\n\n$-breakpoints: (\n // 1 column\n sm: 576px,\n md: 768px,\n // 2 columns\n lg: 850px,\n // 3 columns\n xl: 1200px,\n xxl: 1400px,\n xxxl: 1650px\n);\n\n@function get($breakpoint) {\n @return map.get($-breakpoints, $breakpoint);\n}\n\n/* Less than the given width */\n@mixin lt($width) {\n @media all and (max-width: calc(#{$width} - 1px)) {\n @content;\n }\n}\n\n/* Less than or equal to the given width */\n@mixin lte($width) {\n @media all and (max-width: $width) {\n @content;\n }\n}\n\n@mixin sm {\n @media all and (min-width: get(sm)) {\n @content;\n }\n}\n\n@mixin md {\n @media all and (min-width: get(md)) {\n @content;\n }\n}\n\n@mixin lg {\n @media all and (min-width: get(lg)) {\n @content;\n }\n}\n\n@mixin xl {\n @media all and (min-width: get(xl)) {\n @content;\n }\n}\n\n@mixin xxl {\n @media all and (min-width: get(xxl)) {\n @content;\n }\n}\n\n@mixin xxxl {\n @media all and (min-width: get(xxxl)) {\n @content;\n }\n}\n\n@mixin between($min, $max) {\n @media all and (min-width: $min) and (max-width: $max) {\n @content;\n }\n}\n","@use '../abstracts/variables' as v;\n@use '../abstracts/breakpoints' as bp;\n@use '../abstracts/mixins' as mx;\n@use '../abstracts/placeholders';\n\n@for $i from 1 through 5 {\n h#{$i} {\n @extend %heading;\n\n @if $i > 1 {\n @extend %anchor;\n }\n\n @if $i < 5 {\n $size-factor: 0.25rem;\n\n @if $i > 1 {\n $size-factor: 0.18rem;\n\n main & {\n @if $i == 2 {\n margin: 2.5rem 0 1.25rem;\n } @else {\n margin: 2rem 0 1rem;\n }\n }\n }\n\n font-size: 1rem + (5 - $i) * $size-factor;\n } @else {\n font-size: 1.05rem;\n }\n }\n}\n\na {\n @extend %link-color;\n\n text-decoration: none;\n}\n\nimg {\n max-width: 100%;\n height: auto;\n transition: all 0.35s ease-in-out;\n\n .blur & {\n $blur: 20px;\n\n -webkit-filter: blur($blur);\n filter: blur($blur);\n }\n}\n\nblockquote {\n border-left: 0.125rem solid var(--blockquote-border-color);\n padding-left: 1rem;\n color: var(--blockquote-text-color);\n margin-top: 0.5rem;\n\n > p:last-child {\n margin-bottom: 0;\n }\n\n &[class^='prompt-'] {\n border-left: 0;\n position: relative;\n padding: 1rem 1rem 1rem 3rem;\n color: var(--prompt-text-color);\n\n @extend %rounded;\n\n &::before {\n text-align: center;\n width: 3rem;\n position: absolute;\n left: 0.25rem;\n margin-top: 0.4rem;\n text-rendering: auto;\n -webkit-font-smoothing: antialiased;\n }\n }\n\n @include mx.prompt('tip', '\\f0eb', $fa-style: 'regular');\n @include mx.prompt('info', '\\f06a', $rotate: 180);\n @include mx.prompt('warning', '\\f06a');\n @include mx.prompt('danger', '\\f071');\n}\n\nkbd {\n font-family: Lato, sans-serif;\n display: inline-block;\n vertical-align: middle;\n line-height: 1.3rem;\n min-width: 1.75rem;\n text-align: center;\n margin: 0 0.3rem;\n padding-top: 0.1rem;\n color: var(--kbd-text-color);\n background-color: var(--kbd-bg-color);\n border-radius: v.$radius-sm;\n border: solid 1px var(--kbd-wrap-color);\n box-shadow: inset 0 -2px 0 var(--kbd-wrap-color);\n}\n\nhr {\n border-color: var(--main-border-color);\n opacity: 1;\n}\n\nfooter {\n background-color: var(--main-bg);\n height: v.$footer-height;\n border-top: 1px solid var(--main-border-color);\n\n @extend %text-xs;\n\n a {\n @extend %text-highlight;\n\n &:hover {\n @extend %link-hover;\n }\n }\n\n em {\n @extend %text-highlight;\n }\n\n p {\n text-align: center;\n margin-bottom: 0;\n }\n}\n\n/* fontawesome icons */\ni {\n &.far,\n &.fas {\n @extend %no-cursor;\n }\n}\n\nsup {\n @extend %sup-fn-target;\n}\n\nmain {\n line-height: 1.75;\n\n h1 {\n margin-top: 2rem;\n\n @include bp.lg {\n margin-top: 3rem;\n }\n }\n\n p {\n > a.popup {\n &:not(.normal):not(.left):not(.right) {\n @include mx.align-center;\n }\n }\n }\n\n .categories,\n #tags,\n #archives {\n a:not(:hover) {\n @extend %no-bottom-border;\n }\n }\n\n @include bp.lte(bp.get(sm)) {\n .content {\n > blockquote[class^='prompt-'] {\n @include mx.ml-mr(-1rem);\n\n border-radius: 0;\n max-width: none;\n }\n }\n }\n}\n\n.footnotes > ol {\n padding-left: 2rem;\n margin-top: 0.5rem;\n\n > li {\n &:not(:last-child) {\n margin-bottom: 0.3rem;\n }\n\n @extend %sup-fn-target;\n\n > p {\n margin-left: 0.25em;\n\n @include mx.mt-mb(0);\n }\n }\n}\n\n.footnote {\n @at-root a#{&} {\n @include mx.ml-mr(1px);\n @include mx.pl-pr(2px);\n\n border-bottom-style: none !important;\n }\n}\n\n.reversefootnote {\n @at-root a#{&} {\n font-size: 0.6rem;\n line-height: 1;\n position: relative;\n bottom: 0.25em;\n margin-left: 0.25em;\n border-bottom-style: none !important;\n }\n}\n\n/* --- Begin of Markdown table style --- */\n\n/* it will be created by Liquid */\n.table-wrapper {\n overflow-x: auto;\n margin-bottom: 1.5rem;\n\n > table {\n min-width: 100%;\n overflow-x: auto;\n border-spacing: 0;\n\n thead {\n border-bottom: solid 2px rgb(210 215 217 / 75%);\n\n th {\n @extend %table-cell;\n }\n }\n\n tbody {\n tr {\n border-bottom: 1px solid var(--tb-border-color);\n\n &:nth-child(2n) {\n background-color: var(--tb-even-bg);\n }\n\n &:nth-child(2n + 1) {\n background-color: var(--tb-odd-bg);\n }\n\n td {\n @extend %table-cell;\n }\n }\n } /* tbody */\n } /* table */\n}\n","@use '../abstracts/variables' as v;\n@use '../abstracts/breakpoints' as bp;\n@use '../abstracts/mixins' as mx;\n@use '../abstracts/placeholders';\n\n.highlighter-rouge {\n color: var(--highlighter-rouge-color);\n margin-top: 0.5rem;\n margin-bottom: 1.2em; /* Override BS Inline-code style */\n}\n\n.highlight {\n @extend %rounded;\n @extend %code-snippet-bg;\n\n overflow: auto;\n padding-bottom: 0.75rem;\n\n @at-root figure#{&} {\n @extend %code-snippet-bg;\n }\n\n pre {\n margin-bottom: 0;\n font-size: v.$code-font-size;\n line-height: 1.4rem;\n }\n\n table {\n td {\n &:first-child {\n display: inline-block;\n margin-left: 1rem;\n margin-right: 0.75rem;\n }\n\n &:last-child {\n padding-right: 2rem !important;\n }\n\n pre {\n overflow: visible; /* Fixed iOS safari overflow-x */\n word-break: normal; /* Fixed iOS safari linenos code break */\n }\n }\n }\n\n .lineno {\n text-align: right;\n color: var(--highlight-lineno-color);\n -webkit-user-select: none;\n -moz-user-select: none;\n -o-user-select: none;\n -ms-user-select: none;\n user-select: none;\n }\n} /* .highlight */\n\ncode {\n -webkit-hyphens: none;\n -ms-hyphens: none;\n hyphens: none;\n color: var(--code-color);\n\n &.highlighter-rouge {\n font-size: v.$code-font-size;\n padding: 3px 5px;\n overflow-wrap: break-word;\n border-radius: v.$radius-sm;\n background-color: var(--inline-code-bg);\n }\n\n &.filepath {\n background-color: inherit;\n color: var(--filepath-text-color);\n font-weight: 600;\n padding: 0;\n }\n\n a > &.highlighter-rouge {\n padding-bottom: 0; /* show link's underlinke */\n color: inherit;\n }\n\n a:hover > &.highlighter-rouge {\n border-bottom: none;\n }\n\n blockquote & {\n color: inherit;\n }\n}\n\ntd.rouge-code {\n @extend %code-snippet-padding;\n\n /*\n Prevent some browser extends from\n changing the URL string of code block.\n */\n a {\n color: inherit !important;\n border-bottom: none !important;\n pointer-events: none;\n }\n}\n\ndiv[class^='language-'] {\n @extend %rounded;\n @extend %code-snippet-bg;\n\n box-shadow: var(--language-border-color) 0 0 0 1px;\n\n .content > & {\n @include mx.ml-mr(-1rem);\n\n border-radius: 0;\n\n @include bp.sm {\n @include mx.ml-mr(0);\n\n border-radius: v.$radius-lg;\n }\n }\n\n .code-header {\n @include bp.sm {\n @include mx.ml-mr(0);\n\n $dot-margin: 1rem;\n\n &::before {\n content: '';\n display: inline-block;\n margin-left: $dot-margin;\n width: v.$code-dot-size;\n height: v.$code-dot-size;\n border-radius: 50%;\n background-color: var(--code-header-muted-color);\n box-shadow: (v.$code-dot-size + v.$code-dot-gap) 0 0\n var(--code-header-muted-color),\n (v.$code-dot-size + v.$code-dot-gap) * 2 0 0\n var(--code-header-muted-color);\n }\n\n span {\n // center the text of label\n margin-left: calc(($dot-margin + v.$code-dot-size) / 2 * -1);\n }\n }\n }\n\n .highlight {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n}\n\n/* Hide line numbers for default, console, and terminal code snippets */\ndiv {\n &.nolineno,\n &.language-plaintext,\n &.language-console,\n &.language-terminal {\n td:first-child {\n padding: 0 !important;\n margin-right: 0;\n\n .lineno {\n display: none;\n }\n }\n }\n}\n\n.code-header {\n @extend %no-cursor;\n\n display: flex;\n justify-content: space-between;\n align-items: center;\n height: v.$code-header-height;\n margin-left: 0.75rem;\n margin-right: 0.25rem;\n\n /* the label block */\n span {\n line-height: v.$code-header-height;\n\n /* label icon */\n i {\n font-size: 1rem;\n width: v.$code-icon-width;\n color: var(--code-header-icon-color);\n\n &.small {\n font-size: 70%;\n }\n }\n\n @at-root [file] #{&} > i {\n position: relative;\n top: 1px; /* center the file icon */\n }\n\n /* label text */\n &::after {\n content: attr(data-label-text);\n font-size: 0.85rem;\n font-weight: 600;\n color: var(--code-header-text-color);\n }\n }\n\n /* clipboard */\n button {\n @extend %cursor-pointer;\n @extend %rounded;\n\n border: 1px solid transparent;\n height: v.$code-header-height;\n width: v.$code-header-height;\n padding: 0;\n background-color: inherit;\n\n i {\n color: var(--code-header-icon-color);\n }\n\n &[timeout] {\n &:hover {\n border-color: var(--clipboard-checked-color);\n }\n\n i {\n color: var(--clipboard-checked-color);\n }\n }\n\n &:focus {\n outline: none;\n }\n\n &:not([timeout]):hover {\n background-color: rgb(128 128 128 / 37%);\n\n i {\n color: white;\n }\n }\n }\n}\n","@use '../abstracts/variables' as v;\n@use '../abstracts/breakpoints' as bp;\n\n#back-to-top {\n visibility: hidden;\n opacity: 0;\n z-index: 1;\n cursor: pointer;\n position: fixed;\n right: 1rem;\n bottom: calc(v.$footer-height-large - v.$back2top-size / 2);\n background: var(--button-bg);\n color: var(--btn-backtotop-color);\n padding: 0;\n width: v.$back2top-size;\n height: v.$back2top-size;\n border-radius: 50%;\n border: 1px solid var(--btn-backtotop-border-color);\n transition: opacity 0.5s ease-in-out, transform 0.2s ease-out;\n\n @include bp.lg {\n right: 5%;\n bottom: calc(v.$footer-height - v.$back2top-size / 2);\n }\n\n @include bp.xxl {\n right: calc((100vw - v.$sidebar-width - 1140px) / 2 + 3rem);\n }\n\n @include bp.xxxl {\n right: calc(\n (100vw - v.$sidebar-width-large - v.$main-content-max-width) / 2 + 2rem\n );\n }\n\n &:hover {\n transform: translate3d(0, -5px, 0);\n -webkit-transform: translate3d(0, -5px, 0);\n }\n\n i {\n line-height: v.$back2top-size;\n position: relative;\n bottom: 2px;\n }\n\n &.show {\n opacity: 1;\n visibility: visible;\n }\n}\n","@use '../abstracts/variables' as v;\n@use '../abstracts/breakpoints' as bp;\n@use '../abstracts/placeholders';\n\n/* PWA update popup */\n#notification {\n @-webkit-keyframes popup {\n from {\n opacity: 0;\n bottom: 0;\n }\n }\n\n @keyframes popup {\n from {\n opacity: 0;\n bottom: 0;\n }\n }\n\n .toast-header {\n background: none;\n border-bottom: none;\n color: inherit;\n }\n\n .toast-body {\n font-family: Lato, sans-serif;\n line-height: 1.25rem;\n\n button {\n font-size: 90%;\n min-width: 4rem;\n }\n }\n\n &.toast {\n &.show {\n display: block;\n min-width: 20rem;\n border-radius: 0.5rem;\n -webkit-backdrop-filter: blur(10px);\n backdrop-filter: blur(10px);\n background-color: rgb(255 255 255 / 50%);\n color: #1b1b1eba;\n position: fixed;\n left: 50%;\n bottom: 20%;\n transform: translateX(-50%);\n -webkit-animation: popup 0.8s;\n animation: popup 0.8s;\n }\n }\n}\n\n#toc-popup {\n $slide-in: slide-in 0.3s ease-out;\n $slide-out: slide-out 0.3s ease-out;\n $curtain-height: 2rem;\n $backdrop: blur(5px);\n\n border-color: var(--toc-popup-border-color);\n border-width: 1px;\n border-radius: v.$radius-lg;\n color: var(--text-color);\n background: var(--card-bg);\n margin-top: v.$topbar-height;\n min-width: 20rem;\n font-size: 1.05rem;\n\n @include bp.sm {\n max-width: 32rem;\n }\n\n &[open] {\n -webkit-animation: $slide-in;\n animation: $slide-in;\n }\n\n &[closing] {\n -webkit-animation: $slide-out;\n animation: $slide-out;\n }\n\n @include bp.lg {\n left: v.$sidebar-width;\n }\n\n .header {\n @extend %btn-color;\n\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n background-color: inherit;\n border-bottom: 1px solid var(--main-border-color);\n\n .label {\n font-family: v.$font-family-heading;\n }\n }\n\n button {\n > i {\n font-size: 1.25rem;\n vertical-align: middle;\n }\n\n &:focus-visible {\n box-shadow: none;\n }\n }\n\n ul {\n list-style-type: none;\n padding-left: 0;\n\n li {\n ul,\n & + li {\n margin-top: 0.25rem;\n }\n\n a {\n display: flex;\n line-height: 1.5;\n padding: 0.375rem 0;\n padding-right: 1.125rem;\n\n &.toc-link::before {\n display: none;\n }\n }\n }\n }\n\n @for $i from 2 through 4 {\n .node-name--H#{$i} {\n padding-left: 1.125rem * ($i - 1);\n }\n }\n\n .is-active-link {\n color: var(--toc-highlight) !important;\n font-weight: 600;\n }\n\n &::-webkit-backdrop {\n -webkit-backdrop-filter: $backdrop;\n backdrop-filter: $backdrop;\n }\n\n &::backdrop {\n -webkit-backdrop-filter: $backdrop;\n backdrop-filter: $backdrop;\n }\n\n &::after {\n display: flex;\n content: '';\n position: relative;\n background: linear-gradient(transparent, var(--card-bg) 70%);\n height: $curtain-height;\n }\n\n #toc-popup-content {\n overflow: auto;\n max-height: calc(100vh - 4 * v.$topbar-height);\n font-family: v.$font-family-heading;\n margin-bottom: -$curtain-height;\n }\n}\n","@use '../abstracts/variables' as v;\n@use '../abstracts/mixins' as mx;\n@use '../abstracts/breakpoints' as bp;\n@use '../abstracts/placeholders';\n\n$btn-border-width: 3px;\n$btn-mb: 0.5rem;\n$sidebar-display: 'sidebar-display'; /* the attribute for sidebar display */\n\n#sidebar {\n @include mx.pl-pr(0);\n\n position: fixed;\n top: 0;\n left: 0;\n height: 100%;\n overflow-y: auto;\n width: v.$sidebar-width;\n background: var(--sidebar-bg);\n border-right: 1px solid var(--sidebar-border-color);\n\n /* Hide scrollbar for IE, Edge and Firefox */\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n\n /* Hide scrollbar for Chrome, Safari and Opera */\n &::-webkit-scrollbar {\n display: none;\n }\n\n @include bp.lt(bp.get(lg)) {\n @include mx.slide;\n\n transform: translateX(-#{v.$sidebar-width}); /* hide */\n -webkit-transform: translateX(-#{v.$sidebar-width});\n\n [#{$sidebar-display}] & {\n transform: translateX(0);\n }\n }\n\n @include bp.xxxl {\n width: v.$sidebar-width-large;\n }\n\n %sidebar-link-hover {\n &:hover {\n color: var(--sidebar-active-color);\n }\n }\n\n a {\n @extend %sidebar-links;\n }\n\n #avatar {\n display: block;\n width: 6.5rem;\n height: 6.5rem;\n overflow: hidden;\n box-shadow: var(--avatar-border-color) 0 0 0 2px;\n transform: translateZ(0); /* fixed the zoom in Safari */\n\n @include bp.sm {\n width: 7rem;\n height: 7rem;\n }\n\n img {\n transition: transform 0.5s;\n\n &:hover {\n transform: scale(1.2);\n }\n }\n }\n\n .profile-wrapper {\n @include mx.mt-mb(2.5rem);\n @extend %clickable-transition;\n\n padding-left: 2.5rem;\n padding-right: 1.25rem;\n width: 100%;\n\n @include bp.lg {\n margin-top: 3rem;\n }\n\n @include bp.xxxl {\n margin-top: 3.5rem;\n margin-bottom: 2.5rem;\n padding-left: 3.5rem;\n }\n }\n\n .site-title {\n @extend %clickable-transition;\n @extend %sidebar-link-hover;\n\n font-family: inherit;\n font-weight: 900;\n font-size: 1.75rem;\n line-height: 1.2;\n letter-spacing: 0.25px;\n margin-top: 1.25rem;\n margin-bottom: 0.5rem;\n width: fit-content;\n color: var(--site-title-color);\n }\n\n .site-subtitle {\n font-size: 95%;\n color: var(--site-subtitle-color);\n margin-top: 0.25rem;\n word-spacing: 1px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n }\n\n ul {\n margin-bottom: 2rem;\n\n li.nav-item {\n opacity: 0.9;\n width: 100%;\n\n @include mx.pl-pr(1.5rem);\n\n @include bp.xxxl {\n @include mx.pl-pr(2.75rem);\n }\n\n a.nav-link {\n @include mx.pt-pb(0.6rem);\n\n display: flex;\n align-items: center;\n border-radius: 0.75rem;\n font-weight: 600;\n\n &:hover {\n background-color: var(--sidebar-hover-bg);\n }\n\n i {\n font-size: 95%;\n opacity: 0.8;\n margin-right: 1.5rem;\n }\n\n span {\n font-size: 90%;\n letter-spacing: 0.2px;\n }\n }\n\n &.active {\n .nav-link {\n color: var(--sidebar-active-color);\n background-color: var(--sidebar-hover-bg);\n\n span {\n opacity: 1;\n }\n }\n }\n\n &:not(:first-child) {\n margin-top: 0.25rem;\n }\n }\n }\n\n .sidebar-bottom {\n padding-left: 2rem;\n padding-right: 1rem;\n margin-bottom: 1.5rem;\n\n @include bp.xxxl {\n padding-left: 2.75rem;\n margin-bottom: 1.75rem;\n }\n\n $btn-size: 1.75rem;\n\n %button {\n width: $btn-size;\n height: $btn-size;\n margin-bottom: $btn-mb; // multi line gap\n border-radius: 50%;\n color: var(--sidebar-btn-color);\n background-color: var(--sidebar-btn-bg);\n text-align: center;\n display: flex;\n align-items: center;\n justify-content: center;\n\n &:not(:focus-visible) {\n box-shadow: var(--sidebar-border-color) 0 0 0 1px;\n }\n\n &:hover {\n background-color: var(--sidebar-hover-bg);\n }\n }\n\n a {\n @extend %button;\n @extend %sidebar-link-hover;\n @extend %clickable-transition;\n\n &:not(:last-child) {\n margin-right: v.$sb-btn-gap;\n\n @include bp.xxxl {\n margin-right: v.$sb-btn-gap-lg;\n }\n }\n }\n\n i {\n line-height: $btn-size;\n }\n\n #mode-toggle {\n @extend %button;\n @extend %sidebar-links;\n @extend %sidebar-link-hover;\n }\n\n .icon-border {\n @extend %no-cursor;\n @include mx.ml-mr(calc((v.$sb-btn-gap - $btn-border-width) / 2));\n\n background-color: var(--sidebar-btn-color);\n content: '';\n width: $btn-border-width;\n height: $btn-border-width;\n border-radius: 50%;\n margin-bottom: $btn-mb;\n\n @include bp.xxxl {\n @include mx.ml-mr(calc((v.$sb-btn-gap-lg - $btn-border-width) / 2));\n }\n }\n } /* .sidebar-bottom */\n} /* #sidebar */\n\n[#{$sidebar-display}] {\n #main-wrapper {\n @include bp.lt(bp.get(lg)) {\n transform: translateX(v.$sidebar-width);\n }\n }\n}\n","@use '../abstracts/variables' as v;\n@use '../abstracts/mixins' as mx;\n@use '../abstracts/breakpoints' as bp;\n@use '../abstracts/placeholders';\n\n#topbar-wrapper {\n height: v.$topbar-height;\n background-color: var(--topbar-bg);\n\n @include bp.lt(bp.get(lg)) {\n @include mx.slide(top 0.2s ease);\n\n left: 0;\n }\n}\n\n#topbar {\n @extend %btn-color;\n\n #breadcrumb {\n font-size: 1rem;\n color: var(--text-muted-color);\n padding-left: 0.5rem;\n\n a:hover {\n @extend %link-hover;\n }\n\n span {\n &:not(:last-child) {\n &::after {\n content: '›';\n padding: 0 0.3rem;\n }\n }\n }\n\n @include bp.lt(bp.get(lg)) {\n display: none;\n }\n\n @include bp.between(bp.get(lg), calc(#{bp.get(xl)} - 1px)) {\n width: 65%;\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: keep-all;\n white-space: nowrap;\n }\n }\n\n @include bp.lte(bp.get(md)) {\n @include mx.max-w-100;\n }\n\n @include bp.lt(bp.get(lg)) {\n max-width: 100%;\n }\n}\n\n#topbar-title {\n display: none;\n font-size: 1.1rem;\n font-weight: 600;\n font-family: sans-serif;\n color: var(--topbar-text-color);\n text-align: center;\n width: 70%;\n word-break: keep-all;\n\n @include bp.lt(bp.get(lg)) {\n display: block;\n }\n\n @include bp.lg {\n text-align: left;\n }\n}\n\n#sidebar-trigger,\n#search-trigger {\n display: none;\n\n @include bp.lt(bp.get(lg)) {\n display: block;\n }\n}\n","@use '../abstracts/breakpoints' as bp;\n@use '../abstracts/mixins' as mx;\n@use '../abstracts/placeholders';\n\n.access {\n top: 2rem;\n transition: top 0.2s ease-in-out;\n margin-top: 3rem;\n\n &:only-child {\n position: -webkit-sticky;\n position: sticky;\n }\n\n > section {\n @extend %panel-border;\n\n padding-left: 1rem;\n\n &:not(:first-child) {\n margin-top: 4rem;\n }\n }\n\n .content {\n font-size: 0.9rem;\n }\n}\n\n#panel-wrapper {\n /* the headings */\n .panel-heading {\n font-family: inherit;\n line-height: inherit;\n\n @include mx.label(inherit);\n }\n\n .post-tag {\n line-height: 1.05rem;\n font-size: 0.85rem;\n border-radius: 0.8rem;\n padding: 0.3rem 0.5rem;\n margin: 0 0.35rem 0.5rem 0;\n\n &:hover {\n transition: all 0.3s ease-in;\n }\n }\n\n > :last-child {\n margin-bottom: 4rem;\n }\n\n @include bp.lt(bp.get(xl)) {\n display: none;\n }\n}\n\n#access-lastmod {\n a {\n color: inherit;\n\n &:hover {\n @extend %link-hover;\n }\n\n @extend %no-bottom-border;\n }\n}\n","@use '../abstracts/breakpoints' as bp;\n@use '../abstracts/variables' as v;\n@use '../abstracts/mixins' as mx;\n@use '../abstracts/placeholders';\n\nfooter {\n background-color: var(--main-bg);\n height: v.$footer-height;\n border-top: 1px solid var(--main-border-color);\n\n @extend %text-xs;\n\n @include bp.lt(bp.get(lg)) {\n @include mx.slide;\n\n height: v.$footer-height-large;\n padding: 1.5rem 0;\n }\n\n a {\n @extend %text-highlight;\n\n &:hover {\n @extend %link-hover;\n }\n }\n\n em {\n @extend %text-highlight;\n }\n\n p {\n text-align: center;\n margin-bottom: 0;\n }\n}\n","@use '../abstracts/breakpoints' as bp;\n@use '../abstracts/variables' as v;\n@use '../abstracts/placeholders';\n\nsearch {\n display: flex;\n width: 100%;\n border-radius: 1rem;\n border: 1px solid var(--search-border-color);\n background: var(--main-bg);\n padding: 0 0.5rem;\n\n i {\n z-index: 2;\n font-size: 0.9rem;\n color: var(--search-icon-color);\n }\n\n @include bp.lt(bp.get(lg)) {\n display: none;\n }\n\n @include bp.lg {\n max-width: v.$search-max-width;\n }\n\n @include bp.xl {\n margin-right: 4rem;\n }\n\n @include bp.xxxl {\n margin-right: calc(\n v.$main-content-max-width / 4 - v.$search-max-width - 0.75rem\n );\n }\n}\n\n#search-result-wrapper {\n display: none;\n height: 100%;\n width: 100%;\n overflow: auto;\n\n .content {\n margin-top: 2rem;\n }\n\n @include bp.lt(bp.get(lg)) {\n width: 100%;\n\n .content {\n letter-spacing: 0;\n }\n }\n\n @include bp.lg {\n max-width: v.$main-content-max-width;\n justify-content: start !important;\n }\n}\n\n#search-results {\n padding-bottom: 3rem;\n\n @include bp.between(bp.get(lg), calc(#{bp.get(xl)} - 1px)) {\n > div {\n max-width: 700px;\n }\n }\n\n a {\n font-size: 1.4rem;\n line-height: 1.5rem;\n\n &:hover {\n @extend %link-hover;\n }\n\n @extend %link-color;\n @extend %no-bottom-border;\n @extend %heading;\n }\n\n > article {\n width: 100%;\n\n &:not(:last-child) {\n margin-bottom: 1rem;\n }\n\n @include bp.xl {\n width: 45%;\n\n &:nth-child(odd) {\n margin-right: 1.5rem;\n }\n\n &:nth-child(even) {\n margin-left: 1.5rem;\n }\n\n &:last-child:nth-child(odd) {\n position: relative;\n right: 24.3%;\n }\n }\n\n h2 {\n line-height: 2.5rem;\n }\n\n /* icons */\n i {\n color: #818182;\n margin-right: 0.15rem;\n font-size: 80%;\n }\n\n > p {\n @extend %text-ellipsis;\n\n white-space: break-spaces;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n }\n }\n}\n\n/* 'Cancel' link */\n#search-cancel {\n color: var(--link-color);\n display: none;\n white-space: nowrap;\n\n @extend %cursor-pointer;\n}\n\n#search-input {\n background: center;\n border: 0;\n border-radius: 0;\n padding: 0.18rem 0.3rem;\n color: var(--text-color);\n height: auto;\n\n &:focus {\n box-shadow: none;\n }\n\n @include bp.xl {\n transition: all 0.3s ease-in-out;\n }\n}\n\n#search-hints {\n padding: 0 1rem;\n\n @include bp.lg {\n display: none;\n }\n\n h4 {\n margin-bottom: 1.5rem;\n }\n\n .post-tag {\n display: inline-block;\n line-height: 1rem;\n font-size: 1rem;\n background: var(--search-tag-bg);\n border: none;\n padding: 0.5rem;\n margin: 0 1.25rem 1rem 0;\n\n &::before {\n content: '#';\n color: var(--text-muted-color);\n padding-right: 0.2rem;\n }\n\n @extend %link-color;\n }\n}\n","@use '../abstracts/variables' as v;\n@use '../abstracts/breakpoints' as bp;\n@use '../abstracts/placeholders';\n\n#post-list {\n margin-top: 2rem;\n\n @include bp.lg {\n margin-top: 2.5rem;\n }\n\n .card-wrapper {\n &:hover {\n text-decoration: none;\n }\n\n &:not(:last-child) {\n margin-bottom: 1.25rem;\n }\n }\n\n .card {\n border: 0;\n background: none;\n\n %img-radius {\n border-radius: v.$radius-lg v.$radius-lg 0 0;\n\n @include bp.md {\n border-radius: 0 v.$radius-lg v.$radius-lg 0;\n }\n }\n\n .preview-img {\n @extend %img-radius;\n\n img {\n @extend %img-radius;\n }\n }\n\n .card-body {\n height: 100%;\n padding: 1rem;\n\n @include bp.md {\n padding: 1.75rem 1.75rem 1.25rem;\n }\n\n .card-title {\n @extend %text-clip;\n\n color: var(--heading-color) !important;\n font-size: 1.25rem;\n }\n\n %muted {\n color: var(--text-muted-color) !important;\n }\n\n .card-text {\n @include bp.md {\n display: inherit !important;\n }\n\n &.content {\n @extend %muted;\n\n p {\n @extend %text-clip;\n\n line-height: 1.5;\n margin: 0;\n }\n }\n }\n\n .post-meta {\n @extend %muted;\n\n i {\n &:not(:first-child) {\n margin-left: 1.5rem;\n\n @include bp.md {\n margin-left: 1.75rem;\n }\n }\n }\n\n em {\n @extend %normal-font-style;\n\n color: inherit;\n }\n\n > div:first-child {\n display: block;\n\n @extend %text-ellipsis;\n }\n }\n }\n }\n} /* #post-list */\n\n.pagination {\n color: var(--text-color);\n font-family: Lato, sans-serif;\n justify-content: space-evenly;\n\n @include bp.lg {\n font-size: 0.85rem;\n justify-content: center;\n }\n\n a:hover {\n text-decoration: none;\n }\n\n .page-item {\n @include bp.lt(bp.get(lg)) {\n &:not(:first-child):not(:last-child) {\n display: none;\n }\n }\n\n @include bp.lg {\n &:not(:last-child) {\n margin-right: 0.7rem;\n }\n }\n\n .page-link {\n color: var(--btn-patinator-text-color);\n padding: 0 0.6rem;\n border-radius: 0.5rem;\n border: 0;\n background-color: inherit;\n }\n\n &.active {\n .page-link {\n background-color: var(--btn-paginator-hover-color);\n }\n }\n\n &:not(.active) {\n .page-link {\n &:hover {\n box-shadow: inset var(--btn-border-color) 0 0 0 1px;\n }\n }\n }\n\n &.disabled {\n cursor: not-allowed;\n\n .page-link {\n color: rgb(108 117 125 / 57%);\n }\n }\n } /* .page-item */\n\n .page-index {\n @include bp.lg {\n display: none;\n }\n }\n}\n","@use '../abstracts/variables' as v;\n@use '../abstracts/breakpoints' as bp;\n@use '../abstracts/mixins' as mx;\n@use '../abstracts/placeholders';\n\n%-btn-post-nav {\n width: 50%;\n position: relative;\n border-color: var(--btn-border-color);\n}\n\n@mixin -dot($pl: 0.25rem, $pr: 0.25rem) {\n content: '\\2022';\n padding-left: $pl;\n padding-right: $pr;\n}\n\nheader {\n .post-desc {\n @extend %heading;\n\n font-size: 1.125rem;\n line-height: 1.6;\n }\n\n .post-meta {\n span + span::before {\n @include -dot;\n }\n\n em,\n time {\n @extend %text-highlight;\n }\n\n em {\n a {\n color: inherit;\n }\n }\n }\n\n h1 + .post-meta {\n margin-top: 1.5rem;\n }\n}\n\n.post-tail-wrapper {\n @extend %text-sm;\n\n margin-top: 6rem;\n border-bottom: 1px double var(--main-border-color);\n\n .license-wrapper {\n line-height: 1.2rem;\n\n > a {\n @extend %text-highlight;\n\n &:hover {\n @extend %link-hover;\n }\n }\n\n span:last-child {\n @extend %text-sm;\n }\n } /* .license-wrapper */\n\n .post-meta a:not(:hover) {\n @extend %link-underline;\n }\n\n .share-wrapper {\n vertical-align: middle;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n %icon-size {\n font-size: 1.125rem;\n }\n\n .share-icons {\n display: flex;\n\n i {\n color: var(--btn-share-color);\n\n @extend %icon-size;\n }\n\n > * {\n @extend %icon-size;\n\n margin-left: 0.5rem;\n\n &:hover {\n i {\n @extend %btn-share-hover;\n }\n }\n }\n\n button {\n padding: 0;\n border: none;\n line-height: inherit;\n\n @extend %cursor-pointer;\n }\n } /* .share-icons */\n } /* .share-wrapper */\n}\n\n.post-tail-bottom {\n @include bp.lte(bp.get(sm)) {\n flex-wrap: wrap-reverse !important;\n\n > div:first-child {\n width: 100%;\n margin-top: 1rem;\n }\n }\n}\n\n.share-mastodon {\n /* See: https://github.com/justinribeiro/share-to-mastodon#properties */\n --wc-stm-font-family: v.$font-family-base;\n --wc-stm-dialog-background-color: var(--card-bg);\n --wc-stm-form-button-border: 1px solid var(--btn-border-color);\n --wc-stm-form-submit-background-color: var(--sidebar-btn-bg);\n --wc-stm-form-cancel-background-color: var(--sidebar-btn-bg);\n --wc-stm-form-button-background-color-hover: #007bff;\n --wc-stm-form-button-color-hover: white;\n\n font-size: 1rem;\n}\n\n.post-tags {\n line-height: 2rem;\n\n .post-tag {\n &:hover {\n @extend %tag-hover;\n }\n }\n}\n\n.post-navigation {\n @include bp.lt(bp.get(lg)) {\n @include mx.pl-pr(0);\n @include mx.ml-mr(-0.5rem);\n }\n\n .btn {\n @extend %-btn-post-nav;\n\n &:not(:hover) {\n color: var(--link-color);\n }\n\n &:hover {\n &:not(.disabled)::before {\n color: whitesmoke;\n }\n }\n\n &.disabled {\n @extend %-btn-post-nav;\n\n pointer-events: auto;\n cursor: not-allowed;\n background: none;\n color: gray;\n }\n\n &.btn-outline-primary.disabled:focus {\n box-shadow: none;\n }\n\n &::before {\n color: var(--text-muted-color);\n font-size: 0.65rem;\n text-transform: uppercase;\n content: attr(aria-label);\n }\n\n &:first-child {\n border-radius: v.$radius-lg 0 0 v.$radius-lg;\n left: 0.5px;\n }\n\n &:last-child {\n border-radius: 0 v.$radius-lg v.$radius-lg 0;\n right: 0.5px;\n }\n }\n\n p {\n font-size: 1.1rem;\n line-height: 1.5rem;\n margin-top: 0.3rem;\n white-space: normal;\n }\n} /* .post-navigation */\n\n@media (hover: hover) {\n .post-navigation {\n .btn,\n .btn::before {\n transition: all 0.35s ease-in-out;\n }\n }\n}\n\n@-webkit-keyframes fade-up {\n from {\n opacity: 0;\n margin-top: 4rem;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@keyframes fade-up {\n from {\n opacity: 0;\n margin-top: 4rem;\n }\n\n to {\n opacity: 1;\n }\n}\n\n/* TOC panel */\n\n%top-cover {\n content: '';\n display: block;\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n width: 100%;\n height: 3rem;\n background: linear-gradient(var(--main-bg) 50%, transparent);\n}\n\n#toc-wrapper {\n top: 0;\n transition: top 0.2s ease-in-out;\n overflow-y: auto;\n max-height: 100vh;\n scrollbar-width: none;\n margin-top: 2rem;\n\n &:not(.invisible) {\n -webkit-animation: fade-up 0.8s;\n animation: fade-up 0.8s;\n }\n\n ul {\n list-style: none;\n font-size: 0.85rem;\n line-height: 1.25;\n padding-left: 0;\n\n li {\n a {\n padding: 0.4rem 0 0.4rem 1.25rem;\n }\n }\n\n /* Overwrite TOC plugin style */\n\n .toc-link {\n display: block;\n\n @extend %text-ellipsis;\n\n &:hover {\n color: var(--toc-highlight);\n text-decoration: none;\n }\n\n &::before {\n display: none;\n }\n }\n\n .is-active-link {\n color: var(--toc-highlight) !important;\n font-weight: 600;\n\n &::before {\n display: inline-block;\n width: 1px;\n height: 1.25rem;\n background-color: var(--toc-highlight) !important;\n }\n }\n\n ul {\n padding-left: 0.75rem;\n }\n }\n\n @at-root .toc-border-cover {\n @extend %top-cover;\n\n margin-bottom: -4rem;\n }\n\n &::before {\n @extend %top-cover;\n }\n\n &::after {\n content: '';\n position: fixed;\n bottom: 0;\n width: 15%;\n height: 2.25rem;\n margin-left: -1px;\n background: linear-gradient(transparent, var(--main-bg) 70%);\n }\n\n > * {\n @extend %panel-border;\n }\n}\n\n/* --- TOC button, bar and popup in mobile/tablet --- */\n\n#toc-bar {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1;\n margin: 0 -1rem;\n height: v.$topbar-height;\n background: var(--main-bg);\n border-bottom: 1px solid var(--main-border-color);\n transition: all 0.2s ease-in-out;\n\n @extend %btn-color;\n\n @include bp.xl {\n display: none !important;\n }\n\n .label {\n @extend %heading;\n\n margin-left: 0.375rem;\n padding: 0 0.75rem;\n color: inherit;\n }\n\n &.invisible {\n top: -#{v.$topbar-height};\n transition: none;\n }\n}\n\n#toc-solo-trigger {\n color: var(--text-muted-color);\n border-color: var(--btn-border-color);\n border-radius: v.$radius-lg;\n\n @include bp.xl {\n display: none !important;\n }\n\n .label {\n font-size: 1rem;\n font-family: v.$font-family-heading;\n }\n\n &:hover {\n box-shadow: none;\n background: none;\n }\n}\n\n@mixin slide-in {\n from {\n opacity: 0.7;\n transform: translateY(-#{v.$topbar-height});\n }\n\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@mixin slide-out {\n 0% {\n transform: translateY(0);\n opacity: 1;\n }\n\n 100% {\n transform: translateY(-#{v.$topbar-height});\n opacity: 0;\n }\n}\n\n@-webkit-keyframes slide-in {\n @include slide-in;\n}\n\n@keyframes slide-in {\n @include slide-in;\n}\n\n@-webkit-keyframes slide-out {\n @include slide-out;\n}\n\n@keyframes slide-out {\n @include slide-out;\n}\n\n/* --- Related Posts --- */\n\n#related-posts {\n > h3 {\n @include mx.label(1.1rem, 600);\n }\n\n time {\n @extend %normal-font-style;\n @extend %text-xs;\n\n color: var(--text-muted-color);\n }\n\n p {\n @extend %text-ellipsis;\n\n font-size: 0.9rem;\n margin-bottom: 0.5rem;\n white-space: break-spaces;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n }\n\n .card {\n h4 {\n @extend %text-clip;\n }\n }\n}\n\n/* stylelint-disable-next-line selector-id-pattern */\n#disqus_thread {\n min-height: 8.5rem;\n}\n\n.utterances {\n max-width: 100%;\n min-height: 269px;\n}\n\n%btn-share-hover {\n color: var(--btn-share-hover-color) !important;\n}\n\n.share-label {\n @include mx.label(inherit, 400, inherit);\n\n &::after {\n content: ':';\n }\n}\n\n.content > p > img {\n @include bp.lte(bp.get(md)) {\n max-width: calc(100% + 1rem);\n }\n}\n\nh2,\nh3,\nh4 {\n @include bp.xl {\n scroll-margin-top: 2rem;\n }\n}\n","@use '../abstracts/variables' as v;\n@use '../abstracts/placeholders';\n\n%-category-icon-color {\n color: gray;\n}\n\n.categories {\n margin-bottom: 2rem;\n border-color: var(--categories-border);\n\n &.card,\n .list-group {\n @extend %rounded;\n }\n\n .card-header {\n $radius: calc(v.$radius-lg - 1px);\n\n padding: 0.75rem;\n border-radius: $radius;\n border-bottom: 0;\n\n &.hide-border-bottom {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n }\n\n i {\n @extend %-category-icon-color;\n\n font-size: 86%; /* fontawesome icons */\n }\n\n .list-group-item {\n border-left: none;\n border-right: none;\n padding-left: 2rem;\n\n &:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n\n &:last-child {\n border-bottom: 0;\n }\n }\n} /* .categories */\n\n.category-trigger {\n width: 1.7rem;\n height: 1.7rem;\n border-radius: 50%;\n text-align: center;\n color: #6c757d !important;\n\n i {\n position: relative;\n height: 0.7rem;\n width: 1rem;\n transition: transform 300ms ease;\n }\n\n &:hover {\n i {\n color: var(--categories-icon-hover-color);\n }\n }\n}\n\n/* only works on desktop */\n@media (hover: hover) {\n .category-trigger:hover {\n background-color: var(--categories-hover-bg);\n }\n}\n\n.rotate {\n transform: rotate(-90deg);\n}\n","@use '../abstracts/breakpoints' as bp;\n\n.tag {\n border-radius: 0.7em;\n padding: 6px 8px 7px;\n margin-right: 0.8rem;\n line-height: 3rem;\n letter-spacing: 0;\n border: 1px solid var(--tag-border) !important;\n box-shadow: 0 0 3px 0 var(--tag-shadow);\n\n span {\n margin-left: 0.6em;\n font-size: 0.7em;\n font-family: Oswald, sans-serif;\n }\n}\n\n#tags {\n @include bp.lt(bp.get(lg)) {\n justify-content: center !important;\n }\n}\n","@use '../abstracts/breakpoints' as bp;\n@use '../abstracts/placeholders';\n\n#archives {\n letter-spacing: 0.03rem;\n\n @include bp.lt(bp.get(sm)) {\n margin-top: -1rem;\n\n ul {\n letter-spacing: 0;\n }\n }\n\n $timeline-width: 4px;\n\n %timeline {\n content: '';\n width: $timeline-width;\n position: relative;\n float: left;\n background-color: var(--timeline-color);\n }\n\n .year {\n height: 3.5rem;\n font-size: 1.5rem;\n position: relative;\n left: 2px;\n margin-left: -$timeline-width;\n\n &::before {\n @extend %timeline;\n\n height: 72px;\n left: 79px;\n bottom: 16px;\n }\n\n &:first-child::before {\n @extend %timeline;\n\n height: 32px;\n top: 24px;\n }\n\n /* Year dot */\n &::after {\n content: '';\n display: inline-block;\n position: relative;\n border-radius: 50%;\n width: 12px;\n height: 12px;\n left: 21.5px;\n border: 3px solid;\n background-color: var(--timeline-year-dot-color);\n border-color: var(--timeline-node-bg);\n box-shadow: 0 0 2px 0 #c2c6cc;\n z-index: 1;\n }\n }\n\n ul {\n li {\n font-size: 1.1rem;\n line-height: 3rem;\n\n @extend %text-ellipsis;\n\n &:nth-child(odd) {\n background-color: var(--main-bg, #ffffff);\n background-image: linear-gradient(\n to left,\n #ffffff,\n #fbfbfb,\n #fbfbfb,\n #fbfbfb,\n #ffffff\n );\n }\n\n &::before {\n @extend %timeline;\n\n top: 0;\n left: 77px;\n height: 3.1rem;\n }\n }\n\n &:last-child li:last-child::before {\n height: 1.5rem;\n }\n } /* #archives ul */\n\n .date {\n white-space: nowrap;\n display: inline-block;\n position: relative;\n right: 0.5rem;\n\n &.month {\n width: 1.4rem;\n text-align: center;\n }\n\n &.day {\n font-size: 85%;\n font-family: Lato, sans-serif;\n }\n }\n\n a {\n /* post title in Archvies */\n margin-left: 2.5rem;\n position: relative;\n top: 0.1rem;\n\n &:hover {\n border-bottom: none;\n }\n\n &::before {\n /* the dot before post title */\n content: '';\n display: inline-block;\n position: relative;\n border-radius: 50%;\n width: 8px;\n height: 8px;\n float: left;\n top: 1.35rem;\n left: 71px;\n background-color: var(--timeline-node-bg);\n box-shadow: 0 0 3px 0 #c2c6cc;\n z-index: 1;\n }\n }\n} /* #archives */\n","@use '../abstracts/breakpoints' as bp;\n@use '../abstracts/mixins' as mx;\n@use '../abstracts/placeholders';\n\n.dash {\n margin: 0 0.5rem 0.6rem 0.5rem;\n border-bottom: 2px dotted var(--dash-color);\n}\n\n#page-category,\n#page-tag {\n ul > li {\n line-height: 1.5rem;\n padding: 0.6rem 0;\n\n /* dot */\n &::before {\n background: #999999;\n width: 5px;\n height: 5px;\n border-radius: 50%;\n display: block;\n content: '';\n position: relative;\n top: 0.6rem;\n margin-right: 0.5rem;\n\n @include bp.lt(bp.get(sm)) {\n margin: 0 0.5rem;\n }\n }\n\n /* post's title */\n > a {\n @extend %no-bottom-border;\n\n font-size: 1.1rem;\n\n @include bp.lt(bp.get(sm)) {\n @include mx.text-ellipsis;\n }\n }\n }\n}\n\n/* tag icon */\n#page-tag h1 > i {\n font-size: 1.2rem;\n}\n\n#page-category h1 > i {\n font-size: 1.25rem;\n}\n\n#page-category,\n#page-tag,\n#access-lastmod {\n a:hover {\n @extend %link-hover;\n\n margin-bottom: -1px; /* Avoid jumping */\n }\n}\n"],"file":"jekyll-theme-chirpy.css"} \ No newline at end of file diff --git a/assets/img/favicons/android-chrome-192x192.png b/assets/img/favicons/android-chrome-192x192.png new file mode 100644 index 0000000..d255d27 Binary files /dev/null and b/assets/img/favicons/android-chrome-192x192.png differ diff --git a/assets/img/favicons/android-chrome-384x384.png b/assets/img/favicons/android-chrome-384x384.png new file mode 100644 index 0000000..3496ccd Binary files /dev/null and b/assets/img/favicons/android-chrome-384x384.png differ diff --git a/assets/img/favicons/apple-touch-icon.png b/assets/img/favicons/apple-touch-icon.png new file mode 100644 index 0000000..20f4d30 Binary files /dev/null and b/assets/img/favicons/apple-touch-icon.png differ diff --git a/assets/img/favicons/favicon-16x16.png b/assets/img/favicons/favicon-16x16.png new file mode 100644 index 0000000..8c2bc3f Binary files /dev/null and b/assets/img/favicons/favicon-16x16.png differ diff --git a/assets/img/favicons/favicon-32x32.png b/assets/img/favicons/favicon-32x32.png new file mode 100644 index 0000000..ec77383 Binary files /dev/null and b/assets/img/favicons/favicon-32x32.png differ diff --git a/assets/img/favicons/favicon-96x96.png b/assets/img/favicons/favicon-96x96.png new file mode 100755 index 0000000..fb9b67a Binary files /dev/null and b/assets/img/favicons/favicon-96x96.png differ diff --git a/assets/img/favicons/favicon.ico b/assets/img/favicons/favicon.ico new file mode 100644 index 0000000..c92dfe5 Binary files /dev/null and b/assets/img/favicons/favicon.ico differ diff --git a/assets/img/favicons/favicon.svg b/assets/img/favicons/favicon.svg new file mode 100755 index 0000000..7e1e8cb --- /dev/null +++ b/assets/img/favicons/favicon.svg @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/assets/img/favicons/mstile-150x150.png b/assets/img/favicons/mstile-150x150.png new file mode 100644 index 0000000..2c11823 Binary files /dev/null and b/assets/img/favicons/mstile-150x150.png differ diff --git a/assets/img/favicons/safari-pinned-tab.svg b/assets/img/favicons/safari-pinned-tab.svg new file mode 100644 index 0000000..7ae0483 --- /dev/null +++ b/assets/img/favicons/safari-pinned-tab.svg @@ -0,0 +1,480 @@ + + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/favicons/site.webmanifest b/assets/img/favicons/site.webmanifest new file mode 100644 index 0000000..6ebc476 --- /dev/null +++ b/assets/img/favicons/site.webmanifest @@ -0,0 +1 @@ +{ "name": "Cole Maxwell", "short_name": "Cole Maxwell", "description": "A site about software craftsmanship, system design, and Cole Maxwell.", "icons": [ { "src": "/assets/img/favicons/web-app-manifest-192x192.png", "sizes": "192x192", "type": "image/png" }, { "src": "/assets/img/favicons/web-app-manifest-512x512.png", "sizes": "512x512", "type": "image/png", "purpose": "maskable" } ], "start_url": "/index.html", "theme_color": "#2a1e6b", "background_color": "#ffffff", "display": "fullscreen" } diff --git a/assets/img/favicons/web-app-manifest-192x192.png b/assets/img/favicons/web-app-manifest-192x192.png new file mode 100755 index 0000000..ec915a3 Binary files /dev/null and b/assets/img/favicons/web-app-manifest-192x192.png differ diff --git a/assets/img/favicons/web-app-manifest-512x512.png b/assets/img/favicons/web-app-manifest-512x512.png new file mode 100755 index 0000000..fd0ce60 Binary files /dev/null and b/assets/img/favicons/web-app-manifest-512x512.png differ diff --git a/assets/js/data/mathjax.js b/assets/js/data/mathjax.js new file mode 100644 index 0000000..e09c1e0 --- /dev/null +++ b/assets/js/data/mathjax.js @@ -0,0 +1 @@ +MathJax = { tex: {inlineMath: [ ['$', '$'], ['\\(', '\\)'] ],displayMath: [ ['$$', '$$'], ['\\[', '\\]'] ],tags: 'ams' } }; diff --git a/assets/js/data/search.json b/assets/js/data/search.json new file mode 100644 index 0000000..02f597c --- /dev/null +++ b/assets/js/data/search.json @@ -0,0 +1 @@ +[ { "title": "Using ODBC on IBM i for Local Linux Development", "url": "/posts/ibmi-odbc-on-linux/", "categories": "IBM i", "tags": "ibmi, odbc, linux, as400, sql", "date": "2022-08-03 19:39:00 -0500", "content": "If you are new to the IBM i platform coming right out of school, like me, or you are a developer used to working exclusively with open-source tooling, the IBM i platform can be a strange place. The legacy application support is industry leading, to both the benefit and downside of the platform. Under the hood there is IBM’s powerful and well tested relational database, DB2 for i. So far, I like what I see. Is it possible to get the best of the open-source tooling while leveraging the power of an existing enterprise grade database? My initial take is yes, and the ODBC driver on the platform is the answer. The Open Database Connectivity (ODBC) standard is an application programming interface (API) for accessing database management systems (DBMS). The designers of ODBC aimed to make it independent of database systems and operating systems. From what I have seen so far IBM is continuing to make improvements to the driver in the latest release of IBM i. I personally view ODBC as the future of the platform and a key factor to help IBM i remain relevant as the years progress. As I have gotten my start, the other open-source advocates on the IBM i platform have provided many excellent articles, source code examples, and video lessons that have aided my on boarding to the platform. However, even though the topic of ODBC has been extensively covered I still felt like a comprehensive guide for connecting locally to DB2 for i via ODBC on a linux development machine was missing. This post has compiled the good, but scattered, information to explain how an open-source developer would go about connecting up their local linux machine to DB2 for i to develop an application in an open-source language of their choice. I want to give a big thank you and credit to Liam Allan, Kevin Adler, Seiden Group, and FormaServe for helping get this information out to the community. They are the heavy hitters aiding the open-source embracement on IBM i. Much of the following is copied directly from their blogs and video resources. Please see the references at the end of this post. Prerequisites You must have the ODBC driver installed on the IBM i you want to connect to. See Seiden Group’s guide1 for Using YUM to Install or Update the IBM i ODBC Driver Enhance Your Understanding If your background is exclusively developing on the IBM i (AS400) and you don’t have experience with Linux or other Unix-like operating systems you may want to spend some time reading about the basic file structure of Unix-like operating systems. You will find these patterns in the /QOpenSys directory on IBM i and it will aid your journey to better understand open-source on IBM i and even Linux. University of Cincinnati: The Unix File System IBM: Open systems file system (QOpenSys) Installing the Repository IBM has made RPM and DEB package manager repositories for Linux available directly from IBM for the IBM i Access Client Solutions application package, which includes the IBM i Access ODBC driver. With this change, it is much easier to install the driver on Linux. It also makes it easier for automation to install the driver as well, whether that’s Ansible system deployment scripts or Dockerfiles for building ODBC-based Linux container apps. In addition, it makes updating the driver much easier too, since the process uses the same upgrade procedure as the rest of the system packages2. The repositories are located under: https://public.dhe.ibm.com/software/ibmi/products/odbc/. Add the Repository to the Package Manager First, you must add IBM’s package repository to your distribution’s package manager. Debian-based and Ubuntu-based Distribution Setup curl https://public.dhe.ibm.com/software/ibmi/products/odbc/debs/dists/1.1.0/ibmi-acs-1.1.0.list | sudo tee /etc/apt/sources.list.d/ibmi-acs-1.1.0.list Red Hat-based Distribution Setup curl https://public.dhe.ibm.com/software/ibmi/products/odbc/rpms/ibmi-acs.repo | sudo tee /etc/yum.repos.d/ibmi-acs.repo SUSE-based Distribution Setup curl https://public.dhe.ibm.com/software/ibmi/products/odbc/rpms/ibmi-acs.repo | sudo tee /etc/zypp/repos.d/ibmi-acs.repo Installing the ODBC driver Now install the package via the distribution’s package manager. Debian-based and Ubuntu-based Distribution Installation sudo apt update sudo apt install ibm-iaccess Red Hat-based Distribution Installation sudo dnf install --refresh ibm-iaccess SUSE-based Distribution Installation sudo zypper refresh sudo zypper install ibm-iaccess Configuring the Connection (FYI) Now that you have the IBM i Access ODBC Driver installed on your system, you are ready to connect to Db2 on i. Below is some background information on the two methods to create a connection. Connection Strings ODBC uses a connection string with keywords to create a database connection. Keywords are case insensitive, and values passed are separated from the keyword by an equals sign (ā€œ=ā€) and end with a semi-colon (ā€œ;ā€). As long as you are using an ODBC database connector, you should be able to pass an identical connection string in any language or technology and be confident that it will correctly connect to Db2 on i. A common connection string may look something like3: DRIVER=IBM i Access ODBC Driver;SYSTEM=my.ibmi.system;UID=foo;PWD=bar; In the above example, we define the following connection options: DRIVER: The ODBC driver for Db2 for i that we are using to connect to the database (and that we installed above) SYSTEM: The location of your IBM i system, which can be its network name, IP address, or similar UID: The User ID that you want to use on the IBM i system that you are connecting to PWD: The password of the User ID passed above. These are only some of the over 70 connection options you can use when connecting to Db2 on i using the IBM i Access ODBC Driver. A complete list of IBM i Access ODBC Driver connection options can be found at the IBM Knowledge Center: Connection string keywords webpage. If passing connections options through the connection string, be sure to use the keyword labeled with Connection String. DSNs As you add more and more options to your connection string, your connection string can become quite cumbersome. Luckily, ODBC offers another way of defining connection options called a DSN (datasource name). Where you define your DSN will depend on whether you are using Windows ODBC driver manager or unixODBC on Linux or IBM i3. IBM i, Linux distributions, and macOS use unixODBC and have nearly identical methods of setting up your drivers and your DSNs. odbc.ini and .odbc.ini When using unixODBC, DSNs are defined in odbc.ini and .odbc.ini (note the . preceding the latter). These two files have the same structure, but have one important difference: odbc.ini defines DSNs that are available to all users on the system. If there are DSNs that should be available to everyone, they can be defined and shared here. Likely, this file is located in the default location, which depends on whether you are on IBM i or Linux: IBM i: /QOpenSys/etc/odbc.ini Linux: /etc/unixODBC/odbc.ini If you want to make sure, the file can be found by running: odbcinst -j .odbc.ini is found in your home directory ~/ and defines DSNs that are available only to you. If you are going to define DSNs with your personal username and password, this is the place to do it. In both odbc.ini and .odbc.ini, you name your DSN with [] brackets, then specify keywords and values below it. An example of a DSN stored in ~/.odbc.ini used to connect to an IBM i system with private credentials might look like: [MYDSN] Description = My IBM i System Driver = IBM i Access ODBC Driver System = my.ibmi.system UserID = foo Password = bar Naming = 0 DefaultLibraries = MYLIB TrueAutoCommit = 1 In the above example, we define the following connection options: Driver: The ODBC driver for Db2 for i that we are using to connect to the database (and that we installed above) System: The location of your IBM i system, which can be its network name, IP address, or similar UserID: The User ID that you want to use on the IBM i system that you are connecting to Password: The password of the User ID passed above. Naming: Specifies the naming convention used when referring to tables. For more information, refer to Naming conventions in the DB2 for i SQL reference. DefaultLibraries: Specifies the IBM i libraries to add to the server job’s library list as well as the default library used to resolve unqualified names. The libraries can be delimited by commas or spaces. TrueAutoCommit: Specifies how to handle autocommit support Like connection string keywords, DSN keywords can be found at the IBM Knowledge Center: Connection string keywords webpage. When passing connection options through a DSN, be sure to use the keyword labeled with ODBC.INI. User Level Connection In your home directory create a .odbc.ini file touch .odbc.ini Using your text editor of choice (vi, vim, nano, ect…) add the following DSN configuration, changing the UserID and Password to your IBM i username and password. [devserver] Description = Connection to development power server Driver = IBM i Access ODBC Driver System = devserver.mycompany.com UserID = myUsername Password = myPassword Naming = 0 DefaultLibraries = businessDataLib,myUserLib,myBusinessUtils In the above example, we define the following connection options: Driver: The ODBC driver for Db2 for i that we are using to connect to the database (This must be installed on the OS) System: The location of your IBM i system, which can be its network name, IP address, or similar UserID: The User ID that you want to use on the IBM i system that you are connecting to Password: The password of the User ID passed above. Naming: Specifies the naming convention used when referring to tables. A 0 indicates you want SQLs naming convention, which is likely what you want for running queries in any program you write. DefaultLibraries: Specifies the IBM i libraries to add to the server job’s library list as well as the default library used to resolve unqualified names. The libraries can be delimited by commas or spaces. Testing the Connection The isql command is included with the open source components of unixODBC and unixODBC-devel. You can use this command to run SQL queries via ODBC right from the command-line. To make the connection to the DSN configured above pass in the DSN name: isql devserver If the connection is configured correctly, you will get a prompt that looks like this: +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> There is an included sample customer table (qiws.qcustcdt) on all IBM i systems that can be used for testing4 Type this command into the SQL> prompt: select * from qiws.qcustcdt The results will look like this: SQL> select * from qiws.qcustcdt +---------+---------+-----+--------------+-------+------+--------+-------+-------+---------+---------+ | CUSNUM | LSTNAM | INIT| STREET | CITY | STATE| ZIPCOD | CDTLMT| CHGCOD| BALDUE | CDTDUE | +---------+---------+-----+--------------+-------+------+--------+-------+-------+---------+---------+ | 938472 | Henning | G K | 4859 Elm Ave | Dallas| TX | 75217 | 5000 | 3 | 37.00 | 0 | | 839283 | Jones | B D | 21B NW 135 St| Clay | NY | 13041 | 400 | 1 | 100.00 | 0 | | 392859 | Vine | S S | PO Box 79 | Broton| VT | 5046 | 700 | 1 | 439.00 | 0 | | 938485 | Johnson | J A | 3 Alpine Way | Helen | GA | 30545 | 9999 | 2 | 3987.50 | 33.50 | | 397267 | Tyron | W E | 13 Myrtle Dr | Hector| NY | 14841 | 1000 | 1 | 0 | 0 | | 389572 | Stevens | K L | 208 Snow Pass| Denver| CO | 80226 | 400 | 1 | 58.75 | 1.50 | | 846283 | Alison | J S | 787 Lake Dr | Isle | MN | 56342 | 5000 | 3 | 10.00 | 0 | | 475938 | Doe | J W | 59 Archer Rd | Sutter| CA | 95685 | 700 | 2 | 250.00 | 100.00 | | 693829 | Thomas | A N | 3 Dove Circle| Casper| WY | 82609 | 9999 | 2 | 0 | 0 | | 593029 | Williams| E D | 485 SE 2 Ave | Dallas| TX | 75218 | 200 | 1 | 25.00 | 0 | | 192837 | Lee | F L | 5963 Oak St | Hector| NY | 14841 | 700 | 2 | 489.50 | .50 | | 583990 | Abraham | M T | 392 Mill St | Isle | MN | 56342 | 9999 | 3 | 500.00 | 0 | +---------+---------+-----+--------------+-------+------+--------+-------+-------+---------+---------+ SQLRowCount returns -1 12 rows fetched SQL> To exit the prompt press Ctr + C or type quit into the prompt Next Steps Now that you have the ODBC driver installed and configured on you development machine you can use the ODBC drivers in many of your favorite open-source programing languages. See IBM’s Db2 for Developers page for supported languages. Examples of connections in programing languages: Seiden Group: HOW TO QUERY IBM i DATA WITH PHP AND PDO_ODBC Liam Allan: Using node-odbc on Windows to talk to IBM i Other Helpful Articles: Seiden Group: Q&A: IBM i ODBC DRIVER Seiden Group: ODBC CONNECTION STRINGS FOR IBM i DB2 References Seiden Group: USING YUM TO INSTALL OR UPDATE THE IBM i ODBC DRIVERĀ ↩ Kevin Adler: IBM-provided Repositories ODBC Linux Driver RepositoriesĀ ↩ IBM i OSS DocsĀ ↩Ā ↩2 FormaServe: How to use ODBC on the IBM iĀ ↩" }, { "title": "Utilize a RESTful API with IBMi QSYS_HTTP Tools in SQL", "url": "/posts/rest-api-ibmi-qsys2/", "categories": "IBM i", "tags": "ibmi, api, qsys2, rest, sql", "date": "2022-07-14 15:30:55 -0500", "content": "The Api This demo used the fakeStoreApi which is a free online REST API that you can use whenever you need Pseudo-real data for without running any server-side code. It’s awesome for teaching purposes, sample codes, tests, etc. This API does not require authentication for requests A list of other public APIs can be found here HTTP Functions Overview These HTTP functions are used to make HTTP requests that use web services. These functions allow the SQL programmer to use Representational State Transfer (RESTful) via SQL, including Embedded SQL. They provide the same capabilities as the SYSTOOLS HTTP functions without the overhead of creating a JVM. These HTTP functions exist in QSYS2 and have lower overhead than the SYSTOOLS HTTP functions. Additional benefits of the QSYS2 HTTP functions are HTTP authentication, proxy support, configurable redirection attempts, and configurable SSL options. The URL parameter supports http: and https: URLs. The https: URL indicates that network communication should take place over a secure communication channel. An https request uses TLS (Transport Layer Security) to create the secure channel. This secure channel encrypts any transmitted data and also prevents man-in-the-middle attacks. Any communication that contains secure information should use https instead of http. Because of the sensitive nature of userids and passwords, HTTP authentication is not allowed for http URLs. Foundational HTTP functions The foundational functions are named according to the two dimensions used when making HTTP requests. The first dimension is the HTTP operation. There are 5 different HTTP operations: GET, PUT, POST, PATCH, and DELETE. The second dimension indicates whether the verbose version of the function should be used. The non-verbose functions are scalar functions that return the response as a CLOB. The verbose functions are table functions that return a single row, which includes the return header information that is sent from the HTTP server. The header information is formatted as JSON. The names of the functions reflect these dimensions. For example, HTTP_GET_VERBOSE uses the GET operation from the first dimension and the VERBOSE setting from the second dimension. All the functions return CLOB data. See the IBM Docs for more details Get a List of Products The first demo receives a list of products from the fakeStoreApi as JSON. Here is a look at the JSON we can expect to receive: [ { \"id\": 1, \"title\": \"Fjallraven - Foldsack No. 1 Backpack, Fits 15 Laptops\", \"price\": 109.95, \"description\": \"Your perfect pack for everyday use and walks in the forest. Stash your laptop (up to 15 inches) in the padded sleeve, your everyday\", \"category\": \"men's clothing\", \"image\": \"https://fakestoreapi.com/img/81fPKd-2AYL._AC_SL1500_.jpg\", \"rating\": { \"rate\": 3.9, \"count\": 120 } }, { \"id\": 2, \"title\": \"Mens Casual Premium Slim Fit T-Shirts \", \"price\": 22.3, \"description\": \"Slim-fitting style, contrast raglan long sleeve, three-button henley placket, light weight & soft fabric for breathable and comfortable wearing. And Solid stitched shirts with round neck made for durability and a great fit for casual fashion wear and diehard baseball fans. The Henley style round neckline includes a three-button placket.\", \"category\": \"men's clothing\", \"image\": \"https://fakestoreapi.com/img/71-3HjGNDUL._AC_SY879._SX._UX._SY._UY_.jpg\", \"rating\": { \"rate\": 4.1, \"count\": 259 } } ] This is actually an array of two JSON objects. The JSON tools provided by DB2 are smart and will know to treat each object separately. To make sure we are getting the expected JSON we can print the results of QSYS2.HTTP_GET with the VALUES keyword. VALUES QSYS2.HTTP_GET( 'http://fakestoreapi.com/products?limit=2', '' ); QSYS2.HTTP_GET takes two arguments. The first argument is the URL of the API endpoint the GET request will be sent to. In this case it is the http://fakestoreapi.com/products endpoint and the limit=2 parameter is added to only get two items total. The second argument is for HTTP header parameters. In this case no HTTP header parameters need to be specified to complete the request so this field can be left empty. The JSON_TABLE function can take any QSYS2.HTTP_XXXX that produces JSON as an argument. The values from the JSON keys can then be extracted and placed directly into a table. SELECT * FROM JSON_TABLE( QSYS2.HTTP_GET( 'http://fakestoreapi.com/products?limit=10', '' ), '$' COLUMNS( name VARCHAR(75) PATH 'lax $.title', totalRatings INT PATH 'lax $.rating.count' ) ); This example will extract the values from the title (name of item) key and the nested field count (total number of ratings) key in the ratings array. and then place them into a table with the column names name and totalRatings. Result: Name Rating Fjallraven - Foldsack No. 1 Backpack, Fits 15 Laptops 120 Mens Casual Premium Slim Fit T-Shirts 259 Mens Cotton Jacket 500 Mens Casual Slim Fit 430 John Hardy Women’s Legends Naga Gold & Silver Dragon Station Chain Bracelet 400 Solid Gold Petite Micropave 70 White Gold Plated Princess 400 Pierced Owl Rose Gold Plated Stainless Steel Double 100 WD 2TB Elements Portable External Hard Drive - USB 3.0 203 SanDisk SSD PLUS 1TB Internal SSD - SATA III 6 Gb/s 470 POST a New User The next example is sending a POST request to the https://fakestoreapi.com/users endpoint to create a new user. The fakeStoreApi docs indicate that the body of our HTTP POST request should contain the following JSON object: { \"email\":\"John@gmail.com\", \"username\":\"johnd\", \"password\":\"m38rmF$\", \"name\":{ \"firstname\":\"John\", \"lastname\":\"Doe\" }, \"address\":{ \"city\":\"kilcoole\", \"street\":\"7835 new road\", \"number\":3, \"zipcode\":\"12926-3874\", \"geolocation\":{ \"lat\":\"-37.3159\", \"long\":\"81.1496\" } }, \"phone\": \"1-570-236-7033\" } Upon a successful add of a new user the API will return a 200 response code and a JSON object with the user’s new id: { \"address\": { \"geolocation\": { \"lat\": \"-37.3159\", \"long\": \"81.1496\" }, \"city\": \"kilcoole\", \"street\": \"7835 new road\" }, \"_id\": \"62c73539f0321700139f4682\", \"id\": 1, \"email\": \"John@gmail.com\", \"username\": \"johnd\", \"password\": \"m38rmF$\", \"phone\": \"1-570-236-7033\" } QSYS2.HTTP_POST takes three This time arguments the URL, the HTTP body and the HTTP header parameters. This time the URL and body arguments of the QSYS2.HTTP_POST will be assigned to variables for readability. We also need to specify the ā€œContent-Typeā€ in the HTTP header to indicate that our HTTP body will be in JSON format. By default QSYS2.HTTP_POST specifies the content type of the body to be XML. To override this setting we pass in the header settings in JSON format: {\"header\":\"Content-Type,application/json;charset=utf-8\"} More information about the different header settings that can to passed to the QSYS2.HTTP_XXXX tools can be found in the IBM docs Here all the moving parts put together: Create or replace variable @userURL varchar(50) ; SET @userURL = 'http://fakestoreapi.com/users'; Create or replace variable @postBody varchar(500) ; SET @postBody = '{ \"email\":\"John@gmail.com\", \"username\":\"johnd\", \"password\":\"m38rmF$\", \"name\":{ \"firstname\":\"John\", \"lastname\":\"Doe\" }, \"address\":{ \"city\":\"kilcoole\", \"street\":\"7835 new road\", \"number\":3, \"zipcode\":\"12926-3874\", \"geolocation\":{ \"lat\":\"-37.3159\", \"long\":\"81.1496\" } }, \"phone\": \"1-570-236-7033\" }'; SELECT * FROM JSON_TABLE( QSYS2.HTTP_POST( @userURL, @postBody, '{\"header\":\"Content-Type,application/json;charset=utf-8\"}' ), '$' COLUMNS( testID INT PATH 'lax $.id', email VARCHAR(50) PATH 'lax $.email', username VARCHAR(50) PATH 'lax $.username', password VARCHAR(50) PATH 'lax $.password' ) ); And the result: TESTID EMAIL USERNAME PASSWORD 1 John@gmail.com johnd m38rmF$" } ] diff --git a/assets/js/data/swconf.js b/assets/js/data/swconf.js new file mode 100644 index 0000000..940a5ea --- /dev/null +++ b/assets/js/data/swconf.js @@ -0,0 +1 @@ +const swconf = { purge: true }; diff --git a/assets/js/dist/categories.min.js b/assets/js/dist/categories.min.js new file mode 100644 index 0000000..a2a7e79 --- /dev/null +++ b/assets/js/dist/categories.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.4.1 | Ā© 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";const e=new Map;var t={set(t,n,i){e.has(t)||e.set(t,new Map);const o=e.get(t);o.has(n)||0===o.size?o.set(n,i):console.error("Bootstrap doesn't allow more than one instance per element. Bound instance: ".concat(Array.from(o.keys())[0],"."))},get:(t,n)=>e.has(t)&&e.get(t).get(n)||null,remove(t,n){if(!e.has(t))return;const i=e.get(t);i.delete(n),0===i.size&&e.delete(t)}};const n="transitionend",i=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(e,t)=>"#".concat(CSS.escape(t)))),e),o=e=>null==e?"".concat(e):Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),r=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),s=e=>r(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(i(e)):null,a=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?a(e.parentNode):null},c=()=>{},l=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,f=[],u=()=>"rtl"===document.documentElement.dir,d=e=>{var t;t=()=>{const t=l();if(t){const n=e.NAME,i=t.fn[n];t.fn[n]=e.jQueryInterface,t.fn[n].Constructor=e,t.fn[n].noConflict=()=>(t.fn[n]=i,e.jQueryInterface)}},"loading"===document.readyState?(f.length||document.addEventListener("DOMContentLoaded",()=>{for(const e of f)e()}),f.push(t)):t()},p=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;return"function"==typeof e?e.call(...t):n},h=function(e,t){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void p(e);const i=(e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const i=Number.parseFloat(t),o=Number.parseFloat(n);return i||o?(t=t.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(n))):0})(t)+5;let o=!1;const r=i=>{let{target:s}=i;s===t&&(o=!0,t.removeEventListener(n,r),p(e))};t.addEventListener(n,r),setTimeout(()=>{o||t.dispatchEvent(new Event(n))},i)},g=/[^.]*(?=\..*)\.|.*/,m=/\..*/,v=/::\d+$/,b={};let y=1;const _={mouseenter:"mouseover",mouseleave:"mouseout"},w=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 E(e,t){return t&&"".concat(t,"::").concat(y++)||e.uidEvent||y++}function O(e){const t=E(e);return e.uidEvent=t,b[t]=b[t]||{},b[t]}function x(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(e).find(e=>e.callable===t&&e.delegationSelector===n)}function A(e,t,n){const i="string"==typeof t,o=i?n:t||n;let r=S(e);return w.has(r)||(r=e),[i,o,r]}function C(e,t,n,i,o){if("string"!=typeof t||!e)return;let[r,s,a]=A(t,n,i);if(t in _){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};s=e(s)}const c=O(e),l=c[a]||(c[a]={}),f=x(l,s,r?n:null);if(f)return void(f.oneOff=f.oneOff&&o);const u=E(s,t.replace(g,"")),d=r?function(e,t,n){return function i(o){const r=e.querySelectorAll(t);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return k(o,{delegateTarget:s}),i.oneOff&&j.off(e,o.type,t,n),n.apply(s,[o])}}(e,n,s):function(e,t){return function n(i){return k(i,{delegateTarget:e}),n.oneOff&&j.off(e,i.type,t),t.apply(e,[i])}}(e,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=u,l[u]=d,e.addEventListener(a,d,r)}function L(e,t,n,i,o){const r=x(t[n],i,o);r&&(e.removeEventListener(n,r,Boolean(o)),delete t[n][r.uidEvent])}function T(e,t,n,i){const o=t[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&L(e,t,n,s.callable,s.delegationSelector)}function S(e){return e=e.replace(m,""),_[e]||e}const j={on(e,t,n,i){C(e,t,n,i,!1)},one(e,t,n,i){C(e,t,n,i,!0)},off(e,t,n,i){if("string"!=typeof t||!e)return;const[o,r,s]=A(t,n,i),a=s!==t,c=O(e),l=c[s]||{},f=t.startsWith(".");if(void 0===r){if(f)for(const n of Object.keys(c))T(e,c,n,t.slice(1));for(const[n,i]of Object.entries(l)){const o=n.replace(v,"");a&&!t.includes(o)||L(e,c,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(l).length)return;L(e,c,s,r,o?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const i=l();let o=null,r=!0,s=!0,a=!1;t!==S(t)&&i&&(o=i.Event(t,n),i(e).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const c=k(new Event(t,{bubbles:r,cancelable:!0}),n);return a&&c.preventDefault(),s&&e.dispatchEvent(c),c.defaultPrevented&&o&&o.preventDefault(),c}};function k(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(t))try{e[n]=i}catch(t){Object.defineProperty(e,n,{configurable:!0,get:()=>i})}return e}function P(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function D(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t);if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function N(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,i)}return n}function M(e){for(var t=1;t"-".concat(e.toLowerCase()))}const F={setDataAttribute(e,t,n){e.setAttribute("data-bs-".concat(I(t)),n)},removeDataAttribute(e,t){e.removeAttribute("data-bs-".concat(I(t)))},getDataAttributes(e){if(!e)return{};const t={},n=Object.keys(e.dataset).filter(e=>e.startsWith("bs")&&!e.startsWith("bsConfig"));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1),t[n]=B(e.dataset[i])}return t},getDataAttribute:(e,t)=>B(e.getAttribute("data-bs-".concat(I(t))))};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(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const n=r(t)?F.getDataAttribute(t,"config"):{};return M(M(M(M({},this.constructor.Default),"object"==typeof n?n:{}),r(t)?F.getDataAttributes(t):{}),"object"==typeof e?e:{})}_typeCheckConfig(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[n,i]of Object.entries(t)){const t=e[n],s=r(t)?"element":o(t);if(!new RegExp(i).test(s))throw new TypeError("".concat(this.constructor.NAME.toUpperCase(),': Option "').concat(n,'" provided type "').concat(s,'" but expected type "').concat(i,'".'))}}}class z extends H{constructor(e,n){super(),(e=s(e))&&(this._element=e,this._config=this._getConfig(n),t.set(this._element,this.constructor.DATA_KEY,this))}dispose(){t.remove(this._element,this.constructor.DATA_KEY),j.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t){h(e,t,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return t.get(s(e),this.DATA_KEY)}static getOrCreateInstance(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return"5.3.8"}static get DATA_KEY(){return"bs.".concat(this.NAME)}static get EVENT_KEY(){return".".concat(this.DATA_KEY)}static eventName(e){return"".concat(e).concat(this.EVENT_KEY)}}const W=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n="#".concat(n.split("#")[1])),t=n&&"#"!==n?n.trim():null}return t?t.split(",").map(e=>i(e)).join(","):null},q={find(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(t,e)},children:(e,t)=>[].concat(...e.children).filter(e=>e.matches(t)),parents(e,t){const n=[];let i=e.parentNode.closest(t);for(;i;)n.push(i),i=i.parentNode.closest(t);return n},prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(e=>"".concat(e,':not([tabindex^="-"])')).join(",");return this.find(t,e).filter(e=>!(e=>!e||e.nodeType!==Node.ELEMENT_NODE||!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")))(e)&&(e=>{if(!r(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){const t=e.closest("summary");if(t&&t.parentNode!==n)return!1;if(null===t)return!1}return t})(e))},getSelectorFromElement(e){const t=W(e);return t&&q.findOne(t)?t:null},getElementFromSelector(e){const t=W(e);return t?q.findOne(t):null},getMultipleElementsFromSelector(e){const t=W(e);return t?q.find(t):[]}},R=".".concat("bs.collapse"),V="show".concat(R),Y="shown".concat(R),U="hide".concat(R),K="hidden".concat(R),Q="click".concat(R).concat(".data-api"),X="show",$="collapse",G="collapsing",J=":scope .".concat($," .").concat($),Z='[data-bs-toggle="collapse"]',ee={parent:null,toggle:!0},te={parent:"(null|element)",toggle:"boolean"};class ne extends z{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];const n=q.find(Z);for(const e of n){const t=q.getSelectorFromElement(e),n=q.find(t).filter(e=>e===this._element);null!==t&&n.length&&this._triggerArray.push(e)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return ee}static get DefaultType(){return te}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e=[];if(this._config.parent&&(e=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter(e=>e!==this._element).map(e=>ne.getOrCreateInstance(e,{toggle:!1}))),e.length&&e[0]._isTransitioning)return;if(j.trigger(this._element,V).defaultPrevented)return;for(const t of e)t.hide();const t=this._getDimension();this._element.classList.remove($),this._element.classList.add(G),this._element.style[t]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=t[0].toUpperCase()+t.slice(1),i="scroll".concat(n);this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove(G),this._element.classList.add($,X),this._element.style[t]="",j.trigger(this._element,Y)},this._element,!0),this._element.style[t]="".concat(this._element[i],"px")}hide(){if(this._isTransitioning||!this._isShown())return;if(j.trigger(this._element,U).defaultPrevented)return;const e=this._getDimension();this._element.style[e]="".concat(this._element.getBoundingClientRect()[e],"px"),this._element.offsetHeight,this._element.classList.add(G),this._element.classList.remove($,X);for(const e of this._triggerArray){const t=q.getElementFromSelector(e);t&&!this._isShown(t)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0;this._element.style[e]="",this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove(G),this._element.classList.add($),j.trigger(this._element,K)},this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(X)}_configAfterMerge(e){return e.toggle=Boolean(e.toggle),e.parent=s(e.parent),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(Z);for(const t of e){const e=q.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){const t=q.find(J,this._config.parent);return q.find(e,this._config.parent).filter(e=>!t.includes(e))}_addAriaAndCollapsedClass(e,t){if(e.length)for(const n of e)n.classList.toggle("collapsed",!t),n.setAttribute("aria-expanded",t)}static jQueryInterface(e){const t={};return"string"==typeof e&&/show|hide/.test(e)&&(t.toggle=!1),this.each(function(){const n=ne.getOrCreateInstance(this,t);if("string"==typeof e){if(void 0===n[e])throw new TypeError('No method named "'.concat(e,'"'));n[e]()}})}}j.on(document,Q,Z,function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();for(const e of q.getMultipleElementsFromSelector(this))ne.getOrCreateInstance(e,{toggle:!1}).toggle()}),d(ne);const ie=document.getElementsByClassName("collapse");var oe="top",re="bottom",se="right",ae="left",ce="auto",le=[oe,re,se,ae],fe="start",ue="end",de="clippingParents",pe="viewport",he="popper",ge="reference",me=le.reduce(function(e,t){return e.concat([t+"-"+fe,t+"-"+ue])},[]),ve=[].concat(le,[ce]).reduce(function(e,t){return e.concat([t,t+"-"+fe,t+"-"+ue])},[]),be="beforeRead",ye="read",_e="afterRead",we="beforeMain",Ee="main",Oe="afterMain",xe="beforeWrite",Ae="write",Ce="afterWrite",Le=[be,ye,_e,we,Ee,Oe,xe,Ae,Ce];function Te(e){return e?(e.nodeName||"").toLowerCase():null}function Se(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function je(e){return e instanceof Se(e).Element||e instanceof Element}function ke(e){return e instanceof Se(e).HTMLElement||e instanceof HTMLElement}function Pe(e){return"undefined"!=typeof ShadowRoot&&(e instanceof Se(e).ShadowRoot||e instanceof ShadowRoot)}var De={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach(function(e){var n=t.styles[e]||{},i=t.attributes[e]||{},o=t.elements[e];ke(o)&&Te(o)&&(Object.assign(o.style,n),Object.keys(i).forEach(function(e){var t=i[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)}))})},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(e){var i=t.elements[e],o=t.attributes[e]||{},r=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce(function(e,t){return e[t]="",e},{});ke(i)&&Te(i)&&(Object.assign(i.style,r),Object.keys(o).forEach(function(e){i.removeAttribute(e)}))})}},requires:["computeStyles"]};function Ne(e){return e.split("-")[0]}var Me=Math.max,Be=Math.min,Ie=Math.round;function Fe(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function He(){return!/^((?!chrome|android).)*safari/i.test(Fe())}function ze(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var i=e.getBoundingClientRect(),o=1,r=1;t&&ke(e)&&(o=e.offsetWidth>0&&Ie(i.width)/e.offsetWidth||1,r=e.offsetHeight>0&&Ie(i.height)/e.offsetHeight||1);var s=(je(e)?Se(e):window).visualViewport,a=!He()&&n,c=(i.left+(a&&s?s.offsetLeft:0))/o,l=(i.top+(a&&s?s.offsetTop:0))/r,f=i.width/o,u=i.height/r;return{width:f,height:u,top:l,right:c+f,bottom:l+u,left:c,x:c,y:l}}function We(e){var t=ze(e),n=e.offsetWidth,i=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-i)<=1&&(i=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:i}}function qe(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Pe(n)){var i=t;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Re(e){return Se(e).getComputedStyle(e)}function Ve(e){return["table","td","th"].indexOf(Te(e))>=0}function Ye(e){return((je(e)?e.ownerDocument:e.document)||window.document).documentElement}function Ue(e){return"html"===Te(e)?e:e.assignedSlot||e.parentNode||(Pe(e)?e.host:null)||Ye(e)}function Ke(e){return ke(e)&&"fixed"!==Re(e).position?e.offsetParent:null}function Qe(e){for(var t=Se(e),n=Ke(e);n&&Ve(n)&&"static"===Re(n).position;)n=Ke(n);return n&&("html"===Te(n)||"body"===Te(n)&&"static"===Re(n).position)?t:n||function(e){var t=/firefox/i.test(Fe());if(/Trident/i.test(Fe())&&ke(e)&&"fixed"===Re(e).position)return null;var n=Ue(e);for(Pe(n)&&(n=n.host);ke(n)&&["html","body"].indexOf(Te(n))<0;){var i=Re(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||t}function Xe(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function $e(e,t,n){return Me(e,Be(t,n))}function Ge(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function Je(e,t){return t.reduce(function(t,n){return t[n]=e,t},{})}var Ze={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,i=e.name,o=e.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=Ne(n.placement),c=Xe(a),l=[ae,se].indexOf(a)>=0?"height":"width";if(r&&s){var f=function(e,t){return Ge("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:Je(e,le))}(o.padding,n),u=We(r),d="y"===c?oe:ae,p="y"===c?re:se,h=n.rects.reference[l]+n.rects.reference[c]-s[c]-n.rects.popper[l],g=s[c]-n.rects.reference[c],m=Qe(r),v=m?"y"===c?m.clientHeight||0:m.clientWidth||0:0,b=h/2-g/2,y=f[d],_=v-u[l]-f[p],w=v/2-u[l]/2+b,E=$e(y,w,_),O=c;n.modifiersData[i]=((t={})[O]=E,t.centerOffset=E-w,t)}},effect:function(e){var t=e.state,n=e.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=t.elements.popper.querySelector(i)))&&qe(t.elements.popper,i)&&(t.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function et(e){return e.split("-")[1]}var tt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function nt(e){var t,n=e.popper,i=e.popperRect,o=e.placement,r=e.variation,s=e.offsets,a=e.position,c=e.gpuAcceleration,l=e.adaptive,f=e.roundOffsets,u=e.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,g=void 0===h?0:h,m="function"==typeof f?f({x:p,y:g}):{x:p,y:g};p=m.x,g=m.y;var v=s.hasOwnProperty("x"),b=s.hasOwnProperty("y"),y=ae,_=oe,w=window;if(l){var E=Qe(n),O="clientHeight",x="clientWidth";if(E===Se(n)&&"static"!==Re(E=Ye(n)).position&&"absolute"===a&&(O="scrollHeight",x="scrollWidth"),o===oe||(o===ae||o===se)&&r===ue)_=re,g-=(u&&E===w&&w.visualViewport?w.visualViewport.height:E[O])-i.height,g*=c?1:-1;if(o===ae||(o===oe||o===re)&&r===ue)y=se,p-=(u&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=c?1:-1}var A,C=Object.assign({position:a},l&&tt),L=!0===f?function(e,t){var n=e.x,i=e.y,o=t.devicePixelRatio||1;return{x:Ie(n*o)/o||0,y:Ie(i*o)/o||0}}({x:p,y:g},Se(n)):{x:p,y:g};return p=L.x,g=L.y,c?Object.assign({},C,((A={})[_]=b?"0":"",A[y]=v?"0":"",A.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+g+"px)":"translate3d("+p+"px, "+g+"px, 0)",A)):Object.assign({},C,((t={})[_]=b?g+"px":"",t[y]=v?p+"px":"",t.transform="",t))}var it={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,c=void 0===a||a,l={placement:Ne(t.placement),variation:et(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,nt(Object.assign({},l,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:c})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,nt(Object.assign({},l,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:c})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},ot={passive:!0};var rt={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,i=e.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,c=Se(t.elements.popper),l=[].concat(t.scrollParents.reference,t.scrollParents.popper);return r&&l.forEach(function(e){e.addEventListener("scroll",n.update,ot)}),a&&c.addEventListener("resize",n.update,ot),function(){r&&l.forEach(function(e){e.removeEventListener("scroll",n.update,ot)}),a&&c.removeEventListener("resize",n.update,ot)}},data:{}},st={left:"right",right:"left",bottom:"top",top:"bottom"};function at(e){return e.replace(/left|right|bottom|top/g,function(e){return st[e]})}var ct={start:"end",end:"start"};function lt(e){return e.replace(/start|end/g,function(e){return ct[e]})}function ft(e){var t=Se(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function ut(e){return ze(Ye(e)).left+ft(e).scrollLeft}function dt(e){var t=Re(e),n=t.overflow,i=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function pt(e){return["html","body","#document"].indexOf(Te(e))>=0?e.ownerDocument.body:ke(e)&&dt(e)?e:pt(Ue(e))}function ht(e,t){var n;void 0===t&&(t=[]);var i=pt(e),o=i===(null==(n=e.ownerDocument)?void 0:n.body),r=Se(i),s=o?[r].concat(r.visualViewport||[],dt(i)?i:[]):i,a=t.concat(s);return o?a:a.concat(ht(Ue(s)))}function gt(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function mt(e,t,n){return t===pe?gt(function(e,t){var n=Se(e),i=Ye(e),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,c=0;if(o){r=o.width,s=o.height;var l=He();(l||!l&&"fixed"===t)&&(a=o.offsetLeft,c=o.offsetTop)}return{width:r,height:s,x:a+ut(e),y:c}}(e,n)):je(t)?function(e,t){var n=ze(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):gt(function(e){var t,n=Ye(e),i=ft(e),o=null==(t=e.ownerDocument)?void 0:t.body,r=Me(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=Me(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+ut(e),c=-i.scrollTop;return"rtl"===Re(o||n).direction&&(a+=Me(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:c}}(Ye(e)))}function vt(e,t,n,i){var o="clippingParents"===t?function(e){var t=ht(Ue(e)),n=["absolute","fixed"].indexOf(Re(e).position)>=0&&ke(e)?Qe(e):e;return je(n)?t.filter(function(e){return je(e)&&qe(e,n)&&"body"!==Te(e)}):[]}(e):[].concat(t),r=[].concat(o,[n]),s=r[0],a=r.reduce(function(t,n){var o=mt(e,n,i);return t.top=Me(o.top,t.top),t.right=Be(o.right,t.right),t.bottom=Be(o.bottom,t.bottom),t.left=Me(o.left,t.left),t},mt(e,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function bt(e){var t,n=e.reference,i=e.element,o=e.placement,r=o?Ne(o):null,s=o?et(o):null,a=n.x+n.width/2-i.width/2,c=n.y+n.height/2-i.height/2;switch(r){case oe:t={x:a,y:n.y-i.height};break;case re:t={x:a,y:n.y+n.height};break;case se:t={x:n.x+n.width,y:c};break;case ae:t={x:n.x-i.width,y:c};break;default:t={x:n.x,y:n.y}}var l=r?Xe(r):null;if(null!=l){var f="y"===l?"height":"width";switch(s){case fe:t[l]=t[l]-(n[f]/2-i[f]/2);break;case ue:t[l]=t[l]+(n[f]/2-i[f]/2)}}return t}function yt(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=void 0===i?e.placement:i,r=n.strategy,s=void 0===r?e.strategy:r,a=n.boundary,c=void 0===a?de:a,l=n.rootBoundary,f=void 0===l?pe:l,u=n.elementContext,d=void 0===u?he:u,p=n.altBoundary,h=void 0!==p&&p,g=n.padding,m=void 0===g?0:g,v=Ge("number"!=typeof m?m:Je(m,le)),b=d===he?ge:he,y=e.rects.popper,_=e.elements[h?b:d],w=vt(je(_)?_:_.contextElement||Ye(e.elements.popper),c,f,s),E=ze(e.elements.reference),O=bt({reference:E,element:y,placement:o}),x=gt(Object.assign({},y,O)),A=d===he?x:E,C={top:w.top-A.top+v.top,bottom:A.bottom-w.bottom+v.bottom,left:w.left-A.left+v.left,right:A.right-w.right+v.right},L=e.modifiersData.offset;if(d===he&&L){var T=L[o];Object.keys(C).forEach(function(e){var t=[se,re].indexOf(e)>=0?1:-1,n=[oe,re].indexOf(e)>=0?"y":"x";C[e]+=T[n]*t})}return C}function _t(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,c=n.allowedAutoPlacements,l=void 0===c?ve:c,f=et(i),u=f?a?me:me.filter(function(e){return et(e)===f}):le,d=u.filter(function(e){return l.indexOf(e)>=0});0===d.length&&(d=u);var p=d.reduce(function(t,n){return t[n]=yt(e,{placement:n,boundary:o,rootBoundary:r,padding:s})[Ne(n)],t},{});return Object.keys(p).sort(function(e,t){return p[e]-p[t]})}var wt={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name;if(!t.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,c=n.fallbackPlacements,l=n.padding,f=n.boundary,u=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,g=n.allowedAutoPlacements,m=t.options.placement,v=Ne(m),b=c||(v===m||!h?[at(m)]:function(e){if(Ne(e)===ce)return[];var t=at(e);return[lt(e),t,lt(t)]}(m)),y=[m].concat(b).reduce(function(e,n){return e.concat(Ne(n)===ce?_t(t,{placement:n,boundary:f,rootBoundary:u,padding:l,flipVariations:h,allowedAutoPlacements:g}):n)},[]),_=t.rects.reference,w=t.rects.popper,E=new Map,O=!0,x=y[0],A=0;A=0,j=S?"width":"height",k=yt(t,{placement:C,boundary:f,rootBoundary:u,altBoundary:d,padding:l}),P=S?T?se:ae:T?re:oe;_[j]>w[j]&&(P=at(P));var D=at(P),N=[];if(r&&N.push(k[L]<=0),a&&N.push(k[P]<=0,k[D]<=0),N.every(function(e){return e})){x=C,O=!1;break}E.set(C,N)}if(O)for(var M=function(e){var t=y.find(function(t){var n=E.get(t);if(n)return n.slice(0,e).every(function(e){return e})});if(t)return x=t,"break"},B=h?3:1;B>0;B--){if("break"===M(B))break}t.placement!==x&&(t.modifiersData[i]._skip=!0,t.placement=x,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function Et(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function Ot(e){return[oe,se,re,ae].some(function(t){return e[t]>=0})}var xt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,i=t.rects.reference,o=t.rects.popper,r=t.modifiersData.preventOverflow,s=yt(t,{elementContext:"reference"}),a=yt(t,{altBoundary:!0}),c=Et(s,i),l=Et(a,o,r),f=Ot(c),u=Ot(l);t.modifiersData[n]={referenceClippingOffsets:c,popperEscapeOffsets:l,isReferenceHidden:f,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":f,"data-popper-escaped":u})}};var At={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,i=e.name,o=n.offset,r=void 0===o?[0,0]:o,s=ve.reduce(function(e,n){return e[n]=function(e,t,n){var i=Ne(e),o=[ae,oe].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},t,{placement:e})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[ae,se].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,t.rects,r),e},{}),a=s[t.placement],c=a.x,l=a.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=c,t.modifiersData.popperOffsets.y+=l),t.modifiersData[i]=s}};var Ct={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=bt({reference:t.rects.reference,element:t.rects.popper,placement:t.placement})},data:{}};var Lt={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,c=n.boundary,l=n.rootBoundary,f=n.altBoundary,u=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,g=void 0===h?0:h,m=yt(t,{boundary:c,rootBoundary:l,padding:u,altBoundary:f}),v=Ne(t.placement),b=et(t.placement),y=!b,_=Xe(v),w="x"===_?"y":"x",E=t.modifiersData.popperOffsets,O=t.rects.reference,x=t.rects.popper,A="function"==typeof g?g(Object.assign({},t.rects,{placement:t.placement})):g,C="number"==typeof A?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),L=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,T={x:0,y:0};if(E){if(r){var S,j="y"===_?oe:ae,k="y"===_?re:se,P="y"===_?"height":"width",D=E[_],N=D+m[j],M=D-m[k],B=p?-x[P]/2:0,I=b===fe?O[P]:x[P],F=b===fe?-x[P]:-O[P],H=t.elements.arrow,z=p&&H?We(H):{width:0,height:0},W=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},q=W[j],R=W[k],V=$e(0,O[P],z[P]),Y=y?O[P]/2-B-V-q-C.mainAxis:I-V-q-C.mainAxis,U=y?-O[P]/2+B+V+R+C.mainAxis:F+V+R+C.mainAxis,K=t.elements.arrow&&Qe(t.elements.arrow),Q=K?"y"===_?K.clientTop||0:K.clientLeft||0:0,X=null!=(S=null==L?void 0:L[_])?S:0,$=D+U-X,G=$e(p?Be(N,D+Y-X-Q):N,D,p?Me(M,$):M);E[_]=G,T[_]=G-D}if(a){var J,Z="x"===_?oe:ae,ee="x"===_?re:se,te=E[w],ne="y"===w?"height":"width",ie=te+m[Z],ce=te-m[ee],le=-1!==[oe,ae].indexOf(v),ue=null!=(J=null==L?void 0:L[w])?J:0,de=le?ie:te-O[ne]-x[ne]-ue+C.altAxis,pe=le?te+O[ne]+x[ne]-ue-C.altAxis:ce,he=p&&le?function(e,t,n){var i=$e(e,t,n);return i>n?n:i}(de,te,pe):$e(p?de:ie,te,p?pe:ce);E[w]=he,T[w]=he-te}t.modifiersData[i]=T}},requiresIfExists:["offset"]};function Tt(e,t,n){void 0===n&&(n=!1);var i,o,r=ke(t),s=ke(t)&&function(e){var t=e.getBoundingClientRect(),n=Ie(t.width)/e.offsetWidth||1,i=Ie(t.height)/e.offsetHeight||1;return 1!==n||1!==i}(t),a=Ye(t),c=ze(e,s,n),l={scrollLeft:0,scrollTop:0},f={x:0,y:0};return(r||!r&&!n)&&(("body"!==Te(t)||dt(a))&&(l=(i=t)!==Se(i)&&ke(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:ft(i)),ke(t)?((f=ze(t,!0)).x+=t.clientLeft,f.y+=t.clientTop):a&&(f.x=ut(a))),{x:c.left+l.scrollLeft-f.x,y:c.top+l.scrollTop-f.y,width:c.width,height:c.height}}function St(e){var t=new Map,n=new Set,i=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach(function(e){if(!n.has(e)){var i=t.get(e);i&&o(i)}}),i.push(e)}return e.forEach(function(e){t.set(e.name,e)}),e.forEach(function(e){n.has(e.name)||o(e)}),i}var jt={placement:"bottom",modifiers:[],strategy:"absolute"};function kt(){for(var e=arguments.length,t=new Array(e),n=0;n{const n=e.nodeName.toLowerCase();return t.includes(n)?!Ft.has(n)||Boolean(Ht.test(e.nodeValue)):t.filter(e=>e instanceof RegExp).some(e=>e.test(n))};const Wt={allowList:It,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},qt={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Rt={entry:"(string|element|function|null)",selector:"(string|element)"};class Vt extends H{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return Wt}static get DefaultType(){return qt}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map(e=>this._resolvePossibleFunction(e)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content=M(M({},this._config.content),e),this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[t,n]of Object.entries(this._config.content))this._setContent(e,n,t);const t=e.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&t.classList.add(...n.split(" ")),t}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[t,n]of Object.entries(e))super._typeCheckConfig({selector:t,entry:n},Rt)}_setContent(e,t,n){const i=q.findOne(n,e);i&&((t=this._resolvePossibleFunction(t))?r(t)?this._putElementInTemplate(s(t),i):this._config.html?i.innerHTML=this._maybeSanitize(t):i.textContent=t:i.remove())}_maybeSanitize(e){return this._config.sanitize?function(e,t,n){if(!e.length)return e;if(n&&"function"==typeof n)return n(e);const i=(new window.DOMParser).parseFromString(e,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const e of o){const n=e.nodeName.toLowerCase();if(!Object.keys(t).includes(n)){e.remove();continue}const i=[].concat(...e.attributes),o=[].concat(t["*"]||[],t[n]||[]);for(const t of i)zt(t,o)||e.removeAttribute(t.nodeName)}return i.body.innerHTML}(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return p(e,[void 0,this])}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const Yt=new Set(["sanitize","allowList","sanitizeFn"]),Ut="fade",Kt="show",Qt=".tooltip-inner",Xt=".".concat("modal"),$t="hide.bs.modal",Gt="hover",Jt="focus",Zt="click",en={AUTO:"auto",TOP:"top",RIGHT:u()?"left":"right",BOTTOM:"bottom",LEFT:u()?"right":"left"},tn={allowList:It,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"},nn={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 on extends z{constructor(e,t){if(void 0===Bt)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)");super(e,t),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 tn}static get DefaultType(){return nn}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),j.off(this._element.closest(Xt),$t,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 e=j.trigger(this._element,this.constructor.eventName("show")),t=(a(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!t)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),j.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(Kt),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))j.on(e,"mouseover",c);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())return;if(j.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(Kt),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))j.off(e,"mouseover",c);this._activeTrigger[Zt]=!1,this._activeTrigger[Jt]=!1,this._activeTrigger[Gt]=!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(e){const t=this._getTemplateFactory(e).toHtml();if(!t)return null;t.classList.remove(Ut,Kt),t.classList.add("bs-".concat(this.constructor.NAME,"-auto"));const n=(e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e})(this.constructor.NAME).toString();return t.setAttribute("id",n),this._isAnimated()&&t.classList.add(Ut),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new Vt(M(M({},this._config),{},{content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)})),this._templateFactory}_getContentForTemplate(){return{[Qt]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Ut)}_isShown(){return this.tip&&this.tip.classList.contains(Kt)}_createPopper(e){const t=p(this._config.placement,[this,e,this._element]),n=en[t.toUpperCase()];return Mt(this._element,e,this._getPopperConfig(n))}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map(e=>Number.parseInt(e,10)):"function"==typeof e?t=>e(t,this._element):e}_resolvePossibleFunction(e){return p(e,[this._element,this._element])}_getPopperConfig(e){const t={placement:e,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:!0,phase:"beforeMain",fn:e=>{this._getTipElement().setAttribute("data-popper-placement",e.state.placement)}}]};return M(M({},t),p(this._config.popperConfig,[void 0,t]))}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if("click"===t)j.on(this._element,this.constructor.eventName("click"),this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger[Zt]=!(t._isShown()&&t._activeTrigger[Zt]),t.toggle()});else if("manual"!==t){const e=t===Gt?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=t===Gt?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");j.on(this._element,e,this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusin"===e.type?Jt:Gt]=!0,t._enter()}),j.on(this._element,n,this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusout"===e.type?Jt:Gt]=t._element.contains(e.relatedTarget),t._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},j.on(this._element.closest(Xt),$t,this._hideModalHandler)}_fixTitle(){const e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),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(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const t=F.getDataAttributes(this._element);for(const e of Object.keys(t))Yt.has(e)&&delete t[e];return e=M(M({},t),"object"==typeof e&&e?e:{}),e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=!1===e.container?document.body:s(e.container),"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const[t,n]of Object.entries(this._config))this.constructor.Default[t]!==n&&(e[t]=n);return e.selector=!1,e.trigger="manual",e}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(e){return this.each(function(){const t=on.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError('No method named "'.concat(e,'"'));t[e]()}})}}var rn;d(on);const sn=document.getElementById("toc-bar"),an=document.getElementById("toc-solo-trigger"),cn=document.getElementsByClassName("toc-trigger"),ln=document.getElementById("toc-popup"),fn=document.getElementById("toc-popup-close"),un="overflow-hidden",dn="closing";class pn{static initBar(){new IntersectionObserver(e=>{e.forEach(e=>{sn.classList.toggle("invisible",e.isIntersecting)})},{rootMargin:"-".concat(P(pn,this,gn)._,"px 0px 0px 0px")}).observe(an),hn._=P(pn,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach(e=>{e.onclick=()=>this.hidePopup()})}static refresh(){P(pn,this,hn)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return ln.open}static showPopup(){this.lockScroll(!0),ln.showModal();ln.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){ln.toggleAttribute(dn),ln.addEventListener("animationend",()=>{ln.toggleAttribute(dn),ln.close()},{once:!0}),this.lockScroll(!1)}static lockScroll(e){document.documentElement.classList.toggle(un,e),document.body.classList.toggle(un,e)}static clickBackdrop(e){if(ln.hasAttribute(dn))return;const t=e.target.getBoundingClientRect();(e.clientXt.right||e.clientYt.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...cn].forEach(e=>{e.onclick=()=>this.showPopup()}),ln.onclick=e=>this.clickBackdrop(e),fn.onclick=()=>this.hidePopup(),ln.oncancel=e=>{e.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var hn={_:!0},gn={_:48};D(pn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:P(rn=pn,rn,gn)._});D(class{static refresh(){tocbot.refresh(this.options)}static init(){tocbot.init(this.options)}},"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32}),matchMedia("(min-width: 1200px)"),Theme.getThemeMapper("default","dark");const mn=document.getElementById("mode-toggle");const vn=document.getElementById("sidebar"),bn=document.getElementById("sidebar-trigger"),yn=document.getElementById("mask");class _n{static toggle(){wn._=P(_n,this,!P(_n,this,wn)._),document.body.toggleAttribute("sidebar-display",P(_n,this,wn)._),vn.classList.toggle("z-2",P(_n,this,wn)._),yn.classList.toggle("d-none",!P(_n,this,wn)._)}}var wn={_:!1};const En=document.getElementById("sidebar-trigger"),On=document.getElementById("search-trigger"),xn=document.getElementById("search-cancel"),An=document.querySelectorAll("#main-wrapper>.container>.row"),Cn=document.getElementById("topbar-title"),Ln=document.getElementById("search"),Tn=document.getElementById("search-result-wrapper"),Sn=document.getElementById("search-results"),jn=document.getElementById("search-input"),kn=document.getElementById("search-hints"),Pn="d-block",Dn="d-none",Nn="input-focus",Mn="d-flex";class Bn{static on(){En.classList.add(Dn),Cn.classList.add(Dn),On.classList.add(Dn),Ln.classList.add(Mn),xn.classList.add(Pn)}static off(){xn.classList.remove(Pn),Ln.classList.remove(Mn),En.classList.remove(Dn),Cn.classList.remove(Dn),On.classList.remove(Dn)}}class In{static on(){this.resultVisible||(Tn.classList.remove(Dn),An.forEach(e=>{e.classList.add(Dn)}),this.resultVisible=!0)}static off(){this.resultVisible&&(Sn.innerHTML="",kn.classList.contains(Dn)&&kn.classList.remove(Dn),Tn.classList.add(Dn),An.forEach(e=>{e.classList.remove(Dn)}),jn.textContent="",this.resultVisible=!1)}}function Fn(){return xn.classList.contains(Pn)}D(In,"resultVisible",!1),mn&&mn.addEventListener("click",()=>{Theme.flip()}),function(){const e=document.getElementById("back-to-top");window.addEventListener("scroll",()=>{window.scrollY>50?e.classList.add("show"):e.classList.remove("show")}),e.addEventListener("click",()=>{window.scrollTo({top:0})})}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map(e=>new on(e)),bn.onclick=yn.onclick=()=>_n.toggle(),On.addEventListener("click",()=>{Bn.on(),In.on(),jn.focus()}),xn.addEventListener("click",()=>{Bn.off(),In.off()}),jn.addEventListener("focus",()=>{Ln.classList.add(Nn)}),jn.addEventListener("focusout",()=>{Ln.classList.remove(Nn)}),jn.addEventListener("input",()=>{""===jn.value?Fn()?kn.classList.remove(Dn):In.off():(In.on(),Fn()&&kn.classList.add(Dn))}),[...ie].forEach(e=>{const t="h_"+e.id.substring(2),n=document.getElementById(t);e.addEventListener("hide.bs.collapse",()=>{n&&(n.querySelector(".far.fa-folder-open").className="far fa-folder fa-fw",n.querySelector(".fas.fa-angle-down").classList.add("rotate"),n.classList.remove("hide-border-bottom"))}),e.addEventListener("show.bs.collapse",()=>{n&&(n.querySelector(".far.fa-folder").className="far fa-folder-open fa-fw",n.querySelector(".fas.fa-angle-down").classList.remove("rotate"),n.classList.add("hide-border-bottom"))})})}(); diff --git a/assets/js/dist/commons.min.js b/assets/js/dist/commons.min.js new file mode 100644 index 0000000..e1b2fbd --- /dev/null +++ b/assets/js/dist/commons.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.4.1 | Ā© 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";const t=new Map;var e={set(e,n,i){t.has(e)||t.set(e,new Map);const o=t.get(e);o.has(n)||0===o.size?o.set(n,i):console.error("Bootstrap doesn't allow more than one instance per element. Bound instance: ".concat(Array.from(o.keys())[0],"."))},get:(e,n)=>t.has(e)&&t.get(e).get(n)||null,remove(e,n){if(!t.has(e))return;const i=t.get(e);i.delete(n),0===i.size&&t.delete(e)}};const n="transitionend",i=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,(t,e)=>"#".concat(CSS.escape(e)))),t),o=t=>null==t?"".concat(t):Object.prototype.toString.call(t).match(/\s([a-z]+)/i)[1].toLowerCase(),r=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),s=t=>r(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(i(t)):null,a=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?a(t.parentNode):null},c=()=>{},l=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,u=[],f=()=>"rtl"===document.documentElement.dir,d=t=>{var e;e=()=>{const e=l();if(e){const n=t.NAME,i=e.fn[n];e.fn[n]=t.jQueryInterface,e.fn[n].Constructor=t,e.fn[n].noConflict=()=>(e.fn[n]=i,t.jQueryInterface)}},"loading"===document.readyState?(u.length||document.addEventListener("DOMContentLoaded",()=>{for(const t of u)t()}),u.push(e)):e()},p=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;return"function"==typeof t?t.call(...e):n},h=function(t,e){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void p(t);const i=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:n}=window.getComputedStyle(t);const i=Number.parseFloat(e),o=Number.parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(n))):0})(e)+5;let o=!1;const r=i=>{let{target:s}=i;s===e&&(o=!0,e.removeEventListener(n,r),p(t))};e.addEventListener(n,r),setTimeout(()=>{o||e.dispatchEvent(new Event(n))},i)},g=/[^.]*(?=\..*)\.|.*/,m=/\..*/,v=/::\d+$/,b={};let y=1;const _={mouseenter:"mouseover",mouseleave:"mouseout"},w=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 E(t,e){return e&&"".concat(e,"::").concat(y++)||t.uidEvent||y++}function O(t){const e=E(t);return t.uidEvent=e,b[e]=b[e]||{},b[e]}function x(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(t).find(t=>t.callable===e&&t.delegationSelector===n)}function A(t,e,n){const i="string"==typeof e,o=i?n:e||n;let r=j(t);return w.has(r)||(r=t),[i,o,r]}function C(t,e,n,i,o){if("string"!=typeof e||!t)return;let[r,s,a]=A(e,n,i);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)};s=t(s)}const c=O(t),l=c[a]||(c[a]={}),u=x(l,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=E(s,e.replace(g,"")),d=r?function(t,e,n){return function i(o){const r=t.querySelectorAll(e);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return k(o,{delegateTarget:s}),i.oneOff&&S.off(t,o.type,e,n),n.apply(s,[o])}}(t,n,s):function(t,e){return function n(i){return k(i,{delegateTarget:t}),n.oneOff&&S.off(t,i.type,e),e.apply(t,[i])}}(t,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=f,l[f]=d,t.addEventListener(a,d,r)}function L(t,e,n,i,o){const r=x(e[n],i,o);r&&(t.removeEventListener(n,r,Boolean(o)),delete e[n][r.uidEvent])}function T(t,e,n,i){const o=e[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&L(t,e,n,s.callable,s.delegationSelector)}function j(t){return t=t.replace(m,""),_[t]||t}const S={on(t,e,n,i){C(t,e,n,i,!1)},one(t,e,n,i){C(t,e,n,i,!0)},off(t,e,n,i){if("string"!=typeof e||!t)return;const[o,r,s]=A(e,n,i),a=s!==e,c=O(t),l=c[s]||{},u=e.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(c))T(t,c,n,e.slice(1));for(const[n,i]of Object.entries(l)){const o=n.replace(v,"");a&&!e.includes(o)||L(t,c,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(l).length)return;L(t,c,s,r,o?n:null)}},trigger(t,e,n){if("string"!=typeof e||!t)return null;const i=l();let o=null,r=!0,s=!0,a=!1;e!==j(e)&&i&&(o=i.Event(e,n),i(t).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const c=k(new Event(e,{bubbles:r,cancelable:!0}),n);return a&&c.preventDefault(),s&&t.dispatchEvent(c),c.defaultPrevented&&o&&o.preventDefault(),c}};function k(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(e))try{t[n]=i}catch(e){Object.defineProperty(t,n,{configurable:!0,get:()=>i})}return t}function P(t,e,n){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:n;throw new TypeError("Private element is not present on this object")}function D(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,e);if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function M(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,i)}return n}function N(t){for(var e=1;e"-".concat(t.toLowerCase()))}const F={setDataAttribute(t,e,n){t.setAttribute("data-bs-".concat(I(e)),n)},removeDataAttribute(t,e){t.removeAttribute("data-bs-".concat(I(e)))},getDataAttributes(t){if(!t)return{};const e={},n=Object.keys(t.dataset).filter(t=>t.startsWith("bs")&&!t.startsWith("bsConfig"));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1),e[n]=B(t.dataset[i])}return e},getDataAttribute:(t,e)=>B(t.getAttribute("data-bs-".concat(I(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 n=r(e)?F.getDataAttribute(e,"config"):{};return N(N(N(N({},this.constructor.Default),"object"==typeof n?n:{}),r(e)?F.getDataAttributes(e):{}),"object"==typeof t?t:{})}_typeCheckConfig(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[n,i]of Object.entries(e)){const e=t[n],s=r(e)?"element":o(e);if(!new RegExp(i).test(s))throw new TypeError("".concat(this.constructor.NAME.toUpperCase(),': Option "').concat(n,'" provided type "').concat(s,'" but expected type "').concat(i,'".'))}}}class z extends H{constructor(t,n){super(),(t=s(t))&&(this._element=t,this._config=this._getConfig(n),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),S.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e){h(t,e,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(s(t),this.DATA_KEY)}static getOrCreateInstance(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.8"}static get DATA_KEY(){return"bs.".concat(this.NAME)}static get EVENT_KEY(){return".".concat(this.DATA_KEY)}static eventName(t){return"".concat(t).concat(this.EVENT_KEY)}}const W=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let n=t.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n="#".concat(n.split("#")[1])),e=n&&"#"!==n?n.trim():null}return e?e.split(",").map(t=>i(t)).join(","):null},R={find(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(e,t))},findOne(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(e,t)},children:(t,e)=>[].concat(...t.children).filter(t=>t.matches(e)),parents(t,e){const n=[];let i=t.parentNode.closest(e);for(;i;)n.push(i),i=i.parentNode.closest(e);return n},prev(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return[n];n=n.previousElementSibling}return[]},next(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return[n];n=n.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(t=>"".concat(t,':not([tabindex^="-"])')).join(",");return this.find(e,t).filter(t=>!(t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")))(t)&&(t=>{if(!r(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),n=t.closest("details:not([open])");if(!n)return e;if(n!==t){const e=t.closest("summary");if(e&&e.parentNode!==n)return!1;if(null===e)return!1}return e})(t))},getSelectorFromElement(t){const e=W(t);return e&&R.findOne(e)?e:null},getElementFromSelector(t){const e=W(t);return e?R.findOne(e):null},getMultipleElementsFromSelector(t){const e=W(t);return e?R.find(e):[]}},q=".".concat("bs.collapse"),V="show".concat(q),Y="shown".concat(q),U="hide".concat(q),K="hidden".concat(q),Q="click".concat(q).concat(".data-api"),X="show",$="collapse",G="collapsing",J=":scope .".concat($," .").concat($),Z='[data-bs-toggle="collapse"]',tt={parent:null,toggle:!0},et={parent:"(null|element)",toggle:"boolean"};class nt extends z{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=R.find(Z);for(const t of n){const e=R.getSelectorFromElement(t),n=R.find(e).filter(t=>t===this._element);null!==e&&n.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 tt}static get DefaultType(){return et}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=>nt.getOrCreateInstance(t,{toggle:!1}))),t.length&&t[0]._isTransitioning)return;if(S.trigger(this._element,V).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove($),this._element.classList.add(G),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=e[0].toUpperCase()+e.slice(1),i="scroll".concat(n);this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove(G),this._element.classList.add($,X),this._element.style[e]="",S.trigger(this._element,Y)},this._element,!0),this._element.style[e]="".concat(this._element[i],"px")}hide(){if(this._isTransitioning||!this._isShown())return;if(S.trigger(this._element,U).defaultPrevented)return;const t=this._getDimension();this._element.style[t]="".concat(this._element.getBoundingClientRect()[t],"px"),this._element.offsetHeight,this._element.classList.add(G),this._element.classList.remove($,X);for(const t of this._triggerArray){const e=R.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(G),this._element.classList.add($),S.trigger(this._element,K)},this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(X)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=s(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Z);for(const e of t){const t=R.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=R.find(J,this._config.parent);return R.find(t,this._config.parent).filter(t=>!e.includes(t))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const n of t)n.classList.toggle("collapsed",!e),n.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each(function(){const n=nt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===n[t])throw new TypeError('No method named "'.concat(t,'"'));n[t]()}})}}S.on(document,Q,Z,function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of R.getMultipleElementsFromSelector(this))nt.getOrCreateInstance(t,{toggle:!1}).toggle()}),d(nt),document.getElementsByClassName("collapse");var it="top",ot="bottom",rt="right",st="left",at="auto",ct=[it,ot,rt,st],lt="start",ut="end",ft="clippingParents",dt="viewport",pt="popper",ht="reference",gt=ct.reduce(function(t,e){return t.concat([e+"-"+lt,e+"-"+ut])},[]),mt=[].concat(ct,[at]).reduce(function(t,e){return t.concat([e,e+"-"+lt,e+"-"+ut])},[]),vt="beforeRead",bt="read",yt="afterRead",_t="beforeMain",wt="main",Et="afterMain",Ot="beforeWrite",xt="write",At="afterWrite",Ct=[vt,bt,yt,_t,wt,Et,Ot,xt,At];function Lt(t){return t?(t.nodeName||"").toLowerCase():null}function Tt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function jt(t){return t instanceof Tt(t).Element||t instanceof Element}function St(t){return t instanceof Tt(t).HTMLElement||t instanceof HTMLElement}function kt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Tt(t).ShadowRoot||t instanceof ShadowRoot)}var Pt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach(function(t){var n=e.styles[t]||{},i=e.attributes[t]||{},o=e.elements[t];St(o)&&Lt(o)&&(Object.assign(o.style,n),Object.keys(i).forEach(function(t){var e=i[t];!1===e?o.removeAttribute(t):o.setAttribute(t,!0===e?"":e)}))})},effect:function(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach(function(t){var i=e.elements[t],o=e.attributes[t]||{},r=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:n[t]).reduce(function(t,e){return t[e]="",t},{});St(i)&&Lt(i)&&(Object.assign(i.style,r),Object.keys(o).forEach(function(t){i.removeAttribute(t)}))})}},requires:["computeStyles"]};function Dt(t){return t.split("-")[0]}var Mt=Math.max,Nt=Math.min,Bt=Math.round;function It(){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 Ft(){return!/^((?!chrome|android).)*safari/i.test(It())}function Ht(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var i=t.getBoundingClientRect(),o=1,r=1;e&&St(t)&&(o=t.offsetWidth>0&&Bt(i.width)/t.offsetWidth||1,r=t.offsetHeight>0&&Bt(i.height)/t.offsetHeight||1);var s=(jt(t)?Tt(t):window).visualViewport,a=!Ft()&&n,c=(i.left+(a&&s?s.offsetLeft:0))/o,l=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:l,right:c+u,bottom:l+f,left:c,x:c,y:l}}function zt(t){var e=Ht(t),n=t.offsetWidth,i=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:i}}function Wt(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&kt(n)){var i=e;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Rt(t){return Tt(t).getComputedStyle(t)}function qt(t){return["table","td","th"].indexOf(Lt(t))>=0}function Vt(t){return((jt(t)?t.ownerDocument:t.document)||window.document).documentElement}function Yt(t){return"html"===Lt(t)?t:t.assignedSlot||t.parentNode||(kt(t)?t.host:null)||Vt(t)}function Ut(t){return St(t)&&"fixed"!==Rt(t).position?t.offsetParent:null}function Kt(t){for(var e=Tt(t),n=Ut(t);n&&qt(n)&&"static"===Rt(n).position;)n=Ut(n);return n&&("html"===Lt(n)||"body"===Lt(n)&&"static"===Rt(n).position)?e:n||function(t){var e=/firefox/i.test(It());if(/Trident/i.test(It())&&St(t)&&"fixed"===Rt(t).position)return null;var n=Yt(t);for(kt(n)&&(n=n.host);St(n)&&["html","body"].indexOf(Lt(n))<0;){var i=Rt(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||e&&"filter"===i.willChange||e&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(t)||e}function Qt(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Xt(t,e,n){return Mt(t,Nt(e,n))}function $t(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Gt(t,e){return e.reduce(function(e,n){return e[n]=t,e},{})}var Jt={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,n=t.state,i=t.name,o=t.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=Dt(n.placement),c=Qt(a),l=[st,rt].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(t,e){return $t("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Gt(t,ct))}(o.padding,n),f=zt(r),d="y"===c?it:st,p="y"===c?ot:rt,h=n.rects.reference[l]+n.rects.reference[c]-s[c]-n.rects.popper[l],g=s[c]-n.rects.reference[c],m=Kt(r),v=m?"y"===c?m.clientHeight||0:m.clientWidth||0:0,b=h/2-g/2,y=u[d],_=v-f[l]-u[p],w=v/2-f[l]/2+b,E=Xt(y,w,_),O=c;n.modifiersData[i]=((e={})[O]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,n=t.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=e.elements.popper.querySelector(i)))&&Wt(e.elements.popper,i)&&(e.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Zt(t){return t.split("-")[1]}var te={top:"auto",right:"auto",bottom:"auto",left:"auto"};function ee(t){var e,n=t.popper,i=t.popperRect,o=t.placement,r=t.variation,s=t.offsets,a=t.position,c=t.gpuAcceleration,l=t.adaptive,u=t.roundOffsets,f=t.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,g=void 0===h?0:h,m="function"==typeof u?u({x:p,y:g}):{x:p,y:g};p=m.x,g=m.y;var v=s.hasOwnProperty("x"),b=s.hasOwnProperty("y"),y=st,_=it,w=window;if(l){var E=Kt(n),O="clientHeight",x="clientWidth";if(E===Tt(n)&&"static"!==Rt(E=Vt(n)).position&&"absolute"===a&&(O="scrollHeight",x="scrollWidth"),o===it||(o===st||o===rt)&&r===ut)_=ot,g-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[O])-i.height,g*=c?1:-1;if(o===st||(o===it||o===ot)&&r===ut)y=rt,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=c?1:-1}var A,C=Object.assign({position:a},l&&te),L=!0===u?function(t,e){var n=t.x,i=t.y,o=e.devicePixelRatio||1;return{x:Bt(n*o)/o||0,y:Bt(i*o)/o||0}}({x:p,y:g},Tt(n)):{x:p,y:g};return p=L.x,g=L.y,c?Object.assign({},C,((A={})[_]=b?"0":"",A[y]=v?"0":"",A.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+g+"px)":"translate3d("+p+"px, "+g+"px, 0)",A)):Object.assign({},C,((e={})[_]=b?g+"px":"",e[y]=v?p+"px":"",e.transform="",e))}var ne={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,n=t.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,c=void 0===a||a,l={placement:Dt(e.placement),variation:Zt(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,ee(Object.assign({},l,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:s,roundOffsets:c})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,ee(Object.assign({},l,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:c})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},ie={passive:!0};var oe={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,n=t.instance,i=t.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,c=Tt(e.elements.popper),l=[].concat(e.scrollParents.reference,e.scrollParents.popper);return r&&l.forEach(function(t){t.addEventListener("scroll",n.update,ie)}),a&&c.addEventListener("resize",n.update,ie),function(){r&&l.forEach(function(t){t.removeEventListener("scroll",n.update,ie)}),a&&c.removeEventListener("resize",n.update,ie)}},data:{}},re={left:"right",right:"left",bottom:"top",top:"bottom"};function se(t){return t.replace(/left|right|bottom|top/g,function(t){return re[t]})}var ae={start:"end",end:"start"};function ce(t){return t.replace(/start|end/g,function(t){return ae[t]})}function le(t){var e=Tt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ue(t){return Ht(Vt(t)).left+le(t).scrollLeft}function fe(t){var e=Rt(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function de(t){return["html","body","#document"].indexOf(Lt(t))>=0?t.ownerDocument.body:St(t)&&fe(t)?t:de(Yt(t))}function pe(t,e){var n;void 0===e&&(e=[]);var i=de(t),o=i===(null==(n=t.ownerDocument)?void 0:n.body),r=Tt(i),s=o?[r].concat(r.visualViewport||[],fe(i)?i:[]):i,a=e.concat(s);return o?a:a.concat(pe(Yt(s)))}function he(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function ge(t,e,n){return e===dt?he(function(t,e){var n=Tt(t),i=Vt(t),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,c=0;if(o){r=o.width,s=o.height;var l=Ft();(l||!l&&"fixed"===e)&&(a=o.offsetLeft,c=o.offsetTop)}return{width:r,height:s,x:a+ue(t),y:c}}(t,n)):jt(e)?function(t,e){var n=Ht(t,!1,"fixed"===e);return n.top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n}(e,n):he(function(t){var e,n=Vt(t),i=le(t),o=null==(e=t.ownerDocument)?void 0:e.body,r=Mt(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=Mt(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+ue(t),c=-i.scrollTop;return"rtl"===Rt(o||n).direction&&(a+=Mt(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:c}}(Vt(t)))}function me(t,e,n,i){var o="clippingParents"===e?function(t){var e=pe(Yt(t)),n=["absolute","fixed"].indexOf(Rt(t).position)>=0&&St(t)?Kt(t):t;return jt(n)?e.filter(function(t){return jt(t)&&Wt(t,n)&&"body"!==Lt(t)}):[]}(t):[].concat(e),r=[].concat(o,[n]),s=r[0],a=r.reduce(function(e,n){var o=ge(t,n,i);return e.top=Mt(o.top,e.top),e.right=Nt(o.right,e.right),e.bottom=Nt(o.bottom,e.bottom),e.left=Mt(o.left,e.left),e},ge(t,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function ve(t){var e,n=t.reference,i=t.element,o=t.placement,r=o?Dt(o):null,s=o?Zt(o):null,a=n.x+n.width/2-i.width/2,c=n.y+n.height/2-i.height/2;switch(r){case it:e={x:a,y:n.y-i.height};break;case ot:e={x:a,y:n.y+n.height};break;case rt:e={x:n.x+n.width,y:c};break;case st:e={x:n.x-i.width,y:c};break;default:e={x:n.x,y:n.y}}var l=r?Qt(r):null;if(null!=l){var u="y"===l?"height":"width";switch(s){case lt:e[l]=e[l]-(n[u]/2-i[u]/2);break;case ut:e[l]=e[l]+(n[u]/2-i[u]/2)}}return e}function be(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=void 0===i?t.placement:i,r=n.strategy,s=void 0===r?t.strategy:r,a=n.boundary,c=void 0===a?ft:a,l=n.rootBoundary,u=void 0===l?dt:l,f=n.elementContext,d=void 0===f?pt:f,p=n.altBoundary,h=void 0!==p&&p,g=n.padding,m=void 0===g?0:g,v=$t("number"!=typeof m?m:Gt(m,ct)),b=d===pt?ht:pt,y=t.rects.popper,_=t.elements[h?b:d],w=me(jt(_)?_:_.contextElement||Vt(t.elements.popper),c,u,s),E=Ht(t.elements.reference),O=ve({reference:E,element:y,placement:o}),x=he(Object.assign({},y,O)),A=d===pt?x:E,C={top:w.top-A.top+v.top,bottom:A.bottom-w.bottom+v.bottom,left:w.left-A.left+v.left,right:A.right-w.right+v.right},L=t.modifiersData.offset;if(d===pt&&L){var T=L[o];Object.keys(C).forEach(function(t){var e=[rt,ot].indexOf(t)>=0?1:-1,n=[it,ot].indexOf(t)>=0?"y":"x";C[t]+=T[n]*e})}return C}function ye(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,c=n.allowedAutoPlacements,l=void 0===c?mt:c,u=Zt(i),f=u?a?gt:gt.filter(function(t){return Zt(t)===u}):ct,d=f.filter(function(t){return l.indexOf(t)>=0});0===d.length&&(d=f);var p=d.reduce(function(e,n){return e[n]=be(t,{placement:n,boundary:o,rootBoundary:r,padding:s})[Dt(n)],e},{});return Object.keys(p).sort(function(t,e){return p[t]-p[e]})}var _e={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name;if(!e.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,c=n.fallbackPlacements,l=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,g=n.allowedAutoPlacements,m=e.options.placement,v=Dt(m),b=c||(v===m||!h?[se(m)]:function(t){if(Dt(t)===at)return[];var e=se(t);return[ce(t),e,ce(e)]}(m)),y=[m].concat(b).reduce(function(t,n){return t.concat(Dt(n)===at?ye(e,{placement:n,boundary:u,rootBoundary:f,padding:l,flipVariations:h,allowedAutoPlacements:g}):n)},[]),_=e.rects.reference,w=e.rects.popper,E=new Map,O=!0,x=y[0],A=0;A=0,S=j?"width":"height",k=be(e,{placement:C,boundary:u,rootBoundary:f,altBoundary:d,padding:l}),P=j?T?rt:st:T?ot:it;_[S]>w[S]&&(P=se(P));var D=se(P),M=[];if(r&&M.push(k[L]<=0),a&&M.push(k[P]<=0,k[D]<=0),M.every(function(t){return t})){x=C,O=!1;break}E.set(C,M)}if(O)for(var N=function(t){var e=y.find(function(e){var n=E.get(e);if(n)return n.slice(0,t).every(function(t){return t})});if(e)return x=e,"break"},B=h?3:1;B>0;B--){if("break"===N(B))break}e.placement!==x&&(e.modifiersData[i]._skip=!0,e.placement=x,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function we(t,e,n){return void 0===n&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function Ee(t){return[it,rt,ot,st].some(function(e){return t[e]>=0})}var Oe={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,n=t.name,i=e.rects.reference,o=e.rects.popper,r=e.modifiersData.preventOverflow,s=be(e,{elementContext:"reference"}),a=be(e,{altBoundary:!0}),c=we(s,i),l=we(a,o,r),u=Ee(c),f=Ee(l);e.modifiersData[n]={referenceClippingOffsets:c,popperEscapeOffsets:l,isReferenceHidden:u,hasPopperEscaped:f},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var xe={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.offset,r=void 0===o?[0,0]:o,s=mt.reduce(function(t,n){return t[n]=function(t,e,n){var i=Dt(t),o=[st,it].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},e,{placement:t})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[st,rt].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,e.rects,r),t},{}),a=s[e.placement],c=a.x,l=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=c,e.modifiersData.popperOffsets.y+=l),e.modifiersData[i]=s}};var Ae={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,n=t.name;e.modifiersData[n]=ve({reference:e.rects.reference,element:e.rects.popper,placement:e.placement})},data:{}};var Ce={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,c=n.boundary,l=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,g=void 0===h?0:h,m=be(e,{boundary:c,rootBoundary:l,padding:f,altBoundary:u}),v=Dt(e.placement),b=Zt(e.placement),y=!b,_=Qt(v),w="x"===_?"y":"x",E=e.modifiersData.popperOffsets,O=e.rects.reference,x=e.rects.popper,A="function"==typeof g?g(Object.assign({},e.rects,{placement:e.placement})):g,C="number"==typeof A?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),L=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,T={x:0,y:0};if(E){if(r){var j,S="y"===_?it:st,k="y"===_?ot:rt,P="y"===_?"height":"width",D=E[_],M=D+m[S],N=D-m[k],B=p?-x[P]/2:0,I=b===lt?O[P]:x[P],F=b===lt?-x[P]:-O[P],H=e.elements.arrow,z=p&&H?zt(H):{width:0,height:0},W=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},R=W[S],q=W[k],V=Xt(0,O[P],z[P]),Y=y?O[P]/2-B-V-R-C.mainAxis:I-V-R-C.mainAxis,U=y?-O[P]/2+B+V+q+C.mainAxis:F+V+q+C.mainAxis,K=e.elements.arrow&&Kt(e.elements.arrow),Q=K?"y"===_?K.clientTop||0:K.clientLeft||0:0,X=null!=(j=null==L?void 0:L[_])?j:0,$=D+U-X,G=Xt(p?Nt(M,D+Y-X-Q):M,D,p?Mt(N,$):N);E[_]=G,T[_]=G-D}if(a){var J,Z="x"===_?it:st,tt="x"===_?ot:rt,et=E[w],nt="y"===w?"height":"width",at=et+m[Z],ct=et-m[tt],ut=-1!==[it,st].indexOf(v),ft=null!=(J=null==L?void 0:L[w])?J:0,dt=ut?at:et-O[nt]-x[nt]-ft+C.altAxis,pt=ut?et+O[nt]+x[nt]-ft-C.altAxis:ct,ht=p&&ut?function(t,e,n){var i=Xt(t,e,n);return i>n?n:i}(dt,et,pt):Xt(p?dt:at,et,p?pt:ct);E[w]=ht,T[w]=ht-et}e.modifiersData[i]=T}},requiresIfExists:["offset"]};function Le(t,e,n){void 0===n&&(n=!1);var i,o,r=St(e),s=St(e)&&function(t){var e=t.getBoundingClientRect(),n=Bt(e.width)/t.offsetWidth||1,i=Bt(e.height)/t.offsetHeight||1;return 1!==n||1!==i}(e),a=Vt(e),c=Ht(t,s,n),l={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Lt(e)||fe(a))&&(l=(i=e)!==Tt(i)&&St(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:le(i)),St(e)?((u=Ht(e,!0)).x+=e.clientLeft,u.y+=e.clientTop):a&&(u.x=ue(a))),{x:c.left+l.scrollLeft-u.x,y:c.top+l.scrollTop-u.y,width:c.width,height:c.height}}function Te(t){var e=new Map,n=new Set,i=[];function o(t){n.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach(function(t){if(!n.has(t)){var i=e.get(t);i&&o(i)}}),i.push(t)}return t.forEach(function(t){e.set(t.name,t)}),t.forEach(function(t){n.has(t.name)||o(t)}),i}var je={placement:"bottom",modifiers:[],strategy:"absolute"};function Se(){for(var t=arguments.length,e=new Array(t),n=0;n{const n=t.nodeName.toLowerCase();return e.includes(n)?!Ie.has(n)||Boolean(Fe.test(t.nodeValue)):e.filter(t=>t instanceof RegExp).some(t=>t.test(n))};const ze={allowList:Be,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},We={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Re={entry:"(string|element|function|null)",selector:"(string|element)"};class qe extends H{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return ze}static get DefaultType(){return We}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=N(N({},this._config.content),t),this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,n]of Object.entries(this._config.content))this._setContent(t,n,e);const e=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&e.classList.add(...n.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,n]of Object.entries(t))super._typeCheckConfig({selector:e,entry:n},Re)}_setContent(t,e,n){const i=R.findOne(n,t);i&&((e=this._resolvePossibleFunction(e))?r(e)?this._putElementInTemplate(s(e),i):this._config.html?i.innerHTML=this._maybeSanitize(e):i.textContent=e:i.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,n){if(!t.length)return t;if(n&&"function"==typeof n)return n(t);const i=(new window.DOMParser).parseFromString(t,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const t of o){const n=t.nodeName.toLowerCase();if(!Object.keys(e).includes(n)){t.remove();continue}const i=[].concat(...t.attributes),o=[].concat(e["*"]||[],e[n]||[]);for(const e of i)He(e,o)||t.removeAttribute(e.nodeName)}return i.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return p(t,[void 0,this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Ve=new Set(["sanitize","allowList","sanitizeFn"]),Ye="fade",Ue="show",Ke=".tooltip-inner",Qe=".".concat("modal"),Xe="hide.bs.modal",$e="hover",Ge="focus",Je="click",Ze={AUTO:"auto",TOP:"top",RIGHT:f()?"left":"right",BOTTOM:"bottom",LEFT:f()?"right":"left"},tn={allowList:Be,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"},en={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 nn extends z{constructor(t,e){if(void 0===Ne)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)");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 tn}static get DefaultType(){return en}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),S.off(this._element.closest(Qe),Xe,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=S.trigger(this._element,this.constructor.eventName("show")),e=(a(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),S.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(Ue),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))S.on(t,"mouseover",c);this._queueCallback(()=>{S.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1},this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(S.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(Ue),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))S.off(t,"mouseover",c);this._activeTrigger[Je]=!1,this._activeTrigger[Ge]=!1,this._activeTrigger[$e]=!1,this._isHovered=null;this._queueCallback(()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),S.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(Ye,Ue),e.classList.add("bs-".concat(this.constructor.NAME,"-auto"));const n=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",n),this._isAnimated()&&e.classList.add(Ye),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new qe(N(N({},this._config),{},{content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)})),this._templateFactory}_getContentForTemplate(){return{[Ke]: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(Ye)}_isShown(){return this.tip&&this.tip.classList.contains(Ue)}_createPopper(t){const e=p(this._config.placement,[this,t,this._element]),n=Ze[e.toUpperCase()];return Me(this._element,t,this._getPopperConfig(n))}_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 p(t,[this._element,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:".".concat(this.constructor.NAME,"-arrow")}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return N(N({},e),p(this._config.popperConfig,[void 0,e]))}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)S.on(this._element,this.constructor.eventName("click"),this._config.selector,t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger[Je]=!(e._isShown()&&e._activeTrigger[Je]),e.toggle()});else if("manual"!==e){const t=e===$e?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=e===$e?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");S.on(this._element,t,this._config.selector,t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?Ge:$e]=!0,e._enter()}),S.on(this._element,n,this._config.selector,t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?Ge:$e]=e._element.contains(t.relatedTarget),e._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},S.on(this._element.closest(Qe),Xe,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))Ve.has(t)&&delete e[t];return t=N(N({},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:s(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,n]of Object.entries(this._config))this.constructor.Default[e]!==n&&(t[e]=n);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=nn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError('No method named "'.concat(t,'"'));e[t]()}})}}var on;d(nn);const rn=document.getElementById("toc-bar"),sn=document.getElementById("toc-solo-trigger"),an=document.getElementsByClassName("toc-trigger"),cn=document.getElementById("toc-popup"),ln=document.getElementById("toc-popup-close"),un="overflow-hidden",fn="closing";class dn{static initBar(){new IntersectionObserver(t=>{t.forEach(t=>{rn.classList.toggle("invisible",t.isIntersecting)})},{rootMargin:"-".concat(P(dn,this,hn)._,"px 0px 0px 0px")}).observe(sn),pn._=P(dn,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach(t=>{t.onclick=()=>this.hidePopup()})}static refresh(){P(dn,this,pn)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return cn.open}static showPopup(){this.lockScroll(!0),cn.showModal();cn.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){cn.toggleAttribute(fn),cn.addEventListener("animationend",()=>{cn.toggleAttribute(fn),cn.close()},{once:!0}),this.lockScroll(!1)}static lockScroll(t){document.documentElement.classList.toggle(un,t),document.body.classList.toggle(un,t)}static clickBackdrop(t){if(cn.hasAttribute(fn))return;const e=t.target.getBoundingClientRect();(t.clientXe.right||t.clientYe.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...an].forEach(t=>{t.onclick=()=>this.showPopup()}),cn.onclick=t=>this.clickBackdrop(t),ln.onclick=()=>this.hidePopup(),cn.oncancel=t=>{t.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var pn={_:!0},hn={_:48};D(dn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:P(on=dn,on,hn)._});D(class{static refresh(){tocbot.refresh(this.options)}static init(){tocbot.init(this.options)}},"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32}),matchMedia("(min-width: 1200px)"),Theme.getThemeMapper("default","dark");const gn=document.getElementById("mode-toggle");const mn=document.getElementById("sidebar"),vn=document.getElementById("sidebar-trigger"),bn=document.getElementById("mask");class yn{static toggle(){_n._=P(yn,this,!P(yn,this,_n)._),document.body.toggleAttribute("sidebar-display",P(yn,this,_n)._),mn.classList.toggle("z-2",P(yn,this,_n)._),bn.classList.toggle("d-none",!P(yn,this,_n)._)}}var _n={_:!1};const wn=document.getElementById("sidebar-trigger"),En=document.getElementById("search-trigger"),On=document.getElementById("search-cancel"),xn=document.querySelectorAll("#main-wrapper>.container>.row"),An=document.getElementById("topbar-title"),Cn=document.getElementById("search"),Ln=document.getElementById("search-result-wrapper"),Tn=document.getElementById("search-results"),jn=document.getElementById("search-input"),Sn=document.getElementById("search-hints"),kn="d-block",Pn="d-none",Dn="input-focus",Mn="d-flex";class Nn{static on(){wn.classList.add(Pn),An.classList.add(Pn),En.classList.add(Pn),Cn.classList.add(Mn),On.classList.add(kn)}static off(){On.classList.remove(kn),Cn.classList.remove(Mn),wn.classList.remove(Pn),An.classList.remove(Pn),En.classList.remove(Pn)}}class Bn{static on(){this.resultVisible||(Ln.classList.remove(Pn),xn.forEach(t=>{t.classList.add(Pn)}),this.resultVisible=!0)}static off(){this.resultVisible&&(Tn.innerHTML="",Sn.classList.contains(Pn)&&Sn.classList.remove(Pn),Ln.classList.add(Pn),xn.forEach(t=>{t.classList.remove(Pn)}),jn.textContent="",this.resultVisible=!1)}}function In(){return On.classList.contains(kn)}D(Bn,"resultVisible",!1),vn.onclick=bn.onclick=()=>yn.toggle(),En.addEventListener("click",()=>{Nn.on(),Bn.on(),jn.focus()}),On.addEventListener("click",()=>{Nn.off(),Bn.off()}),jn.addEventListener("focus",()=>{Cn.classList.add(Dn)}),jn.addEventListener("focusout",()=>{Cn.classList.remove(Dn)}),jn.addEventListener("input",()=>{""===jn.value?In()?Sn.classList.remove(Pn):Bn.off():(Bn.on(),In()&&Sn.classList.add(Pn))}),gn&&gn.addEventListener("click",()=>{Theme.flip()}),function(){const t=document.getElementById("back-to-top");window.addEventListener("scroll",()=>{window.scrollY>50?t.classList.add("show"):t.classList.remove("show")}),t.addEventListener("click",()=>{window.scrollTo({top:0})})}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map(t=>new nn(t))}(); diff --git a/assets/js/dist/home.min.js b/assets/js/dist/home.min.js new file mode 100644 index 0000000..450802c --- /dev/null +++ b/assets/js/dist/home.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.4.1 | Ā© 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";const t=new Map;var e={set(e,n,i){t.has(e)||t.set(e,new Map);const o=t.get(e);o.has(n)||0===o.size?o.set(n,i):console.error("Bootstrap doesn't allow more than one instance per element. Bound instance: ".concat(Array.from(o.keys())[0],"."))},get:(e,n)=>t.has(e)&&t.get(e).get(n)||null,remove(e,n){if(!t.has(e))return;const i=t.get(e);i.delete(n),0===i.size&&t.delete(e)}};const n="transitionend",i=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,(t,e)=>"#".concat(CSS.escape(e)))),t),o=t=>null==t?"".concat(t):Object.prototype.toString.call(t).match(/\s([a-z]+)/i)[1].toLowerCase(),r=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),s=t=>r(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(i(t)):null,a=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?a(t.parentNode):null},c=()=>{},l=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,u=[],f=()=>"rtl"===document.documentElement.dir,d=t=>{var e;e=()=>{const e=l();if(e){const n=t.NAME,i=e.fn[n];e.fn[n]=t.jQueryInterface,e.fn[n].Constructor=t,e.fn[n].noConflict=()=>(e.fn[n]=i,t.jQueryInterface)}},"loading"===document.readyState?(u.length||document.addEventListener("DOMContentLoaded",()=>{for(const t of u)t()}),u.push(e)):e()},p=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;return"function"==typeof t?t.call(...e):n},h=function(t,e){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void p(t);const i=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:n}=window.getComputedStyle(t);const i=Number.parseFloat(e),o=Number.parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(n))):0})(e)+5;let o=!1;const r=i=>{let{target:s}=i;s===e&&(o=!0,e.removeEventListener(n,r),p(t))};e.addEventListener(n,r),setTimeout(()=>{o||e.dispatchEvent(new Event(n))},i)},m=/[^.]*(?=\..*)\.|.*/,g=/\..*/,v=/::\d+$/,b={};let y=1;const _={mouseenter:"mouseover",mouseleave:"mouseout"},w=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 E(t,e){return e&&"".concat(e,"::").concat(y++)||t.uidEvent||y++}function O(t){const e=E(t);return t.uidEvent=e,b[e]=b[e]||{},b[e]}function x(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(t).find(t=>t.callable===e&&t.delegationSelector===n)}function A(t,e,n){const i="string"==typeof e,o=i?n:e||n;let r=j(t);return w.has(r)||(r=t),[i,o,r]}function C(t,e,n,i,o){if("string"!=typeof e||!t)return;let[r,s,a]=A(e,n,i);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)};s=t(s)}const c=O(t),l=c[a]||(c[a]={}),u=x(l,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=E(s,e.replace(m,"")),d=r?function(t,e,n){return function i(o){const r=t.querySelectorAll(e);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return D(o,{delegateTarget:s}),i.oneOff&&S.off(t,o.type,e,n),n.apply(s,[o])}}(t,n,s):function(t,e){return function n(i){return D(i,{delegateTarget:t}),n.oneOff&&S.off(t,i.type,e),e.apply(t,[i])}}(t,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=f,l[f]=d,t.addEventListener(a,d,r)}function T(t,e,n,i,o){const r=x(e[n],i,o);r&&(t.removeEventListener(n,r,Boolean(o)),delete e[n][r.uidEvent])}function L(t,e,n,i){const o=e[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&T(t,e,n,s.callable,s.delegationSelector)}function j(t){return t=t.replace(g,""),_[t]||t}const S={on(t,e,n,i){C(t,e,n,i,!1)},one(t,e,n,i){C(t,e,n,i,!0)},off(t,e,n,i){if("string"!=typeof e||!t)return;const[o,r,s]=A(e,n,i),a=s!==e,c=O(t),l=c[s]||{},u=e.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(c))L(t,c,n,e.slice(1));for(const[n,i]of Object.entries(l)){const o=n.replace(v,"");a&&!e.includes(o)||T(t,c,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(l).length)return;T(t,c,s,r,o?n:null)}},trigger(t,e,n){if("string"!=typeof e||!t)return null;const i=l();let o=null,r=!0,s=!0,a=!1;e!==j(e)&&i&&(o=i.Event(e,n),i(t).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const c=D(new Event(e,{bubbles:r,cancelable:!0}),n);return a&&c.preventDefault(),s&&t.dispatchEvent(c),c.defaultPrevented&&o&&o.preventDefault(),c}};function D(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(e))try{t[n]=i}catch(e){Object.defineProperty(t,n,{configurable:!0,get:()=>i})}return t}function k(t,e,n){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:n;throw new TypeError("Private element is not present on this object")}function P(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,e);if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function M(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,i)}return n}function N(t){for(var e=1;e"-".concat(t.toLowerCase()))}const I={setDataAttribute(t,e,n){t.setAttribute("data-bs-".concat(F(e)),n)},removeDataAttribute(t,e){t.removeAttribute("data-bs-".concat(F(e)))},getDataAttributes(t){if(!t)return{};const e={},n=Object.keys(t.dataset).filter(t=>t.startsWith("bs")&&!t.startsWith("bsConfig"));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1),e[n]=B(t.dataset[i])}return e},getDataAttribute:(t,e)=>B(t.getAttribute("data-bs-".concat(F(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 n=r(e)?I.getDataAttribute(e,"config"):{};return N(N(N(N({},this.constructor.Default),"object"==typeof n?n:{}),r(e)?I.getDataAttributes(e):{}),"object"==typeof t?t:{})}_typeCheckConfig(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[n,i]of Object.entries(e)){const e=t[n],s=r(e)?"element":o(e);if(!new RegExp(i).test(s))throw new TypeError("".concat(this.constructor.NAME.toUpperCase(),': Option "').concat(n,'" provided type "').concat(s,'" but expected type "').concat(i,'".'))}}}class z extends H{constructor(t,n){super(),(t=s(t))&&(this._element=t,this._config=this._getConfig(n),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),S.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e){h(t,e,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(s(t),this.DATA_KEY)}static getOrCreateInstance(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.8"}static get DATA_KEY(){return"bs.".concat(this.NAME)}static get EVENT_KEY(){return".".concat(this.DATA_KEY)}static eventName(t){return"".concat(t).concat(this.EVENT_KEY)}}const q=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let n=t.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n="#".concat(n.split("#")[1])),e=n&&"#"!==n?n.trim():null}return e?e.split(",").map(t=>i(t)).join(","):null},W={find(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(e,t))},findOne(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(e,t)},children:(t,e)=>[].concat(...t.children).filter(t=>t.matches(e)),parents(t,e){const n=[];let i=t.parentNode.closest(e);for(;i;)n.push(i),i=i.parentNode.closest(e);return n},prev(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return[n];n=n.previousElementSibling}return[]},next(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return[n];n=n.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(t=>"".concat(t,':not([tabindex^="-"])')).join(",");return this.find(e,t).filter(t=>!(t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")))(t)&&(t=>{if(!r(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),n=t.closest("details:not([open])");if(!n)return e;if(n!==t){const e=t.closest("summary");if(e&&e.parentNode!==n)return!1;if(null===e)return!1}return e})(t))},getSelectorFromElement(t){const e=q(t);return e&&W.findOne(e)?e:null},getElementFromSelector(t){const e=q(t);return e?W.findOne(e):null},getMultipleElementsFromSelector(t){const e=q(t);return e?W.find(e):[]}},R=".".concat("bs.collapse"),V="show".concat(R),Y="shown".concat(R),U="hide".concat(R),K="hidden".concat(R),Q="click".concat(R).concat(".data-api"),X="show",$="collapse",G="collapsing",J=":scope .".concat($," .").concat($),Z='[data-bs-toggle="collapse"]',tt={parent:null,toggle:!0},et={parent:"(null|element)",toggle:"boolean"};class nt extends z{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=W.find(Z);for(const t of n){const e=W.getSelectorFromElement(t),n=W.find(e).filter(t=>t===this._element);null!==e&&n.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 tt}static get DefaultType(){return et}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=>nt.getOrCreateInstance(t,{toggle:!1}))),t.length&&t[0]._isTransitioning)return;if(S.trigger(this._element,V).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove($),this._element.classList.add(G),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=e[0].toUpperCase()+e.slice(1),i="scroll".concat(n);this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove(G),this._element.classList.add($,X),this._element.style[e]="",S.trigger(this._element,Y)},this._element,!0),this._element.style[e]="".concat(this._element[i],"px")}hide(){if(this._isTransitioning||!this._isShown())return;if(S.trigger(this._element,U).defaultPrevented)return;const t=this._getDimension();this._element.style[t]="".concat(this._element.getBoundingClientRect()[t],"px"),this._element.offsetHeight,this._element.classList.add(G),this._element.classList.remove($,X);for(const t of this._triggerArray){const e=W.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(G),this._element.classList.add($),S.trigger(this._element,K)},this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(X)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=s(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Z);for(const e of t){const t=W.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=W.find(J,this._config.parent);return W.find(t,this._config.parent).filter(t=>!e.includes(t))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const n of t)n.classList.toggle("collapsed",!e),n.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each(function(){const n=nt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===n[t])throw new TypeError('No method named "'.concat(t,'"'));n[t]()}})}}S.on(document,Q,Z,function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of W.getMultipleElementsFromSelector(this))nt.getOrCreateInstance(t,{toggle:!1}).toggle()}),d(nt),document.getElementsByClassName("collapse");var it="top",ot="bottom",rt="right",st="left",at="auto",ct=[it,ot,rt,st],lt="start",ut="end",ft="clippingParents",dt="viewport",pt="popper",ht="reference",mt=ct.reduce(function(t,e){return t.concat([e+"-"+lt,e+"-"+ut])},[]),gt=[].concat(ct,[at]).reduce(function(t,e){return t.concat([e,e+"-"+lt,e+"-"+ut])},[]),vt="beforeRead",bt="read",yt="afterRead",_t="beforeMain",wt="main",Et="afterMain",Ot="beforeWrite",xt="write",At="afterWrite",Ct=[vt,bt,yt,_t,wt,Et,Ot,xt,At];function Tt(t){return t?(t.nodeName||"").toLowerCase():null}function Lt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function jt(t){return t instanceof Lt(t).Element||t instanceof Element}function St(t){return t instanceof Lt(t).HTMLElement||t instanceof HTMLElement}function Dt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Lt(t).ShadowRoot||t instanceof ShadowRoot)}var kt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach(function(t){var n=e.styles[t]||{},i=e.attributes[t]||{},o=e.elements[t];St(o)&&Tt(o)&&(Object.assign(o.style,n),Object.keys(i).forEach(function(t){var e=i[t];!1===e?o.removeAttribute(t):o.setAttribute(t,!0===e?"":e)}))})},effect:function(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach(function(t){var i=e.elements[t],o=e.attributes[t]||{},r=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:n[t]).reduce(function(t,e){return t[e]="",t},{});St(i)&&Tt(i)&&(Object.assign(i.style,r),Object.keys(o).forEach(function(t){i.removeAttribute(t)}))})}},requires:["computeStyles"]};function Pt(t){return t.split("-")[0]}var Mt=Math.max,Nt=Math.min,Bt=Math.round;function Ft(){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 It(){return!/^((?!chrome|android).)*safari/i.test(Ft())}function Ht(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var i=t.getBoundingClientRect(),o=1,r=1;e&&St(t)&&(o=t.offsetWidth>0&&Bt(i.width)/t.offsetWidth||1,r=t.offsetHeight>0&&Bt(i.height)/t.offsetHeight||1);var s=(jt(t)?Lt(t):window).visualViewport,a=!It()&&n,c=(i.left+(a&&s?s.offsetLeft:0))/o,l=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:l,right:c+u,bottom:l+f,left:c,x:c,y:l}}function zt(t){var e=Ht(t),n=t.offsetWidth,i=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:i}}function qt(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&Dt(n)){var i=e;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Wt(t){return Lt(t).getComputedStyle(t)}function Rt(t){return["table","td","th"].indexOf(Tt(t))>=0}function Vt(t){return((jt(t)?t.ownerDocument:t.document)||window.document).documentElement}function Yt(t){return"html"===Tt(t)?t:t.assignedSlot||t.parentNode||(Dt(t)?t.host:null)||Vt(t)}function Ut(t){return St(t)&&"fixed"!==Wt(t).position?t.offsetParent:null}function Kt(t){for(var e=Lt(t),n=Ut(t);n&&Rt(n)&&"static"===Wt(n).position;)n=Ut(n);return n&&("html"===Tt(n)||"body"===Tt(n)&&"static"===Wt(n).position)?e:n||function(t){var e=/firefox/i.test(Ft());if(/Trident/i.test(Ft())&&St(t)&&"fixed"===Wt(t).position)return null;var n=Yt(t);for(Dt(n)&&(n=n.host);St(n)&&["html","body"].indexOf(Tt(n))<0;){var i=Wt(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||e&&"filter"===i.willChange||e&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(t)||e}function Qt(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Xt(t,e,n){return Mt(t,Nt(e,n))}function $t(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Gt(t,e){return e.reduce(function(e,n){return e[n]=t,e},{})}var Jt={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,n=t.state,i=t.name,o=t.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=Pt(n.placement),c=Qt(a),l=[st,rt].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(t,e){return $t("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Gt(t,ct))}(o.padding,n),f=zt(r),d="y"===c?it:st,p="y"===c?ot:rt,h=n.rects.reference[l]+n.rects.reference[c]-s[c]-n.rects.popper[l],m=s[c]-n.rects.reference[c],g=Kt(r),v=g?"y"===c?g.clientHeight||0:g.clientWidth||0:0,b=h/2-m/2,y=u[d],_=v-f[l]-u[p],w=v/2-f[l]/2+b,E=Xt(y,w,_),O=c;n.modifiersData[i]=((e={})[O]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,n=t.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=e.elements.popper.querySelector(i)))&&qt(e.elements.popper,i)&&(e.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Zt(t){return t.split("-")[1]}var te={top:"auto",right:"auto",bottom:"auto",left:"auto"};function ee(t){var e,n=t.popper,i=t.popperRect,o=t.placement,r=t.variation,s=t.offsets,a=t.position,c=t.gpuAcceleration,l=t.adaptive,u=t.roundOffsets,f=t.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,m=void 0===h?0:h,g="function"==typeof u?u({x:p,y:m}):{x:p,y:m};p=g.x,m=g.y;var v=s.hasOwnProperty("x"),b=s.hasOwnProperty("y"),y=st,_=it,w=window;if(l){var E=Kt(n),O="clientHeight",x="clientWidth";if(E===Lt(n)&&"static"!==Wt(E=Vt(n)).position&&"absolute"===a&&(O="scrollHeight",x="scrollWidth"),o===it||(o===st||o===rt)&&r===ut)_=ot,m-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[O])-i.height,m*=c?1:-1;if(o===st||(o===it||o===ot)&&r===ut)y=rt,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=c?1:-1}var A,C=Object.assign({position:a},l&&te),T=!0===u?function(t,e){var n=t.x,i=t.y,o=e.devicePixelRatio||1;return{x:Bt(n*o)/o||0,y:Bt(i*o)/o||0}}({x:p,y:m},Lt(n)):{x:p,y:m};return p=T.x,m=T.y,c?Object.assign({},C,((A={})[_]=b?"0":"",A[y]=v?"0":"",A.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+m+"px)":"translate3d("+p+"px, "+m+"px, 0)",A)):Object.assign({},C,((e={})[_]=b?m+"px":"",e[y]=v?p+"px":"",e.transform="",e))}var ne={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,n=t.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,c=void 0===a||a,l={placement:Pt(e.placement),variation:Zt(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,ee(Object.assign({},l,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:s,roundOffsets:c})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,ee(Object.assign({},l,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:c})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},ie={passive:!0};var oe={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,n=t.instance,i=t.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,c=Lt(e.elements.popper),l=[].concat(e.scrollParents.reference,e.scrollParents.popper);return r&&l.forEach(function(t){t.addEventListener("scroll",n.update,ie)}),a&&c.addEventListener("resize",n.update,ie),function(){r&&l.forEach(function(t){t.removeEventListener("scroll",n.update,ie)}),a&&c.removeEventListener("resize",n.update,ie)}},data:{}},re={left:"right",right:"left",bottom:"top",top:"bottom"};function se(t){return t.replace(/left|right|bottom|top/g,function(t){return re[t]})}var ae={start:"end",end:"start"};function ce(t){return t.replace(/start|end/g,function(t){return ae[t]})}function le(t){var e=Lt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ue(t){return Ht(Vt(t)).left+le(t).scrollLeft}function fe(t){var e=Wt(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function de(t){return["html","body","#document"].indexOf(Tt(t))>=0?t.ownerDocument.body:St(t)&&fe(t)?t:de(Yt(t))}function pe(t,e){var n;void 0===e&&(e=[]);var i=de(t),o=i===(null==(n=t.ownerDocument)?void 0:n.body),r=Lt(i),s=o?[r].concat(r.visualViewport||[],fe(i)?i:[]):i,a=e.concat(s);return o?a:a.concat(pe(Yt(s)))}function he(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function me(t,e,n){return e===dt?he(function(t,e){var n=Lt(t),i=Vt(t),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,c=0;if(o){r=o.width,s=o.height;var l=It();(l||!l&&"fixed"===e)&&(a=o.offsetLeft,c=o.offsetTop)}return{width:r,height:s,x:a+ue(t),y:c}}(t,n)):jt(e)?function(t,e){var n=Ht(t,!1,"fixed"===e);return n.top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n}(e,n):he(function(t){var e,n=Vt(t),i=le(t),o=null==(e=t.ownerDocument)?void 0:e.body,r=Mt(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=Mt(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+ue(t),c=-i.scrollTop;return"rtl"===Wt(o||n).direction&&(a+=Mt(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:c}}(Vt(t)))}function ge(t,e,n,i){var o="clippingParents"===e?function(t){var e=pe(Yt(t)),n=["absolute","fixed"].indexOf(Wt(t).position)>=0&&St(t)?Kt(t):t;return jt(n)?e.filter(function(t){return jt(t)&&qt(t,n)&&"body"!==Tt(t)}):[]}(t):[].concat(e),r=[].concat(o,[n]),s=r[0],a=r.reduce(function(e,n){var o=me(t,n,i);return e.top=Mt(o.top,e.top),e.right=Nt(o.right,e.right),e.bottom=Nt(o.bottom,e.bottom),e.left=Mt(o.left,e.left),e},me(t,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function ve(t){var e,n=t.reference,i=t.element,o=t.placement,r=o?Pt(o):null,s=o?Zt(o):null,a=n.x+n.width/2-i.width/2,c=n.y+n.height/2-i.height/2;switch(r){case it:e={x:a,y:n.y-i.height};break;case ot:e={x:a,y:n.y+n.height};break;case rt:e={x:n.x+n.width,y:c};break;case st:e={x:n.x-i.width,y:c};break;default:e={x:n.x,y:n.y}}var l=r?Qt(r):null;if(null!=l){var u="y"===l?"height":"width";switch(s){case lt:e[l]=e[l]-(n[u]/2-i[u]/2);break;case ut:e[l]=e[l]+(n[u]/2-i[u]/2)}}return e}function be(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=void 0===i?t.placement:i,r=n.strategy,s=void 0===r?t.strategy:r,a=n.boundary,c=void 0===a?ft:a,l=n.rootBoundary,u=void 0===l?dt:l,f=n.elementContext,d=void 0===f?pt:f,p=n.altBoundary,h=void 0!==p&&p,m=n.padding,g=void 0===m?0:m,v=$t("number"!=typeof g?g:Gt(g,ct)),b=d===pt?ht:pt,y=t.rects.popper,_=t.elements[h?b:d],w=ge(jt(_)?_:_.contextElement||Vt(t.elements.popper),c,u,s),E=Ht(t.elements.reference),O=ve({reference:E,element:y,placement:o}),x=he(Object.assign({},y,O)),A=d===pt?x:E,C={top:w.top-A.top+v.top,bottom:A.bottom-w.bottom+v.bottom,left:w.left-A.left+v.left,right:A.right-w.right+v.right},T=t.modifiersData.offset;if(d===pt&&T){var L=T[o];Object.keys(C).forEach(function(t){var e=[rt,ot].indexOf(t)>=0?1:-1,n=[it,ot].indexOf(t)>=0?"y":"x";C[t]+=L[n]*e})}return C}function ye(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,c=n.allowedAutoPlacements,l=void 0===c?gt:c,u=Zt(i),f=u?a?mt:mt.filter(function(t){return Zt(t)===u}):ct,d=f.filter(function(t){return l.indexOf(t)>=0});0===d.length&&(d=f);var p=d.reduce(function(e,n){return e[n]=be(t,{placement:n,boundary:o,rootBoundary:r,padding:s})[Pt(n)],e},{});return Object.keys(p).sort(function(t,e){return p[t]-p[e]})}var _e={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name;if(!e.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,c=n.fallbackPlacements,l=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,m=n.allowedAutoPlacements,g=e.options.placement,v=Pt(g),b=c||(v===g||!h?[se(g)]:function(t){if(Pt(t)===at)return[];var e=se(t);return[ce(t),e,ce(e)]}(g)),y=[g].concat(b).reduce(function(t,n){return t.concat(Pt(n)===at?ye(e,{placement:n,boundary:u,rootBoundary:f,padding:l,flipVariations:h,allowedAutoPlacements:m}):n)},[]),_=e.rects.reference,w=e.rects.popper,E=new Map,O=!0,x=y[0],A=0;A=0,S=j?"width":"height",D=be(e,{placement:C,boundary:u,rootBoundary:f,altBoundary:d,padding:l}),k=j?L?rt:st:L?ot:it;_[S]>w[S]&&(k=se(k));var P=se(k),M=[];if(r&&M.push(D[T]<=0),a&&M.push(D[k]<=0,D[P]<=0),M.every(function(t){return t})){x=C,O=!1;break}E.set(C,M)}if(O)for(var N=function(t){var e=y.find(function(e){var n=E.get(e);if(n)return n.slice(0,t).every(function(t){return t})});if(e)return x=e,"break"},B=h?3:1;B>0;B--){if("break"===N(B))break}e.placement!==x&&(e.modifiersData[i]._skip=!0,e.placement=x,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function we(t,e,n){return void 0===n&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function Ee(t){return[it,rt,ot,st].some(function(e){return t[e]>=0})}var Oe={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,n=t.name,i=e.rects.reference,o=e.rects.popper,r=e.modifiersData.preventOverflow,s=be(e,{elementContext:"reference"}),a=be(e,{altBoundary:!0}),c=we(s,i),l=we(a,o,r),u=Ee(c),f=Ee(l);e.modifiersData[n]={referenceClippingOffsets:c,popperEscapeOffsets:l,isReferenceHidden:u,hasPopperEscaped:f},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var xe={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.offset,r=void 0===o?[0,0]:o,s=gt.reduce(function(t,n){return t[n]=function(t,e,n){var i=Pt(t),o=[st,it].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},e,{placement:t})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[st,rt].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,e.rects,r),t},{}),a=s[e.placement],c=a.x,l=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=c,e.modifiersData.popperOffsets.y+=l),e.modifiersData[i]=s}};var Ae={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,n=t.name;e.modifiersData[n]=ve({reference:e.rects.reference,element:e.rects.popper,placement:e.placement})},data:{}};var Ce={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,c=n.boundary,l=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,m=void 0===h?0:h,g=be(e,{boundary:c,rootBoundary:l,padding:f,altBoundary:u}),v=Pt(e.placement),b=Zt(e.placement),y=!b,_=Qt(v),w="x"===_?"y":"x",E=e.modifiersData.popperOffsets,O=e.rects.reference,x=e.rects.popper,A="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,C="number"==typeof A?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),T=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,L={x:0,y:0};if(E){if(r){var j,S="y"===_?it:st,D="y"===_?ot:rt,k="y"===_?"height":"width",P=E[_],M=P+g[S],N=P-g[D],B=p?-x[k]/2:0,F=b===lt?O[k]:x[k],I=b===lt?-x[k]:-O[k],H=e.elements.arrow,z=p&&H?zt(H):{width:0,height:0},q=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},W=q[S],R=q[D],V=Xt(0,O[k],z[k]),Y=y?O[k]/2-B-V-W-C.mainAxis:F-V-W-C.mainAxis,U=y?-O[k]/2+B+V+R+C.mainAxis:I+V+R+C.mainAxis,K=e.elements.arrow&&Kt(e.elements.arrow),Q=K?"y"===_?K.clientTop||0:K.clientLeft||0:0,X=null!=(j=null==T?void 0:T[_])?j:0,$=P+U-X,G=Xt(p?Nt(M,P+Y-X-Q):M,P,p?Mt(N,$):N);E[_]=G,L[_]=G-P}if(a){var J,Z="x"===_?it:st,tt="x"===_?ot:rt,et=E[w],nt="y"===w?"height":"width",at=et+g[Z],ct=et-g[tt],ut=-1!==[it,st].indexOf(v),ft=null!=(J=null==T?void 0:T[w])?J:0,dt=ut?at:et-O[nt]-x[nt]-ft+C.altAxis,pt=ut?et+O[nt]+x[nt]-ft-C.altAxis:ct,ht=p&&ut?function(t,e,n){var i=Xt(t,e,n);return i>n?n:i}(dt,et,pt):Xt(p?dt:at,et,p?pt:ct);E[w]=ht,L[w]=ht-et}e.modifiersData[i]=L}},requiresIfExists:["offset"]};function Te(t,e,n){void 0===n&&(n=!1);var i,o,r=St(e),s=St(e)&&function(t){var e=t.getBoundingClientRect(),n=Bt(e.width)/t.offsetWidth||1,i=Bt(e.height)/t.offsetHeight||1;return 1!==n||1!==i}(e),a=Vt(e),c=Ht(t,s,n),l={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Tt(e)||fe(a))&&(l=(i=e)!==Lt(i)&&St(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:le(i)),St(e)?((u=Ht(e,!0)).x+=e.clientLeft,u.y+=e.clientTop):a&&(u.x=ue(a))),{x:c.left+l.scrollLeft-u.x,y:c.top+l.scrollTop-u.y,width:c.width,height:c.height}}function Le(t){var e=new Map,n=new Set,i=[];function o(t){n.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach(function(t){if(!n.has(t)){var i=e.get(t);i&&o(i)}}),i.push(t)}return t.forEach(function(t){e.set(t.name,t)}),t.forEach(function(t){n.has(t.name)||o(t)}),i}var je={placement:"bottom",modifiers:[],strategy:"absolute"};function Se(){for(var t=arguments.length,e=new Array(t),n=0;n{const n=t.nodeName.toLowerCase();return e.includes(n)?!Fe.has(n)||Boolean(Ie.test(t.nodeValue)):e.filter(t=>t instanceof RegExp).some(t=>t.test(n))};const ze={allowList:Be,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},qe={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},We={entry:"(string|element|function|null)",selector:"(string|element)"};class Re extends H{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return ze}static get DefaultType(){return qe}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=N(N({},this._config.content),t),this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,n]of Object.entries(this._config.content))this._setContent(t,n,e);const e=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&e.classList.add(...n.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,n]of Object.entries(t))super._typeCheckConfig({selector:e,entry:n},We)}_setContent(t,e,n){const i=W.findOne(n,t);i&&((e=this._resolvePossibleFunction(e))?r(e)?this._putElementInTemplate(s(e),i):this._config.html?i.innerHTML=this._maybeSanitize(e):i.textContent=e:i.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,n){if(!t.length)return t;if(n&&"function"==typeof n)return n(t);const i=(new window.DOMParser).parseFromString(t,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const t of o){const n=t.nodeName.toLowerCase();if(!Object.keys(e).includes(n)){t.remove();continue}const i=[].concat(...t.attributes),o=[].concat(e["*"]||[],e[n]||[]);for(const e of i)He(e,o)||t.removeAttribute(e.nodeName)}return i.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return p(t,[void 0,this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Ve=new Set(["sanitize","allowList","sanitizeFn"]),Ye="fade",Ue="show",Ke=".tooltip-inner",Qe=".".concat("modal"),Xe="hide.bs.modal",$e="hover",Ge="focus",Je="click",Ze={AUTO:"auto",TOP:"top",RIGHT:f()?"left":"right",BOTTOM:"bottom",LEFT:f()?"right":"left"},tn={allowList:Be,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"},en={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 nn extends z{constructor(t,e){if(void 0===Ne)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)");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 tn}static get DefaultType(){return en}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),S.off(this._element.closest(Qe),Xe,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=S.trigger(this._element,this.constructor.eventName("show")),e=(a(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),S.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(Ue),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))S.on(t,"mouseover",c);this._queueCallback(()=>{S.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1},this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(S.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(Ue),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))S.off(t,"mouseover",c);this._activeTrigger[Je]=!1,this._activeTrigger[Ge]=!1,this._activeTrigger[$e]=!1,this._isHovered=null;this._queueCallback(()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),S.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(Ye,Ue),e.classList.add("bs-".concat(this.constructor.NAME,"-auto"));const n=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",n),this._isAnimated()&&e.classList.add(Ye),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Re(N(N({},this._config),{},{content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)})),this._templateFactory}_getContentForTemplate(){return{[Ke]: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(Ye)}_isShown(){return this.tip&&this.tip.classList.contains(Ue)}_createPopper(t){const e=p(this._config.placement,[this,t,this._element]),n=Ze[e.toUpperCase()];return Me(this._element,t,this._getPopperConfig(n))}_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 p(t,[this._element,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:".".concat(this.constructor.NAME,"-arrow")}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return N(N({},e),p(this._config.popperConfig,[void 0,e]))}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)S.on(this._element,this.constructor.eventName("click"),this._config.selector,t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger[Je]=!(e._isShown()&&e._activeTrigger[Je]),e.toggle()});else if("manual"!==e){const t=e===$e?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=e===$e?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");S.on(this._element,t,this._config.selector,t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?Ge:$e]=!0,e._enter()}),S.on(this._element,n,this._config.selector,t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?Ge:$e]=e._element.contains(t.relatedTarget),e._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},S.on(this._element.closest(Qe),Xe,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=I.getDataAttributes(this._element);for(const t of Object.keys(e))Ve.has(t)&&delete e[t];return t=N(N({},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:s(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,n]of Object.entries(this._config))this.constructor.Default[e]!==n&&(t[e]=n);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=nn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError('No method named "'.concat(t,'"'));e[t]()}})}}d(nn);const on="data-src",rn="data-lqip",sn="shimmer",an="blur";function cn(t){this.parentElement.classList.remove(t)}function ln(){this.complete&&(this.hasAttribute(rn)?cn.call(this,an):cn.call(this,sn))}function un(){const t=this.getAttribute(on);this.setAttribute("src",encodeURI(t)),this.removeAttribute(on)}class fn{static get attrTimestamp(){return"data-ts"}static get attrDateFormat(){return"data-df"}static get locale(){return document.documentElement.getAttribute("lang").substring(0,2)}static getTimestamp(t){return Number(t.getAttribute(this.attrTimestamp))}static getDateFormat(t){return t.getAttribute(this.attrDateFormat)}}var dn;const pn=document.getElementById("toc-bar"),hn=document.getElementById("toc-solo-trigger"),mn=document.getElementsByClassName("toc-trigger"),gn=document.getElementById("toc-popup"),vn=document.getElementById("toc-popup-close"),bn="overflow-hidden",yn="closing";class _n{static initBar(){new IntersectionObserver(t=>{t.forEach(t=>{pn.classList.toggle("invisible",t.isIntersecting)})},{rootMargin:"-".concat(k(_n,this,En)._,"px 0px 0px 0px")}).observe(hn),wn._=k(_n,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach(t=>{t.onclick=()=>this.hidePopup()})}static refresh(){k(_n,this,wn)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return gn.open}static showPopup(){this.lockScroll(!0),gn.showModal();gn.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){gn.toggleAttribute(yn),gn.addEventListener("animationend",()=>{gn.toggleAttribute(yn),gn.close()},{once:!0}),this.lockScroll(!1)}static lockScroll(t){document.documentElement.classList.toggle(bn,t),document.body.classList.toggle(bn,t)}static clickBackdrop(t){if(gn.hasAttribute(yn))return;const e=t.target.getBoundingClientRect();(t.clientXe.right||t.clientYe.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...mn].forEach(t=>{t.onclick=()=>this.showPopup()}),gn.onclick=t=>this.clickBackdrop(t),vn.onclick=()=>this.hidePopup(),gn.oncancel=t=>{t.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var wn={_:!0},En={_:48};P(_n,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:k(dn=_n,dn,En)._});P(class{static refresh(){tocbot.refresh(this.options)}static init(){tocbot.init(this.options)}},"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32}),matchMedia("(min-width: 1200px)"),Theme.getThemeMapper("default","dark");const On=document.getElementById("mode-toggle");const xn=document.getElementById("sidebar"),An=document.getElementById("sidebar-trigger"),Cn=document.getElementById("mask");class Tn{static toggle(){Ln._=k(Tn,this,!k(Tn,this,Ln)._),document.body.toggleAttribute("sidebar-display",k(Tn,this,Ln)._),xn.classList.toggle("z-2",k(Tn,this,Ln)._),Cn.classList.toggle("d-none",!k(Tn,this,Ln)._)}}var Ln={_:!1};const jn=document.getElementById("sidebar-trigger"),Sn=document.getElementById("search-trigger"),Dn=document.getElementById("search-cancel"),kn=document.querySelectorAll("#main-wrapper>.container>.row"),Pn=document.getElementById("topbar-title"),Mn=document.getElementById("search"),Nn=document.getElementById("search-result-wrapper"),Bn=document.getElementById("search-results"),Fn=document.getElementById("search-input"),In=document.getElementById("search-hints"),Hn="d-block",zn="d-none",qn="input-focus",Wn="d-flex";class Rn{static on(){jn.classList.add(zn),Pn.classList.add(zn),Sn.classList.add(zn),Mn.classList.add(Wn),Dn.classList.add(Hn)}static off(){Dn.classList.remove(Hn),Mn.classList.remove(Wn),jn.classList.remove(zn),Pn.classList.remove(zn),Sn.classList.remove(zn)}}class Vn{static on(){this.resultVisible||(Nn.classList.remove(zn),kn.forEach(t=>{t.classList.add(zn)}),this.resultVisible=!0)}static off(){this.resultVisible&&(Bn.innerHTML="",In.classList.contains(zn)&&In.classList.remove(zn),Nn.classList.add(zn),kn.forEach(t=>{t.classList.remove(zn)}),Fn.textContent="",this.resultVisible=!1)}}function Yn(){return Dn.classList.contains(Hn)}P(Vn,"resultVisible",!1),function(){const t=document.querySelectorAll("article img");if(0===t.length)return;t.forEach(t=>{t.addEventListener("load",ln)}),document.querySelectorAll('article img[loading="lazy"]').forEach(t=>{t.complete&&cn.call(t,sn)});const e=document.querySelectorAll("article img[".concat(rn,'="true"]'));e.length&&e.forEach(t=>{un.call(t)})}(),dayjs.locale(fn.locale),dayjs.extend(window.dayjs_plugin_localizedFormat),document.querySelectorAll("[".concat(fn.attrTimestamp,"]")).forEach(t=>{const e=dayjs.unix(fn.getTimestamp(t)),n=e.format(fn.getDateFormat(t));if(t.textContent=n,t.removeAttribute(fn.attrTimestamp),t.removeAttribute(fn.attrDateFormat),t.hasAttribute("data-bs-toggle")&&"tooltip"===t.getAttribute("data-bs-toggle")){const n=e.format("llll");t.setAttribute("data-bs-title",n)}}),An.onclick=Cn.onclick=()=>Tn.toggle(),Sn.addEventListener("click",()=>{Rn.on(),Vn.on(),Fn.focus()}),Dn.addEventListener("click",()=>{Rn.off(),Vn.off()}),Fn.addEventListener("focus",()=>{Mn.classList.add(qn)}),Fn.addEventListener("focusout",()=>{Mn.classList.remove(qn)}),Fn.addEventListener("input",()=>{""===Fn.value?Yn()?In.classList.remove(zn):Vn.off():(Vn.on(),Yn()&&In.classList.add(zn))}),On&&On.addEventListener("click",()=>{Theme.flip()}),function(){const t=document.getElementById("back-to-top");window.addEventListener("scroll",()=>{window.scrollY>50?t.classList.add("show"):t.classList.remove("show")}),t.addEventListener("click",()=>{window.scrollTo({top:0})})}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map(t=>new nn(t))}(); diff --git a/assets/js/dist/misc.min.js b/assets/js/dist/misc.min.js new file mode 100644 index 0000000..e6b8108 --- /dev/null +++ b/assets/js/dist/misc.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.4.1 | Ā© 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";const t=new Map;var e={set(e,n,i){t.has(e)||t.set(e,new Map);const o=t.get(e);o.has(n)||0===o.size?o.set(n,i):console.error("Bootstrap doesn't allow more than one instance per element. Bound instance: ".concat(Array.from(o.keys())[0],"."))},get:(e,n)=>t.has(e)&&t.get(e).get(n)||null,remove(e,n){if(!t.has(e))return;const i=t.get(e);i.delete(n),0===i.size&&t.delete(e)}};const n="transitionend",i=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,(t,e)=>"#".concat(CSS.escape(e)))),t),o=t=>null==t?"".concat(t):Object.prototype.toString.call(t).match(/\s([a-z]+)/i)[1].toLowerCase(),r=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),s=t=>r(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(i(t)):null,a=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?a(t.parentNode):null},c=()=>{},l=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,u=[],f=()=>"rtl"===document.documentElement.dir,d=t=>{var e;e=()=>{const e=l();if(e){const n=t.NAME,i=e.fn[n];e.fn[n]=t.jQueryInterface,e.fn[n].Constructor=t,e.fn[n].noConflict=()=>(e.fn[n]=i,t.jQueryInterface)}},"loading"===document.readyState?(u.length||document.addEventListener("DOMContentLoaded",()=>{for(const t of u)t()}),u.push(e)):e()},p=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;return"function"==typeof t?t.call(...e):n},h=function(t,e){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void p(t);const i=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:n}=window.getComputedStyle(t);const i=Number.parseFloat(e),o=Number.parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(n))):0})(e)+5;let o=!1;const r=i=>{let{target:s}=i;s===e&&(o=!0,e.removeEventListener(n,r),p(t))};e.addEventListener(n,r),setTimeout(()=>{o||e.dispatchEvent(new Event(n))},i)},m=/[^.]*(?=\..*)\.|.*/,g=/\..*/,v=/::\d+$/,b={};let y=1;const _={mouseenter:"mouseover",mouseleave:"mouseout"},w=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 E(t,e){return e&&"".concat(e,"::").concat(y++)||t.uidEvent||y++}function O(t){const e=E(t);return t.uidEvent=e,b[e]=b[e]||{},b[e]}function x(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(t).find(t=>t.callable===e&&t.delegationSelector===n)}function A(t,e,n){const i="string"==typeof e,o=i?n:e||n;let r=j(t);return w.has(r)||(r=t),[i,o,r]}function C(t,e,n,i,o){if("string"!=typeof e||!t)return;let[r,s,a]=A(e,n,i);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)};s=t(s)}const c=O(t),l=c[a]||(c[a]={}),u=x(l,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=E(s,e.replace(m,"")),d=r?function(t,e,n){return function i(o){const r=t.querySelectorAll(e);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return D(o,{delegateTarget:s}),i.oneOff&&S.off(t,o.type,e,n),n.apply(s,[o])}}(t,n,s):function(t,e){return function n(i){return D(i,{delegateTarget:t}),n.oneOff&&S.off(t,i.type,e),e.apply(t,[i])}}(t,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=f,l[f]=d,t.addEventListener(a,d,r)}function T(t,e,n,i,o){const r=x(e[n],i,o);r&&(t.removeEventListener(n,r,Boolean(o)),delete e[n][r.uidEvent])}function L(t,e,n,i){const o=e[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&T(t,e,n,s.callable,s.delegationSelector)}function j(t){return t=t.replace(g,""),_[t]||t}const S={on(t,e,n,i){C(t,e,n,i,!1)},one(t,e,n,i){C(t,e,n,i,!0)},off(t,e,n,i){if("string"!=typeof e||!t)return;const[o,r,s]=A(e,n,i),a=s!==e,c=O(t),l=c[s]||{},u=e.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(c))L(t,c,n,e.slice(1));for(const[n,i]of Object.entries(l)){const o=n.replace(v,"");a&&!e.includes(o)||T(t,c,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(l).length)return;T(t,c,s,r,o?n:null)}},trigger(t,e,n){if("string"!=typeof e||!t)return null;const i=l();let o=null,r=!0,s=!0,a=!1;e!==j(e)&&i&&(o=i.Event(e,n),i(t).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const c=D(new Event(e,{bubbles:r,cancelable:!0}),n);return a&&c.preventDefault(),s&&t.dispatchEvent(c),c.defaultPrevented&&o&&o.preventDefault(),c}};function D(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(e))try{t[n]=i}catch(e){Object.defineProperty(t,n,{configurable:!0,get:()=>i})}return t}function k(t,e,n){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:n;throw new TypeError("Private element is not present on this object")}function P(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,e);if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function M(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,i)}return n}function N(t){for(var e=1;e"-".concat(t.toLowerCase()))}const I={setDataAttribute(t,e,n){t.setAttribute("data-bs-".concat(F(e)),n)},removeDataAttribute(t,e){t.removeAttribute("data-bs-".concat(F(e)))},getDataAttributes(t){if(!t)return{};const e={},n=Object.keys(t.dataset).filter(t=>t.startsWith("bs")&&!t.startsWith("bsConfig"));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1),e[n]=B(t.dataset[i])}return e},getDataAttribute:(t,e)=>B(t.getAttribute("data-bs-".concat(F(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 n=r(e)?I.getDataAttribute(e,"config"):{};return N(N(N(N({},this.constructor.Default),"object"==typeof n?n:{}),r(e)?I.getDataAttributes(e):{}),"object"==typeof t?t:{})}_typeCheckConfig(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[n,i]of Object.entries(e)){const e=t[n],s=r(e)?"element":o(e);if(!new RegExp(i).test(s))throw new TypeError("".concat(this.constructor.NAME.toUpperCase(),': Option "').concat(n,'" provided type "').concat(s,'" but expected type "').concat(i,'".'))}}}class z extends H{constructor(t,n){super(),(t=s(t))&&(this._element=t,this._config=this._getConfig(n),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),S.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e){h(t,e,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(s(t),this.DATA_KEY)}static getOrCreateInstance(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.8"}static get DATA_KEY(){return"bs.".concat(this.NAME)}static get EVENT_KEY(){return".".concat(this.DATA_KEY)}static eventName(t){return"".concat(t).concat(this.EVENT_KEY)}}const W=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let n=t.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n="#".concat(n.split("#")[1])),e=n&&"#"!==n?n.trim():null}return e?e.split(",").map(t=>i(t)).join(","):null},R={find(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(e,t))},findOne(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(e,t)},children:(t,e)=>[].concat(...t.children).filter(t=>t.matches(e)),parents(t,e){const n=[];let i=t.parentNode.closest(e);for(;i;)n.push(i),i=i.parentNode.closest(e);return n},prev(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return[n];n=n.previousElementSibling}return[]},next(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return[n];n=n.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(t=>"".concat(t,':not([tabindex^="-"])')).join(",");return this.find(e,t).filter(t=>!(t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")))(t)&&(t=>{if(!r(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),n=t.closest("details:not([open])");if(!n)return e;if(n!==t){const e=t.closest("summary");if(e&&e.parentNode!==n)return!1;if(null===e)return!1}return e})(t))},getSelectorFromElement(t){const e=W(t);return e&&R.findOne(e)?e:null},getElementFromSelector(t){const e=W(t);return e?R.findOne(e):null},getMultipleElementsFromSelector(t){const e=W(t);return e?R.find(e):[]}},q=".".concat("bs.collapse"),V="show".concat(q),Y="shown".concat(q),U="hide".concat(q),K="hidden".concat(q),Q="click".concat(q).concat(".data-api"),X="show",$="collapse",G="collapsing",J=":scope .".concat($," .").concat($),Z='[data-bs-toggle="collapse"]',tt={parent:null,toggle:!0},et={parent:"(null|element)",toggle:"boolean"};class nt extends z{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=R.find(Z);for(const t of n){const e=R.getSelectorFromElement(t),n=R.find(e).filter(t=>t===this._element);null!==e&&n.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 tt}static get DefaultType(){return et}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=>nt.getOrCreateInstance(t,{toggle:!1}))),t.length&&t[0]._isTransitioning)return;if(S.trigger(this._element,V).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove($),this._element.classList.add(G),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=e[0].toUpperCase()+e.slice(1),i="scroll".concat(n);this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove(G),this._element.classList.add($,X),this._element.style[e]="",S.trigger(this._element,Y)},this._element,!0),this._element.style[e]="".concat(this._element[i],"px")}hide(){if(this._isTransitioning||!this._isShown())return;if(S.trigger(this._element,U).defaultPrevented)return;const t=this._getDimension();this._element.style[t]="".concat(this._element.getBoundingClientRect()[t],"px"),this._element.offsetHeight,this._element.classList.add(G),this._element.classList.remove($,X);for(const t of this._triggerArray){const e=R.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(G),this._element.classList.add($),S.trigger(this._element,K)},this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(X)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=s(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Z);for(const e of t){const t=R.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=R.find(J,this._config.parent);return R.find(t,this._config.parent).filter(t=>!e.includes(t))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const n of t)n.classList.toggle("collapsed",!e),n.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each(function(){const n=nt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===n[t])throw new TypeError('No method named "'.concat(t,'"'));n[t]()}})}}S.on(document,Q,Z,function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of R.getMultipleElementsFromSelector(this))nt.getOrCreateInstance(t,{toggle:!1}).toggle()}),d(nt),document.getElementsByClassName("collapse");var it="top",ot="bottom",rt="right",st="left",at="auto",ct=[it,ot,rt,st],lt="start",ut="end",ft="clippingParents",dt="viewport",pt="popper",ht="reference",mt=ct.reduce(function(t,e){return t.concat([e+"-"+lt,e+"-"+ut])},[]),gt=[].concat(ct,[at]).reduce(function(t,e){return t.concat([e,e+"-"+lt,e+"-"+ut])},[]),vt="beforeRead",bt="read",yt="afterRead",_t="beforeMain",wt="main",Et="afterMain",Ot="beforeWrite",xt="write",At="afterWrite",Ct=[vt,bt,yt,_t,wt,Et,Ot,xt,At];function Tt(t){return t?(t.nodeName||"").toLowerCase():null}function Lt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function jt(t){return t instanceof Lt(t).Element||t instanceof Element}function St(t){return t instanceof Lt(t).HTMLElement||t instanceof HTMLElement}function Dt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Lt(t).ShadowRoot||t instanceof ShadowRoot)}var kt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach(function(t){var n=e.styles[t]||{},i=e.attributes[t]||{},o=e.elements[t];St(o)&&Tt(o)&&(Object.assign(o.style,n),Object.keys(i).forEach(function(t){var e=i[t];!1===e?o.removeAttribute(t):o.setAttribute(t,!0===e?"":e)}))})},effect:function(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach(function(t){var i=e.elements[t],o=e.attributes[t]||{},r=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:n[t]).reduce(function(t,e){return t[e]="",t},{});St(i)&&Tt(i)&&(Object.assign(i.style,r),Object.keys(o).forEach(function(t){i.removeAttribute(t)}))})}},requires:["computeStyles"]};function Pt(t){return t.split("-")[0]}var Mt=Math.max,Nt=Math.min,Bt=Math.round;function Ft(){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 It(){return!/^((?!chrome|android).)*safari/i.test(Ft())}function Ht(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var i=t.getBoundingClientRect(),o=1,r=1;e&&St(t)&&(o=t.offsetWidth>0&&Bt(i.width)/t.offsetWidth||1,r=t.offsetHeight>0&&Bt(i.height)/t.offsetHeight||1);var s=(jt(t)?Lt(t):window).visualViewport,a=!It()&&n,c=(i.left+(a&&s?s.offsetLeft:0))/o,l=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:l,right:c+u,bottom:l+f,left:c,x:c,y:l}}function zt(t){var e=Ht(t),n=t.offsetWidth,i=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:i}}function Wt(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&Dt(n)){var i=e;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Rt(t){return Lt(t).getComputedStyle(t)}function qt(t){return["table","td","th"].indexOf(Tt(t))>=0}function Vt(t){return((jt(t)?t.ownerDocument:t.document)||window.document).documentElement}function Yt(t){return"html"===Tt(t)?t:t.assignedSlot||t.parentNode||(Dt(t)?t.host:null)||Vt(t)}function Ut(t){return St(t)&&"fixed"!==Rt(t).position?t.offsetParent:null}function Kt(t){for(var e=Lt(t),n=Ut(t);n&&qt(n)&&"static"===Rt(n).position;)n=Ut(n);return n&&("html"===Tt(n)||"body"===Tt(n)&&"static"===Rt(n).position)?e:n||function(t){var e=/firefox/i.test(Ft());if(/Trident/i.test(Ft())&&St(t)&&"fixed"===Rt(t).position)return null;var n=Yt(t);for(Dt(n)&&(n=n.host);St(n)&&["html","body"].indexOf(Tt(n))<0;){var i=Rt(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||e&&"filter"===i.willChange||e&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(t)||e}function Qt(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Xt(t,e,n){return Mt(t,Nt(e,n))}function $t(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Gt(t,e){return e.reduce(function(e,n){return e[n]=t,e},{})}var Jt={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,n=t.state,i=t.name,o=t.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=Pt(n.placement),c=Qt(a),l=[st,rt].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(t,e){return $t("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Gt(t,ct))}(o.padding,n),f=zt(r),d="y"===c?it:st,p="y"===c?ot:rt,h=n.rects.reference[l]+n.rects.reference[c]-s[c]-n.rects.popper[l],m=s[c]-n.rects.reference[c],g=Kt(r),v=g?"y"===c?g.clientHeight||0:g.clientWidth||0:0,b=h/2-m/2,y=u[d],_=v-f[l]-u[p],w=v/2-f[l]/2+b,E=Xt(y,w,_),O=c;n.modifiersData[i]=((e={})[O]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,n=t.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=e.elements.popper.querySelector(i)))&&Wt(e.elements.popper,i)&&(e.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Zt(t){return t.split("-")[1]}var te={top:"auto",right:"auto",bottom:"auto",left:"auto"};function ee(t){var e,n=t.popper,i=t.popperRect,o=t.placement,r=t.variation,s=t.offsets,a=t.position,c=t.gpuAcceleration,l=t.adaptive,u=t.roundOffsets,f=t.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,m=void 0===h?0:h,g="function"==typeof u?u({x:p,y:m}):{x:p,y:m};p=g.x,m=g.y;var v=s.hasOwnProperty("x"),b=s.hasOwnProperty("y"),y=st,_=it,w=window;if(l){var E=Kt(n),O="clientHeight",x="clientWidth";if(E===Lt(n)&&"static"!==Rt(E=Vt(n)).position&&"absolute"===a&&(O="scrollHeight",x="scrollWidth"),o===it||(o===st||o===rt)&&r===ut)_=ot,m-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[O])-i.height,m*=c?1:-1;if(o===st||(o===it||o===ot)&&r===ut)y=rt,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=c?1:-1}var A,C=Object.assign({position:a},l&&te),T=!0===u?function(t,e){var n=t.x,i=t.y,o=e.devicePixelRatio||1;return{x:Bt(n*o)/o||0,y:Bt(i*o)/o||0}}({x:p,y:m},Lt(n)):{x:p,y:m};return p=T.x,m=T.y,c?Object.assign({},C,((A={})[_]=b?"0":"",A[y]=v?"0":"",A.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+m+"px)":"translate3d("+p+"px, "+m+"px, 0)",A)):Object.assign({},C,((e={})[_]=b?m+"px":"",e[y]=v?p+"px":"",e.transform="",e))}var ne={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,n=t.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,c=void 0===a||a,l={placement:Pt(e.placement),variation:Zt(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,ee(Object.assign({},l,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:s,roundOffsets:c})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,ee(Object.assign({},l,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:c})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},ie={passive:!0};var oe={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,n=t.instance,i=t.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,c=Lt(e.elements.popper),l=[].concat(e.scrollParents.reference,e.scrollParents.popper);return r&&l.forEach(function(t){t.addEventListener("scroll",n.update,ie)}),a&&c.addEventListener("resize",n.update,ie),function(){r&&l.forEach(function(t){t.removeEventListener("scroll",n.update,ie)}),a&&c.removeEventListener("resize",n.update,ie)}},data:{}},re={left:"right",right:"left",bottom:"top",top:"bottom"};function se(t){return t.replace(/left|right|bottom|top/g,function(t){return re[t]})}var ae={start:"end",end:"start"};function ce(t){return t.replace(/start|end/g,function(t){return ae[t]})}function le(t){var e=Lt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ue(t){return Ht(Vt(t)).left+le(t).scrollLeft}function fe(t){var e=Rt(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function de(t){return["html","body","#document"].indexOf(Tt(t))>=0?t.ownerDocument.body:St(t)&&fe(t)?t:de(Yt(t))}function pe(t,e){var n;void 0===e&&(e=[]);var i=de(t),o=i===(null==(n=t.ownerDocument)?void 0:n.body),r=Lt(i),s=o?[r].concat(r.visualViewport||[],fe(i)?i:[]):i,a=e.concat(s);return o?a:a.concat(pe(Yt(s)))}function he(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function me(t,e,n){return e===dt?he(function(t,e){var n=Lt(t),i=Vt(t),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,c=0;if(o){r=o.width,s=o.height;var l=It();(l||!l&&"fixed"===e)&&(a=o.offsetLeft,c=o.offsetTop)}return{width:r,height:s,x:a+ue(t),y:c}}(t,n)):jt(e)?function(t,e){var n=Ht(t,!1,"fixed"===e);return n.top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n}(e,n):he(function(t){var e,n=Vt(t),i=le(t),o=null==(e=t.ownerDocument)?void 0:e.body,r=Mt(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=Mt(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+ue(t),c=-i.scrollTop;return"rtl"===Rt(o||n).direction&&(a+=Mt(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:c}}(Vt(t)))}function ge(t,e,n,i){var o="clippingParents"===e?function(t){var e=pe(Yt(t)),n=["absolute","fixed"].indexOf(Rt(t).position)>=0&&St(t)?Kt(t):t;return jt(n)?e.filter(function(t){return jt(t)&&Wt(t,n)&&"body"!==Tt(t)}):[]}(t):[].concat(e),r=[].concat(o,[n]),s=r[0],a=r.reduce(function(e,n){var o=me(t,n,i);return e.top=Mt(o.top,e.top),e.right=Nt(o.right,e.right),e.bottom=Nt(o.bottom,e.bottom),e.left=Mt(o.left,e.left),e},me(t,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function ve(t){var e,n=t.reference,i=t.element,o=t.placement,r=o?Pt(o):null,s=o?Zt(o):null,a=n.x+n.width/2-i.width/2,c=n.y+n.height/2-i.height/2;switch(r){case it:e={x:a,y:n.y-i.height};break;case ot:e={x:a,y:n.y+n.height};break;case rt:e={x:n.x+n.width,y:c};break;case st:e={x:n.x-i.width,y:c};break;default:e={x:n.x,y:n.y}}var l=r?Qt(r):null;if(null!=l){var u="y"===l?"height":"width";switch(s){case lt:e[l]=e[l]-(n[u]/2-i[u]/2);break;case ut:e[l]=e[l]+(n[u]/2-i[u]/2)}}return e}function be(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=void 0===i?t.placement:i,r=n.strategy,s=void 0===r?t.strategy:r,a=n.boundary,c=void 0===a?ft:a,l=n.rootBoundary,u=void 0===l?dt:l,f=n.elementContext,d=void 0===f?pt:f,p=n.altBoundary,h=void 0!==p&&p,m=n.padding,g=void 0===m?0:m,v=$t("number"!=typeof g?g:Gt(g,ct)),b=d===pt?ht:pt,y=t.rects.popper,_=t.elements[h?b:d],w=ge(jt(_)?_:_.contextElement||Vt(t.elements.popper),c,u,s),E=Ht(t.elements.reference),O=ve({reference:E,element:y,placement:o}),x=he(Object.assign({},y,O)),A=d===pt?x:E,C={top:w.top-A.top+v.top,bottom:A.bottom-w.bottom+v.bottom,left:w.left-A.left+v.left,right:A.right-w.right+v.right},T=t.modifiersData.offset;if(d===pt&&T){var L=T[o];Object.keys(C).forEach(function(t){var e=[rt,ot].indexOf(t)>=0?1:-1,n=[it,ot].indexOf(t)>=0?"y":"x";C[t]+=L[n]*e})}return C}function ye(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,c=n.allowedAutoPlacements,l=void 0===c?gt:c,u=Zt(i),f=u?a?mt:mt.filter(function(t){return Zt(t)===u}):ct,d=f.filter(function(t){return l.indexOf(t)>=0});0===d.length&&(d=f);var p=d.reduce(function(e,n){return e[n]=be(t,{placement:n,boundary:o,rootBoundary:r,padding:s})[Pt(n)],e},{});return Object.keys(p).sort(function(t,e){return p[t]-p[e]})}var _e={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name;if(!e.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,c=n.fallbackPlacements,l=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,m=n.allowedAutoPlacements,g=e.options.placement,v=Pt(g),b=c||(v===g||!h?[se(g)]:function(t){if(Pt(t)===at)return[];var e=se(t);return[ce(t),e,ce(e)]}(g)),y=[g].concat(b).reduce(function(t,n){return t.concat(Pt(n)===at?ye(e,{placement:n,boundary:u,rootBoundary:f,padding:l,flipVariations:h,allowedAutoPlacements:m}):n)},[]),_=e.rects.reference,w=e.rects.popper,E=new Map,O=!0,x=y[0],A=0;A=0,S=j?"width":"height",D=be(e,{placement:C,boundary:u,rootBoundary:f,altBoundary:d,padding:l}),k=j?L?rt:st:L?ot:it;_[S]>w[S]&&(k=se(k));var P=se(k),M=[];if(r&&M.push(D[T]<=0),a&&M.push(D[k]<=0,D[P]<=0),M.every(function(t){return t})){x=C,O=!1;break}E.set(C,M)}if(O)for(var N=function(t){var e=y.find(function(e){var n=E.get(e);if(n)return n.slice(0,t).every(function(t){return t})});if(e)return x=e,"break"},B=h?3:1;B>0;B--){if("break"===N(B))break}e.placement!==x&&(e.modifiersData[i]._skip=!0,e.placement=x,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function we(t,e,n){return void 0===n&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function Ee(t){return[it,rt,ot,st].some(function(e){return t[e]>=0})}var Oe={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,n=t.name,i=e.rects.reference,o=e.rects.popper,r=e.modifiersData.preventOverflow,s=be(e,{elementContext:"reference"}),a=be(e,{altBoundary:!0}),c=we(s,i),l=we(a,o,r),u=Ee(c),f=Ee(l);e.modifiersData[n]={referenceClippingOffsets:c,popperEscapeOffsets:l,isReferenceHidden:u,hasPopperEscaped:f},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var xe={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.offset,r=void 0===o?[0,0]:o,s=gt.reduce(function(t,n){return t[n]=function(t,e,n){var i=Pt(t),o=[st,it].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},e,{placement:t})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[st,rt].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,e.rects,r),t},{}),a=s[e.placement],c=a.x,l=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=c,e.modifiersData.popperOffsets.y+=l),e.modifiersData[i]=s}};var Ae={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,n=t.name;e.modifiersData[n]=ve({reference:e.rects.reference,element:e.rects.popper,placement:e.placement})},data:{}};var Ce={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,c=n.boundary,l=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,m=void 0===h?0:h,g=be(e,{boundary:c,rootBoundary:l,padding:f,altBoundary:u}),v=Pt(e.placement),b=Zt(e.placement),y=!b,_=Qt(v),w="x"===_?"y":"x",E=e.modifiersData.popperOffsets,O=e.rects.reference,x=e.rects.popper,A="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,C="number"==typeof A?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),T=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,L={x:0,y:0};if(E){if(r){var j,S="y"===_?it:st,D="y"===_?ot:rt,k="y"===_?"height":"width",P=E[_],M=P+g[S],N=P-g[D],B=p?-x[k]/2:0,F=b===lt?O[k]:x[k],I=b===lt?-x[k]:-O[k],H=e.elements.arrow,z=p&&H?zt(H):{width:0,height:0},W=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},R=W[S],q=W[D],V=Xt(0,O[k],z[k]),Y=y?O[k]/2-B-V-R-C.mainAxis:F-V-R-C.mainAxis,U=y?-O[k]/2+B+V+q+C.mainAxis:I+V+q+C.mainAxis,K=e.elements.arrow&&Kt(e.elements.arrow),Q=K?"y"===_?K.clientTop||0:K.clientLeft||0:0,X=null!=(j=null==T?void 0:T[_])?j:0,$=P+U-X,G=Xt(p?Nt(M,P+Y-X-Q):M,P,p?Mt(N,$):N);E[_]=G,L[_]=G-P}if(a){var J,Z="x"===_?it:st,tt="x"===_?ot:rt,et=E[w],nt="y"===w?"height":"width",at=et+g[Z],ct=et-g[tt],ut=-1!==[it,st].indexOf(v),ft=null!=(J=null==T?void 0:T[w])?J:0,dt=ut?at:et-O[nt]-x[nt]-ft+C.altAxis,pt=ut?et+O[nt]+x[nt]-ft-C.altAxis:ct,ht=p&&ut?function(t,e,n){var i=Xt(t,e,n);return i>n?n:i}(dt,et,pt):Xt(p?dt:at,et,p?pt:ct);E[w]=ht,L[w]=ht-et}e.modifiersData[i]=L}},requiresIfExists:["offset"]};function Te(t,e,n){void 0===n&&(n=!1);var i,o,r=St(e),s=St(e)&&function(t){var e=t.getBoundingClientRect(),n=Bt(e.width)/t.offsetWidth||1,i=Bt(e.height)/t.offsetHeight||1;return 1!==n||1!==i}(e),a=Vt(e),c=Ht(t,s,n),l={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Tt(e)||fe(a))&&(l=(i=e)!==Lt(i)&&St(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:le(i)),St(e)?((u=Ht(e,!0)).x+=e.clientLeft,u.y+=e.clientTop):a&&(u.x=ue(a))),{x:c.left+l.scrollLeft-u.x,y:c.top+l.scrollTop-u.y,width:c.width,height:c.height}}function Le(t){var e=new Map,n=new Set,i=[];function o(t){n.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach(function(t){if(!n.has(t)){var i=e.get(t);i&&o(i)}}),i.push(t)}return t.forEach(function(t){e.set(t.name,t)}),t.forEach(function(t){n.has(t.name)||o(t)}),i}var je={placement:"bottom",modifiers:[],strategy:"absolute"};function Se(){for(var t=arguments.length,e=new Array(t),n=0;n{const n=t.nodeName.toLowerCase();return e.includes(n)?!Fe.has(n)||Boolean(Ie.test(t.nodeValue)):e.filter(t=>t instanceof RegExp).some(t=>t.test(n))};const ze={allowList:Be,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},We={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Re={entry:"(string|element|function|null)",selector:"(string|element)"};class qe extends H{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return ze}static get DefaultType(){return We}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=N(N({},this._config.content),t),this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,n]of Object.entries(this._config.content))this._setContent(t,n,e);const e=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&e.classList.add(...n.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,n]of Object.entries(t))super._typeCheckConfig({selector:e,entry:n},Re)}_setContent(t,e,n){const i=R.findOne(n,t);i&&((e=this._resolvePossibleFunction(e))?r(e)?this._putElementInTemplate(s(e),i):this._config.html?i.innerHTML=this._maybeSanitize(e):i.textContent=e:i.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,n){if(!t.length)return t;if(n&&"function"==typeof n)return n(t);const i=(new window.DOMParser).parseFromString(t,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const t of o){const n=t.nodeName.toLowerCase();if(!Object.keys(e).includes(n)){t.remove();continue}const i=[].concat(...t.attributes),o=[].concat(e["*"]||[],e[n]||[]);for(const e of i)He(e,o)||t.removeAttribute(e.nodeName)}return i.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return p(t,[void 0,this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Ve=new Set(["sanitize","allowList","sanitizeFn"]),Ye="fade",Ue="show",Ke=".tooltip-inner",Qe=".".concat("modal"),Xe="hide.bs.modal",$e="hover",Ge="focus",Je="click",Ze={AUTO:"auto",TOP:"top",RIGHT:f()?"left":"right",BOTTOM:"bottom",LEFT:f()?"right":"left"},tn={allowList:Be,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"},en={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 nn extends z{constructor(t,e){if(void 0===Ne)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)");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 tn}static get DefaultType(){return en}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),S.off(this._element.closest(Qe),Xe,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=S.trigger(this._element,this.constructor.eventName("show")),e=(a(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),S.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(Ue),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))S.on(t,"mouseover",c);this._queueCallback(()=>{S.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1},this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(S.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(Ue),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))S.off(t,"mouseover",c);this._activeTrigger[Je]=!1,this._activeTrigger[Ge]=!1,this._activeTrigger[$e]=!1,this._isHovered=null;this._queueCallback(()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),S.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(Ye,Ue),e.classList.add("bs-".concat(this.constructor.NAME,"-auto"));const n=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",n),this._isAnimated()&&e.classList.add(Ye),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new qe(N(N({},this._config),{},{content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)})),this._templateFactory}_getContentForTemplate(){return{[Ke]: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(Ye)}_isShown(){return this.tip&&this.tip.classList.contains(Ue)}_createPopper(t){const e=p(this._config.placement,[this,t,this._element]),n=Ze[e.toUpperCase()];return Me(this._element,t,this._getPopperConfig(n))}_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 p(t,[this._element,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:".".concat(this.constructor.NAME,"-arrow")}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return N(N({},e),p(this._config.popperConfig,[void 0,e]))}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)S.on(this._element,this.constructor.eventName("click"),this._config.selector,t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger[Je]=!(e._isShown()&&e._activeTrigger[Je]),e.toggle()});else if("manual"!==e){const t=e===$e?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=e===$e?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");S.on(this._element,t,this._config.selector,t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?Ge:$e]=!0,e._enter()}),S.on(this._element,n,this._config.selector,t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?Ge:$e]=e._element.contains(t.relatedTarget),e._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},S.on(this._element.closest(Qe),Xe,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=I.getDataAttributes(this._element);for(const t of Object.keys(e))Ve.has(t)&&delete e[t];return t=N(N({},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:s(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,n]of Object.entries(this._config))this.constructor.Default[e]!==n&&(t[e]=n);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=nn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError('No method named "'.concat(t,'"'));e[t]()}})}}d(nn);class on{static get attrTimestamp(){return"data-ts"}static get attrDateFormat(){return"data-df"}static get locale(){return document.documentElement.getAttribute("lang").substring(0,2)}static getTimestamp(t){return Number(t.getAttribute(this.attrTimestamp))}static getDateFormat(t){return t.getAttribute(this.attrDateFormat)}}var rn;const sn=document.getElementById("toc-bar"),an=document.getElementById("toc-solo-trigger"),cn=document.getElementsByClassName("toc-trigger"),ln=document.getElementById("toc-popup"),un=document.getElementById("toc-popup-close"),fn="overflow-hidden",dn="closing";class pn{static initBar(){new IntersectionObserver(t=>{t.forEach(t=>{sn.classList.toggle("invisible",t.isIntersecting)})},{rootMargin:"-".concat(k(pn,this,mn)._,"px 0px 0px 0px")}).observe(an),hn._=k(pn,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach(t=>{t.onclick=()=>this.hidePopup()})}static refresh(){k(pn,this,hn)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return ln.open}static showPopup(){this.lockScroll(!0),ln.showModal();ln.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){ln.toggleAttribute(dn),ln.addEventListener("animationend",()=>{ln.toggleAttribute(dn),ln.close()},{once:!0}),this.lockScroll(!1)}static lockScroll(t){document.documentElement.classList.toggle(fn,t),document.body.classList.toggle(fn,t)}static clickBackdrop(t){if(ln.hasAttribute(dn))return;const e=t.target.getBoundingClientRect();(t.clientXe.right||t.clientYe.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...cn].forEach(t=>{t.onclick=()=>this.showPopup()}),ln.onclick=t=>this.clickBackdrop(t),un.onclick=()=>this.hidePopup(),ln.oncancel=t=>{t.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var hn={_:!0},mn={_:48};P(pn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:k(rn=pn,rn,mn)._});P(class{static refresh(){tocbot.refresh(this.options)}static init(){tocbot.init(this.options)}},"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32}),matchMedia("(min-width: 1200px)"),Theme.getThemeMapper("default","dark");const gn=document.getElementById("mode-toggle");const vn=document.getElementById("sidebar"),bn=document.getElementById("sidebar-trigger"),yn=document.getElementById("mask");class _n{static toggle(){wn._=k(_n,this,!k(_n,this,wn)._),document.body.toggleAttribute("sidebar-display",k(_n,this,wn)._),vn.classList.toggle("z-2",k(_n,this,wn)._),yn.classList.toggle("d-none",!k(_n,this,wn)._)}}var wn={_:!1};const En=document.getElementById("sidebar-trigger"),On=document.getElementById("search-trigger"),xn=document.getElementById("search-cancel"),An=document.querySelectorAll("#main-wrapper>.container>.row"),Cn=document.getElementById("topbar-title"),Tn=document.getElementById("search"),Ln=document.getElementById("search-result-wrapper"),jn=document.getElementById("search-results"),Sn=document.getElementById("search-input"),Dn=document.getElementById("search-hints"),kn="d-block",Pn="d-none",Mn="input-focus",Nn="d-flex";class Bn{static on(){En.classList.add(Pn),Cn.classList.add(Pn),On.classList.add(Pn),Tn.classList.add(Nn),xn.classList.add(kn)}static off(){xn.classList.remove(kn),Tn.classList.remove(Nn),En.classList.remove(Pn),Cn.classList.remove(Pn),On.classList.remove(Pn)}}class Fn{static on(){this.resultVisible||(Ln.classList.remove(Pn),An.forEach(t=>{t.classList.add(Pn)}),this.resultVisible=!0)}static off(){this.resultVisible&&(jn.innerHTML="",Dn.classList.contains(Pn)&&Dn.classList.remove(Pn),Ln.classList.add(Pn),An.forEach(t=>{t.classList.remove(Pn)}),Sn.textContent="",this.resultVisible=!1)}}function In(){return xn.classList.contains(kn)}P(Fn,"resultVisible",!1),bn.onclick=yn.onclick=()=>_n.toggle(),On.addEventListener("click",()=>{Bn.on(),Fn.on(),Sn.focus()}),xn.addEventListener("click",()=>{Bn.off(),Fn.off()}),Sn.addEventListener("focus",()=>{Tn.classList.add(Mn)}),Sn.addEventListener("focusout",()=>{Tn.classList.remove(Mn)}),Sn.addEventListener("input",()=>{""===Sn.value?In()?Dn.classList.remove(Pn):Fn.off():(Fn.on(),In()&&Dn.classList.add(Pn))}),dayjs.locale(on.locale),dayjs.extend(window.dayjs_plugin_localizedFormat),document.querySelectorAll("[".concat(on.attrTimestamp,"]")).forEach(t=>{const e=dayjs.unix(on.getTimestamp(t)),n=e.format(on.getDateFormat(t));if(t.textContent=n,t.removeAttribute(on.attrTimestamp),t.removeAttribute(on.attrDateFormat),t.hasAttribute("data-bs-toggle")&&"tooltip"===t.getAttribute("data-bs-toggle")){const n=e.format("llll");t.setAttribute("data-bs-title",n)}}),gn&&gn.addEventListener("click",()=>{Theme.flip()}),function(){const t=document.getElementById("back-to-top");window.addEventListener("scroll",()=>{window.scrollY>50?t.classList.add("show"):t.classList.remove("show")}),t.addEventListener("click",()=>{window.scrollTo({top:0})})}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map(t=>new nn(t))}(); diff --git a/assets/js/dist/page.min.js b/assets/js/dist/page.min.js new file mode 100644 index 0000000..9cdfae2 --- /dev/null +++ b/assets/js/dist/page.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.4.1 | Ā© 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";const t=new Map;var e={set(e,n,i){t.has(e)||t.set(e,new Map);const o=t.get(e);o.has(n)||0===o.size?o.set(n,i):console.error("Bootstrap doesn't allow more than one instance per element. Bound instance: ".concat(Array.from(o.keys())[0],"."))},get:(e,n)=>t.has(e)&&t.get(e).get(n)||null,remove(e,n){if(!t.has(e))return;const i=t.get(e);i.delete(n),0===i.size&&t.delete(e)}};const n="transitionend",i=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,(t,e)=>"#".concat(CSS.escape(e)))),t),o=t=>null==t?"".concat(t):Object.prototype.toString.call(t).match(/\s([a-z]+)/i)[1].toLowerCase(),r=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),s=t=>r(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(i(t)):null,a=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?a(t.parentNode):null},c=()=>{},l=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,u=[],f=()=>"rtl"===document.documentElement.dir,d=t=>{var e;e=()=>{const e=l();if(e){const n=t.NAME,i=e.fn[n];e.fn[n]=t.jQueryInterface,e.fn[n].Constructor=t,e.fn[n].noConflict=()=>(e.fn[n]=i,t.jQueryInterface)}},"loading"===document.readyState?(u.length||document.addEventListener("DOMContentLoaded",()=>{for(const t of u)t()}),u.push(e)):e()},p=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;return"function"==typeof t?t.call(...e):n},h=function(t,e){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void p(t);const i=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:n}=window.getComputedStyle(t);const i=Number.parseFloat(e),o=Number.parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(n))):0})(e)+5;let o=!1;const r=i=>{let{target:s}=i;s===e&&(o=!0,e.removeEventListener(n,r),p(t))};e.addEventListener(n,r),setTimeout(()=>{o||e.dispatchEvent(new Event(n))},i)},m=/[^.]*(?=\..*)\.|.*/,g=/\..*/,b=/::\d+$/,v={};let y=1;const _={mouseenter:"mouseover",mouseleave:"mouseout"},w=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 E(t,e){return e&&"".concat(e,"::").concat(y++)||t.uidEvent||y++}function O(t){const e=E(t);return t.uidEvent=e,v[e]=v[e]||{},v[e]}function A(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(t).find(t=>t.callable===e&&t.delegationSelector===n)}function x(t,e,n){const i="string"==typeof e,o=i?n:e||n;let r=S(t);return w.has(r)||(r=t),[i,o,r]}function C(t,e,n,i,o){if("string"!=typeof e||!t)return;let[r,s,a]=x(e,n,i);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)};s=t(s)}const c=O(t),l=c[a]||(c[a]={}),u=A(l,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=E(s,e.replace(m,"")),d=r?function(t,e,n){return function i(o){const r=t.querySelectorAll(e);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return k(o,{delegateTarget:s}),i.oneOff&&j.off(t,o.type,e,n),n.apply(s,[o])}}(t,n,s):function(t,e){return function n(i){return k(i,{delegateTarget:t}),n.oneOff&&j.off(t,i.type,e),e.apply(t,[i])}}(t,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=f,l[f]=d,t.addEventListener(a,d,r)}function T(t,e,n,i,o){const r=A(e[n],i,o);r&&(t.removeEventListener(n,r,Boolean(o)),delete e[n][r.uidEvent])}function L(t,e,n,i){const o=e[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&T(t,e,n,s.callable,s.delegationSelector)}function S(t){return t=t.replace(g,""),_[t]||t}const j={on(t,e,n,i){C(t,e,n,i,!1)},one(t,e,n,i){C(t,e,n,i,!0)},off(t,e,n,i){if("string"!=typeof e||!t)return;const[o,r,s]=x(e,n,i),a=s!==e,c=O(t),l=c[s]||{},u=e.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(c))L(t,c,n,e.slice(1));for(const[n,i]of Object.entries(l)){const o=n.replace(b,"");a&&!e.includes(o)||T(t,c,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(l).length)return;T(t,c,s,r,o?n:null)}},trigger(t,e,n){if("string"!=typeof e||!t)return null;const i=l();let o=null,r=!0,s=!0,a=!1;e!==S(e)&&i&&(o=i.Event(e,n),i(t).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const c=k(new Event(e,{bubbles:r,cancelable:!0}),n);return a&&c.preventDefault(),s&&t.dispatchEvent(c),c.defaultPrevented&&o&&o.preventDefault(),c}};function k(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(e))try{t[n]=i}catch(e){Object.defineProperty(t,n,{configurable:!0,get:()=>i})}return t}function D(t,e,n){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:n;throw new TypeError("Private element is not present on this object")}function P(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,e);if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function N(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,i)}return n}function M(t){for(var e=1;e"-".concat(t.toLowerCase()))}const F={setDataAttribute(t,e,n){t.setAttribute("data-bs-".concat(I(e)),n)},removeDataAttribute(t,e){t.removeAttribute("data-bs-".concat(I(e)))},getDataAttributes(t){if(!t)return{};const e={},n=Object.keys(t.dataset).filter(t=>t.startsWith("bs")&&!t.startsWith("bsConfig"));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1),e[n]=B(t.dataset[i])}return e},getDataAttribute:(t,e)=>B(t.getAttribute("data-bs-".concat(I(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 n=r(e)?F.getDataAttribute(e,"config"):{};return M(M(M(M({},this.constructor.Default),"object"==typeof n?n:{}),r(e)?F.getDataAttributes(e):{}),"object"==typeof t?t:{})}_typeCheckConfig(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[n,i]of Object.entries(e)){const e=t[n],s=r(e)?"element":o(e);if(!new RegExp(i).test(s))throw new TypeError("".concat(this.constructor.NAME.toUpperCase(),': Option "').concat(n,'" provided type "').concat(s,'" but expected type "').concat(i,'".'))}}}class q extends H{constructor(t,n){super(),(t=s(t))&&(this._element=t,this._config=this._getConfig(n),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.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){h(t,e,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(s(t),this.DATA_KEY)}static getOrCreateInstance(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.8"}static get DATA_KEY(){return"bs.".concat(this.NAME)}static get EVENT_KEY(){return".".concat(this.DATA_KEY)}static eventName(t){return"".concat(t).concat(this.EVENT_KEY)}}const z=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let n=t.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n="#".concat(n.split("#")[1])),e=n&&"#"!==n?n.trim():null}return e?e.split(",").map(t=>i(t)).join(","):null},W={find(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(e,t))},findOne(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(e,t)},children:(t,e)=>[].concat(...t.children).filter(t=>t.matches(e)),parents(t,e){const n=[];let i=t.parentNode.closest(e);for(;i;)n.push(i),i=i.parentNode.closest(e);return n},prev(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return[n];n=n.previousElementSibling}return[]},next(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return[n];n=n.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(t=>"".concat(t,':not([tabindex^="-"])')).join(",");return this.find(e,t).filter(t=>!(t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")))(t)&&(t=>{if(!r(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),n=t.closest("details:not([open])");if(!n)return e;if(n!==t){const e=t.closest("summary");if(e&&e.parentNode!==n)return!1;if(null===e)return!1}return e})(t))},getSelectorFromElement(t){const e=z(t);return e&&W.findOne(e)?e:null},getElementFromSelector(t){const e=z(t);return e?W.findOne(e):null},getMultipleElementsFromSelector(t){const e=z(t);return e?W.find(e):[]}},R=".".concat("bs.collapse"),V="show".concat(R),Y="shown".concat(R),U="hide".concat(R),K="hidden".concat(R),Q="click".concat(R).concat(".data-api"),G="show",X="collapse",$="collapsing",J=":scope .".concat(X," .").concat(X),Z='[data-bs-toggle="collapse"]',tt={parent:null,toggle:!0},et={parent:"(null|element)",toggle:"boolean"};class nt extends q{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=W.find(Z);for(const t of n){const e=W.getSelectorFromElement(t),n=W.find(e).filter(t=>t===this._element);null!==e&&n.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 tt}static get DefaultType(){return et}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=>nt.getOrCreateInstance(t,{toggle:!1}))),t.length&&t[0]._isTransitioning)return;if(j.trigger(this._element,V).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(X),this._element.classList.add($),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=e[0].toUpperCase()+e.slice(1),i="scroll".concat(n);this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove($),this._element.classList.add(X,G),this._element.style[e]="",j.trigger(this._element,Y)},this._element,!0),this._element.style[e]="".concat(this._element[i],"px")}hide(){if(this._isTransitioning||!this._isShown())return;if(j.trigger(this._element,U).defaultPrevented)return;const t=this._getDimension();this._element.style[t]="".concat(this._element.getBoundingClientRect()[t],"px"),this._element.offsetHeight,this._element.classList.add($),this._element.classList.remove(X,G);for(const t of this._triggerArray){const e=W.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($),this._element.classList.add(X),j.trigger(this._element,K)},this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(G)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=s(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Z);for(const e of t){const t=W.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=W.find(J,this._config.parent);return W.find(t,this._config.parent).filter(t=>!e.includes(t))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const n of t)n.classList.toggle("collapsed",!e),n.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each(function(){const n=nt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===n[t])throw new TypeError('No method named "'.concat(t,'"'));n[t]()}})}}j.on(document,Q,Z,function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of W.getMultipleElementsFromSelector(this))nt.getOrCreateInstance(t,{toggle:!1}).toggle()}),d(nt),document.getElementsByClassName("collapse");var it="top",ot="bottom",rt="right",st="left",at="auto",ct=[it,ot,rt,st],lt="start",ut="end",ft="clippingParents",dt="viewport",pt="popper",ht="reference",mt=ct.reduce(function(t,e){return t.concat([e+"-"+lt,e+"-"+ut])},[]),gt=[].concat(ct,[at]).reduce(function(t,e){return t.concat([e,e+"-"+lt,e+"-"+ut])},[]),bt="beforeRead",vt="read",yt="afterRead",_t="beforeMain",wt="main",Et="afterMain",Ot="beforeWrite",At="write",xt="afterWrite",Ct=[bt,vt,yt,_t,wt,Et,Ot,At,xt];function Tt(t){return t?(t.nodeName||"").toLowerCase():null}function Lt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function St(t){return t instanceof Lt(t).Element||t instanceof Element}function jt(t){return t instanceof Lt(t).HTMLElement||t instanceof HTMLElement}function kt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Lt(t).ShadowRoot||t instanceof ShadowRoot)}var Dt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach(function(t){var n=e.styles[t]||{},i=e.attributes[t]||{},o=e.elements[t];jt(o)&&Tt(o)&&(Object.assign(o.style,n),Object.keys(i).forEach(function(t){var e=i[t];!1===e?o.removeAttribute(t):o.setAttribute(t,!0===e?"":e)}))})},effect:function(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach(function(t){var i=e.elements[t],o=e.attributes[t]||{},r=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:n[t]).reduce(function(t,e){return t[e]="",t},{});jt(i)&&Tt(i)&&(Object.assign(i.style,r),Object.keys(o).forEach(function(t){i.removeAttribute(t)}))})}},requires:["computeStyles"]};function Pt(t){return t.split("-")[0]}var Nt=Math.max,Mt=Math.min,Bt=Math.round;function It(){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 Ft(){return!/^((?!chrome|android).)*safari/i.test(It())}function Ht(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var i=t.getBoundingClientRect(),o=1,r=1;e&&jt(t)&&(o=t.offsetWidth>0&&Bt(i.width)/t.offsetWidth||1,r=t.offsetHeight>0&&Bt(i.height)/t.offsetHeight||1);var s=(St(t)?Lt(t):window).visualViewport,a=!Ft()&&n,c=(i.left+(a&&s?s.offsetLeft:0))/o,l=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:l,right:c+u,bottom:l+f,left:c,x:c,y:l}}function qt(t){var e=Ht(t),n=t.offsetWidth,i=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:i}}function zt(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&kt(n)){var i=e;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Wt(t){return Lt(t).getComputedStyle(t)}function Rt(t){return["table","td","th"].indexOf(Tt(t))>=0}function Vt(t){return((St(t)?t.ownerDocument:t.document)||window.document).documentElement}function Yt(t){return"html"===Tt(t)?t:t.assignedSlot||t.parentNode||(kt(t)?t.host:null)||Vt(t)}function Ut(t){return jt(t)&&"fixed"!==Wt(t).position?t.offsetParent:null}function Kt(t){for(var e=Lt(t),n=Ut(t);n&&Rt(n)&&"static"===Wt(n).position;)n=Ut(n);return n&&("html"===Tt(n)||"body"===Tt(n)&&"static"===Wt(n).position)?e:n||function(t){var e=/firefox/i.test(It());if(/Trident/i.test(It())&&jt(t)&&"fixed"===Wt(t).position)return null;var n=Yt(t);for(kt(n)&&(n=n.host);jt(n)&&["html","body"].indexOf(Tt(n))<0;){var i=Wt(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||e&&"filter"===i.willChange||e&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(t)||e}function Qt(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Gt(t,e,n){return Nt(t,Mt(e,n))}function Xt(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function $t(t,e){return e.reduce(function(e,n){return e[n]=t,e},{})}var Jt={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,n=t.state,i=t.name,o=t.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=Pt(n.placement),c=Qt(a),l=[st,rt].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(t,e){return Xt("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:$t(t,ct))}(o.padding,n),f=qt(r),d="y"===c?it:st,p="y"===c?ot:rt,h=n.rects.reference[l]+n.rects.reference[c]-s[c]-n.rects.popper[l],m=s[c]-n.rects.reference[c],g=Kt(r),b=g?"y"===c?g.clientHeight||0:g.clientWidth||0:0,v=h/2-m/2,y=u[d],_=b-f[l]-u[p],w=b/2-f[l]/2+v,E=Gt(y,w,_),O=c;n.modifiersData[i]=((e={})[O]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,n=t.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=e.elements.popper.querySelector(i)))&&zt(e.elements.popper,i)&&(e.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Zt(t){return t.split("-")[1]}var te={top:"auto",right:"auto",bottom:"auto",left:"auto"};function ee(t){var e,n=t.popper,i=t.popperRect,o=t.placement,r=t.variation,s=t.offsets,a=t.position,c=t.gpuAcceleration,l=t.adaptive,u=t.roundOffsets,f=t.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,m=void 0===h?0:h,g="function"==typeof u?u({x:p,y:m}):{x:p,y:m};p=g.x,m=g.y;var b=s.hasOwnProperty("x"),v=s.hasOwnProperty("y"),y=st,_=it,w=window;if(l){var E=Kt(n),O="clientHeight",A="clientWidth";if(E===Lt(n)&&"static"!==Wt(E=Vt(n)).position&&"absolute"===a&&(O="scrollHeight",A="scrollWidth"),o===it||(o===st||o===rt)&&r===ut)_=ot,m-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[O])-i.height,m*=c?1:-1;if(o===st||(o===it||o===ot)&&r===ut)y=rt,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[A])-i.width,p*=c?1:-1}var x,C=Object.assign({position:a},l&&te),T=!0===u?function(t,e){var n=t.x,i=t.y,o=e.devicePixelRatio||1;return{x:Bt(n*o)/o||0,y:Bt(i*o)/o||0}}({x:p,y:m},Lt(n)):{x:p,y:m};return p=T.x,m=T.y,c?Object.assign({},C,((x={})[_]=v?"0":"",x[y]=b?"0":"",x.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+m+"px)":"translate3d("+p+"px, "+m+"px, 0)",x)):Object.assign({},C,((e={})[_]=v?m+"px":"",e[y]=b?p+"px":"",e.transform="",e))}var ne={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,n=t.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,c=void 0===a||a,l={placement:Pt(e.placement),variation:Zt(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,ee(Object.assign({},l,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:s,roundOffsets:c})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,ee(Object.assign({},l,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:c})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},ie={passive:!0};var oe={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,n=t.instance,i=t.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,c=Lt(e.elements.popper),l=[].concat(e.scrollParents.reference,e.scrollParents.popper);return r&&l.forEach(function(t){t.addEventListener("scroll",n.update,ie)}),a&&c.addEventListener("resize",n.update,ie),function(){r&&l.forEach(function(t){t.removeEventListener("scroll",n.update,ie)}),a&&c.removeEventListener("resize",n.update,ie)}},data:{}},re={left:"right",right:"left",bottom:"top",top:"bottom"};function se(t){return t.replace(/left|right|bottom|top/g,function(t){return re[t]})}var ae={start:"end",end:"start"};function ce(t){return t.replace(/start|end/g,function(t){return ae[t]})}function le(t){var e=Lt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ue(t){return Ht(Vt(t)).left+le(t).scrollLeft}function fe(t){var e=Wt(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function de(t){return["html","body","#document"].indexOf(Tt(t))>=0?t.ownerDocument.body:jt(t)&&fe(t)?t:de(Yt(t))}function pe(t,e){var n;void 0===e&&(e=[]);var i=de(t),o=i===(null==(n=t.ownerDocument)?void 0:n.body),r=Lt(i),s=o?[r].concat(r.visualViewport||[],fe(i)?i:[]):i,a=e.concat(s);return o?a:a.concat(pe(Yt(s)))}function he(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function me(t,e,n){return e===dt?he(function(t,e){var n=Lt(t),i=Vt(t),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,c=0;if(o){r=o.width,s=o.height;var l=Ft();(l||!l&&"fixed"===e)&&(a=o.offsetLeft,c=o.offsetTop)}return{width:r,height:s,x:a+ue(t),y:c}}(t,n)):St(e)?function(t,e){var n=Ht(t,!1,"fixed"===e);return n.top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n}(e,n):he(function(t){var e,n=Vt(t),i=le(t),o=null==(e=t.ownerDocument)?void 0:e.body,r=Nt(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=Nt(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+ue(t),c=-i.scrollTop;return"rtl"===Wt(o||n).direction&&(a+=Nt(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:c}}(Vt(t)))}function ge(t,e,n,i){var o="clippingParents"===e?function(t){var e=pe(Yt(t)),n=["absolute","fixed"].indexOf(Wt(t).position)>=0&&jt(t)?Kt(t):t;return St(n)?e.filter(function(t){return St(t)&&zt(t,n)&&"body"!==Tt(t)}):[]}(t):[].concat(e),r=[].concat(o,[n]),s=r[0],a=r.reduce(function(e,n){var o=me(t,n,i);return e.top=Nt(o.top,e.top),e.right=Mt(o.right,e.right),e.bottom=Mt(o.bottom,e.bottom),e.left=Nt(o.left,e.left),e},me(t,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function be(t){var e,n=t.reference,i=t.element,o=t.placement,r=o?Pt(o):null,s=o?Zt(o):null,a=n.x+n.width/2-i.width/2,c=n.y+n.height/2-i.height/2;switch(r){case it:e={x:a,y:n.y-i.height};break;case ot:e={x:a,y:n.y+n.height};break;case rt:e={x:n.x+n.width,y:c};break;case st:e={x:n.x-i.width,y:c};break;default:e={x:n.x,y:n.y}}var l=r?Qt(r):null;if(null!=l){var u="y"===l?"height":"width";switch(s){case lt:e[l]=e[l]-(n[u]/2-i[u]/2);break;case ut:e[l]=e[l]+(n[u]/2-i[u]/2)}}return e}function ve(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=void 0===i?t.placement:i,r=n.strategy,s=void 0===r?t.strategy:r,a=n.boundary,c=void 0===a?ft:a,l=n.rootBoundary,u=void 0===l?dt:l,f=n.elementContext,d=void 0===f?pt:f,p=n.altBoundary,h=void 0!==p&&p,m=n.padding,g=void 0===m?0:m,b=Xt("number"!=typeof g?g:$t(g,ct)),v=d===pt?ht:pt,y=t.rects.popper,_=t.elements[h?v:d],w=ge(St(_)?_:_.contextElement||Vt(t.elements.popper),c,u,s),E=Ht(t.elements.reference),O=be({reference:E,element:y,placement:o}),A=he(Object.assign({},y,O)),x=d===pt?A:E,C={top:w.top-x.top+b.top,bottom:x.bottom-w.bottom+b.bottom,left:w.left-x.left+b.left,right:x.right-w.right+b.right},T=t.modifiersData.offset;if(d===pt&&T){var L=T[o];Object.keys(C).forEach(function(t){var e=[rt,ot].indexOf(t)>=0?1:-1,n=[it,ot].indexOf(t)>=0?"y":"x";C[t]+=L[n]*e})}return C}function ye(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,c=n.allowedAutoPlacements,l=void 0===c?gt:c,u=Zt(i),f=u?a?mt:mt.filter(function(t){return Zt(t)===u}):ct,d=f.filter(function(t){return l.indexOf(t)>=0});0===d.length&&(d=f);var p=d.reduce(function(e,n){return e[n]=ve(t,{placement:n,boundary:o,rootBoundary:r,padding:s})[Pt(n)],e},{});return Object.keys(p).sort(function(t,e){return p[t]-p[e]})}var _e={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name;if(!e.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,c=n.fallbackPlacements,l=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,m=n.allowedAutoPlacements,g=e.options.placement,b=Pt(g),v=c||(b===g||!h?[se(g)]:function(t){if(Pt(t)===at)return[];var e=se(t);return[ce(t),e,ce(e)]}(g)),y=[g].concat(v).reduce(function(t,n){return t.concat(Pt(n)===at?ye(e,{placement:n,boundary:u,rootBoundary:f,padding:l,flipVariations:h,allowedAutoPlacements:m}):n)},[]),_=e.rects.reference,w=e.rects.popper,E=new Map,O=!0,A=y[0],x=0;x=0,j=S?"width":"height",k=ve(e,{placement:C,boundary:u,rootBoundary:f,altBoundary:d,padding:l}),D=S?L?rt:st:L?ot:it;_[j]>w[j]&&(D=se(D));var P=se(D),N=[];if(r&&N.push(k[T]<=0),a&&N.push(k[D]<=0,k[P]<=0),N.every(function(t){return t})){A=C,O=!1;break}E.set(C,N)}if(O)for(var M=function(t){var e=y.find(function(e){var n=E.get(e);if(n)return n.slice(0,t).every(function(t){return t})});if(e)return A=e,"break"},B=h?3:1;B>0;B--){if("break"===M(B))break}e.placement!==A&&(e.modifiersData[i]._skip=!0,e.placement=A,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function we(t,e,n){return void 0===n&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function Ee(t){return[it,rt,ot,st].some(function(e){return t[e]>=0})}var Oe={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,n=t.name,i=e.rects.reference,o=e.rects.popper,r=e.modifiersData.preventOverflow,s=ve(e,{elementContext:"reference"}),a=ve(e,{altBoundary:!0}),c=we(s,i),l=we(a,o,r),u=Ee(c),f=Ee(l);e.modifiersData[n]={referenceClippingOffsets:c,popperEscapeOffsets:l,isReferenceHidden:u,hasPopperEscaped:f},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var Ae={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.offset,r=void 0===o?[0,0]:o,s=gt.reduce(function(t,n){return t[n]=function(t,e,n){var i=Pt(t),o=[st,it].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},e,{placement:t})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[st,rt].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,e.rects,r),t},{}),a=s[e.placement],c=a.x,l=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=c,e.modifiersData.popperOffsets.y+=l),e.modifiersData[i]=s}};var xe={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,n=t.name;e.modifiersData[n]=be({reference:e.rects.reference,element:e.rects.popper,placement:e.placement})},data:{}};var Ce={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,c=n.boundary,l=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,m=void 0===h?0:h,g=ve(e,{boundary:c,rootBoundary:l,padding:f,altBoundary:u}),b=Pt(e.placement),v=Zt(e.placement),y=!v,_=Qt(b),w="x"===_?"y":"x",E=e.modifiersData.popperOffsets,O=e.rects.reference,A=e.rects.popper,x="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,C="number"==typeof x?{mainAxis:x,altAxis:x}:Object.assign({mainAxis:0,altAxis:0},x),T=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,L={x:0,y:0};if(E){if(r){var S,j="y"===_?it:st,k="y"===_?ot:rt,D="y"===_?"height":"width",P=E[_],N=P+g[j],M=P-g[k],B=p?-A[D]/2:0,I=v===lt?O[D]:A[D],F=v===lt?-A[D]:-O[D],H=e.elements.arrow,q=p&&H?qt(H):{width:0,height:0},z=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},W=z[j],R=z[k],V=Gt(0,O[D],q[D]),Y=y?O[D]/2-B-V-W-C.mainAxis:I-V-W-C.mainAxis,U=y?-O[D]/2+B+V+R+C.mainAxis:F+V+R+C.mainAxis,K=e.elements.arrow&&Kt(e.elements.arrow),Q=K?"y"===_?K.clientTop||0:K.clientLeft||0:0,G=null!=(S=null==T?void 0:T[_])?S:0,X=P+U-G,$=Gt(p?Mt(N,P+Y-G-Q):N,P,p?Nt(M,X):M);E[_]=$,L[_]=$-P}if(a){var J,Z="x"===_?it:st,tt="x"===_?ot:rt,et=E[w],nt="y"===w?"height":"width",at=et+g[Z],ct=et-g[tt],ut=-1!==[it,st].indexOf(b),ft=null!=(J=null==T?void 0:T[w])?J:0,dt=ut?at:et-O[nt]-A[nt]-ft+C.altAxis,pt=ut?et+O[nt]+A[nt]-ft-C.altAxis:ct,ht=p&&ut?function(t,e,n){var i=Gt(t,e,n);return i>n?n:i}(dt,et,pt):Gt(p?dt:at,et,p?pt:ct);E[w]=ht,L[w]=ht-et}e.modifiersData[i]=L}},requiresIfExists:["offset"]};function Te(t,e,n){void 0===n&&(n=!1);var i,o,r=jt(e),s=jt(e)&&function(t){var e=t.getBoundingClientRect(),n=Bt(e.width)/t.offsetWidth||1,i=Bt(e.height)/t.offsetHeight||1;return 1!==n||1!==i}(e),a=Vt(e),c=Ht(t,s,n),l={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Tt(e)||fe(a))&&(l=(i=e)!==Lt(i)&&jt(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:le(i)),jt(e)?((u=Ht(e,!0)).x+=e.clientLeft,u.y+=e.clientTop):a&&(u.x=ue(a))),{x:c.left+l.scrollLeft-u.x,y:c.top+l.scrollTop-u.y,width:c.width,height:c.height}}function Le(t){var e=new Map,n=new Set,i=[];function o(t){n.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach(function(t){if(!n.has(t)){var i=e.get(t);i&&o(i)}}),i.push(t)}return t.forEach(function(t){e.set(t.name,t)}),t.forEach(function(t){n.has(t.name)||o(t)}),i}var Se={placement:"bottom",modifiers:[],strategy:"absolute"};function je(){for(var t=arguments.length,e=new Array(t),n=0;n{const n=t.nodeName.toLowerCase();return e.includes(n)?!Ie.has(n)||Boolean(Fe.test(t.nodeValue)):e.filter(t=>t instanceof RegExp).some(t=>t.test(n))};const qe={allowList:Be,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},ze={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},We={entry:"(string|element|function|null)",selector:"(string|element)"};class Re extends H{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return qe}static get DefaultType(){return ze}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=M(M({},this._config.content),t),this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,n]of Object.entries(this._config.content))this._setContent(t,n,e);const e=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&e.classList.add(...n.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,n]of Object.entries(t))super._typeCheckConfig({selector:e,entry:n},We)}_setContent(t,e,n){const i=W.findOne(n,t);i&&((e=this._resolvePossibleFunction(e))?r(e)?this._putElementInTemplate(s(e),i):this._config.html?i.innerHTML=this._maybeSanitize(e):i.textContent=e:i.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,n){if(!t.length)return t;if(n&&"function"==typeof n)return n(t);const i=(new window.DOMParser).parseFromString(t,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const t of o){const n=t.nodeName.toLowerCase();if(!Object.keys(e).includes(n)){t.remove();continue}const i=[].concat(...t.attributes),o=[].concat(e["*"]||[],e[n]||[]);for(const e of i)He(e,o)||t.removeAttribute(e.nodeName)}return i.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return p(t,[void 0,this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Ve=new Set(["sanitize","allowList","sanitizeFn"]),Ye="fade",Ue="show",Ke=".tooltip-inner",Qe=".".concat("modal"),Ge="hide.bs.modal",Xe="hover",$e="focus",Je="click",Ze={AUTO:"auto",TOP:"top",RIGHT:f()?"left":"right",BOTTOM:"bottom",LEFT:f()?"right":"left"},tn={allowList:Be,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"},en={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 nn extends q{constructor(t,e){if(void 0===Me)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)");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 tn}static get DefaultType(){return en}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),j.off(this._element.closest(Qe),Ge,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=(a(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),j.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(Ue),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))j.on(t,"mouseover",c);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())return;if(j.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(Ue),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))j.off(t,"mouseover",c);this._activeTrigger[Je]=!1,this._activeTrigger[$e]=!1,this._activeTrigger[Xe]=!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(Ye,Ue),e.classList.add("bs-".concat(this.constructor.NAME,"-auto"));const n=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",n),this._isAnimated()&&e.classList.add(Ye),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Re(M(M({},this._config),{},{content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)})),this._templateFactory}_getContentForTemplate(){return{[Ke]: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(Ye)}_isShown(){return this.tip&&this.tip.classList.contains(Ue)}_createPopper(t){const e=p(this._config.placement,[this,t,this._element]),n=Ze[e.toUpperCase()];return Ne(this._element,t,this._getPopperConfig(n))}_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 p(t,[this._element,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:".".concat(this.constructor.NAME,"-arrow")}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return M(M({},e),p(this._config.popperConfig,[void 0,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=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger[Je]=!(e._isShown()&&e._activeTrigger[Je]),e.toggle()});else if("manual"!==e){const t=e===Xe?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=e===Xe?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?$e:Xe]=!0,e._enter()}),j.on(this._element,n,this._config.selector,t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?$e:Xe]=e._element.contains(t.relatedTarget),e._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},j.on(this._element.closest(Qe),Ge,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))Ve.has(t)&&delete e[t];return t=M(M({},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:s(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,n]of Object.entries(this._config))this.constructor.Default[e]!==n&&(t[e]=n);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=nn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError('No method named "'.concat(t,'"'));e[t]()}})}}d(nn);const on=".code-header>button",rn="timeout",sn="data-title-succeed",an="data-bs-original-title",cn=2e3;function ln(t){if(t.hasAttribute(rn)){let e=t.getAttribute(rn);if(Number(e)>Date.now())return!0}return!1}function un(t){t.setAttribute(rn,Date.now()+cn)}function fn(t){t.removeAttribute(rn)}function dn(){const t=document.querySelectorAll(on);if(0===t.length)return;const e=new ClipboardJS(on,{target:t=>t.parentNode.nextElementSibling.querySelector("code .rouge-code")});[...t].map(t=>new nn(t,{placement:"left"})),e.on("success",t=>{const e=t.trigger;(t.clearSelection(),ln(e))||(e.children[0].setAttribute("class","fas fa-check"),function(t){const e=t.getAttribute(sn);t.setAttribute(an,e),nn.getInstance(t).show()}(e),un(e),setTimeout(()=>{!function(t){nn.getInstance(t).hide(),t.removeAttribute(an)}(e),function(t){t.children[0].setAttribute("class","far fa-clipboard")}(e),fn(e)},cn))})}const pn="data-src",hn="data-lqip",mn="shimmer",gn="blur";function bn(t){this.parentElement.classList.remove(t)}function vn(){this.complete&&(this.hasAttribute(hn)?bn.call(this,gn):bn.call(this,mn))}function yn(){const t=this.getAttribute(pn);this.setAttribute("src",encodeURI(t)),this.removeAttribute(pn)}const _n=".popup:not(.dark)",wn=".popup:not(.light)";let En=_n;var On;const An=document.getElementById("toc-bar"),xn=document.getElementById("toc-solo-trigger"),Cn=document.getElementsByClassName("toc-trigger"),Tn=document.getElementById("toc-popup"),Ln=document.getElementById("toc-popup-close"),Sn="overflow-hidden",jn="closing";class kn{static initBar(){new IntersectionObserver(t=>{t.forEach(t=>{An.classList.toggle("invisible",t.isIntersecting)})},{rootMargin:"-".concat(D(kn,this,Pn)._,"px 0px 0px 0px")}).observe(xn),Dn._=D(kn,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach(t=>{t.onclick=()=>this.hidePopup()})}static refresh(){D(kn,this,Dn)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return Tn.open}static showPopup(){this.lockScroll(!0),Tn.showModal();Tn.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){Tn.toggleAttribute(jn),Tn.addEventListener("animationend",()=>{Tn.toggleAttribute(jn),Tn.close()},{once:!0}),this.lockScroll(!1)}static lockScroll(t){document.documentElement.classList.toggle(Sn,t),document.body.classList.toggle(Sn,t)}static clickBackdrop(t){if(Tn.hasAttribute(jn))return;const e=t.target.getBoundingClientRect();(t.clientXe.right||t.clientYe.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...Cn].forEach(t=>{t.onclick=()=>this.showPopup()}),Tn.onclick=t=>this.clickBackdrop(t),Ln.onclick=()=>this.hidePopup(),Tn.oncancel=t=>{t.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var Dn={_:!0},Pn={_:48};P(kn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:D(On=kn,On,Pn)._});P(class{static refresh(){tocbot.refresh(this.options)}static init(){tocbot.init(this.options)}},"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32}),matchMedia("(min-width: 1200px)");const Nn="mermaid",Mn=Theme.getThemeMapper("default","dark");function Bn(t){if(t.source===window&&t.data&&t.data.id===Theme.ID){[...document.getElementsByClassName(Nn)].forEach(t=>{const e=t.previousSibling.children.item(0).textContent;t.textContent=e,t.removeAttribute("data-processed")});const t=Mn[Theme.visualState];mermaid.initialize({theme:t}),mermaid.init(null,".".concat(Nn))}}function In(t){const e=t.textContent,n=t.parentElement;n.classList.add("d-none");const i=document.createElement("pre");i.classList.add(Nn);const o=document.createTextNode(e);i.appendChild(o),n.after(i)}const Fn=document.getElementById("mode-toggle");const Hn=document.getElementById("sidebar"),qn=document.getElementById("sidebar-trigger"),zn=document.getElementById("mask");class Wn{static toggle(){Rn._=D(Wn,this,!D(Wn,this,Rn)._),document.body.toggleAttribute("sidebar-display",D(Wn,this,Rn)._),Hn.classList.toggle("z-2",D(Wn,this,Rn)._),zn.classList.toggle("d-none",!D(Wn,this,Rn)._)}}var Rn={_:!1};const Vn=document.getElementById("sidebar-trigger"),Yn=document.getElementById("search-trigger"),Un=document.getElementById("search-cancel"),Kn=document.querySelectorAll("#main-wrapper>.container>.row"),Qn=document.getElementById("topbar-title"),Gn=document.getElementById("search"),Xn=document.getElementById("search-result-wrapper"),$n=document.getElementById("search-results"),Jn=document.getElementById("search-input"),Zn=document.getElementById("search-hints"),ti="d-block",ei="d-none",ni="input-focus",ii="d-flex";class oi{static on(){Vn.classList.add(ei),Qn.classList.add(ei),Yn.classList.add(ei),Gn.classList.add(ii),Un.classList.add(ti)}static off(){Un.classList.remove(ti),Gn.classList.remove(ii),Vn.classList.remove(ei),Qn.classList.remove(ei),Yn.classList.remove(ei)}}class ri{static on(){this.resultVisible||(Xn.classList.remove(ei),Kn.forEach(t=>{t.classList.add(ei)}),this.resultVisible=!0)}static off(){this.resultVisible&&($n.innerHTML="",Zn.classList.contains(ei)&&Zn.classList.remove(ei),Xn.classList.add(ei),Kn.forEach(t=>{t.classList.remove(ei)}),Jn.textContent="",this.resultVisible=!1)}}function si(){return Un.classList.contains(ti)}P(ri,"resultVisible",!1),function(){const t=document.querySelectorAll("article img");if(0===t.length)return;t.forEach(t=>{t.addEventListener("load",vn)}),document.querySelectorAll('article img[loading="lazy"]').forEach(t=>{t.complete&&bn.call(t,mn)});const e=document.querySelectorAll("article img[".concat(hn,'="true"]'));e.length&&e.forEach(t=>{yn.call(t)})}(),function(){if(null===document.querySelector(".popup"))return;const t=!(null===document.querySelector(".popup.light")&&null===document.querySelector(".popup.dark"));Theme.visualState===Theme.DARK&&(En=wn);let e=GLightbox({selector:"".concat(En)});if(t&&Theme.switchable){let t=null;window.addEventListener("message",n=>{n.source===window&&n.data&&n.data.id===Theme.ID&&function(t,e){En=En===_n?wn:_n,null===e&&(e=GLightbox({selector:"".concat(En)})),[t,e]=[e,t]}(e,t)})}}(),qn.onclick=zn.onclick=()=>Wn.toggle(),Yn.addEventListener("click",()=>{oi.on(),ri.on(),Jn.focus()}),Un.addEventListener("click",()=>{oi.off(),ri.off()}),Jn.addEventListener("focus",()=>{Gn.classList.add(ni)}),Jn.addEventListener("focusout",()=>{Gn.classList.remove(ni)}),Jn.addEventListener("input",()=>{""===Jn.value?si()?Zn.classList.remove(ei):ri.off():(ri.on(),si()&&Zn.classList.add(ei))}),dn(),function(){const t=document.getElementById("copy-link");null!==t&&(t.addEventListener("click",t=>{const e=t.target;ln(e)||navigator.clipboard.writeText(window.location.href).then(()=>{const t=e.getAttribute(an),n=e.getAttribute(sn);e.setAttribute(an,n),nn.getInstance(e).show(),un(e),setTimeout(()=>{e.setAttribute(an,t),fn(e)},cn)})}),t.addEventListener("mouseleave",t=>{nn.getInstance(t.target).hide()}))}(),function(){if("undefined"==typeof mermaid||"function"!=typeof mermaid.initialize)return;let t={theme:Mn[Theme.visualState]};[...document.getElementsByClassName("language-mermaid")].forEach(In),mermaid.initialize(t),Theme.switchable&&window.addEventListener("message",Bn)}(),Fn&&Fn.addEventListener("click",()=>{Theme.flip()}),function(){const t=document.getElementById("back-to-top");window.addEventListener("scroll",()=>{window.scrollY>50?t.classList.add("show"):t.classList.remove("show")}),t.addEventListener("click",()=>{window.scrollTo({top:0})})}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map(t=>new nn(t))}(); diff --git a/assets/js/dist/post.min.js b/assets/js/dist/post.min.js new file mode 100644 index 0000000..d5905b3 --- /dev/null +++ b/assets/js/dist/post.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.4.1 | Ā© 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";const t=new Map;var e={set(e,n,i){t.has(e)||t.set(e,new Map);const o=t.get(e);o.has(n)||0===o.size?o.set(n,i):console.error("Bootstrap doesn't allow more than one instance per element. Bound instance: ".concat(Array.from(o.keys())[0],"."))},get:(e,n)=>t.has(e)&&t.get(e).get(n)||null,remove(e,n){if(!t.has(e))return;const i=t.get(e);i.delete(n),0===i.size&&t.delete(e)}};const n="transitionend",i=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,(t,e)=>"#".concat(CSS.escape(e)))),t),o=t=>null==t?"".concat(t):Object.prototype.toString.call(t).match(/\s([a-z]+)/i)[1].toLowerCase(),r=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),s=t=>r(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(i(t)):null,a=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?a(t.parentNode):null},c=()=>{},l=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,u=[],f=()=>"rtl"===document.documentElement.dir,d=t=>{var e;e=()=>{const e=l();if(e){const n=t.NAME,i=e.fn[n];e.fn[n]=t.jQueryInterface,e.fn[n].Constructor=t,e.fn[n].noConflict=()=>(e.fn[n]=i,t.jQueryInterface)}},"loading"===document.readyState?(u.length||document.addEventListener("DOMContentLoaded",()=>{for(const t of u)t()}),u.push(e)):e()},p=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;return"function"==typeof t?t.call(...e):n},h=function(t,e){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void p(t);const i=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:n}=window.getComputedStyle(t);const i=Number.parseFloat(e),o=Number.parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(n))):0})(e)+5;let o=!1;const r=i=>{let{target:s}=i;s===e&&(o=!0,e.removeEventListener(n,r),p(t))};e.addEventListener(n,r),setTimeout(()=>{o||e.dispatchEvent(new Event(n))},i)},m=/[^.]*(?=\..*)\.|.*/,g=/\..*/,b=/::\d+$/,v={};let y=1;const _={mouseenter:"mouseover",mouseleave:"mouseout"},w=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 E(t,e){return e&&"".concat(e,"::").concat(y++)||t.uidEvent||y++}function O(t){const e=E(t);return t.uidEvent=e,v[e]=v[e]||{},v[e]}function A(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(t).find(t=>t.callable===e&&t.delegationSelector===n)}function x(t,e,n){const i="string"==typeof e,o=i?n:e||n;let r=S(t);return w.has(r)||(r=t),[i,o,r]}function C(t,e,n,i,o){if("string"!=typeof e||!t)return;let[r,s,a]=x(e,n,i);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)};s=t(s)}const c=O(t),l=c[a]||(c[a]={}),u=A(l,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=E(s,e.replace(m,"")),d=r?function(t,e,n){return function i(o){const r=t.querySelectorAll(e);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return D(o,{delegateTarget:s}),i.oneOff&&j.off(t,o.type,e,n),n.apply(s,[o])}}(t,n,s):function(t,e){return function n(i){return D(i,{delegateTarget:t}),n.oneOff&&j.off(t,i.type,e),e.apply(t,[i])}}(t,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=f,l[f]=d,t.addEventListener(a,d,r)}function T(t,e,n,i,o){const r=A(e[n],i,o);r&&(t.removeEventListener(n,r,Boolean(o)),delete e[n][r.uidEvent])}function L(t,e,n,i){const o=e[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&T(t,e,n,s.callable,s.delegationSelector)}function S(t){return t=t.replace(g,""),_[t]||t}const j={on(t,e,n,i){C(t,e,n,i,!1)},one(t,e,n,i){C(t,e,n,i,!0)},off(t,e,n,i){if("string"!=typeof e||!t)return;const[o,r,s]=x(e,n,i),a=s!==e,c=O(t),l=c[s]||{},u=e.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(c))L(t,c,n,e.slice(1));for(const[n,i]of Object.entries(l)){const o=n.replace(b,"");a&&!e.includes(o)||T(t,c,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(l).length)return;T(t,c,s,r,o?n:null)}},trigger(t,e,n){if("string"!=typeof e||!t)return null;const i=l();let o=null,r=!0,s=!0,a=!1;e!==S(e)&&i&&(o=i.Event(e,n),i(t).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const c=D(new Event(e,{bubbles:r,cancelable:!0}),n);return a&&c.preventDefault(),s&&t.dispatchEvent(c),c.defaultPrevented&&o&&o.preventDefault(),c}};function D(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(e))try{t[n]=i}catch(e){Object.defineProperty(t,n,{configurable:!0,get:()=>i})}return t}function k(t,e,n){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:n;throw new TypeError("Private element is not present on this object")}function P(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,e);if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function N(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,i)}return n}function M(t){for(var e=1;e"-".concat(t.toLowerCase()))}const F={setDataAttribute(t,e,n){t.setAttribute("data-bs-".concat(I(e)),n)},removeDataAttribute(t,e){t.removeAttribute("data-bs-".concat(I(e)))},getDataAttributes(t){if(!t)return{};const e={},n=Object.keys(t.dataset).filter(t=>t.startsWith("bs")&&!t.startsWith("bsConfig"));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1),e[n]=B(t.dataset[i])}return e},getDataAttribute:(t,e)=>B(t.getAttribute("data-bs-".concat(I(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 n=r(e)?F.getDataAttribute(e,"config"):{};return M(M(M(M({},this.constructor.Default),"object"==typeof n?n:{}),r(e)?F.getDataAttributes(e):{}),"object"==typeof t?t:{})}_typeCheckConfig(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[n,i]of Object.entries(e)){const e=t[n],s=r(e)?"element":o(e);if(!new RegExp(i).test(s))throw new TypeError("".concat(this.constructor.NAME.toUpperCase(),': Option "').concat(n,'" provided type "').concat(s,'" but expected type "').concat(i,'".'))}}}class q extends H{constructor(t,n){super(),(t=s(t))&&(this._element=t,this._config=this._getConfig(n),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.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){h(t,e,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(s(t),this.DATA_KEY)}static getOrCreateInstance(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.8"}static get DATA_KEY(){return"bs.".concat(this.NAME)}static get EVENT_KEY(){return".".concat(this.DATA_KEY)}static eventName(t){return"".concat(t).concat(this.EVENT_KEY)}}const z=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let n=t.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n="#".concat(n.split("#")[1])),e=n&&"#"!==n?n.trim():null}return e?e.split(",").map(t=>i(t)).join(","):null},W={find(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(e,t))},findOne(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(e,t)},children:(t,e)=>[].concat(...t.children).filter(t=>t.matches(e)),parents(t,e){const n=[];let i=t.parentNode.closest(e);for(;i;)n.push(i),i=i.parentNode.closest(e);return n},prev(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return[n];n=n.previousElementSibling}return[]},next(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return[n];n=n.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(t=>"".concat(t,':not([tabindex^="-"])')).join(",");return this.find(e,t).filter(t=>!(t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")))(t)&&(t=>{if(!r(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),n=t.closest("details:not([open])");if(!n)return e;if(n!==t){const e=t.closest("summary");if(e&&e.parentNode!==n)return!1;if(null===e)return!1}return e})(t))},getSelectorFromElement(t){const e=z(t);return e&&W.findOne(e)?e:null},getElementFromSelector(t){const e=z(t);return e?W.findOne(e):null},getMultipleElementsFromSelector(t){const e=z(t);return e?W.find(e):[]}},R=".".concat("bs.collapse"),V="show".concat(R),Y="shown".concat(R),U="hide".concat(R),K="hidden".concat(R),Q="click".concat(R).concat(".data-api"),G="show",X="collapse",$="collapsing",J=":scope .".concat(X," .").concat(X),Z='[data-bs-toggle="collapse"]',tt={parent:null,toggle:!0},et={parent:"(null|element)",toggle:"boolean"};class nt extends q{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=W.find(Z);for(const t of n){const e=W.getSelectorFromElement(t),n=W.find(e).filter(t=>t===this._element);null!==e&&n.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 tt}static get DefaultType(){return et}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=>nt.getOrCreateInstance(t,{toggle:!1}))),t.length&&t[0]._isTransitioning)return;if(j.trigger(this._element,V).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(X),this._element.classList.add($),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=e[0].toUpperCase()+e.slice(1),i="scroll".concat(n);this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove($),this._element.classList.add(X,G),this._element.style[e]="",j.trigger(this._element,Y)},this._element,!0),this._element.style[e]="".concat(this._element[i],"px")}hide(){if(this._isTransitioning||!this._isShown())return;if(j.trigger(this._element,U).defaultPrevented)return;const t=this._getDimension();this._element.style[t]="".concat(this._element.getBoundingClientRect()[t],"px"),this._element.offsetHeight,this._element.classList.add($),this._element.classList.remove(X,G);for(const t of this._triggerArray){const e=W.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($),this._element.classList.add(X),j.trigger(this._element,K)},this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(G)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=s(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Z);for(const e of t){const t=W.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=W.find(J,this._config.parent);return W.find(t,this._config.parent).filter(t=>!e.includes(t))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const n of t)n.classList.toggle("collapsed",!e),n.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each(function(){const n=nt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===n[t])throw new TypeError('No method named "'.concat(t,'"'));n[t]()}})}}j.on(document,Q,Z,function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of W.getMultipleElementsFromSelector(this))nt.getOrCreateInstance(t,{toggle:!1}).toggle()}),d(nt),document.getElementsByClassName("collapse");var it="top",ot="bottom",rt="right",st="left",at="auto",ct=[it,ot,rt,st],lt="start",ut="end",ft="clippingParents",dt="viewport",pt="popper",ht="reference",mt=ct.reduce(function(t,e){return t.concat([e+"-"+lt,e+"-"+ut])},[]),gt=[].concat(ct,[at]).reduce(function(t,e){return t.concat([e,e+"-"+lt,e+"-"+ut])},[]),bt="beforeRead",vt="read",yt="afterRead",_t="beforeMain",wt="main",Et="afterMain",Ot="beforeWrite",At="write",xt="afterWrite",Ct=[bt,vt,yt,_t,wt,Et,Ot,At,xt];function Tt(t){return t?(t.nodeName||"").toLowerCase():null}function Lt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function St(t){return t instanceof Lt(t).Element||t instanceof Element}function jt(t){return t instanceof Lt(t).HTMLElement||t instanceof HTMLElement}function Dt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Lt(t).ShadowRoot||t instanceof ShadowRoot)}var kt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach(function(t){var n=e.styles[t]||{},i=e.attributes[t]||{},o=e.elements[t];jt(o)&&Tt(o)&&(Object.assign(o.style,n),Object.keys(i).forEach(function(t){var e=i[t];!1===e?o.removeAttribute(t):o.setAttribute(t,!0===e?"":e)}))})},effect:function(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach(function(t){var i=e.elements[t],o=e.attributes[t]||{},r=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:n[t]).reduce(function(t,e){return t[e]="",t},{});jt(i)&&Tt(i)&&(Object.assign(i.style,r),Object.keys(o).forEach(function(t){i.removeAttribute(t)}))})}},requires:["computeStyles"]};function Pt(t){return t.split("-")[0]}var Nt=Math.max,Mt=Math.min,Bt=Math.round;function It(){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 Ft(){return!/^((?!chrome|android).)*safari/i.test(It())}function Ht(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var i=t.getBoundingClientRect(),o=1,r=1;e&&jt(t)&&(o=t.offsetWidth>0&&Bt(i.width)/t.offsetWidth||1,r=t.offsetHeight>0&&Bt(i.height)/t.offsetHeight||1);var s=(St(t)?Lt(t):window).visualViewport,a=!Ft()&&n,c=(i.left+(a&&s?s.offsetLeft:0))/o,l=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:l,right:c+u,bottom:l+f,left:c,x:c,y:l}}function qt(t){var e=Ht(t),n=t.offsetWidth,i=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:i}}function zt(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&Dt(n)){var i=e;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Wt(t){return Lt(t).getComputedStyle(t)}function Rt(t){return["table","td","th"].indexOf(Tt(t))>=0}function Vt(t){return((St(t)?t.ownerDocument:t.document)||window.document).documentElement}function Yt(t){return"html"===Tt(t)?t:t.assignedSlot||t.parentNode||(Dt(t)?t.host:null)||Vt(t)}function Ut(t){return jt(t)&&"fixed"!==Wt(t).position?t.offsetParent:null}function Kt(t){for(var e=Lt(t),n=Ut(t);n&&Rt(n)&&"static"===Wt(n).position;)n=Ut(n);return n&&("html"===Tt(n)||"body"===Tt(n)&&"static"===Wt(n).position)?e:n||function(t){var e=/firefox/i.test(It());if(/Trident/i.test(It())&&jt(t)&&"fixed"===Wt(t).position)return null;var n=Yt(t);for(Dt(n)&&(n=n.host);jt(n)&&["html","body"].indexOf(Tt(n))<0;){var i=Wt(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||e&&"filter"===i.willChange||e&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(t)||e}function Qt(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Gt(t,e,n){return Nt(t,Mt(e,n))}function Xt(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function $t(t,e){return e.reduce(function(e,n){return e[n]=t,e},{})}var Jt={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,n=t.state,i=t.name,o=t.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=Pt(n.placement),c=Qt(a),l=[st,rt].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(t,e){return Xt("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:$t(t,ct))}(o.padding,n),f=qt(r),d="y"===c?it:st,p="y"===c?ot:rt,h=n.rects.reference[l]+n.rects.reference[c]-s[c]-n.rects.popper[l],m=s[c]-n.rects.reference[c],g=Kt(r),b=g?"y"===c?g.clientHeight||0:g.clientWidth||0:0,v=h/2-m/2,y=u[d],_=b-f[l]-u[p],w=b/2-f[l]/2+v,E=Gt(y,w,_),O=c;n.modifiersData[i]=((e={})[O]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,n=t.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=e.elements.popper.querySelector(i)))&&zt(e.elements.popper,i)&&(e.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Zt(t){return t.split("-")[1]}var te={top:"auto",right:"auto",bottom:"auto",left:"auto"};function ee(t){var e,n=t.popper,i=t.popperRect,o=t.placement,r=t.variation,s=t.offsets,a=t.position,c=t.gpuAcceleration,l=t.adaptive,u=t.roundOffsets,f=t.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,m=void 0===h?0:h,g="function"==typeof u?u({x:p,y:m}):{x:p,y:m};p=g.x,m=g.y;var b=s.hasOwnProperty("x"),v=s.hasOwnProperty("y"),y=st,_=it,w=window;if(l){var E=Kt(n),O="clientHeight",A="clientWidth";if(E===Lt(n)&&"static"!==Wt(E=Vt(n)).position&&"absolute"===a&&(O="scrollHeight",A="scrollWidth"),o===it||(o===st||o===rt)&&r===ut)_=ot,m-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[O])-i.height,m*=c?1:-1;if(o===st||(o===it||o===ot)&&r===ut)y=rt,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[A])-i.width,p*=c?1:-1}var x,C=Object.assign({position:a},l&&te),T=!0===u?function(t,e){var n=t.x,i=t.y,o=e.devicePixelRatio||1;return{x:Bt(n*o)/o||0,y:Bt(i*o)/o||0}}({x:p,y:m},Lt(n)):{x:p,y:m};return p=T.x,m=T.y,c?Object.assign({},C,((x={})[_]=v?"0":"",x[y]=b?"0":"",x.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+m+"px)":"translate3d("+p+"px, "+m+"px, 0)",x)):Object.assign({},C,((e={})[_]=v?m+"px":"",e[y]=b?p+"px":"",e.transform="",e))}var ne={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,n=t.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,c=void 0===a||a,l={placement:Pt(e.placement),variation:Zt(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,ee(Object.assign({},l,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:s,roundOffsets:c})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,ee(Object.assign({},l,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:c})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},ie={passive:!0};var oe={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,n=t.instance,i=t.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,c=Lt(e.elements.popper),l=[].concat(e.scrollParents.reference,e.scrollParents.popper);return r&&l.forEach(function(t){t.addEventListener("scroll",n.update,ie)}),a&&c.addEventListener("resize",n.update,ie),function(){r&&l.forEach(function(t){t.removeEventListener("scroll",n.update,ie)}),a&&c.removeEventListener("resize",n.update,ie)}},data:{}},re={left:"right",right:"left",bottom:"top",top:"bottom"};function se(t){return t.replace(/left|right|bottom|top/g,function(t){return re[t]})}var ae={start:"end",end:"start"};function ce(t){return t.replace(/start|end/g,function(t){return ae[t]})}function le(t){var e=Lt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ue(t){return Ht(Vt(t)).left+le(t).scrollLeft}function fe(t){var e=Wt(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function de(t){return["html","body","#document"].indexOf(Tt(t))>=0?t.ownerDocument.body:jt(t)&&fe(t)?t:de(Yt(t))}function pe(t,e){var n;void 0===e&&(e=[]);var i=de(t),o=i===(null==(n=t.ownerDocument)?void 0:n.body),r=Lt(i),s=o?[r].concat(r.visualViewport||[],fe(i)?i:[]):i,a=e.concat(s);return o?a:a.concat(pe(Yt(s)))}function he(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function me(t,e,n){return e===dt?he(function(t,e){var n=Lt(t),i=Vt(t),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,c=0;if(o){r=o.width,s=o.height;var l=Ft();(l||!l&&"fixed"===e)&&(a=o.offsetLeft,c=o.offsetTop)}return{width:r,height:s,x:a+ue(t),y:c}}(t,n)):St(e)?function(t,e){var n=Ht(t,!1,"fixed"===e);return n.top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n}(e,n):he(function(t){var e,n=Vt(t),i=le(t),o=null==(e=t.ownerDocument)?void 0:e.body,r=Nt(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=Nt(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+ue(t),c=-i.scrollTop;return"rtl"===Wt(o||n).direction&&(a+=Nt(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:c}}(Vt(t)))}function ge(t,e,n,i){var o="clippingParents"===e?function(t){var e=pe(Yt(t)),n=["absolute","fixed"].indexOf(Wt(t).position)>=0&&jt(t)?Kt(t):t;return St(n)?e.filter(function(t){return St(t)&&zt(t,n)&&"body"!==Tt(t)}):[]}(t):[].concat(e),r=[].concat(o,[n]),s=r[0],a=r.reduce(function(e,n){var o=me(t,n,i);return e.top=Nt(o.top,e.top),e.right=Mt(o.right,e.right),e.bottom=Mt(o.bottom,e.bottom),e.left=Nt(o.left,e.left),e},me(t,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function be(t){var e,n=t.reference,i=t.element,o=t.placement,r=o?Pt(o):null,s=o?Zt(o):null,a=n.x+n.width/2-i.width/2,c=n.y+n.height/2-i.height/2;switch(r){case it:e={x:a,y:n.y-i.height};break;case ot:e={x:a,y:n.y+n.height};break;case rt:e={x:n.x+n.width,y:c};break;case st:e={x:n.x-i.width,y:c};break;default:e={x:n.x,y:n.y}}var l=r?Qt(r):null;if(null!=l){var u="y"===l?"height":"width";switch(s){case lt:e[l]=e[l]-(n[u]/2-i[u]/2);break;case ut:e[l]=e[l]+(n[u]/2-i[u]/2)}}return e}function ve(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=void 0===i?t.placement:i,r=n.strategy,s=void 0===r?t.strategy:r,a=n.boundary,c=void 0===a?ft:a,l=n.rootBoundary,u=void 0===l?dt:l,f=n.elementContext,d=void 0===f?pt:f,p=n.altBoundary,h=void 0!==p&&p,m=n.padding,g=void 0===m?0:m,b=Xt("number"!=typeof g?g:$t(g,ct)),v=d===pt?ht:pt,y=t.rects.popper,_=t.elements[h?v:d],w=ge(St(_)?_:_.contextElement||Vt(t.elements.popper),c,u,s),E=Ht(t.elements.reference),O=be({reference:E,element:y,placement:o}),A=he(Object.assign({},y,O)),x=d===pt?A:E,C={top:w.top-x.top+b.top,bottom:x.bottom-w.bottom+b.bottom,left:w.left-x.left+b.left,right:x.right-w.right+b.right},T=t.modifiersData.offset;if(d===pt&&T){var L=T[o];Object.keys(C).forEach(function(t){var e=[rt,ot].indexOf(t)>=0?1:-1,n=[it,ot].indexOf(t)>=0?"y":"x";C[t]+=L[n]*e})}return C}function ye(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,c=n.allowedAutoPlacements,l=void 0===c?gt:c,u=Zt(i),f=u?a?mt:mt.filter(function(t){return Zt(t)===u}):ct,d=f.filter(function(t){return l.indexOf(t)>=0});0===d.length&&(d=f);var p=d.reduce(function(e,n){return e[n]=ve(t,{placement:n,boundary:o,rootBoundary:r,padding:s})[Pt(n)],e},{});return Object.keys(p).sort(function(t,e){return p[t]-p[e]})}var _e={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name;if(!e.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,c=n.fallbackPlacements,l=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,m=n.allowedAutoPlacements,g=e.options.placement,b=Pt(g),v=c||(b===g||!h?[se(g)]:function(t){if(Pt(t)===at)return[];var e=se(t);return[ce(t),e,ce(e)]}(g)),y=[g].concat(v).reduce(function(t,n){return t.concat(Pt(n)===at?ye(e,{placement:n,boundary:u,rootBoundary:f,padding:l,flipVariations:h,allowedAutoPlacements:m}):n)},[]),_=e.rects.reference,w=e.rects.popper,E=new Map,O=!0,A=y[0],x=0;x=0,j=S?"width":"height",D=ve(e,{placement:C,boundary:u,rootBoundary:f,altBoundary:d,padding:l}),k=S?L?rt:st:L?ot:it;_[j]>w[j]&&(k=se(k));var P=se(k),N=[];if(r&&N.push(D[T]<=0),a&&N.push(D[k]<=0,D[P]<=0),N.every(function(t){return t})){A=C,O=!1;break}E.set(C,N)}if(O)for(var M=function(t){var e=y.find(function(e){var n=E.get(e);if(n)return n.slice(0,t).every(function(t){return t})});if(e)return A=e,"break"},B=h?3:1;B>0;B--){if("break"===M(B))break}e.placement!==A&&(e.modifiersData[i]._skip=!0,e.placement=A,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function we(t,e,n){return void 0===n&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function Ee(t){return[it,rt,ot,st].some(function(e){return t[e]>=0})}var Oe={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,n=t.name,i=e.rects.reference,o=e.rects.popper,r=e.modifiersData.preventOverflow,s=ve(e,{elementContext:"reference"}),a=ve(e,{altBoundary:!0}),c=we(s,i),l=we(a,o,r),u=Ee(c),f=Ee(l);e.modifiersData[n]={referenceClippingOffsets:c,popperEscapeOffsets:l,isReferenceHidden:u,hasPopperEscaped:f},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var Ae={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.offset,r=void 0===o?[0,0]:o,s=gt.reduce(function(t,n){return t[n]=function(t,e,n){var i=Pt(t),o=[st,it].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},e,{placement:t})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[st,rt].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,e.rects,r),t},{}),a=s[e.placement],c=a.x,l=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=c,e.modifiersData.popperOffsets.y+=l),e.modifiersData[i]=s}};var xe={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,n=t.name;e.modifiersData[n]=be({reference:e.rects.reference,element:e.rects.popper,placement:e.placement})},data:{}};var Ce={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,c=n.boundary,l=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,m=void 0===h?0:h,g=ve(e,{boundary:c,rootBoundary:l,padding:f,altBoundary:u}),b=Pt(e.placement),v=Zt(e.placement),y=!v,_=Qt(b),w="x"===_?"y":"x",E=e.modifiersData.popperOffsets,O=e.rects.reference,A=e.rects.popper,x="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,C="number"==typeof x?{mainAxis:x,altAxis:x}:Object.assign({mainAxis:0,altAxis:0},x),T=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,L={x:0,y:0};if(E){if(r){var S,j="y"===_?it:st,D="y"===_?ot:rt,k="y"===_?"height":"width",P=E[_],N=P+g[j],M=P-g[D],B=p?-A[k]/2:0,I=v===lt?O[k]:A[k],F=v===lt?-A[k]:-O[k],H=e.elements.arrow,q=p&&H?qt(H):{width:0,height:0},z=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},W=z[j],R=z[D],V=Gt(0,O[k],q[k]),Y=y?O[k]/2-B-V-W-C.mainAxis:I-V-W-C.mainAxis,U=y?-O[k]/2+B+V+R+C.mainAxis:F+V+R+C.mainAxis,K=e.elements.arrow&&Kt(e.elements.arrow),Q=K?"y"===_?K.clientTop||0:K.clientLeft||0:0,G=null!=(S=null==T?void 0:T[_])?S:0,X=P+U-G,$=Gt(p?Mt(N,P+Y-G-Q):N,P,p?Nt(M,X):M);E[_]=$,L[_]=$-P}if(a){var J,Z="x"===_?it:st,tt="x"===_?ot:rt,et=E[w],nt="y"===w?"height":"width",at=et+g[Z],ct=et-g[tt],ut=-1!==[it,st].indexOf(b),ft=null!=(J=null==T?void 0:T[w])?J:0,dt=ut?at:et-O[nt]-A[nt]-ft+C.altAxis,pt=ut?et+O[nt]+A[nt]-ft-C.altAxis:ct,ht=p&&ut?function(t,e,n){var i=Gt(t,e,n);return i>n?n:i}(dt,et,pt):Gt(p?dt:at,et,p?pt:ct);E[w]=ht,L[w]=ht-et}e.modifiersData[i]=L}},requiresIfExists:["offset"]};function Te(t,e,n){void 0===n&&(n=!1);var i,o,r=jt(e),s=jt(e)&&function(t){var e=t.getBoundingClientRect(),n=Bt(e.width)/t.offsetWidth||1,i=Bt(e.height)/t.offsetHeight||1;return 1!==n||1!==i}(e),a=Vt(e),c=Ht(t,s,n),l={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Tt(e)||fe(a))&&(l=(i=e)!==Lt(i)&&jt(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:le(i)),jt(e)?((u=Ht(e,!0)).x+=e.clientLeft,u.y+=e.clientTop):a&&(u.x=ue(a))),{x:c.left+l.scrollLeft-u.x,y:c.top+l.scrollTop-u.y,width:c.width,height:c.height}}function Le(t){var e=new Map,n=new Set,i=[];function o(t){n.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach(function(t){if(!n.has(t)){var i=e.get(t);i&&o(i)}}),i.push(t)}return t.forEach(function(t){e.set(t.name,t)}),t.forEach(function(t){n.has(t.name)||o(t)}),i}var Se={placement:"bottom",modifiers:[],strategy:"absolute"};function je(){for(var t=arguments.length,e=new Array(t),n=0;n{const n=t.nodeName.toLowerCase();return e.includes(n)?!Ie.has(n)||Boolean(Fe.test(t.nodeValue)):e.filter(t=>t instanceof RegExp).some(t=>t.test(n))};const qe={allowList:Be,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},ze={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},We={entry:"(string|element|function|null)",selector:"(string|element)"};class Re extends H{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return qe}static get DefaultType(){return ze}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=M(M({},this._config.content),t),this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,n]of Object.entries(this._config.content))this._setContent(t,n,e);const e=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&e.classList.add(...n.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,n]of Object.entries(t))super._typeCheckConfig({selector:e,entry:n},We)}_setContent(t,e,n){const i=W.findOne(n,t);i&&((e=this._resolvePossibleFunction(e))?r(e)?this._putElementInTemplate(s(e),i):this._config.html?i.innerHTML=this._maybeSanitize(e):i.textContent=e:i.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,n){if(!t.length)return t;if(n&&"function"==typeof n)return n(t);const i=(new window.DOMParser).parseFromString(t,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const t of o){const n=t.nodeName.toLowerCase();if(!Object.keys(e).includes(n)){t.remove();continue}const i=[].concat(...t.attributes),o=[].concat(e["*"]||[],e[n]||[]);for(const e of i)He(e,o)||t.removeAttribute(e.nodeName)}return i.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return p(t,[void 0,this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Ve=new Set(["sanitize","allowList","sanitizeFn"]),Ye="fade",Ue="show",Ke=".tooltip-inner",Qe=".".concat("modal"),Ge="hide.bs.modal",Xe="hover",$e="focus",Je="click",Ze={AUTO:"auto",TOP:"top",RIGHT:f()?"left":"right",BOTTOM:"bottom",LEFT:f()?"right":"left"},tn={allowList:Be,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"},en={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 nn extends q{constructor(t,e){if(void 0===Me)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)");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 tn}static get DefaultType(){return en}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),j.off(this._element.closest(Qe),Ge,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=(a(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),j.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(Ue),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))j.on(t,"mouseover",c);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())return;if(j.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(Ue),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))j.off(t,"mouseover",c);this._activeTrigger[Je]=!1,this._activeTrigger[$e]=!1,this._activeTrigger[Xe]=!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(Ye,Ue),e.classList.add("bs-".concat(this.constructor.NAME,"-auto"));const n=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",n),this._isAnimated()&&e.classList.add(Ye),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Re(M(M({},this._config),{},{content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)})),this._templateFactory}_getContentForTemplate(){return{[Ke]: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(Ye)}_isShown(){return this.tip&&this.tip.classList.contains(Ue)}_createPopper(t){const e=p(this._config.placement,[this,t,this._element]),n=Ze[e.toUpperCase()];return Ne(this._element,t,this._getPopperConfig(n))}_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 p(t,[this._element,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:".".concat(this.constructor.NAME,"-arrow")}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return M(M({},e),p(this._config.popperConfig,[void 0,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=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger[Je]=!(e._isShown()&&e._activeTrigger[Je]),e.toggle()});else if("manual"!==e){const t=e===Xe?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=e===Xe?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?$e:Xe]=!0,e._enter()}),j.on(this._element,n,this._config.selector,t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?$e:Xe]=e._element.contains(t.relatedTarget),e._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},j.on(this._element.closest(Qe),Ge,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))Ve.has(t)&&delete e[t];return t=M(M({},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:s(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,n]of Object.entries(this._config))this.constructor.Default[e]!==n&&(t[e]=n);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=nn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError('No method named "'.concat(t,'"'));e[t]()}})}}d(nn);const on=".code-header>button",rn="timeout",sn="data-title-succeed",an="data-bs-original-title",cn=2e3;function ln(t){if(t.hasAttribute(rn)){let e=t.getAttribute(rn);if(Number(e)>Date.now())return!0}return!1}function un(t){t.setAttribute(rn,Date.now()+cn)}function fn(t){t.removeAttribute(rn)}function dn(){const t=document.querySelectorAll(on);if(0===t.length)return;const e=new ClipboardJS(on,{target:t=>t.parentNode.nextElementSibling.querySelector("code .rouge-code")});[...t].map(t=>new nn(t,{placement:"left"})),e.on("success",t=>{const e=t.trigger;(t.clearSelection(),ln(e))||(e.children[0].setAttribute("class","fas fa-check"),function(t){const e=t.getAttribute(sn);t.setAttribute(an,e),nn.getInstance(t).show()}(e),un(e),setTimeout(()=>{!function(t){nn.getInstance(t).hide(),t.removeAttribute(an)}(e),function(t){t.children[0].setAttribute("class","far fa-clipboard")}(e),fn(e)},cn))})}const pn="data-src",hn="data-lqip",mn="shimmer",gn="blur";function bn(t){this.parentElement.classList.remove(t)}function vn(){this.complete&&(this.hasAttribute(hn)?bn.call(this,gn):bn.call(this,mn))}function yn(){const t=this.getAttribute(pn);this.setAttribute("src",encodeURI(t)),this.removeAttribute(pn)}const _n=".popup:not(.dark)",wn=".popup:not(.light)";let En=_n;class On{static get attrTimestamp(){return"data-ts"}static get attrDateFormat(){return"data-df"}static get locale(){return document.documentElement.getAttribute("lang").substring(0,2)}static getTimestamp(t){return Number(t.getAttribute(this.attrTimestamp))}static getDateFormat(t){return t.getAttribute(this.attrDateFormat)}}var An;const xn=document.getElementById("toc-bar"),Cn=document.getElementById("toc-solo-trigger"),Tn=document.getElementsByClassName("toc-trigger"),Ln=document.getElementById("toc-popup"),Sn=document.getElementById("toc-popup-close"),jn="overflow-hidden",Dn="closing";class kn{static initBar(){new IntersectionObserver(t=>{t.forEach(t=>{xn.classList.toggle("invisible",t.isIntersecting)})},{rootMargin:"-".concat(k(kn,this,Nn)._,"px 0px 0px 0px")}).observe(Cn),Pn._=k(kn,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach(t=>{t.onclick=()=>this.hidePopup()})}static refresh(){k(kn,this,Pn)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return Ln.open}static showPopup(){this.lockScroll(!0),Ln.showModal();Ln.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){Ln.toggleAttribute(Dn),Ln.addEventListener("animationend",()=>{Ln.toggleAttribute(Dn),Ln.close()},{once:!0}),this.lockScroll(!1)}static lockScroll(t){document.documentElement.classList.toggle(jn,t),document.body.classList.toggle(jn,t)}static clickBackdrop(t){if(Ln.hasAttribute(Dn))return;const e=t.target.getBoundingClientRect();(t.clientXe.right||t.clientYe.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...Tn].forEach(t=>{t.onclick=()=>this.showPopup()}),Ln.onclick=t=>this.clickBackdrop(t),Sn.onclick=()=>this.hidePopup(),Ln.oncancel=t=>{t.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var Pn={_:!0},Nn={_:48};P(kn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:k(An=kn,An,Nn)._});class Mn{static refresh(){tocbot.refresh(this.options)}static init(){tocbot.init(this.options)}}P(Mn,"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32});const Bn=matchMedia("(min-width: 1200px)");function In(t){t.matches?(kn.popupOpened&&kn.hidePopup(),Mn.refresh()):kn.refresh()}const Fn="mermaid",Hn=Theme.getThemeMapper("default","dark");function qn(t){if(t.source===window&&t.data&&t.data.id===Theme.ID){[...document.getElementsByClassName(Fn)].forEach(t=>{const e=t.previousSibling.children.item(0).textContent;t.textContent=e,t.removeAttribute("data-processed")});const t=Hn[Theme.visualState];mermaid.initialize({theme:t}),mermaid.init(null,".".concat(Fn))}}function zn(t){const e=t.textContent,n=t.parentElement;n.classList.add("d-none");const i=document.createElement("pre");i.classList.add(Fn);const o=document.createTextNode(e);i.appendChild(o),n.after(i)}const Wn=document.getElementById("mode-toggle");const Rn=document.getElementById("sidebar"),Vn=document.getElementById("sidebar-trigger"),Yn=document.getElementById("mask");class Un{static toggle(){Kn._=k(Un,this,!k(Un,this,Kn)._),document.body.toggleAttribute("sidebar-display",k(Un,this,Kn)._),Rn.classList.toggle("z-2",k(Un,this,Kn)._),Yn.classList.toggle("d-none",!k(Un,this,Kn)._)}}var Kn={_:!1};const Qn=document.getElementById("sidebar-trigger"),Gn=document.getElementById("search-trigger"),Xn=document.getElementById("search-cancel"),$n=document.querySelectorAll("#main-wrapper>.container>.row"),Jn=document.getElementById("topbar-title"),Zn=document.getElementById("search"),ti=document.getElementById("search-result-wrapper"),ei=document.getElementById("search-results"),ni=document.getElementById("search-input"),ii=document.getElementById("search-hints"),oi="d-block",ri="d-none",si="input-focus",ai="d-flex";class ci{static on(){Qn.classList.add(ri),Jn.classList.add(ri),Gn.classList.add(ri),Zn.classList.add(ai),Xn.classList.add(oi)}static off(){Xn.classList.remove(oi),Zn.classList.remove(ai),Qn.classList.remove(ri),Jn.classList.remove(ri),Gn.classList.remove(ri)}}class li{static on(){this.resultVisible||(ti.classList.remove(ri),$n.forEach(t=>{t.classList.add(ri)}),this.resultVisible=!0)}static off(){this.resultVisible&&(ei.innerHTML="",ii.classList.contains(ri)&&ii.classList.remove(ri),ti.classList.add(ri),$n.forEach(t=>{t.classList.remove(ri)}),ni.textContent="",this.resultVisible=!1)}}function ui(){return Xn.classList.contains(oi)}P(li,"resultVisible",!1),function(){const t=document.querySelectorAll("article img");if(0===t.length)return;t.forEach(t=>{t.addEventListener("load",vn)}),document.querySelectorAll('article img[loading="lazy"]').forEach(t=>{t.complete&&bn.call(t,mn)});const e=document.querySelectorAll("article img[".concat(hn,'="true"]'));e.length&&e.forEach(t=>{yn.call(t)})}(),function(){if(null===document.querySelector('main>article[data-toc="true"]'))return;Bn.matches?Mn.init():kn.init(),document.getElementById("toc-wrapper").classList.remove("invisible"),Bn.onchange=In}(),function(){if(null===document.querySelector(".popup"))return;const t=!(null===document.querySelector(".popup.light")&&null===document.querySelector(".popup.dark"));Theme.visualState===Theme.DARK&&(En=wn);let e=GLightbox({selector:"".concat(En)});if(t&&Theme.switchable){let t=null;window.addEventListener("message",n=>{n.source===window&&n.data&&n.data.id===Theme.ID&&function(t,e){En=En===_n?wn:_n,null===e&&(e=GLightbox({selector:"".concat(En)})),[t,e]=[e,t]}(e,t)})}}(),Vn.onclick=Yn.onclick=()=>Un.toggle(),dayjs.locale(On.locale),dayjs.extend(window.dayjs_plugin_localizedFormat),document.querySelectorAll("[".concat(On.attrTimestamp,"]")).forEach(t=>{const e=dayjs.unix(On.getTimestamp(t)),n=e.format(On.getDateFormat(t));if(t.textContent=n,t.removeAttribute(On.attrTimestamp),t.removeAttribute(On.attrDateFormat),t.hasAttribute("data-bs-toggle")&&"tooltip"===t.getAttribute("data-bs-toggle")){const n=e.format("llll");t.setAttribute("data-bs-title",n)}}),dn(),function(){const t=document.getElementById("copy-link");null!==t&&(t.addEventListener("click",t=>{const e=t.target;ln(e)||navigator.clipboard.writeText(window.location.href).then(()=>{const t=e.getAttribute(an),n=e.getAttribute(sn);e.setAttribute(an,n),nn.getInstance(e).show(),un(e),setTimeout(()=>{e.setAttribute(an,t),fn(e)},cn)})}),t.addEventListener("mouseleave",t=>{nn.getInstance(t.target).hide()}))}(),Gn.addEventListener("click",()=>{ci.on(),li.on(),ni.focus()}),Xn.addEventListener("click",()=>{ci.off(),li.off()}),ni.addEventListener("focus",()=>{Zn.classList.add(si)}),ni.addEventListener("focusout",()=>{Zn.classList.remove(si)}),ni.addEventListener("input",()=>{""===ni.value?ui()?ii.classList.remove(ri):li.off():(li.on(),ui()&&ii.classList.add(ri))}),function(){if("undefined"==typeof mermaid||"function"!=typeof mermaid.initialize)return;let t={theme:Hn[Theme.visualState]};[...document.getElementsByClassName("language-mermaid")].forEach(zn),mermaid.initialize(t),Theme.switchable&&window.addEventListener("message",qn)}(),Wn&&Wn.addEventListener("click",()=>{Theme.flip()}),function(){const t=document.getElementById("back-to-top");window.addEventListener("scroll",()=>{window.scrollY>50?t.classList.add("show"):t.classList.remove("show")}),t.addEventListener("click",()=>{window.scrollTo({top:0})})}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map(t=>new nn(t))}(); diff --git a/assets/js/dist/theme.min.js b/assets/js/dist/theme.min.js new file mode 100644 index 0000000..5c84cfb --- /dev/null +++ b/assets/js/dist/theme.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.4.1 | Ā© 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +var Theme=function(){"use strict";function t(t,e,i){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:i;throw new TypeError("Private element is not present on this object")}function e(e,i,s){return s(t(e,i))}var i;class s{static get DARK(){return"dark"}static get LIGHT(){return"light"}static get ID(){return"theme-mode"}static get visualState(){return e(s,this,o)?e(s,this,n):e(s,this,h)?this.DARK:this.LIGHT}static getThemeMapper(t,e){return{[this.LIGHT]:t,[this.DARK]:e}}static init(){this.switchable&&(t(s,this,b)._.addEventListener("change",()=>{const i=e(s,this,n);t(s,this,a).call(this),i!==this.visualState&&t(s,this,l).call(this)}),e(s,this,o)&&(e(s,this,r)?t(s,this,u).call(this):t(s,this,c).call(this)))}static flip(){e(s,this,o)?t(s,this,a).call(this):e(s,this,h)?t(s,this,c).call(this):t(s,this,u).call(this),t(s,this,l).call(this)}}function n(e){return sessionStorage.getItem(t(i,e,g)._)||document.documentElement.getAttribute(t(i,e,v)._)}function r(t){return e(i,t,n)===t.DARK}function o(t){return null!==e(i,t,n)}function h(e){return t(i,e,b)._.matches}function u(){document.documentElement.setAttribute(t(i,this,v)._,this.DARK),sessionStorage.setItem(t(i,this,g)._,this.DARK)}function c(){document.documentElement.setAttribute(t(i,this,v)._,this.LIGHT),sessionStorage.setItem(t(i,this,g)._,this.LIGHT)}function a(){document.documentElement.removeAttribute(t(i,this,v)._),sessionStorage.removeItem(t(i,this,g)._)}function l(){window.postMessage({id:this.ID},"*")}i=s;var m,f,d,g={_:"mode"},v={_:"data-mode"},b={_:window.matchMedia("(prefers-color-scheme: dark)")};return m=s,f="switchable",d=!document.documentElement.hasAttribute(t(i,i,v)._),(f=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var s=i.call(t,e);if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(f))in m?Object.defineProperty(m,f,{value:d,enumerable:!0,configurable:!0,writable:!0}):m[f]=d,s.init(),s}(); diff --git a/categories/ibm-i/index.html b/categories/ibm-i/index.html new file mode 100644 index 0000000..7b77777 --- /dev/null +++ b/categories/ibm-i/index.html @@ -0,0 +1 @@ + IBM i | Cole Maxwell
diff --git a/categories/index.html b/categories/index.html new file mode 100644 index 0000000..1327834 --- /dev/null +++ b/categories/index.html @@ -0,0 +1 @@ + Categories | Cole Maxwell
Categories
diff --git a/feed.xml b/feed.xml new file mode 100644 index 0000000..785f01e --- /dev/null +++ b/feed.xml @@ -0,0 +1 @@ + https://colemaxwell.dev/Cole MaxwellA site about software craftsmanship, system design, and Cole Maxwell. 2026-03-07T15:58:24-06:00 Cole Maxwell https://colemaxwell.dev/ Jekyll Ā© 2026 Cole Maxwell /assets/img/favicons/favicon.ico /assets/img/favicons/favicon-96x96.png Using ODBC on IBM i for Local Linux Development2022-08-03T19:39:00-05:00 2022-08-03T21:48:45-05:00 https://colemaxwell.dev/posts/ibmi-odbc-on-linux/ Cole Maxwell If you are new to the IBM i platform coming right out of school, like me, or you are a developer used to working exclusively with open-source tooling, the IBM i platform can be a strange place. The legacy application support is industry leading, to both the benefit and downside of the platform. Under the hood there is IBM’s powerful and well tested relational database, DB2 for i. So far, I like... Utilize a RESTful API with IBMi QSYS_HTTP Tools in SQL2022-07-14T15:30:55-05:00 2022-08-03T21:32:53-05:00 https://colemaxwell.dev/posts/rest-api-ibmi-qsys2/ Cole Maxwell The Api This demo used the fakeStoreApi which is a free online REST API that you can use whenever you need Pseudo-real data for without running any server-side code. It’s awesome for teaching purposes, sample codes, tests, etc. This API does not require authentication for requests A list of other public APIs can be found here HTTP Functions Overview These HTTP functions are used to make ... diff --git a/index.html b/index.html new file mode 100644 index 0000000..82d486e --- /dev/null +++ b/index.html @@ -0,0 +1 @@ + Cole Maxwell
diff --git a/posts/ibmi-odbc-on-linux/index.html b/posts/ibmi-odbc-on-linux/index.html new file mode 100644 index 0000000..8a6a84e --- /dev/null +++ b/posts/ibmi-odbc-on-linux/index.html @@ -0,0 +1,119 @@ + Using ODBC on IBM i for Local Linux Development | Cole Maxwell
Post

Using ODBC on IBM i for Local Linux Development

Using ODBC on IBM i for Local Linux Development

If you are new to the IBM i platform coming right out of school, like me, or you are a developer used to working exclusively with open-source tooling, the IBM i platform can be a strange place. The legacy application support is industry leading, to both the benefit and downside of the platform. Under the hood there is IBM’s powerful and well tested relational database, DB2 for i. So far, I like what I see. Is it possible to get the best of the open-source tooling while leveraging the power of an existing enterprise grade database? My initial take is yes, and the ODBC driver on the platform is the answer.

The Open Database Connectivity (ODBC) standard is an application programming interface (API) for accessing database management systems (DBMS). The designers of ODBC aimed to make it independent of database systems and operating systems. From what I have seen so far IBM is continuing to make improvements to the driver in the latest release of IBM i. I personally view ODBC as the future of the platform and a key factor to help IBM i remain relevant as the years progress.

As I have gotten my start, the other open-source advocates on the IBM i platform have provided many excellent articles, source code examples, and video lessons that have aided my on boarding to the platform. However, even though the topic of ODBC has been extensively covered I still felt like a comprehensive guide for connecting locally to DB2 for i via ODBC on a linux development machine was missing.

This post has compiled the good, but scattered, information to explain how an open-source developer would go about connecting up their local linux machine to DB2 for i to develop an application in an open-source language of their choice. I want to give a big thank you and credit to Liam Allan, Kevin Adler, Seiden Group, and FormaServe for helping get this information out to the community. They are the heavy hitters aiding the open-source embracement on IBM i. Much of the following is copied directly from their blogs and video resources. Please see the references at the end of this post.

Prerequisites

You must have the ODBC driver installed on the IBM i you want to connect to. See Seiden Group’s guide1 for Using YUM to Install or Update the IBM i ODBC Driver

Enhance Your Understanding

If your background is exclusively developing on the IBM i (AS400) and you don’t have experience with Linux or other Unix-like operating systems you may want to spend some time reading about the basic file structure of Unix-like operating systems. You will find these patterns in the /QOpenSys directory on IBM i and it will aid your journey to better understand open-source on IBM i and even Linux.

Installing the Repository

IBM has made RPM and DEB package manager repositories for Linux available directly from IBM for the IBM i Access Client Solutions application package, which includes the IBM i Access ODBC driver.

With this change, it is much easier to install the driver on Linux. It also makes it easier for automation to install the driver as well, whether that’s Ansible system deployment scripts or Dockerfiles for building ODBC-based Linux container apps. In addition, it makes updating the driver much easier too, since the process uses the same upgrade procedure as the rest of the system packages2.

The repositories are located under: https://public.dhe.ibm.com/software/ibmi/products/odbc/.

Add the Repository to the Package Manager

First, you must add IBM’s package repository to your distribution’s package manager.

Debian-based and Ubuntu-based Distribution Setup

1
+
curl https://public.dhe.ibm.com/software/ibmi/products/odbc/debs/dists/1.1.0/ibmi-acs-1.1.0.list | sudo tee /etc/apt/sources.list.d/ibmi-acs-1.1.0.list
+

Red Hat-based Distribution Setup

1
+
curl https://public.dhe.ibm.com/software/ibmi/products/odbc/rpms/ibmi-acs.repo | sudo tee /etc/yum.repos.d/ibmi-acs.repo
+

SUSE-based Distribution Setup

1
+
curl https://public.dhe.ibm.com/software/ibmi/products/odbc/rpms/ibmi-acs.repo | sudo tee /etc/zypp/repos.d/ibmi-acs.repo
+

Installing the ODBC driver

Now install the package via the distribution’s package manager.

Debian-based and Ubuntu-based Distribution Installation

1
+2
+
sudo apt update
+sudo apt install ibm-iaccess
+

Red Hat-based Distribution Installation

1
+
sudo dnf install --refresh ibm-iaccess
+

SUSE-based Distribution Installation

1
+2
+
sudo zypper refresh
+sudo zypper install ibm-iaccess
+

Configuring the Connection (FYI)

Now that you have the IBM i Access ODBC Driver installed on your system, you are ready to connect to Db2 on i. Below is some background information on the two methods to create a connection.

Connection Strings

ODBC uses a connection string with keywords to create a database connection. Keywords are case insensitive, and values passed are separated from the keyword by an equals sign (ā€œ=ā€) and end with a semi-colon (ā€œ;ā€). As long as you are using an ODBC database connector, you should be able to pass an identical connection string in any language or technology and be confident that it will correctly connect to Db2 on i. A common connection string may look something like3:

1
+
DRIVER=IBM i Access ODBC Driver;SYSTEM=my.ibmi.system;UID=foo;PWD=bar;
+

In the above example, we define the following connection options:

  • DRIVER: The ODBC driver for Db2 for i that we are using to connect to the database (and that we installed above)
  • SYSTEM: The location of your IBM i system, which can be its network name, IP address, or similar
  • UID: The User ID that you want to use on the IBM i system that you are connecting to
  • PWD: The password of the User ID passed above.

These are only some of the over 70 connection options you can use when connecting to Db2 on i using the IBM i Access ODBC Driver. A complete list of IBM i Access ODBC Driver connection options can be found at the IBM Knowledge Center: Connection string keywords webpage. If passing connections options through the connection string, be sure to use the keyword labeled with Connection String.

DSNs

As you add more and more options to your connection string, your connection string can become quite cumbersome. Luckily, ODBC offers another way of defining connection options called a DSN (datasource name). Where you define your DSN will depend on whether you are using Windows ODBC driver manager or unixODBC on Linux or IBM i3.

IBM i, Linux distributions, and macOS use unixODBC and have nearly identical methods of setting up your drivers and your DSNs.

odbc.ini and .odbc.ini

When using unixODBC, DSNs are defined in odbc.ini and .odbc.ini (note the . preceding the latter). These two files have the same structure, but have one important difference:

odbc.ini defines DSNs that are available to all users on the system. If there are DSNs that should be available to everyone, they can be defined and shared here. Likely, this file is located in the default location, which depends on whether you are on IBM i or Linux:

IBM i: /QOpenSys/etc/odbc.ini

Linux: /etc/unixODBC/odbc.ini

If you want to make sure, the file can be found by running:

1
+
odbcinst -j
+

.odbc.ini is found in your home directory ~/ and defines DSNs that are available only to you. If you are going to define DSNs with your personal username and password, this is the place to do it.

In both odbc.ini and .odbc.ini, you name your DSN with [] brackets, then specify keywords and values below it. An example of a DSN stored in ~/.odbc.ini used to connect to an IBM i system with private credentials might look like:

1
+2
+3
+4
+5
+6
+7
+8
+9
+
[MYDSN]
+Description            = My IBM i System
+Driver                 = IBM i Access ODBC Driver
+System                 = my.ibmi.system
+UserID                 = foo
+Password               = bar
+Naming                 = 0
+DefaultLibraries       = MYLIB
+TrueAutoCommit         = 1
+

In the above example, we define the following connection options:

  • Driver: The ODBC driver for Db2 for i that we are using to connect to the database (and that we installed above)
  • System: The location of your IBM i system, which can be its network name, IP address, or similar
  • UserID: The User ID that you want to use on the IBM i system that you are connecting to
  • Password: The password of the User ID passed above.
  • Naming: Specifies the naming convention used when referring to tables. For more information, refer to Naming conventions in the DB2 for i SQL reference.
  • DefaultLibraries: Specifies the IBM i libraries to add to the server job’s library list as well as the default library used to resolve unqualified names. The libraries can be delimited by commas or spaces.
  • TrueAutoCommit: Specifies how to handle autocommit support

Like connection string keywords, DSN keywords can be found at the IBM Knowledge Center: Connection string keywords webpage. When passing connection options through a DSN, be sure to use the keyword labeled with ODBC.INI.

User Level Connection

  1. In your home directory create a .odbc.ini file
1
+
touch .odbc.ini
+
  1. Using your text editor of choice (vi, vim, nano, ect…) add the following DSN configuration, changing the UserID and Password to your IBM i username and password.
1
+2
+3
+4
+5
+6
+7
+8
+
[devserver]
+Description            = Connection to development power server
+Driver                 = IBM i Access ODBC Driver
+System                 = devserver.mycompany.com
+UserID                 = myUsername
+Password               = myPassword
+Naming                 = 0
+DefaultLibraries       = businessDataLib,myUserLib,myBusinessUtils
+

In the above example, we define the following connection options:

  • Driver: The ODBC driver for Db2 for i that we are using to connect to the database (This must be installed on the OS)
  • System: The location of your IBM i system, which can be its network name, IP address, or similar
  • UserID: The User ID that you want to use on the IBM i system that you are connecting to
  • Password: The password of the User ID passed above.
  • Naming: Specifies the naming convention used when referring to tables. A 0 indicates you want SQLs naming convention, which is likely what you want for running queries in any program you write.
  • DefaultLibraries: Specifies the IBM i libraries to add to the server job’s library list as well as the default library used to resolve unqualified names. The libraries can be delimited by commas or spaces.

Testing the Connection

The isql command is included with the open source components of unixODBC and unixODBC-devel. You can use this command to run SQL queries via ODBC right from the command-line. To make the connection to the DSN configured above pass in the DSN name:

1
+
isql devserver
+

If the connection is configured correctly, you will get a prompt that looks like this:

1
+2
+3
+4
+5
+6
+7
+8
+9
+
+---------------------------------------+
+| Connected!                            |
+|                                       |
+| sql-statement                         |
+| help [tablename]                      |
+| quit                                  |
+|                                       |
++---------------------------------------+
+SQL>
+

There is an included sample customer table (qiws.qcustcdt) on all IBM i systems that can be used for testing4

Type this command into the SQL> prompt:

1
+
select * from qiws.qcustcdt
+

The results will look like this:

1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+
SQL> select * from qiws.qcustcdt
++---------+---------+-----+--------------+-------+------+--------+-------+-------+---------+---------+
+| CUSNUM  | LSTNAM  | INIT| STREET       | CITY  | STATE| ZIPCOD | CDTLMT| CHGCOD| BALDUE  | CDTDUE  |
++---------+---------+-----+--------------+-------+------+--------+-------+-------+---------+---------+
+| 938472  | Henning | G K | 4859 Elm Ave | Dallas| TX   | 75217  | 5000  | 3     | 37.00   | 0       |
+| 839283  | Jones   | B D | 21B NW 135 St| Clay  | NY   | 13041  | 400   | 1     | 100.00  | 0       |
+| 392859  | Vine    | S S | PO Box 79    | Broton| VT   | 5046   | 700   | 1     | 439.00  | 0       |
+| 938485  | Johnson | J A | 3 Alpine Way | Helen | GA   | 30545  | 9999  | 2     | 3987.50 | 33.50   |
+| 397267  | Tyron   | W E | 13 Myrtle Dr | Hector| NY   | 14841  | 1000  | 1     | 0       | 0       |
+| 389572  | Stevens | K L | 208 Snow Pass| Denver| CO   | 80226  | 400   | 1     | 58.75   | 1.50    |
+| 846283  | Alison  | J S | 787 Lake Dr  | Isle  | MN   | 56342  | 5000  | 3     | 10.00   | 0       |
+| 475938  | Doe     | J W | 59 Archer Rd | Sutter| CA   | 95685  | 700   | 2     | 250.00  | 100.00  |
+| 693829  | Thomas  | A N | 3 Dove Circle| Casper| WY   | 82609  | 9999  | 2     | 0       | 0       |
+| 593029  | Williams| E D | 485 SE 2 Ave | Dallas| TX   | 75218  | 200   | 1     | 25.00   | 0       |
+| 192837  | Lee     | F L | 5963 Oak St  | Hector| NY   | 14841  | 700   | 2     | 489.50  | .50     |
+| 583990  | Abraham | M T | 392 Mill St  | Isle  | MN   | 56342  | 9999  | 3     | 500.00  | 0       |
++---------+---------+-----+--------------+-------+------+--------+-------+-------+---------+---------+
+SQLRowCount returns -1
+12 rows fetched
+SQL>
+

To exit the prompt press Ctr + C or type quit into the prompt

Next Steps

Now that you have the ODBC driver installed and configured on you development machine you can use the ODBC drivers in many of your favorite open-source programing languages. See IBM’s Db2 for Developers page for supported languages.

Examples of connections in programing languages:

Other Helpful Articles:

References

This post is licensed under CC BY 4.0 by the author.
diff --git a/posts/rest-api-ibmi-qsys2/index.html b/posts/rest-api-ibmi-qsys2/index.html new file mode 100644 index 0000000..c4beb1d --- /dev/null +++ b/posts/rest-api-ibmi-qsys2/index.html @@ -0,0 +1,235 @@ + Utilize a RESTful API with IBMi QSYS_HTTP Tools in SQL | Cole Maxwell
Post

Utilize a RESTful API with IBMi QSYS_HTTP Tools in SQL

Utilize a RESTful API with IBMi QSYS_HTTP Tools in SQL

The Api

This demo used the fakeStoreApi which is a free online REST API that you can use whenever you need Pseudo-real data for without running any server-side code. It’s awesome for teaching purposes, sample codes, tests, etc. This API does not require authentication for requests

A list of other public APIs can be found here

HTTP Functions Overview

These HTTP functions are used to make HTTP requests that use web services. These functions allow the SQL programmer to use Representational State Transfer (RESTful) via SQL, including Embedded SQL. They provide the same capabilities as the SYSTOOLS HTTP functions without the overhead of creating a JVM.

These HTTP functions exist in QSYS2 and have lower overhead than the SYSTOOLS HTTP functions. Additional benefits of the QSYS2 HTTP functions are HTTP authentication, proxy support, configurable redirection attempts, and configurable SSL options.

The URL parameter supports http: and https: URLs. The https: URL indicates that network communication should take place over a secure communication channel. An https request uses TLS (Transport Layer Security) to create the secure channel. This secure channel encrypts any transmitted data and also prevents man-in-the-middle attacks. Any communication that contains secure information should use https instead of http. Because of the sensitive nature of userids and passwords, HTTP authentication is not allowed for http URLs.

Foundational HTTP functions

The foundational functions are named according to the two dimensions used when making HTTP requests. The first dimension is the HTTP operation. There are 5 different HTTP operations: GET, PUT, POST, PATCH, and DELETE. The second dimension indicates whether the verbose version of the function should be used. The non-verbose functions are scalar functions that return the response as a CLOB. The verbose functions are table functions that return a single row, which includes the return header information that is sent from the HTTP server. The header information is formatted as JSON. The names of the functions reflect these dimensions. For example, HTTP_GET_VERBOSE uses the GET operation from the first dimension and the VERBOSE setting from the second dimension. All the functions return CLOB data.

See the IBM Docs for more details

Get a List of Products

The first demo receives a list of products from the fakeStoreApi as JSON. Here is a look at the JSON we can expect to receive:

1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+
[
+  {
+    "id": 1,
+    "title": "Fjallraven - Foldsack No. 1 Backpack, Fits 15 Laptops",
+    "price": 109.95,
+    "description": "Your perfect pack for everyday use and walks in the forest. Stash your laptop (up to 15 inches) in the padded sleeve, your everyday",
+    "category": "men's clothing",
+    "image": "https://fakestoreapi.com/img/81fPKd-2AYL._AC_SL1500_.jpg",
+    "rating": {
+      "rate": 3.9,
+      "count": 120
+    }
+  },
+  {
+    "id": 2,
+    "title": "Mens Casual Premium Slim Fit T-Shirts ",
+    "price": 22.3,
+    "description": "Slim-fitting style, contrast raglan long sleeve, three-button henley placket, light weight & soft fabric for breathable and comfortable wearing. And Solid stitched shirts with round neck made for durability and a great fit for casual fashion wear and diehard baseball fans. The Henley style round neckline includes a three-button placket.",
+    "category": "men's clothing",
+    "image": "https://fakestoreapi.com/img/71-3HjGNDUL._AC_SY879._SX._UX._SY._UY_.jpg",
+    "rating": {
+      "rate": 4.1,
+      "count": 259
+    }
+  }
+]
+

This is actually an array of two JSON objects. The JSON tools provided by DB2 are smart and will know to treat each object separately. To make sure we are getting the expected JSON we can print the results of QSYS2.HTTP_GET with the VALUES keyword.

1
+2
+3
+4
+
VALUES QSYS2.HTTP_GET(
+            'http://fakestoreapi.com/products?limit=2',
+           ''
+           );
+

QSYS2.HTTP_GET takes two arguments. The first argument is the URL of the API endpoint the GET request will be sent to. In this case it is the http://fakestoreapi.com/products endpoint and the limit=2 parameter is added to only get two items total. The second argument is for HTTP header parameters. In this case no HTTP header parameters need to be specified to complete the request so this field can be left empty.

The JSON_TABLE function can take any QSYS2.HTTP_XXXX that produces JSON as an argument. The values from the JSON keys can then be extracted and placed directly into a table.

1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+
SELECT *
+FROM JSON_TABLE(
+        QSYS2.HTTP_GET(
+            'http://fakestoreapi.com/products?limit=10',
+            ''
+        ),
+        '$' COLUMNS(
+            name VARCHAR(75) PATH 'lax $.title',
+            totalRatings INT PATH 'lax $.rating.count'
+        )
+    );
+

This example will extract the values from the title (name of item) key and the nested field count (total number of ratings) key in the ratings array. and then place them into a table with the column names name and totalRatings.

Result:

NameRating
Fjallraven - Foldsack No. 1 Backpack, Fits 15 Laptops120
Mens Casual Premium Slim Fit T-Shirts259
Mens Cotton Jacket500
Mens Casual Slim Fit430
John Hardy Women’s Legends Naga Gold & Silver Dragon Station Chain Bracelet400
Solid Gold Petite Micropave70
White Gold Plated Princess400
Pierced Owl Rose Gold Plated Stainless Steel Double100
WD 2TB Elements Portable External Hard Drive - USB 3.0203
SanDisk SSD PLUS 1TB Internal SSD - SATA III 6 Gb/s470

POST a New User

The next example is sending a POST request to the https://fakestoreapi.com/users endpoint to create a new user. The fakeStoreApi docs indicate that the body of our HTTP POST request should contain the following JSON object:

1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+
{
+    "email":"John@gmail.com",
+    "username":"johnd",
+    "password":"m38rmF$",
+    "name":{
+        "firstname":"John",
+        "lastname":"Doe"
+    },
+    "address":{
+        "city":"kilcoole",
+        "street":"7835 new road",
+        "number":3,
+        "zipcode":"12926-3874",
+        "geolocation":{
+            "lat":"-37.3159",
+            "long":"81.1496"
+        }
+    },
+    "phone": "1-570-236-7033"
+}
+

Upon a successful add of a new user the API will return a 200 response code and a JSON object with the user’s new id:

1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+
{
+  "address": {
+    "geolocation": {
+      "lat": "-37.3159",
+      "long": "81.1496"
+    },
+    "city": "kilcoole",
+    "street": "7835 new road"
+  },
+  "_id": "62c73539f0321700139f4682",
+  "id": 1,
+  "email": "John@gmail.com",
+  "username": "johnd",
+  "password": "m38rmF$",
+  "phone": "1-570-236-7033"
+}
+

QSYS2.HTTP_POST takes three This time arguments the URL, the HTTP body and the HTTP header parameters. This time the URL and body arguments of the QSYS2.HTTP_POST will be assigned to variables for readability.

We also need to specify the ā€œContent-Typeā€ in the HTTP header to indicate that our HTTP body will be in JSON format. By default QSYS2.HTTP_POST specifies the content type of the body to be XML. To override this setting we pass in the header settings in JSON format:

1
+
{"header":"Content-Type,application/json;charset=utf-8"}
+

More information about the different header settings that can to passed to the QSYS2.HTTP_XXXX tools can be found in the IBM docs

Here all the moving parts put together:

1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+
Create or replace variable @userURL varchar(50) ;
+SET @userURL = 'http://fakestoreapi.com/users';
+
+Create or replace variable @postBody varchar(500) ;
+SET @postBody = '{
+    "email":"John@gmail.com",
+    "username":"johnd",
+    "password":"m38rmF$",
+    "name":{
+        "firstname":"John",
+        "lastname":"Doe"
+    },
+    "address":{
+        "city":"kilcoole",
+        "street":"7835 new road",
+        "number":3,
+        "zipcode":"12926-3874",
+        "geolocation":{
+            "lat":"-37.3159",
+            "long":"81.1496"
+        }
+    },
+    "phone": "1-570-236-7033"
+}';
+
+SELECT *
+FROM JSON_TABLE(
+    QSYS2.HTTP_POST(
+        @userURL,
+        @postBody,
+        '{"header":"Content-Type,application/json;charset=utf-8"}'
+    ),
+    '$' COLUMNS(
+        testID INT PATH 'lax $.id',
+        email VARCHAR(50) PATH 'lax $.email',
+        username VARCHAR(50) PATH 'lax $.username',
+        password VARCHAR(50) PATH 'lax $.password'
+    )
+);
+

And the result:

TESTIDEMAILUSERNAMEPASSWORD
1John@gmail.comjohndm38rmF$
This post is licensed under CC BY 4.0 by the author.
diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..432a4c1 --- /dev/null +++ b/robots.txt @@ -0,0 +1,5 @@ +User-agent: * + +Disallow: /norobots/ + +Sitemap: https://colemaxwell.dev/sitemap.xml diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..ff6cd59 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,57 @@ + + + +https://colemaxwell.dev/posts/rest-api-ibmi-qsys2/ +2022-08-03T21:32:53-05:00 + + +https://colemaxwell.dev/posts/ibmi-odbc-on-linux/ +2022-08-03T21:48:45-05:00 + + +https://colemaxwell.dev/categories/ +2026-03-07T15:58:24-06:00 + + +https://colemaxwell.dev/tags/ +2026-03-07T15:58:24-06:00 + + +https://colemaxwell.dev/archives/ +2026-03-07T15:58:24-06:00 + + +https://colemaxwell.dev/about/ +2026-03-07T15:58:24-06:00 + + +https://colemaxwell.dev/ + + +https://colemaxwell.dev/tags/ibmi/ + + +https://colemaxwell.dev/tags/api/ + + +https://colemaxwell.dev/tags/qsys2/ + + +https://colemaxwell.dev/tags/rest/ + + +https://colemaxwell.dev/tags/sql/ + + +https://colemaxwell.dev/tags/odbc/ + + +https://colemaxwell.dev/tags/linux/ + + +https://colemaxwell.dev/tags/as400/ + + +https://colemaxwell.dev/categories/ibm-i/ + + diff --git a/sw.min.js b/sw.min.js new file mode 100644 index 0000000..9728c19 --- /dev/null +++ b/sw.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.4.1 | Ā© 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";importScripts("./assets/js/data/swconf.js");const e=swconf.purge,t=swconf.interceptor;self.addEventListener("install",t=>{e||t.waitUntil(caches.open(swconf.cacheName).then(e=>e.addAll(swconf.resources)))}),self.addEventListener("activate",t=>{t.waitUntil(caches.keys().then(t=>Promise.all(t.map(t=>e||t!==swconf.cacheName?caches.delete(t):void 0))))}),self.addEventListener("message",e=>{"SKIP_WAITING"===e.data&&self.skipWaiting()}),self.addEventListener("fetch",s=>{s.request.headers.has("range")||s.respondWith(caches.match(s.request).then(n=>n||fetch(s.request).then(n=>{const r=s.request.url;if(e||"GET"!==s.request.method||!function(e){const s=new URL(e),n=s.pathname;if(!s.protocol.startsWith("http"))return!1;for(const e of t.urlPrefixes)if(s.href.startsWith(e))return!1;for(const e of t.paths)if(n.startsWith(e))return!1;return!0}(r))return n;let a=n.clone();return caches.open(swconf.cacheName).then(e=>{e.put(s.request,a)}),n})))})}(); diff --git a/tags/api/index.html b/tags/api/index.html new file mode 100644 index 0000000..ea511f7 --- /dev/null +++ b/tags/api/index.html @@ -0,0 +1 @@ + api | Cole Maxwell
diff --git a/tags/as400/index.html b/tags/as400/index.html new file mode 100644 index 0000000..d04a0f6 --- /dev/null +++ b/tags/as400/index.html @@ -0,0 +1 @@ + as400 | Cole Maxwell
diff --git a/tags/ibmi/index.html b/tags/ibmi/index.html new file mode 100644 index 0000000..8b9d096 --- /dev/null +++ b/tags/ibmi/index.html @@ -0,0 +1 @@ + ibmi | Cole Maxwell
diff --git a/tags/index.html b/tags/index.html new file mode 100644 index 0000000..4003a2d --- /dev/null +++ b/tags/index.html @@ -0,0 +1 @@ + Tags | Cole Maxwell
diff --git a/tags/linux/index.html b/tags/linux/index.html new file mode 100644 index 0000000..b98e6cf --- /dev/null +++ b/tags/linux/index.html @@ -0,0 +1 @@ + linux | Cole Maxwell
diff --git a/tags/odbc/index.html b/tags/odbc/index.html new file mode 100644 index 0000000..984334c --- /dev/null +++ b/tags/odbc/index.html @@ -0,0 +1 @@ + odbc | Cole Maxwell
diff --git a/tags/qsys2/index.html b/tags/qsys2/index.html new file mode 100644 index 0000000..5a8ce52 --- /dev/null +++ b/tags/qsys2/index.html @@ -0,0 +1 @@ + qsys2 | Cole Maxwell
diff --git a/tags/rest/index.html b/tags/rest/index.html new file mode 100644 index 0000000..447a5ea --- /dev/null +++ b/tags/rest/index.html @@ -0,0 +1 @@ + rest | Cole Maxwell
diff --git a/tags/sql/index.html b/tags/sql/index.html new file mode 100644 index 0000000..40a6059 --- /dev/null +++ b/tags/sql/index.html @@ -0,0 +1 @@ + sql | Cole Maxwell