diff --git a/Gemfile.lock b/Gemfile.lock index 572ad8f5a..bd2886680 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -55,7 +55,7 @@ GEM fiber-annotation (0.2.0) fiber-local (1.0.0) forwardable-extended (2.6.0) - google-protobuf (3.25.2) + google-protobuf (3.25.3) hashery (2.1.2) html-proofer (5.0.8) addressable (~> 2.3) @@ -69,7 +69,7 @@ GEM http_parser.rb (0.8.0) i18n (1.14.1) concurrent-ruby (~> 1.0) - io-event (1.4.3) + io-event (1.4.4) jekyll (4.3.3) addressable (~> 2.4) colorator (~> 1.0) @@ -135,7 +135,7 @@ GEM rouge (4.2.0) ruby-rc4 (0.1.5) safe_yaml (1.0.5) - sass-embedded (1.70.0) + sass-embedded (1.71.1) google-protobuf (~> 3.25) rake (>= 13.0.0) terminal-table (3.0.2) diff --git a/_data/hashes.yml b/_data/hashes.yml index 3d852c9ea..c48830a8c 100644 --- a/_data/hashes.yml +++ b/_data/hashes.yml @@ -1,12 +1,12 @@ styles: core: 2064c7ecf79e3183145509c6c5b669a0 - critical: 4734278bf533a6ef273ea03be0dfa65a + critical: e58f21173cd41c42aea0bb76ee9d74d4 hl: e8c20d692fd3f03fa42f8a7e58466a45 main: e354f47939dd3da6fdf62ddb6f27e335 scripts: - index.min: a803e96332dd24e45826c4e85b3526de + index.min: 56a76c2aa0c7c486414a7fa837b8341b index.min.js.LICENSE: 172d2e565a560e7caefb983f3ba29209 - index.min.js: fa38276cc9e7a64c8b54ae8a63d50474 + index.min.js: a52f1457b1a9a7b44857699ff3cc95d1 navigation.min: b8cbb88b41c5ee3a2e9cc5f6a10a61c9 navigation.min.js.LICENSE: a3865dc811421b2f1148dcae2c47addf navigation.min.js: 8a4bb869f71880342a80a1121f0b060b diff --git a/_src/styles/scss/layout/_content.scss b/_src/styles/scss/layout/_content.scss index ea7405a64..423bce741 100644 --- a/_src/styles/scss/layout/_content.scss +++ b/_src/styles/scss/layout/_content.scss @@ -130,6 +130,10 @@ } } + li { + margin: 0.7em 0; + } + border-bottom: $border-separators solid var(--color-main-text); &:last-of-type:not(:only-of-type) { diff --git a/assets/critical.js b/assets/critical.js index e2d8e84a0..b3ff6bb9f 100644 --- a/assets/critical.js +++ b/assets/critical.js @@ -1 +1 @@ -(()=>{"use strict";var r={};r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(r){if("object"==typeof window)return window}}(),(()=>{var t;r.g.importScripts&&(t=r.g.location+"");var e=r.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var i=e.getElementsByTagName("script");if(i.length)for(var c=i.length-1;c>-1&&!t;)t=i[c--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r.p=t})(),r.p})(); \ No newline at end of file +(()=>{"use strict";var t={};t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),(()=>{var r;t.g.importScripts&&(r=t.g.location+"");var e=t.g.document;if(!r&&e&&(e.currentScript&&(r=e.currentScript.src),!r)){var i=e.getElementsByTagName("script");if(i.length)for(var c=i.length-1;c>-1&&(!r||!/^http(s?):/.test(r));)r=i[c--].src}if(!r)throw new Error("Automatic publicPath is not supported in this browser");r=r.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),t.p=r})(),t.p})(); \ No newline at end of file diff --git a/assets/main.js b/assets/main.js index e2d8e84a0..b3ff6bb9f 100644 --- a/assets/main.js +++ b/assets/main.js @@ -1 +1 @@ -(()=>{"use strict";var r={};r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(r){if("object"==typeof window)return window}}(),(()=>{var t;r.g.importScripts&&(t=r.g.location+"");var e=r.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var i=e.getElementsByTagName("script");if(i.length)for(var c=i.length-1;c>-1&&!t;)t=i[c--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r.p=t})(),r.p})(); \ No newline at end of file +(()=>{"use strict";var t={};t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),(()=>{var r;t.g.importScripts&&(r=t.g.location+"");var e=t.g.document;if(!r&&e&&(e.currentScript&&(r=e.currentScript.src),!r)){var i=e.getElementsByTagName("script");if(i.length)for(var c=i.length-1;c>-1&&(!r||!/^http(s?):/.test(r));)r=i[c--].src}if(!r)throw new Error("Automatic publicPath is not supported in this browser");r=r.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),t.p=r})(),t.p})(); \ No newline at end of file diff --git a/assets/scripts/index.min.js b/assets/scripts/index.min.js index 6a0ea286e..14828bbd5 100644 --- a/assets/scripts/index.min.js +++ b/assets/scripts/index.min.js @@ -1,3 +1,3 @@ /*! For license information please see index.min.js.LICENSE.txt */ -(()=>{var t={876:()=>{var t,e=document.getElementsByTagName("html")[0].getAttribute("lang"),r={to:{en:"footnote",fr:"note de bas de page"},back:{en:"return to the text",fr:"retour au texte"}},n=[...document.querySelectorAll(".footnote-ref a")],a=[...document.getElementsByClassName("footnote-backref")];for(t=0;t{try{document.querySelectorAll(".color-mode-labels label").forEach((function(t){t.addEventListener("click",(function(){localStorage.setItem("dark_mode",this.dataset.value)}))}))}catch(t){}},360:()=>{var t;try{t=localStorage.getItem("lang_user")}catch(t){}if(!t){t=(window.navigator.userLanguage||window.navigator.languages.length>0&&window.navigator.languages[0]||window.navigator.language).slice(0,2);try{localStorage.setItem("lang_user",t)}catch(t){}t!=document.getElementsByTagName("html")[0].lang&&(window.location=document.querySelector('[hreflang][rel="alternate"]').href)}document.addEventListener("click",(t=>{if(t.target.matches('[lang][href*="/"]'))try{localStorage.setItem("lang_user",t.target.getAttribute("lang"))}catch(t){}}),!1)},52:()=>{var t=new Date,e=t.getMonth()+1,r=t.getDate();"4-9"=="".concat(e,"-").concat(r)&&(console.log("CSS Naked Day!"),[...document.querySelectorAll('style, link[rel="stylesheet"]')].forEach((t=>t.remove())))},48:()=>{var t;t=!1,window.matchMedia("(prefers-reduced-data: reduce)").matches&&(t=!0),"connection"in navigator&&1==navigator.connection.saveData&&(t=!0),t&&(document.documentElement.classList.add("save-data"),[...document.querySelectorAll("[srcset]")].forEach((t=>{t.srcset=t.srcset.replace(/q_auto/g,"q_0").replace(/\/fetch\//g,"/fetch/e_grayscale/")})))},272:t=>{t.exports={ready:function(t){(document.attachEvent?"complete"===document.readyState:"loading"!==document.readyState)?t():document.addEventListener("DOMContentLoaded",t),document.addEventListener("turbolinks:load",t)}}},676:t=>{t.exports={abbrTouch:function(){"use strict";function t(t,e,r,n){alert(e)}return function(e,r){try{e||(e=document);for(var n=r||t,a=e.querySelectorAll("abbr[title]"),i=(c=n,function(t){c(t.currentTarget,t.currentTarget.title,t.customData.touchX,t.customData.touchY)}),o=0;o{!function(){"use strict";var t,e,r,n={x:-1,y:-1},a={x:-1,y:-1};function i(t){return t.originalEvent&&t.originalEvent.targetTouches?t.originalEvent.targetTouches[0]:t.targetTouches?t.targetTouches[0]:t}function o(t,e){return Math.abs(t-e)<2}function c(t){var o=i(t);n.x=o.pageX,n.y=o.pageY,a.x=o.pageX,a.y=o.pageY,e=!0,r&&clearTimeout(r),r=setTimeout((function(){e=!1}),200)}function s(r){e&&o(n.x,a.x)&&o(n.y,a.y)&&(t.customData={touchX:a.x,touchY:a.y},r.target.dispatchEvent(t))}function u(t){var e=i(t);a.x=e.pageX,a.y=e.pageY}!function(){try{(t=document.createEvent("Event")).initEvent("touchtap",!0,!0),document.addEventListener("touchstart",c,!1),document.addEventListener("touchend",s,!1),document.addEventListener("touchcancel",s,!1),document.addEventListener("touchmove",u,!1)}catch(t){}}()}()}},e={};function r(n){var a=e[n];if(void 0!==a)return a.exports;var i=e[n]={exports:{}};return t[n](i,i.exports,r),i.exports}(()=>{"use strict";const t=document.documentElement.getAttribute("data-easy-toggle-state-custom-prefix")||"toggle",e=(e,r=(()=>t)())=>["data",r,e].filter(Boolean).join("-"),n=e("arrows"),a=e("class"),i=e("class-on-target"),o=e("class-on-trigger"),c="is-active",s=e("escape"),u=e("event"),l=e("group"),d=e("is-active"),g=e("modal"),h=e("outside"),f=e("outside-event"),v=e("radio-group"),b=e("target"),A=e("target-all"),m=e("target-next"),E=e("target-parent"),y=e("target-previous"),p=e("target-self"),$=e("state"),w=e("trigger-off"),x=new Event("toggleAfter"),L=new Event("toggleBefore"),S=(t,e)=>{const r=t?`[${t}]`:"";if(e)return[...e.querySelectorAll(r)];const n=[`[${a}]${r}`,`[${o}]${r}`,`[${i}][${b}]${r}`,`[${i}][${A}]${r}`,`[${i}][${m}]${r}`,`[${i}][${y}]${r}`,`[${i}][${E}]${r}`,`[${i}][${p}]${r}`].join().trim();return[...document.querySelectorAll(n)]},k=(t,e)=>t.dispatchEvent(e),T=t=>`easyToggleState_${t}`,q=(t,e={"aria-checked":t[T("isActive")],"aria-expanded":t[T("isActive")],"aria-hidden":!t[T("isActive")],"aria-pressed":t[T("isActive")],"aria-selected":t[T("isActive")]})=>Object.keys(e).forEach((r=>t.hasAttribute(r)&&t.setAttribute(r,e[r]))),D=(t,e,r=!1)=>`This trigger has the class name '${t}' filled in both attributes '${a}' and '${e}'. As a result, this class will be toggled ${r&&"on its target(s)"} twice at the same time.`,I=(t,e)=>(t.getAttribute(e)||"").split(" ").filter(Boolean),O=t=>{const e=t.hasAttribute(l)?l:v;return S(`${e}="${t.getAttribute(e)}"`).filter((t=>t[T("isActive")]))},z=(t,e)=>{t||console.warn(`You should fill the attribute '${e}' with a selector`)},Y=(t,e)=>{if(0===e.length)return console.warn(`There's no match with the selector '${t}' for this trigger`),[];const r=t.match(/#\w+/gi);return r&&r.forEach((t=>{const r=[...e].filter((e=>e.id===t.slice(1)));r.length>1&&console.warn(`There's ${r.length} matches with the selector '${t}' for this trigger`)})),[...e]},B=(t,e)=>e.forEach((e=>{t.classList.toggle(e)})),_={},K=t=>document.addEventListener(t.getAttribute(f)||t.getAttribute(u)||"click",M,!1),M=t=>{const e=t.target,r=t.type;let n=!1;S(h).filter((t=>t.getAttribute(f)===r||t.getAttribute(u)===r&&!t.hasAttribute(f)||"click"===r&&!t.hasAttribute(u)&&!t.hasAttribute(f))).forEach((t=>{const r=e.closest(`[${$}="true"]`);r&&r[T("trigger")]===t&&(n=!0),n||t===e||t.contains(e)||!t[T("isActive")]||(t.hasAttribute(l)||t.hasAttribute(v)?C:j)(t)})),n||document.removeEventListener(r,M,!1);const c=e.closest(`[${a}][${h}],[${o}][${h}],[${i}][${h}]`);c&&c[T("isActive")]&&K(e)},X=t=>j(t.currentTarget[T("target")]),j=t=>{k(t,L);const e=(t=>{if(t.hasAttribute(a)&&t.getAttribute(a)&&(t.hasAttribute(o)||t.hasAttribute(i))){const e=I(t,o),r=I(t,i);I(t,a).forEach((n=>{e.includes(n)&&console.warn(D(n,o),t),r.includes(n)&&console.warn(D(n,i,!0),t)}))}const e=[a,o,i].reduce(((e,r)=>{const n=I(t,r);return(r===a||r===o)&&e.trigger.push(...n),(r===a||r===i)&&e.target.push(...n),e}),{trigger:[],target:[]});return!e.trigger.length&&(t.hasAttribute(a)||t.hasAttribute(o))&&e.trigger.push(c),!e.target.length&&(t.hasAttribute(a)||t.hasAttribute(i))&&e.target.push(c),e})(t);return B(t,e.trigger),t[T("isActive")]=!t[T("isActive")],q(t),k(t,x),r=t,n=e.target,s=!1,(t=>{if(t.hasAttribute(b)||t.hasAttribute(A)){const e=t.getAttribute(b)||t.getAttribute(A);return z(e,t.hasAttribute(b)?b:A),Y(e,document.querySelectorAll(e))}if(t.hasAttribute(E)){const e=t.getAttribute(E);return z(e,E),Y(e,t.parentElement.querySelectorAll(e))}if(t.hasAttribute(p)){const e=t.getAttribute(p);return z(e,p),Y(e,t.querySelectorAll(e))}return t.hasAttribute(y)?Y("previous",[t.previousElementSibling].filter(Boolean)):t.hasAttribute(m)?Y("next",[t.nextElementSibling].filter(Boolean)):[]})(r).forEach((t=>{k(t,L),t[T("isActive")]=!t[T("isActive")],q(t),s?t.classList.add(...n):B(t,n),r.hasAttribute(h)&&(t.setAttribute($,r[T("isActive")]),t[T("trigger")]=r),r.hasAttribute(g)&&(t[T("isActive")]?(_[t]=(t=>e=>{const r=[...t.querySelectorAll("a[href], area[href], input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]")];if(!r.length||"Tab"!==e.key)return;const n=e.target,a=r[0],i=r[r.length-1];return-1===r.indexOf(n)?(e.preventDefault(),a.focus()):e.shiftKey&&n===a?(e.preventDefault(),i.focus()):e.shiftKey||n!==i?void 0:(e.preventDefault(),a.focus())})(t),document.addEventListener("keydown",_[t],!1)):(document.removeEventListener("keydown",_[t],!1),delete _[t])),k(t,x),((t,e)=>{const r=S(w,t).filter((e=>!e.getAttribute(w)||t.matches(e.getAttribute(w))));0!==r.length&&(e[T("isActive")]?r.forEach((t=>{t[T("target")]||(t[T("target")]=e,t.addEventListener("click",X,!1))})):(r.forEach((t=>{t[T("target")]===e&&(t[T("target")]=null,t.removeEventListener("click",X,!1))})),e.focus()))})(t,r)})),(t=>{if(t.hasAttribute(h))return t.hasAttribute(v)?console.warn(`You can't use '${h}' on a radio grouped trigger`):t[T("isActive")]?K(t):void 0})(t);var r,n,s},C=t=>{const e=O(t);return 0===e.length?j(t):-1===e.indexOf(t)?(e.forEach(j),j(t)):-1===e.indexOf(t)||t.hasAttribute(v)?void 0:j(t)};r(556);var H=r(272),N=(r(48),r(360),r(80),r(876),r(676));navigator&&navigator.share&&(0,H.ready)((function(){var t=document.querySelector(".webshare");if(t){var e=new URL(window.location),r=e.origin+e.pathname,n=document.querySelector("link[rel=canonical]");null!==n&&(r=n.href);var a={title:t.dataset.title,text:t.dataset.text,url:r},i=!0;navigator.canShare&&(i=navigator.canShare(a)),i&&(t.querySelector("button").addEventListener("click",(function(){navigator.share({title:a.title,text:a.text,url:a.url}).then((()=>console.log("Successful share"))).catch((t=>console.log("Error sharing",t)))})),t.classList.add("visible"))}})),r(52),(0,H.ready)((function(){["rel","media"].forEach((t=>[...document.querySelectorAll("[data-".concat(t,"]"))].forEach((e=>e.setAttribute(t,e.dataset[t])))))})),(0,H.ready)((function(){var t;(()=>{[...document.querySelectorAll(`[${i}]:not([${b}]):not([${A}]):not([${m}]):not([${y}]):not([${E}]):not([${p}])`)].forEach((t=>{console.warn(`This trigger has the attribute '${i}', but no specified target\n`,t)})),S(d).filter((t=>!t[T("isDefaultInitialized")])).forEach((t=>{if((t.hasAttribute(l)||t.hasAttribute(v))&&O(t).length>0)return console.warn(`Toggle group '${t.getAttribute(l)||t.getAttribute(v)}' must not have more than one trigger with '${d}'`);j(t),t[T("isDefaultInitialized")]=!0}));S().filter((t=>!t[T("isInitialized")])).forEach((t=>{const e=e=>{e.preventDefault(),(t.hasAttribute(l)||t.hasAttribute(v)?C:j)(t)},r=t.getAttribute(u)||"click";t.addEventListener(r,e,!1),t[T("unbind")]=()=>{t.removeEventListener(r,e,!1),t[T("isInitialized")]=!1},t[T("isInitialized")]=!0})),S(s).length>0&&!document[T("isEscapeKeyInitialized")]&&(document.addEventListener("keydown",(t=>{"Escape"!==t.key&&"Esc"!==t.key||S(s).forEach((t=>{if(t[T("isActive")])return t.hasAttribute(v)?console.warn(`You can't use '${s}' on a radio grouped trigger`):(t.hasAttribute(l)?C:j)(t)}))}),!1),document[T("isEscapeKeyInitialized")]=!0),S(n).length>0&&!document[T("isArrowKeysInitialized")]&&(document.addEventListener("keydown",(t=>{const e=document.activeElement;if(-1===["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End"].indexOf(t.key)||!e.hasAttribute(a)&&!e.hasAttribute(o)&&!e.hasAttribute(i)||!e.hasAttribute(n))return;if(!e.hasAttribute(l)&&!e.hasAttribute(v))return console.warn(`You can't use '${n}' on a trigger without '${l}' or '${v}'`);t.preventDefault();const r=e.hasAttribute(l)?S(`${l}='${e.getAttribute(l)}'`):S(`${v}='${e.getAttribute(v)}'`);let c=e;switch(t.key){case"ArrowUp":case"ArrowLeft":c=r.indexOf(e)>0?r[r.indexOf(e)-1]:r[r.length-1];break;case"ArrowDown":case"ArrowRight":c=r.indexOf(e){var t={448:()=>{var t,e=document.getElementsByTagName("html")[0].getAttribute("lang"),r={to:{en:"footnote",fr:"note de bas de page"},back:{en:"return to the text",fr:"retour au texte"}},n=[...document.querySelectorAll(".footnote-ref a")],a=[...document.getElementsByClassName("footnote-backref")];for(t=0;t{try{document.querySelectorAll(".color-mode-labels label").forEach((function(t){t.addEventListener("click",(function(){localStorage.setItem("dark_mode",this.dataset.value)}))}))}catch(t){}},588:()=>{var t;try{t=localStorage.getItem("lang_user")}catch(t){}if(!t){t=(window.navigator.userLanguage||window.navigator.languages.length>0&&window.navigator.languages[0]||window.navigator.language).slice(0,2);try{localStorage.setItem("lang_user",t)}catch(t){}t!=document.getElementsByTagName("html")[0].lang&&(window.location=document.querySelector('[hreflang][rel="alternate"]').href)}document.addEventListener("click",(t=>{if(t.target.matches('[lang][href*="/"]'))try{localStorage.setItem("lang_user",t.target.getAttribute("lang"))}catch(t){}}),!1)},494:()=>{var t=new Date,e=t.getMonth()+1,r=t.getDate();"4-9"=="".concat(e,"-").concat(r)&&(console.log("CSS Naked Day!"),[...document.querySelectorAll('style, link[rel="stylesheet"]')].forEach((t=>t.remove())))},356:()=>{var t;t=!1,window.matchMedia("(prefers-reduced-data: reduce)").matches&&(t=!0),"connection"in navigator&&1==navigator.connection.saveData&&(t=!0),t&&(document.documentElement.classList.add("save-data"),[...document.querySelectorAll("[srcset]")].forEach((t=>{t.srcset=t.srcset.replace(/q_auto/g,"q_0").replace(/\/fetch\//g,"/fetch/e_grayscale/")})))},44:t=>{t.exports={ready:function(t){(document.attachEvent?"complete"===document.readyState:"loading"!==document.readyState)?t():document.addEventListener("DOMContentLoaded",t),document.addEventListener("turbolinks:load",t)}}},25:t=>{t.exports={abbrTouch:function(){"use strict";function t(t,e,r,n){alert(e)}return function(e,r){try{e||(e=document);for(var n=r||t,a=e.querySelectorAll("abbr[title]"),i=(c=n,function(t){c(t.currentTarget,t.currentTarget.title,t.customData.touchX,t.customData.touchY)}),o=0;o{!function(){"use strict";var t,e,r,n={x:-1,y:-1},a={x:-1,y:-1};function i(t){return t.originalEvent&&t.originalEvent.targetTouches?t.originalEvent.targetTouches[0]:t.targetTouches?t.targetTouches[0]:t}function o(t,e){return Math.abs(t-e)<2}function c(t){var o=i(t);n.x=o.pageX,n.y=o.pageY,a.x=o.pageX,a.y=o.pageY,e=!0,r&&clearTimeout(r),r=setTimeout((function(){e=!1}),200)}function s(r){e&&o(n.x,a.x)&&o(n.y,a.y)&&(t.customData={touchX:a.x,touchY:a.y},r.target.dispatchEvent(t))}function u(t){var e=i(t);a.x=e.pageX,a.y=e.pageY}!function(){try{(t=document.createEvent("Event")).initEvent("touchtap",!0,!0),document.addEventListener("touchstart",c,!1),document.addEventListener("touchend",s,!1),document.addEventListener("touchcancel",s,!1),document.addEventListener("touchmove",u,!1)}catch(t){}}()}()}},e={};function r(n){var a=e[n];if(void 0!==a)return a.exports;var i=e[n]={exports:{}};return t[n](i,i.exports,r),i.exports}(()=>{"use strict";const t=document.documentElement.getAttribute("data-easy-toggle-state-custom-prefix")||"toggle",e=(e,r=(()=>t)())=>["data",r,e].filter(Boolean).join("-"),n=e("arrows"),a=e("class"),i=e("class-on-target"),o=e("class-on-trigger"),c="is-active",s=e("escape"),u=e("event"),l=e("group"),d=e("is-active"),g=e("modal"),h=e("outside"),f=e("outside-event"),v=e("radio-group"),b=e("target"),A=e("target-all"),m=e("target-next"),E=e("target-parent"),y=e("target-previous"),p=e("target-self"),$=e("state"),w=e("trigger-off"),x=new Event("toggleAfter"),L=new Event("toggleBefore"),S=(t,e)=>{const r=t?`[${t}]`:"";if(e)return[...e.querySelectorAll(r)];const n=[`[${a}]${r}`,`[${o}]${r}`,`[${i}][${b}]${r}`,`[${i}][${A}]${r}`,`[${i}][${m}]${r}`,`[${i}][${y}]${r}`,`[${i}][${E}]${r}`,`[${i}][${p}]${r}`].join().trim();return[...document.querySelectorAll(n)]},k=(t,e)=>t.dispatchEvent(e),T=t=>`easyToggleState_${t}`,q=(t,e={"aria-checked":t[T("isActive")],"aria-expanded":t[T("isActive")],"aria-hidden":!t[T("isActive")],"aria-pressed":t[T("isActive")],"aria-selected":t[T("isActive")]})=>Object.keys(e).forEach((r=>t.hasAttribute(r)&&t.setAttribute(r,e[r]))),D=(t,e,r=!1)=>`This trigger has the class name '${t}' filled in both attributes '${a}' and '${e}'. As a result, this class will be toggled ${r&&"on its target(s)"} twice at the same time.`,I=(t,e)=>(t.getAttribute(e)||"").split(" ").filter(Boolean),O=t=>{const e=t.hasAttribute(l)?l:v;return S(`${e}="${t.getAttribute(e)}"`).filter((t=>t[T("isActive")]))},z=(t,e)=>{t||console.warn(`You should fill the attribute '${e}' with a selector`)},Y=(t,e)=>{if(0===e.length)return console.warn(`There's no match with the selector '${t}' for this trigger`),[];const r=t.match(/#\w+/gi);return r&&r.forEach((t=>{const r=[...e].filter((e=>e.id===t.slice(1)));r.length>1&&console.warn(`There's ${r.length} matches with the selector '${t}' for this trigger`)})),[...e]},B=(t,e)=>e.forEach((e=>{t.classList.toggle(e)})),_={},K=t=>document.addEventListener(t.getAttribute(f)||t.getAttribute(u)||"click",M,!1),M=t=>{const e=t.target,r=t.type;let n=!1;S(h).filter((t=>t.getAttribute(f)===r||t.getAttribute(u)===r&&!t.hasAttribute(f)||"click"===r&&!t.hasAttribute(u)&&!t.hasAttribute(f))).forEach((t=>{const r=e.closest(`[${$}="true"]`);r&&r[T("trigger")]===t&&(n=!0),n||t===e||t.contains(e)||!t[T("isActive")]||(t.hasAttribute(l)||t.hasAttribute(v)?C:j)(t)})),n||document.removeEventListener(r,M,!1);const c=e.closest(`[${a}][${h}],[${o}][${h}],[${i}][${h}]`);c&&c[T("isActive")]&&K(e)},X=t=>j(t.currentTarget[T("target")]),j=t=>{k(t,L);const e=(t=>{if(t.hasAttribute(a)&&t.getAttribute(a)&&(t.hasAttribute(o)||t.hasAttribute(i))){const e=I(t,o),r=I(t,i);I(t,a).forEach((n=>{e.includes(n)&&console.warn(D(n,o),t),r.includes(n)&&console.warn(D(n,i,!0),t)}))}const e=[a,o,i].reduce(((e,r)=>{const n=I(t,r);return(r===a||r===o)&&e.trigger.push(...n),(r===a||r===i)&&e.target.push(...n),e}),{trigger:[],target:[]});return!e.trigger.length&&(t.hasAttribute(a)||t.hasAttribute(o))&&e.trigger.push(c),!e.target.length&&(t.hasAttribute(a)||t.hasAttribute(i))&&e.target.push(c),e})(t);return B(t,e.trigger),t[T("isActive")]=!t[T("isActive")],q(t),k(t,x),r=t,n=e.target,s=!1,(t=>{if(t.hasAttribute(b)||t.hasAttribute(A)){const e=t.getAttribute(b)||t.getAttribute(A);return z(e,t.hasAttribute(b)?b:A),Y(e,document.querySelectorAll(e))}if(t.hasAttribute(E)){const e=t.getAttribute(E);return z(e,E),Y(e,t.parentElement.querySelectorAll(e))}if(t.hasAttribute(p)){const e=t.getAttribute(p);return z(e,p),Y(e,t.querySelectorAll(e))}return t.hasAttribute(y)?Y("previous",[t.previousElementSibling].filter(Boolean)):t.hasAttribute(m)?Y("next",[t.nextElementSibling].filter(Boolean)):[]})(r).forEach((t=>{k(t,L),t[T("isActive")]=!t[T("isActive")],q(t),s?t.classList.add(...n):B(t,n),r.hasAttribute(h)&&(t.setAttribute($,r[T("isActive")]),t[T("trigger")]=r),r.hasAttribute(g)&&(t[T("isActive")]?(_[t]=(t=>e=>{const r=[...t.querySelectorAll("a[href], area[href], input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]")];if(!r.length||"Tab"!==e.key)return;const n=e.target,a=r[0],i=r[r.length-1];return-1===r.indexOf(n)?(e.preventDefault(),a.focus()):e.shiftKey&&n===a?(e.preventDefault(),i.focus()):e.shiftKey||n!==i?void 0:(e.preventDefault(),a.focus())})(t),document.addEventListener("keydown",_[t],!1)):(document.removeEventListener("keydown",_[t],!1),delete _[t])),k(t,x),((t,e)=>{const r=S(w,t).filter((e=>!e.getAttribute(w)||t.matches(e.getAttribute(w))));0!==r.length&&(e[T("isActive")]?r.forEach((t=>{t[T("target")]||(t[T("target")]=e,t.addEventListener("click",X,!1))})):(r.forEach((t=>{t[T("target")]===e&&(t[T("target")]=null,t.removeEventListener("click",X,!1))})),e.focus()))})(t,r)})),(t=>{if(t.hasAttribute(h))return t.hasAttribute(v)?console.warn(`You can't use '${h}' on a radio grouped trigger`):t[T("isActive")]?K(t):void 0})(t);var r,n,s},C=t=>{const e=O(t);return 0===e.length?j(t):-1===e.indexOf(t)?(e.forEach(j),j(t)):-1===e.indexOf(t)||t.hasAttribute(v)?void 0:j(t)};r(503);var H=r(44),N=(r(356),r(588),r(79),r(448),r(25));navigator&&navigator.share&&(0,H.ready)((function(){var t=document.querySelector(".webshare");if(t){var e=new URL(window.location),r=e.origin+e.pathname,n=document.querySelector("link[rel=canonical]");null!==n&&(r=n.href);var a={title:t.dataset.title,text:t.dataset.text,url:r},i=!0;navigator.canShare&&(i=navigator.canShare(a)),i&&(t.querySelector("button").addEventListener("click",(function(){navigator.share({title:a.title,text:a.text,url:a.url}).then((()=>console.log("Successful share"))).catch((t=>console.log("Error sharing",t)))})),t.classList.add("visible"))}})),r(494),(0,H.ready)((function(){["rel","media"].forEach((t=>[...document.querySelectorAll("[data-".concat(t,"]"))].forEach((e=>e.setAttribute(t,e.dataset[t])))))})),(0,H.ready)((function(){var t;(()=>{[...document.querySelectorAll(`[${i}]:not([${b}]):not([${A}]):not([${m}]):not([${y}]):not([${E}]):not([${p}])`)].forEach((t=>{console.warn(`This trigger has the attribute '${i}', but no specified target\n`,t)})),S(d).filter((t=>!t[T("isDefaultInitialized")])).forEach((t=>{if((t.hasAttribute(l)||t.hasAttribute(v))&&O(t).length>0)return console.warn(`Toggle group '${t.getAttribute(l)||t.getAttribute(v)}' must not have more than one trigger with '${d}'`);j(t),t[T("isDefaultInitialized")]=!0}));S().filter((t=>!t[T("isInitialized")])).forEach((t=>{const e=e=>{e.preventDefault(),(t.hasAttribute(l)||t.hasAttribute(v)?C:j)(t)},r=t.getAttribute(u)||"click";t.addEventListener(r,e,!1),t[T("unbind")]=()=>{t.removeEventListener(r,e,!1),t[T("isInitialized")]=!1},t[T("isInitialized")]=!0})),S(s).length>0&&!document[T("isEscapeKeyInitialized")]&&(document.addEventListener("keydown",(t=>{"Escape"!==t.key&&"Esc"!==t.key||S(s).forEach((t=>{if(t[T("isActive")])return t.hasAttribute(v)?console.warn(`You can't use '${s}' on a radio grouped trigger`):(t.hasAttribute(l)?C:j)(t)}))}),!1),document[T("isEscapeKeyInitialized")]=!0),S(n).length>0&&!document[T("isArrowKeysInitialized")]&&(document.addEventListener("keydown",(t=>{const e=document.activeElement;if(-1===["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End"].indexOf(t.key)||!e.hasAttribute(a)&&!e.hasAttribute(o)&&!e.hasAttribute(i)||!e.hasAttribute(n))return;if(!e.hasAttribute(l)&&!e.hasAttribute(v))return console.warn(`You can't use '${n}' on a trigger without '${l}' or '${v}'`);t.preventDefault();const r=e.hasAttribute(l)?S(`${l}='${e.getAttribute(l)}'`):S(`${v}='${e.getAttribute(v)}'`);let c=e;switch(t.key){case"ArrowUp":case"ArrowLeft":c=r.indexOf(e)>0?r[r.indexOf(e)-1]:r[r.length-1];break;case"ArrowDown":case"ArrowRight":c=r.indexOf(e) 0 && window.navigator.languages[0]) ||\n window.navigator.language\n ).slice(0, 2);\n try {\n localStorage.setItem('lang_user', lang_user);\n } catch (e) {}\n var lang_site = document.getElementsByTagName('html')[0].lang;\n if (lang_user != lang_site) {\n window.location = document.querySelector(\n '[hreflang][rel=\"alternate\"]',\n ).href;\n }\n}\n\ndocument.addEventListener(\n 'click',\n (event) => {\n if (event.target.matches('[lang][href*=\"/\"]')) {\n try {\n localStorage.setItem('lang_user', event.target.getAttribute('lang'));\n } catch (e) {}\n }\n },\n false,\n);\n","const q = new Date();\nconst m = q.getMonth() + 1;\nconst d = q.getDate();\nif (`${m}-${d}` == '4-9') {\n console.log('CSS Naked Day!');\n [...document.querySelectorAll('style, link[rel=\"stylesheet\"]')].forEach((x) =>\n x.remove(),\n );\n}\n","/************************************************\n On save-data mode, modifyies images src to use\n grayscale, degraded images.\n************************************************/\n(function saveData() {\n let saveData = false;\n if (window.matchMedia('(prefers-reduced-data: reduce)').matches) {\n saveData = true;\n }\n if ('connection' in navigator) {\n if (navigator.connection.saveData == true) {\n saveData = true;\n }\n }\n if (saveData) {\n // Add class to document\n document.documentElement.classList.add('save-data');\n // use default img src\n [...document.querySelectorAll('[srcset]')].forEach((img) => {\n // eslint-disable-next-line require-unicode-regexp\n img.srcset = img.srcset\n .replace(/q_auto/g, 'q_0')\n .replace(/\\/fetch\\//g, '/fetch/e_grayscale/');\n });\n }\n})();\n","module.exports = {\n ready: function (fn) {\n if (\n document.attachEvent\n ? document.readyState === 'complete'\n : document.readyState !== 'loading'\n ) {\n fn();\n } else {\n document.addEventListener('DOMContentLoaded', fn);\n }\n document.addEventListener('turbolinks:load', fn);\n },\n};\n","/**\n * @license\n * abbr-touch \n * Copyright 2014 Daniel Imms \n * Released under the MIT license \n */\nmodule.exports = {\n abbrTouch: (function () {\n // eslint-disable-line no-unused-vars\n 'use strict';\n\n /**\n * Generates a touchtap event handler that calls the tap handler provided.\n * @param {function} handler The tap handler to call.\n * @returns {function}\n */\n function generateTouchtapHandler(handler) {\n return function (e) {\n handler(\n e.currentTarget,\n e.currentTarget.title,\n e.customData.touchX,\n e.customData.touchY,\n );\n };\n }\n\n /**\n * The default lightweight tap handler.\n */\n function defaultOnTapHandler(target, title, touchX, touchY) {\n // eslint-disable-line no-unused-vars\n alert(title); // eslint-disable-line no-alert\n }\n\n /**\n * Attaches abbrTouch events on all abbr[title] elements within an element\n * @param {HTMLElement} elementScope The element containing abbr[title]\n * elements.\n * @param {function} customTapHandler (Optional) A custom touchtap handler to\n * be used when abbr[title] elements are touched.\n */\n function init(elementScope, customTapHandler) {\n try {\n if (!elementScope) {\n elementScope = document;\n }\n\n var tapHandler = customTapHandler || defaultOnTapHandler;\n\n var elements = elementScope.querySelectorAll('abbr[title]');\n var touchtapHandler = generateTouchtapHandler(tapHandler);\n for (var i = 0; i < elements.length; i++) {\n // EventTarget.addEventListener() is supported by most browsers, including IE9 and newer.\n if (elements[i].addEventListener) {\n elements[i].addEventListener('touchtap', touchtapHandler, false);\n } else {\n // EventTarget.addEventListener() is not implemented in this browser.\n // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Browser_compatibility\n break;\n }\n }\n } catch (err) {\n // Some old browsers do not support Document.querySelectorAll() - e.g. prior to IE9.\n // https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll#Browser_compatibility\n }\n }\n return init;\n })(),\n};\n","/**\n * @license\n * touchtap-event \n * Copyright 2014 Daniel Imms \n * Released under the MIT license \n */\n(function () {\n 'use strict';\n\n var touchTapEvent;\n var isTapLength;\n var tapLengthTimeout;\n var startPosition = { x: -1, y: -1 };\n var currentPosition = { x: -1, y: -1 };\n\n /**\n * Gets the touch object from a touch* event.\n * @param {Event} e The event.\n * @returns {Touch} The (first) touch object from the event.\n */\n function getTouchObject(e) {\n if (e.originalEvent && e.originalEvent.targetTouches) {\n return e.originalEvent.targetTouches[0];\n }\n if (e.targetTouches) {\n return e.targetTouches[0];\n }\n return e;\n }\n\n /**\n * Gets whether two numbers are approximately equal to each other.\n * @param {number} a The first number.\n * @param {number} b The second number.\n * @returns {Boolean}\n */\n function approximatelyEqual(a, b) {\n return Math.abs(a - b) < 2;\n }\n\n /**\n * Handler for the touchstart event.\n * @param {Event} e The touchstart event.\n */\n function touchstart(e) {\n var touchObject = getTouchObject(e);\n startPosition.x = touchObject.pageX;\n startPosition.y = touchObject.pageY;\n currentPosition.x = touchObject.pageX;\n currentPosition.y = touchObject.pageY;\n isTapLength = true;\n if (tapLengthTimeout) {\n clearTimeout(tapLengthTimeout);\n }\n tapLengthTimeout = setTimeout(function () {\n isTapLength = false;\n }, 200);\n }\n\n /**\n * Handler for the touchend event.\n * @param {Event} e The touchend event.\n */\n function touchend(e) {\n if (isTapLength &&\n approximatelyEqual(startPosition.x, currentPosition.x) &&\n approximatelyEqual(startPosition.y, currentPosition.y)) {\n touchTapEvent.customData = {\n touchX: currentPosition.x,\n touchY: currentPosition.y\n };\n e.target.dispatchEvent(touchTapEvent);\n }\n }\n\n /**\n * Handler for the touchmove event.\n * @param {Event} e The touchmove event.\n */\n function touchmove(e) {\n var touchObject = getTouchObject(e);\n currentPosition.x = touchObject.pageX;\n currentPosition.y = touchObject.pageY;\n }\n\n /**\n * Initialises the library.\n */\n function init() {\n try {\n // The basic events module is supported by most browsers, including IE9 and newer.\n // https://developer.mozilla.org/en-US/docs/Web/API/Document/createEvent#Example\n touchTapEvent = document.createEvent('Event');\n touchTapEvent.initEvent('touchtap', true, true);\n\n // EventTarget.addEventListener() is supported by most browsers, including IE9 and newer.\n // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Browser_compatibility\n document.addEventListener('touchstart', touchstart, false);\n document.addEventListener('touchend', touchend, false);\n document.addEventListener('touchcancel', touchend, false);\n document.addEventListener('touchmove', touchmove, false);\n }\n catch (err) {\n // Ignore \"Object doesn't support this property or method\" in IE8 and earlier.\n }\n }\n\n init();\n})();\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/**\r\n * Prefix set to all attributes.\r\n */\r\n\r\nconst PREFIX = document.documentElement.getAttribute(\"data-easy-toggle-state-custom-prefix\") || \"toggle\";\r\n\r\nexport const getPrefix = () => PREFIX;\r\n","import { getPrefix } from \"./prefix\";\n\n/**\n * Retrieve a valid HTML attribute string.\n * @param {string} key - A string to build a html attribute\n * @param {string} prefix - The prefix maybe set by user\n * @returns {string} - A valid html attribute\n */\nconst dataset = (key, prefix = getPrefix()) => [\"data\", prefix, key].filter(Boolean).join(\"-\");\n\n/**\n * All constants containing HTML attributes string.\n */\nexport const ARROWS = dataset(\"arrows\"),\n\tCHECKED = \"aria-checked\",\n\tCLASS = dataset(\"class\"),\n\tCLASS_TARGET = dataset(\"class-on-target\"),\n\tCLASS_TRIGGER = dataset(\"class-on-trigger\"),\n\tDEFAULT_CLASS = \"is-active\",\n\tESCAPE = dataset(\"escape\"),\n\tEVENT = dataset(\"event\"),\n\tEXPANDED = \"aria-expanded\",\n\tGROUP = dataset(\"group\"),\n\tHIDDEN = \"aria-hidden\",\n\tIS_ACTIVE = dataset(\"is-active\"),\n\tMODAL = dataset(\"modal\"),\n\tOUTSIDE = dataset(\"outside\"),\n\tOUTSIDE_EVENT = dataset(\"outside-event\"),\n\tPRESSED = \"aria-pressed\",\n\tRADIO_GROUP = dataset(\"radio-group\"),\n\tSELECTED = \"aria-selected\",\n\tTARGET = dataset(\"target\"),\n\tTARGET_ALL = dataset(\"target-all\"),\n\tTARGET_NEXT = dataset(\"target-next\"),\n\tTARGET_PARENT = dataset(\"target-parent\"),\n\tTARGET_PREVIOUS = dataset(\"target-previous\"),\n\tTARGET_SELF = dataset(\"target-self\"),\n\tTARGET_STATE = dataset(\"state\"),\n\tTRIGGER_OFF = dataset(\"trigger-off\");\n","/**\r\n * Hooks\r\n */\r\nexport const TOGGLE_AFTER = new Event(\"toggleAfter\"),\r\n\tTOGGLE_BEFORE = new Event(\"toggleBefore\");\r\n","import {\r\n\tCLASS,\r\n\tCLASS_TARGET,\r\n\tCLASS_TRIGGER,\r\n\tTARGET,\r\n\tTARGET_ALL,\r\n\tTARGET_NEXT,\r\n\tTARGET_PARENT,\r\n\tTARGET_PREVIOUS,\r\n\tTARGET_SELF\r\n} from \"../constants/constants\";\r\n\r\n/**\r\n * Retrieve all trigger elements with a specific attribute, or all nodes in a specific scope.\r\n * @param {string} selector - A string that contains a selector\r\n * @param {node} node - An element in which to make the selection\r\n * @returns {array} - An array of elements\r\n */\r\nexport default (selector, node) => {\r\n\tconst scope = selector ? `[${selector}]` : \"\";\r\n\r\n\tif (node) {\r\n\t\treturn [...node.querySelectorAll(scope)];\r\n\t}\r\n\r\n\tconst query = [\r\n\t\t`[${CLASS}]${scope}`,\r\n\t\t`[${CLASS_TRIGGER}]${scope}`,\r\n\t\t`[${CLASS_TARGET}][${TARGET}]${scope}`,\r\n\t\t`[${CLASS_TARGET}][${TARGET_ALL}]${scope}`,\r\n\t\t`[${CLASS_TARGET}][${TARGET_NEXT}]${scope}`,\r\n\t\t`[${CLASS_TARGET}][${TARGET_PREVIOUS}]${scope}`,\r\n\t\t`[${CLASS_TARGET}][${TARGET_PARENT}]${scope}`,\r\n\t\t`[${CLASS_TARGET}][${TARGET_SELF}]${scope}`\r\n\t]\r\n\t\t.join()\r\n\t\t.trim();\r\n\r\n\treturn [...document.querySelectorAll(query)];\r\n};\r\n","/**\r\n * Dispatch hooks\r\n * @param {node} element - An element on which dispatch the hook\r\n * @param {string} action - An event to dispatch\r\n * @returns {boolean} - True or False\r\n */\r\nexport default (element, action) => element.dispatchEvent(action);\r\n","/**\n * Add a namespace for element properties.\n * @param {string} property - The property aadded on any element\n * @returns {string} - The property with the namespace\n */\nexport default (property) => `easyToggleState_${property}`;\n","import { CHECKED, EXPANDED, HIDDEN, PRESSED, SELECTED } from \"../constants/constants\";\nimport namespacedProp from \"../helpers/retrieve-namespaced-property\";\n\n/**\n * Aria attributes toggle manager.\n * @param {node} element - Current element with aria attributes to manage.\n * @param {json} [config] - List of aria attributes and value to assign.\n * @returns {undefined}\n */\nexport default (\n\telement,\n\tconfig = {\n\t\t[CHECKED]: element[namespacedProp('isActive')],\n\t\t[EXPANDED]: element[namespacedProp('isActive')],\n\t\t[HIDDEN]: !element[namespacedProp('isActive')],\n\t\t[PRESSED]: element[namespacedProp('isActive')],\n\t\t[SELECTED]: element[namespacedProp('isActive')]\n\t}\n) => Object.keys(config).forEach(key => element.hasAttribute(key) && element.setAttribute(key, config[key]));\n","import {\n\tCLASS,\n\tCLASS_TARGET,\n\tCLASS_TRIGGER,\n\tDEFAULT_CLASS\n} from \"../constants/constants\";\n\nconst warningText = (classItem, attribute, isTarget = false) => `This trigger has the class name '${classItem}' filled in both attributes '${CLASS}' and '${attribute}'. As a result, this class will be toggled ${isTarget && 'on its target(s)'} twice at the same time.`;\n\n/**\n * Retrieve an array of class names from an attribute value.\n * @param {node} element - The trigger element on which get the attribute\n * @param {string} attribute - The attribute on which get class names\n * @returns {array} - An array of class names\n */\nconst classFromAttribute = (element, attribute) => (element.getAttribute(attribute) || '').split(' ').filter(Boolean);\n\n/**\n * Retrieve class lists for trigger and target elements.\n * @param {node} element - The trigger element on which get all class names\n * @returns {object} - An object with two arrays with trigger and target class lists\n */\nexport default (element) => {\n\tif (element.hasAttribute(CLASS) && element.getAttribute(CLASS) && (element.hasAttribute(CLASS_TRIGGER) || element.hasAttribute(CLASS_TARGET))) {\n\t\tconst triggerClassArray = classFromAttribute(element, CLASS_TRIGGER);\n\t\tconst targetClassArray = classFromAttribute(element, CLASS_TARGET);\n\n\t\t/** Warn if there repetition class name between CLASS and CLASS_TRIGGER or CLASS and CLASS_TARGET */\n\t\tclassFromAttribute(element, CLASS)\n\t\t\t.forEach(classItem => {\n\t\t\t\tif (triggerClassArray.includes(classItem)) {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\twarningText(classItem, CLASS_TRIGGER),\n\t\t\t\t\t\telement\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (targetClassArray.includes(classItem)) {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\twarningText(classItem, CLASS_TARGET, true),\n\t\t\t\t\t\telement\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\t/** Get class list for trigger and targets from attributes */\n\tconst lists = [CLASS, CLASS_TRIGGER, CLASS_TARGET].reduce(\n\t\t(acc, val) => {\n\t\t\tconst list = classFromAttribute(element, val);\n\t\t\t(val === CLASS || val === CLASS_TRIGGER) && acc.trigger.push(...list);\n\t\t\t(val === CLASS || val === CLASS_TARGET) && acc.target.push(...list);\n\t\t\treturn acc;\n\t\t},\n\t\t{\n\t\t\ttrigger: [],\n\t\t\ttarget: []\n\t\t}\n\t);\n\n\t!lists.trigger.length && (element.hasAttribute(CLASS) || element.hasAttribute(CLASS_TRIGGER)) && lists.trigger.push(DEFAULT_CLASS);\n\t!lists.target.length && (element.hasAttribute(CLASS) || element.hasAttribute(CLASS_TARGET)) && lists.target.push(DEFAULT_CLASS);\n\n\treturn lists;\n};\n","import { GROUP, RADIO_GROUP } from \"../constants/constants\";\nimport $$ from \"./retrieve-query-selector-all\";\nimport namespacedProp from \"../helpers/retrieve-namespaced-property\";\n\n/**\n * Retrieve all active elements of a group.\n * @param {node} element - An element of a group\n * @returns {array} - An array of active elements of a group\n */\nexport default element => {\n\tconst type = element.hasAttribute(GROUP) ? GROUP : RADIO_GROUP;\n\treturn $$(`${type}=\"${element.getAttribute(type)}\"`).filter(groupElement => groupElement[namespacedProp('isActive')]);\n};\n","import {\r\n\tTARGET,\r\n\tTARGET_ALL,\r\n\tTARGET_NEXT,\r\n\tTARGET_PARENT,\r\n\tTARGET_PREVIOUS,\r\n\tTARGET_SELF\r\n} from \"../constants/constants\";\r\n\r\n/**\r\n * Test a selector.\r\n * @param {string} selector - The selector corresponding to the targets list\r\n * @param {string} attribute - The selector scope, set by the user\r\n * @returns {undefined}\r\n */\r\nconst testSelector = (selector, attribute) => {\r\n\tif (!selector) {\r\n\t\tconsole.warn(`You should fill the attribute '${attribute}' with a selector`);\r\n\t}\r\n};\r\n\r\n/**\r\n * Test a targets list.\r\n * @param {string} selector - The selector corresponding to the targets list\r\n * @param {nodeList} targetList - A target elements list\r\n * @returns {nodeList} - The targets list\r\n */\r\nconst testTargets = (selector, targetList) => {\r\n\r\n\t/** Test if there's no match for a selector */\r\n\tif (targetList.length === 0) {\r\n\t\tconsole.warn(`There's no match with the selector '${selector}' for this trigger`);\r\n\t\treturn [];\r\n\t}\r\n\r\n\t/** Test if there's more than one match for an ID selector */\r\n\tconst matches = selector.match(/#\\w+/gi);\r\n\tif (matches) {\r\n\t\tmatches.forEach(match => {\r\n\t\t\tconst result = [...targetList].filter(target => target.id === match.slice(1));\r\n\t\t\tif (result.length > 1) {\r\n\t\t\t\tconsole.warn(`There's ${result.length} matches with the selector '${match}' for this trigger`);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\treturn [...targetList];\r\n};\r\n\r\n/**\r\n * Retrieve all targets of a trigger element, depending of its target attribute.\r\n * @param {node} element - A trigger element\r\n * @returns {nodeList} - All targets of a trigger element\r\n */\r\nexport default element => {\r\n\tif (element.hasAttribute(TARGET) || element.hasAttribute(TARGET_ALL)) {\r\n\t\tconst selector = element.getAttribute(TARGET) || element.getAttribute(TARGET_ALL);\r\n\t\ttestSelector(selector, element.hasAttribute(TARGET) ? TARGET : TARGET_ALL);\r\n\t\treturn testTargets(selector, document.querySelectorAll(selector));\r\n\t}\r\n\r\n\tif (element.hasAttribute(TARGET_PARENT)) {\r\n\t\tconst selector = element.getAttribute(TARGET_PARENT);\r\n\t\ttestSelector(selector, TARGET_PARENT);\r\n\t\treturn testTargets(selector, element.parentElement.querySelectorAll(selector));\r\n\t}\r\n\r\n\tif (element.hasAttribute(TARGET_SELF)) {\r\n\t\tconst selector = element.getAttribute(TARGET_SELF);\r\n\t\ttestSelector(selector, TARGET_SELF);\r\n\t\treturn testTargets(selector, element.querySelectorAll(selector));\r\n\t}\r\n\r\n\tif (element.hasAttribute(TARGET_PREVIOUS)) {\r\n\t\treturn testTargets(\"previous\", [element.previousElementSibling].filter(Boolean));\r\n\t}\r\n\r\n\tif (element.hasAttribute(TARGET_NEXT)) {\r\n\t\treturn testTargets(\"next\", [element.nextElementSibling].filter(Boolean));\r\n\t}\r\n\r\n\treturn [];\r\n};\r\n","/**\r\n * Toggle each class in list on the element.\r\n * @param {node} element - An element on which toggle each class\r\n * @param {array} list - An array of classlist to toggle\r\n * @returns {undefined}\r\n */\r\nexport default (element, list) => list.forEach(listItem => {\r\n\telement.classList.toggle(listItem);\r\n});\r\n","import {\n\tARROWS,\n\tCLASS,\n\tCLASS_TARGET,\n\tCLASS_TRIGGER,\n\tESCAPE,\n\tEVENT,\n\tGROUP,\n\tIS_ACTIVE,\n\tMODAL,\n\tOUTSIDE,\n\tOUTSIDE_EVENT,\n\tRADIO_GROUP,\n\tTARGET,\n\tTARGET_ALL,\n\tTARGET_NEXT,\n\tTARGET_PARENT,\n\tTARGET_PREVIOUS,\n\tTARGET_SELF,\n\tTARGET_STATE,\n\tTRIGGER_OFF\n} from \"../constants/constants\";\nimport { TOGGLE_AFTER, TOGGLE_BEFORE } from \"../constants/events\";\nimport $$ from \"../helpers/retrieve-query-selector-all\";\nimport dispatchHook from \"../helpers/dispatch-hook\";\nimport manageAria from \"../helpers/manage-aria\";\nimport namespacedProp from \"../helpers/retrieve-namespaced-property\";\nimport retrieveClassList from \"../helpers/retrieve-class-list\";\nimport retrieveGroupActiveElement from \"../helpers/retrieve-group-active-element\";\nimport retrieveTargets from \"../helpers/retrieve-targets\";\nimport toggleClassList from \"../helpers/toggle-class-list\";\n\n/** Need to use a map for some event handler to ensure to have the same signature */\nconst HANDLER_MAP = {};\n\n/**\n * Manage event listener on document\n * @param {element} element - The element on which test if there event type specified\n * @returns {undefined}\n */\nconst addEventListenerOnDocument = element => document.addEventListener(\n\t\telement.getAttribute(OUTSIDE_EVENT) || element.getAttribute(EVENT) || \"click\",\n\t\tdocumentEventHandler,\n\t\tfalse\n\t);\n\n/**\n * Toggle off all elements width 'data-toggle-outside' attribute\n * when reproducing specified or click event outside itself or its targets.\n * @param {event} event - Event triggered on document\n * @returns {undefined}\n */\nconst documentEventHandler = event => {\n\tconst eTarget = event.target,\n\t\teType = event.type;\n\tlet insideTarget = false;\n\n\t$$(OUTSIDE)\n\t\t.filter(element => element.getAttribute(OUTSIDE_EVENT) === eType ||\n\t\t\t\t(element.getAttribute(EVENT) === eType && !element.hasAttribute(OUTSIDE_EVENT)) ||\n\t\t\t\t(eType === \"click\" && !element.hasAttribute(EVENT) && !element.hasAttribute(OUTSIDE_EVENT)))\n\t\t.forEach(element => {\n\t\t\tconst e = eTarget.closest(`[${TARGET_STATE}=\"true\"]`);\n\t\t\tif (e && e[namespacedProp('trigger')] === element) {\n\t\t\t\tinsideTarget = true;\n\t\t\t}\n\t\t\tif (!insideTarget && element !== eTarget && !element.contains(eTarget) && element[namespacedProp('isActive')]) {\n\t\t\t\t(element.hasAttribute(GROUP) || element.hasAttribute(RADIO_GROUP) ? manageGroup : manageToggle)(element);\n\t\t\t}\n\t\t});\n\n\tif (!insideTarget) {\n\t\tdocument.removeEventListener(eType, documentEventHandler, false);\n\t}\n\n\t// eTarget may be an element inside a trigger\n\tconst newTarget = eTarget.closest(`[${CLASS}][${OUTSIDE}],[${CLASS_TRIGGER}][${OUTSIDE}],[${CLASS_TARGET}][${OUTSIDE}]`);\n\tif (newTarget && newTarget[namespacedProp('isActive')]) {\n\t\taddEventListenerOnDocument(eTarget);\n\t}\n};\n\n/**\n * Manage click on elements with 'data-trigger-off' attribute.\n * @param {event} event - Event triggered on element with 'trigger-off' attribute\n * @returns {undefined}\n */\nconst triggerOffHandler = event => manageToggle(event.currentTarget[namespacedProp('target')]);\n\n/**\n * Manage event ouside trigger or target elements.\n * @param {node} element - The element to toggle when 'click' or custom event is triggered on document\n * @returns {undefined}\n */\nconst manageTriggerOutside = element => {\n\tif (!element.hasAttribute(OUTSIDE)) {\n\t\treturn;\n\t}\n\n\tif (element.hasAttribute(RADIO_GROUP)) {\n\t\treturn console.warn(`You can't use '${OUTSIDE}' on a radio grouped trigger`);\n\t}\n\n\tif (element[namespacedProp('isActive')]) {\n\t\treturn addEventListenerOnDocument(element);\n\t}\n};\n\n/**\n * Manage elements inside a target element which have 'data-toggle-trigger-off' attribute.\n * @param {node} targetElement - An element targeted by the trigger element\n * @param {node} triggerElement - The trigger element\n * @returns {undefined}\n */\nconst manageTriggerOff = (targetElement, triggerElement) => {\n\tconst triggerOffList = $$(TRIGGER_OFF, targetElement).filter(triggerOff => !triggerOff.getAttribute(TRIGGER_OFF) || targetElement.matches(triggerOff.getAttribute(TRIGGER_OFF)));\n\n\tif (triggerOffList.length === 0) {\n\t\treturn;\n\t}\n\n\tif (triggerElement[namespacedProp('isActive')]) {\n\t\treturn triggerOffList.forEach(triggerOff => {\n\t\t\t// Do not override if another reference is already set\n\t\t\tif (!triggerOff[namespacedProp('target')]) {\n\t\t\t\ttriggerOff[namespacedProp('target')] = triggerElement;\n\t\t\t\ttriggerOff.addEventListener(\"click\", triggerOffHandler, false);\n\t\t\t}\n\t\t});\n\t}\n\n\ttriggerOffList.forEach(triggerOff => {\n\t\t// Remove reference only if it equals current trigger\n\t\tif (triggerOff[namespacedProp('target')] === triggerElement) {\n\t\t\ttriggerOff[namespacedProp('target')] = null;\n\t\t\ttriggerOff.removeEventListener(\"click\", triggerOffHandler, false);\n\t\t}\n\t});\n\treturn triggerElement.focus();\n};\n\n/**\n * Manage focus trap inside a target element:\n * When Tab key is pressed, if focus is outside of the container, give focus on first item ;\n * when Tab key is pressed, if focus is on last item, give focus on first one ;\n * when Shift + Tab keys are pressed, if focus is on first item, give focus on last one.\n * @param {node} targetElement - The focus trap container\n * @returns {undefined}\n */\nconst focusTrapHandler = targetElement => event => {\n\tconst focusablesList = [...targetElement.querySelectorAll(\"a[href], area[href], input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]\")];\n\n\tif (!focusablesList.length || event.key !== \"Tab\") {\n\t\treturn;\n\t}\n\n\tconst currentItem = event.target,\n\t\tfirstItem = focusablesList[0],\n\t\tlastItem = focusablesList[focusablesList.length - 1];\n\n\t// Outside focus trap container: focus on first\n\tif (focusablesList.indexOf(currentItem) === -1) {\n\t\tevent.preventDefault();\n\t\treturn firstItem.focus();\n\t}\n\n\tif (event.shiftKey && currentItem === firstItem) {\n\t\tevent.preventDefault();\n\t\treturn lastItem.focus();\n\t}\n\n\tif (!event.shiftKey && currentItem === lastItem) {\n\t\tevent.preventDefault();\n\t\treturn firstItem.focus();\n\t}\n};\n\n/**\n * Manage attributes and events of targets elements.\n * @param {node} triggerElement - The trigger element\n * @param {array} classListForTarget - The class list to toggle\n * @param {boolean} onLoadActive - A flag for active by default\n * @returns {undefined}\n */\nconst manageTargets = (triggerElement, classListForTarget, onLoadActive) => retrieveTargets(triggerElement).forEach(targetElement => {\n\t\tdispatchHook(targetElement, TOGGLE_BEFORE);\n\n\t\ttargetElement[namespacedProp('isActive')] = !targetElement[namespacedProp('isActive')];\n\t\tmanageAria(targetElement);\n\n\t\tif (onLoadActive) {\n\t\t\ttargetElement.classList.add(...classListForTarget);\n\t\t} else {\n\t\t\ttoggleClassList(targetElement, classListForTarget);\n\t\t}\n\n\t\tif (triggerElement.hasAttribute(OUTSIDE)) {\n\t\t\ttargetElement.setAttribute(TARGET_STATE, triggerElement[namespacedProp('isActive')]);\n\t\t\ttargetElement[namespacedProp('trigger')] = triggerElement;\n\t\t}\n\n\t\tif (triggerElement.hasAttribute(MODAL)) {\n\t\t\tif (targetElement[namespacedProp('isActive')]) {\n\t\t\t\tHANDLER_MAP[targetElement] = focusTrapHandler(targetElement);\n\t\t\t\tdocument.addEventListener(\"keydown\", HANDLER_MAP[targetElement], false);\n\t\t\t} else {\n\t\t\t\tdocument.removeEventListener(\"keydown\", HANDLER_MAP[targetElement], false);\n\t\t\t\tdelete HANDLER_MAP[targetElement];\n\t\t\t}\n\t\t}\n\n\t\tdispatchHook(targetElement, TOGGLE_AFTER);\n\n\t\tmanageTriggerOff(targetElement, triggerElement);\n\t});\n\n/**\n * Toggle class and aria on trigger and target elements.\n * @param {node} element - The element to toggle state and attributes\n * @returns {undefined}\n */\nconst manageToggle = element => {\n\tdispatchHook(element, TOGGLE_BEFORE);\n\n\tconst classList = retrieveClassList(element);\n\ttoggleClassList(element, classList.trigger);\n\telement[namespacedProp('isActive')] = !element[namespacedProp('isActive')];\n\tmanageAria(element);\n\n\tdispatchHook(element, TOGGLE_AFTER);\n\n\tmanageTargets(element, classList.target, false);\n\treturn manageTriggerOutside(element);\n};\n\n/**\n * Toggle elements of a same group.\n * @param {node} element - The element to test if it's in a group\n * @returns {undefined}\n */\nconst manageGroup = element => {\n\tconst groupActiveElements = retrieveGroupActiveElement(element);\n\tif (groupActiveElements.length === 0) {\n\t\treturn manageToggle(element);\n\t}\n\n\tif (groupActiveElements.indexOf(element) === -1) {\n\t\tgroupActiveElements.forEach(manageToggle);\n\t\treturn manageToggle(element);\n\t}\n\n\tif (groupActiveElements.indexOf(element) !== -1 && !element.hasAttribute(RADIO_GROUP)) {\n\t\treturn manageToggle(element);\n\t}\n};\n\n/**\n * Check if a trigger element is active.\n * @param {node} element - A trigger element\n * @returns {boolean} - The active state of the trigger element\n */\nexport const isActive = element => !!element[namespacedProp('isActive')];\n\n/**\n * Unbind toggling management from an element list.\n * @param {node} elementList - An element, or element list, on which remove the toggling management\n * @returns {node} - Same element, or element list\n */\nexport const unbind = elementList => {\n\t(elementList[Symbol.iterator] ? [...elementList] : [elementList]).forEach(element => {\n\t\telement[namespacedProp('unbind')] && element[namespacedProp('unbind')]();\n\t});\n\treturn elementList;\n};\n\n/**\n * Unbind toggling management from all initialized elements in the page.\n * @returns {nodeList} - A list of unbinded triggers\n */\nexport const unbindAll = () => unbind($$().filter(trigger => trigger[namespacedProp('isInitialized')]));\n\n/**\n * Initialization.\n * @returns {array} - An array of initialized triggers\n */\nexport default () => {\n\n\t/**\n\t * Warn if there some CLASS_TARGET triggers with no specified target.\n\t */\n\t[...document.querySelectorAll(`[${CLASS_TARGET}]:not([${TARGET}]):not([${TARGET_ALL}]):not([${TARGET_NEXT}]):not([${TARGET_PREVIOUS}]):not([${TARGET_PARENT}]):not([${TARGET_SELF}])`)]\n\t\t.forEach(element => {\n\t\t\tconsole.warn(`This trigger has the attribute '${CLASS_TARGET}', but no specified target\\n`, element);\n\t\t});\n\n\t/**\n\t * Active by default management.\n\t */\n\t$$(IS_ACTIVE)\n\t\t.filter(trigger => !trigger[namespacedProp('isDefaultInitialized')])\n\t\t.forEach(trigger => {\n\t\t\tif ((trigger.hasAttribute(GROUP) || trigger.hasAttribute(RADIO_GROUP)) && retrieveGroupActiveElement(trigger).length > 0) {\n\t\t\t\treturn console.warn(`Toggle group '${trigger.getAttribute(GROUP) ||\n\t\t\t\t\t\ttrigger.getAttribute(RADIO_GROUP)}' must not have more than one trigger with '${IS_ACTIVE}'`);\n\t\t\t}\n\t\t\tmanageToggle(trigger);\n\t\t\ttrigger[namespacedProp('isDefaultInitialized')] = true;\n\t\t});\n\n\t/**\n\t * Set specified or click event on each trigger element.\n\t */\n\tconst triggerList = $$().filter(trigger => !trigger[namespacedProp('isInitialized')]);\n\ttriggerList.forEach(trigger => {\n\t\tconst handler = event => {\n\t\t\tevent.preventDefault();\n\t\t\t(trigger.hasAttribute(GROUP) || trigger.hasAttribute(RADIO_GROUP) ? manageGroup : manageToggle)(trigger);\n\t\t}\n\t\tconst eventName = trigger.getAttribute(EVENT) || \"click\";\n\t\ttrigger.addEventListener(eventName, handler, false);\n\t\ttrigger[namespacedProp('unbind')] = () => {\n\t\t\ttrigger.removeEventListener(eventName, handler, false);\n\t\t\ttrigger[namespacedProp('isInitialized')] = false;\n\t\t}\n\t\ttrigger[namespacedProp('isInitialized')] = true;\n\t});\n\n\t/**\n\t * Escape key management.\n\t */\n\tif ($$(ESCAPE).length > 0 && !document[namespacedProp('isEscapeKeyInitialized')]) {\n\t\tdocument.addEventListener(\n\t\t\t\"keydown\",\n\t\t\tevent => {\n\t\t\t\tif (!(event.key === \"Escape\") && !(event.key === \"Esc\")) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t$$(ESCAPE).forEach(trigger => {\n\t\t\t\t\tif (!trigger[namespacedProp('isActive')]) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (trigger.hasAttribute(RADIO_GROUP)) {\n\t\t\t\t\t\treturn console.warn(`You can't use '${ESCAPE}' on a radio grouped trigger`);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn (trigger.hasAttribute(GROUP) ? manageGroup : manageToggle)(trigger);\n\t\t\t\t});\n\t\t\t},\n\t\t\tfalse\n\t\t);\n\t\tdocument[namespacedProp('isEscapeKeyInitialized')] = true;\n\t}\n\n\t/**\n\t * Arrows key management.\n\t */\n\tif ($$(ARROWS).length > 0 && !document[namespacedProp('isArrowKeysInitialized')]) {\n\t\tdocument.addEventListener(\n\t\t\t\"keydown\",\n\t\t\tevent => {\n\t\t\t\tconst activeElement = document.activeElement;\n\t\t\t\tif (\n\t\t\t\t\t[\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\", \"Home\", \"End\"].indexOf(event.key) === -1 ||\n\t\t\t\t\t(!activeElement.hasAttribute(CLASS) && !activeElement.hasAttribute(CLASS_TRIGGER) && !activeElement.hasAttribute(CLASS_TARGET)) ||\n\t\t\t\t\t!activeElement.hasAttribute(ARROWS)\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!activeElement.hasAttribute(GROUP) && !activeElement.hasAttribute(RADIO_GROUP)) {\n\t\t\t\t\treturn console.warn(`You can't use '${ARROWS}' on a trigger without '${GROUP}' or '${RADIO_GROUP}'`);\n\t\t\t\t}\n\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tconst groupList = activeElement.hasAttribute(GROUP)\n\t\t\t\t\t? $$(`${GROUP}='${activeElement.getAttribute(GROUP)}'`)\n\t\t\t\t\t: $$(`${RADIO_GROUP}='${activeElement.getAttribute(RADIO_GROUP)}'`);\n\n\t\t\t\tlet newElement = activeElement;\n\t\t\t\tswitch (event.key) {\n\t\t\t\t\tcase \"ArrowUp\":\n\t\t\t\t\tcase \"ArrowLeft\":\n\t\t\t\t\t\tnewElement =\n\t\t\t\t\t\t\tgroupList.indexOf(activeElement) > 0\n\t\t\t\t\t\t\t\t? groupList[groupList.indexOf(activeElement) - 1]\n\t\t\t\t\t\t\t\t: groupList[groupList.length - 1];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"ArrowDown\":\n\t\t\t\t\tcase \"ArrowRight\":\n\t\t\t\t\t\tnewElement =\n\t\t\t\t\t\t\tgroupList.indexOf(activeElement) < groupList.length - 1\n\t\t\t\t\t\t\t\t? groupList[groupList.indexOf(activeElement) + 1]\n\t\t\t\t\t\t\t\t: groupList[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Home\":\n\t\t\t\t\t\tnewElement = groupList[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"End\":\n\t\t\t\t\t\tnewElement = groupList[groupList.length - 1];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t}\n\n\t\t\t\tnewElement.focus();\n\t\t\t\treturn newElement.dispatchEvent(new Event(newElement.getAttribute(EVENT) || \"click\"));\n\t\t\t},\n\t\t\tfalse\n\t\t);\n\t\tdocument[namespacedProp('isArrowKeysInitialized')] = true;\n\t}\n\n\treturn triggerList;\n};\n","import { ready } from './utils';\n\nif (navigator && navigator.share) {\n ready(function setWebSharing() {\n const shareElement = document.querySelector('.webshare');\n if (shareElement) {\n const urlLocation = new URL(window.location);\n let url = urlLocation.origin + urlLocation.pathname;\n const canonicalElement = document.querySelector('link[rel=canonical]');\n if (canonicalElement !== null) {\n url = canonicalElement.href;\n }\n\n const sharedData = {\n title: shareElement.dataset.title,\n text: shareElement.dataset.text,\n url: url,\n };\n\n let canShare = true;\n if (!!navigator.canShare) {\n canShare = navigator.canShare(sharedData);\n }\n if (canShare) {\n shareElement\n .querySelector('button')\n .addEventListener('click', function shareContent() {\n navigator\n .share({\n title: sharedData.title,\n text: sharedData.text,\n url: sharedData.url,\n })\n .then(() => console.log('Successful share'))\n .catch((error) => console.log('Error sharing', error));\n });\n\n shareElement.classList.add('visible');\n }\n }\n });\n}\n","import { ready } from './utils';\n\nready(function latePrefetch() {\n ['rel', 'media'].forEach((type) =>\n [...document.querySelectorAll(`[data-${type}]`)].forEach((x) =>\n x.setAttribute(type, x.dataset[type]),\n ),\n );\n});\n","import easyToggle from 'easy-toggle-state';\nimport 'touchtap-event';\nimport { ready } from './subscripts/utils';\n\nimport './subscripts/savedata';\nimport './subscripts/localstorageSaveLang';\nimport './subscripts/localstorageSaveDarkMode';\nimport './subscripts/footnotesAlternatives';\nimport { abbrTouch } from './vendors/abbr-touch';\n\nready(function () {\n easyToggle();\n\n var tooltipTimeout;\n\n function getTooltipElement() {\n var tooltip = document.querySelector('#abbr-tooltip');\n if (!tooltip) {\n tooltip = document.createElement('div');\n tooltip.id = 'abbr-tooltip';\n // Technically this is duplicate content, just exposing it on mobile\n tooltip.setAttribute('aria-hidden', 'true');\n document.body.appendChild(tooltip);\n }\n return tooltip;\n }\n\n function updateTooltip(tooltip, term, expandedTerm) {\n var text = term + ': ' + expandedTerm;\n tooltip.innerHTML = text;\n tooltip.classList.add('visible');\n\n if (tooltipTimeout) {\n clearTimeout(tooltipTimeout);\n }\n\n var timeoutLength = text.length * 120;\n tooltipTimeout = setTimeout(function () {\n tooltip.classList.remove('visible');\n }, timeoutLength);\n }\n\n abbrTouch(document.querySelector('article'), function (target, title) {\n var tooltip = getTooltipElement();\n // Ensure the tooltip is ready so that the initial transition works\n setTimeout(function () {\n updateTooltip(tooltip, target.innerHTML, title);\n }, 0);\n });\n});\n\nimport './subscripts/webshare';\nimport './subscripts/nakedDay';\nimport './subscripts/lazyNetworkLoad';\n"],"names":["i","lang","document","getElementsByTagName","getAttribute","alternatives","to","en","fr","back","textnotes","querySelectorAll","footnotes","getElementsByClassName","length","setAttribute","forEach","label","addEventListener","localStorage","setItem","this","dataset","value","e","lang_user","getItem","window","navigator","userLanguage","languages","language","slice","location","querySelector","href","event","target","matches","q","Date","m","getMonth","d","getDate","concat","console","log","x","remove","saveData","matchMedia","connection","documentElement","classList","add","img","srcset","replace","module","exports","ready","fn","attachEvent","readyState","abbrTouch","defaultOnTapHandler","title","touchX","touchY","alert","elementScope","customTapHandler","tapHandler","elements","touchtapHandler","handler","currentTarget","customData","err","touchTapEvent","isTapLength","tapLengthTimeout","startPosition","y","currentPosition","getTouchObject","originalEvent","targetTouches","approximatelyEqual","a","b","Math","abs","touchstart","touchObject","pageX","pageY","clearTimeout","setTimeout","touchend","dispatchEvent","touchmove","createEvent","initEvent","init","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","PREFIX","key","prefix","getPrefix","filter","Boolean","join","ARROWS","CLASS","CLASS_TARGET","CLASS_TRIGGER","DEFAULT_CLASS","ESCAPE","EVENT","GROUP","IS_ACTIVE","MODAL","OUTSIDE","OUTSIDE_EVENT","RADIO_GROUP","TARGET","TARGET_ALL","TARGET_NEXT","TARGET_PARENT","TARGET_PREVIOUS","TARGET_SELF","TARGET_STATE","TRIGGER_OFF","TOGGLE_AFTER","Event","TOGGLE_BEFORE","selector","node","scope","query","trim","element","action","property","config","Object","keys","hasAttribute","warningText","classItem","attribute","isTarget","classFromAttribute","split","type","groupElement","testSelector","warn","testTargets","targetList","match","result","id","list","listItem","toggle","HANDLER_MAP","addEventListenerOnDocument","documentEventHandler","eTarget","eType","insideTarget","closest","contains","manageGroup","manageToggle","removeEventListener","newTarget","triggerOffHandler","triggerClassArray","targetClassArray","includes","lists","reduce","acc","val","trigger","push","triggerElement","classListForTarget","onLoadActive","parentElement","previousElementSibling","nextElementSibling","targetElement","focusablesList","currentItem","firstItem","lastItem","indexOf","preventDefault","focus","shiftKey","focusTrapHandler","triggerOffList","triggerOff","manageTriggerOff","manageTriggerOutside","groupActiveElements","share","shareElement","urlLocation","URL","url","origin","pathname","canonicalElement","sharedData","text","canShare","then","catch","error","tooltipTimeout","eventName","activeElement","groupList","newElement","easyToggle","tooltip","createElement","body","appendChild","getTooltipElement","term","expandedTerm","innerHTML","updateTooltip"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"scripts/index.min.js","mappings":";sBAKA,IAYIA,EAZAC,EAAOC,SAASC,qBAAqB,QAAQ,GAAGC,aAAa,QAC/DC,EAAe,CACbC,GAAI,CACFC,GAAI,WACJC,GAAI,uBAENC,KAAM,CACJF,GAAI,qBACJC,GAAI,oBAKRE,EAAY,IAAIR,SAASS,iBAAiB,oBAC1CC,EAAY,IAAIV,SAASW,uBAAuB,qBAClD,IAAKb,EAAI,EAAGA,EAAIU,EAAUI,OAAQd,IAChCU,EAAUV,GAAGe,aAAa,QAASV,EAAaC,GAAGL,IAErD,IAAKD,EAAI,EAAGA,EAAIY,EAAUE,OAAQd,IAChCY,EAAUZ,GAAGe,aAAa,QAASV,EAAaI,KAAKR,aCpBvD,IACEC,SACGS,iBAAiB,4BACjBK,SAAQ,SAAUC,GACjBA,EAAMC,iBAAiB,SAAS,WAC9BC,aAAaC,QAAQ,YAAaC,KAAKC,QAAQC,MACjD,GACF,GACJ,CAAE,MAAOC,GAAI,YCNb,IAAIC,EACJ,IACEA,EAAYN,aAAaO,QAAQ,YACnC,CAAE,MAAOF,GAAI,CACb,IAAKC,EAAW,CACdA,GACEE,OAAOC,UAAUC,cAChBF,OAAOC,UAAUE,UAAUhB,OAAS,GAAKa,OAAOC,UAAUE,UAAU,IACrEH,OAAOC,UAAUG,UACjBC,MAAM,EAAG,GACX,IACEb,aAAaC,QAAQ,YAAaK,EACpC,CAAE,MAAOD,GAAI,CAETC,GADYvB,SAASC,qBAAqB,QAAQ,GAAGF,OAEvD0B,OAAOM,SAAW/B,SAASgC,cACzB,+BACAC,KAEN,CAEAjC,SAASgB,iBACP,SACCkB,IACC,GAAIA,EAAMC,OAAOC,QAAQ,qBACvB,IACEnB,aAAaC,QAAQ,YAAagB,EAAMC,OAAOjC,aAAa,QAC9D,CAAE,MAAOoB,GAAI,CACf,IAEF,aCpCF,IAAMe,EAAI,IAAIC,KACRC,EAAIF,EAAEG,WAAa,EACnBC,EAAIJ,EAAEK,UACO,OAAf,GAAAC,OAAGJ,EAAC,KAAAI,OAAIF,KACVG,QAAQC,IAAI,kBACZ,IAAI7C,SAASS,iBAAiB,kCAAkCK,SAASgC,GACvEA,EAAEC,sBCFN,IACMC,KAAW,EACXvB,OAAOwB,WAAW,kCAAkCb,UACtDY,GAAW,GAET,eAAgBtB,WACmB,GAAjCA,UAAUwB,WAAWF,WACvBA,GAAW,GAGXA,IAEFhD,SAASmD,gBAAgBC,UAAUC,IAAI,aAEvC,IAAIrD,SAASS,iBAAiB,aAAaK,SAASwC,IAElDA,EAAIC,OAASD,EAAIC,OACdC,QAAQ,UAAW,OACnBA,QAAQ,aAAc,sBAAsB,aCtBrDC,EAAOC,QAAU,CACfC,MAAO,SAAUC,IAEb5D,SAAS6D,YACmB,aAAxB7D,SAAS8D,WACe,YAAxB9D,SAAS8D,YAEbF,IAEA5D,SAASgB,iBAAiB,mBAAoB4C,GAEhD5D,SAASgB,iBAAiB,kBAAmB4C,EAC/C,WCNFH,EAAOC,QAAU,CACfK,UAAY,WAEV,aAqBA,SAASC,EAAoB7B,EAAQ8B,EAAOC,EAAQC,GAElDC,MAAMH,EACR,CAkCA,OAzBA,SAAcI,EAAcC,GAC1B,IACOD,IACHA,EAAerE,UAOjB,IAJA,IAAIuE,EAAaD,GAAoBN,EAEjCQ,EAAWH,EAAa5D,iBAAiB,eACzCgE,GAnCyBC,EAmCiBH,EAlCzC,SAAUjD,GACfoD,EACEpD,EAAEqD,cACFrD,EAAEqD,cAAcV,MAChB3C,EAAEsD,WAAWV,OACb5C,EAAEsD,WAAWT,OAEjB,GA4BWrE,EAAI,EAAGA,EAAI0E,EAAS5D,QAEvB4D,EAAS1E,GAAGkB,iBAFmBlB,IAGjC0E,EAAS1E,GAAGkB,iBAAiB,WAAYyD,GAAiB,EAOhE,CAAE,MAAOI,GAEP,CAhDJ,IAAiCH,CAkDjC,CAEF,CA7DY,eCDd,WACE,aAEA,IAAII,EACAC,EACAC,EACAC,EAAgB,CAAEnC,GAAI,EAAGoC,GAAI,GAC7BC,EAAkB,CAAErC,GAAI,EAAGoC,GAAI,GAOnC,SAASE,EAAe9D,GACtB,OAAIA,EAAE+D,eAAiB/D,EAAE+D,cAAcC,cAC9BhE,EAAE+D,cAAcC,cAAc,GAEnChE,EAAEgE,cACGhE,EAAEgE,cAAc,GAElBhE,CACT,CAQA,SAASiE,EAAmBC,EAAGC,GAC7B,OAAOC,KAAKC,IAAIH,EAAIC,GAAK,CAC3B,CAMA,SAASG,EAAWtE,GAClB,IAAIuE,EAAcT,EAAe9D,GACjC2D,EAAcnC,EAAI+C,EAAYC,MAC9Bb,EAAcC,EAAIW,EAAYE,MAC9BZ,EAAgBrC,EAAI+C,EAAYC,MAChCX,EAAgBD,EAAIW,EAAYE,MAChChB,GAAc,EACVC,GACFgB,aAAahB,GAEfA,EAAmBiB,YAAW,WAC5BlB,GAAc,CAChB,GAAG,IACL,CAMA,SAASmB,EAAS5E,GACZyD,GACAQ,EAAmBN,EAAcnC,EAAGqC,EAAgBrC,IACpDyC,EAAmBN,EAAcC,EAAGC,EAAgBD,KACtDJ,EAAcF,WAAa,CACzBV,OAAQiB,EAAgBrC,EACxBqB,OAAQgB,EAAgBD,GAE1B5D,EAAEa,OAAOgE,cAAcrB,GAE3B,CAMA,SAASsB,EAAU9E,GACjB,IAAIuE,EAAcT,EAAe9D,GACjC6D,EAAgBrC,EAAI+C,EAAYC,MAChCX,EAAgBD,EAAIW,EAAYE,KAClC,EAKA,WACE,KAGEjB,EAAgB9E,SAASqG,YAAY,UACvBC,UAAU,YAAY,GAAM,GAI1CtG,SAASgB,iBAAiB,aAAc4E,GAAY,GACpD5F,SAASgB,iBAAiB,WAAYkF,GAAU,GAChDlG,SAASgB,iBAAiB,cAAekF,GAAU,GACnDlG,SAASgB,iBAAiB,YAAaoF,GAAW,EACpD,CACA,MAAOvB,GAEP,CACF,CAEA0B,EACD,CAtGD,KCLIC,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAajD,QAGrB,IAAID,EAAS+C,EAAyBE,GAAY,CAGjDhD,QAAS,CAAC,GAOX,OAHAmD,EAAoBH,GAAUjD,EAAQA,EAAOC,QAAS+C,GAG/ChD,EAAOC,OACf,oBClBA,MAAMoD,EAAS9G,SAASmD,gBAAgBjD,aAAa,yCAA2C,SCI1FkB,EAAU,CAAC2F,EAAKC,EDFG,KAAMF,ECEAG,KAAgB,CAAC,OAAQD,EAAQD,GAAKG,OAAOC,SAASC,KAAK,KAK7EC,EAASjG,EAAQ,UAE7BkG,EAAQlG,EAAQ,SAChBmG,EAAenG,EAAQ,mBACvBoG,EAAgBpG,EAAQ,oBACxBqG,EAAgB,YAChBC,EAAStG,EAAQ,UACjBuG,EAAQvG,EAAQ,SAEhBwG,EAAQxG,EAAQ,SAEhByG,EAAYzG,EAAQ,aACpB0G,EAAQ1G,EAAQ,SAChB2G,EAAU3G,EAAQ,WAClB4G,EAAgB5G,EAAQ,iBAExB6G,EAAc7G,EAAQ,eAEtB8G,EAAS9G,EAAQ,UACjB+G,EAAa/G,EAAQ,cACrBgH,EAAchH,EAAQ,eACtBiH,EAAgBjH,EAAQ,iBACxBkH,EAAkBlH,EAAQ,mBAC1BmH,EAAcnH,EAAQ,eACtBoH,EAAepH,EAAQ,SACvBqH,EAAcrH,EAAQ,eCnCVsH,EAAe,IAAIC,MAAM,eACrCC,EAAgB,IAAID,MAAM,gBCc3B,GAAgBE,EAAUC,KACzB,MAAMC,EAAQF,EAAW,IAAIA,KAAc,GAE3C,GAAIC,EACH,MAAO,IAAIA,EAAKrI,iBAAiBsI,IAGlC,MAAMC,EAAQ,CACb,IAAI1B,KAASyB,IACb,IAAIvB,KAAiBuB,IACrB,IAAIxB,MAAiBW,KAAUa,IAC/B,IAAIxB,MAAiBY,KAAcY,IACnC,IAAIxB,MAAiBa,KAAeW,IACpC,IAAIxB,MAAiBe,KAAmBS,IACxC,IAAIxB,MAAiBc,KAAiBU,IACtC,IAAIxB,MAAiBgB,KAAeQ,KAEnC3B,OACA6B,OAEF,MAAO,IAAIjJ,SAASS,iBAAiBuI,GACrC,ECjCD,GAAgBE,EAASC,IAAWD,EAAQ/C,cAAcgD,GCD1D,EAAgBC,GAAa,mBAAmBA,ICIhD,GACCF,EACAG,EAAS,CACR,eAAWH,EAAQ,EAAe,aAClC,gBAAYA,EAAQ,EAAe,aACnC,eAAWA,EAAQ,EAAe,aAClC,eAAWA,EAAQ,EAAe,aAClC,gBAAYA,EAAQ,EAAe,gBAEhCI,OAAOC,KAAKF,GAAQvI,SAAQiG,GAAOmC,EAAQM,aAAazC,IAAQmC,EAAQrI,aAAakG,EAAKsC,EAAOtC,MCXhG0C,EAAc,CAACC,EAAWC,EAAWC,GAAW,IAAU,oCAAoCF,iCAAyCpC,WAAeqC,+CAAuDC,GAAY,6CAQzNC,EAAqB,CAACX,EAASS,KAAeT,EAAQhJ,aAAayJ,IAAc,IAAIG,MAAM,KAAK5C,OAAOC,SCN7G,EAAe+B,IACd,MAAMa,EAAOb,EAAQM,aAAa5B,GAASA,EAAQK,EACnD,OAAO,EAAG,GAAG8B,MAASb,EAAQhJ,aAAa6J,OAAU7C,QAAO8C,GAAgBA,EAAa,EAAe,cACxG,ECGKC,EAAe,CAACpB,EAAUc,KAC1Bd,GACJjG,QAAQsH,KAAK,kCAAkCP,qBAChD,EASKQ,EAAc,CAACtB,EAAUuB,KAG9B,GAA0B,IAAtBA,EAAWxJ,OAEd,OADAgC,QAAQsH,KAAK,uCAAuCrB,uBAC7C,GAIR,MAAMzG,EAAUyG,EAASwB,MAAM,UAU/B,OATIjI,GACHA,EAAQtB,SAAQuJ,IACf,MAAMC,EAAS,IAAIF,GAAYlD,QAAO/E,GAAUA,EAAOoI,KAAOF,EAAMvI,MAAM,KACtEwI,EAAO1J,OAAS,GACnBgC,QAAQsH,KAAK,WAAWI,EAAO1J,qCAAqCyJ,sBACrE,IAIK,IAAID,EAAW,ECxCvB,GAAgBlB,EAASsB,IAASA,EAAK1J,SAAQ2J,IAC9CvB,EAAQ9F,UAAUsH,OAAOD,EAAS,IC0B7BE,EAAc,CAAC,EAOfC,EAA6B1B,GAAWlJ,SAASgB,iBACrDkI,EAAQhJ,aAAa8H,IAAkBkB,EAAQhJ,aAAayH,IAAU,QACtEkD,GACA,GASIA,EAAuB3I,IAC5B,MAAM4I,EAAU5I,EAAMC,OACrB4I,EAAQ7I,EAAM6H,KACf,IAAIiB,GAAe,EAEnB,EAAGjD,GACDb,QAAOgC,GAAWA,EAAQhJ,aAAa8H,KAAmB+C,GACxD7B,EAAQhJ,aAAayH,KAAWoD,IAAU7B,EAAQM,aAAaxB,IACrD,UAAV+C,IAAsB7B,EAAQM,aAAa7B,KAAWuB,EAAQM,aAAaxB,KAC7ElH,SAAQoI,IACR,MAAM5H,EAAIwJ,EAAQG,QAAQ,IAAIzC,aAC1BlH,GAAKA,EAAE,EAAe,cAAgB4H,IACzC8B,GAAe,GAEXA,GAAgB9B,IAAY4B,GAAY5B,EAAQgC,SAASJ,KAAY5B,EAAQ,EAAe,eAC/FA,EAAQM,aAAa5B,IAAUsB,EAAQM,aAAavB,GAAekD,EAAcC,GAAclC,EACjG,IAGG8B,GACJhL,SAASqL,oBAAoBN,EAAOF,GAAsB,GAI3D,MAAMS,EAAYR,EAAQG,QAAQ,IAAI3D,MAAUS,OAAaP,MAAkBO,OAAaR,MAAiBQ,MACzGuD,GAAaA,EAAU,EAAe,cACzCV,EAA2BE,EAC5B,EAQKS,EAAoBrJ,GAASkJ,EAAalJ,EAAMyC,cAAc,EAAe,YAsI7EyG,EAAelC,IACpB,EAAaA,EAASN,GAEtB,MAAMxF,EJ1MP,CAAgB8F,IACf,GAAIA,EAAQM,aAAalC,IAAU4B,EAAQhJ,aAAaoH,KAAW4B,EAAQM,aAAahC,IAAkB0B,EAAQM,aAAajC,IAAgB,CAC9I,MAAMiE,EAAoB3B,EAAmBX,EAAS1B,GAChDiE,EAAmB5B,EAAmBX,EAAS3B,GAGrDsC,EAAmBX,EAAS5B,GAC1BxG,SAAQ4I,IACJ8B,EAAkBE,SAAShC,IAC9B9G,QAAQsH,KACPT,EAAYC,EAAWlC,GACvB0B,GAGEuC,EAAiBC,SAAShC,IAC7B9G,QAAQsH,KACPT,EAAYC,EAAWnC,GAAc,GACrC2B,EAEF,GAEH,CAGA,MAAMyC,EAAQ,CAACrE,EAAOE,EAAeD,GAAcqE,QAClD,CAACC,EAAKC,KACL,MAAMtB,EAAOX,EAAmBX,EAAS4C,GAGzC,OAFCA,IAAQxE,GAASwE,IAAQtE,IAAkBqE,EAAIE,QAAQC,QAAQxB,IAC/DsB,IAAQxE,GAASwE,IAAQvE,IAAiBsE,EAAI1J,OAAO6J,QAAQxB,GACvDqB,CAAG,GAEX,CACCE,QAAS,GACT5J,OAAQ,KAOV,OAHCwJ,EAAMI,QAAQnL,SAAWsI,EAAQM,aAAalC,IAAU4B,EAAQM,aAAahC,KAAmBmE,EAAMI,QAAQC,KAAKvE,IACnHkE,EAAMxJ,OAAOvB,SAAWsI,EAAQM,aAAalC,IAAU4B,EAAQM,aAAajC,KAAkBoE,EAAMxJ,OAAO6J,KAAKvE,GAE1GkE,CACP,EIiKkB,CAAkBzC,GAQpC,OAPA,EAAgBA,EAAS9F,EAAU2I,SACnC7C,EAAQ,EAAe,cAAgBA,EAAQ,EAAe,aAC9D,EAAWA,GAEX,EAAaA,EAASR,GA7CAuD,EA+CR/C,EA/CwBgD,EA+Cf9I,EAAUjB,OA/CyBgK,GA+CjB,EFjL1C,CAAejD,IACd,GAAIA,EAAQM,aAAatB,IAAWgB,EAAQM,aAAarB,GAAa,CACrE,MAAMU,EAAWK,EAAQhJ,aAAagI,IAAWgB,EAAQhJ,aAAaiI,GAEtE,OADA8B,EAAapB,EAAUK,EAAQM,aAAatB,GAAUA,EAASC,GACxDgC,EAAYtB,EAAU7I,SAASS,iBAAiBoI,GACxD,CAEA,GAAIK,EAAQM,aAAanB,GAAgB,CACxC,MAAMQ,EAAWK,EAAQhJ,aAAamI,GAEtC,OADA4B,EAAapB,EAAUR,GAChB8B,EAAYtB,EAAUK,EAAQkD,cAAc3L,iBAAiBoI,GACrE,CAEA,GAAIK,EAAQM,aAAajB,GAAc,CACtC,MAAMM,EAAWK,EAAQhJ,aAAaqI,GAEtC,OADA0B,EAAapB,EAAUN,GAChB4B,EAAYtB,EAAUK,EAAQzI,iBAAiBoI,GACvD,CAEA,OAAIK,EAAQM,aAAalB,GACjB6B,EAAY,WAAY,CAACjB,EAAQmD,wBAAwBnF,OAAOC,UAGpE+B,EAAQM,aAAapB,GACjB+B,EAAY,OAAQ,CAACjB,EAAQoD,oBAAoBpF,OAAOC,UAGzD,EACP,EEsG2E,CAAgB8E,GAAgBnL,SAAQyL,IAClH,EAAaA,EAAe3D,GAE5B2D,EAAc,EAAe,cAAgBA,EAAc,EAAe,aAC1E,EAAWA,GAEPJ,EACHI,EAAcnJ,UAAUC,OAAO6I,GAE/B,EAAgBK,EAAeL,GAG5BD,EAAezC,aAAazB,KAC/BwE,EAAc1L,aAAa2H,EAAcyD,EAAe,EAAe,cACvEM,EAAc,EAAe,YAAcN,GAGxCA,EAAezC,aAAa1B,KAC3ByE,EAAc,EAAe,cAChC5B,EAAY4B,GAtDSA,IAAiBrK,IACzC,MAAMsK,EAAiB,IAAID,EAAc9L,iBAAiB,sMAE1D,IAAK+L,EAAe5L,QAAwB,QAAdsB,EAAM6E,IACnC,OAGD,MAAM0F,EAAcvK,EAAMC,OACzBuK,EAAYF,EAAe,GAC3BG,EAAWH,EAAeA,EAAe5L,OAAS,GAGnD,OAA6C,IAAzC4L,EAAeI,QAAQH,IAC1BvK,EAAM2K,iBACCH,EAAUI,SAGd5K,EAAM6K,UAAYN,IAAgBC,GACrCxK,EAAM2K,iBACCF,EAASG,SAGZ5K,EAAM6K,UAAYN,IAAgBE,OAAvC,GACCzK,EAAM2K,iBACCH,EAAUI,QAClB,EA6BgCE,CAAiBT,GAC9CvM,SAASgB,iBAAiB,UAAW2J,EAAY4B,IAAgB,KAEjEvM,SAASqL,oBAAoB,UAAWV,EAAY4B,IAAgB,UAC7D5B,EAAY4B,KAIrB,EAAaA,EAAe7D,GAjGL,EAAC6D,EAAeN,KACxC,MAAMgB,EAAiB,EAAGxE,EAAa8D,GAAerF,QAAOgG,IAAeA,EAAWhN,aAAauI,IAAgB8D,EAAcnK,QAAQ8K,EAAWhN,aAAauI,MAEpI,IAA1BwE,EAAerM,SAIfqL,EAAe,EAAe,aAC1BgB,EAAenM,SAAQoM,IAExBA,EAAW,EAAe,aAC9BA,EAAW,EAAe,WAAajB,EACvCiB,EAAWlM,iBAAiB,QAASuK,GAAmB,GACzD,KAIF0B,EAAenM,SAAQoM,IAElBA,EAAW,EAAe,aAAejB,IAC5CiB,EAAW,EAAe,WAAa,KACvCA,EAAW7B,oBAAoB,QAASE,GAAmB,GAC5D,IAEMU,EAAea,SAAO,EA2E5BK,CAAiBZ,EAAeN,EAAe,IAvHpB/C,KAC5B,GAAKA,EAAQM,aAAazB,GAI1B,OAAImB,EAAQM,aAAavB,GACjBrF,QAAQsH,KAAK,kBAAkBnC,iCAGnCmB,EAAQ,EAAe,aACnB0B,EAA2B1B,QADnC,CAEA,EA+HOkE,CAAqBlE,GAhDP,IAAC+C,EAAgBC,EAAoBC,CAgDtB,EAQ/BhB,EAAcjC,IACnB,MAAMmE,EAAsB,EAA2BnE,GACvD,OAAmC,IAA/BmE,EAAoBzM,OAChBwK,EAAalC,IAGyB,IAA1CmE,EAAoBT,QAAQ1D,IAC/BmE,EAAoBvM,QAAQsK,GACrBA,EAAalC,KAGyB,IAA1CmE,EAAoBT,QAAQ1D,IAAoBA,EAAQM,aAAavB,QAAzE,EACQmD,EAAalC,EACrB,0DC3PGxH,WAAaA,UAAU4L,QACzB3J,EAAAA,EAAAA,QAAM,WACJ,IAAM4J,EAAevN,SAASgC,cAAc,aAC5C,GAAIuL,EAAc,CAChB,IAAMC,EAAc,IAAIC,IAAIhM,OAAOM,UAC/B2L,EAAMF,EAAYG,OAASH,EAAYI,SACrCC,EAAmB7N,SAASgC,cAAc,uBACvB,OAArB6L,IACFH,EAAMG,EAAiB5L,MAGzB,IAAM6L,EAAa,CACjB7J,MAAOsJ,EAAanM,QAAQ6C,MAC5B8J,KAAMR,EAAanM,QAAQ2M,KAC3BL,IAAKA,GAGHM,GAAW,EACTtM,UAAUsM,WACdA,EAAWtM,UAAUsM,SAASF,IAE5BE,IACFT,EACGvL,cAAc,UACdhB,iBAAiB,SAAS,WACzBU,UACG4L,MAAM,CACLrJ,MAAO6J,EAAW7J,MAClB8J,KAAMD,EAAWC,KACjBL,IAAKI,EAAWJ,MAEjBO,MAAK,IAAMrL,QAAQC,IAAI,sBACvBqL,OAAOC,GAAUvL,QAAQC,IAAI,gBAAiBsL,IACnD,IAEFZ,EAAanK,UAAUC,IAAI,WAE/B,CACF,YCtCFM,EAAAA,EAAAA,QAAM,WACJ,CAAC,MAAO,SAAS7C,SAASiJ,GACxB,IAAI/J,SAASS,iBAAiB,SAADkC,OAAUoH,EAAI,OAAMjJ,SAASgC,GACxDA,EAAEjC,aAAakJ,EAAMjH,EAAE1B,QAAQ2I,OAGrC,KCEApG,EAAAA,EAAAA,QAAM,WAGJ,IAAIyK,EHgRN,MAKC,IAAIpO,SAASS,iBAAiB,IAAI8G,WAAsBW,YAAiBC,YAAqBC,YAAsBE,YAA0BD,YAAwBE,QACpKzH,SAAQoI,IACRtG,QAAQsH,KAAK,mCAAmC3C,gCAA4C2B,EAAQ,IAMtG,EAAGrB,GACDX,QAAO6E,IAAYA,EAAQ,EAAe,2BAC1CjL,SAAQiL,IACR,IAAKA,EAAQvC,aAAa5B,IAAUmE,EAAQvC,aAAavB,KAAiB,EAA2B8D,GAASnL,OAAS,EACtH,OAAOgC,QAAQsH,KAAK,iBAAiB6B,EAAQ7L,aAAa0H,IACxDmE,EAAQ7L,aAAa+H,iDAA2DJ,MAEnFuD,EAAaW,GACbA,EAAQ,EAAe,0BAA2B,CAAI,IAMpC,IAAK7E,QAAO6E,IAAYA,EAAQ,EAAe,oBACvDjL,SAAQiL,IACnB,MAAMrH,EAAUxC,IACfA,EAAM2K,kBACLd,EAAQvC,aAAa5B,IAAUmE,EAAQvC,aAAavB,GAAekD,EAAcC,GAAcW,EAAQ,EAEnGsC,EAAYtC,EAAQ7L,aAAayH,IAAU,QACjDoE,EAAQ/K,iBAAiBqN,EAAW3J,GAAS,GAC7CqH,EAAQ,EAAe,WAAa,KACnCA,EAAQV,oBAAoBgD,EAAW3J,GAAS,GAChDqH,EAAQ,EAAe,mBAAoB,CAAK,EAEjDA,EAAQ,EAAe,mBAAoB,CAAI,IAM5C,EAAGrE,GAAQ9G,OAAS,IAAMZ,SAAS,EAAe,6BACrDA,SAASgB,iBACR,WACAkB,IACqB,WAAdA,EAAM6E,KAAqC,QAAd7E,EAAM6E,KAGzC,EAAGW,GAAQ5G,SAAQiL,IAClB,GAAKA,EAAQ,EAAe,aAI5B,OAAIA,EAAQvC,aAAavB,GACjBrF,QAAQsH,KAAK,kBAAkBxC,kCAG/BqE,EAAQvC,aAAa5B,GAASuD,EAAcC,GAAcW,EAAQ,GACzE,IAEH,GAED/L,SAAS,EAAe,4BAA6B,GAMlD,EAAGqH,GAAQzG,OAAS,IAAMZ,SAAS,EAAe,6BACrDA,SAASgB,iBACR,WACAkB,IACC,MAAMoM,EAAgBtO,SAASsO,cAC/B,IAC4F,IAA3F,CAAC,UAAW,YAAa,YAAa,aAAc,OAAQ,OAAO1B,QAAQ1K,EAAM6E,OAC/EuH,EAAc9E,aAAalC,KAAWgH,EAAc9E,aAAahC,KAAmB8G,EAAc9E,aAAajC,KAChH+G,EAAc9E,aAAanC,GAE5B,OAGD,IAAKiH,EAAc9E,aAAa5B,KAAW0G,EAAc9E,aAAavB,GACrE,OAAOrF,QAAQsH,KAAK,kBAAkB7C,4BAAiCO,UAAcK,MAGtF/F,EAAM2K,iBAEN,MAAM0B,EAAYD,EAAc9E,aAAa5B,GAC1C,EAAG,GAAGA,MAAU0G,EAAcpO,aAAa0H,OAC3C,EAAG,GAAGK,MAAgBqG,EAAcpO,aAAa+H,OAEpD,IAAIuG,EAAaF,EACjB,OAAQpM,EAAM6E,KACb,IAAK,UACL,IAAK,YACJyH,EACCD,EAAU3B,QAAQ0B,GAAiB,EAChCC,EAAUA,EAAU3B,QAAQ0B,GAAiB,GAC7CC,EAAUA,EAAU3N,OAAS,GACjC,MACD,IAAK,YACL,IAAK,aACJ4N,EACCD,EAAU3B,QAAQ0B,GAAiBC,EAAU3N,OAAS,EACnD2N,EAAUA,EAAU3B,QAAQ0B,GAAiB,GAC7CC,EAAU,GACd,MACD,IAAK,OACJC,EAAaD,EAAU,GACvB,MACD,IAAK,MACJC,EAAaD,EAAUA,EAAU3N,OAAS,GAM5C,OADA4N,EAAW1B,QACJ0B,EAAWrI,cAAc,IAAIwC,MAAM6F,EAAWtO,aAAayH,IAAU,SAAS,IAEtF,GAED3H,SAAS,EAAe,4BAA6B,EAItD,EGnZCyO,IA+BA1K,EAAAA,EAAAA,WAAU/D,SAASgC,cAAc,YAAY,SAAUG,EAAQ8B,GAC7D,IAAIyK,EA5BN,WACE,IAAIA,EAAU1O,SAASgC,cAAc,iBAQrC,OAPK0M,KACHA,EAAU1O,SAAS2O,cAAc,QACzBpE,GAAK,eAEbmE,EAAQ7N,aAAa,cAAe,QACpCb,SAAS4O,KAAKC,YAAYH,IAErBA,CACT,CAkBgBI,GAEd7I,YAAW,YAlBb,SAAuByI,EAASK,EAAMC,GACpC,IAAIjB,EAAOgB,EAAO,KAAOC,EACzBN,EAAQO,UAAYlB,EACpBW,EAAQtL,UAAUC,IAAI,WAElB+K,GACFpI,aAAaoI,GAIfA,EAAiBnI,YAAW,WAC1ByI,EAAQtL,UAAUL,OAAO,UAC3B,GAHkC,IAAdgL,EAAKnN,OAI3B,CAMIsO,CAAcR,EAASvM,EAAO8M,UAAWhL,EAC3C,GAAG,EACL,GACF","sources":["webpack://boris-schapira-dev-jekyll/./_src/scripts/subscripts/footnotesAlternatives.js","webpack://boris-schapira-dev-jekyll/./_src/scripts/subscripts/localstorageSaveDarkMode.js","webpack://boris-schapira-dev-jekyll/./_src/scripts/subscripts/localstorageSaveLang.js","webpack://boris-schapira-dev-jekyll/./_src/scripts/subscripts/nakedDay.js","webpack://boris-schapira-dev-jekyll/./_src/scripts/subscripts/savedata.js","webpack://boris-schapira-dev-jekyll/./_src/scripts/subscripts/utils.js","webpack://boris-schapira-dev-jekyll/./_src/scripts/vendors/abbr-touch.js","webpack://boris-schapira-dev-jekyll/./node_modules/touchtap-event/touchtap-event.js","webpack://boris-schapira-dev-jekyll/webpack/bootstrap","webpack://boris-schapira-dev-jekyll/./node_modules/easy-toggle-state/src/constants/prefix.js","webpack://boris-schapira-dev-jekyll/./node_modules/easy-toggle-state/src/constants/constants.js","webpack://boris-schapira-dev-jekyll/./node_modules/easy-toggle-state/src/constants/events.js","webpack://boris-schapira-dev-jekyll/./node_modules/easy-toggle-state/src/helpers/retrieve-query-selector-all.js","webpack://boris-schapira-dev-jekyll/./node_modules/easy-toggle-state/src/helpers/dispatch-hook.js","webpack://boris-schapira-dev-jekyll/./node_modules/easy-toggle-state/src/helpers/retrieve-namespaced-property.js","webpack://boris-schapira-dev-jekyll/./node_modules/easy-toggle-state/src/helpers/manage-aria.js","webpack://boris-schapira-dev-jekyll/./node_modules/easy-toggle-state/src/helpers/retrieve-class-list.js","webpack://boris-schapira-dev-jekyll/./node_modules/easy-toggle-state/src/helpers/retrieve-group-active-element.js","webpack://boris-schapira-dev-jekyll/./node_modules/easy-toggle-state/src/helpers/retrieve-targets.js","webpack://boris-schapira-dev-jekyll/./node_modules/easy-toggle-state/src/helpers/toggle-class-list.js","webpack://boris-schapira-dev-jekyll/./node_modules/easy-toggle-state/src/main/main.js","webpack://boris-schapira-dev-jekyll/./_src/scripts/subscripts/webshare.js","webpack://boris-schapira-dev-jekyll/./_src/scripts/subscripts/lazyNetworkLoad.js","webpack://boris-schapira-dev-jekyll/./_src/scripts/index.js"],"sourcesContent":["/************************************************\n My markdown to HTML Engine does not add\n alternatives to the footnotes return arrows so\n I decided to add them myself, in JS.\n************************************************/\nvar lang = document.getElementsByTagName('html')[0].getAttribute('lang'),\n alternatives = {\n to: {\n en: 'footnote',\n fr: 'note de bas de page',\n },\n back: {\n en: 'return to the text',\n fr: 'retour au texte',\n },\n };\n\nvar i,\n textnotes = [...document.querySelectorAll('.footnote-ref a')],\n footnotes = [...document.getElementsByClassName('footnote-backref')];\nfor (i = 0; i < textnotes.length; i++) {\n textnotes[i].setAttribute('title', alternatives.to[lang]);\n}\nfor (i = 0; i < footnotes.length; i++) {\n footnotes[i].setAttribute('title', alternatives.back[lang]);\n}\n","/************************************************\n Saving Light/Dark/Auto preferences on click\n into the localstorage.\n************************************************/\ntry {\n document\n .querySelectorAll('.color-mode-labels label')\n .forEach(function (label) {\n label.addEventListener('click', function () {\n localStorage.setItem('dark_mode', this.dataset.value);\n });\n });\n} catch (e) {}\n","/************************************************\n On first visite, detects user language and\n redirect to the right alternative page (if it\n exist). Saves the lang in localstorage.\n************************************************/\n\nlet lang_user;\ntry {\n lang_user = localStorage.getItem('lang_user');\n} catch (e) {}\nif (!lang_user) {\n lang_user = (\n window.navigator.userLanguage ||\n (window.navigator.languages.length > 0 && window.navigator.languages[0]) ||\n window.navigator.language\n ).slice(0, 2);\n try {\n localStorage.setItem('lang_user', lang_user);\n } catch (e) {}\n var lang_site = document.getElementsByTagName('html')[0].lang;\n if (lang_user != lang_site) {\n window.location = document.querySelector(\n '[hreflang][rel=\"alternate\"]',\n ).href;\n }\n}\n\ndocument.addEventListener(\n 'click',\n (event) => {\n if (event.target.matches('[lang][href*=\"/\"]')) {\n try {\n localStorage.setItem('lang_user', event.target.getAttribute('lang'));\n } catch (e) {}\n }\n },\n false,\n);\n","const q = new Date();\nconst m = q.getMonth() + 1;\nconst d = q.getDate();\nif (`${m}-${d}` == '4-9') {\n console.log('CSS Naked Day!');\n [...document.querySelectorAll('style, link[rel=\"stylesheet\"]')].forEach((x) =>\n x.remove(),\n );\n}\n","/************************************************\n On save-data mode, modifyies images src to use\n grayscale, degraded images.\n************************************************/\n(function saveData() {\n let saveData = false;\n if (window.matchMedia('(prefers-reduced-data: reduce)').matches) {\n saveData = true;\n }\n if ('connection' in navigator) {\n if (navigator.connection.saveData == true) {\n saveData = true;\n }\n }\n if (saveData) {\n // Add class to document\n document.documentElement.classList.add('save-data');\n // use default img src\n [...document.querySelectorAll('[srcset]')].forEach((img) => {\n // eslint-disable-next-line require-unicode-regexp\n img.srcset = img.srcset\n .replace(/q_auto/g, 'q_0')\n .replace(/\\/fetch\\//g, '/fetch/e_grayscale/');\n });\n }\n})();\n","module.exports = {\n ready: function (fn) {\n if (\n document.attachEvent\n ? document.readyState === 'complete'\n : document.readyState !== 'loading'\n ) {\n fn();\n } else {\n document.addEventListener('DOMContentLoaded', fn);\n }\n document.addEventListener('turbolinks:load', fn);\n },\n};\n","/**\n * @license\n * abbr-touch \n * Copyright 2014 Daniel Imms \n * Released under the MIT license \n */\nmodule.exports = {\n abbrTouch: (function () {\n // eslint-disable-line no-unused-vars\n 'use strict';\n\n /**\n * Generates a touchtap event handler that calls the tap handler provided.\n * @param {function} handler The tap handler to call.\n * @returns {function}\n */\n function generateTouchtapHandler(handler) {\n return function (e) {\n handler(\n e.currentTarget,\n e.currentTarget.title,\n e.customData.touchX,\n e.customData.touchY,\n );\n };\n }\n\n /**\n * The default lightweight tap handler.\n */\n function defaultOnTapHandler(target, title, touchX, touchY) {\n // eslint-disable-line no-unused-vars\n alert(title); // eslint-disable-line no-alert\n }\n\n /**\n * Attaches abbrTouch events on all abbr[title] elements within an element\n * @param {HTMLElement} elementScope The element containing abbr[title]\n * elements.\n * @param {function} customTapHandler (Optional) A custom touchtap handler to\n * be used when abbr[title] elements are touched.\n */\n function init(elementScope, customTapHandler) {\n try {\n if (!elementScope) {\n elementScope = document;\n }\n\n var tapHandler = customTapHandler || defaultOnTapHandler;\n\n var elements = elementScope.querySelectorAll('abbr[title]');\n var touchtapHandler = generateTouchtapHandler(tapHandler);\n for (var i = 0; i < elements.length; i++) {\n // EventTarget.addEventListener() is supported by most browsers, including IE9 and newer.\n if (elements[i].addEventListener) {\n elements[i].addEventListener('touchtap', touchtapHandler, false);\n } else {\n // EventTarget.addEventListener() is not implemented in this browser.\n // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Browser_compatibility\n break;\n }\n }\n } catch (err) {\n // Some old browsers do not support Document.querySelectorAll() - e.g. prior to IE9.\n // https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll#Browser_compatibility\n }\n }\n return init;\n })(),\n};\n","/**\n * @license\n * touchtap-event \n * Copyright 2014 Daniel Imms \n * Released under the MIT license \n */\n(function () {\n 'use strict';\n\n var touchTapEvent;\n var isTapLength;\n var tapLengthTimeout;\n var startPosition = { x: -1, y: -1 };\n var currentPosition = { x: -1, y: -1 };\n\n /**\n * Gets the touch object from a touch* event.\n * @param {Event} e The event.\n * @returns {Touch} The (first) touch object from the event.\n */\n function getTouchObject(e) {\n if (e.originalEvent && e.originalEvent.targetTouches) {\n return e.originalEvent.targetTouches[0];\n }\n if (e.targetTouches) {\n return e.targetTouches[0];\n }\n return e;\n }\n\n /**\n * Gets whether two numbers are approximately equal to each other.\n * @param {number} a The first number.\n * @param {number} b The second number.\n * @returns {Boolean}\n */\n function approximatelyEqual(a, b) {\n return Math.abs(a - b) < 2;\n }\n\n /**\n * Handler for the touchstart event.\n * @param {Event} e The touchstart event.\n */\n function touchstart(e) {\n var touchObject = getTouchObject(e);\n startPosition.x = touchObject.pageX;\n startPosition.y = touchObject.pageY;\n currentPosition.x = touchObject.pageX;\n currentPosition.y = touchObject.pageY;\n isTapLength = true;\n if (tapLengthTimeout) {\n clearTimeout(tapLengthTimeout);\n }\n tapLengthTimeout = setTimeout(function () {\n isTapLength = false;\n }, 200);\n }\n\n /**\n * Handler for the touchend event.\n * @param {Event} e The touchend event.\n */\n function touchend(e) {\n if (isTapLength &&\n approximatelyEqual(startPosition.x, currentPosition.x) &&\n approximatelyEqual(startPosition.y, currentPosition.y)) {\n touchTapEvent.customData = {\n touchX: currentPosition.x,\n touchY: currentPosition.y\n };\n e.target.dispatchEvent(touchTapEvent);\n }\n }\n\n /**\n * Handler for the touchmove event.\n * @param {Event} e The touchmove event.\n */\n function touchmove(e) {\n var touchObject = getTouchObject(e);\n currentPosition.x = touchObject.pageX;\n currentPosition.y = touchObject.pageY;\n }\n\n /**\n * Initialises the library.\n */\n function init() {\n try {\n // The basic events module is supported by most browsers, including IE9 and newer.\n // https://developer.mozilla.org/en-US/docs/Web/API/Document/createEvent#Example\n touchTapEvent = document.createEvent('Event');\n touchTapEvent.initEvent('touchtap', true, true);\n\n // EventTarget.addEventListener() is supported by most browsers, including IE9 and newer.\n // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Browser_compatibility\n document.addEventListener('touchstart', touchstart, false);\n document.addEventListener('touchend', touchend, false);\n document.addEventListener('touchcancel', touchend, false);\n document.addEventListener('touchmove', touchmove, false);\n }\n catch (err) {\n // Ignore \"Object doesn't support this property or method\" in IE8 and earlier.\n }\n }\n\n init();\n})();\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/**\r\n * Prefix set to all attributes.\r\n */\r\n\r\nconst PREFIX = document.documentElement.getAttribute(\"data-easy-toggle-state-custom-prefix\") || \"toggle\";\r\n\r\nexport const getPrefix = () => PREFIX;\r\n","import { getPrefix } from \"./prefix\";\n\n/**\n * Retrieve a valid HTML attribute string.\n * @param {string} key - A string to build a html attribute\n * @param {string} prefix - The prefix maybe set by user\n * @returns {string} - A valid html attribute\n */\nconst dataset = (key, prefix = getPrefix()) => [\"data\", prefix, key].filter(Boolean).join(\"-\");\n\n/**\n * All constants containing HTML attributes string.\n */\nexport const ARROWS = dataset(\"arrows\"),\n\tCHECKED = \"aria-checked\",\n\tCLASS = dataset(\"class\"),\n\tCLASS_TARGET = dataset(\"class-on-target\"),\n\tCLASS_TRIGGER = dataset(\"class-on-trigger\"),\n\tDEFAULT_CLASS = \"is-active\",\n\tESCAPE = dataset(\"escape\"),\n\tEVENT = dataset(\"event\"),\n\tEXPANDED = \"aria-expanded\",\n\tGROUP = dataset(\"group\"),\n\tHIDDEN = \"aria-hidden\",\n\tIS_ACTIVE = dataset(\"is-active\"),\n\tMODAL = dataset(\"modal\"),\n\tOUTSIDE = dataset(\"outside\"),\n\tOUTSIDE_EVENT = dataset(\"outside-event\"),\n\tPRESSED = \"aria-pressed\",\n\tRADIO_GROUP = dataset(\"radio-group\"),\n\tSELECTED = \"aria-selected\",\n\tTARGET = dataset(\"target\"),\n\tTARGET_ALL = dataset(\"target-all\"),\n\tTARGET_NEXT = dataset(\"target-next\"),\n\tTARGET_PARENT = dataset(\"target-parent\"),\n\tTARGET_PREVIOUS = dataset(\"target-previous\"),\n\tTARGET_SELF = dataset(\"target-self\"),\n\tTARGET_STATE = dataset(\"state\"),\n\tTRIGGER_OFF = dataset(\"trigger-off\");\n","/**\r\n * Hooks\r\n */\r\nexport const TOGGLE_AFTER = new Event(\"toggleAfter\"),\r\n\tTOGGLE_BEFORE = new Event(\"toggleBefore\");\r\n","import {\r\n\tCLASS,\r\n\tCLASS_TARGET,\r\n\tCLASS_TRIGGER,\r\n\tTARGET,\r\n\tTARGET_ALL,\r\n\tTARGET_NEXT,\r\n\tTARGET_PARENT,\r\n\tTARGET_PREVIOUS,\r\n\tTARGET_SELF\r\n} from \"../constants/constants\";\r\n\r\n/**\r\n * Retrieve all trigger elements with a specific attribute, or all nodes in a specific scope.\r\n * @param {string} selector - A string that contains a selector\r\n * @param {node} node - An element in which to make the selection\r\n * @returns {array} - An array of elements\r\n */\r\nexport default (selector, node) => {\r\n\tconst scope = selector ? `[${selector}]` : \"\";\r\n\r\n\tif (node) {\r\n\t\treturn [...node.querySelectorAll(scope)];\r\n\t}\r\n\r\n\tconst query = [\r\n\t\t`[${CLASS}]${scope}`,\r\n\t\t`[${CLASS_TRIGGER}]${scope}`,\r\n\t\t`[${CLASS_TARGET}][${TARGET}]${scope}`,\r\n\t\t`[${CLASS_TARGET}][${TARGET_ALL}]${scope}`,\r\n\t\t`[${CLASS_TARGET}][${TARGET_NEXT}]${scope}`,\r\n\t\t`[${CLASS_TARGET}][${TARGET_PREVIOUS}]${scope}`,\r\n\t\t`[${CLASS_TARGET}][${TARGET_PARENT}]${scope}`,\r\n\t\t`[${CLASS_TARGET}][${TARGET_SELF}]${scope}`\r\n\t]\r\n\t\t.join()\r\n\t\t.trim();\r\n\r\n\treturn [...document.querySelectorAll(query)];\r\n};\r\n","/**\r\n * Dispatch hooks\r\n * @param {node} element - An element on which dispatch the hook\r\n * @param {string} action - An event to dispatch\r\n * @returns {boolean} - True or False\r\n */\r\nexport default (element, action) => element.dispatchEvent(action);\r\n","/**\n * Add a namespace for element properties.\n * @param {string} property - The property aadded on any element\n * @returns {string} - The property with the namespace\n */\nexport default (property) => `easyToggleState_${property}`;\n","import { CHECKED, EXPANDED, HIDDEN, PRESSED, SELECTED } from \"../constants/constants\";\nimport namespacedProp from \"../helpers/retrieve-namespaced-property\";\n\n/**\n * Aria attributes toggle manager.\n * @param {node} element - Current element with aria attributes to manage.\n * @param {json} [config] - List of aria attributes and value to assign.\n * @returns {undefined}\n */\nexport default (\n\telement,\n\tconfig = {\n\t\t[CHECKED]: element[namespacedProp('isActive')],\n\t\t[EXPANDED]: element[namespacedProp('isActive')],\n\t\t[HIDDEN]: !element[namespacedProp('isActive')],\n\t\t[PRESSED]: element[namespacedProp('isActive')],\n\t\t[SELECTED]: element[namespacedProp('isActive')]\n\t}\n) => Object.keys(config).forEach(key => element.hasAttribute(key) && element.setAttribute(key, config[key]));\n","import {\n\tCLASS,\n\tCLASS_TARGET,\n\tCLASS_TRIGGER,\n\tDEFAULT_CLASS\n} from \"../constants/constants\";\n\nconst warningText = (classItem, attribute, isTarget = false) => `This trigger has the class name '${classItem}' filled in both attributes '${CLASS}' and '${attribute}'. As a result, this class will be toggled ${isTarget && 'on its target(s)'} twice at the same time.`;\n\n/**\n * Retrieve an array of class names from an attribute value.\n * @param {node} element - The trigger element on which get the attribute\n * @param {string} attribute - The attribute on which get class names\n * @returns {array} - An array of class names\n */\nconst classFromAttribute = (element, attribute) => (element.getAttribute(attribute) || '').split(' ').filter(Boolean);\n\n/**\n * Retrieve class lists for trigger and target elements.\n * @param {node} element - The trigger element on which get all class names\n * @returns {object} - An object with two arrays with trigger and target class lists\n */\nexport default (element) => {\n\tif (element.hasAttribute(CLASS) && element.getAttribute(CLASS) && (element.hasAttribute(CLASS_TRIGGER) || element.hasAttribute(CLASS_TARGET))) {\n\t\tconst triggerClassArray = classFromAttribute(element, CLASS_TRIGGER);\n\t\tconst targetClassArray = classFromAttribute(element, CLASS_TARGET);\n\n\t\t/** Warn if there repetition class name between CLASS and CLASS_TRIGGER or CLASS and CLASS_TARGET */\n\t\tclassFromAttribute(element, CLASS)\n\t\t\t.forEach(classItem => {\n\t\t\t\tif (triggerClassArray.includes(classItem)) {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\twarningText(classItem, CLASS_TRIGGER),\n\t\t\t\t\t\telement\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (targetClassArray.includes(classItem)) {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\twarningText(classItem, CLASS_TARGET, true),\n\t\t\t\t\t\telement\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\t/** Get class list for trigger and targets from attributes */\n\tconst lists = [CLASS, CLASS_TRIGGER, CLASS_TARGET].reduce(\n\t\t(acc, val) => {\n\t\t\tconst list = classFromAttribute(element, val);\n\t\t\t(val === CLASS || val === CLASS_TRIGGER) && acc.trigger.push(...list);\n\t\t\t(val === CLASS || val === CLASS_TARGET) && acc.target.push(...list);\n\t\t\treturn acc;\n\t\t},\n\t\t{\n\t\t\ttrigger: [],\n\t\t\ttarget: []\n\t\t}\n\t);\n\n\t!lists.trigger.length && (element.hasAttribute(CLASS) || element.hasAttribute(CLASS_TRIGGER)) && lists.trigger.push(DEFAULT_CLASS);\n\t!lists.target.length && (element.hasAttribute(CLASS) || element.hasAttribute(CLASS_TARGET)) && lists.target.push(DEFAULT_CLASS);\n\n\treturn lists;\n};\n","import { GROUP, RADIO_GROUP } from \"../constants/constants\";\nimport $$ from \"./retrieve-query-selector-all\";\nimport namespacedProp from \"../helpers/retrieve-namespaced-property\";\n\n/**\n * Retrieve all active elements of a group.\n * @param {node} element - An element of a group\n * @returns {array} - An array of active elements of a group\n */\nexport default element => {\n\tconst type = element.hasAttribute(GROUP) ? GROUP : RADIO_GROUP;\n\treturn $$(`${type}=\"${element.getAttribute(type)}\"`).filter(groupElement => groupElement[namespacedProp('isActive')]);\n};\n","import {\r\n\tTARGET,\r\n\tTARGET_ALL,\r\n\tTARGET_NEXT,\r\n\tTARGET_PARENT,\r\n\tTARGET_PREVIOUS,\r\n\tTARGET_SELF\r\n} from \"../constants/constants\";\r\n\r\n/**\r\n * Test a selector.\r\n * @param {string} selector - The selector corresponding to the targets list\r\n * @param {string} attribute - The selector scope, set by the user\r\n * @returns {undefined}\r\n */\r\nconst testSelector = (selector, attribute) => {\r\n\tif (!selector) {\r\n\t\tconsole.warn(`You should fill the attribute '${attribute}' with a selector`);\r\n\t}\r\n};\r\n\r\n/**\r\n * Test a targets list.\r\n * @param {string} selector - The selector corresponding to the targets list\r\n * @param {nodeList} targetList - A target elements list\r\n * @returns {nodeList} - The targets list\r\n */\r\nconst testTargets = (selector, targetList) => {\r\n\r\n\t/** Test if there's no match for a selector */\r\n\tif (targetList.length === 0) {\r\n\t\tconsole.warn(`There's no match with the selector '${selector}' for this trigger`);\r\n\t\treturn [];\r\n\t}\r\n\r\n\t/** Test if there's more than one match for an ID selector */\r\n\tconst matches = selector.match(/#\\w+/gi);\r\n\tif (matches) {\r\n\t\tmatches.forEach(match => {\r\n\t\t\tconst result = [...targetList].filter(target => target.id === match.slice(1));\r\n\t\t\tif (result.length > 1) {\r\n\t\t\t\tconsole.warn(`There's ${result.length} matches with the selector '${match}' for this trigger`);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\treturn [...targetList];\r\n};\r\n\r\n/**\r\n * Retrieve all targets of a trigger element, depending of its target attribute.\r\n * @param {node} element - A trigger element\r\n * @returns {nodeList} - All targets of a trigger element\r\n */\r\nexport default element => {\r\n\tif (element.hasAttribute(TARGET) || element.hasAttribute(TARGET_ALL)) {\r\n\t\tconst selector = element.getAttribute(TARGET) || element.getAttribute(TARGET_ALL);\r\n\t\ttestSelector(selector, element.hasAttribute(TARGET) ? TARGET : TARGET_ALL);\r\n\t\treturn testTargets(selector, document.querySelectorAll(selector));\r\n\t}\r\n\r\n\tif (element.hasAttribute(TARGET_PARENT)) {\r\n\t\tconst selector = element.getAttribute(TARGET_PARENT);\r\n\t\ttestSelector(selector, TARGET_PARENT);\r\n\t\treturn testTargets(selector, element.parentElement.querySelectorAll(selector));\r\n\t}\r\n\r\n\tif (element.hasAttribute(TARGET_SELF)) {\r\n\t\tconst selector = element.getAttribute(TARGET_SELF);\r\n\t\ttestSelector(selector, TARGET_SELF);\r\n\t\treturn testTargets(selector, element.querySelectorAll(selector));\r\n\t}\r\n\r\n\tif (element.hasAttribute(TARGET_PREVIOUS)) {\r\n\t\treturn testTargets(\"previous\", [element.previousElementSibling].filter(Boolean));\r\n\t}\r\n\r\n\tif (element.hasAttribute(TARGET_NEXT)) {\r\n\t\treturn testTargets(\"next\", [element.nextElementSibling].filter(Boolean));\r\n\t}\r\n\r\n\treturn [];\r\n};\r\n","/**\r\n * Toggle each class in list on the element.\r\n * @param {node} element - An element on which toggle each class\r\n * @param {array} list - An array of classlist to toggle\r\n * @returns {undefined}\r\n */\r\nexport default (element, list) => list.forEach(listItem => {\r\n\telement.classList.toggle(listItem);\r\n});\r\n","import {\n\tARROWS,\n\tCLASS,\n\tCLASS_TARGET,\n\tCLASS_TRIGGER,\n\tESCAPE,\n\tEVENT,\n\tGROUP,\n\tIS_ACTIVE,\n\tMODAL,\n\tOUTSIDE,\n\tOUTSIDE_EVENT,\n\tRADIO_GROUP,\n\tTARGET,\n\tTARGET_ALL,\n\tTARGET_NEXT,\n\tTARGET_PARENT,\n\tTARGET_PREVIOUS,\n\tTARGET_SELF,\n\tTARGET_STATE,\n\tTRIGGER_OFF\n} from \"../constants/constants\";\nimport { TOGGLE_AFTER, TOGGLE_BEFORE } from \"../constants/events\";\nimport $$ from \"../helpers/retrieve-query-selector-all\";\nimport dispatchHook from \"../helpers/dispatch-hook\";\nimport manageAria from \"../helpers/manage-aria\";\nimport namespacedProp from \"../helpers/retrieve-namespaced-property\";\nimport retrieveClassList from \"../helpers/retrieve-class-list\";\nimport retrieveGroupActiveElement from \"../helpers/retrieve-group-active-element\";\nimport retrieveTargets from \"../helpers/retrieve-targets\";\nimport toggleClassList from \"../helpers/toggle-class-list\";\n\n/** Need to use a map for some event handler to ensure to have the same signature */\nconst HANDLER_MAP = {};\n\n/**\n * Manage event listener on document\n * @param {element} element - The element on which test if there event type specified\n * @returns {undefined}\n */\nconst addEventListenerOnDocument = element => document.addEventListener(\n\t\telement.getAttribute(OUTSIDE_EVENT) || element.getAttribute(EVENT) || \"click\",\n\t\tdocumentEventHandler,\n\t\tfalse\n\t);\n\n/**\n * Toggle off all elements width 'data-toggle-outside' attribute\n * when reproducing specified or click event outside itself or its targets.\n * @param {event} event - Event triggered on document\n * @returns {undefined}\n */\nconst documentEventHandler = event => {\n\tconst eTarget = event.target,\n\t\teType = event.type;\n\tlet insideTarget = false;\n\n\t$$(OUTSIDE)\n\t\t.filter(element => element.getAttribute(OUTSIDE_EVENT) === eType ||\n\t\t\t\t(element.getAttribute(EVENT) === eType && !element.hasAttribute(OUTSIDE_EVENT)) ||\n\t\t\t\t(eType === \"click\" && !element.hasAttribute(EVENT) && !element.hasAttribute(OUTSIDE_EVENT)))\n\t\t.forEach(element => {\n\t\t\tconst e = eTarget.closest(`[${TARGET_STATE}=\"true\"]`);\n\t\t\tif (e && e[namespacedProp('trigger')] === element) {\n\t\t\t\tinsideTarget = true;\n\t\t\t}\n\t\t\tif (!insideTarget && element !== eTarget && !element.contains(eTarget) && element[namespacedProp('isActive')]) {\n\t\t\t\t(element.hasAttribute(GROUP) || element.hasAttribute(RADIO_GROUP) ? manageGroup : manageToggle)(element);\n\t\t\t}\n\t\t});\n\n\tif (!insideTarget) {\n\t\tdocument.removeEventListener(eType, documentEventHandler, false);\n\t}\n\n\t// eTarget may be an element inside a trigger\n\tconst newTarget = eTarget.closest(`[${CLASS}][${OUTSIDE}],[${CLASS_TRIGGER}][${OUTSIDE}],[${CLASS_TARGET}][${OUTSIDE}]`);\n\tif (newTarget && newTarget[namespacedProp('isActive')]) {\n\t\taddEventListenerOnDocument(eTarget);\n\t}\n};\n\n/**\n * Manage click on elements with 'data-trigger-off' attribute.\n * @param {event} event - Event triggered on element with 'trigger-off' attribute\n * @returns {undefined}\n */\nconst triggerOffHandler = event => manageToggle(event.currentTarget[namespacedProp('target')]);\n\n/**\n * Manage event ouside trigger or target elements.\n * @param {node} element - The element to toggle when 'click' or custom event is triggered on document\n * @returns {undefined}\n */\nconst manageTriggerOutside = element => {\n\tif (!element.hasAttribute(OUTSIDE)) {\n\t\treturn;\n\t}\n\n\tif (element.hasAttribute(RADIO_GROUP)) {\n\t\treturn console.warn(`You can't use '${OUTSIDE}' on a radio grouped trigger`);\n\t}\n\n\tif (element[namespacedProp('isActive')]) {\n\t\treturn addEventListenerOnDocument(element);\n\t}\n};\n\n/**\n * Manage elements inside a target element which have 'data-toggle-trigger-off' attribute.\n * @param {node} targetElement - An element targeted by the trigger element\n * @param {node} triggerElement - The trigger element\n * @returns {undefined}\n */\nconst manageTriggerOff = (targetElement, triggerElement) => {\n\tconst triggerOffList = $$(TRIGGER_OFF, targetElement).filter(triggerOff => !triggerOff.getAttribute(TRIGGER_OFF) || targetElement.matches(triggerOff.getAttribute(TRIGGER_OFF)));\n\n\tif (triggerOffList.length === 0) {\n\t\treturn;\n\t}\n\n\tif (triggerElement[namespacedProp('isActive')]) {\n\t\treturn triggerOffList.forEach(triggerOff => {\n\t\t\t// Do not override if another reference is already set\n\t\t\tif (!triggerOff[namespacedProp('target')]) {\n\t\t\t\ttriggerOff[namespacedProp('target')] = triggerElement;\n\t\t\t\ttriggerOff.addEventListener(\"click\", triggerOffHandler, false);\n\t\t\t}\n\t\t});\n\t}\n\n\ttriggerOffList.forEach(triggerOff => {\n\t\t// Remove reference only if it equals current trigger\n\t\tif (triggerOff[namespacedProp('target')] === triggerElement) {\n\t\t\ttriggerOff[namespacedProp('target')] = null;\n\t\t\ttriggerOff.removeEventListener(\"click\", triggerOffHandler, false);\n\t\t}\n\t});\n\treturn triggerElement.focus();\n};\n\n/**\n * Manage focus trap inside a target element:\n * When Tab key is pressed, if focus is outside of the container, give focus on first item ;\n * when Tab key is pressed, if focus is on last item, give focus on first one ;\n * when Shift + Tab keys are pressed, if focus is on first item, give focus on last one.\n * @param {node} targetElement - The focus trap container\n * @returns {undefined}\n */\nconst focusTrapHandler = targetElement => event => {\n\tconst focusablesList = [...targetElement.querySelectorAll(\"a[href], area[href], input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]\")];\n\n\tif (!focusablesList.length || event.key !== \"Tab\") {\n\t\treturn;\n\t}\n\n\tconst currentItem = event.target,\n\t\tfirstItem = focusablesList[0],\n\t\tlastItem = focusablesList[focusablesList.length - 1];\n\n\t// Outside focus trap container: focus on first\n\tif (focusablesList.indexOf(currentItem) === -1) {\n\t\tevent.preventDefault();\n\t\treturn firstItem.focus();\n\t}\n\n\tif (event.shiftKey && currentItem === firstItem) {\n\t\tevent.preventDefault();\n\t\treturn lastItem.focus();\n\t}\n\n\tif (!event.shiftKey && currentItem === lastItem) {\n\t\tevent.preventDefault();\n\t\treturn firstItem.focus();\n\t}\n};\n\n/**\n * Manage attributes and events of targets elements.\n * @param {node} triggerElement - The trigger element\n * @param {array} classListForTarget - The class list to toggle\n * @param {boolean} onLoadActive - A flag for active by default\n * @returns {undefined}\n */\nconst manageTargets = (triggerElement, classListForTarget, onLoadActive) => retrieveTargets(triggerElement).forEach(targetElement => {\n\t\tdispatchHook(targetElement, TOGGLE_BEFORE);\n\n\t\ttargetElement[namespacedProp('isActive')] = !targetElement[namespacedProp('isActive')];\n\t\tmanageAria(targetElement);\n\n\t\tif (onLoadActive) {\n\t\t\ttargetElement.classList.add(...classListForTarget);\n\t\t} else {\n\t\t\ttoggleClassList(targetElement, classListForTarget);\n\t\t}\n\n\t\tif (triggerElement.hasAttribute(OUTSIDE)) {\n\t\t\ttargetElement.setAttribute(TARGET_STATE, triggerElement[namespacedProp('isActive')]);\n\t\t\ttargetElement[namespacedProp('trigger')] = triggerElement;\n\t\t}\n\n\t\tif (triggerElement.hasAttribute(MODAL)) {\n\t\t\tif (targetElement[namespacedProp('isActive')]) {\n\t\t\t\tHANDLER_MAP[targetElement] = focusTrapHandler(targetElement);\n\t\t\t\tdocument.addEventListener(\"keydown\", HANDLER_MAP[targetElement], false);\n\t\t\t} else {\n\t\t\t\tdocument.removeEventListener(\"keydown\", HANDLER_MAP[targetElement], false);\n\t\t\t\tdelete HANDLER_MAP[targetElement];\n\t\t\t}\n\t\t}\n\n\t\tdispatchHook(targetElement, TOGGLE_AFTER);\n\n\t\tmanageTriggerOff(targetElement, triggerElement);\n\t});\n\n/**\n * Toggle class and aria on trigger and target elements.\n * @param {node} element - The element to toggle state and attributes\n * @returns {undefined}\n */\nconst manageToggle = element => {\n\tdispatchHook(element, TOGGLE_BEFORE);\n\n\tconst classList = retrieveClassList(element);\n\ttoggleClassList(element, classList.trigger);\n\telement[namespacedProp('isActive')] = !element[namespacedProp('isActive')];\n\tmanageAria(element);\n\n\tdispatchHook(element, TOGGLE_AFTER);\n\n\tmanageTargets(element, classList.target, false);\n\treturn manageTriggerOutside(element);\n};\n\n/**\n * Toggle elements of a same group.\n * @param {node} element - The element to test if it's in a group\n * @returns {undefined}\n */\nconst manageGroup = element => {\n\tconst groupActiveElements = retrieveGroupActiveElement(element);\n\tif (groupActiveElements.length === 0) {\n\t\treturn manageToggle(element);\n\t}\n\n\tif (groupActiveElements.indexOf(element) === -1) {\n\t\tgroupActiveElements.forEach(manageToggle);\n\t\treturn manageToggle(element);\n\t}\n\n\tif (groupActiveElements.indexOf(element) !== -1 && !element.hasAttribute(RADIO_GROUP)) {\n\t\treturn manageToggle(element);\n\t}\n};\n\n/**\n * Check if a trigger element is active.\n * @param {node} element - A trigger element\n * @returns {boolean} - The active state of the trigger element\n */\nexport const isActive = element => !!element[namespacedProp('isActive')];\n\n/**\n * Unbind toggling management from an element list.\n * @param {node} elementList - An element, or element list, on which remove the toggling management\n * @returns {node} - Same element, or element list\n */\nexport const unbind = elementList => {\n\t(elementList[Symbol.iterator] ? [...elementList] : [elementList]).forEach(element => {\n\t\telement[namespacedProp('unbind')] && element[namespacedProp('unbind')]();\n\t});\n\treturn elementList;\n};\n\n/**\n * Unbind toggling management from all initialized elements in the page.\n * @returns {nodeList} - A list of unbinded triggers\n */\nexport const unbindAll = () => unbind($$().filter(trigger => trigger[namespacedProp('isInitialized')]));\n\n/**\n * Initialization.\n * @returns {array} - An array of initialized triggers\n */\nexport default () => {\n\n\t/**\n\t * Warn if there some CLASS_TARGET triggers with no specified target.\n\t */\n\t[...document.querySelectorAll(`[${CLASS_TARGET}]:not([${TARGET}]):not([${TARGET_ALL}]):not([${TARGET_NEXT}]):not([${TARGET_PREVIOUS}]):not([${TARGET_PARENT}]):not([${TARGET_SELF}])`)]\n\t\t.forEach(element => {\n\t\t\tconsole.warn(`This trigger has the attribute '${CLASS_TARGET}', but no specified target\\n`, element);\n\t\t});\n\n\t/**\n\t * Active by default management.\n\t */\n\t$$(IS_ACTIVE)\n\t\t.filter(trigger => !trigger[namespacedProp('isDefaultInitialized')])\n\t\t.forEach(trigger => {\n\t\t\tif ((trigger.hasAttribute(GROUP) || trigger.hasAttribute(RADIO_GROUP)) && retrieveGroupActiveElement(trigger).length > 0) {\n\t\t\t\treturn console.warn(`Toggle group '${trigger.getAttribute(GROUP) ||\n\t\t\t\t\t\ttrigger.getAttribute(RADIO_GROUP)}' must not have more than one trigger with '${IS_ACTIVE}'`);\n\t\t\t}\n\t\t\tmanageToggle(trigger);\n\t\t\ttrigger[namespacedProp('isDefaultInitialized')] = true;\n\t\t});\n\n\t/**\n\t * Set specified or click event on each trigger element.\n\t */\n\tconst triggerList = $$().filter(trigger => !trigger[namespacedProp('isInitialized')]);\n\ttriggerList.forEach(trigger => {\n\t\tconst handler = event => {\n\t\t\tevent.preventDefault();\n\t\t\t(trigger.hasAttribute(GROUP) || trigger.hasAttribute(RADIO_GROUP) ? manageGroup : manageToggle)(trigger);\n\t\t}\n\t\tconst eventName = trigger.getAttribute(EVENT) || \"click\";\n\t\ttrigger.addEventListener(eventName, handler, false);\n\t\ttrigger[namespacedProp('unbind')] = () => {\n\t\t\ttrigger.removeEventListener(eventName, handler, false);\n\t\t\ttrigger[namespacedProp('isInitialized')] = false;\n\t\t}\n\t\ttrigger[namespacedProp('isInitialized')] = true;\n\t});\n\n\t/**\n\t * Escape key management.\n\t */\n\tif ($$(ESCAPE).length > 0 && !document[namespacedProp('isEscapeKeyInitialized')]) {\n\t\tdocument.addEventListener(\n\t\t\t\"keydown\",\n\t\t\tevent => {\n\t\t\t\tif (!(event.key === \"Escape\") && !(event.key === \"Esc\")) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t$$(ESCAPE).forEach(trigger => {\n\t\t\t\t\tif (!trigger[namespacedProp('isActive')]) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (trigger.hasAttribute(RADIO_GROUP)) {\n\t\t\t\t\t\treturn console.warn(`You can't use '${ESCAPE}' on a radio grouped trigger`);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn (trigger.hasAttribute(GROUP) ? manageGroup : manageToggle)(trigger);\n\t\t\t\t});\n\t\t\t},\n\t\t\tfalse\n\t\t);\n\t\tdocument[namespacedProp('isEscapeKeyInitialized')] = true;\n\t}\n\n\t/**\n\t * Arrows key management.\n\t */\n\tif ($$(ARROWS).length > 0 && !document[namespacedProp('isArrowKeysInitialized')]) {\n\t\tdocument.addEventListener(\n\t\t\t\"keydown\",\n\t\t\tevent => {\n\t\t\t\tconst activeElement = document.activeElement;\n\t\t\t\tif (\n\t\t\t\t\t[\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\", \"Home\", \"End\"].indexOf(event.key) === -1 ||\n\t\t\t\t\t(!activeElement.hasAttribute(CLASS) && !activeElement.hasAttribute(CLASS_TRIGGER) && !activeElement.hasAttribute(CLASS_TARGET)) ||\n\t\t\t\t\t!activeElement.hasAttribute(ARROWS)\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!activeElement.hasAttribute(GROUP) && !activeElement.hasAttribute(RADIO_GROUP)) {\n\t\t\t\t\treturn console.warn(`You can't use '${ARROWS}' on a trigger without '${GROUP}' or '${RADIO_GROUP}'`);\n\t\t\t\t}\n\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tconst groupList = activeElement.hasAttribute(GROUP)\n\t\t\t\t\t? $$(`${GROUP}='${activeElement.getAttribute(GROUP)}'`)\n\t\t\t\t\t: $$(`${RADIO_GROUP}='${activeElement.getAttribute(RADIO_GROUP)}'`);\n\n\t\t\t\tlet newElement = activeElement;\n\t\t\t\tswitch (event.key) {\n\t\t\t\t\tcase \"ArrowUp\":\n\t\t\t\t\tcase \"ArrowLeft\":\n\t\t\t\t\t\tnewElement =\n\t\t\t\t\t\t\tgroupList.indexOf(activeElement) > 0\n\t\t\t\t\t\t\t\t? groupList[groupList.indexOf(activeElement) - 1]\n\t\t\t\t\t\t\t\t: groupList[groupList.length - 1];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"ArrowDown\":\n\t\t\t\t\tcase \"ArrowRight\":\n\t\t\t\t\t\tnewElement =\n\t\t\t\t\t\t\tgroupList.indexOf(activeElement) < groupList.length - 1\n\t\t\t\t\t\t\t\t? groupList[groupList.indexOf(activeElement) + 1]\n\t\t\t\t\t\t\t\t: groupList[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Home\":\n\t\t\t\t\t\tnewElement = groupList[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"End\":\n\t\t\t\t\t\tnewElement = groupList[groupList.length - 1];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t}\n\n\t\t\t\tnewElement.focus();\n\t\t\t\treturn newElement.dispatchEvent(new Event(newElement.getAttribute(EVENT) || \"click\"));\n\t\t\t},\n\t\t\tfalse\n\t\t);\n\t\tdocument[namespacedProp('isArrowKeysInitialized')] = true;\n\t}\n\n\treturn triggerList;\n};\n","import { ready } from './utils';\n\nif (navigator && navigator.share) {\n ready(function setWebSharing() {\n const shareElement = document.querySelector('.webshare');\n if (shareElement) {\n const urlLocation = new URL(window.location);\n let url = urlLocation.origin + urlLocation.pathname;\n const canonicalElement = document.querySelector('link[rel=canonical]');\n if (canonicalElement !== null) {\n url = canonicalElement.href;\n }\n\n const sharedData = {\n title: shareElement.dataset.title,\n text: shareElement.dataset.text,\n url: url,\n };\n\n let canShare = true;\n if (!!navigator.canShare) {\n canShare = navigator.canShare(sharedData);\n }\n if (canShare) {\n shareElement\n .querySelector('button')\n .addEventListener('click', function shareContent() {\n navigator\n .share({\n title: sharedData.title,\n text: sharedData.text,\n url: sharedData.url,\n })\n .then(() => console.log('Successful share'))\n .catch((error) => console.log('Error sharing', error));\n });\n\n shareElement.classList.add('visible');\n }\n }\n });\n}\n","import { ready } from './utils';\n\nready(function latePrefetch() {\n ['rel', 'media'].forEach((type) =>\n [...document.querySelectorAll(`[data-${type}]`)].forEach((x) =>\n x.setAttribute(type, x.dataset[type]),\n ),\n );\n});\n","import easyToggle from 'easy-toggle-state';\nimport 'touchtap-event';\nimport { ready } from './subscripts/utils';\n\nimport './subscripts/savedata';\nimport './subscripts/localstorageSaveLang';\nimport './subscripts/localstorageSaveDarkMode';\nimport './subscripts/footnotesAlternatives';\nimport { abbrTouch } from './vendors/abbr-touch';\n\nready(function () {\n easyToggle();\n\n var tooltipTimeout;\n\n function getTooltipElement() {\n var tooltip = document.querySelector('#abbr-tooltip');\n if (!tooltip) {\n tooltip = document.createElement('div');\n tooltip.id = 'abbr-tooltip';\n // Technically this is duplicate content, just exposing it on mobile\n tooltip.setAttribute('aria-hidden', 'true');\n document.body.appendChild(tooltip);\n }\n return tooltip;\n }\n\n function updateTooltip(tooltip, term, expandedTerm) {\n var text = term + ': ' + expandedTerm;\n tooltip.innerHTML = text;\n tooltip.classList.add('visible');\n\n if (tooltipTimeout) {\n clearTimeout(tooltipTimeout);\n }\n\n var timeoutLength = text.length * 120;\n tooltipTimeout = setTimeout(function () {\n tooltip.classList.remove('visible');\n }, timeoutLength);\n }\n\n abbrTouch(document.querySelector('article'), function (target, title) {\n var tooltip = getTooltipElement();\n // Ensure the tooltip is ready so that the initial transition works\n setTimeout(function () {\n updateTooltip(tooltip, target.innerHTML, title);\n }, 0);\n });\n});\n\nimport './subscripts/webshare';\nimport './subscripts/nakedDay';\nimport './subscripts/lazyNetworkLoad';\n"],"names":["i","lang","document","getElementsByTagName","getAttribute","alternatives","to","en","fr","back","textnotes","querySelectorAll","footnotes","getElementsByClassName","length","setAttribute","forEach","label","addEventListener","localStorage","setItem","this","dataset","value","e","lang_user","getItem","window","navigator","userLanguage","languages","language","slice","location","querySelector","href","event","target","matches","q","Date","m","getMonth","d","getDate","concat","console","log","x","remove","saveData","matchMedia","connection","documentElement","classList","add","img","srcset","replace","module","exports","ready","fn","attachEvent","readyState","abbrTouch","defaultOnTapHandler","title","touchX","touchY","alert","elementScope","customTapHandler","tapHandler","elements","touchtapHandler","handler","currentTarget","customData","err","touchTapEvent","isTapLength","tapLengthTimeout","startPosition","y","currentPosition","getTouchObject","originalEvent","targetTouches","approximatelyEqual","a","b","Math","abs","touchstart","touchObject","pageX","pageY","clearTimeout","setTimeout","touchend","dispatchEvent","touchmove","createEvent","initEvent","init","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","PREFIX","key","prefix","getPrefix","filter","Boolean","join","ARROWS","CLASS","CLASS_TARGET","CLASS_TRIGGER","DEFAULT_CLASS","ESCAPE","EVENT","GROUP","IS_ACTIVE","MODAL","OUTSIDE","OUTSIDE_EVENT","RADIO_GROUP","TARGET","TARGET_ALL","TARGET_NEXT","TARGET_PARENT","TARGET_PREVIOUS","TARGET_SELF","TARGET_STATE","TRIGGER_OFF","TOGGLE_AFTER","Event","TOGGLE_BEFORE","selector","node","scope","query","trim","element","action","property","config","Object","keys","hasAttribute","warningText","classItem","attribute","isTarget","classFromAttribute","split","type","groupElement","testSelector","warn","testTargets","targetList","match","result","id","list","listItem","toggle","HANDLER_MAP","addEventListenerOnDocument","documentEventHandler","eTarget","eType","insideTarget","closest","contains","manageGroup","manageToggle","removeEventListener","newTarget","triggerOffHandler","triggerClassArray","targetClassArray","includes","lists","reduce","acc","val","trigger","push","triggerElement","classListForTarget","onLoadActive","parentElement","previousElementSibling","nextElementSibling","targetElement","focusablesList","currentItem","firstItem","lastItem","indexOf","preventDefault","focus","shiftKey","focusTrapHandler","triggerOffList","triggerOff","manageTriggerOff","manageTriggerOutside","groupActiveElements","share","shareElement","urlLocation","URL","url","origin","pathname","canonicalElement","sharedData","text","canShare","then","catch","error","tooltipTimeout","eventName","activeElement","groupList","newElement","easyToggle","tooltip","createElement","body","appendChild","getTooltipElement","term","expandedTerm","innerHTML","updateTooltip"],"sourceRoot":""} \ No newline at end of file diff --git a/assets/styles/critical.css b/assets/styles/critical.css index 0583c7b1f..f66ab63fb 100644 --- a/assets/styles/critical.css +++ b/assets/styles/critical.css @@ -1 +1 @@ -.nav-header ul,.widget ul{margin:0;padding:0;list-style:none}.nav-header,.nav-footer,.container{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));padding:0 2rem;gap:2rem}@media(max-width:480px){.nav-header,.nav-footer,.container{gap:1rem}}@media(max-width:220px){.nav-header,.nav-footer,.container{gap:0}}blockquote li,.inline-note li{list-style-type:none}blockquote li:before,.inline-note li:before{content:"​"}figure figcaption,.emphasis{font-style:italic}figure figcaption i,.emphasis i{font-style:normal}/*! normalize-scss | MIT/GPLv2 License | bit.ly/normalize-scss */html{font-size:100%;line-height:1.5em;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2.4rem;line-height:3rem;margin:1.5rem 0}h2{font-size:1.2rem;line-height:1.5rem;margin:1.5rem 0}h3{font-size:1rem;line-height:1.5rem;margin:1.5rem 0}h4{font-size:.8rem;line-height:1.5rem;margin:1.5rem 0}h5{font-size:.67rem;line-height:1.5rem;margin:1.5rem 0}h6{font-size:.37rem;line-height:1.5rem;margin:1.5rem 0}blockquote{margin:1.5rem 40px}dl,ol,ul{margin:1.5rem 0}ol ol,ol ul,ul ol,ul ul{margin:0}ol,ul{padding:0 0 0 40px}figcaption,figure{display:block}figure{margin:1.5rem 40px}hr{box-sizing:content-box;height:0;overflow:visible}main{display:block}p,pre{margin:1.5rem 0}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd{font-family:monospace,monospace;font-size:1em}mark{background-color:#ff0;color:#000}small{font-size:80%}sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,select{font-family:sans-serif;font-size:100%;line-height:1.5em;margin:0}button{overflow:visible}button,select{text-transform:none}button,html [type=button],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}input{overflow:visible}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}progress{display:inline-block;vertical-align:baseline}details{display:block}menu{display:block;margin:1.5rem 0;padding:0 0 0 40px}menu menu,ol menu,ul menu{margin:0}canvas{display:inline-block}template{display:none}[hidden]{display:none}audio,canvas,iframe,img,video{vertical-align:middle}ul{list-style-type:circle}a,button,input,select{transition:all .25s cubic-bezier(.77,0,.175,1)}@media screen and (prefers-reduced-motion:reduce){a,button,input,select{transition:none}}abbr[title],acronym[title]{cursor:help;text-decoration:inherit;border-bottom:.1em dotted var(--color-main-discrete)}figure{margin:0}img{height:auto;max-width:100%;border:1px solid var(--color-main-gray)}svg{display:inline-block;width:1em;height:1em;fill:currentColor;vertical-align:baseline}a svg,button svg{text-decoration:none;pointer-events:none}hr{color:var(--color-main-text);background-color:var(--color-main-text);border:0;height:1px;margin:1.7em 0}.footnotes{border-top:1px solid var(--color-main-text);margin:1.7em 0}.footnotes:before{content:" "}:lang(fr) [target=_blank]:not(.npe):after,:lang(en) [target=_blank]:not(.npe):after{content:"↗"}:lang(fr) [href^="http:"]:not(.npe):after,:lang(en) [href^="http:"]:not(.npe):after{content:" (http)";font-size:70%;vertical-align:super}:lang(fr) [href$=".pdf"]:not(.npe):after,:lang(en) [href$=".pdf"]:not(.npe):after{content:" (pdf)";font-size:70%;vertical-align:super}:lang(fr) [href$=".zip"]:not(.npe):after,:lang(en) [href$=".zip"]:not(.npe):after{content:" (zip)";font-size:70%;vertical-align:super}:lang(fr)>:link[hreflang]:not([hreflang=fr]):after,:lang(en)>:link[hreflang]:not([hreflang=en]):after{content:" (" attr(hreflang) ")";font-size:70%;vertical-align:super}@media print{[href]:not(.npe):after{font-size:.8em;content:" (" attr(href) ")"}}.button{cursor:pointer;position:relative;display:inline-block;margin:.125em .5em;overflow:hidden;border:1px solid;border-radius:.125em;box-shadow:0 0 .5em 0 var(--color-compliment-text);font:normal 400 1em/1.7 var(--default-font-family);text-align:center;text-decoration:none;vertical-align:baseline;text-transform:lowercase;padding:0 5px;transition:all .25s cubic-bezier(.77,0,.175,1);color:var(--color-compliment-text);background-color:var(--color-main);border-color:var(--color-compliment-text);background-color:transparent}@media screen and (prefers-reduced-motion:reduce){.button{transition:none}}.button:hover,.button:focus{color:var(--color-main);background-color:var(--color-compliment-text);text-decoration:none}.button:active,.button.active{border-color:var(--color-main-text)}.menu-open .menu-trigger{color:var(--color-main);border-color:var(--color-main);background-color:transparent}.menu-open .menu-trigger:hover,.menu-open .menu-trigger:focus{color:var(--color-compliment-text);background-color:var(--color-main)}@keyframes browsup{16%{transform:translateY(0)}17%{transform:translateY(-5px)}18%{transform:translateY(0)}61%{transform:translateY(0)}62%{transform:translateY(-5px)}63%{transform:translateY(-3px)}64%{transform:translateY(-5px)}65%{transform:translateY(0)}}@keyframes showclosed{13%{opacity:0}14%{opacity:1}15%{opacity:0}41%{opacity:0}42%{opacity:1}43%{opacity:0}44%{opacity:1}45%{opacity:0}58%{opacity:0}59%{opacity:1}60%{opacity:0}74%{opacity:0}75%{opacity:1}76%{opacity:0}}@keyframes hideopen{13%{opacity:1}14%{opacity:0}15%{opacity:1}41%{opacity:1}42%{opacity:0}43%{opacity:1}44%{opacity:0}45%{opacity:1}58%{opacity:1}59%{opacity:0}60%{opacity:1}74%{opacity:1}75%{opacity:0}76%{opacity:1}}.avatar{width:100%;height:auto;display:block;margin:auto}.avatar .eyebrows{animation:browsup 40s linear infinite}@media screen and (prefers-reduced-motion:reduce){.avatar .eyebrows{animation:none}}.avatar .g .eyebrows{animation:browsup 30s linear infinite}@media screen and (prefers-reduced-motion:reduce){.avatar .g .eyebrows{animation:none}}.avatar .eye-closed{opacity:0;animation:showclosed 20s linear infinite}@media screen and (prefers-reduced-motion:reduce){.avatar .eye-closed{animation:none}}.avatar .g .eye-closed{animation:showclosed 15s linear infinite}@media screen and (prefers-reduced-motion:reduce){.avatar .g .eye-closed{animation:none}}.avatar .eye-open{animation:hideopen 20s linear infinite}@media screen and (prefers-reduced-motion:reduce){.avatar .eye-open{animation:none}}.avatar .g .eye-open{animation:hideopen 15s linear infinite}@media screen and (prefers-reduced-motion:reduce){.avatar .g .eye-open{animation:none}}.avatar .kids,.avatar .boris{transition:"transform 1s"}@media screen and (prefers-reduced-motion:reduce){.avatar .kids,.avatar .boris{transition:none}}.avatar .kids,.avatar .cs-logo,.avatar .bs-hoodie,.avatar .blue-hair{display:none}.avatar .boris{display:block}.avatar .shirt{fill:#ff488e}.papa .avatar .kids,.dad .avatar .kids{display:block}.papa .avatar .boris,.dad .avatar .boris{display:none}.web .avatar .cs-logo{display:block}.web .avatar .bs-hoodie{display:block}.web .avatar .shirt{fill:#f2f2f2}.web .avatar .cords{fill:#3640e8}.citoyen .avatar .bs-shirt,.citizen .avatar .bs-shirt{display:none}.citoyen .avatar .bs-hoodie,.citoyen .avatar .blue-hair,.citizen .avatar .bs-hoodie,.citizen .avatar .blue-hair{display:block}:root{--default-font-family:Seravek,"Gill Sans Nova",Ubuntu,Calibri,"DejaVu Sans",source-sans-pro,sans-serif}html,body,input,select,h3,h4,h5,h6{font-family:var(--default-font-family)}html,input,select{font-style:normal;font-weight:400;line-height:1.7}html{font-size:1.15rem;line-height:1.7;text-rendering:optimizeSpeed;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}h1,h2{font-family:var(--default-font-family);font-style:normal;font-weight:700;line-height:1.7;text-wrap:balance}h3,h4,h5,h6{font-style:normal;font-weight:400}h1,h2,h3,h4,h5,h6{color:var(--color-main)}p,ul,ol,dl,blockquote,pre,caption,.inline-note{margin:1.7em 0}pre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}p:not(.highlight)>code,pre:not(.highlight)>code,li:not(.highlight)>code,div:not(.highlight)>code{margin:0 .15em;padding:0 .3em;margin-right:.6ch;white-space:pre-wrap;border:1px solid var(--color-main-discrete);border-radius:3px;display:inline-block;font-size:.75em}dt{margin-top:1.7em}strong,b,dt{font-weight:700}a{color:var(--color-main);text-decoration:none}a:hover,a:focus{text-decoration:underline}blockquote,.inline-note{padding:0 1rem;border:none;border-left:.25rem solid var(--color-main)}blockquote li:before,.inline-note li:before{content:"—"}blockquote cite,.inline-note cite{font-size:1rem;display:block;margin-top:1em}.inline-note{border-left-style:dotted}@media(min-width:480px){.inline-note{width:80vw;margin-left:50%;transform:translateX(-50%);margin-top:1.7em;margin-bottom:1.7em;max-width:50rem}}.inline-note p:first-child>strong{text-transform:uppercase}.emphasis{display:block;padding:1rem;border:1px dotted var(--color-main);text-align:center}@media(min-width:480px){.emphasis{width:80vw;margin-left:50%;transform:translateX(-50%);margin-top:1.7em;margin-bottom:1.7em;max-width:50rem}}.emphasis ul,.emphasis ol{margin:0 auto;max-width:40rem;text-align:left}ins{padding:3px;text-decoration:none;border:1px dashed var(--color-main-grayfade)}ins.bloc{display:block;padding:1rem 1rem 2rem;border:.25rem dotted var(--color-main);position:relative}ins.bloc:after{content:attr(datetime);position:absolute;padding:.3rem .5rem;font-size:.8em;right:0;bottom:0;color:var(--color-compliment);background-color:var(--color-main-grayfade);border-left:1px dashed var(--color-main-grayfade);border-top:1px dashed var(--color-main-grayfade)}small{font-size:80%}br+small{line-height:2}kbd{border:1px solid var(--color-main);border-radius:5px;padding:5px;font-size:.8em}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}[name=dark-mode-input]{display:none}.utility-main{display:contents}.container{background-color:var(--color-main-background);background-image:none}.container.full-width-content{position:relative}.container.full-width-content .content{grid-column:1/13;width:100%;max-width:30rem;margin:auto}.container.full-width-content aside{display:none}.container .content{padding-bottom:3rem;grid-column:1/13;grid-row:2}@media(min-width:960px){.container .content{grid-column:1/10;grid-row:1}}.container .web-content{padding-bottom:3rem}@media(min-width:960px){.container .web-content{grid-column:1/7}}.container .other-content{padding-bottom:3rem;grid-column:9/12;grid-row:2;font-size:.8em}@media(min-width:960px){.container .other-content{grid-column:7/10;grid-row:1}}.container .other-content .post:not(#content){padding:1rem 0}.container .other-content .post:not(#content):first-of-type{padding-top:2rem}.container aside{grid-column:1/13;grid-row:1;padding:0;margin:0 -1rem;display:block}@media(min-width:960px){.container aside{margin:0;padding:0 0 0 2rem;grid-column:10/13;border-left:2px solid var(--color-main-grayfade)}}.container aside .categories{font-family:monospace}@media(max-width:959px){.container aside .categories h2{display:none}.container aside .categories ul{display:flex;justify-content:space-between}.container aside .categories li{display:inline-block}}.container aside .svg-me{display:none;content-visibility:auto}@media(min-width:960px){.container aside .svg-me{display:block}}.container .over-large{content-visibility:auto;display:none}@media(min-width:960px){.container .over-large{display:block}}.container .under-large{content-visibility:auto}@media(min-width:961px){.container .under-large{display:none}}.widget{padding:2rem 0;border-bottom:2px solid var(--color-main-grayfade)}.widget:last-of-type:not(:only-of-type){border-bottom:none}.widget ul{margin:0 1rem}.widget h2,.widget h3{margin-top:0}.widget ul{margin-bottom:0}.widget .active{font-weight:700}.widget .active:before{content:"<";font-size:.8em}@media(min-width:961px){.widget .active:before{margin-left:-1ch}}.widget .active:after{content:"/>";font-size:.8em}.nav-header a,.nav-header label,.nav-footer a,.nav-footer label{cursor:pointer;color:var(--color-compliment-text)}.nav-header a:hover,.nav-header label:hover,.nav-footer a:hover,.nav-footer label:hover{color:var(--color-compliment-text)}.nav-header label,.nav-footer label{-webkit-user-select:none;-moz-user-select:none;user-select:none}.nav-header label svg,.nav-footer label svg{line-height:4rem;width:1.4rem;height:4rem;vertical-align:middle}.nav-footer{content-visibility:auto;font-size:.8rem;color:var(--color-compliment-text)}.nav-footer h3{color:var(--color-compliment-text)}.nav-footer a{text-decoration:underline}.nav-footer p{text-align:center;grid-column:2/12}.color-container,.menu-trigger{transition:"transform .25s ease-out"}@media screen and (prefers-reduced-motion:reduce){.color-container,.menu-trigger{transition:none}}.color-container.menu-open{transform:translateX(-100vw)}.color-container.menu-open .menu-trigger{transform:translateX(100vw)}.color-container.menu-open .menu{font-size:2rem;text-align:center;margin:0;padding:10vh 0 0;position:absolute;top:0;bottom:-100vh;right:0;background-color:var(--color-main-background);content-visibility:auto}.color-container.menu-open a,.color-container.menu-open label{color:var(--color-main)}.color-container.menu-open a:hover,.color-container.menu-open label:hover{color:var(--color-main-highlight)}.color-container.menu-open nav ul{display:block;position:fixed;margin:1rem;top:0;left:100%;width:100%;z-index:2}.color-container.menu-open .close-label{display:block}.color-container.menu-open .menu-label{display:none}.nav-header{font-family:var(--default-font-family);font-weight:700;position:relative}.nav-header .close-label{display:none}.nav-header a.title{display:flex;grid-column:1/10;line-height:4rem;font-size:1.3em}@media(min-width:960px){.nav-header a.title{grid-column:1/4}}.nav-header nav{grid-column:10/13;display:flex;margin-left:auto;justify-content:center;flex-direction:column;line-height:4rem}.nav-header ul{display:none}.nav-header ul a{padding:.5rem 0}.nav-header ul li{white-space:nowrap}.nav-header .lang{text-transform:uppercase}.nav-header .menu-trigger{z-index:5}@media(min-width:960px){.nav-header .menu-trigger{display:none}.nav-header ul{display:flex;width:65vw;justify-content:space-evenly}.nav-header nav{grid-column:4/13}}.page-title{grid-column:1/13;text-align:center;background-color:var(--color-main-grayfade);margin:0;padding:2rem;border-bottom:1px solid var(--color-main)}.page-title h1{margin:0}.page-title small{display:block}.page-title small.page{display:inline}.meta{font-size:max(16px,.85rem);color:var(--color-main-gray);margin-top:1rem}.meta>span:before{content:" · "}.meta>span,.meta>time{display:inline-block;margin-bottom:0;color:var(--color-main-gray)}.meta>span a:not(.category),.meta>time a:not(.category){color:var(--color-main-gray)}.meta .webshare{visibility:hidden;color:var(--color-main)}.meta .webshare.visible{visibility:visible}.meta .webshare button{background:none!important;border:none;padding:0!important;color:#069;text-decoration:none;cursor:pointer;color:var(--main-color)}.meta .webshare button:hover,.meta .webshare button:focus{text-decoration:underline;color:var(--compliment-color)}.nav-arrow{z-index:1;margin:1vw;position:fixed;height:70vh;top:15vh;font-size:1.5rem}@media(min-width:480px){.nav-arrow{font-size:2rem}}@media(min-width:960px){.nav-arrow{margin:5vw}}.nav-arrow a{line-height:70vh;background-color:var(--color-main-background);border-radius:50%;padding:.25rem .5rem}@media(max-width:480px){.nav-arrow a:before{content:" ";position:absolute;top:0;bottom:0;left:0;right:0;cursor:pointer;background-color:transparent}}.nav-arrow.prev{left:0}.nav-arrow.next{right:0}@media print{.nav-arrow{display:none}}.post{border-bottom:2px solid var(--color-main-text)}.post:not(#content){padding:2rem 0}.post:not(#content) .meta{margin-top:0}.post:last-of-type:not(:only-of-type){border-bottom:none}.post .post-title{margin:0 0 .5rem}.post .post-content h2:first-child{font-size:1.6rem;font-weight:400;line-height:1.2rem;margin-top:-1rem;margin-bottom:1em;letter-spacing:0;text-transform:lowercase}@media(min-width:480px){.post-content>.videoWrapper{width:80vw;margin-left:50%;transform:translateX(-50%);margin-top:1.7em;margin-bottom:1.7em;max-width:50rem}}.twitter-tweet{margin-left:auto;margin-right:auto}.videoWrapper{position:relative;height:0;margin:2em 0;padding-top:25px;padding-bottom:70%}.videoWrapper iframe,.videoWrapper object,.videoWrapper embed{position:absolute;top:0;left:0;width:100%;height:100%}div.highlighter-rouge{border:1px solid var(--color-main-gray)}div.highlighter-rouge .highlight{margin:0;padding:1rem}@media(min-width:480px){div:not(.inline-note)>div.highlighter-rouge{width:80vw;margin-left:50%;transform:translateX(-50%);margin-top:1.7em;margin-bottom:1.7em;max-width:50rem}}figure{text-align:center}@media(min-width:480px){figure{width:80vw;margin-left:50%;transform:translateX(-50%);margin-top:1.7em;margin-bottom:1.7em;max-width:50rem}}figure>a{position:relative;display:inline-block}figure>a{cursor:zoom-in}figure>.videoWrapper{position:relative;display:block;height:auto;margin:auto;padding:0}figure>.videoWrapper>video{width:100%;border:1px solid var(--color-main);-o-object-fit:contain;object-fit:contain}figure>.videoWrapper.gif>video{width:auto;min-width:250px;min-height:250px;max-width:min(28rem,100%);border:none;border-radius:.5rem}figure>.videoWrapper.gif{cursor:pointer}figure>a:hover:before,figure>a:focus:before{opacity:1}figure picture,figure img{height:auto;margin-right:auto;margin-bottom:0;margin-left:auto}figure figcaption{max-width:80%;margin-right:auto;margin-left:auto;text-align:center}table{border:solid 1px var(--color-main-text);border-collapse:collapse;border-spacing:0;color:var(--color-main-text)}@media(min-width:480px){table{width:80vw;margin-left:50%;transform:translateX(-50%);margin-top:1.7em;margin-bottom:1.7em;max-width:50rem}}table thead th{border:solid 1px var(--color-main-text);padding:.5rem}table thead th,table thead th strong{background-color:var(--color-main);color:var(--color-main-background)}table tbody td{border:solid 1px var(--color-main-text);padding:.5rem}@media(max-width:720px){table.responsive{display:block}table.responsive thead,table.responsive tbody,table.responsive th,table.responsive td,table.responsive tr{display:block}table.responsive thead tr{position:absolute;top:-9999px;left:-9999px}table.responsive tbody tr{border:1px solid #ccc}table.responsive tbody td{position:relative;border-style:double;border-width:.5rem}table.responsive tbody td[data-label]{padding-top:2rem;border:none}table.responsive tbody td:before{position:absolute;top:6px;left:6px;padding-right:10px;white-space:nowrap;font-weight:700}table.responsive tbody td:before{content:attr(data-label);font-size:.8rem}}strong{color:var(--color-main)}.post-content a{text-decoration:underline}.post-content a:hover{-webkit-text-decoration:dotted;text-decoration:dotted}a:hover{color:var(--color-main-highlight)}.sharing article{border:2px solid var(--color-main);border-radius:1em;padding:1em 2em;margin-block-start:2em}.sharing article h2{margin-block-end:0}.sharing article h2+p{margin-block-start:0}[aria-hidden=true]{speak:none}.skip-main{position:fixed;top:-30em;left:0;right:0;z-index:20;padding:.5em 1em;font-size:1em;text-align:center;font-weight:700;transition:"top .1s linear";background-color:var(--color-main-background)}@media screen and (prefers-reduced-motion:reduce){.skip-main{transition:none}}.skip-main:focus{top:0}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;border:0;white-space:nowrap;clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);text-transform:none} \ No newline at end of file +.nav-header ul,.widget ul{margin:0;padding:0;list-style:none}.nav-header,.nav-footer,.container{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));padding:0 2rem;gap:2rem}@media(max-width:480px){.nav-header,.nav-footer,.container{gap:1rem}}@media(max-width:220px){.nav-header,.nav-footer,.container{gap:0}}blockquote li,.inline-note li{list-style-type:none}blockquote li:before,.inline-note li:before{content:"​"}figure figcaption,.emphasis{font-style:italic}figure figcaption i,.emphasis i{font-style:normal}/*! normalize-scss | MIT/GPLv2 License | bit.ly/normalize-scss */html{font-size:100%;line-height:1.5em;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2.4rem;line-height:3rem;margin:1.5rem 0}h2{font-size:1.2rem;line-height:1.5rem;margin:1.5rem 0}h3{font-size:1rem;line-height:1.5rem;margin:1.5rem 0}h4{font-size:.8rem;line-height:1.5rem;margin:1.5rem 0}h5{font-size:.67rem;line-height:1.5rem;margin:1.5rem 0}h6{font-size:.37rem;line-height:1.5rem;margin:1.5rem 0}blockquote{margin:1.5rem 40px}dl,ol,ul{margin:1.5rem 0}ol ol,ol ul,ul ol,ul ul{margin:0}ol,ul{padding:0 0 0 40px}figcaption,figure{display:block}figure{margin:1.5rem 40px}hr{box-sizing:content-box;height:0;overflow:visible}main{display:block}p,pre{margin:1.5rem 0}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd{font-family:monospace,monospace;font-size:1em}mark{background-color:#ff0;color:#000}small{font-size:80%}sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,select{font-family:sans-serif;font-size:100%;line-height:1.5em;margin:0}button{overflow:visible}button,select{text-transform:none}button,html [type=button],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}input{overflow:visible}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}progress{display:inline-block;vertical-align:baseline}details{display:block}menu{display:block;margin:1.5rem 0;padding:0 0 0 40px}menu menu,ol menu,ul menu{margin:0}canvas{display:inline-block}template{display:none}[hidden]{display:none}audio,canvas,iframe,img,video{vertical-align:middle}ul{list-style-type:circle}a,button,input,select{transition:all .25s cubic-bezier(.77,0,.175,1)}@media screen and (prefers-reduced-motion:reduce){a,button,input,select{transition:none}}abbr[title],acronym[title]{cursor:help;text-decoration:inherit;border-bottom:.1em dotted var(--color-main-discrete)}figure{margin:0}img{height:auto;max-width:100%;border:1px solid var(--color-main-gray)}svg{display:inline-block;width:1em;height:1em;fill:currentColor;vertical-align:baseline}a svg,button svg{text-decoration:none;pointer-events:none}hr{color:var(--color-main-text);background-color:var(--color-main-text);border:0;height:1px;margin:1.7em 0}.footnotes{border-top:1px solid var(--color-main-text);margin:1.7em 0}.footnotes:before{content:" "}:lang(fr) [target=_blank]:not(.npe):after,:lang(en) [target=_blank]:not(.npe):after{content:"↗"}:lang(fr) [href^="http:"]:not(.npe):after,:lang(en) [href^="http:"]:not(.npe):after{content:" (http)";font-size:70%;vertical-align:super}:lang(fr) [href$=".pdf"]:not(.npe):after,:lang(en) [href$=".pdf"]:not(.npe):after{content:" (pdf)";font-size:70%;vertical-align:super}:lang(fr) [href$=".zip"]:not(.npe):after,:lang(en) [href$=".zip"]:not(.npe):after{content:" (zip)";font-size:70%;vertical-align:super}:lang(fr)>:link[hreflang]:not([hreflang=fr]):after,:lang(en)>:link[hreflang]:not([hreflang=en]):after{content:" (" attr(hreflang) ")";font-size:70%;vertical-align:super}@media print{[href]:not(.npe):after{font-size:.8em;content:" (" attr(href) ")"}}.button{cursor:pointer;position:relative;display:inline-block;margin:.125em .5em;overflow:hidden;border:1px solid;border-radius:.125em;box-shadow:0 0 .5em 0 var(--color-compliment-text);font:normal 400 1em/1.7 var(--default-font-family);text-align:center;text-decoration:none;vertical-align:baseline;text-transform:lowercase;padding:0 5px;transition:all .25s cubic-bezier(.77,0,.175,1);color:var(--color-compliment-text);background-color:var(--color-main);border-color:var(--color-compliment-text);background-color:transparent}@media screen and (prefers-reduced-motion:reduce){.button{transition:none}}.button:hover,.button:focus{color:var(--color-main);background-color:var(--color-compliment-text);text-decoration:none}.button:active,.button.active{border-color:var(--color-main-text)}.menu-open .menu-trigger{color:var(--color-main);border-color:var(--color-main);background-color:transparent}.menu-open .menu-trigger:hover,.menu-open .menu-trigger:focus{color:var(--color-compliment-text);background-color:var(--color-main)}@keyframes browsup{16%{transform:translateY(0)}17%{transform:translateY(-5px)}18%{transform:translateY(0)}61%{transform:translateY(0)}62%{transform:translateY(-5px)}63%{transform:translateY(-3px)}64%{transform:translateY(-5px)}65%{transform:translateY(0)}}@keyframes showclosed{13%{opacity:0}14%{opacity:1}15%{opacity:0}41%{opacity:0}42%{opacity:1}43%{opacity:0}44%{opacity:1}45%{opacity:0}58%{opacity:0}59%{opacity:1}60%{opacity:0}74%{opacity:0}75%{opacity:1}76%{opacity:0}}@keyframes hideopen{13%{opacity:1}14%{opacity:0}15%{opacity:1}41%{opacity:1}42%{opacity:0}43%{opacity:1}44%{opacity:0}45%{opacity:1}58%{opacity:1}59%{opacity:0}60%{opacity:1}74%{opacity:1}75%{opacity:0}76%{opacity:1}}.avatar{width:100%;height:auto;display:block;margin:auto}.avatar .eyebrows{animation:browsup 40s linear infinite}@media screen and (prefers-reduced-motion:reduce){.avatar .eyebrows{animation:none}}.avatar .g .eyebrows{animation:browsup 30s linear infinite}@media screen and (prefers-reduced-motion:reduce){.avatar .g .eyebrows{animation:none}}.avatar .eye-closed{opacity:0;animation:showclosed 20s linear infinite}@media screen and (prefers-reduced-motion:reduce){.avatar .eye-closed{animation:none}}.avatar .g .eye-closed{animation:showclosed 15s linear infinite}@media screen and (prefers-reduced-motion:reduce){.avatar .g .eye-closed{animation:none}}.avatar .eye-open{animation:hideopen 20s linear infinite}@media screen and (prefers-reduced-motion:reduce){.avatar .eye-open{animation:none}}.avatar .g .eye-open{animation:hideopen 15s linear infinite}@media screen and (prefers-reduced-motion:reduce){.avatar .g .eye-open{animation:none}}.avatar .kids,.avatar .boris{transition:"transform 1s"}@media screen and (prefers-reduced-motion:reduce){.avatar .kids,.avatar .boris{transition:none}}.avatar .kids,.avatar .cs-logo,.avatar .bs-hoodie,.avatar .blue-hair{display:none}.avatar .boris{display:block}.avatar .shirt{fill:#ff488e}.papa .avatar .kids,.dad .avatar .kids{display:block}.papa .avatar .boris,.dad .avatar .boris{display:none}.web .avatar .cs-logo{display:block}.web .avatar .bs-hoodie{display:block}.web .avatar .shirt{fill:#f2f2f2}.web .avatar .cords{fill:#3640e8}.citoyen .avatar .bs-shirt,.citizen .avatar .bs-shirt{display:none}.citoyen .avatar .bs-hoodie,.citoyen .avatar .blue-hair,.citizen .avatar .bs-hoodie,.citizen .avatar .blue-hair{display:block}:root{--default-font-family:Seravek,"Gill Sans Nova",Ubuntu,Calibri,"DejaVu Sans",source-sans-pro,sans-serif}html,body,input,select,h3,h4,h5,h6{font-family:var(--default-font-family)}html,input,select{font-style:normal;font-weight:400;line-height:1.7}html{font-size:1.15rem;line-height:1.7;text-rendering:optimizeSpeed;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}h1,h2{font-family:var(--default-font-family);font-style:normal;font-weight:700;line-height:1.7;text-wrap:balance}h3,h4,h5,h6{font-style:normal;font-weight:400}h1,h2,h3,h4,h5,h6{color:var(--color-main)}p,ul,ol,dl,blockquote,pre,caption,.inline-note{margin:1.7em 0}pre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}p:not(.highlight)>code,pre:not(.highlight)>code,li:not(.highlight)>code,div:not(.highlight)>code{margin:0 .15em;padding:0 .3em;margin-right:.6ch;white-space:pre-wrap;border:1px solid var(--color-main-discrete);border-radius:3px;display:inline-block;font-size:.75em}dt{margin-top:1.7em}strong,b,dt{font-weight:700}a{color:var(--color-main);text-decoration:none}a:hover,a:focus{text-decoration:underline}blockquote,.inline-note{padding:0 1rem;border:none;border-left:.25rem solid var(--color-main)}blockquote li:before,.inline-note li:before{content:"—"}blockquote cite,.inline-note cite{font-size:1rem;display:block;margin-top:1em}.inline-note{border-left-style:dotted}@media(min-width:480px){.inline-note{width:80vw;margin-left:50%;transform:translateX(-50%);margin-top:1.7em;margin-bottom:1.7em;max-width:50rem}}.inline-note p:first-child>strong{text-transform:uppercase}.emphasis{display:block;padding:1rem;border:1px dotted var(--color-main);text-align:center}@media(min-width:480px){.emphasis{width:80vw;margin-left:50%;transform:translateX(-50%);margin-top:1.7em;margin-bottom:1.7em;max-width:50rem}}.emphasis ul,.emphasis ol{margin:0 auto;max-width:40rem;text-align:left}ins{padding:3px;text-decoration:none;border:1px dashed var(--color-main-grayfade)}ins.bloc{display:block;padding:1rem 1rem 2rem;border:.25rem dotted var(--color-main);position:relative}ins.bloc:after{content:attr(datetime);position:absolute;padding:.3rem .5rem;font-size:.8em;right:0;bottom:0;color:var(--color-compliment);background-color:var(--color-main-grayfade);border-left:1px dashed var(--color-main-grayfade);border-top:1px dashed var(--color-main-grayfade)}small{font-size:80%}br+small{line-height:2}kbd{border:1px solid var(--color-main);border-radius:5px;padding:5px;font-size:.8em}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}[name=dark-mode-input]{display:none}.utility-main{display:contents}.container{background-color:var(--color-main-background);background-image:none}.container.full-width-content{position:relative}.container.full-width-content .content{grid-column:1/13;width:100%;max-width:30rem;margin:auto}.container.full-width-content aside{display:none}.container .content{padding-bottom:3rem;grid-column:1/13;grid-row:2}@media(min-width:960px){.container .content{grid-column:1/10;grid-row:1}}.container .web-content{padding-bottom:3rem}@media(min-width:960px){.container .web-content{grid-column:1/7}}.container .other-content{padding-bottom:3rem;grid-column:9/12;grid-row:2;font-size:.8em}@media(min-width:960px){.container .other-content{grid-column:7/10;grid-row:1}}.container .other-content .post:not(#content){padding:1rem 0}.container .other-content .post:not(#content):first-of-type{padding-top:2rem}.container aside{grid-column:1/13;grid-row:1;padding:0;margin:0 -1rem;display:block}@media(min-width:960px){.container aside{margin:0;padding:0 0 0 2rem;grid-column:10/13;border-left:2px solid var(--color-main-grayfade)}}.container aside .categories{font-family:monospace}@media(max-width:959px){.container aside .categories h2{display:none}.container aside .categories ul{display:flex;justify-content:space-between}.container aside .categories li{display:inline-block}}.container aside .svg-me{display:none;content-visibility:auto}@media(min-width:960px){.container aside .svg-me{display:block}}.container .over-large{content-visibility:auto;display:none}@media(min-width:960px){.container .over-large{display:block}}.container .under-large{content-visibility:auto}@media(min-width:961px){.container .under-large{display:none}}.widget{padding:2rem 0;border-bottom:2px solid var(--color-main-grayfade)}.widget:last-of-type:not(:only-of-type){border-bottom:none}.widget ul{margin:0 1rem}.widget h2,.widget h3{margin-top:0}.widget ul{margin-bottom:0}.widget .active{font-weight:700}.widget .active:before{content:"<";font-size:.8em}@media(min-width:961px){.widget .active:before{margin-left:-1ch}}.widget .active:after{content:"/>";font-size:.8em}.nav-header a,.nav-header label,.nav-footer a,.nav-footer label{cursor:pointer;color:var(--color-compliment-text)}.nav-header a:hover,.nav-header label:hover,.nav-footer a:hover,.nav-footer label:hover{color:var(--color-compliment-text)}.nav-header label,.nav-footer label{-webkit-user-select:none;-moz-user-select:none;user-select:none}.nav-header label svg,.nav-footer label svg{line-height:4rem;width:1.4rem;height:4rem;vertical-align:middle}.nav-footer{content-visibility:auto;font-size:.8rem;color:var(--color-compliment-text)}.nav-footer h3{color:var(--color-compliment-text)}.nav-footer a{text-decoration:underline}.nav-footer p{text-align:center;grid-column:2/12}.color-container,.menu-trigger{transition:"transform .25s ease-out"}@media screen and (prefers-reduced-motion:reduce){.color-container,.menu-trigger{transition:none}}.color-container.menu-open{transform:translateX(-100vw)}.color-container.menu-open .menu-trigger{transform:translateX(100vw)}.color-container.menu-open .menu{font-size:2rem;text-align:center;margin:0;padding:10vh 0 0;position:absolute;top:0;bottom:-100vh;right:0;background-color:var(--color-main-background);content-visibility:auto}.color-container.menu-open a,.color-container.menu-open label{color:var(--color-main)}.color-container.menu-open a:hover,.color-container.menu-open label:hover{color:var(--color-main-highlight)}.color-container.menu-open nav ul{display:block;position:fixed;margin:1rem;top:0;left:100%;width:100%;z-index:2}.color-container.menu-open .close-label{display:block}.color-container.menu-open .menu-label{display:none}.nav-header{font-family:var(--default-font-family);font-weight:700;position:relative}.nav-header .close-label{display:none}.nav-header a.title{display:flex;grid-column:1/10;line-height:4rem;font-size:1.3em}@media(min-width:960px){.nav-header a.title{grid-column:1/4}}.nav-header nav{grid-column:10/13;display:flex;margin-left:auto;justify-content:center;flex-direction:column;line-height:4rem}.nav-header ul{display:none}.nav-header ul a{padding:.5rem 0}.nav-header ul li{white-space:nowrap}.nav-header .lang{text-transform:uppercase}.nav-header .menu-trigger{z-index:5}@media(min-width:960px){.nav-header .menu-trigger{display:none}.nav-header ul{display:flex;width:65vw;justify-content:space-evenly}.nav-header nav{grid-column:4/13}}.page-title{grid-column:1/13;text-align:center;background-color:var(--color-main-grayfade);margin:0;padding:2rem;border-bottom:1px solid var(--color-main)}.page-title h1{margin:0}.page-title small{display:block}.page-title small.page{display:inline}.meta{font-size:max(16px,.85rem);color:var(--color-main-gray);margin-top:1rem}.meta>span:before{content:" · "}.meta>span,.meta>time{display:inline-block;margin-bottom:0;color:var(--color-main-gray)}.meta>span a:not(.category),.meta>time a:not(.category){color:var(--color-main-gray)}.meta .webshare{visibility:hidden;color:var(--color-main)}.meta .webshare.visible{visibility:visible}.meta .webshare button{background:none!important;border:none;padding:0!important;color:#069;text-decoration:none;cursor:pointer;color:var(--main-color)}.meta .webshare button:hover,.meta .webshare button:focus{text-decoration:underline;color:var(--compliment-color)}.nav-arrow{z-index:1;margin:1vw;position:fixed;height:70vh;top:15vh;font-size:1.5rem}@media(min-width:480px){.nav-arrow{font-size:2rem}}@media(min-width:960px){.nav-arrow{margin:5vw}}.nav-arrow a{line-height:70vh;background-color:var(--color-main-background);border-radius:50%;padding:.25rem .5rem}@media(max-width:480px){.nav-arrow a:before{content:" ";position:absolute;top:0;bottom:0;left:0;right:0;cursor:pointer;background-color:transparent}}.nav-arrow.prev{left:0}.nav-arrow.next{right:0}@media print{.nav-arrow{display:none}}.post{border-bottom:2px solid var(--color-main-text)}.post:not(#content){padding:2rem 0}.post:not(#content) .meta{margin-top:0}.post li{margin:.7em 0}.post:last-of-type:not(:only-of-type){border-bottom:none}.post .post-title{margin:0 0 .5rem}.post .post-content h2:first-child{font-size:1.6rem;font-weight:400;line-height:1.2rem;margin-top:-1rem;margin-bottom:1em;letter-spacing:0;text-transform:lowercase}@media(min-width:480px){.post-content>.videoWrapper{width:80vw;margin-left:50%;transform:translateX(-50%);margin-top:1.7em;margin-bottom:1.7em;max-width:50rem}}.twitter-tweet{margin-left:auto;margin-right:auto}.videoWrapper{position:relative;height:0;margin:2em 0;padding-top:25px;padding-bottom:70%}.videoWrapper iframe,.videoWrapper object,.videoWrapper embed{position:absolute;top:0;left:0;width:100%;height:100%}div.highlighter-rouge{border:1px solid var(--color-main-gray)}div.highlighter-rouge .highlight{margin:0;padding:1rem}@media(min-width:480px){div:not(.inline-note)>div.highlighter-rouge{width:80vw;margin-left:50%;transform:translateX(-50%);margin-top:1.7em;margin-bottom:1.7em;max-width:50rem}}figure{text-align:center}@media(min-width:480px){figure{width:80vw;margin-left:50%;transform:translateX(-50%);margin-top:1.7em;margin-bottom:1.7em;max-width:50rem}}figure>a{position:relative;display:inline-block}figure>a{cursor:zoom-in}figure>.videoWrapper{position:relative;display:block;height:auto;margin:auto;padding:0}figure>.videoWrapper>video{width:100%;border:1px solid var(--color-main);-o-object-fit:contain;object-fit:contain}figure>.videoWrapper.gif>video{width:auto;min-width:250px;min-height:250px;max-width:min(28rem,100%);border:none;border-radius:.5rem}figure>.videoWrapper.gif{cursor:pointer}figure>a:hover:before,figure>a:focus:before{opacity:1}figure picture,figure img{height:auto;margin-right:auto;margin-bottom:0;margin-left:auto}figure figcaption{max-width:80%;margin-right:auto;margin-left:auto;text-align:center}table{border:solid 1px var(--color-main-text);border-collapse:collapse;border-spacing:0;color:var(--color-main-text)}@media(min-width:480px){table{width:80vw;margin-left:50%;transform:translateX(-50%);margin-top:1.7em;margin-bottom:1.7em;max-width:50rem}}table thead th{border:solid 1px var(--color-main-text);padding:.5rem}table thead th,table thead th strong{background-color:var(--color-main);color:var(--color-main-background)}table tbody td{border:solid 1px var(--color-main-text);padding:.5rem}@media(max-width:720px){table.responsive{display:block}table.responsive thead,table.responsive tbody,table.responsive th,table.responsive td,table.responsive tr{display:block}table.responsive thead tr{position:absolute;top:-9999px;left:-9999px}table.responsive tbody tr{border:1px solid #ccc}table.responsive tbody td{position:relative;border-style:double;border-width:.5rem}table.responsive tbody td[data-label]{padding-top:2rem;border:none}table.responsive tbody td:before{position:absolute;top:6px;left:6px;padding-right:10px;white-space:nowrap;font-weight:700}table.responsive tbody td:before{content:attr(data-label);font-size:.8rem}}strong{color:var(--color-main)}.post-content a{text-decoration:underline}.post-content a:hover{-webkit-text-decoration:dotted;text-decoration:dotted}a:hover{color:var(--color-main-highlight)}.sharing article{border:2px solid var(--color-main);border-radius:1em;padding:1em 2em;margin-block-start:2em}.sharing article h2{margin-block-end:0}.sharing article h2+p{margin-block-start:0}[aria-hidden=true]{speak:none}.skip-main{position:fixed;top:-30em;left:0;right:0;z-index:20;padding:.5em 1em;font-size:1em;text-align:center;font-weight:700;transition:"top .1s linear";background-color:var(--color-main-background)}@media screen and (prefers-reduced-motion:reduce){.skip-main{transition:none}}.skip-main:focus{top:0}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;border:0;white-space:nowrap;clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);text-transform:none} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 0128013fa..5814f4d30 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2037,9 +2037,9 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "engines": { "node": ">=6.0.0" } @@ -2264,9 +2264,9 @@ } }, "node_modules/@sindresorhus/merge-streams": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.2.0.tgz", - "integrity": "sha512-UTce8mUwUW0RikMb/eseJ7ys0BRkZVFB86orHzrfW12ZmFtym5zua8joZ4L7okH2dDFHkcFjqnZ5GocWBXOFtA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", "dev": true, "engines": { "node": ">=18" @@ -2325,9 +2325,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.11.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.17.tgz", - "integrity": "sha512-QmgQZGWu1Yw9TDyAP9ZzpFJKynYNeOvwMJmaxABfieQoVoiVOS6MN1WSpqpRcbeA5+RW82kraAVxCCJg+780Qw==", + "version": "20.11.19", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.19.tgz", + "integrity": "sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==", "dependencies": { "undici-types": "~5.26.4" } @@ -2916,10 +2916,13 @@ } }, "node_modules/available-typed-arrays": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz", - "integrity": "sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -3056,9 +3059,9 @@ } }, "node_modules/browserslist": { - "version": "4.22.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz", - "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "funding": [ { "type": "opencollective", @@ -3074,8 +3077,8 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001580", - "electron-to-chromium": "^1.4.648", + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.13" }, @@ -3281,9 +3284,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001587", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001587.tgz", - "integrity": "sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==", + "version": "1.0.30001589", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001589.tgz", + "integrity": "sha512-vNQWS6kI+q6sBlHbh71IIeC+sRwK2N3EDySc/updIGhIee2x5z00J4c1242/5/d6EpEMdOnk/m+6tuk4/tcsqg==", "funding": [ { "type": "opencollective", @@ -3636,12 +3639,12 @@ "dev": true }, "node_modules/core-js-compat": { - "version": "3.35.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.35.1.tgz", - "integrity": "sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw==", + "version": "3.36.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.0.tgz", + "integrity": "sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==", "dev": true, "dependencies": { - "browserslist": "^4.22.2" + "browserslist": "^4.22.3" }, "funding": { "type": "opencollective", @@ -3823,15 +3826,14 @@ "dev": true }, "node_modules/define-data-property": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.3.tgz", - "integrity": "sha512-h3GBouC+RPtNX2N0hHVLo2ZwPYurq8mLmXpOLTsw71gr7lHt5VaI4vVkDUNOfiWmm48JEXe3VM7PmLX45AMmmg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, "dependencies": { + "es-define-property": "^1.0.0", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.1" + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -3894,9 +3896,9 @@ } }, "node_modules/dotenv": { - "version": "16.4.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.3.tgz", - "integrity": "sha512-II98GFrje5psQTSve0E7bnwMFybNLqT8Vu8JIFWRjsE3khyNUm/loZupuy5DVzG2IXf/ysxvrixYOQnM6mjD3A==", + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "engines": { "node": ">=12" }, @@ -3917,9 +3919,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.667", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.667.tgz", - "integrity": "sha512-66L3pLlWhTNVUhnmSA5+qDM3fwnXsM6KAqE36e2w4KN0g6pkEtlT5bs41FQtQwVwKnfhNBXiWRLPs30HSxd7Kw==" + "version": "1.4.679", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.679.tgz", + "integrity": "sha512-NhQMsz5k0d6m9z3qAxnsOR/ebal4NAGsrNVRwcDo4Kc/zQ7KdsTKZUxZoygHcVRb0QDW3waEDIcE3isZ79RP6g==" }, "node_modules/emoji-regex": { "version": "8.0.0", @@ -4003,50 +4005,52 @@ } }, "node_modules/es-abstract": { - "version": "1.22.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", - "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.4.tgz", + "integrity": "sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==", "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.5", - "es-set-tostringtag": "^2.0.1", + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.6", + "call-bind": "^1.0.7", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.2", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.2", - "get-symbol-description": "^1.0.0", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0", + "has-property-descriptors": "^1.0.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", - "hasown": "^2.0.0", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "hasown": "^2.0.1", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.0", + "safe-regex-test": "^1.0.3", "string.prototype.trim": "^1.2.8", "string.prototype.trimend": "^1.0.7", "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", + "typed-array-buffer": "^1.0.1", "typed-array-byte-length": "^1.0.0", "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.13" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -4088,14 +4092,14 @@ "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==" }, "node_modules/es-set-tostringtag": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", - "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -4767,9 +4771,9 @@ } }, "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, "node_modules/for-each": { @@ -5210,9 +5214,9 @@ } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true, "engines": { "node": ">= 0.4" @@ -5724,9 +5728,9 @@ "dev": true }, "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, "engines": { "node": ">= 0.4" @@ -5806,12 +5810,15 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6110,12 +6117,15 @@ } }, "node_modules/lilconfig": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", - "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", + "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==", "dev": true, "engines": { "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" } }, "node_modules/lines-and-columns": { @@ -10418,6 +10428,15 @@ "node": ">=12.13.0" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { "version": "8.4.35", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", @@ -11490,9 +11509,9 @@ "optional": true }, "node_modules/sass": { - "version": "1.70.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.70.0.tgz", - "integrity": "sha512-uUxNQ3zAHeAx5nRFskBnrWzDUJrrvpCPD5FNAoRvTi0WwremlheES3tg+56PaVtCs5QDRX5CBLxxKMDJMEa1WQ==", + "version": "1.71.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.71.1.tgz", + "integrity": "sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -11625,9 +11644,9 @@ } }, "node_modules/sass-loader": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-14.1.0.tgz", - "integrity": "sha512-LS2mLeFWA+orYxHNu+O18Xe4jR0kyamNOOUsE3NyBP4DvIL+8stHpNX0arYTItdPe80kluIiJ7Wfe/9iHSRO0Q==", + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-14.1.1.tgz", + "integrity": "sha512-QX8AasDg75monlybel38BZ49JP5Z+uSKfKwF2rO7S74BywaRmGQMUBw9dtkS+ekyM/QnP+NOrRYq8ABMZ9G8jw==", "dev": true, "dependencies": { "neo-async": "^2.6.2" @@ -11774,14 +11793,15 @@ } }, "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, "dependencies": { - "define-data-property": "^1.0.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -11988,9 +12008,9 @@ } }, "node_modules/spdx-exceptions": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.4.0.tgz", - "integrity": "sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", "dev": true }, "node_modules/spdx-expression-parse": { @@ -12301,9 +12321,9 @@ "dev": true }, "node_modules/terser": { - "version": "5.27.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.0.tgz", - "integrity": "sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==", + "version": "5.27.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.2.tgz", + "integrity": "sha512-sHXmLSkImesJ4p5apTeT63DsV4Obe1s37qT8qvwHRmVxKTBH7Rv9Wr26VcAMmLbmk9UliiwK8z+657NyJHHy/w==", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -12468,9 +12488,9 @@ } }, "node_modules/type-fest": { - "version": "4.10.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.10.2.tgz", - "integrity": "sha512-anpAG63wSpdEbLwOqH8L84urkL6PiVIov3EMmgIhhThevh9aiMQov+6Btx0wldNcvm4wV+e2/Rt1QdDwKHFbHw==", + "version": "4.10.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.10.3.tgz", + "integrity": "sha512-JLXyjizi072smKGGcZiAJDCNweT8J+AuRxmPZ1aG7TERg4ijx9REl8CNhbr36RV4qXqL1gO1FF9HL8OkVmmrsA==", "dev": true, "engines": { "node": ">=16" @@ -12480,12 +12500,12 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.1.tgz", - "integrity": "sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.6", + "call-bind": "^1.0.7", "es-errors": "^1.3.0", "is-typed-array": "^1.1.13" }, @@ -12494,15 +12514,16 @@ } }, "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -12512,16 +12533,17 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -12531,14 +12553,20 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.5.tgz", + "integrity": "sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -12733,9 +12761,9 @@ "dev": true }, "node_modules/webpack": { - "version": "5.90.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.1.tgz", - "integrity": "sha512-SstPdlAC5IvgFnhiRok8hqJo/+ArAbNv7rhU4fnWGHNVfN59HSQFaxZDSAL3IFG2YmqxuRs+IU33milSxbPlog==", + "version": "5.90.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz", + "integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==", "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.5", diff --git a/sw.js b/sw.js index 98126bc2c..51378427a 100644 --- a/sw.js +++ b/sw.js @@ -2,7 +2,7 @@ /******/ "use strict"; /******/ var __webpack_modules__ = ({ -/***/ 472: +/***/ 836: /***/ (() => { @@ -15,7 +15,7 @@ catch (e) { } /***/ }), -/***/ 684: +/***/ 535: /***/ (() => { @@ -28,7 +28,7 @@ catch (e) { } /***/ }), -/***/ 392: +/***/ 136: /***/ (() => { @@ -41,7 +41,7 @@ catch (e) { } /***/ }), -/***/ 832: +/***/ 626: /***/ (() => { @@ -54,7 +54,7 @@ catch (e) { } /***/ }), -/***/ 328: +/***/ 447: /***/ (() => { @@ -67,7 +67,7 @@ catch (e) { } /***/ }), -/***/ 708: +/***/ 331: /***/ (() => { @@ -80,7 +80,7 @@ catch (e) { } /***/ }), -/***/ 128: +/***/ 227: /***/ (() => { @@ -93,7 +93,7 @@ catch (e) { } /***/ }), -/***/ 920: +/***/ 390: /***/ (() => { @@ -138,7 +138,7 @@ var __webpack_exports__ = {}; (() => { // EXTERNAL MODULE: ./node_modules/workbox-core/_version.js -var _version = __webpack_require__(392); +var _version = __webpack_require__(136); ;// CONCATENATED MODULE: ./node_modules/workbox-core/_private/logger.js /* Copyright 2019 Google LLC @@ -1160,7 +1160,7 @@ function skipWaiting() { ;// CONCATENATED MODULE: ./node_modules/workbox-core/index.mjs // EXTERNAL MODULE: ./node_modules/workbox-broadcast-update/_version.js -var workbox_broadcast_update_version = __webpack_require__(472); +var workbox_broadcast_update_version = __webpack_require__(836); ;// CONCATENATED MODULE: ./node_modules/workbox-broadcast-update/responsesAreSame.js /* Copyright 2018 Google LLC @@ -1438,7 +1438,7 @@ class BroadcastUpdatePlugin { ;// CONCATENATED MODULE: ./node_modules/workbox-broadcast-update/index.mjs // EXTERNAL MODULE: ./node_modules/workbox-precaching/_version.js -var workbox_precaching_version = __webpack_require__(328); +var workbox_precaching_version = __webpack_require__(447); ;// CONCATENATED MODULE: ./node_modules/workbox-precaching/utils/createCacheKey.js /* Copyright 2018 Google LLC @@ -1666,7 +1666,7 @@ function printInstallDetails(urlsToPrecache, urlsAlreadyPrecached) { } // EXTERNAL MODULE: ./node_modules/workbox-strategies/_version.js -var workbox_strategies_version = __webpack_require__(920); +var workbox_strategies_version = __webpack_require__(390); ;// CONCATENATED MODULE: ./node_modules/workbox-strategies/StrategyHandler.js /* Copyright 2020 Google LLC @@ -2879,7 +2879,7 @@ function addPlugins(plugins) { // EXTERNAL MODULE: ./node_modules/workbox-routing/_version.js -var workbox_routing_version = __webpack_require__(128); +var workbox_routing_version = __webpack_require__(227); ;// CONCATENATED MODULE: ./node_modules/workbox-routing/utils/constants.js /* Copyright 2018 Google LLC @@ -4691,7 +4691,7 @@ class StaleWhileRevalidate extends Strategy_Strategy { ;// CONCATENATED MODULE: ./node_modules/workbox-strategies/index.mjs // EXTERNAL MODULE: ./node_modules/workbox-cacheable-response/_version.js -var workbox_cacheable_response_version = __webpack_require__(684); +var workbox_cacheable_response_version = __webpack_require__(535); ;// CONCATENATED MODULE: ./node_modules/workbox-cacheable-response/CacheableResponse.js /* Copyright 2018 Google LLC @@ -4828,7 +4828,7 @@ class CacheableResponsePlugin { ;// CONCATENATED MODULE: ./node_modules/workbox-cacheable-response/index.mjs // EXTERNAL MODULE: ./node_modules/workbox-range-requests/_version.js -var workbox_range_requests_version = __webpack_require__(708); +var workbox_range_requests_version = __webpack_require__(331); ;// CONCATENATED MODULE: ./node_modules/workbox-range-requests/utils/calculateEffectiveBoundaries.js /* Copyright 2018 Google LLC @@ -5368,7 +5368,7 @@ replaceTraps((oldTraps) => ({ // EXTERNAL MODULE: ./node_modules/workbox-expiration/_version.js -var workbox_expiration_version = __webpack_require__(832); +var workbox_expiration_version = __webpack_require__(626); ;// CONCATENATED MODULE: ./node_modules/workbox-expiration/models/CacheTimestampsModel.js /* Copyright 2018 Google LLC diff --git a/tests/Gemfile.lock b/tests/Gemfile.lock index 9c6f55bf0..f66f5a527 100644 --- a/tests/Gemfile.lock +++ b/tests/Gemfile.lock @@ -29,7 +29,7 @@ GEM typhoeus (~> 1.3) yell (~> 2.0) zeitwerk (~> 2.5) - io-event (1.4.3) + io-event (1.4.4) json (2.7.1) mini_portile2 (2.8.5) nokogiri (1.16.2) diff --git a/tests/package-lock.json b/tests/package-lock.json index e86055220..883dbfb8d 100644 --- a/tests/package-lock.json +++ b/tests/package-lock.json @@ -278,15 +278,16 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.0.0.tgz", - "integrity": "sha512-3PS82/5+tnpEaUWonjAFFvlf35QHF15xqyGd34GBa5oP5EPVfFXRsbSxIGYf1M+vZlqBZ3oxT1kRg9OYhtt8ng==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.1.0.tgz", + "integrity": "sha512-xloWvocjvryHdUjDam/ZuGMh7zn4Sn3ZAaV4Ah2e2EwEt90N3XphZlSsU3n0VDc1F7kggCjMuH0UuxfPQ5mD9w==", "dependencies": { "debug": "4.3.4", "extract-zip": "2.0.1", "progress": "2.0.3", - "proxy-agent": "6.3.1", - "tar-fs": "3.0.4", + "proxy-agent": "6.4.0", + "semver": "7.6.0", + "tar-fs": "3.0.5", "unbzip2-stream": "1.4.3", "yargs": "17.7.2" }, @@ -310,6 +311,31 @@ "node": ">=12" } }, + "node_modules/@puppeteer/browsers/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@puppeteer/browsers/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@puppeteer/browsers/node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -341,9 +367,9 @@ "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==" }, "node_modules/@types/node": { - "version": "20.11.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.17.tgz", - "integrity": "sha512-QmgQZGWu1Yw9TDyAP9ZzpFJKynYNeOvwMJmaxABfieQoVoiVOS6MN1WSpqpRcbeA5+RW82kraAVxCCJg+780Qw==", + "version": "20.11.19", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.19.tgz", + "integrity": "sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==", "optional": true, "dependencies": { "undici-types": "~5.26.4" @@ -472,9 +498,12 @@ } }, "node_modules/available-typed-arrays": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz", - "integrity": "sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -498,6 +527,33 @@ "integrity": "sha512-Yyyqff4PIFfSuthCZqLlPISTWHmnQxoPuAvkmgzsJEmG3CesdIv6Xweayl0JkCZJSB2yYIdJyEz97tpxNhgjbg==", "optional": true }, + "node_modules/bare-fs": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.1.5.tgz", + "integrity": "sha512-5t0nlecX+N2uJqdxe9d18A98cp2u9BETelbjKpiVgQqzzmVNFYWEAjQHqS+2Khgto1vcwhik9cXucaj5ve2WWA==", + "optional": true, + "dependencies": { + "bare-events": "^2.0.0", + "bare-os": "^2.0.0", + "bare-path": "^2.0.0", + "streamx": "^2.13.0" + } + }, + "node_modules/bare-os": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.2.0.tgz", + "integrity": "sha512-hD0rOPfYWOMpVirTACt4/nK8mC55La12K5fY1ij8HAdfQakD62M+H4o4tpfKzVGLgRDTuk3vjA4GqGXXCeFbag==", + "optional": true + }, + "node_modules/bare-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.0.tgz", + "integrity": "sha512-DIIg7ts8bdRKwJRJrUMy/PICEaQZaPGZ26lsSx9MJSwIhSrcdHn7/C8W+XmnG/rKi6BaRcz+JO00CjZteybDtw==", + "optional": true, + "dependencies": { + "bare-os": "^2.1.0" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -701,9 +757,9 @@ } }, "node_modules/chromium-bidi": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.5.8.tgz", - "integrity": "sha512-blqh+1cEQbHBKmok3rVJkBlBxt9beKBgOsxbFgs7UJcoVbbeZ+K7+6liAsjgpc8l1Xd55cQUy14fXZdGSb4zIw==", + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.5.9.tgz", + "integrity": "sha512-wOTX3m2zuHX0zRX4h7Ol1DAGz0cqHzo2IrAPvOqBxdd4ZR32vxg4FKNjmBihi1oP9b1QGSBBG5VNUUXUCsxDfg==", "dependencies": { "mitt": "3.0.1", "urlpattern-polyfill": "10.0.0" @@ -840,14 +896,13 @@ } }, "node_modules/define-data-property": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.3.tgz", - "integrity": "sha512-h3GBouC+RPtNX2N0hHVLo2ZwPYurq8mLmXpOLTsw71gr7lHt5VaI4vVkDUNOfiWmm48JEXe3VM7PmLX45AMmmg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dependencies": { + "es-define-property": "^1.0.0", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.1" + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -886,9 +941,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.1232444", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1232444.tgz", - "integrity": "sha512-pM27vqEfxSxRkTMnF+XCmxSEb6duO5R+t8A9DEEJgy4Wz2RVanje2mmj99B6A3zv2r/qGfYlOvYznUhuokizmg==" + "version": "0.0.1249869", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1249869.tgz", + "integrity": "sha512-Ctp4hInA0BEavlUoRy9mhGq0i+JSo/AwVyX2EFgZmV1kYB+Zq+EMBAn52QWu6FbRr10hRb6pBl420upbp4++vg==" }, "node_modules/diff": { "version": "5.0.0", @@ -933,49 +988,51 @@ } }, "node_modules/es-abstract": { - "version": "1.22.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", - "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.4.tgz", + "integrity": "sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==", "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.5", - "es-set-tostringtag": "^2.0.1", + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.6", + "call-bind": "^1.0.7", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.2", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.2", - "get-symbol-description": "^1.0.0", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0", + "has-property-descriptors": "^1.0.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", - "hasown": "^2.0.0", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "hasown": "^2.0.1", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.0", + "safe-regex-test": "^1.0.3", "string.prototype.trim": "^1.2.8", "string.prototype.trimend": "^1.0.7", "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", + "typed-array-buffer": "^1.0.1", "typed-array-byte-length": "^1.0.0", "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.13" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -1004,13 +1061,13 @@ } }, "node_modules/es-set-tostringtag": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", - "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dependencies": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -1471,9 +1528,9 @@ } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "engines": { "node": ">= 0.4" }, @@ -1531,9 +1588,9 @@ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" }, "node_modules/http-proxy-agent": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.1.tgz", - "integrity": "sha512-My1KCEPs6A0hb4qCVzYp8iEvA8j8YqcvXLZZH8C9OFuTYpYjHE7N2dtG3mRl1HMD4+VGXpF3XcDVcxGBT7yDZQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -1543,9 +1600,9 @@ } }, "node_modules/https-proxy-agent": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.3.tgz", - "integrity": "sha512-kCnwztfX0KZJSLOBrcL0emLeFako55NWMovvyPP2AjsghNk9RB1yjSI+jVumPHYZsNXegNoqupSW9IY3afSH8w==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", "dependencies": { "agent-base": "^7.0.2", "debug": "4" @@ -1748,9 +1805,9 @@ } }, "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "engines": { "node": ">= 0.4" }, @@ -1804,11 +1861,14 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2055,11 +2115,6 @@ "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, "node_modules/mocha": { "version": "10.3.0", "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.3.0.tgz", @@ -2510,6 +2565,14 @@ "node": ">=14.19.0" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -2519,14 +2582,14 @@ } }, "node_modules/proxy-agent": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.1.tgz", - "integrity": "sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", + "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", "dependencies": { "agent-base": "^7.0.2", "debug": "^4.3.4", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.2", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.3", "lru-cache": "^7.14.1", "pac-proxy-agent": "^7.0.1", "proxy-from-env": "^1.1.0", @@ -2551,14 +2614,14 @@ } }, "node_modules/puppeteer": { - "version": "22.0.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-22.0.0.tgz", - "integrity": "sha512-zYVnjwJngnSB4dbkWp7DHFSIc3nqHvZzrdHyo9+ugV1nq1Lm8obOMcmCFaGfR3PJs0EmYNz+/skBeO45yvASCQ==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-22.2.0.tgz", + "integrity": "sha512-0Ax7zeqqbQL6Zcpo1WAvrqWQAnGsLB4tmQUUwsb5Cfo05XaQ78LWUUjaO4um7qaddKpZfk0vXlGcRVwtedpWfg==", "hasInstallScript": true, "dependencies": { - "@puppeteer/browsers": "2.0.0", + "@puppeteer/browsers": "2.1.0", "cosmiconfig": "9.0.0", - "puppeteer-core": "22.0.0" + "puppeteer-core": "22.2.0" }, "bin": { "puppeteer": "lib/esm/puppeteer/node/cli.js" @@ -2568,15 +2631,15 @@ } }, "node_modules/puppeteer-core": { - "version": "22.0.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.0.0.tgz", - "integrity": "sha512-S3s91rLde0A86PWVeNY82h+P0fdS7CTiNWAicCVH/bIspRP4nS2PnO5j+VTFqCah0ZJizGzpVPAmxVYbLxTc9w==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.2.0.tgz", + "integrity": "sha512-rxLM860FP05CxCPAn6dwY0KnVhbnogsXu4XORb+2hb/va69v7R1VdJWLMGHd7EE5wfpT8oFZ7Q6NN85OhOtV9Q==", "dependencies": { - "@puppeteer/browsers": "2.0.0", - "chromium-bidi": "0.5.8", + "@puppeteer/browsers": "2.1.0", + "chromium-bidi": "0.5.9", "cross-fetch": "4.0.0", "debug": "4.3.4", - "devtools-protocol": "0.0.1232444", + "devtools-protocol": "0.0.1249869", "ws": "8.16.0" }, "engines": { @@ -2806,13 +2869,14 @@ } }, "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dependencies": { - "define-data-property": "^1.0.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -2927,9 +2991,9 @@ } }, "node_modules/spdx-exceptions": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.4.0.tgz", - "integrity": "sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", @@ -2951,9 +3015,9 @@ "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" }, "node_modules/streamx": { - "version": "2.15.8", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.8.tgz", - "integrity": "sha512-6pwMeMY/SuISiRsuS8TeIrAzyFbG5gGPHFQsYjUr/pbBadaL1PCWmzKw+CHZSwainfvcF6Si6cVLq4XTEwswFQ==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz", + "integrity": "sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==", "dependencies": { "fast-fifo": "^1.1.0", "queue-tick": "^1.0.1" @@ -3115,13 +3179,16 @@ } }, "node_modules/tar-fs": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", - "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.5.tgz", + "integrity": "sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==", "dependencies": { - "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", "tar-stream": "^3.1.5" + }, + "optionalDependencies": { + "bare-fs": "^2.1.1", + "bare-path": "^2.1.0" } }, "node_modules/tar-stream": { @@ -3161,11 +3228,11 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/typed-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.1.tgz", - "integrity": "sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dependencies": { - "call-bind": "^1.0.6", + "call-bind": "^1.0.7", "es-errors": "^1.3.0", "is-typed-array": "^1.1.13" }, @@ -3174,14 +3241,15 @@ } }, "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -3191,15 +3259,16 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -3209,13 +3278,19 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.5.tgz", + "integrity": "sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==", "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3401,6 +3476,11 @@ "node": ">=10" } }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",