diff --git a/pr-preview/pr-1029/404.html b/pr-preview/pr-1029/404.html new file mode 100644 index 000000000..64eb3879c --- /dev/null +++ b/pr-preview/pr-1029/404.html @@ -0,0 +1,44 @@ + 404 | Grafana Tanka + + Skip to content
main.libsonnet
local k = import "k.libsonnet";
+
{
grafana: k.apps.v1.deployment.new(
name="grafana",
replicas=1,
containers=[k.core.v1.container.new(
name="grafana",
image="grafana/grafana",
)]
)
}
+Kubernetes Deployment. That's all it takes. +

Define. Reuse. Override.

Grafana Tanka is the robust configuration utility for your Kubernetes cluster, powered by the unique Jsonnet language

\ No newline at end of file diff --git a/pr-preview/pr-1029/_astro/Tabs.astro_astro_type_script_index_0_lang.CCIyraCc.js b/pr-preview/pr-1029/_astro/Tabs.astro_astro_type_script_index_0_lang.CCIyraCc.js new file mode 100644 index 000000000..c861fb379 --- /dev/null +++ b/pr-preview/pr-1029/_astro/Tabs.astro_astro_type_script_index_0_lang.CCIyraCc.js @@ -0,0 +1 @@ +class c extends HTMLElement{static#e=new Map;#t;constructor(){super();const n=this.querySelector('[role="tablist"]');if(this.tabs=[...n.querySelectorAll('[role="tab"]')],this.panels=[...this.querySelectorAll(':scope > [role="tabpanel"]')],this.#t=this.dataset.syncKey,this.#t){const i=c.#e.get(this.#t)??[];i.push(this),c.#e.set(this.#t,i)}this.tabs.forEach((i,r)=>{i.addEventListener("click",t=>{t.preventDefault();const s=n.querySelector('[aria-selected="true"]');t.currentTarget!==s&&this.switchTab(t.currentTarget,r)}),i.addEventListener("keydown",t=>{const s=this.tabs.indexOf(t.currentTarget),e=t.key==="ArrowLeft"?s-1:t.key==="ArrowRight"?s+1:t.key==="Home"?0:t.key==="End"?this.tabs.length-1:null;e!==null&&this.tabs[e]&&(t.preventDefault(),this.switchTab(this.tabs[e],e))})})}switchTab(n,i,r=!0){if(!n)return;const t=r?this.getBoundingClientRect().top:0;this.tabs.forEach(e=>{e.setAttribute("aria-selected","false"),e.setAttribute("tabindex","-1")}),this.panels.forEach(e=>{e.hidden=!0});const s=this.panels[i];s&&(s.hidden=!1),n.removeAttribute("tabindex"),n.setAttribute("aria-selected","true"),r&&(n.focus(),c.#s(this,n.innerText),window.scrollTo({top:window.scrollY+(this.getBoundingClientRect().top-t)}))}static#s(n,i){const r=n.#t;if(!r||!i)return;const t=c.#e.get(r);if(t)for(const s of t){if(s===n)continue;const e=s.tabs.findIndex(a=>a.innerText===i);e!==-1&&s.switchTab(s.tabs[e],e,!1)}}}customElements.define("starlight-tabs",c); diff --git a/pr-preview/pr-1029/_astro/ec.3zb7u.js b/pr-preview/pr-1029/_astro/ec.3zb7u.js new file mode 100644 index 000000000..8c0e188ff --- /dev/null +++ b/pr-preview/pr-1029/_astro/ec.3zb7u.js @@ -0,0 +1,3 @@ +try{(()=>{function i(e){if(!e)return;let r=e.getAttribute("tabindex")!==null,t=e.scrollWidth>e.clientWidth;t&&!r?e.setAttribute("tabindex","0"):!t&&r&&e.removeAttribute("tabindex")}function a(e){let r=new Set,t;return new ResizeObserver(u=>{u.forEach(o=>r.add(o.target)),t&&clearTimeout(t),t=setTimeout(()=>{t=void 0,r.forEach(o=>e(o)),r.clear()},250)})}function s(e,r){e.querySelectorAll?.(".expressive-code pre > code").forEach(t=>{let n=t.parentElement;n&&(i(n),r.observe(n))})}var d=a(i);s(document,d);var c=new MutationObserver(e=>e.forEach(r=>r.addedNodes.forEach(t=>{s(t,d)})));c.observe(document.body,{childList:!0,subtree:!0});document.addEventListener("astro:page-load",()=>{s(document,d)});})();}catch(e){console.error("[EC] tabindex-js-module failed:",e)} +try{(()=>{function i(o){let e=document.createElement("pre");Object.assign(e.style,{opacity:"0",pointerEvents:"none",position:"absolute",overflow:"hidden",left:"0",top:"0",width:"20px",height:"20px",webkitUserSelect:"auto",userSelect:"all"}),e.ariaHidden="true",e.textContent=o,document.body.appendChild(e);let a=document.createRange();a.selectNode(e);let n=getSelection();if(!n)return!1;n.removeAllRanges(),n.addRange(a);let r=!1;try{r=document.execCommand("copy")}finally{n.removeAllRanges(),document.body.removeChild(e)}return r}async function l(o){let e=o.currentTarget,a=e.dataset,n=!1,r=a.code.replace(/\u007f/g,` +`);try{await navigator.clipboard.writeText(r),n=!0}catch{n=i(r)}if(!n||e.parentNode?.querySelector(".feedback"))return;let t=document.createElement("div");t.classList.add("feedback"),t.append(a.copied),e.before(t),t.offsetWidth,requestAnimationFrame(()=>t?.classList.add("show"));let c=()=>!t||t.classList.remove("show"),d=()=>{!t||parseFloat(getComputedStyle(t).opacity)>0||(t.remove(),t=void 0)};setTimeout(c,1500),setTimeout(d,2500),e.addEventListener("blur",c),t.addEventListener("transitioncancel",d),t.addEventListener("transitionend",d)}function s(o){o.querySelectorAll?.(".expressive-code .copy button").forEach(e=>e.addEventListener("click",l))}s(document);var u=new MutationObserver(o=>o.forEach(e=>e.addedNodes.forEach(a=>{s(a)})));u.observe(document.body,{childList:!0,subtree:!0});document.addEventListener("astro:page-load",()=>{s(document)});})();}catch(e){console.error("[EC] copy-js-module failed:",e)} \ No newline at end of file diff --git a/pr-preview/pr-1029/_astro/ec.d6kn2.css b/pr-preview/pr-1029/_astro/ec.d6kn2.css new file mode 100644 index 000000000..64d518e2f --- /dev/null +++ b/pr-preview/pr-1029/_astro/ec.d6kn2.css @@ -0,0 +1 @@ +.expressive-code{font-family:var(--ec-uiFontFml);font-size:var(--ec-uiFontSize);font-weight:var(--ec-uiFontWg);line-height:var(--ec-uiLineHt);text-size-adjust:none;-webkit-text-size-adjust:none}.expressive-code *:not(path){all:revert;box-sizing:border-box}.expressive-code pre{display:flex;margin:0;padding:0;border:var(--ec-brdWd) solid var(--ec-brdCol);border-radius:calc(var(--ec-brdRad) + var(--ec-brdWd));background:var(--ec-codeBg)}.expressive-code pre:focus-visible{outline:3px solid var(--ec-focusBrd);outline-offset:-3px}.expressive-code pre > code{all:unset;display:block;flex:1 0 100%;padding:var(--ec-codePadBlk) 0;color:var(--ec-codeFg);font-family:var(--ec-codeFontFml);font-size:var(--ec-codeFontSize);font-weight:var(--ec-codeFontWg);line-height:var(--ec-codeLineHt)}.expressive-code pre{overflow-x:auto}.expressive-code pre.wrap .ec-line .code{white-space:pre-wrap;overflow-wrap:break-word;min-width:min(20ch, var(--ecMaxLine, 20ch))}.expressive-code pre.wrap .ec-line .code span.indent{white-space:pre}.expressive-code pre::-webkit-scrollbar,.expressive-code pre::-webkit-scrollbar-track{background-color:inherit;border-radius:calc(var(--ec-brdRad) + var(--ec-brdWd));border-top-left-radius:0;border-top-right-radius:0}.expressive-code pre::-webkit-scrollbar-thumb{background-color:var(--ec-sbThumbCol);border:4px solid transparent;background-clip:content-box;border-radius:10px}.expressive-code pre::-webkit-scrollbar-thumb:hover{background-color:var(--ec-sbThumbHoverCol)}.expressive-code .ec-line{direction:ltr;unicode-bidi:isolate;display:grid;grid-template-areas:'gutter code';grid-template-columns:auto 1fr;position:relative}.expressive-code .ec-line .gutter{grid-area:gutter;color:var(--ec-gtrFg)}.expressive-code .ec-line .gutter > *{pointer-events:none;user-select:none;-webkit-user-select:none}.expressive-code .ec-line .gutter ~ .code{--ecLineBrdCol:var(--ec-gtrBrdCol)}.expressive-code .ec-line.highlight .gutter{color:var(--ec-gtrHlFg)}.expressive-code .ec-line .code{grid-area:code;position:relative;box-sizing:content-box;padding-inline-start:calc(var(--ecIndent, 0ch) + var(--ec-codePadInl) - var(--ecGtrBrdWd));padding-inline-end:var(--ec-codePadInl);text-indent:calc(var(--ecIndent, 0ch) * -1)}.expressive-code .ec-line .code::before,.expressive-code .ec-line .code::after,.expressive-code .ec-line .code :where(*){text-indent:0}.expressive-code .ec-line .code{--ecGtrBrdWd:var(--ec-gtrBrdWd);border-inline-start:var(--ecGtrBrdWd) solid var(--ecLineBrdCol, transparent)}.expressive-code :nth-child(1 of .ec-line) .code{padding-inline-end:calc(2rem + var(--ec-codePadInl))}.expressive-code .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.expressive-code .ec-line.mark{--tmLineBgCol:var(--ec-tm-markBg)}.expressive-code .ec-line.mark .code{--ecLineBrdCol:var(--ec-tm-markBrdCol)}.expressive-code .ec-line.ins{--tmLineBgCol:var(--ec-tm-insBg);--tmLabel:var(--ec-tm-insDiffIndContent)}.expressive-code .ec-line.ins .code{--ecLineBrdCol:var(--ec-tm-insBrdCol)}.expressive-code .ec-line.ins .code::before{color:var(--ec-tm-insDiffIndCol)}.expressive-code .ec-line.del{--tmLineBgCol:var(--ec-tm-delBg);--tmLabel:var(--ec-tm-delDiffIndContent)}.expressive-code .ec-line.del .code{--ecLineBrdCol:var(--ec-tm-delBrdCol)}.expressive-code .ec-line.del .code::before{color:var(--ec-tm-delDiffIndCol)}.expressive-code .ec-line.mark,.expressive-code .ec-line.ins,.expressive-code .ec-line.del{background:var(--tmLineBgCol)}.expressive-code .ec-line.mark .code,.expressive-code .ec-line.ins .code,.expressive-code .ec-line.del .code{--ecGtrBrdWd:var(--ec-tm-lineMarkerAccentWd)}.expressive-code .ec-line.mark .code::before,.expressive-code .ec-line.ins .code::before,.expressive-code .ec-line.del .code::before{display:block;position:absolute;left:0;box-sizing:border-box;content:var(--tmLabel, ' ');padding-inline-start:var(--ec-tm-lineDiffIndMargLeft);text-align:center;white-space:pre}.expressive-code .ec-line.mark.tm-label .code::before,.expressive-code .ec-line.ins.tm-label .code::before,.expressive-code .ec-line.del.tm-label .code::before{background:var(--ecLineBrdCol);padding:0 calc(var(--ec-tm-lineMarkerLabelPadInl) + var(--ec-tm-lineMarkerAccentWd)) 0 var(--ec-tm-lineMarkerLabelPadInl);color:var(--ec-tm-lineMarkerLabelCol)}.expressive-code .ec-line mark{--tmInlineBgCol:var(--ec-tm-markBg);--tmInlineBrdCol:var(--ec-tm-markBrdCol)}.expressive-code .ec-line ins{--tmInlineBgCol:var(--ec-tm-insBg);--tmInlineBrdCol:var(--ec-tm-insBrdCol)}.expressive-code .ec-line del{--tmInlineBgCol:var(--ec-tm-delBg);--tmInlineBrdCol:var(--ec-tm-delBrdCol)}.expressive-code .ec-line mark,.expressive-code .ec-line ins,.expressive-code .ec-line del{all:unset;display:inline-block;position:relative;--tmBrdL:var(--ec-tm-inlMarkerBrdWd);--tmBrdR:var(--ec-tm-inlMarkerBrdWd);--tmRadL:var(--ec-tm-inlMarkerBrdRad);--tmRadR:var(--ec-tm-inlMarkerBrdRad);margin-inline:0.025rem;padding-inline:var(--ec-tm-inlMarkerPad);border-radius:var(--tmRadL) var(--tmRadR) var(--tmRadR) var(--tmRadL);background:var(--tmInlineBgCol);background-clip:padding-box}.expressive-code .ec-line mark.open-start,.expressive-code .ec-line ins.open-start,.expressive-code .ec-line del.open-start{margin-inline-start:0;padding-inline-start:0;--tmBrdL:0px;--tmRadL:0}.expressive-code .ec-line mark.open-end,.expressive-code .ec-line ins.open-end,.expressive-code .ec-line del.open-end{margin-inline-end:0;padding-inline-end:0;--tmBrdR:0px;--tmRadR:0}.expressive-code .ec-line mark::before,.expressive-code .ec-line ins::before,.expressive-code .ec-line del::before{content:'';position:absolute;pointer-events:none;display:inline-block;inset:0;border-radius:var(--tmRadL) var(--tmRadR) var(--tmRadR) var(--tmRadL);border:var(--ec-tm-inlMarkerBrdWd) solid var(--tmInlineBrdCol);border-inline-width:var(--tmBrdL) var(--tmBrdR)}.expressive-code .frame{all:unset;position:relative;display:block;--header-border-radius:calc(var(--ec-brdRad) + var(--ec-brdWd));--tab-border-radius:calc(var(--ec-frm-edTabBrdRad) + var(--ec-brdWd));--button-spacing:0.4rem;--code-background:var(--ec-frm-edBg);border-radius:var(--header-border-radius);box-shadow:var(--ec-frm-frameBoxShdCssVal)}.expressive-code .frame .header{display:none;z-index:1;position:relative;border-radius:var(--header-border-radius) var(--header-border-radius) 0 0}.expressive-code .frame.has-title pre,.expressive-code .frame.has-title code,.expressive-code .frame.is-terminal pre,.expressive-code .frame.is-terminal code{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.expressive-code .frame .title:empty:before{content:'\a0'}.expressive-code .frame.has-title:not(.is-terminal){--button-spacing:calc(1.9rem + 2 * (var(--ec-uiPadBlk) + var(--ec-frm-edActTabIndHt)))}.expressive-code .frame.has-title:not(.is-terminal) .title{position:relative;color:var(--ec-frm-edActTabFg);background:var(--ec-frm-edActTabBg);background-clip:padding-box;margin-block-start:var(--ec-frm-edTabsMargBlkStart);padding:calc(var(--ec-uiPadBlk) + var(--ec-frm-edActTabIndHt)) var(--ec-uiPadInl);border:var(--ec-brdWd) solid var(--ec-frm-edActTabBrdCol);border-radius:var(--tab-border-radius) var(--tab-border-radius) 0 0;border-bottom:none;overflow:hidden}.expressive-code .frame.has-title:not(.is-terminal) .title::after{content:'';position:absolute;pointer-events:none;inset:0;border-top:var(--ec-frm-edActTabIndHt) solid var(--ec-frm-edActTabIndTopCol);border-bottom:var(--ec-frm-edActTabIndHt) solid var(--ec-frm-edActTabIndBtmCol)}.expressive-code .frame.has-title:not(.is-terminal) .header{display:flex;background:linear-gradient(to top, var(--ec-frm-edTabBarBrdBtmCol) var(--ec-brdWd), transparent var(--ec-brdWd)),linear-gradient(var(--ec-frm-edTabBarBg), var(--ec-frm-edTabBarBg));background-repeat:no-repeat;padding-inline-start:var(--ec-frm-edTabsMargInlStart)}.expressive-code .frame.has-title:not(.is-terminal) .header::before{content:'';position:absolute;pointer-events:none;inset:0;border:var(--ec-brdWd) solid var(--ec-frm-edTabBarBrdCol);border-radius:inherit;border-bottom:none}.expressive-code .frame.is-terminal{--button-spacing:calc(1.9rem + var(--ec-brdWd) + 2 * var(--ec-uiPadBlk));--code-background:var(--ec-frm-trmBg)}.expressive-code .frame.is-terminal .header{display:flex;align-items:center;justify-content:center;padding-block:var(--ec-uiPadBlk);padding-block-end:calc(var(--ec-uiPadBlk) + var(--ec-brdWd));position:relative;font-weight:500;letter-spacing:0.025ch;color:var(--ec-frm-trmTtbFg);background:var(--ec-frm-trmTtbBg);border:var(--ec-brdWd) solid var(--ec-brdCol);border-bottom:none}.expressive-code .frame.is-terminal .header::before{content:'';position:absolute;pointer-events:none;left:var(--ec-uiPadInl);width:2.1rem;height:0.56rem;line-height:0;background-color:var(--ec-frm-trmTtbDotsFg);opacity:var(--ec-frm-trmTtbDotsOpa);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 16' preserveAspectRatio='xMidYMid meet'%3E%3Ccircle cx='8' cy='8' r='8'/%3E%3Ccircle cx='30' cy='8' r='8'/%3E%3Ccircle cx='52' cy='8' r='8'/%3E%3C/svg%3E");-webkit-mask-repeat:no-repeat;mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 16' preserveAspectRatio='xMidYMid meet'%3E%3Ccircle cx='8' cy='8' r='8'/%3E%3Ccircle cx='30' cy='8' r='8'/%3E%3Ccircle cx='52' cy='8' r='8'/%3E%3C/svg%3E");mask-repeat:no-repeat}.expressive-code .frame.is-terminal .header::after{content:'';position:absolute;pointer-events:none;inset:0;border-bottom:var(--ec-brdWd) solid var(--ec-frm-trmTtbBrdBtmCol)}.expressive-code .frame pre{background:var(--code-background)}.expressive-code .copy{display:flex;gap:0.25rem;flex-direction:row;position:absolute;inset-block-start:calc(var(--ec-brdWd) + var(--button-spacing));inset-inline-end:calc(var(--ec-brdWd) + var(--ec-uiPadInl) / 2);direction:ltr;unicode-bidi:isolate}.expressive-code .copy button{position:relative;align-self:flex-end;margin:0;padding:0;border:none;border-radius:0.2rem;z-index:1;cursor:pointer;transition-property:opacity, background, border-color;transition-duration:0.2s;transition-timing-function:cubic-bezier(0.25, 0.46, 0.45, 0.94);width:2.5rem;height:2.5rem;background:var(--code-background);opacity:0.75}.expressive-code .copy button div{position:absolute;inset:0;border-radius:inherit;background:var(--ec-frm-inlBtnBg);opacity:var(--ec-frm-inlBtnBgIdleOpa);transition-property:inherit;transition-duration:inherit;transition-timing-function:inherit}.expressive-code .copy button::before{content:'';position:absolute;pointer-events:none;inset:0;border-radius:inherit;border:var(--ec-brdWd) solid var(--ec-frm-inlBtnBrd);opacity:var(--ec-frm-inlBtnBrdOpa)}.expressive-code .copy button::after{content:'';position:absolute;pointer-events:none;inset:0;background-color:var(--ec-frm-inlBtnFg);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75'%3E%3Cpath d='M3 19a2 2 0 0 1-1-2V2a2 2 0 0 1 1-1h13a2 2 0 0 1 2 1'/%3E%3Crect x='6' y='5' width='16' height='18' rx='1.5' ry='1.5'/%3E%3C/svg%3E");-webkit-mask-repeat:no-repeat;mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75'%3E%3Cpath d='M3 19a2 2 0 0 1-1-2V2a2 2 0 0 1 1-1h13a2 2 0 0 1 2 1'/%3E%3Crect x='6' y='5' width='16' height='18' rx='1.5' ry='1.5'/%3E%3C/svg%3E");mask-repeat:no-repeat;margin:0.475rem;line-height:0}.expressive-code .copy button:hover,.expressive-code .copy button:focus:focus-visible{opacity:1}.expressive-code .copy button:hover div,.expressive-code .copy button:focus:focus-visible div{opacity:var(--ec-frm-inlBtnBgHoverOrFocusOpa)}.expressive-code .copy button:active{opacity:1}.expressive-code .copy button:active div{opacity:var(--ec-frm-inlBtnBgActOpa)}.expressive-code .copy .feedback{--tooltip-arrow-size:0.35rem;--tooltip-bg:var(--ec-frm-tooltipSuccessBg);color:var(--ec-frm-tooltipSuccessFg);pointer-events:none;user-select:none;-webkit-user-select:none;position:relative;align-self:center;background-color:var(--tooltip-bg);z-index:99;padding:0.125rem 0.75rem;border-radius:0.2rem;margin-inline-end:var(--tooltip-arrow-size);opacity:0;transition-property:opacity, transform;transition-duration:0.2s;transition-timing-function:ease-in-out;transform:translate3d(0, 0.25rem, 0)}.expressive-code .copy .feedback::after{content:'';position:absolute;pointer-events:none;top:calc(50% - var(--tooltip-arrow-size));inset-inline-end:calc(-2 * (var(--tooltip-arrow-size) - 0.5px));border:var(--tooltip-arrow-size) solid transparent;border-inline-start-color:var(--tooltip-bg)}.expressive-code .copy .feedback.show{opacity:1;transform:translate3d(0, 0, 0)}@media (hover: hover){.expressive-code{}.expressive-code .copy button{opacity:0;width:2rem;height:2rem}.expressive-code .frame:hover .copy button:not(:hover),.expressive-code .frame:focus-within :focus-visible ~ .copy button:not(:hover),.expressive-code .frame .copy .feedback.show ~ button:not(:hover){opacity:0.75}}:root,:root:not([data-theme='dark']) .expressive-code[data-theme='dark']{--ec-brdRad:0px;--ec-brdWd:1px;--ec-brdCol:color-mix(in srgb, var(--sl-color-gray-5), transparent 25%);--ec-codeFontFml:var(--__sl-font-mono);--ec-codeFontSize:var(--sl-text-code);--ec-codeFontWg:400;--ec-codeLineHt:var(--sl-line-height);--ec-codePadBlk:0.75rem;--ec-codePadInl:1rem;--ec-codeBg:#011627;--ec-codeFg:#d6deeb;--ec-codeSelBg:#1d3b53;--ec-gtrFg:#556c80;--ec-gtrBrdCol:#556c8033;--ec-gtrBrdWd:1.5px;--ec-gtrHlFg:#c5e4fd8e;--ec-uiFontFml:var(--__sl-font);--ec-uiFontSize:0.9rem;--ec-uiFontWg:400;--ec-uiLineHt:1.65;--ec-uiPadBlk:0.25rem;--ec-uiPadInl:1rem;--ec-uiSelBg:#234d708c;--ec-uiSelFg:#ffffff;--ec-focusBrd:#122d42;--ec-sbThumbCol:#ffffff17;--ec-sbThumbHoverCol:#ffffff49;--ec-tm-lineMarkerAccentMarg:0rem;--ec-tm-lineMarkerAccentWd:0.15rem;--ec-tm-lineMarkerLabelPadInl:0.2rem;--ec-tm-lineMarkerLabelCol:white;--ec-tm-lineDiffIndMargLeft:0.25rem;--ec-tm-inlMarkerBrdWd:1.5px;--ec-tm-inlMarkerBrdRad:0.2rem;--ec-tm-inlMarkerPad:0.15rem;--ec-tm-insDiffIndContent:'+';--ec-tm-delDiffIndContent:'-';--ec-tm-markBg:#ffffff17;--ec-tm-markBrdCol:#ffffff40;--ec-tm-insBg:#1e571599;--ec-tm-insBrdCol:#487f3bd0;--ec-tm-insDiffIndCol:#79b169d0;--ec-tm-delBg:#862d2799;--ec-tm-delBrdCol:#b4554bd0;--ec-tm-delDiffIndCol:#ed8779d0;--ec-frm-shdCol:#011627;--ec-frm-frameBoxShdCssVal:none;--ec-frm-edActTabBg:var(--sl-color-gray-6);--ec-frm-edActTabFg:var(--sl-color-text);--ec-frm-edActTabBrdCol:transparent;--ec-frm-edActTabIndHt:1px;--ec-frm-edActTabIndTopCol:var(--sl-color-accent-high);--ec-frm-edActTabIndBtmCol:transparent;--ec-frm-edTabsMargInlStart:0;--ec-frm-edTabsMargBlkStart:0;--ec-frm-edTabBrdRad:0px;--ec-frm-edTabBarBg:var(--sl-color-black);--ec-frm-edTabBarBrdCol:color-mix(in srgb, var(--sl-color-gray-5), transparent 25%);--ec-frm-edTabBarBrdBtmCol:color-mix(in srgb, var(--sl-color-gray-5), transparent 25%);--ec-frm-edBg:var(--sl-color-gray-6);--ec-frm-trmTtbDotsFg:color-mix(in srgb, var(--sl-color-gray-5), transparent 25%);--ec-frm-trmTtbDotsOpa:0.75;--ec-frm-trmTtbBg:var(--sl-color-black);--ec-frm-trmTtbFg:var(--sl-color-text);--ec-frm-trmTtbBrdBtmCol:color-mix(in srgb, var(--sl-color-gray-5), transparent 25%);--ec-frm-trmBg:var(--sl-color-gray-6);--ec-frm-inlBtnFg:var(--sl-color-text);--ec-frm-inlBtnBg:var(--sl-color-text);--ec-frm-inlBtnBgIdleOpa:0;--ec-frm-inlBtnBgHoverOrFocusOpa:0.2;--ec-frm-inlBtnBgActOpa:0.3;--ec-frm-inlBtnBrd:var(--sl-color-text);--ec-frm-inlBtnBrdOpa:0.4;--ec-frm-tooltipSuccessBg:#158744;--ec-frm-tooltipSuccessFg:white}.expressive-code .ec-line :where(span[style^='--']:not([class])),:root:not([data-theme='dark']) .expressive-code[data-theme='dark'] .ec-line :where(span[style^='--']:not([class])){color:var(--0, inherit);font-style:var(--0fs, inherit);font-weight:var(--0fw, inherit);text-decoration:var(--0td, inherit)}@media (prefers-color-scheme: light){:root:not([data-theme='dark']){--ec-codeBg:#fbfbfb;--ec-codeFg:#403f53;--ec-codeSelBg:#e0e0e0;--ec-gtrFg:#7a8d96;--ec-gtrBrdCol:#7a8d9633;--ec-gtrHlFg:#403f53c3;--ec-uiSelBg:#d3e8f8;--ec-uiSelFg:#403f53;--ec-focusBrd:#93a1a1;--ec-sbThumbCol:#0000001a;--ec-sbThumbHoverCol:#0000005c;--ec-tm-markBg:#0000001a;--ec-tm-markBrdCol:#00000055;--ec-tm-insBg:#8ec77d99;--ec-tm-insDiffIndCol:#336a28d0;--ec-tm-delBg:#ff9c8e99;--ec-tm-delDiffIndCol:#9d4138d0;--ec-frm-shdCol:#d9d9d9;--ec-frm-edActTabBg:var(--sl-color-gray-7);--ec-frm-edActTabIndTopCol:var(--sl-color-accent);--ec-frm-edTabBarBg:var(--sl-color-gray-6);--ec-frm-edBg:var(--sl-color-gray-7);--ec-frm-trmTtbBg:var(--sl-color-gray-6);--ec-frm-trmBg:var(--sl-color-gray-7);--ec-frm-tooltipSuccessBg:#078662}:root:not([data-theme='dark']) .expressive-code .ec-line :where(span[style^='--']:not([class])){color:var(--1, inherit);font-style:var(--1fs, inherit);font-weight:var(--1fw, inherit);text-decoration:var(--1td, inherit)}}:root[data-theme='light'] .expressive-code:not([data-theme='dark']),.expressive-code[data-theme='light']{--ec-codeBg:#fbfbfb;--ec-codeFg:#403f53;--ec-codeSelBg:#e0e0e0;--ec-gtrFg:#7a8d96;--ec-gtrBrdCol:#7a8d9633;--ec-gtrHlFg:#403f53c3;--ec-uiSelBg:#d3e8f8;--ec-uiSelFg:#403f53;--ec-focusBrd:#93a1a1;--ec-sbThumbCol:#0000001a;--ec-sbThumbHoverCol:#0000005c;--ec-tm-markBg:#0000001a;--ec-tm-markBrdCol:#00000055;--ec-tm-insBg:#8ec77d99;--ec-tm-insDiffIndCol:#336a28d0;--ec-tm-delBg:#ff9c8e99;--ec-tm-delDiffIndCol:#9d4138d0;--ec-frm-shdCol:#d9d9d9;--ec-frm-edActTabBg:var(--sl-color-gray-7);--ec-frm-edActTabIndTopCol:var(--sl-color-accent);--ec-frm-edTabBarBg:var(--sl-color-gray-6);--ec-frm-edBg:var(--sl-color-gray-7);--ec-frm-trmTtbBg:var(--sl-color-gray-6);--ec-frm-trmBg:var(--sl-color-gray-7);--ec-frm-tooltipSuccessBg:#078662}:root[data-theme='light'] .expressive-code:not([data-theme='dark']) .ec-line :where(span[style^='--']:not([class])),.expressive-code[data-theme='light'] .ec-line :where(span[style^='--']:not([class])){color:var(--1, inherit);font-style:var(--1fs, inherit);font-weight:var(--1fw, inherit);text-decoration:var(--1td, inherit)} \ No newline at end of file diff --git a/pr-preview/pr-1029/_astro/hoisted.oqOUE2R1.js b/pr-preview/pr-1029/_astro/hoisted.oqOUE2R1.js new file mode 100644 index 000000000..0176fd59c --- /dev/null +++ b/pr-preview/pr-1029/_astro/hoisted.oqOUE2R1.js @@ -0,0 +1,2 @@ +const __vite__fileDeps=["_astro/ui-core.DM_jDrfI.js","_astro/Tabs.astro_astro_type_script_index_0_lang.CCIyraCc.js"],__vite__mapDeps=i=>i.map(i=>__vite__fileDeps[i]); +import"./Tabs.astro_astro_type_script_index_0_lang.CCIyraCc.js";class w extends HTMLElement{constructor(){super();const e=this.querySelector("select");e&&e.addEventListener("change",s=>{s.currentTarget instanceof HTMLSelectElement&&(window.location.pathname=s.currentTarget.value)})}}customElements.define("starlight-lang-select",w);const L="modulepreload",T=function(r){return"/pr-preview/pr-1029/"+r},E={},k=function(e,s,o){let d=Promise.resolve();if(s&&s.length>0){document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),i=a?.nonce||a?.getAttribute("nonce");d=Promise.all(s.map(c=>{if(c=T(c),c in E)return;E[c]=!0;const u=c.endsWith(".css"),g=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${g}`))return;const t=document.createElement("link");if(t.rel=u?"stylesheet":L,u||(t.as="script",t.crossOrigin=""),t.href=c,i&&t.setAttribute("nonce",i),document.head.appendChild(t),u)return new Promise((l,n)=>{t.addEventListener("load",l),t.addEventListener("error",()=>n(new Error(`Unable to preload CSS for ${c}`)))})}))}return d.then(()=>e()).catch(a=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=a,window.dispatchEvent(i),!i.defaultPrevented)throw a})};class x extends HTMLElement{constructor(){super();const e=this.querySelector("button[data-open-modal]"),s=this.querySelector("button[data-close-modal]"),o=this.querySelector("dialog"),d=this.querySelector(".dialog-frame"),a=n=>{("href"in(n.target||{})||document.body.contains(n.target)&&!d.contains(n.target))&&c()},i=n=>{o.showModal(),document.body.toggleAttribute("data-search-modal-open",!0),this.querySelector("input")?.focus(),n?.stopPropagation(),window.addEventListener("click",a)},c=()=>o.close();e.addEventListener("click",i),e.disabled=!1,s.addEventListener("click",c),o.addEventListener("close",()=>{document.body.toggleAttribute("data-search-modal-open",!1),window.removeEventListener("click",a)}),window.addEventListener("keydown",n=>{const m=document.activeElement instanceof HTMLElement&&(["input","select","textarea"].includes(document.activeElement.tagName.toLowerCase())||document.activeElement.isContentEditable);(n.metaKey===!0||n.ctrlKey===!0)&&n.key==="k"?(o.open?c():i(),n.preventDefault()):n.key==="/"&&!o.open&&!m&&(i(),n.preventDefault())});let u={};try{u=JSON.parse(this.dataset.translations||"{}")}catch{}const l=this.dataset.stripTrailingSlash!==void 0?n=>n.replace(/(.)\/(#.*)?$/,"$1$2"):n=>n;window.addEventListener("DOMContentLoaded",()=>{(window.requestIdleCallback||(m=>setTimeout(m,1)))(async()=>{const{PagefindUI:m}=await k(()=>import("./ui-core.DM_jDrfI.js"),__vite__mapDeps([0,1]));new m({element:"#starlight__search",baseUrl:"/pr-preview/pr-1029/",bundlePath:"/pr-preview/pr-1029/".replace(/\/$/,"")+"/pagefind/",showImages:!1,translations:u,showSubResults:!0,processResult:h=>{h.url=l(h.url),h.sub_results=h.sub_results.map(p=>(p.url=l(p.url),p))}})})})}}customElements.define("site-search",x);const v="starlight-theme",S=r=>r==="auto"||r==="dark"||r==="light"?r:"auto",y=()=>S(typeof localStorage<"u"&&localStorage.getItem(v));function C(r){typeof localStorage<"u"&&localStorage.setItem(v,r==="light"||r==="dark"?r:"")}const q=()=>matchMedia("(prefers-color-scheme: light)").matches?"light":"dark";function f(r){StarlightThemeProvider.updatePickers(r),document.documentElement.dataset.theme=r==="auto"?q():r,C(r)}matchMedia("(prefers-color-scheme: light)").addEventListener("change",()=>{y()==="auto"&&f("auto")});class H extends HTMLElement{constructor(){super(),f(y()),this.querySelector("select")?.addEventListener("change",e=>{e.currentTarget instanceof HTMLSelectElement&&f(S(e.currentTarget.value))})}}customElements.define("starlight-theme-select",H);class b extends HTMLElement{_current=this.querySelector('a[aria-current="true"]');minH=parseInt(this.dataset.minH||"2",10);maxH=parseInt(this.dataset.maxH||"3",10);set current(e){e!==this._current&&(this._current&&this._current.removeAttribute("aria-current"),e.setAttribute("aria-current","true"),this._current=e)}constructor(){super();const e=[...this.querySelectorAll("a")],s=t=>{if(t instanceof HTMLHeadingElement){if(t.id==="_top")return!0;const l=t.tagName[1];if(l){const n=parseInt(l,10);if(n>=this.minH&&n<=this.maxH)return!0}}return!1},o=t=>{if(!t)return null;const l=t;for(;t;){if(s(t))return t;for(t=t.previousElementSibling;t?.lastElementChild;)t=t.lastElementChild;const n=o(t);if(n)return n}return o(l.parentElement)},d=t=>{for(const{isIntersecting:l,target:n}of t){if(!l)continue;const m=o(n);if(!m)continue;const h=e.find(p=>p.hash==="#"+encodeURIComponent(m.id));if(h){this.current=h;break}}},a=document.querySelectorAll("main [id], main [id] ~ *, main .content > *");let i;const c=()=>{i&&i.disconnect(),i=new IntersectionObserver(d,{rootMargin:this.getRootMargin()}),a.forEach(t=>i.observe(t))};c();const u=window.requestIdleCallback||(t=>setTimeout(t,1));let g;window.addEventListener("resize",()=>{i&&i.disconnect(),clearTimeout(g),g=setTimeout(()=>u(c),200)})}getRootMargin(){const e=document.querySelector("header")?.getBoundingClientRect().height||0,s=this.querySelector("summary")?.getBoundingClientRect().height||0,o=e+s+32,d=o+53,a=document.documentElement.clientHeight;return`-${o}px 0% ${d-a}px`}}customElements.define("starlight-toc",b);class M extends b{set current(e){super.current=e;const s=this.querySelector(".display-current");s&&(s.textContent=e.textContent)}constructor(){super();const e=this.querySelector("details");if(!e)return;const s=()=>{e.open=!1};e.querySelectorAll("a").forEach(o=>{o.addEventListener("click",s)}),window.addEventListener("click",o=>{e.contains(o.target)||s()}),window.addEventListener("keydown",o=>{if(o.key==="Escape"&&e.open){const d=e.contains(document.activeElement);if(s(),d){const a=e.querySelector("summary");a&&a.focus()}}})}}customElements.define("mobile-starlight-toc",M);class I extends HTMLElement{constructor(){super(),this.btn=this.querySelector("button"),this.btn.addEventListener("click",()=>this.toggleExpanded());const e=this.closest("nav");e&&e.addEventListener("keyup",s=>this.closeOnEscape(s))}setExpanded(e){this.setAttribute("aria-expanded",String(e)),document.body.toggleAttribute("data-mobile-menu-expanded",e)}toggleExpanded(){this.setExpanded(this.getAttribute("aria-expanded")!=="true")}closeOnEscape(e){e.code==="Escape"&&(this.setExpanded(!1),this.btn.focus())}}customElements.define("starlight-menu-button",I);export{k as _}; diff --git a/pr-preview/pr-1029/_astro/index.CnKhlBmy.css b/pr-preview/pr-1029/_astro/index.CnKhlBmy.css new file mode 100644 index 000000000..142eb7933 --- /dev/null +++ b/pr-preview/pr-1029/_astro/index.CnKhlBmy.css @@ -0,0 +1 @@ +:root,::backdrop{--sl-color-white: hsl(0, 0%, 100%);--sl-color-gray-1: hsl(224, 20%, 94%);--sl-color-gray-2: hsl(224, 6%, 77%);--sl-color-gray-3: hsl(224, 6%, 56%);--sl-color-gray-4: hsl(224, 7%, 36%);--sl-color-gray-5: hsl(224, 10%, 23%);--sl-color-gray-6: hsl(224, 14%, 16%);--sl-color-black: hsl(224, 10%, 10%);--sl-hue-orange: 41;--sl-color-orange-low: hsl(var(--sl-hue-orange), 39%, 22%);--sl-color-orange: hsl(var(--sl-hue-orange), 82%, 63%);--sl-color-orange-high: hsl(var(--sl-hue-orange), 82%, 87%);--sl-hue-green: 101;--sl-color-green-low: hsl(var(--sl-hue-green), 39%, 22%);--sl-color-green: hsl(var(--sl-hue-green), 82%, 63%);--sl-color-green-high: hsl(var(--sl-hue-green), 82%, 80%);--sl-hue-blue: 234;--sl-color-blue-low: hsl(var(--sl-hue-blue), 54%, 20%);--sl-color-blue: hsl(var(--sl-hue-blue), 100%, 60%);--sl-color-blue-high: hsl(var(--sl-hue-blue), 100%, 87%);--sl-hue-purple: 281;--sl-color-purple-low: hsl(var(--sl-hue-purple), 39%, 22%);--sl-color-purple: hsl(var(--sl-hue-purple), 82%, 63%);--sl-color-purple-high: hsl(var(--sl-hue-purple), 82%, 89%);--sl-hue-red: 339;--sl-color-red-low: hsl(var(--sl-hue-red), 39%, 22%);--sl-color-red: hsl(var(--sl-hue-red), 82%, 63%);--sl-color-red-high: hsl(var(--sl-hue-red), 82%, 87%);--sl-color-accent-low: hsl(224, 54%, 20%);--sl-color-accent: hsl(224, 100%, 60%);--sl-color-accent-high: hsl(224, 100%, 85%);--sl-color-text: var(--sl-color-gray-2);--sl-color-text-accent: var(--sl-color-accent-high);--sl-color-text-invert: var(--sl-color-accent-low);--sl-color-bg: var(--sl-color-black);--sl-color-bg-nav: var(--sl-color-gray-6);--sl-color-bg-sidebar: var(--sl-color-gray-6);--sl-color-bg-inline-code: var(--sl-color-gray-5);--sl-color-bg-accent: var(--sl-color-accent-high);--sl-color-hairline-light: var(--sl-color-gray-5);--sl-color-hairline: var(--sl-color-gray-6);--sl-color-hairline-shade: var(--sl-color-black);--sl-color-backdrop-overlay: hsla(223, 13%, 10%, .66);--sl-shadow-sm: 0px 1px 1px hsla(0, 0%, 0%, .12), 0px 2px 1px hsla(0, 0%, 0%, .24);--sl-shadow-md: 0px 8px 4px hsla(0, 0%, 0%, .08), 0px 5px 2px hsla(0, 0%, 0%, .08), 0px 3px 2px hsla(0, 0%, 0%, .12), 0px 1px 1px hsla(0, 0%, 0%, .15);--sl-shadow-lg: 0px 25px 7px hsla(0, 0%, 0%, .03), 0px 16px 6px hsla(0, 0%, 0%, .1), 0px 9px 5px hsla(223, 13%, 10%, .33), 0px 4px 4px hsla(0, 0%, 0%, .75), 0px 4px 2px hsla(0, 0%, 0%, .25);--sl-text-xs: .8125rem;--sl-text-sm: .875rem;--sl-text-base: 1rem;--sl-text-lg: 1.125rem;--sl-text-xl: 1.25rem;--sl-text-2xl: 1.5rem;--sl-text-3xl: 1.8125rem;--sl-text-4xl: 2.1875rem;--sl-text-5xl: 2.625rem;--sl-text-6xl: 4rem;--sl-text-body: var(--sl-text-base);--sl-text-body-sm: var(--sl-text-xs);--sl-text-code: var(--sl-text-sm);--sl-text-code-sm: var(--sl-text-xs);--sl-text-h1: var(--sl-text-4xl);--sl-text-h2: var(--sl-text-3xl);--sl-text-h3: var(--sl-text-2xl);--sl-text-h4: var(--sl-text-xl);--sl-text-h5: var(--sl-text-lg);--sl-line-height: 1.75;--sl-line-height-headings: 1.2;--sl-font-system: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--sl-font-system-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--__sl-font: var(--sl-font, var(--sl-font-system)), var(--sl-font-system);--__sl-font-mono: var(--sl-font-mono, var(--sl-font-system-mono)), var(--sl-font-system-mono);--sl-nav-height: 3.5rem;--sl-nav-pad-x: 1rem;--sl-nav-pad-y: .75rem;--sl-mobile-toc-height: 3rem;--sl-sidebar-width: 18.75rem;--sl-sidebar-pad-x: 1rem;--sl-content-width: 45rem;--sl-content-pad-x: 1rem;--sl-menu-button-size: 2rem;--sl-nav-gap: var(--sl-content-pad-x);--sl-outline-offset-inside: -.1875rem;--sl-z-index-toc: 4;--sl-z-index-menu: 5;--sl-z-index-navbar: 10;--sl-z-index-skiplink: 20}:root[data-theme=light],[data-theme=light] ::backdrop{--sl-color-white: hsl(224, 10%, 10%);--sl-color-gray-1: hsl(224, 14%, 16%);--sl-color-gray-2: hsl(224, 10%, 23%);--sl-color-gray-3: hsl(224, 7%, 36%);--sl-color-gray-4: hsl(224, 6%, 56%);--sl-color-gray-5: hsl(224, 6%, 77%);--sl-color-gray-6: hsl(224, 20%, 94%);--sl-color-gray-7: hsl(224, 19%, 97%);--sl-color-black: hsl(0, 0%, 100%);--sl-color-orange-high: hsl(var(--sl-hue-orange), 80%, 25%);--sl-color-orange: hsl(var(--sl-hue-orange), 90%, 60%);--sl-color-orange-low: hsl(var(--sl-hue-orange), 90%, 88%);--sl-color-green-high: hsl(var(--sl-hue-green), 80%, 22%);--sl-color-green: hsl(var(--sl-hue-green), 90%, 46%);--sl-color-green-low: hsl(var(--sl-hue-green), 85%, 90%);--sl-color-blue-high: hsl(var(--sl-hue-blue), 80%, 30%);--sl-color-blue: hsl(var(--sl-hue-blue), 90%, 60%);--sl-color-blue-low: hsl(var(--sl-hue-blue), 88%, 90%);--sl-color-purple-high: hsl(var(--sl-hue-purple), 90%, 30%);--sl-color-purple: hsl(var(--sl-hue-purple), 90%, 60%);--sl-color-purple-low: hsl(var(--sl-hue-purple), 80%, 90%);--sl-color-red-high: hsl(var(--sl-hue-red), 80%, 30%);--sl-color-red: hsl(var(--sl-hue-red), 90%, 60%);--sl-color-red-low: hsl(var(--sl-hue-red), 80%, 90%);--sl-color-accent-high: hsl(234, 80%, 30%);--sl-color-accent: hsl(234, 90%, 60%);--sl-color-accent-low: hsl(234, 88%, 90%);--sl-color-text-accent: var(--sl-color-accent);--sl-color-text-invert: var(--sl-color-black);--sl-color-bg-nav: var(--sl-color-gray-7);--sl-color-bg-sidebar: var(--sl-color-bg);--sl-color-bg-inline-code: var(--sl-color-gray-6);--sl-color-bg-accent: var(--sl-color-accent);--sl-color-hairline-light: var(--sl-color-gray-6);--sl-color-hairline-shade: var(--sl-color-gray-6);--sl-color-backdrop-overlay: hsla(225, 9%, 36%, .66);--sl-shadow-sm: 0px 1px 1px hsla(0, 0%, 0%, .06), 0px 2px 1px hsla(0, 0%, 0%, .06);--sl-shadow-md: 0px 8px 4px hsla(0, 0%, 0%, .03), 0px 5px 2px hsla(0, 0%, 0%, .03), 0px 3px 2px hsla(0, 0%, 0%, .06), 0px 1px 1px hsla(0, 0%, 0%, .06);--sl-shadow-lg: 0px 25px 7px rgba(0, 0, 0, .01), 0px 16px 6px hsla(0, 0%, 0%, .03), 0px 9px 5px hsla(223, 13%, 10%, .08), 0px 4px 4px hsla(0, 0%, 0%, .16), 0px 4px 2px hsla(0, 0%, 0%, .04)}@media (min-width: 50em){:root{--sl-nav-height: 4rem;--sl-nav-pad-x: 1.5rem;--sl-text-h1: var(--sl-text-5xl);--sl-text-h2: var(--sl-text-4xl);--sl-text-h3: var(--sl-text-3xl);--sl-text-h4: var(--sl-text-2xl)}}@media (min-width: 72rem){:root{--sl-content-pad-x: 1.5rem;--sl-mobile-toc-height: 0rem}}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{color-scheme:dark;accent-color:var(--sl-color-accent)}html[data-theme=light]{color-scheme:light}body{font-family:var(--__sl-font);line-height:var(--sl-line-height);-webkit-font-smoothing:antialiased;color:var(--sl-color-text);background-color:var(--sl-color-bg)}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6,code{overflow-wrap:anywhere}code{font-family:var(--__sl-font-mono)}:root{--astro-code-color-text: var(--sl-color-white);--astro-code-color-background: var(--sl-color-gray-6);--astro-code-token-constant: var(--sl-color-blue-high);--astro-code-token-string: var(--sl-color-green-high);--astro-code-token-comment: var(--sl-color-gray-2);--astro-code-token-keyword: var(--sl-color-purple-high);--astro-code-token-parameter: var(--sl-color-red-high);--astro-code-token-function: var(--sl-color-red-high);--astro-code-token-string-expression: var(--sl-color-green-high);--astro-code-token-punctuation: var(--sl-color-gray-2);--astro-code-token-link: var(--sl-color-blue-high)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.sl-hidden{display:none}.sl-flex{display:flex}.sl-block{display:block}@media (min-width: 50rem){.md\:sl-hidden{display:none}.md\:sl-flex{display:flex}.md\:sl-block{display:block}}@media (min-width: 72rem){.lg\:sl-hidden{display:none}.lg\:sl-flex{display:flex}.lg\:sl-block{display:block}}[data-theme=light] .light\:sl-hidden,[data-theme=dark] .dark\:sl-hidden{display:none}[dir=rtl] .rtl\:flip:not(:where([dir=rtl] [dir=ltr] *)){transform:scaleX(-1)}.sl-banner:where(.astro-r625fyc4){--__sl-banner-text: var(--sl-color-banner-text, var(--sl-color-text-invert));padding:var(--sl-nav-pad-y) var(--sl-nav-pad-x);background-color:var(--sl-color-banner-bg, var(--sl-color-bg-accent));color:var(--__sl-banner-text);line-height:var(--sl-line-height-headings);text-align:center;text-wrap:balance;box-shadow:var(--sl-shadow-sm)}.sl-banner:where(.astro-r625fyc4) a{color:var(--__sl-banner-text)}.content-panel:where(.astro-bx7deow4){padding:1.5rem var(--sl-content-pad-x)}.content-panel:where(.astro-bx7deow4)+.content-panel:where(.astro-bx7deow4){border-top:1px solid var(--sl-color-hairline)}.sl-container:where(.astro-bx7deow4){max-width:var(--sl-content-width)}.sl-container:where(.astro-bx7deow4)>*+*{margin-top:1.5rem}@media (min-width: 72rem){.sl-container:where(.astro-bx7deow4){margin-inline:var(--sl-content-margin-inline, auto)}}p:where(.astro-3bjm7cml){border:1px solid var(--sl-color-orange);padding:.75em 1em;background-color:var(--sl-color-orange-low);color:var(--sl-color-orange-high);width:-moz-max-content;width:max-content;max-width:100%;align-items:center;gap:.75em;font-size:var(--sl-text-body-sm);line-height:var(--sl-line-height-headings)}a:where(.astro-a2hbyhhz){gap:.5rem;align-items:center;text-decoration:none;color:var(--sl-color-gray-3)}a:where(.astro-a2hbyhhz):hover{color:var(--sl-color-white)}.pagination-links:where(.astro-wvmgd3pa){display:grid;grid-template-columns:repeat(auto-fit,minmax(min(18rem,100%),1fr));gap:1rem}a:where(.astro-wvmgd3pa){display:flex;align-items:center;justify-content:flex-start;gap:.5rem;width:100%;flex-basis:calc(50% - .5rem);flex-grow:1;border:1px solid var(--sl-color-gray-5);border-radius:.5rem;padding:1rem;text-decoration:none;color:var(--sl-color-gray-2);box-shadow:var(--sl-shadow-md);overflow-wrap:anywhere}:where(.astro-wvmgd3pa)[rel=next]{justify-content:end;text-align:end;flex-direction:row-reverse}a:where(.astro-wvmgd3pa):hover{border-color:var(--sl-color-gray-2)}.link-title:where(.astro-wvmgd3pa){color:var(--sl-color-white);font-size:var(--sl-text-2xl);line-height:var(--sl-line-height-headings)}svg:where(.astro-wvmgd3pa){flex-shrink:0}.meta:where(.astro-uabkwdqv){gap:.75rem 3rem;justify-content:space-between;flex-wrap:wrap;margin-block:3rem 1.5rem;font-size:var(--sl-text-sm);color:var(--sl-color-gray-3)}.meta:where(.astro-uabkwdqv)>p:only-child{margin-inline-start:auto}label:where(.astro-fssqwgxr){--sl-label-icon-size: .875rem;--sl-caret-size: 1.25rem;position:relative;display:flex;align-items:center;gap:.25rem;color:var(--sl-color-gray-1)}label:where(.astro-fssqwgxr):hover{color:var(--sl-color-gray-2)}.icon:where(.astro-fssqwgxr){position:absolute;top:50%;transform:translateY(-50%);pointer-events:none}.label-icon:where(.astro-fssqwgxr){font-size:var(--sl-label-icon-size);inset-inline-start:0}.caret:where(.astro-fssqwgxr){font-size:var(--sl-caret-size);inset-inline-end:0}select:where(.astro-fssqwgxr){border:0;padding-block:.625rem;padding-inline:calc(var(--sl-label-icon-size) + .25rem) calc(var(--sl-caret-size) + .25rem);width:var(--sl-select-width);background-color:transparent;text-overflow:ellipsis;color:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}option:where(.astro-fssqwgxr){background-color:var(--sl-color-bg-nav);color:var(--sl-color-gray-1)}@media (min-width: 50rem){select:where(.astro-fssqwgxr){font-size:var(--sl-text-sm)}}.pagefind-ui__result.svelte-j9e30.svelte-j9e30{list-style-type:none;display:flex;align-items:flex-start;gap:min(calc(40px * var(--pagefind-ui-scale)),3%);padding:calc(30px * var(--pagefind-ui-scale)) 0 calc(40px * var(--pagefind-ui-scale));border-top:solid var(--pagefind-ui-border-width) var(--pagefind-ui-border)}.pagefind-ui__result.svelte-j9e30.svelte-j9e30:last-of-type{border-bottom:solid var(--pagefind-ui-border-width) var(--pagefind-ui-border)}.pagefind-ui__result-thumb.svelte-j9e30.svelte-j9e30{width:min(30%,calc((30% - (100px * var(--pagefind-ui-scale))) * 100000));max-width:calc(120px * var(--pagefind-ui-scale));margin-top:calc(10px * var(--pagefind-ui-scale));aspect-ratio:var(--pagefind-ui-image-box-ratio);position:relative}.pagefind-ui__result-image.svelte-j9e30.svelte-j9e30{display:block;position:absolute;left:50%;transform:translate(-50%);font-size:0;width:auto;height:auto;max-width:100%;max-height:100%;border-radius:var(--pagefind-ui-image-border-radius)}.pagefind-ui__result-inner.svelte-j9e30.svelte-j9e30{flex:1;display:flex;flex-direction:column;align-items:flex-start;margin-top:calc(10px * var(--pagefind-ui-scale))}.pagefind-ui__result-title.svelte-j9e30.svelte-j9e30{display:inline-block;font-weight:700;font-size:calc(21px * var(--pagefind-ui-scale));margin-top:0;margin-bottom:0}.pagefind-ui__result-title.svelte-j9e30 .pagefind-ui__result-link.svelte-j9e30{color:var(--pagefind-ui-text);text-decoration:none}.pagefind-ui__result-title.svelte-j9e30 .pagefind-ui__result-link.svelte-j9e30:hover{text-decoration:underline}.pagefind-ui__result-excerpt.svelte-j9e30.svelte-j9e30{display:inline-block;font-weight:400;font-size:calc(16px * var(--pagefind-ui-scale));margin-top:calc(4px * var(--pagefind-ui-scale));margin-bottom:0;min-width:calc(250px * var(--pagefind-ui-scale))}.pagefind-ui__loading.svelte-j9e30.svelte-j9e30{color:var(--pagefind-ui-text);background-color:var(--pagefind-ui-text);border-radius:var(--pagefind-ui-border-radius);opacity:.1;pointer-events:none}.pagefind-ui__result-tags.svelte-j9e30.svelte-j9e30{list-style-type:none;padding:0;display:flex;gap:calc(20px * var(--pagefind-ui-scale));flex-wrap:wrap;margin-top:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__result-tag.svelte-j9e30.svelte-j9e30{padding:calc(4px * var(--pagefind-ui-scale)) calc(8px * var(--pagefind-ui-scale));font-size:calc(14px * var(--pagefind-ui-scale));border-radius:var(--pagefind-ui-border-radius);background-color:var(--pagefind-ui-tag)}.pagefind-ui__result.svelte-4xnkmf.svelte-4xnkmf{list-style-type:none;display:flex;align-items:flex-start;gap:min(calc(40px * var(--pagefind-ui-scale)),3%);padding:calc(30px * var(--pagefind-ui-scale)) 0 calc(40px * var(--pagefind-ui-scale));border-top:solid var(--pagefind-ui-border-width) var(--pagefind-ui-border)}.pagefind-ui__result.svelte-4xnkmf.svelte-4xnkmf:last-of-type{border-bottom:solid var(--pagefind-ui-border-width) var(--pagefind-ui-border)}.pagefind-ui__result-nested.svelte-4xnkmf.svelte-4xnkmf{display:flex;flex-direction:column;padding-left:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__result-nested.svelte-4xnkmf.svelte-4xnkmf:first-of-type{padding-top:calc(10px * var(--pagefind-ui-scale))}.pagefind-ui__result-nested.svelte-4xnkmf .pagefind-ui__result-link.svelte-4xnkmf{font-size:.9em;position:relative}.pagefind-ui__result-nested.svelte-4xnkmf .pagefind-ui__result-link.svelte-4xnkmf:before{content:"⤷ ";position:absolute;top:0;right:calc(100% + .1em)}.pagefind-ui__result-thumb.svelte-4xnkmf.svelte-4xnkmf{width:min(30%,calc((30% - (100px * var(--pagefind-ui-scale))) * 100000));max-width:calc(120px * var(--pagefind-ui-scale));margin-top:calc(10px * var(--pagefind-ui-scale));aspect-ratio:var(--pagefind-ui-image-box-ratio);position:relative}.pagefind-ui__result-image.svelte-4xnkmf.svelte-4xnkmf{display:block;position:absolute;left:50%;transform:translate(-50%);font-size:0;width:auto;height:auto;max-width:100%;max-height:100%;border-radius:var(--pagefind-ui-image-border-radius)}.pagefind-ui__result-inner.svelte-4xnkmf.svelte-4xnkmf{flex:1;display:flex;flex-direction:column;align-items:flex-start;margin-top:calc(10px * var(--pagefind-ui-scale))}.pagefind-ui__result-title.svelte-4xnkmf.svelte-4xnkmf{display:inline-block;font-weight:700;font-size:calc(21px * var(--pagefind-ui-scale));margin-top:0;margin-bottom:0}.pagefind-ui__result-title.svelte-4xnkmf .pagefind-ui__result-link.svelte-4xnkmf{color:var(--pagefind-ui-text);text-decoration:none}.pagefind-ui__result-title.svelte-4xnkmf .pagefind-ui__result-link.svelte-4xnkmf:hover{text-decoration:underline}.pagefind-ui__result-excerpt.svelte-4xnkmf.svelte-4xnkmf{display:inline-block;font-weight:400;font-size:calc(16px * var(--pagefind-ui-scale));margin-top:calc(4px * var(--pagefind-ui-scale));margin-bottom:0;min-width:calc(250px * var(--pagefind-ui-scale))}.pagefind-ui__loading.svelte-4xnkmf.svelte-4xnkmf{color:var(--pagefind-ui-text);background-color:var(--pagefind-ui-text);border-radius:var(--pagefind-ui-border-radius);opacity:.1;pointer-events:none}.pagefind-ui__result-tags.svelte-4xnkmf.svelte-4xnkmf{list-style-type:none;padding:0;display:flex;gap:calc(20px * var(--pagefind-ui-scale));flex-wrap:wrap;margin-top:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__result-tag.svelte-4xnkmf.svelte-4xnkmf{padding:calc(4px * var(--pagefind-ui-scale)) calc(8px * var(--pagefind-ui-scale));font-size:calc(14px * var(--pagefind-ui-scale));border-radius:var(--pagefind-ui-border-radius);background-color:var(--pagefind-ui-tag)}legend.svelte-1v2r7ls.svelte-1v2r7ls{position:absolute;clip:rect(0 0 0 0)}.pagefind-ui__filter-panel.svelte-1v2r7ls.svelte-1v2r7ls{min-width:min(calc(260px * var(--pagefind-ui-scale)),100%);flex:1;display:flex;flex-direction:column;margin-top:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__filter-group.svelte-1v2r7ls.svelte-1v2r7ls{border:0;padding:0}.pagefind-ui__filter-block.svelte-1v2r7ls.svelte-1v2r7ls{padding:0;display:block;border-bottom:solid calc(2px * var(--pagefind-ui-scale)) var(--pagefind-ui-border);padding:calc(20px * var(--pagefind-ui-scale)) 0}.pagefind-ui__filter-name.svelte-1v2r7ls.svelte-1v2r7ls{font-size:calc(16px * var(--pagefind-ui-scale));position:relative;display:flex;align-items:center;list-style:none;font-weight:700;cursor:pointer;height:calc(24px * var(--pagefind-ui-scale))}.pagefind-ui__filter-name.svelte-1v2r7ls.svelte-1v2r7ls::-webkit-details-marker{display:none}.pagefind-ui__filter-name.svelte-1v2r7ls.svelte-1v2r7ls:after{position:absolute;content:"";right:calc(6px * var(--pagefind-ui-scale));top:50%;width:calc(8px * var(--pagefind-ui-scale));height:calc(8px * var(--pagefind-ui-scale));border:solid calc(2px * var(--pagefind-ui-scale)) currentColor;border-right:0;border-top:0;transform:translateY(-70%) rotate(-45deg)}.pagefind-ui__filter-block[open].svelte-1v2r7ls .pagefind-ui__filter-name.svelte-1v2r7ls:after{transform:translateY(-70%) rotate(-225deg)}.pagefind-ui__filter-group.svelte-1v2r7ls.svelte-1v2r7ls{display:flex;flex-direction:column;gap:calc(20px * var(--pagefind-ui-scale));padding-top:calc(30px * var(--pagefind-ui-scale))}.pagefind-ui__filter-value.svelte-1v2r7ls.svelte-1v2r7ls{position:relative;display:flex;align-items:center;gap:calc(8px * var(--pagefind-ui-scale))}.pagefind-ui__filter-value.svelte-1v2r7ls.svelte-1v2r7ls:before{position:absolute;content:"";top:50%;left:calc(8px * var(--pagefind-ui-scale));width:0px;height:0px;border:solid 1px #fff;opacity:0;transform:translate(calc(4.5px * var(--pagefind-ui-scale) * -1),calc(.8px * var(--pagefind-ui-scale))) skew(-5deg) rotate(-45deg);transform-origin:top left;border-top:0;border-right:0;pointer-events:none}.pagefind-ui__filter-value.pagefind-ui__filter-value--checked.svelte-1v2r7ls.svelte-1v2r7ls:before{opacity:1;width:calc(9px * var(--pagefind-ui-scale));height:calc(4px * var(--pagefind-ui-scale));transition:width .1s ease-out .1s,height .1s ease-in}.pagefind-ui__filter-checkbox.svelte-1v2r7ls.svelte-1v2r7ls{margin:0;width:calc(16px * var(--pagefind-ui-scale));height:calc(16px * var(--pagefind-ui-scale));border:solid 1px var(--pagefind-ui-border);-moz-appearance:none;appearance:none;-webkit-appearance:none;border-radius:calc(var(--pagefind-ui-border-radius) / 2);background-color:var(--pagefind-ui-background);cursor:pointer}.pagefind-ui__filter-checkbox.svelte-1v2r7ls.svelte-1v2r7ls:checked{background-color:var(--pagefind-ui-primary);border:solid 1px var(--pagefind-ui-primary)}.pagefind-ui__filter-label.svelte-1v2r7ls.svelte-1v2r7ls{cursor:pointer;font-size:calc(16px * var(--pagefind-ui-scale));font-weight:400}.pagefind-ui--reset *:where(:not(html,iframe,canvas,img,svg,video):not(svg *,symbol *)){all:unset;display:revert;outline:revert}.pagefind-ui--reset *,.pagefind-ui--reset *:before,.pagefind-ui--reset *:after{box-sizing:border-box}.pagefind-ui--reset a,.pagefind-ui--reset button{cursor:revert}.pagefind-ui--reset ol,.pagefind-ui--reset ul,.pagefind-ui--reset menu{list-style:none}.pagefind-ui--reset img{max-width:100%}.pagefind-ui--reset table{border-collapse:collapse}.pagefind-ui--reset input,.pagefind-ui--reset textarea{-webkit-user-select:auto}.pagefind-ui--reset textarea{white-space:revert}.pagefind-ui--reset meter{-webkit-appearance:revert;-moz-appearance:revert;appearance:revert}.pagefind-ui--reset ::-moz-placeholder{color:unset}.pagefind-ui--reset ::placeholder{color:unset}.pagefind-ui--reset :where([hidden]){display:none}.pagefind-ui--reset :where([contenteditable]:not([contenteditable=false])){-moz-user-modify:read-write;-webkit-user-modify:read-write;overflow-wrap:break-word;-webkit-line-break:after-white-space;-webkit-user-select:auto}.pagefind-ui--reset :where([draggable=true]){-webkit-user-drag:element}.pagefind-ui--reset mark{all:revert}:root{--pagefind-ui-scale:.8;--pagefind-ui-primary:#393939;--pagefind-ui-text:#393939;--pagefind-ui-background:#ffffff;--pagefind-ui-border:#eeeeee;--pagefind-ui-tag:#eeeeee;--pagefind-ui-border-width:2px;--pagefind-ui-border-radius:8px;--pagefind-ui-image-border-radius:8px;--pagefind-ui-image-box-ratio:3 / 2;--pagefind-ui-font:system, -apple-system, "BlinkMacSystemFont", ".SFNSText-Regular", "San Francisco", "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", "Ubuntu", "arial", sans-serif}.pagefind-ui.svelte-e9gkc3{width:100%;color:var(--pagefind-ui-text);font-family:var(--pagefind-ui-font)}.pagefind-ui__hidden.svelte-e9gkc3{display:none!important}.pagefind-ui__suppressed.svelte-e9gkc3{opacity:0;pointer-events:none}.pagefind-ui__form.svelte-e9gkc3{position:relative}.pagefind-ui__form.svelte-e9gkc3:before{background-color:var(--pagefind-ui-text);width:calc(18px * var(--pagefind-ui-scale));height:calc(18px * var(--pagefind-ui-scale));top:calc(23px * var(--pagefind-ui-scale));left:calc(20px * var(--pagefind-ui-scale));content:"";position:absolute;display:block;opacity:.7;-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.7549 11.255H11.9649L11.6849 10.985C12.6649 9.845 13.2549 8.365 13.2549 6.755C13.2549 3.165 10.3449 0.255005 6.75488 0.255005C3.16488 0.255005 0.254883 3.165 0.254883 6.755C0.254883 10.345 3.16488 13.255 6.75488 13.255C8.36488 13.255 9.84488 12.665 10.9849 11.685L11.2549 11.965V12.755L16.2549 17.745L17.7449 16.255L12.7549 11.255ZM6.75488 11.255C4.26488 11.255 2.25488 9.245 2.25488 6.755C2.25488 4.26501 4.26488 2.255 6.75488 2.255C9.24488 2.255 11.2549 4.26501 11.2549 6.755C11.2549 9.245 9.24488 11.255 6.75488 11.255Z' fill='%23000000'/%3E%3C/svg%3E%0A");mask-image:url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.7549 11.255H11.9649L11.6849 10.985C12.6649 9.845 13.2549 8.365 13.2549 6.755C13.2549 3.165 10.3449 0.255005 6.75488 0.255005C3.16488 0.255005 0.254883 3.165 0.254883 6.755C0.254883 10.345 3.16488 13.255 6.75488 13.255C8.36488 13.255 9.84488 12.665 10.9849 11.685L11.2549 11.965V12.755L16.2549 17.745L17.7449 16.255L12.7549 11.255ZM6.75488 11.255C4.26488 11.255 2.25488 9.245 2.25488 6.755C2.25488 4.26501 4.26488 2.255 6.75488 2.255C9.24488 2.255 11.2549 4.26501 11.2549 6.755C11.2549 9.245 9.24488 11.255 6.75488 11.255Z' fill='%23000000'/%3E%3C/svg%3E%0A");-webkit-mask-size:100%;mask-size:100%;z-index:9;pointer-events:none}.pagefind-ui__search-input.svelte-e9gkc3{height:calc(64px * var(--pagefind-ui-scale));padding:0 calc(70px * var(--pagefind-ui-scale)) 0 calc(54px * var(--pagefind-ui-scale));background-color:var(--pagefind-ui-background);border:var(--pagefind-ui-border-width) solid var(--pagefind-ui-border);border-radius:var(--pagefind-ui-border-radius);font-size:calc(21px * var(--pagefind-ui-scale));position:relative;-moz-appearance:none;appearance:none;-webkit-appearance:none;display:flex;width:100%;box-sizing:border-box;font-weight:700}.pagefind-ui__search-input.svelte-e9gkc3::-moz-placeholder{opacity:.2}.pagefind-ui__search-input.svelte-e9gkc3::placeholder{opacity:.2}.pagefind-ui__search-clear.svelte-e9gkc3{position:absolute;top:calc(3px * var(--pagefind-ui-scale));right:calc(3px * var(--pagefind-ui-scale));height:calc(58px * var(--pagefind-ui-scale));padding:0 calc(15px * var(--pagefind-ui-scale)) 0 calc(2px * var(--pagefind-ui-scale));color:var(--pagefind-ui-text);font-size:calc(14px * var(--pagefind-ui-scale));cursor:pointer;background-color:var(--pagefind-ui-background);border-radius:var(--pagefind-ui-border-radius)}.pagefind-ui__drawer.svelte-e9gkc3{gap:calc(60px * var(--pagefind-ui-scale));display:flex;flex-direction:row;flex-wrap:wrap}.pagefind-ui__results-area.svelte-e9gkc3{min-width:min(calc(400px * var(--pagefind-ui-scale)),100%);flex:1000;margin-top:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__results.svelte-e9gkc3{padding:0}.pagefind-ui__message.svelte-e9gkc3{box-sizing:content-box;font-size:calc(16px * var(--pagefind-ui-scale));height:calc(24px * var(--pagefind-ui-scale));padding:calc(20px * var(--pagefind-ui-scale)) 0;display:flex;align-items:center;font-weight:700;margin-top:0}.pagefind-ui__button.svelte-e9gkc3{margin-top:calc(40px * var(--pagefind-ui-scale));border:var(--pagefind-ui-border-width) solid var(--pagefind-ui-border);border-radius:var(--pagefind-ui-border-radius);height:calc(48px * var(--pagefind-ui-scale));padding:0 calc(12px * var(--pagefind-ui-scale));font-size:calc(16px * var(--pagefind-ui-scale));color:var(--pagefind-ui-primary);background:var(--pagefind-ui-background);width:100%;text-align:center;font-weight:700;cursor:pointer}.pagefind-ui__button.svelte-e9gkc3:hover{border-color:var(--pagefind-ui-primary);color:var(--pagefind-ui-primary);background:var(--pagefind-ui-background)}[data-search-modal-open]{overflow:hidden}#starlight__search{--sl-search-result-spacing: calc(1.25rem * var(--pagefind-ui-scale));--sl-search-result-pad-inline-start: calc(3.75rem * var(--pagefind-ui-scale));--sl-search-result-pad-inline-end: calc(1.25rem * var(--pagefind-ui-scale));--sl-search-result-pad-block: calc(.9375rem * var(--pagefind-ui-scale));--sl-search-result-nested-pad-block: calc(.625rem * var(--pagefind-ui-scale));--sl-search-corners: calc(.3125rem * var(--pagefind-ui-scale));--sl-search-page-icon-size: calc(1.875rem * var(--pagefind-ui-scale));--sl-search-page-icon-inline-start: calc( (var(--sl-search-result-pad-inline-start) - var(--sl-search-page-icon-size)) / 2 );--sl-search-tree-diagram-size: calc(2.5rem * var(--pagefind-ui-scale));--sl-search-tree-diagram-inline-start: calc( (var(--sl-search-result-pad-inline-start) - var(--sl-search-tree-diagram-size)) / 2 )}#starlight__search .pagefind-ui__form:before{--pagefind-ui-text: var(--sl-color-gray-1);opacity:1}#starlight__search .pagefind-ui__search-input{color:var(--sl-color-white);font-weight:400;width:calc(100% - var(--sl-search-cancel-space))}#starlight__search input:focus{--pagefind-ui-border: var(--sl-color-accent)}#starlight__search .pagefind-ui__search-clear{inset-inline-end:var(--sl-search-cancel-space);width:calc(60px * var(--pagefind-ui-scale));padding:0;background-color:transparent;overflow:hidden}#starlight__search .pagefind-ui__search-clear:focus{outline:1px solid var(--sl-color-accent)}#starlight__search .pagefind-ui__search-clear:before{content:"";-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m13.41 12 6.3-6.29a1 1 0 1 0-1.42-1.42L12 10.59l-6.29-6.3a1 1 0 0 0-1.42 1.42l6.3 6.29-6.3 6.29a1 1 0 0 0 .33 1.64 1 1 0 0 0 1.09-.22l6.29-6.3 6.29 6.3a1 1 0 0 0 1.64-.33 1 1 0 0 0-.22-1.09L13.41 12Z'/%3E%3C/svg%3E") center / 50% no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m13.41 12 6.3-6.29a1 1 0 1 0-1.42-1.42L12 10.59l-6.29-6.3a1 1 0 0 0-1.42 1.42l6.3 6.29-6.3 6.29a1 1 0 0 0 .33 1.64 1 1 0 0 0 1.09-.22l6.29-6.3 6.29 6.3a1 1 0 0 0 1.64-.33 1 1 0 0 0-.22-1.09L13.41 12Z'/%3E%3C/svg%3E") center / 50% no-repeat;background-color:var(--sl-color-text-accent);display:block;width:100%;height:100%}#starlight__search .pagefind-ui__results>*+*{margin-top:var(--sl-search-result-spacing)}#starlight__search .pagefind-ui__result{border:0;padding:0}#starlight__search .pagefind-ui__result-nested{position:relative;padding:var(--sl-search-result-nested-pad-block) var(--sl-search-result-pad-inline-end);padding-inline-start:var(--sl-search-result-pad-inline-start)}#starlight__search .pagefind-ui__result-title:not(:where(.pagefind-ui__result-nested *)),#starlight__search .pagefind-ui__result-nested{position:relative;background-color:var(--sl-color-black)}#starlight__search .pagefind-ui__result-title:not(:where(.pagefind-ui__result-nested *)):hover,#starlight__search .pagefind-ui__result-title:not(:where(.pagefind-ui__result-nested *)):focus-within,#starlight__search .pagefind-ui__result-nested:hover,#starlight__search .pagefind-ui__result-nested:focus-within{outline:1px solid var(--sl-color-accent-high)}#starlight__search .pagefind-ui__result-title:not(:where(.pagefind-ui__result-nested *)):focus-within,#starlight__search .pagefind-ui__result-nested:focus-within{background-color:var(--sl-color-accent-low)}#starlight__search .pagefind-ui__result-thumb,#starlight__search .pagefind-ui__result-inner{margin-top:0}#starlight__search .pagefind-ui__result-inner>:first-child{border-radius:var(--sl-search-corners) var(--sl-search-corners) 0 0}#starlight__search .pagefind-ui__result-inner>:last-child{border-radius:0 0 var(--sl-search-corners) var(--sl-search-corners)}#starlight__search .pagefind-ui__result-inner>.pagefind-ui__result-title{padding:var(--sl-search-result-pad-block) var(--sl-search-result-pad-inline-end);padding-inline-start:var(--sl-search-result-pad-inline-start)}#starlight__search .pagefind-ui__result-inner>.pagefind-ui__result-title:before{content:"";position:absolute;inset-block:0;inset-inline-start:var(--sl-search-page-icon-inline-start);width:var(--sl-search-page-icon-size);background:var(--sl-color-gray-3);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' viewBox='0 0 24 24'%3E%3Cpath d='M9 10h1a1 1 0 1 0 0-2H9a1 1 0 0 0 0 2Zm0 2a1 1 0 0 0 0 2h6a1 1 0 0 0 0-2H9Zm11-3V8l-6-6a1 1 0 0 0-1 0H7a3 3 0 0 0-3 3v14a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V9Zm-6-4 3 3h-2a1 1 0 0 1-1-1V5Zm4 14a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h5v3a3 3 0 0 0 3 3h3v9Zm-3-3H9a1 1 0 0 0 0 2h6a1 1 0 0 0 0-2Z'/%3E%3C/svg%3E") center no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' viewBox='0 0 24 24'%3E%3Cpath d='M9 10h1a1 1 0 1 0 0-2H9a1 1 0 0 0 0 2Zm0 2a1 1 0 0 0 0 2h6a1 1 0 0 0 0-2H9Zm11-3V8l-6-6a1 1 0 0 0-1 0H7a3 3 0 0 0-3 3v14a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V9Zm-6-4 3 3h-2a1 1 0 0 1-1-1V5Zm4 14a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h5v3a3 3 0 0 0 3 3h3v9Zm-3-3H9a1 1 0 0 0 0 2h6a1 1 0 0 0 0-2Z'/%3E%3C/svg%3E") center no-repeat}#starlight__search .pagefind-ui__result-inner{align-items:stretch;gap:1px}#starlight__search .pagefind-ui__result-link{position:unset;--pagefind-ui-text: var(--sl-color-white);font-weight:600}#starlight__search .pagefind-ui__result-link:hover{text-decoration:none}#starlight__search .pagefind-ui__result-nested .pagefind-ui__result-link:before{content:unset}#starlight__search .pagefind-ui__result-nested:before{content:"";position:absolute;inset-block:0;inset-inline-start:var(--sl-search-tree-diagram-inline-start);width:var(--sl-search-tree-diagram-size);background:var(--sl-color-gray-4);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' viewBox='0 0 16 1000' preserveAspectRatio='xMinYMin slice'%3E%3Cpath d='M8 0v1000m6-988H8'/%3E%3C/svg%3E") 0% 0% / 100% no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' viewBox='0 0 16 1000' preserveAspectRatio='xMinYMin slice'%3E%3Cpath d='M8 0v1000m6-988H8'/%3E%3C/svg%3E") 0% 0% / 100% no-repeat}#starlight__search .pagefind-ui__result-nested:last-child:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' viewBox='0 0 16 16'%3E%3Cpath d='M8 0v12m6 0H8'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' viewBox='0 0 16 16'%3E%3Cpath d='M8 0v12m6 0H8'/%3E%3C/svg%3E")}[dir=rtl] .pagefind-ui__result-title:before,[dir=rtl] .pagefind-ui__result-nested:before{transform:scaleX(-1)}#starlight__search .pagefind-ui__result-link:after{content:"";position:absolute;inset:0}#starlight__search .pagefind-ui__result-excerpt{font-size:calc(1rem * var(--pagefind-ui-scale));overflow-wrap:anywhere}#starlight__search mark{color:var(--sl-color-gray-2);background-color:transparent;font-weight:600}site-search:where(.astro-4abxqjh6){display:contents}button:where(.astro-4abxqjh6)[data-open-modal]{display:flex;align-items:center;gap:.5rem;border:0;background-color:transparent;color:var(--sl-color-gray-1);cursor:pointer;height:2.5rem;font-size:var(--sl-text-xl)}@media (min-width: 50rem){button:where(.astro-4abxqjh6)[data-open-modal]{border:1px solid var(--sl-color-gray-5);border-radius:.5rem;padding-inline-start:.75rem;padding-inline-end:1rem;background-color:var(--sl-color-black);color:var(--sl-color-gray-2);font-size:var(--sl-text-sm);width:100%;max-width:22rem}button:where(.astro-4abxqjh6)[data-open-modal]:hover{border-color:var(--sl-color-gray-2);color:var(--sl-color-white)}button:where(.astro-4abxqjh6)[data-open-modal]>:last-child:where(.astro-4abxqjh6){margin-inline-start:auto}}dialog:where(.astro-4abxqjh6){margin:0;background-color:var(--sl-color-gray-6);border:1px solid var(--sl-color-gray-5);width:100%;max-width:100%;height:100%;max-height:100%;box-shadow:var(--sl-shadow-lg)}dialog:where(.astro-4abxqjh6)[open]{display:grid}dialog:where(.astro-4abxqjh6)::backdrop{background-color:var(--sl-color-backdrop-overlay);-webkit-backdrop-filter:blur(.25rem);backdrop-filter:blur(.25rem)}.dialog-frame:where(.astro-4abxqjh6){flex-direction:column;gap:1rem;padding:1rem}button:where(.astro-4abxqjh6)[data-close-modal]{position:absolute;z-index:1;align-items:center;align-self:flex-end;height:calc(64px * var(--pagefind-ui-scale));padding:.25rem;border:0;background:transparent;cursor:pointer;color:var(--sl-color-text-accent)}#starlight__search:where(.astro-4abxqjh6){--pagefind-ui-primary: var(--sl-color-accent-light);--pagefind-ui-text: var(--sl-color-gray-2);--pagefind-ui-font: var(--__sl-font);--pagefind-ui-background: var(--sl-color-black);--pagefind-ui-border: var(--sl-color-gray-5);--pagefind-ui-border-width: 1px;--sl-search-cancel-space: 5rem}@media (min-width: 50rem){#starlight__search:where(.astro-4abxqjh6){--sl-search-cancel-space: 0px}dialog:where(.astro-4abxqjh6){margin:4rem auto auto;border-radius:.5rem;width:90%;max-width:40rem;height:-moz-max-content;height:max-content;min-height:15rem;max-height:calc(100% - 8rem)}.dialog-frame:where(.astro-4abxqjh6){padding:1.5rem}}.site-title:where(.astro-xfr2qmzz){align-items:center;gap:var(--sl-nav-gap);font-size:var(--sl-text-h4);font-weight:600;color:var(--sl-color-text-accent);text-decoration:none;white-space:nowrap}img:where(.astro-xfr2qmzz){height:calc(var(--sl-nav-height) - 2 * var(--sl-nav-pad-y));width:auto;max-width:100%;-o-object-fit:contain;object-fit:contain;-o-object-position:0 50%;object-position:0 50%}a:where(.astro-rhdfetq4){color:var(--sl-color-text-accent);padding:.5em;margin:-.5em}a:where(.astro-rhdfetq4):hover{opacity:.66}.header:where(.astro-mxghdaa6){gap:var(--sl-nav-gap);justify-content:space-between;align-items:center;height:100%}.title-wrapper:where(.astro-mxghdaa6){overflow:hidden}.right-group:where(.astro-mxghdaa6),.social-icons:where(.astro-mxghdaa6){gap:1rem;align-items:center}.social-icons:where(.astro-mxghdaa6):after{content:"";height:2rem;border-inline-end:1px solid var(--sl-color-gray-5)}@media (min-width: 50rem){:root[data-has-sidebar]{--__sidebar-pad: calc(2 * var(--sl-nav-pad-x))}:root:not([data-has-toc]){--__toc-width: 0rem}.header:where(.astro-mxghdaa6){--__sidebar-width: max(0rem, var(--sl-content-inline-start, 0rem) - var(--sl-nav-pad-x));--__main-column-fr: calc( ( 100% + var(--__sidebar-pad, 0rem) - var(--__toc-width, var(--sl-sidebar-width)) - (2 * var(--__toc-width, var(--sl-nav-pad-x))) - var(--sl-content-inline-start, 0rem) - var(--sl-content-width) ) / 2 );display:grid;grid-template-columns:minmax(calc(var(--__sidebar-width) + max(0rem,var(--__main-column-fr) - var(--sl-nav-gap))),auto) 1fr auto;align-content:center}}.action:where(.astro-osiwxoz2){gap:.5em;align-items:center;border-radius:999rem;padding:.5rem 1.125rem;color:var(--sl-color-white);line-height:1.1875;text-decoration:none;font-size:var(--sl-text-sm)}.action:where(.astro-osiwxoz2).primary{background:var(--sl-color-text-accent);color:var(--sl-color-black)}.action:where(.astro-osiwxoz2).secondary{border:1px solid}.action:where(.astro-osiwxoz2).minimal{padding-inline:0}@media (min-width: 50rem){.action:where(.astro-osiwxoz2){font-size:var(--sl-text-base);padding:1rem 1.25rem}}[data-has-hero]{--sl-content-width: 66.7rem}.hero:where(.astro-bbe6dxrz){padding-bottom:1rem}.hero:where(.astro-bbe6dxrz)>img:where(.astro-bbe6dxrz),.hero:where(.astro-bbe6dxrz)>.hero-html:where(.astro-bbe6dxrz){-o-object-fit:contain;object-fit:contain;height:auto;margin-inline:auto}.stack:where(.astro-bbe6dxrz){flex-direction:column;gap:clamp(1.5rem,calc(1.5rem + 1vw),2rem);text-align:center}.copy:where(.astro-bbe6dxrz){flex-direction:column;gap:1rem;align-items:center}.copy:where(.astro-bbe6dxrz)>:where(.astro-bbe6dxrz){max-width:50ch}h1:where(.astro-bbe6dxrz){font-size:clamp(var(--sl-text-3xl),calc(.25rem + 5vw),var(--sl-text-6xl));line-height:var(--sl-line-height-headings);font-weight:600;color:var(--sl-color-white)}.tagline:where(.astro-bbe6dxrz){font-size:clamp(var(--sl-text-base),calc(.0625rem + 2vw),var(--sl-text-xl));color:var(--sl-color-gray-2)}.actions:where(.astro-bbe6dxrz){gap:1rem 2rem;flex-wrap:wrap;justify-content:center}@media (min-width: 50rem){.hero:where(.astro-bbe6dxrz){padding-block:clamp(2.5rem,calc(1rem + 10vmin),10rem)}.hero:where(.astro-bbe6dxrz)>img:where(.astro-bbe6dxrz),.hero:where(.astro-bbe6dxrz)>.hero-html:where(.astro-bbe6dxrz){order:2;width:min(100%,25rem)}.stack:where(.astro-bbe6dxrz){text-align:start}.copy:where(.astro-bbe6dxrz){align-items:flex-start}.actions:where(.astro-bbe6dxrz){justify-content:flex-start}}.sl-markdown-content :not(a,strong,em,del,span,input,code)+:not(a,strong,em,del,span,input,code,:where(.not-content *)){margin-top:1rem}.sl-markdown-content :not(h1,h2,h3,h4,h5,h6)+:is(h1,h2,h3,h4,h5,h6):not(:where(.not-content *)){margin-top:1.5em}.sl-markdown-content li+li:not(:where(.not-content *)),.sl-markdown-content dt+dt:not(:where(.not-content *)),.sl-markdown-content dt+dd:not(:where(.not-content *)),.sl-markdown-content dd+dd:not(:where(.not-content *)){margin-top:.25rem}.sl-markdown-content li>:last-child:not(li,ul,ol):not(a,strong,em,del,span,input,:where(.not-content *)){margin-bottom:1.25rem}.sl-markdown-content dt:not(:where(.not-content *)){font-weight:700}.sl-markdown-content dd:not(:where(.not-content *)){padding-inline-start:1rem}.sl-markdown-content :is(h1,h2,h3,h4,h5,h6):not(:where(.not-content *)){color:var(--sl-color-white);line-height:var(--sl-line-height-headings);font-weight:600}.sl-markdown-content :is(img,picture,video,canvas,svg,iframe):not(:where(.not-content *)){display:block;max-width:100%;height:auto}.sl-markdown-content h1:not(:where(.not-content *)){font-size:var(--sl-text-h1)}.sl-markdown-content h2:not(:where(.not-content *)){font-size:var(--sl-text-h2)}.sl-markdown-content h3:not(:where(.not-content *)){font-size:var(--sl-text-h3)}.sl-markdown-content h4:not(:where(.not-content *)){font-size:var(--sl-text-h4)}.sl-markdown-content h5:not(:where(.not-content *)){font-size:var(--sl-text-h5)}.sl-markdown-content h6:not(:where(.not-content *)){font-size:var(--sl-text-h6)}.sl-markdown-content a:not(:where(.not-content *)){color:var(--sl-color-text-accent)}.sl-markdown-content a:hover:not(:where(.not-content *)){color:var(--sl-color-white)}.sl-markdown-content code:not(:where(.not-content *)){background-color:var(--sl-color-bg-inline-code);margin-block:-.125rem;padding:.125rem .375rem;font-size:var(--sl-text-code-sm)}.sl-markdown-content :is(h1,h2,h3,h4,h5,h6) code{font-size:inherit}.sl-markdown-content pre:not(:where(.not-content *)){border:1px solid var(--sl-color-gray-5);padding:.75rem 1rem;font-size:var(--sl-text-code);-moz-tab-size:2;-o-tab-size:2;tab-size:2}.sl-markdown-content pre code:not(:where(.not-content *)){all:unset;font-family:var(--__sl-font-mono)}.sl-markdown-content blockquote:not(:where(.not-content *)){border-inline-start:1px solid var(--sl-color-gray-5);padding-inline-start:1rem}.sl-markdown-content table:not(:where(.not-content *)){display:block;overflow:auto;border-collapse:collapse}.sl-markdown-content tr:nth-child(2n):not(:where(.not-content *)){background-color:var(--sl-color-gray-7, var(--sl-color-gray-6))}.sl-markdown-content :is(th,td):not(:where(.not-content *)){border:1px solid var(--sl-color-hairline-light);padding:.375rem .8125rem}.sl-markdown-content hr:not(:where(.not-content *)){border:0;border-bottom:1px solid var(--sl-color-hairline)}[data-mobile-menu-expanded]{overflow:hidden}@media (min-width: 50rem){[data-mobile-menu-expanded]{overflow:auto}}button:where(.astro-ejvijwat){position:fixed;top:calc((var(--sl-nav-height) - var(--sl-menu-button-size)) / 2);inset-inline-end:var(--sl-nav-pad-x);z-index:var(--sl-z-index-navbar);border:0;border-radius:50%;width:var(--sl-menu-button-size);height:var(--sl-menu-button-size);padding:.5rem;background-color:var(--sl-color-white);color:var(--sl-color-black);box-shadow:var(--sl-shadow-md);cursor:pointer}:where(.astro-ejvijwat)[aria-expanded=true] button:where(.astro-ejvijwat){background-color:var(--sl-color-gray-2);box-shadow:none}[data-theme=light] button:where(.astro-ejvijwat){background-color:var(--sl-color-black);color:var(--sl-color-white)}[data-theme=light] :where(.astro-ejvijwat)[aria-expanded=true] button:where(.astro-ejvijwat){background-color:var(--sl-color-gray-5)}.page:where(.astro-rib273cq){flex-direction:column;min-height:100vh}.header:where(.astro-rib273cq){z-index:var(--sl-z-index-navbar);position:fixed;inset-inline-start:0;inset-block-start:0;width:100%;height:var(--sl-nav-height);border-bottom:1px solid var(--sl-color-hairline-shade);padding:var(--sl-nav-pad-y) var(--sl-nav-pad-x);padding-inline-end:var(--sl-nav-pad-x);background-color:var(--sl-color-bg-nav)}[data-has-sidebar] .header:where(.astro-rib273cq){padding-inline-end:calc(var(--sl-nav-gap) + var(--sl-nav-pad-x) + var(--sl-menu-button-size))}.sidebar-pane:where(.astro-rib273cq){visibility:var(--sl-sidebar-visibility, hidden);position:fixed;z-index:var(--sl-z-index-menu);inset-block:var(--sl-nav-height) 0;inset-inline-start:0;width:100%;background-color:var(--sl-color-black);overflow-y:auto}[aria-expanded=true]~.sidebar-pane:where(.astro-rib273cq){--sl-sidebar-visibility: visible}.sidebar-content:where(.astro-rib273cq){height:100%;min-height:-moz-max-content;min-height:max-content;padding:1rem var(--sl-sidebar-pad-x) 0;flex-direction:column;gap:1rem}@media (min-width: 50rem){.sidebar-content:where(.astro-rib273cq):after{content:"";padding-bottom:1px}}.main-frame:where(.astro-rib273cq){padding-top:calc(var(--sl-nav-height) + var(--sl-mobile-toc-height));padding-inline-start:var(--sl-content-inline-start)}@media (min-width: 50rem){[data-has-sidebar] .header:where(.astro-rib273cq){padding-inline-end:var(--sl-nav-pad-x)}.sidebar-pane:where(.astro-rib273cq){--sl-sidebar-visibility: visible;width:var(--sl-sidebar-width);background-color:var(--sl-color-bg-sidebar);border-inline-end:1px solid var(--sl-color-hairline-shade)}}ul:where(.astro-lbtmlupc){padding:0;list-style:none}a:where(.astro-lbtmlupc){--pad-inline: .5rem;display:block;border-radius:.25rem;padding-block:.25rem;padding-inline:calc(1rem * var(--depth) + var(--pad-inline)) var(--pad-inline);line-height:1.25}a:where(.astro-lbtmlupc)[aria-current=true]{color:var(--sl-color-text-accent)}.isMobile:where(.astro-lbtmlupc) a:where(.astro-lbtmlupc){--pad-inline: 1rem;display:flex;justify-content:space-between;gap:var(--pad-inline);border-top:1px solid var(--sl-color-gray-6);border-radius:0;padding-block:.5rem;color:var(--sl-color-text);font-size:var(--sl-text-sm);text-decoration:none;outline-offset:var(--sl-outline-offset-inside)}.isMobile:where(.astro-lbtmlupc):first-child>li:where(.astro-lbtmlupc):first-child>a:where(.astro-lbtmlupc){border-top:0}.isMobile:where(.astro-lbtmlupc) a:where(.astro-lbtmlupc)[aria-current=true],.isMobile:where(.astro-lbtmlupc) a:where(.astro-lbtmlupc)[aria-current=true]:hover,.isMobile:where(.astro-lbtmlupc) a:where(.astro-lbtmlupc)[aria-current=true]:focus{color:var(--sl-color-white);background-color:unset}.isMobile:where(.astro-lbtmlupc) a:where(.astro-lbtmlupc)[aria-current=true]:after{content:"";width:1rem;background-color:var(--sl-color-text-accent);-webkit-mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxNCAxNCc+PHBhdGggZD0nTTEwLjkxNCA0LjIwNmEuNTgzLjU4MyAwIDAgMC0uODI4IDBMNS43NCA4LjU1NyAzLjkxNCA2LjcyNmEuNTk2LjU5NiAwIDAgMC0uODI4Ljg1N2wyLjI0IDIuMjRhLjU4My41ODMgMCAwIDAgLjgyOCAwbDQuNzYtNC43NmEuNTgzLjU4MyAwIDAgMCAwLS44NTdaJy8+PC9zdmc+Cg==);mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxNCAxNCc+PHBhdGggZD0nTTEwLjkxNCA0LjIwNmEuNTgzLjU4MyAwIDAgMC0uODI4IDBMNS43NCA4LjU1NyAzLjkxNCA2LjcyNmEuNTk2LjU5NiAwIDAgMC0uODI4Ljg1N2wyLjI0IDIuMjRhLjU4My41ODMgMCAwIDAgLjgyOCAwbDQuNzYtNC43NmEuNTgzLjU4MyAwIDAgMCAwLS44NTdaJy8+PC9zdmc+Cg==);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;flex-shrink:0}nav:where(.astro-kasrnjty){position:fixed;z-index:var(--sl-z-index-toc);top:calc(var(--sl-nav-height) - 1px);inset-inline:0;border-top:1px solid var(--sl-color-gray-5);background-color:var(--sl-color-bg-nav)}@media (min-width: 50rem){nav:where(.astro-kasrnjty){inset-inline-start:var(--sl-content-inline-start, 0)}}summary:where(.astro-kasrnjty){gap:.5rem;align-items:center;height:var(--sl-mobile-toc-height);border-bottom:1px solid var(--sl-color-hairline-shade);padding:.5rem 1rem;font-size:var(--sl-text-xs);outline-offset:var(--sl-outline-offset-inside)}summary:where(.astro-kasrnjty)::marker,summary:where(.astro-kasrnjty)::-webkit-details-marker{display:none}.toggle:where(.astro-kasrnjty){flex-shrink:0;gap:1rem;align-items:center;justify-content:space-between;border:1px solid var(--sl-color-gray-5);border-radius:.5rem;padding-block:.5rem;padding-inline-start:.75rem;padding-inline-end:.5rem;line-height:1;background-color:var(--sl-color-black);-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer}details:where(.astro-kasrnjty)[open] .toggle:where(.astro-kasrnjty){color:var(--sl-color-white);border-color:var(--sl-color-accent)}details:where(.astro-kasrnjty) .toggle:where(.astro-kasrnjty):hover{color:var(--sl-color-white);border-color:var(--sl-color-gray-2)}[dir=rtl] .caret:where(.astro-kasrnjty){transform:rotate(180deg)}details:where(.astro-kasrnjty)[open] .caret:where(.astro-kasrnjty){transform:rotate(90deg)}.display-current:where(.astro-kasrnjty){white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:var(--sl-color-white)}.dropdown:where(.astro-kasrnjty){--border-top: 1px;margin-top:calc(-1 * var(--border-top));border:var(--border-top) solid var(--sl-color-gray-6);border-top-color:var(--sl-color-hairline-shade);max-height:calc(85vh - var(--sl-nav-height) - var(--sl-mobile-toc-height));overflow-y:auto;background-color:var(--sl-color-black);box-shadow:var(--sl-shadow-md);overscroll-behavior:contain}.right-sidebar-panel:where(.astro-vk4uk6yc){padding:1rem var(--sl-sidebar-pad-x)}.sl-container:where(.astro-vk4uk6yc){width:calc(var(--sl-sidebar-width) - 2 * var(--sl-sidebar-pad-x))}.right-sidebar-panel:where(.astro-vk4uk6yc) h2{color:var(--sl-color-white);font-size:var(--sl-text-h5);font-weight:600;line-height:var(--sl-line-height-headings);margin-bottom:.5rem}.right-sidebar-panel:where(.astro-vk4uk6yc) :where(a){display:block;font-size:var(--sl-text-xs);text-decoration:none;color:var(--sl-color-gray-3);overflow-wrap:anywhere}.right-sidebar-panel:where(.astro-vk4uk6yc) :where(a):hover{color:var(--sl-color-white)}@media (min-width: 72rem){.sl-container:where(.astro-vk4uk6yc){max-width:calc(((100vw - var(--sl-sidebar-width) - 2 * var(--sl-content-pad-x) - 2 * var(--sl-sidebar-pad-x)) * .25))}}h1:where(.astro-wialidfn){margin-top:1rem;font-size:var(--sl-text-h1);line-height:var(--sl-line-height-headings);font-weight:600;color:var(--sl-color-white)}.social-icons:where(.astro-onxez57s){margin-inline-end:auto;gap:1rem;align-items:center;padding-block:1rem}.social-icons:where(.astro-onxez57s):empty{display:none}.mobile-preferences:where(.astro-onxez57s){justify-content:space-between;flex-wrap:wrap;border-top:1px solid var(--sl-color-gray-6);-moz-column-gap:1rem;column-gap:1rem;padding:.5rem 0}.sl-badge:where(.astro-veszcqzm){display:inline-block;border:1px solid var(--sl-color-border-badge);border-radius:.25rem;font-family:var(--sl-font-system-mono);font-size:var(--sl-text-xs);font-weight:400;padding:.125rem .375rem;line-height:1;color:#fff;background-color:var(--sl-color-bg-badge);overflow-wrap:anywhere}.outline:where(.astro-veszcqzm){--sl-color-bg-badge: transparent;--sl-color-border-badge: currentColor;color:inherit}.default:where(.astro-veszcqzm){--sl-color-bg-badge: var(--sl-color-accent-low);--sl-color-border-badge: var(--sl-color-accent)}.note:where(.astro-veszcqzm){--sl-color-bg-badge: var(--sl-color-blue-low);--sl-color-border-badge: var(--sl-color-blue)}.danger:where(.astro-veszcqzm){--sl-color-bg-badge: var(--sl-color-red-low);--sl-color-border-badge: var(--sl-color-red)}.success:where(.astro-veszcqzm){--sl-color-bg-badge: var(--sl-color-green-low);--sl-color-border-badge: var(--sl-color-green)}.caution:where(.astro-veszcqzm){--sl-color-bg-badge: var(--sl-color-orange-low);--sl-color-border-badge: var(--sl-color-orange)}.tip:where(.astro-veszcqzm){--sl-color-bg-badge: var(--sl-color-purple-low);--sl-color-border-badge: var(--sl-color-purple)}[data-theme=light] .default:where(.astro-veszcqzm){--sl-color-bg-badge: var(--sl-color-accent-high)}[data-theme=light] .note:where(.astro-veszcqzm){--sl-color-bg-badge: var(--sl-color-blue-high)}[data-theme=light] .danger:where(.astro-veszcqzm){--sl-color-bg-badge: var(--sl-color-red-high)}[data-theme=light] .success:where(.astro-veszcqzm){--sl-color-bg-badge: var(--sl-color-green-high)}[data-theme=light] .caution:where(.astro-veszcqzm){--sl-color-bg-badge: var(--sl-color-orange-high)}[data-theme=light] .tip:where(.astro-veszcqzm){--sl-color-bg-badge: var(--sl-color-purple-high)}ul:where(.astro-jonmkgg4){--sl-sidebar-item-padding-inline: .5rem;list-style:none;padding:0}li:where(.astro-jonmkgg4){overflow-wrap:anywhere}ul:where(.astro-jonmkgg4) ul:where(.astro-jonmkgg4) li:where(.astro-jonmkgg4){margin-inline-start:var(--sl-sidebar-item-padding-inline);border-inline-start:1px solid var(--sl-color-hairline-light);padding-inline-start:var(--sl-sidebar-item-padding-inline)}.large:where(.astro-jonmkgg4){font-size:var(--sl-text-lg);font-weight:600;color:var(--sl-color-white)}.top-level:where(.astro-jonmkgg4)>li:where(.astro-jonmkgg4)+li:where(.astro-jonmkgg4){margin-top:.75rem}summary:where(.astro-jonmkgg4){display:flex;align-items:center;justify-content:space-between;padding:.2em var(--sl-sidebar-item-padding-inline);line-height:1.4;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}summary:where(.astro-jonmkgg4)::marker,summary:where(.astro-jonmkgg4)::-webkit-details-marker{display:none}.caret:where(.astro-jonmkgg4){transition:transform .2s ease-in-out;flex-shrink:0}[dir=rtl] .caret:where(.astro-jonmkgg4){transform:rotate(180deg)}:where(.astro-jonmkgg4)[open]>summary:where(.astro-jonmkgg4) .caret:where(.astro-jonmkgg4){transform:rotate(90deg)}a:where(.astro-jonmkgg4){display:block;border-radius:.25rem;text-decoration:none;color:var(--sl-color-gray-2);padding:.3em var(--sl-sidebar-item-padding-inline);line-height:1.4}a:where(.astro-jonmkgg4):hover,a:where(.astro-jonmkgg4):focus{color:var(--sl-color-white)}:where(.astro-jonmkgg4)[aria-current=page],:where(.astro-jonmkgg4)[aria-current=page]:hover,:where(.astro-jonmkgg4)[aria-current=page]:focus{font-weight:600;color:var(--sl-color-text-invert);background-color:var(--sl-color-text-accent)}a:where(.astro-jonmkgg4)>:where(.astro-jonmkgg4):not(:last-child),.group-label:where(.astro-jonmkgg4)>:where(.astro-jonmkgg4):not(:last-child){margin-inline-end:.25em}@media (min-width: 50rem){.top-level:where(.astro-jonmkgg4)>li:where(.astro-jonmkgg4)+li:where(.astro-jonmkgg4){margin-top:.5rem}.large:where(.astro-jonmkgg4){font-size:var(--sl-text-base)}a:where(.astro-jonmkgg4){font-size:var(--sl-text-sm)}}a:where(.astro-tm2lbyo3){clip:rect(0,0,0,0);position:fixed;top:.75rem;inset-inline-start:.75rem}a:where(.astro-tm2lbyo3):focus{clip:unset;z-index:var(--sl-z-index-skiplink);display:block;padding:.5rem 1rem;text-decoration:none;color:var(--sl-color-text-invert);background-color:var(--sl-color-text-accent);box-shadow:var(--sl-shadow-lg)}.main-pane:where(.astro-aewvovs2){isolation:isolate}@media (min-width: 72rem){.right-sidebar-container:where(.astro-aewvovs2){order:2;position:relative;width:calc(var(--sl-sidebar-width) + (100% - var(--sl-content-width) - var(--sl-sidebar-width)) / 2)}.right-sidebar:where(.astro-aewvovs2){position:fixed;top:0;border-inline-start:1px solid var(--sl-color-gray-6);padding-top:var(--sl-nav-height);width:100%;height:100vh;overflow-y:auto;scrollbar-width:none}.main-pane:where(.astro-aewvovs2){width:100%}[data-has-sidebar][data-has-toc] .main-pane:where(.astro-aewvovs2){--sl-content-margin-inline: auto 0;order:1;width:calc(var(--sl-content-width) + (100% - var(--sl-content-width) - var(--sl-sidebar-width)) / 2)}}.starlight-aside{padding:1rem;border-inline-start:.25rem solid;color:var(--sl-color-white)}.starlight-aside--note{--sl-color-asides-text-accent: var(--sl-color-blue-high);border-color:var(--sl-color-blue);background-color:var(--sl-color-blue-low)}.starlight-aside--tip{--sl-color-asides-text-accent: var(--sl-color-purple-high);border-color:var(--sl-color-purple);background-color:var(--sl-color-purple-low)}.starlight-aside--caution{--sl-color-asides-text-accent: var(--sl-color-orange-high);border-color:var(--sl-color-orange);background-color:var(--sl-color-orange-low)}.starlight-aside--danger{--sl-color-asides-text-accent: var(--sl-color-red-high);border-color:var(--sl-color-red);background-color:var(--sl-color-red-low)}.starlight-aside__title{display:flex;gap:.5rem;align-items:center;font-size:var(--sl-text-h5);font-weight:600;line-height:var(--sl-line-height-headings);color:var(--sl-color-asides-text-accent)}.starlight-aside__icon{font-size:1.333em;width:1em;height:1em}.starlight-aside__title+.starlight-aside__content{margin-top:.5rem}.starlight-aside__content a{color:var(--sl-color-asides-text-accent)}*,:before,:after{border-width:0;border-style:solid;border-color:#e4e4e7}:before,:after{--tw-content: }:root{--sl-font: "Inter Variable";--sl-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--sl-color-white: #fff;--sl-color-gray-1: #e4e4e7;--sl-color-gray-2: #d4d4d8;--sl-color-gray-3: #a1a1aa;--sl-color-gray-4: #52525b;--sl-color-gray-5: #3f3f46;--sl-color-gray-6: #27272a;--sl-color-black: #18181b;--sl-color-accent-low: #431407;--sl-color-accent: #ea580c;--sl-color-accent-high: #fed7aa}:root[data-theme=light]{--sl-color-white: #18181b;--sl-color-gray-1: #27272a;--sl-color-gray-2: #3f3f46;--sl-color-gray-3: #71717a;--sl-color-gray-4: #a1a1aa;--sl-color-gray-5: #d4d4d8;--sl-color-gray-6: #e4e4e7;--sl-color-gray-7: #f4f4f5;--sl-color-black: #fff;--sl-color-accent-low: #fed7aa;--sl-color-accent: #ea580c;--sl-color-accent-high: #7c2d12}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.block{display:block}.inline{display:inline}.flex{display:flex}.table{display:table}.contents{display:contents}.hidden{display:none}.flex-shrink{flex-shrink:1}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.flex-wrap{flex-wrap:wrap}.border{border-width:1px}.text-center{text-align:center}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}@media (min-width: 1024px){.lg\:grid{display:grid}.lg\:grid-cols-hero{grid-template-columns:7fr 4fr}.lg\:gap-5{gap:1.25rem}.lg\:text-left{text-align:left}}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/pr-preview/pr-1029/_astro/inter-cyrillic-ext-wght-normal.DIEz8p5i.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/pr-preview/pr-1029/_astro/inter-cyrillic-wght-normal.BmJJXa8e.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/pr-preview/pr-1029/_astro/inter-greek-ext-wght-normal.D5AYLNiq.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/pr-preview/pr-1029/_astro/inter-greek-wght-normal.DyIDNIyN.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/pr-preview/pr-1029/_astro/inter-vietnamese-wght-normal._GQuwPVU.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/pr-preview/pr-1029/_astro/inter-latin-ext-wght-normal.CN1pIXkb.woff2) format("woff2-variations");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/pr-preview/pr-1029/_astro/inter-latin-wght-normal.BgVq2Tq4.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}html:not([data-has-toc]){--sl-mobile-toc-height: 0rem}html:not([data-has-sidebar]){--sl-content-width: 67.5rem}html{scroll-padding-top:calc(1.5rem + var(--sl-nav-height) + var(--sl-mobile-toc-height))}main:where(.astro-iacrz2qi){padding-bottom:3vh}@media (min-width: 50em){:where(.astro-iacrz2qi)[data-has-sidebar]{--sl-content-inline-start: var(--sl-sidebar-width)}}@media (min-width: 72em){html{scroll-padding-top:calc(1.5rem + var(--sl-nav-height))}} diff --git a/pr-preview/pr-1029/_astro/inter-cyrillic-ext-wght-normal.DIEz8p5i.woff2 b/pr-preview/pr-1029/_astro/inter-cyrillic-ext-wght-normal.DIEz8p5i.woff2 new file mode 100644 index 000000000..a61a0be57 Binary files /dev/null and b/pr-preview/pr-1029/_astro/inter-cyrillic-ext-wght-normal.DIEz8p5i.woff2 differ diff --git a/pr-preview/pr-1029/_astro/inter-cyrillic-wght-normal.BmJJXa8e.woff2 b/pr-preview/pr-1029/_astro/inter-cyrillic-wght-normal.BmJJXa8e.woff2 new file mode 100644 index 000000000..b655a4388 Binary files /dev/null and b/pr-preview/pr-1029/_astro/inter-cyrillic-wght-normal.BmJJXa8e.woff2 differ diff --git a/pr-preview/pr-1029/_astro/inter-greek-ext-wght-normal.D5AYLNiq.woff2 b/pr-preview/pr-1029/_astro/inter-greek-ext-wght-normal.D5AYLNiq.woff2 new file mode 100644 index 000000000..9117b5b04 Binary files /dev/null and b/pr-preview/pr-1029/_astro/inter-greek-ext-wght-normal.D5AYLNiq.woff2 differ diff --git a/pr-preview/pr-1029/_astro/inter-greek-wght-normal.DyIDNIyN.woff2 b/pr-preview/pr-1029/_astro/inter-greek-wght-normal.DyIDNIyN.woff2 new file mode 100644 index 000000000..eb38b38ea Binary files /dev/null and b/pr-preview/pr-1029/_astro/inter-greek-wght-normal.DyIDNIyN.woff2 differ diff --git a/pr-preview/pr-1029/_astro/inter-latin-ext-wght-normal.CN1pIXkb.woff2 b/pr-preview/pr-1029/_astro/inter-latin-ext-wght-normal.CN1pIXkb.woff2 new file mode 100644 index 000000000..3df865d7f Binary files /dev/null and b/pr-preview/pr-1029/_astro/inter-latin-ext-wght-normal.CN1pIXkb.woff2 differ diff --git a/pr-preview/pr-1029/_astro/inter-latin-wght-normal.BgVq2Tq4.woff2 b/pr-preview/pr-1029/_astro/inter-latin-wght-normal.BgVq2Tq4.woff2 new file mode 100644 index 000000000..40255432a Binary files /dev/null and b/pr-preview/pr-1029/_astro/inter-latin-wght-normal.BgVq2Tq4.woff2 differ diff --git a/pr-preview/pr-1029/_astro/inter-vietnamese-wght-normal._GQuwPVU.woff2 b/pr-preview/pr-1029/_astro/inter-vietnamese-wght-normal._GQuwPVU.woff2 new file mode 100644 index 000000000..ce21ca172 Binary files /dev/null and b/pr-preview/pr-1029/_astro/inter-vietnamese-wght-normal._GQuwPVU.woff2 differ diff --git a/pr-preview/pr-1029/_astro/logo.D9L7aiSf.svg b/pr-preview/pr-1029/_astro/logo.D9L7aiSf.svg new file mode 100644 index 000000000..a58214778 --- /dev/null +++ b/pr-preview/pr-1029/_astro/logo.D9L7aiSf.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + diff --git a/pr-preview/pr-1029/_astro/page.LS5KDvwX.js b/pr-preview/pr-1029/_astro/page.LS5KDvwX.js new file mode 100644 index 000000000..f8839f120 --- /dev/null +++ b/pr-preview/pr-1029/_astro/page.LS5KDvwX.js @@ -0,0 +1 @@ +const d=new Set,c=new WeakSet;let f=!0,h,l=!1;function v(e){l||(l=!0,f??=!1,h??="hover",g(),p(),w(),L())}function g(){for(const e of["touchstart","mousedown"])document.body.addEventListener(e,t=>{i(t.target,"tap")&&s(t.target.href,{ignoreSlowConnection:!0})},{passive:!0})}function p(){let e;document.body.addEventListener("focusin",n=>{i(n.target,"hover")&&t(n)},{passive:!0}),document.body.addEventListener("focusout",o,{passive:!0}),u(()=>{for(const n of document.getElementsByTagName("a"))c.has(n)||i(n,"hover")&&(c.add(n),n.addEventListener("mouseenter",t,{passive:!0}),n.addEventListener("mouseleave",o,{passive:!0}))});function t(n){const r=n.target.href;e&&clearTimeout(e),e=setTimeout(()=>{s(r)},80)}function o(){e&&(clearTimeout(e),e=0)}}function w(){let e;u(()=>{for(const t of document.getElementsByTagName("a"))c.has(t)||i(t,"viewport")&&(c.add(t),e??=y(),e.observe(t))})}function y(){const e=new WeakMap;return new IntersectionObserver((t,o)=>{for(const n of t){const r=n.target,a=e.get(r);n.isIntersecting?(a&&clearTimeout(a),e.set(r,setTimeout(()=>{o.unobserve(r),e.delete(r),s(r.href)},300))):a&&(clearTimeout(a),e.delete(r))}})}function L(){u(()=>{for(const e of document.getElementsByTagName("a"))i(e,"load")&&s(e.href)})}function s(e,t){const o=t?.ignoreSlowConnection??!1;if(S(e,o))if(d.add(e),document.createElement("link").relList?.supports?.("prefetch")&&t?.with!=="fetch"){const n=document.createElement("link");n.rel="prefetch",n.setAttribute("href",e),document.head.append(n)}else fetch(e,{priority:"low"})}function S(e,t){if(!navigator.onLine||!t&&m())return!1;try{const o=new URL(e,location.href);return location.origin===o.origin&&(location.pathname!==o.pathname||location.search!==o.search)&&!d.has(e)}catch{}return!1}function i(e,t){if(e?.tagName!=="A")return!1;const o=e.dataset.astroPrefetch;return o==="false"?!1:t==="tap"&&(o!=null||f)&&m()?!0:o==null&&f||o===""?t===h:o===t}function m(){if("connection"in navigator){const e=navigator.connection;return e.saveData||/2g/.test(e.effectiveType)}return!1}function u(e){e();let t=!1;document.addEventListener("astro:page-load",()=>{if(!t){t=!0;return}e()})}v(); diff --git a/pr-preview/pr-1029/_astro/ui-core.DM_jDrfI.js b/pr-preview/pr-1029/_astro/ui-core.DM_jDrfI.js new file mode 100644 index 000000000..135f1e835 --- /dev/null +++ b/pr-preview/pr-1029/_astro/ui-core.DM_jDrfI.js @@ -0,0 +1,2 @@ +import{_ as xs}from"./hoisted.oqOUE2R1.js";import"./Tabs.astro_astro_type_script_index_0_lang.CCIyraCc.js";var qs=Object.defineProperty,F=(e,t)=>{for(var u in t)qs(e,u,{get:t[u],enumerable:!0})};function L(){}function hu(e){return e()}function ye(){return Object.create(null)}function J(e){e.forEach(hu)}function mu(e){return typeof e=="function"}function fe(e,t){return e!=e?t==t:e!==t||e&&typeof e=="object"||typeof e=="function"}var oe;function ce(e,t){return oe||(oe=document.createElement("a")),oe.href=t,e===oe.href}function Vs(e){return Object.keys(e).length===0}function A(e,t){e.appendChild(t)}function T(e,t,u){e.insertBefore(t,u||null)}function v(e){e.parentNode&&e.parentNode.removeChild(e)}function ie(e,t){for(let u=0;ue.removeEventListener(t,u,r)}function g(e,t,u){u==null?e.removeAttribute(t):e.getAttribute(t)!==u&&e.setAttribute(t,u)}function Gs(e){return Array.from(e.childNodes)}function j(e,t){t=""+t,e.data!==t&&(e.data=t)}function ze(e,t){e.value=t??""}function K(e,t,u){e.classList[u?"add":"remove"](t)}var Ws=class{constructor(e=!1){this.is_svg=!1,this.is_svg=e,this.e=this.n=null}c(e){this.h(e)}m(e,t,u=null){this.e||(this.is_svg?this.e=Ks(t.nodeName):this.e=p(t.nodeType===11?"TEMPLATE":t.nodeName),this.t=t.tagName!=="TEMPLATE"?t:t.content,this.c(e)),this.i(u)}h(e){this.e.innerHTML=e,this.n=Array.from(this.e.nodeName==="TEMPLATE"?this.e.content.childNodes:this.e.childNodes)}i(e){for(let t=0;te.indexOf(r)===-1?t.push(r):u.push(r)),u.forEach(r=>r()),$=t}var _e=new Set,W;function ae(){W={r:0,c:[],p:W}}function ne(){W.r||J(W.c),W=W.p}function z(e,t){e&&e.i&&(_e.delete(e),e.i(t))}function U(e,t,u,r){if(e&&e.o){if(_e.has(e))return;_e.add(e),W.c.push(()=>{_e.delete(e),r&&(u&&e.d(1),r())}),e.o(t)}else r&&r()}function ul(e,t){U(e,1,1,()=>{t.delete(e.key)})}function tl(e,t,u,r,s,l,a,n,i,d,_,h){let m=e.length,f=l.length,c=m;const o={};for(;c--;)o[e[c].key]=c;const E=[],B=new Map,R=new Map,k=[];for(c=f;c--;){const b=h(s,l,c),D=u(b);let w=a.get(D);w?k.push(()=>w.p(b,t)):(w=d(D,b),w.c()),B.set(D,E[c]=w),D in o&&R.set(D,Math.abs(c-o[D]))}const y=new Set,q=new Set;function P(b){z(b,1),b.m(n,_),a.set(b.key,b),_=b.first,f--}for(;m&&f;){const b=E[f-1],D=e[m-1],w=b.key,x=D.key;b===D?(_=b.first,m--,f--):B.has(x)?!a.has(w)||y.has(w)?P(b):q.has(x)?m--:R.get(w)>R.get(x)?(q.add(w),P(b)):(y.add(x),m--):(i(D,a),m--)}for(;m--;){const b=e[m];B.has(b.key)||i(b,a)}for(;f;)P(E[f-1]);return J(k),E}function rl(e,t,u){const r=e.$$.props[t];r!==void 0&&(e.$$.bound[r]=u,u(e.$$.ctx[r]))}function ke(e){e&&e.c()}function Ee(e,t,u,r){const{fragment:s,after_update:l}=e.$$;s&&s.m(t,u),r||Te(()=>{const a=e.$$.on_mount.map(hu).filter(mu);e.$$.on_destroy?e.$$.on_destroy.push(...a):J(a),e.$$.on_mount=[]}),l.forEach(Te)}function de(e,t){const u=e.$$;u.fragment!==null&&(el(u.after_update),J(u.on_destroy),u.fragment&&u.fragment.d(t),u.on_destroy=u.fragment=null,u.ctx=[])}function sl(e,t){e.$$.dirty[0]===-1&&(X.push(e),Xs(),e.$$.dirty.fill(0)),e.$$.dirty[t/31|0]|=1<{const c=f.length?f[0]:m;return d.ctx&&s(d.ctx[h],d.ctx[h]=c)&&(!d.skip_bound&&d.bound[h]&&d.bound[h](c),_&&sl(e,h)),m}):[],d.update(),_=!0,J(d.before_update),d.fragment=r?r(d.ctx):!1,t.target){if(t.hydrate){const h=Gs(t.target);d.fragment&&d.fragment.l(h),h.forEach(v)}else d.fragment&&d.fragment.c();t.intro&&z(e.$$.fragment),Ee(e,t.target,t.anchor,t.customElement),gu()}re(i)}var me=class{$destroy(){de(this,1),this.$destroy=L}$on(e,t){if(!mu(t))return L;const u=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return u.push(t),()=>{const r=u.indexOf(t);r!==-1&&u.splice(r,1)}}$set(e){this.$$set&&!Vs(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}};function O(e){const t=typeof e=="string"?e.charCodeAt(0):e;return t>=97&&t<=122||t>=65&&t<=90}function Q(e){const t=typeof e=="string"?e.charCodeAt(0):e;return t>=48&&t<=57}function V(e){return O(e)||Q(e)}var ll=["art-lojban","cel-gaulish","no-bok","no-nyn","zh-guoyu","zh-hakka","zh-min","zh-min-nan","zh-xiang"],je={"en-gb-oed":"en-GB-oxendict","i-ami":"ami","i-bnn":"bnn","i-default":null,"i-enochian":null,"i-hak":"hak","i-klingon":"tlh","i-lux":"lb","i-mingo":null,"i-navajo":"nv","i-pwn":"pwn","i-tao":"tao","i-tay":"tay","i-tsu":"tsu","sgn-be-fr":"sfb","sgn-be-nl":"vgt","sgn-ch-de":"sgg","art-lojban":"jbo","cel-gaulish":null,"no-bok":"nb","no-nyn":"nn","zh-guoyu":"cmn","zh-hakka":"hak","zh-min":null,"zh-min-nan":"nan","zh-xiang":"hsn"},al={}.hasOwnProperty;function Ru(e,t={}){const u=Oe(),r=String(e),s=r.toLowerCase();let l=0;if(e==null)throw new Error("Expected string, got `"+e+"`");if(al.call(je,s)){const n=je[s];return(t.normalize===void 0||t.normalize===null||t.normalize)&&typeof n=="string"?Ru(n):(u[ll.includes(s)?"regular":"irregular"]=r,u)}for(;O(s.charCodeAt(l))&&l<9;)l++;if(l>1&&l<9){if(u.language=r.slice(0,l),l<4){let n=0;for(;s.charCodeAt(l)===45&&O(s.charCodeAt(l+1))&&O(s.charCodeAt(l+2))&&O(s.charCodeAt(l+3))&&!O(s.charCodeAt(l+4));){if(n>2)return a(l,3,"Too many extended language subtags, expected at most 3 subtags");u.extendedLanguageSubtags.push(r.slice(l+1,l+4)),l+=4,n++}}for(s.charCodeAt(l)===45&&O(s.charCodeAt(l+1))&&O(s.charCodeAt(l+2))&&O(s.charCodeAt(l+3))&&O(s.charCodeAt(l+4))&&!O(s.charCodeAt(l+5))&&(u.script=r.slice(l+1,l+5),l+=5),s.charCodeAt(l)===45&&(O(s.charCodeAt(l+1))&&O(s.charCodeAt(l+2))&&!O(s.charCodeAt(l+3))?(u.region=r.slice(l+1,l+3),l+=3):Q(s.charCodeAt(l+1))&&Q(s.charCodeAt(l+2))&&Q(s.charCodeAt(l+3))&&!Q(s.charCodeAt(l+4))&&(u.region=r.slice(l+1,l+4),l+=4));s.charCodeAt(l)===45;){const n=l+1;let i=n;for(;V(s.charCodeAt(i));){if(i-n>7)return a(i,1,"Too long variant, expected at most 8 characters");i++}if(i-n>4||i-n>3&&Q(s.charCodeAt(n)))u.variants.push(r.slice(n,i)),l=i;else break}for(;s.charCodeAt(l)===45&&!(s.charCodeAt(l+1)===120||!V(s.charCodeAt(l+1))||s.charCodeAt(l+2)!==45||!V(s.charCodeAt(l+3)));){let n=l+2,i=0;for(;s.charCodeAt(n)===45&&V(s.charCodeAt(n+1))&&V(s.charCodeAt(n+2));){const d=n+1;for(n=d+2,i++;V(s.charCodeAt(n));){if(n-d>7)return a(n,2,"Too long extension, expected at most 8 characters");n++}}if(!i)return a(n,4,"Empty extension, extensions must have at least 2 characters of content");u.extensions.push({singleton:r.charAt(l+1),extensions:r.slice(l+3,n).split("-")}),l=n}}else l=0;if(l===0&&s.charCodeAt(l)===120||s.charCodeAt(l)===45&&s.charCodeAt(l+1)===120){l=l?l+2:1;let n=l;for(;s.charCodeAt(n)===45&&V(s.charCodeAt(n+1));){const i=l+1;for(n=i;V(s.charCodeAt(n));){if(n-i>7)return a(n,5,"Too long private-use area, expected at most 8 characters");n++}u.privateuse.push(r.slice(l+1,n)),l=n}}if(l!==r.length)return a(l,6,"Found superfluous content after tag");return u;function a(n,i,d){return t.warning&&t.warning(d,i,n),t.forgiving?u:Oe()}}function Oe(){return{language:null,extendedLanguageSubtags:[],script:null,region:null,variants:[],extensions:[],privateuse:[],irregular:null,regular:null}}function Ue(e,t,u){const r=e.slice();return r[8]=t[u][0],r[9]=t[u][1],r}function nl(e){let t,u,r,s,l,a=e[0]&&Ie();return{c(){a&&a.c(),t=M(),u=p("div"),r=p("p"),r.textContent=`${e[3](30)}`,s=M(),l=p("p"),l.textContent=`${e[3](40)}`,g(r,"class","pagefind-ui__result-title pagefind-ui__loading svelte-j9e30"),g(l,"class","pagefind-ui__result-excerpt pagefind-ui__loading svelte-j9e30"),g(u,"class","pagefind-ui__result-inner svelte-j9e30")},m(n,i){a&&a.m(n,i),T(n,t,i),T(n,u,i),A(u,r),A(u,s),A(u,l)},p(n,i){n[0]?a||(a=Ie(),a.c(),a.m(t.parentNode,t)):a&&(a.d(1),a=null)},d(n){a&&a.d(n),n&&v(t),n&&v(u)}}}function il(e){let t,u,r,s,l=e[1].meta?.title+"",a,n,i,d,_=e[1].excerpt+"",h,m=e[0]&&Le(e),f=e[2].length&&xe(e);return{c(){m&&m.c(),t=M(),u=p("div"),r=p("p"),s=p("a"),a=S(l),i=M(),d=p("p"),h=M(),f&&f.c(),g(s,"class","pagefind-ui__result-link svelte-j9e30"),g(s,"href",n=e[1].meta?.url||e[1].url),g(r,"class","pagefind-ui__result-title svelte-j9e30"),g(d,"class","pagefind-ui__result-excerpt svelte-j9e30"),g(u,"class","pagefind-ui__result-inner svelte-j9e30")},m(c,o){m&&m.m(c,o),T(c,t,o),T(c,u,o),A(u,r),A(r,s),A(s,a),A(u,i),A(u,d),d.innerHTML=_,A(u,h),f&&f.m(u,null)},p(c,o){c[0]?m?m.p(c,o):(m=Le(c),m.c(),m.m(t.parentNode,t)):m&&(m.d(1),m=null),o&2&&l!==(l=c[1].meta?.title+"")&&j(a,l),o&2&&n!==(n=c[1].meta?.url||c[1].url)&&g(s,"href",n),o&2&&_!==(_=c[1].excerpt+"")&&(d.innerHTML=_),c[2].length?f?f.p(c,o):(f=xe(c),f.c(),f.m(u,null)):f&&(f.d(1),f=null)},d(c){m&&m.d(c),c&&v(t),c&&v(u),f&&f.d()}}}function Ie(e){let t;return{c(){t=p("div"),g(t,"class","pagefind-ui__result-thumb pagefind-ui__loading svelte-j9e30")},m(u,r){T(u,t,r)},d(u){u&&v(t)}}}function Le(e){let t,u=e[1].meta.image&&Pe(e);return{c(){t=p("div"),u&&u.c(),g(t,"class","pagefind-ui__result-thumb svelte-j9e30")},m(r,s){T(r,t,s),u&&u.m(t,null)},p(r,s){r[1].meta.image?u?u.p(r,s):(u=Pe(r),u.c(),u.m(t,null)):u&&(u.d(1),u=null)},d(r){r&&v(t),u&&u.d()}}}function Pe(e){let t,u,r;return{c(){t=p("img"),g(t,"class","pagefind-ui__result-image svelte-j9e30"),ce(t.src,u=e[1].meta?.image)||g(t,"src",u),g(t,"alt",r=e[1].meta?.image_alt||e[1].meta?.title)},m(s,l){T(s,t,l)},p(s,l){l&2&&!ce(t.src,u=s[1].meta?.image)&&g(t,"src",u),l&2&&r!==(r=s[1].meta?.image_alt||s[1].meta?.title)&&g(t,"alt",r)},d(s){s&&v(t)}}}function xe(e){let t,u=e[2],r=[];for(let s=0;se.toLocaleUpperCase();function _l(e,t,u){let{show_images:r=!0}=t,{process_result:s=null}=t,{result:l={data:async()=>{}}}=t;const a=["title","image","image_alt","url"];let n,i=[];const d=async h=>{u(1,n=await h.data()),u(1,n=s?.(n)??n),u(2,i=Object.entries(n.meta).filter(([m])=>!a.includes(m)))},_=(h=30)=>". ".repeat(Math.floor(10+Math.random()*h));return e.$$set=h=>{"show_images"in h&&u(0,r=h.show_images),"process_result"in h&&u(4,s=h.process_result),"result"in h&&u(5,l=h.result)},e.$$.update=()=>{e.$$.dirty&32&&d(l)},[r,n,i,_,s,l]}var cl=class extends me{constructor(e){super(),he(this,e,_l,ol,fe,{show_images:0,process_result:4,result:5})}},fl=cl;function Ke(e,t,u){const r=e.slice();return r[11]=t[u][0],r[12]=t[u][1],r}function Ge(e,t,u){const r=e.slice();return r[15]=t[u],r}function El(e){let t,u,r,s,l,a=e[0]&&We();return{c(){a&&a.c(),t=M(),u=p("div"),r=p("p"),r.textContent=`${e[5](30)}`,s=M(),l=p("p"),l.textContent=`${e[5](40)}`,g(r,"class","pagefind-ui__result-title pagefind-ui__loading svelte-4xnkmf"),g(l,"class","pagefind-ui__result-excerpt pagefind-ui__loading svelte-4xnkmf"),g(u,"class","pagefind-ui__result-inner svelte-4xnkmf")},m(n,i){a&&a.m(n,i),T(n,t,i),T(n,u,i),A(u,r),A(u,s),A(u,l)},p(n,i){n[0]?a||(a=We(),a.c(),a.m(t.parentNode,t)):a&&(a.d(1),a=null)},d(n){a&&a.d(n),n&&v(t),n&&v(u)}}}function dl(e){let t,u,r,s,l=e[1].meta?.title+"",a,n,i,d,_,h=e[0]&&Je(e),m=e[4]&&Ye(e),f=e[3],c=[];for(let E=0;Ee.toLocaleUpperCase();function ml(e,t,u){let{show_images:r=!0}=t,{process_result:s=null}=t,{result:l={data:async()=>{}}}=t;const a=["title","image","image_alt","url"];let n,i=[],d=[],_=!1;const h=(c,o)=>{if(c.length<=o)return c;const E=[...c].sort((B,R)=>R.locations.length-B.locations.length).slice(0,3).map(B=>B.url);return c.filter(B=>E.includes(B.url))},m=async c=>{u(1,n=await c.data()),u(1,n=s?.(n)??n),u(2,i=Object.entries(n.meta).filter(([o])=>!a.includes(o))),Array.isArray(n.sub_results)&&(u(4,_=n.sub_results?.[0]?.url===(n.meta?.url||n.url)),_?u(3,d=h(n.sub_results.slice(1),3)):u(3,d=h([...n.sub_results],3)))},f=(c=30)=>". ".repeat(Math.floor(10+Math.random()*c));return e.$$set=c=>{"show_images"in c&&u(0,r=c.show_images),"process_result"in c&&u(6,s=c.process_result),"result"in c&&u(7,l=c.result)},e.$$.update=()=>{e.$$.dirty&128&&m(l)},[r,n,i,d,_,f,s,l]}var Cl=class extends me{constructor(e){super(),he(this,e,ml,hl,fe,{show_images:0,process_result:6,result:7})}},gl=Cl;function uu(e,t,u){const r=e.slice();return r[10]=t[u][0],r[11]=t[u][1],r[12]=t,r[13]=u,r}function tu(e,t,u){const r=e.slice();return r[14]=t[u][0],r[15]=t[u][1],r[16]=t,r[17]=u,r}function ru(e){let t,u,r=e[4]("filters_label",e[5],e[6])+"",s,l,a=Object.entries(e[1]),n=[];for(let i=0;ie.toLocaleUpperCase(),iu=e=>e.toLowerCase();function Bl(e,t,u){let{available_filters:r=null}=t,{show_empty_filters:s=!0}=t,{open_filters:l=[]}=t,{translate:a=()=>""}=t,{automatic_translations:n={}}=t,{translations:i={}}=t,{selected_filters:d={}}=t,_=!1,h=!1;function m(f,c){d[`${f}:${c}`]=this.checked,u(0,d)}return e.$$set=f=>{"available_filters"in f&&u(1,r=f.available_filters),"show_empty_filters"in f&&u(2,s=f.show_empty_filters),"open_filters"in f&&u(3,l=f.open_filters),"translate"in f&&u(4,a=f.translate),"automatic_translations"in f&&u(5,n=f.automatic_translations),"translations"in f&&u(6,i=f.translations),"selected_filters"in f&&u(0,d=f.selected_filters)},e.$$.update=()=>{if(e.$$.dirty&258&&r&&!_){u(8,_=!0);let f=Object.entries(r||{});f.length===1&&Object.entries(f[0][1])?.length<=6&&u(7,h=!0)}},[d,r,s,l,a,n,i,h,_,m]}var Al=class extends me{constructor(e){super(),he(this,e,Bl,Rl,fe,{available_filters:1,show_empty_filters:2,open_filters:3,translate:4,automatic_translations:5,translations:6,selected_filters:0})}},pl=Al,Bu={};F(Bu,{comments:()=>pu,default:()=>vl,direction:()=>vu,strings:()=>Tu,thanks_to:()=>Au});var Au="Jan Claasen ",pu="",vu="ltr",Tu={placeholder:"Soek",clear_search:"Opruim",load_more:"Laai nog resultate",search_label:"Soek hierdie webwerf",filters_label:"Filters",zero_results:"Geen resultate vir [SEARCH_TERM]",many_results:"[COUNT] resultate vir [SEARCH_TERM]",one_result:"[COUNT] resultate vir [SEARCH_TERM]",alt_search:"Geen resultate vir [SEARCH_TERM]. Toon resultate vir [DIFFERENT_TERM] in plaas daarvan",search_suggestion:"Geen resultate vir [SEARCH_TERM]. Probeer eerder een van die volgende terme:",searching:"Soek vir [SEARCH_TERM]"},vl={thanks_to:Au,comments:pu,direction:vu,strings:Tu},Fu={};F(Fu,{comments:()=>bu,default:()=>Tl,direction:()=>Mu,strings:()=>Su,thanks_to:()=>ku});var ku="Maruf Alom ",bu="",Mu="ltr",Su={placeholder:"অনুসন্ধান করুন",clear_search:"মুছে ফেলুন",load_more:"আরো ফলাফল দেখুন",search_label:"এই ওয়েবসাইটে অনুসন্ধান করুন",filters_label:"ফিল্টার",zero_results:"[SEARCH_TERM] এর জন্য কিছু খুঁজে পাওয়া যায়নি",many_results:"[COUNT]-টি ফলাফল পাওয়া গিয়েছে [SEARCH_TERM] এর জন্য",one_result:"[COUNT]-টি ফলাফল পাওয়া গিয়েছে [SEARCH_TERM] এর জন্য",alt_search:"কোন কিছু খুঁজে পাওয়া যায়নি [SEARCH_TERM] এর জন্য. পরিবর্তে [DIFFERENT_TERM] এর জন্য দেখানো হচ্ছে",search_suggestion:"কোন কিছু খুঁজে পাওয়া যায়নি [SEARCH_TERM] এর বিষয়ে. নিন্মের বিষয়বস্তু খুঁজে দেখুন:",searching:"অনুসন্ধান চলছে [SEARCH_TERM]..."},Tl={thanks_to:ku,comments:bu,direction:Mu,strings:Su},Du={};F(Du,{comments:()=>wu,default:()=>Fl,direction:()=>Nu,strings:()=>yu,thanks_to:()=>Hu});var Hu="Pablo Villaverde ",wu="",Nu="ltr",yu={placeholder:"Cerca",clear_search:"Netejar",load_more:"Veure mées resultats",search_label:"Cerca en aquest lloc",filters_label:"Filtres",zero_results:"No es van trobar resultats per [SEARCH_TERM]",many_results:"[COUNT] resultats trobats per [SEARCH_TERM]",one_result:"[COUNT] resultat trobat per [SEARCH_TERM]",alt_search:"No es van trobar resultats per [SEARCH_TERM]. Mostrant al seu lloc resultats per [DIFFERENT_TERM]",search_suggestion:"No es van trobar resultats per [SEARCH_TERM]. Proveu una de les cerques següents:",searching:"Cercant [SEARCH_TERM]..."},Fl={thanks_to:Hu,comments:wu,direction:Nu,strings:yu},zu={};F(zu,{comments:()=>Ou,default:()=>kl,direction:()=>Uu,strings:()=>Iu,thanks_to:()=>ju});var ju="Dalibor Hon ",Ou="",Uu="ltr",Iu={placeholder:"Hledat",clear_search:"Smazat",load_more:"Načíst další výsledky",search_label:"Prohledat tuto stránku",filters_label:"Filtry",zero_results:"Žádné výsledky pro [SEARCH_TERM]",many_results:"[COUNT] výsledků pro [SEARCH_TERM]",one_result:"[COUNT] výsledek pro [SEARCH_TERM]",alt_search:"Žádné výsledky pro [SEARCH_TERM]. Zobrazují se výsledky pro [DIFFERENT_TERM]",search_suggestion:"Žádné výsledky pro [SEARCH_TERM]. Související výsledky hledání:",searching:"Hledám [SEARCH_TERM]..."},kl={thanks_to:ju,comments:Ou,direction:Uu,strings:Iu},Lu={};F(Lu,{comments:()=>xu,default:()=>bl,direction:()=>qu,strings:()=>Vu,thanks_to:()=>Pu});var Pu="Jonas Smedegaard ",xu="",qu="ltr",Vu={placeholder:"Søg",clear_search:"Nulstil",load_more:"Indlæs flere resultater",search_label:"Søg på dette website",filters_label:"Filtre",zero_results:"Ingen resultater for [SEARCH_TERM]",many_results:"[COUNT] resultater for [SEARCH_TERM]",one_result:"[COUNT] resultat for [SEARCH_TERM]",alt_search:"Ingen resultater for [SEARCH_TERM]. Viser resultater for [DIFFERENT_TERM] i stedet",search_suggestion:"Ingen resultater for [SEARCH_TERM]. Prøv et af disse søgeord i stedet:",searching:"Søger efter [SEARCH_TERM]..."},bl={thanks_to:Pu,comments:xu,direction:qu,strings:Vu},Ku={};F(Ku,{comments:()=>Wu,default:()=>Ml,direction:()=>Ju,strings:()=>Zu,thanks_to:()=>Gu});var Gu="Jan Claasen ",Wu="",Ju="ltr",Zu={placeholder:"Suche",clear_search:"Löschen",load_more:"Mehr Ergebnisse laden",search_label:"Suche diese Seite",filters_label:"Filter",zero_results:"Keine Ergebnisse für [SEARCH_TERM]",many_results:"[COUNT] Ergebnisse für [SEARCH_TERM]",one_result:"[COUNT] Ergebnis für [SEARCH_TERM]",alt_search:"Keine Ergebnisse für [SEARCH_TERM]. Stattdessen werden Ergebnisse für [DIFFERENT_TERM] angezeigt",search_suggestion:"Keine Ergebnisse für [SEARCH_TERM]. Versuchen Sie eine der folgenden Suchen:",searching:"Suche für [SEARCH_TERM]"},Ml={thanks_to:Gu,comments:Wu,direction:Ju,strings:Zu},Yu={};F(Yu,{comments:()=>Qu,default:()=>Sl,direction:()=>$u,strings:()=>et,thanks_to:()=>Xu});var Xu="Liam Bigelow ",Qu="",$u="ltr",et={placeholder:"Search",clear_search:"Clear",load_more:"Load more results",search_label:"Search this site",filters_label:"Filters",zero_results:"No results for [SEARCH_TERM]",many_results:"[COUNT] results for [SEARCH_TERM]",one_result:"[COUNT] result for [SEARCH_TERM]",alt_search:"No results for [SEARCH_TERM]. Showing results for [DIFFERENT_TERM] instead",search_suggestion:"No results for [SEARCH_TERM]. Try one of the following searches:",searching:"Searching for [SEARCH_TERM]..."},Sl={thanks_to:Xu,comments:Qu,direction:$u,strings:et},ut={};F(ut,{comments:()=>rt,default:()=>Dl,direction:()=>st,strings:()=>lt,thanks_to:()=>tt});var tt="Pablo Villaverde ",rt="",st="ltr",lt={placeholder:"Buscar",clear_search:"Limpiar",load_more:"Ver más resultados",search_label:"Buscar en este sitio",filters_label:"Filtros",zero_results:"No se encontraron resultados para [SEARCH_TERM]",many_results:"[COUNT] resultados encontrados para [SEARCH_TERM]",one_result:"[COUNT] resultado encontrado para [SEARCH_TERM]",alt_search:"No se encontraron resultados para [SEARCH_TERM]. Mostrando en su lugar resultados para [DIFFERENT_TERM]",search_suggestion:"No se encontraron resultados para [SEARCH_TERM]. Prueba una de las siguientes búsquedas:",searching:"Buscando [SEARCH_TERM]..."},Dl={thanks_to:tt,comments:rt,direction:st,strings:lt},at={};F(at,{comments:()=>it,default:()=>Hl,direction:()=>ot,strings:()=>_t,thanks_to:()=>nt});var nt="Valtteri Laitinen ",it="",ot="ltr",_t={placeholder:"Haku",clear_search:"Tyhjennä",load_more:"Lataa lisää tuloksia",search_label:"Hae tältä sivustolta",filters_label:"Suodattimet",zero_results:"Ei tuloksia haulle [SEARCH_TERM]",many_results:"[COUNT] tulosta haulle [SEARCH_TERM]",one_result:"[COUNT] tulos haulle [SEARCH_TERM]",alt_search:"Ei tuloksia haulle [SEARCH_TERM]. Näytetään tulokset sen sijaan haulle [DIFFERENT_TERM]",search_suggestion:"Ei tuloksia haulle [SEARCH_TERM]. Kokeile jotain seuraavista:",searching:"Haetaan [SEARCH_TERM]..."},Hl={thanks_to:nt,comments:it,direction:ot,strings:_t},ct={};F(ct,{comments:()=>Et,default:()=>wl,direction:()=>dt,strings:()=>ht,thanks_to:()=>ft});var ft="Nicolas Friedli ",Et="",dt="ltr",ht={placeholder:"Rechercher",clear_search:"Nettoyer",load_more:"Charger plus de résultats",search_label:"Recherche sur ce site",filters_label:"Filtres",zero_results:"Pas de résultat pour [SEARCH_TERM]",many_results:"[COUNT] résultats pour [SEARCH_TERM]",one_result:"[COUNT] résultat pour [SEARCH_TERM]",alt_search:"Pas de résultat pour [SEARCH_TERM]. Montre les résultats pour [DIFFERENT_TERM] à la place",search_suggestion:"Pas de résultat pour [SEARCH_TERM]. Essayer une des recherches suivantes:",searching:"Recherche [SEARCH_TERM]..."},wl={thanks_to:ft,comments:Et,direction:dt,strings:ht},mt={};F(mt,{comments:()=>gt,default:()=>Nl,direction:()=>Rt,strings:()=>Bt,thanks_to:()=>Ct});var Ct="Pablo Villaverde ",gt="",Rt="ltr",Bt={placeholder:"Buscar",clear_search:"Limpar",load_more:"Ver máis resultados",search_label:"Buscar neste sitio",filters_label:"Filtros",zero_results:"Non se atoparon resultados para [SEARCH_TERM]",many_results:"[COUNT] resultados atopados para [SEARCH_TERM]",one_result:"[COUNT] resultado atopado para [SEARCH_TERM]",alt_search:"Non se atoparon resultados para [SEARCH_TERM]. Amosando no seu lugar resultados para [DIFFERENT_TERM]",search_suggestion:"Non se atoparon resultados para [SEARCH_TERM]. Probe unha das seguintes pesquisas:",searching:"Buscando [SEARCH_TERM]..."},Nl={thanks_to:Ct,comments:gt,direction:Rt,strings:Bt},At={};F(At,{comments:()=>vt,default:()=>yl,direction:()=>Tt,strings:()=>Ft,thanks_to:()=>pt});var pt="Amit Yadav ",vt="",Tt="ltr",Ft={placeholder:"खोजें",clear_search:"साफ करें",load_more:"और अधिक परिणाम लोड करें",search_label:"इस साइट में खोजें",filters_label:"फ़िल्टर",zero_results:"कोई परिणाम [SEARCH_TERM] के लिए नहीं मिला",many_results:"[COUNT] परिणाम [SEARCH_TERM] के लिए मिले",one_result:"[COUNT] परिणाम [SEARCH_TERM] के लिए मिला",alt_search:"[SEARCH_TERM] के लिए कोई परिणाम नहीं मिला। इसके बजाय [DIFFERENT_TERM] के लिए परिणाम दिखा रहा है",search_suggestion:"[SEARCH_TERM] के लिए कोई परिणाम नहीं मिला। निम्नलिखित खोजों में से कोई एक आज़माएं:",searching:"[SEARCH_TERM] की खोज की जा रही है..."},yl={thanks_to:pt,comments:vt,direction:Tt,strings:Ft},kt={};F(kt,{comments:()=>Mt,default:()=>zl,direction:()=>St,strings:()=>Dt,thanks_to:()=>bt});var bt="Diomed ",Mt="",St="ltr",Dt={placeholder:"Traži",clear_search:"Očisti",load_more:"Učitaj više rezultata",search_label:"Pretraži ovu stranicu",filters_label:"Filteri",zero_results:"Nema rezultata za [SEARCH_TERM]",many_results:"[COUNT] rezultata za [SEARCH_TERM]",one_result:"[COUNT] rezultat za [SEARCH_TERM]",alt_search:"Nema rezultata za [SEARCH_TERM]. Prikazujem rezultate za [DIFFERENT_TERM]",search_suggestion:"Nema rezultata za [SEARCH_TERM]. Pokušaj s jednom od ovih pretraga:",searching:"Pretražujem [SEARCH_TERM]..."},zl={thanks_to:bt,comments:Mt,direction:St,strings:Dt},Ht={};F(Ht,{comments:()=>Nt,default:()=>jl,direction:()=>yt,strings:()=>zt,thanks_to:()=>wt});var wt="Adam Laki ",Nt="",yt="ltr",zt={placeholder:"Keresés",clear_search:"Törlés",load_more:"További találatok betöltése",search_label:"Keresés az oldalon",filters_label:"Szűrés",zero_results:"Nincs találat a(z) [SEARCH_TERM] kifejezésre",many_results:"[COUNT] db találat a(z) [SEARCH_TERM] kifejezésre",one_result:"[COUNT] db találat a(z) [SEARCH_TERM] kifejezésre",alt_search:"Nincs találat a(z) [SEARCH_TERM] kifejezésre. Találatok mutatása inkább a(z) [DIFFERENT_TERM] kifejezésre",search_suggestion:"Nincs találat a(z) [SEARCH_TERM] kifejezésre. Próbáld meg a következő keresések egyikét:",searching:"Keresés a(z) [SEARCH_TERM] kifejezésre..."},jl={thanks_to:wt,comments:Nt,direction:yt,strings:zt},jt={};F(jt,{comments:()=>Ut,default:()=>Ol,direction:()=>It,strings:()=>Lt,thanks_to:()=>Ot});var Ot="Nixentric",Ut="",It="ltr",Lt={placeholder:"Cari",clear_search:"Bersihkan",load_more:"Muat lebih banyak hasil",search_label:"Telusuri situs ini",filters_label:"Filter",zero_results:"[SEARCH_TERM] tidak ditemukan",many_results:"Ditemukan [COUNT] hasil untuk [SEARCH_TERM]",one_result:"Ditemukan [COUNT] hasil untuk [SEARCH_TERM]",alt_search:"[SEARCH_TERM] tidak ditemukan. Menampilkan hasil [DIFFERENT_TERM] sebagai gantinya",search_suggestion:"[SEARCH_TERM] tidak ditemukan. Coba salah satu pencarian berikut ini:",searching:"Mencari [SEARCH_TERM]..."},Ol={thanks_to:Ot,comments:Ut,direction:It,strings:Lt},Pt={};F(Pt,{comments:()=>qt,default:()=>Ul,direction:()=>Vt,strings:()=>Kt,thanks_to:()=>xt});var xt="Cosette Bruhns Alonso, Andrew Janco ",qt="",Vt="ltr",Kt={placeholder:"Cerca",clear_search:"Cancella la cronologia",load_more:"Mostra più risultati",search_label:"Cerca nel sito",filters_label:"Filtri di ricerca",zero_results:"Nessun risultato per [SEARCH_TERM]",many_results:"[COUNT] risultati per [SEARCH_TERM]",one_result:"[COUNT] risultato per [SEARCH_TERM]",alt_search:"Nessun risultato per [SEARCH_TERM]. Mostrando risultati per [DIFFERENT_TERM] come alternativa.",search_suggestion:"Nessun risultato per [SEARCH_TERM]. Prova una delle seguenti ricerche:",searching:"Cercando [SEARCH_TERM]..."},Ul={thanks_to:xt,comments:qt,direction:Vt,strings:Kt},Gt={};F(Gt,{comments:()=>Jt,default:()=>Il,direction:()=>Zt,strings:()=>Yt,thanks_to:()=>Wt});var Wt="Tate",Jt="",Zt="ltr",Yt={placeholder:"検索",clear_search:"クリア",load_more:"次を読み込む",search_label:"このサイトを検索",filters_label:"フィルタ",zero_results:"[SEARCH_TERM]の検索に一致する情報はありませんでした",many_results:"[SEARCH_TERM]の[COUNT]件の検索結果",one_result:"[SEARCH_TERM]の[COUNT]件の検索結果",alt_search:"[SEARCH_TERM]の検索に一致する情報はありませんでした。[DIFFERENT_TERM]の検索結果を表示しています",search_suggestion:"[SEARCH_TERM]の検索に一致する情報はありませんでした。次のいずれかの検索を試してください",searching:"[SEARCH_TERM]を検索しています"},Il={thanks_to:Wt,comments:Jt,direction:Zt,strings:Yt},Xt={};F(Xt,{comments:()=>$t,default:()=>Ll,direction:()=>er,strings:()=>ur,thanks_to:()=>Qt});var Qt="Seokho Son ",$t="",er="ltr",ur={placeholder:"검색어",clear_search:"비우기",load_more:"검색 결과 더 보기",search_label:"사이트 검색",filters_label:"필터",zero_results:"[SEARCH_TERM]에 대한 결과 없음",many_results:"[SEARCH_TERM]에 대한 결과 [COUNT]건",one_result:"[SEARCH_TERM]에 대한 결과 [COUNT]건",alt_search:"[SEARCH_TERM]에 대한 결과 없음. [DIFFERENT_TERM]에 대한 결과",search_suggestion:"[SEARCH_TERM]에 대한 결과 없음. 추천 검색어: ",searching:"[SEARCH_TERM] 검색 중..."},Ll={thanks_to:Qt,comments:$t,direction:er,strings:ur},tr={};F(tr,{comments:()=>sr,default:()=>Pl,direction:()=>lr,strings:()=>ar,thanks_to:()=>rr});var rr="",sr="",lr="ltr",ar={placeholder:"Rapu",clear_search:"Whakakore",load_more:"Whakauta ētahi otinga kē",search_label:"Rapu",filters_label:"Tātari",zero_results:"Otinga kore ki [SEARCH_TERM]",many_results:"[COUNT] otinga ki [SEARCH_TERM]",one_result:"[COUNT] otinga ki [SEARCH_TERM]",alt_search:"Otinga kore ki [SEARCH_TERM]. Otinga kē ki [DIFFERENT_TERM]",search_suggestion:"Otinga kore ki [SEARCH_TERM]. whakamātau ki ngā mea atu:",searching:"Rapu ki [SEARCH_TERM]..."},Pl={thanks_to:rr,comments:sr,direction:lr,strings:ar},nr={};F(nr,{comments:()=>or,default:()=>xl,direction:()=>_r,strings:()=>cr,thanks_to:()=>ir});var ir="Paul van Brouwershaven",or="",_r="ltr",cr={placeholder:"Zoeken",clear_search:"Reset",load_more:"Meer resultaten laden",search_label:"Doorzoek deze site",filters_label:"Filters",zero_results:"Geen resultaten voor [SEARCH_TERM]",many_results:"[COUNT] resultaten voor [SEARCH_TERM]",one_result:"[COUNT] resultaat voor [SEARCH_TERM]",alt_search:"Geen resultaten voor [SEARCH_TERM]. In plaats daarvan worden resultaten voor [DIFFERENT_TERM] weergegeven",search_suggestion:"Geen resultaten voor [SEARCH_TERM]. Probeer een van de volgende zoekopdrachten:",searching:"Zoeken naar [SEARCH_TERM]..."},xl={thanks_to:ir,comments:or,direction:_r,strings:cr},fr={};F(fr,{comments:()=>dr,default:()=>ql,direction:()=>hr,strings:()=>mr,thanks_to:()=>Er});var Er="Christopher Wingate",dr="",hr="ltr",mr={placeholder:"Søk",clear_search:"Fjern",load_more:"Last flere resultater",search_label:"Søk på denne siden",filters_label:"Filtre",zero_results:"Ingen resultater for [SEARCH_TERM]",many_results:"[COUNT] resultater for [SEARCH_TERM]",one_result:"[COUNT] resultat for [SEARCH_TERM]",alt_search:"Ingen resultater for [SEARCH_TERM]. Viser resultater for [DIFFERENT_TERM] i stedet",search_suggestion:"Ingen resultater for [SEARCH_TERM]. Prøv en av disse søkeordene i stedet:",searching:"Søker etter [SEARCH_TERM]"},ql={thanks_to:Er,comments:dr,direction:hr,strings:mr},Cr={};F(Cr,{comments:()=>Rr,default:()=>Vl,direction:()=>Br,strings:()=>Ar,thanks_to:()=>gr});var gr="",Rr="",Br="ltr",Ar={placeholder:"Szukaj",clear_search:"Wyczyść",load_more:"Załaduj więcej",search_label:"Przeszukaj tę stronę",filters_label:"Filtry",zero_results:"Brak wyników dla [SEARCH_TERM]",many_results:"[COUNT] wyników dla [SEARCH_TERM]",one_result:"[COUNT] wynik dla [SEARCH_TERM]",alt_search:"Brak wyników dla [SEARCH_TERM]. Wyświetlam wyniki dla [DIFFERENT_TERM]",search_suggestion:"Brak wyników dla [SEARCH_TERM]. Pokrewne wyniki wyszukiwania:",searching:"Szukam [SEARCH_TERM]..."},Vl={thanks_to:gr,comments:Rr,direction:Br,strings:Ar},pr={};F(pr,{comments:()=>Tr,default:()=>Kl,direction:()=>Fr,strings:()=>kr,thanks_to:()=>vr});var vr="Jonatah",Tr="",Fr="ltr",kr={placeholder:"Pesquisar",clear_search:"Limpar",load_more:"Ver mais resultados",search_label:"Pesquisar",filters_label:"Filtros",zero_results:"Nenhum resultado encontrado para [SEARCH_TERM]",many_results:"[COUNT] resultados encontrados para [SEARCH_TERM]",one_result:"[COUNT] resultado encontrado para [SEARCH_TERM]",alt_search:"Nenhum resultado encontrado para [SEARCH_TERM]. Exibindo resultados para [DIFFERENT_TERM]",search_suggestion:"Nenhum resultado encontrado para [SEARCH_TERM]. Tente uma das seguintes pesquisas:",searching:"Pesquisando por [SEARCH_TERM]..."},Kl={thanks_to:vr,comments:Tr,direction:Fr,strings:kr},br={};F(br,{comments:()=>Sr,default:()=>Gl,direction:()=>Dr,strings:()=>Hr,thanks_to:()=>Mr});var Mr="Bogdan Mateescu ",Sr="",Dr="ltr",Hr={placeholder:"Căutare",clear_search:"Ştergeţi",load_more:"Încărcați mai multe rezultate",search_label:"Căutați în acest site",filters_label:"Filtre",zero_results:"Niciun rezultat pentru [SEARCH_TERM]",many_results:"[COUNT] rezultate pentru [SEARCH_TERM]",one_result:"[COUNT] rezultat pentru [SEARCH_TERM]",alt_search:"Niciun rezultat pentru [SEARCH_TERM]. Se afișează în schimb rezultatele pentru [DIFFERENT_TERM]",search_suggestion:"Niciun rezultat pentru [SEARCH_TERM]. Încercați una dintre următoarele căutări:",searching:"Se caută după: [SEARCH_TERM]..."},Gl={thanks_to:Mr,comments:Sr,direction:Dr,strings:Hr},wr={};F(wr,{comments:()=>yr,default:()=>Wl,direction:()=>zr,strings:()=>jr,thanks_to:()=>Nr});var Nr="Aleksandr Gordeev",yr="",zr="ltr",jr={placeholder:"Поиск",clear_search:"Очистить поле",load_more:"Загрузить еще",search_label:"Поиск по сайту",filters_label:"Фильтры",zero_results:"Ничего не найдено по запросу: [SEARCH_TERM]",many_results:"[COUNT] результатов по запросу: [SEARCH_TERM]",one_result:"[COUNT] результат по запросу: [SEARCH_TERM]",alt_search:"Ничего не найдено по запросу: [SEARCH_TERM]. Показаны результаты по запросу: [DIFFERENT_TERM]",search_suggestion:"Ничего не найдено по запросу: [SEARCH_TERM]. Попробуйте один из следующих вариантов",searching:"Поиск по запросу: [SEARCH_TERM]"},Wl={thanks_to:Nr,comments:yr,direction:zr,strings:jr},Or={};F(Or,{comments:()=>Ir,default:()=>Jl,direction:()=>Lr,strings:()=>Pr,thanks_to:()=>Ur});var Ur="Andrija Sagicc",Ir="",Lr="ltr",Pr={placeholder:"Претрага",clear_search:"Брисање",load_more:"Приказ више резултата",search_label:"Претрага сајта",filters_label:"Филтери",zero_results:"Нема резултата за [SEARCH_TERM]",many_results:"[COUNT] резултата за [SEARCH_TERM]",one_result:"[COUNT] резултата за [SEARCH_TERM]",alt_search:"Нема резултата за [SEARCH_TERM]. Приказ додатник резултата за [DIFFERENT_TERM]",search_suggestion:"Нема резултата за [SEARCH_TERM]. Покушајте са неком од следећих претрага:",searching:"Претрага термина [SEARCH_TERM]..."},Jl={thanks_to:Ur,comments:Ir,direction:Lr,strings:Pr},xr={};F(xr,{comments:()=>Vr,default:()=>Zl,direction:()=>Kr,strings:()=>Gr,thanks_to:()=>qr});var qr="Montazar Al-Jaber ",Vr="",Kr="ltr",Gr={placeholder:"Sök",clear_search:"Rensa",load_more:"Visa fler träffar",search_label:"Sök på denna sida",filters_label:"Filter",zero_results:"[SEARCH_TERM] gav inga träffar",many_results:"[SEARCH_TERM] gav [COUNT] träffar",one_result:"[SEARCH_TERM] gav [COUNT] träff",alt_search:"[SEARCH_TERM] gav inga träffar. Visar resultat för [DIFFERENT_TERM] istället",search_suggestion:"[SEARCH_TERM] gav inga träffar. Försök igen med en av följande sökord:",searching:"Söker efter [SEARCH_TERM]..."},Zl={thanks_to:qr,comments:Vr,direction:Kr,strings:Gr},Wr={};F(Wr,{comments:()=>Zr,default:()=>Yl,direction:()=>Yr,strings:()=>Xr,thanks_to:()=>Jr});var Jr="",Zr="",Yr="ltr",Xr={placeholder:"தேடுக",clear_search:"அழிக்குக",load_more:"மேலும் முடிவுகளைக் காட்டுக",search_label:"இந்த தளத்தில் தேடுக",filters_label:"வடிகட்டல்கள்",zero_results:"[SEARCH_TERM] க்கான முடிவுகள் இல்லை",many_results:"[SEARCH_TERM] க்கான [COUNT] முடிவுகள்",one_result:"[SEARCH_TERM] க்கான முடிவு",alt_search:"[SEARCH_TERM] இத்தேடலுக்கான முடிவுகள் இல்லை, இந்த தேடல்களுக்கான ஒத்த முடிவுகள் [DIFFERENT_TERM]",search_suggestion:"[SEARCH_TERM] இத் தேடலுக்கான முடிவுகள் இல்லை.இதற்கு பதிலீடான தேடல்களை தேடுக:",searching:"[SEARCH_TERM] தேடப்படுகின்றது"},Yl={thanks_to:Jr,comments:Zr,direction:Yr,strings:Xr},Qr={};F(Qr,{comments:()=>es,default:()=>Xl,direction:()=>us,strings:()=>ts,thanks_to:()=>$r});var $r="Taylan Özgür Bildik",es="",us="ltr",ts={placeholder:"Araştır",clear_search:"Temizle",load_more:"Daha fazla sonuç",search_label:"Site genelinde arama",filters_label:"Filtreler",zero_results:"[SEARCH_TERM] için sonuç yok",many_results:"[SEARCH_TERM] için [COUNT] sonuç bulundu",one_result:"[SEARCH_TERM] için [COUNT] sonuç bulundu",alt_search:"[SEARCH_TERM] için sonuç yok. Bunun yerine [DIFFERENT_TERM] için sonuçlar gösteriliyor",search_suggestion:"[SEARCH_TERM] için sonuç yok. Alternatif olarak aşağıdaki kelimelerden birini deneyebilirsiniz:",searching:"[SEARCH_TERM] araştırılıyor..."},Xl={thanks_to:$r,comments:es,direction:us,strings:ts},rs={};F(rs,{comments:()=>ls,default:()=>Ql,direction:()=>as,strings:()=>ns,thanks_to:()=>ss});var ss="Vladyslav Lyshenko ",ls="",as="ltr",ns={placeholder:"Пошук",clear_search:"Очистити поле",load_more:"Завантажити ще",search_label:"Пошук по сайту",filters_label:"Фільтри",zero_results:"Нічого не знайдено за запитом: [SEARCH_TERM]",many_results:"[COUNT] результатів на запит: [SEARCH_TERM]",one_result:"[COUNT] результат за запитом: [SEARCH_TERM]",alt_search:"Нічого не знайдено на запит: [SEARCH_TERM]. Показано результати на запит: [DIFFERENT_TERM]",search_suggestion:"Нічого не знайдено на запит: [SEARCH_TERM]. Спробуйте один із таких варіантів",searching:"Пошук за запитом: [SEARCH_TERM]"},Ql={thanks_to:ss,comments:ls,direction:as,strings:ns},is={};F(is,{comments:()=>_s,default:()=>$l,direction:()=>cs,strings:()=>fs,thanks_to:()=>os});var os="Long Nhat Nguyen",_s="",cs="ltr",fs={placeholder:"Tìm kiếm",clear_search:"Xóa",load_more:"Nhiều kết quả hơn",search_label:"Tìm kiếm trong trang này",filters_label:"Bộ lọc",zero_results:"Không tìm thấy kết quả cho [SEARCH_TERM]",many_results:"[COUNT] kết quả cho [SEARCH_TERM]",one_result:"[COUNT] kết quả cho [SEARCH_TERM]",alt_search:"Không tìm thấy kết quả cho [SEARCH_TERM]. Kiểm thị kết quả thay thế với [DIFFERENT_TERM]",search_suggestion:"Không tìm thấy kết quả cho [SEARCH_TERM]. Thử một trong các tìm kiếm:",searching:"Đang tìm kiếm cho [SEARCH_TERM]..."},$l={thanks_to:os,comments:_s,direction:cs,strings:fs},Es={};F(Es,{comments:()=>hs,default:()=>ea,direction:()=>ms,strings:()=>Cs,thanks_to:()=>ds});var ds="Amber Song",hs="",ms="ltr",Cs={placeholder:"搜索",clear_search:"清除",load_more:"加载更多结果",search_label:"站内搜索",filters_label:"筛选",zero_results:"未找到 [SEARCH_TERM] 的相关结果",many_results:"找到 [COUNT] 个 [SEARCH_TERM] 的相关结果",one_result:"找到 [COUNT] 个 [SEARCH_TERM] 的相关结果",alt_search:"未找到 [SEARCH_TERM] 的相关结果。改为显示 [DIFFERENT_TERM] 的相关结果",search_suggestion:"未找到 [SEARCH_TERM] 的相关结果。请尝试以下搜索。",searching:"正在搜索 [SEARCH_TERM]..."},ea={thanks_to:ds,comments:hs,direction:ms,strings:Cs},gs={};F(gs,{comments:()=>Bs,default:()=>ua,direction:()=>As,strings:()=>ps,thanks_to:()=>Rs});var Rs="Amber Song",Bs="",As="ltr",ps={placeholder:"搜索",clear_search:"清除",load_more:"加載更多結果",search_label:"站內搜索",filters_label:"篩選",zero_results:"未找到 [SEARCH_TERM] 的相關結果",many_results:"找到 [COUNT] 個 [SEARCH_TERM] 的相關結果",one_result:"找到 [COUNT] 個 [SEARCH_TERM] 的相關結果",alt_search:"未找到 [SEARCH_TERM] 的相關結果。改為顯示 [DIFFERENT_TERM] 的相關結果",search_suggestion:"未找到 [SEARCH_TERM] 的相關結果。請嘗試以下搜索。",searching:"正在搜索 [SEARCH_TERM]..."},ua={thanks_to:Rs,comments:Bs,direction:As,strings:ps},vs={};F(vs,{comments:()=>Fs,default:()=>ta,direction:()=>ks,strings:()=>bs,thanks_to:()=>Ts});var Ts="Amber Song",Fs="",ks="ltr",bs={placeholder:"搜索",clear_search:"清除",load_more:"加载更多结果",search_label:"站内搜索",filters_label:"筛选",zero_results:"未找到 [SEARCH_TERM] 的相关结果",many_results:"找到 [COUNT] 个 [SEARCH_TERM] 的相关结果",one_result:"找到 [COUNT] 个 [SEARCH_TERM] 的相关结果",alt_search:"未找到 [SEARCH_TERM] 的相关结果。改为显示 [DIFFERENT_TERM] 的相关结果",search_suggestion:"未找到 [SEARCH_TERM] 的相关结果。请尝试以下搜索。",searching:"正在搜索 [SEARCH_TERM]..."},ta={thanks_to:Ts,comments:Fs,direction:ks,strings:bs},ra=[Bu,Fu,Du,zu,Lu,Ku,Yu,ut,at,ct,mt,At,kt,Ht,jt,Pt,Gt,Xt,tr,nr,fr,Cr,pr,br,wr,Or,xr,Wr,Qr,rs,is,Es,gs,vs],sa=ra,la=["../../translations/af.json","../../translations/bn.json","../../translations/ca.json","../../translations/cs.json","../../translations/da.json","../../translations/de.json","../../translations/en.json","../../translations/es.json","../../translations/fi.json","../../translations/fr.json","../../translations/gl.json","../../translations/hi.json","../../translations/hr.json","../../translations/hu.json","../../translations/id.json","../../translations/it.json","../../translations/ja.json","../../translations/ko.json","../../translations/mi.json","../../translations/nl.json","../../translations/no.json","../../translations/pl.json","../../translations/pt.json","../../translations/ro.json","../../translations/ru.json","../../translations/sr.json","../../translations/sv.json","../../translations/ta.json","../../translations/tr.json","../../translations/uk.json","../../translations/vi.json","../../translations/zh-cn.json","../../translations/zh-tw.json","../../translations/zh.json"];function ou(e,t,u){const r=e.slice();return r[51]=t[u],r}function _u(e){let t,u,r;function s(a){e[37](a)}let l={show_empty_filters:e[5],open_filters:e[6],available_filters:e[18],translate:e[20],automatic_translations:e[19],translations:e[7]};return e[0]!==void 0&&(l.selected_filters=e[0]),t=new pl({props:l}),le.push(()=>rl(t,"selected_filters",s)),{c(){ke(t.$$.fragment)},m(a,n){Ee(t,a,n),r=!0},p(a,n){const i={};n[0]&32&&(i.show_empty_filters=a[5]),n[0]&64&&(i.open_filters=a[6]),n[0]&262144&&(i.available_filters=a[18]),n[0]&524288&&(i.automatic_translations=a[19]),n[0]&128&&(i.translations=a[7]),!u&&n[0]&1&&(u=!0,i.selected_filters=a[0],Qs(()=>u=!1)),t.$set(i)},i(a){r||(z(t.$$.fragment,a),r=!0)},o(a){U(t.$$.fragment,a),r=!1},d(a){de(t,a)}}}function cu(e){let t,u,r,s;const l=[na,aa],a=[];function n(i,d){return i[14]?0:1}return u=n(e),r=a[u]=l[u](e),{c(){t=p("div"),r.c(),g(t,"class","pagefind-ui__results-area svelte-e9gkc3")},m(i,d){T(i,t,d),a[u].m(t,null),s=!0},p(i,d){let _=u;u=n(i),u===_?a[u].p(i,d):(ae(),U(a[_],1,1,()=>{a[_]=null}),ne(),r=a[u],r?r.p(i,d):(r=a[u]=l[u](i),r.c()),z(r,1),r.m(t,null))},i(i){s||(z(r),s=!0)},o(i){U(r),s=!1},d(i){i&&v(t),a[u].d()}}}function aa(e){let t,u,r,s=[],l=new Map,a,n,i;function d(o,E){return o[13].results.length===0?_a:o[13].results.length===1?oa:ia}let _=d(e),h=_(e),m=e[13].results.slice(0,e[17]);const f=o=>o[51].id;for(let o=0;oe[17]&&Eu(e);return{c(){t=p("p"),h.c(),u=M(),r=p("ol");for(let o=0;oo[17]?c?c.p(o,E):(c=Eu(o),c.c(),c.m(n.parentNode,n)):c&&(c.d(1),c=null)},i(o){if(!i){for(let E=0;E{i[m]=null}),ne(),s=i[r],s?s.p(t,h):(s=i[r]=n[r](t),s.c()),z(s,1),s.m(l.parentNode,l))},i(_){a||(z(s),a=!0)},o(_){U(s),a=!1},d(_){_&&v(u),i[r].d(_),_&&v(l)}}}function Eu(e){let t,u=e[20]("load_more",e[19],e[7])+"",r,s,l;return{c(){t=p("button"),r=S(u),g(t,"type","button"),g(t,"class","pagefind-ui__button svelte-e9gkc3")},m(a,n){T(a,t,n),A(t,r),s||(l=G(t,"click",e[22]),s=!0)},p(a,n){n[0]&524416&&u!==(u=a[20]("load_more",a[19],a[7])+"")&&j(r,u)},d(a){a&&v(t),s=!1,l()}}}function du(e){let t,u=e[20]("searching",e[19],e[7]).replace(/\[SEARCH_TERM\]/,e[16])+"",r;return{c(){t=p("p"),r=S(u),g(t,"class","pagefind-ui__message svelte-e9gkc3")},m(s,l){T(s,t,l),A(t,r)},p(s,l){l[0]&589952&&u!==(u=s[20]("searching",s[19],s[7]).replace(/\[SEARCH_TERM\]/,s[16])+"")&&j(r,u)},d(s){s&&v(t)}}}function Ea(e){let t,u,r,s,l,a,n=e[20]("clear_search",e[19],e[7])+"",i,d,_,h,m,f,c,o,E=e[12]&&_u(e),B=e[15]&&cu(e);return{c(){t=p("div"),u=p("form"),r=p("input"),l=M(),a=p("button"),i=S(n),d=M(),_=p("div"),E&&E.c(),h=M(),B&&B.c(),g(r,"class","pagefind-ui__search-input svelte-e9gkc3"),g(r,"type","text"),g(r,"placeholder",s=e[20]("placeholder",e[19],e[7])),g(r,"autocapitalize","none"),g(r,"enterkeyhint","search"),r.autofocus=e[8],g(a,"class","pagefind-ui__search-clear svelte-e9gkc3"),K(a,"pagefind-ui__suppressed",!e[9]),g(_,"class","pagefind-ui__drawer svelte-e9gkc3"),K(_,"pagefind-ui__hidden",!e[15]),g(u,"class","pagefind-ui__form svelte-e9gkc3"),g(u,"role","search"),g(u,"aria-label",m=e[20]("search_label",e[19],e[7])),g(u,"action","javascript:void(0);"),g(t,"class","pagefind-ui svelte-e9gkc3"),K(t,"pagefind-ui--reset",e[1])},m(R,k){T(R,t,k),A(t,u),A(u,r),ze(r,e[9]),e[34](r),A(u,l),A(u,a),A(a,i),e[35](a),A(u,d),A(u,_),E&&E.m(_,null),A(_,h),B&&B.m(_,null),f=!0,e[8]&&r.focus(),c||(o=[G(r,"focus",e[21]),G(r,"keydown",e[32]),G(r,"input",e[33]),G(a,"click",e[36]),G(u,"submit",da)],c=!0)},p(R,k){(!f||k[0]&524416&&s!==(s=R[20]("placeholder",R[19],R[7])))&&g(r,"placeholder",s),(!f||k[0]&256)&&(r.autofocus=R[8]),k[0]&512&&r.value!==R[9]&&ze(r,R[9]),(!f||k[0]&524416)&&n!==(n=R[20]("clear_search",R[19],R[7])+"")&&j(i,n),(!f||k[0]&512)&&K(a,"pagefind-ui__suppressed",!R[9]),R[12]?E?(E.p(R,k),k[0]&4096&&z(E,1)):(E=_u(R),E.c(),z(E,1),E.m(_,h)):E&&(ae(),U(E,1,1,()=>{E=null}),ne()),R[15]?B?(B.p(R,k),k[0]&32768&&z(B,1)):(B=cu(R),B.c(),z(B,1),B.m(_,null)):B&&(ae(),U(B,1,1,()=>{B=null}),ne()),(!f||k[0]&32768)&&K(_,"pagefind-ui__hidden",!R[15]),(!f||k[0]&524416&&m!==(m=R[20]("search_label",R[19],R[7])))&&g(u,"aria-label",m),(!f||k[0]&2)&&K(t,"pagefind-ui--reset",R[1])},i(R){f||(z(E),z(B),f=!0)},o(R){U(E),U(B),f=!1},d(R){R&&v(t),e[34](null),e[35](null),E&&E.d(),B&&B.d(),c=!1,J(o)}}}var da=e=>e.preventDefault();function ha(e,t,u){const r={},s=la.map(C=>C.match(/([^\/]+)\.json$/)[1]);for(let C=0;CN[C]??H[C]??"";Js(()=>{let C=document?.querySelector?.("html")?.getAttribute?.("lang")||"en",H=Ru(C.toLocaleLowerCase());u(19,He=r[`${H.language}-${H.script}-${H.region}`]||r[`${H.language}-${H.region}`]||r[`${H.language}`]||r.en)}),Zs(()=>{D?.destroy?.(),D=null});const we=async()=>{if(!Ce&&(u(12,Ce=!0),!D)){let C;try{C=await xs(()=>import(`${l}pagefind.js`),[])}catch(N){console.error(N),console.error([`Pagefind couldn't be loaded from ${this.options.bundlePath}pagefind.js`,"You can configure this by passing a bundlePath option to PagefindUI",`[DEBUG: Loaded from ${document?.currentScript?.src??"no known script location"}]`].join(` +`))}_||u(24,_=d?12:30);let H={...E||{},excerptLength:_};await C.options(H);for(const N of B){if(!N.bundlePath)throw new Error("mergeIndex requires a bundlePath parameter");const I=N.bundlePath;delete N.bundlePath,await C.mergeIndex(I,N)}D=C,Ds()}},Ds=async()=>{D&&(De=await D.filters(),(!ue||!Object.keys(ue).length)&&u(18,ue=De))},Hs=C=>{let H={};return Object.entries(C).filter(([,N])=>N).forEach(([N])=>{let[I,Z]=N.split(/:(.*)$/);H[I]=H[I]||[],H[I].push(Z)}),H};let te;const ws=async(C,H)=>{if(!C){u(15,Re=!1),te&&clearTimeout(te);return}const N=Hs(H),I=()=>Ns(C,N);o>0&&C?(te&&clearTimeout(te),te=setTimeout(I,o),await Ne(),D.preload(C,{filters:N})):I(),ys()},Ne=async()=>{for(;!D;)we(),await new Promise(C=>setTimeout(C,50))},Ns=async(C,H)=>{u(16,Se=C||""),typeof m=="function"&&(C=m(C)),u(14,ge=!0),u(15,Re=!0),await Ne();const N=++Me,I={filters:H};q&&typeof q=="object"&&(I.sort=q);const Z=await D.search(C,I);Me===N&&(Z.filters&&Object.keys(Z.filters)?.length&&u(18,ue=Z.filters),u(13,be=Z),u(14,ge=!1),u(17,Be=a))},ys=()=>{const C=x.offsetWidth;C!=Ms&&u(10,w.style.paddingRight=`${C+2}px`,w)},zs=C=>{C?.preventDefault(),u(17,Be+=a)},js=C=>{C.key==="Escape"&&(u(9,b=""),w.blur()),C.key==="Enter"&&C.preventDefault()};function Os(){b=this.value,u(9,b),u(23,R)}function Us(C){le[C?"unshift":"push"](()=>{w=C,u(10,w)})}function Is(C){le[C?"unshift":"push"](()=>{x=C,u(11,x)})}const Ls=()=>{u(9,b=""),w.blur()};function Ps(C){P=C,u(0,P)}return e.$$set=C=>{"base_path"in C&&u(25,l=C.base_path),"page_size"in C&&u(26,a=C.page_size),"reset_styles"in C&&u(1,n=C.reset_styles),"show_images"in C&&u(2,i=C.show_images),"show_sub_results"in C&&u(3,d=C.show_sub_results),"excerpt_length"in C&&u(24,_=C.excerpt_length),"process_result"in C&&u(4,h=C.process_result),"process_term"in C&&u(27,m=C.process_term),"show_empty_filters"in C&&u(5,f=C.show_empty_filters),"open_filters"in C&&u(6,c=C.open_filters),"debounce_timeout_ms"in C&&u(28,o=C.debounce_timeout_ms),"pagefind_options"in C&&u(29,E=C.pagefind_options),"merge_index"in C&&u(30,B=C.merge_index),"trigger_search_term"in C&&u(23,R=C.trigger_search_term),"translations"in C&&u(7,k=C.translations),"autofocus"in C&&u(8,y=C.autofocus),"sort"in C&&u(31,q=C.sort),"selected_filters"in C&&u(0,P=C.selected_filters)},e.$$.update=()=>{e.$$.dirty[0]&8388608&&R&&(u(9,b=R),u(23,R="")),e.$$.dirty[0]&513&&ws(b,P)},[P,n,i,d,h,f,c,k,y,b,w,x,Ce,be,ge,Re,Se,Be,ue,He,Ss,we,zs,R,_,l,a,m,o,E,B,q,js,Os,Us,Is,Ls,Ps]}var ma=class extends me{constructor(e){super(),he(this,e,ha,Ea,fe,{base_path:25,page_size:26,reset_styles:1,show_images:2,show_sub_results:3,excerpt_length:24,process_result:4,process_term:27,show_empty_filters:5,open_filters:6,debounce_timeout_ms:28,pagefind_options:29,merge_index:30,trigger_search_term:23,translations:7,autofocus:8,sort:31,selected_filters:0},null,[-1,-1])}},Ca=ma,Fe;try{Fe=new URL(document.currentScript.src).pathname.match(/^(.*\/)(?:pagefind-)?ui.js.*$/)[1]}catch{Fe="/pagefind/"}var Ba=class{constructor(e){this._pfs=null;let t=e.element??"[data-pagefind-ui]",u=e.bundlePath??Fe,r=e.pageSize??5,s=e.resetStyles??!0,l=e.showImages??!0,a=e.showSubResults??!1,n=e.excerptLength??0,i=e.processResult??null,d=e.processTerm??null,_=e.showEmptyFilters??!0,h=e.openFilters??[],m=e.debounceTimeoutMs??300,f=e.mergeIndex??[],c=e.translations??[],o=e.autofocus??!1,E=e.sort??null;delete e.element,delete e.bundlePath,delete e.pageSize,delete e.resetStyles,delete e.showImages,delete e.showSubResults,delete e.excerptLength,delete e.processResult,delete e.processTerm,delete e.showEmptyFilters,delete e.openFilters,delete e.debounceTimeoutMs,delete e.mergeIndex,delete e.translations,delete e.autofocus,delete e.sort;const B=t instanceof HTMLElement?t:document.querySelector(t);B?this._pfs=new Ca({target:B,props:{base_path:u,page_size:r,reset_styles:s,show_images:l,show_sub_results:a,excerpt_length:n,process_result:i,process_term:d,show_empty_filters:_,open_filters:h,debounce_timeout_ms:m,merge_index:f,translations:c,autofocus:o,sort:E,pagefind_options:e}}):console.error(`Pagefind UI couldn't find the selector ${t}`)}triggerSearch(e){this._pfs.$$set({trigger_search_term:e})}triggerFilters(e){let t={};for(let[u,r]of Object.entries(e))if(Array.isArray(r))for(let s of r)t[`${u}:${s}`]=!0;else t[`${u}:${r}`]=!0;this._pfs.$$set({selected_filters:t})}destroy(){this._pfs.$destroy()}};export{Ba as PagefindUI}; diff --git a/pr-preview/pr-1029/app-432e6e5ddac89ddf1392.js b/pr-preview/pr-1029/app-432e6e5ddac89ddf1392.js deleted file mode 100644 index 01b4fab08..000000000 --- a/pr-preview/pr-1029/app-432e6e5ddac89ddf1392.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! For license information please see app-432e6e5ddac89ddf1392.js.LICENSE.txt */ -(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{"+3kn":function(e,a,n){const t=n("dVj6")(45,1418,1470,5120,6150,8275,8315,8331,8722,11799,11802,11840,11869,12316,12336,12448,65112,65123,65293,69293);t.addRange(8208,8213).addRange(11834,11835).addRange(65073,65074),e.exports=t},"+6XX":function(e,a,n){var t=n("y1pI");e.exports=function(e){return t(this.__data__,e)>-1}},"+K+b":function(e,a,n){var t=n("JHRd");e.exports=function(e){var a=new e.constructor(e.byteLength);return new t(a).set(new t(e)),a}},"+M1K":function(e,a,n){var t=n("WSbT"),d=RangeError;e.exports=function(e){var a=t(e);if(a<0)throw d("The argument can't be less than 0");return a}},"+Qka":function(e,a,n){var t=n("fmRc"),d=n("t2Dn"),r=n("cq/+"),o=n("T1AV"),i=n("GoyQ"),s=n("mTTR"),g=n("itsj");e.exports=function e(a,n,c,u,l){a!==n&&r(n,(function(r,s){if(l||(l=new t),i(r))o(a,n,s,c,e,u,l);else{var R=u?u(g(a,s),r,s+"",a,n,l):void 0;void 0===R&&(R=r),d(a,s,R)}}),s)}},"+QyN":function(e,a,n){const t=n("dVj6")();t.addRange(70320,70378).addRange(70384,70393),e.exports=t},"+XeO":function(e,a,n){const t=n("dVj6")(2972,3024,3031,7386,43251,70401,70403,73727);t.addRange(2385,2386).addRange(2404,2405).addRange(2946,2947).addRange(2949,2954).addRange(2958,2960).addRange(2962,2965).addRange(2969,2970).addRange(2974,2975).addRange(2979,2980).addRange(2984,2986).addRange(2990,3001).addRange(3006,3010).addRange(3014,3016).addRange(3018,3021).addRange(3046,3066).addRange(70459,70460).addRange(73664,73713),e.exports=t},"+ZDr":function(e,a,n){"use strict";var t=n("TqRt");a.__esModule=!0,a.withPrefix=p,a.withAssetPrefix=function(e){return p(e,f())},a.navigateTo=a.replace=a.push=a.navigate=a.default=void 0;var d=t(n("8OQS")),r=t(n("PJYZ")),o=t(n("VbXa")),i=t(n("pVnL")),s=t(n("17x9")),g=t(n("q1tI")),c=n("YwZP"),u=n("LYrO"),l=n("cu4x");a.parsePath=l.parsePath;var R=function(e){return null==e?void 0:e.startsWith("/")};function p(e,a){var n,t;if(void 0===a&&(a=h()),!m(e))return e;if(e.startsWith("./")||e.startsWith("../"))return e;var d=null!==(n=null!==(t=a)&&void 0!==t?t:f())&&void 0!==n?n:"/";return""+((null==d?void 0:d.endsWith("/"))?d.slice(0,-1):d)+(e.startsWith("/")?e:"/"+e)}var f=function(){return"/pr-preview/pr-1029"},h=function(){return"/pr-preview/pr-1029"},m=function(e){return e&&!e.startsWith("http://")&&!e.startsWith("https://")&&!e.startsWith("//")};var b=function(e,a){return"number"==typeof e?e:m(e)?R(e)?p(e):function(e,a){return R(e)?e:(0,u.resolve)(e,a)}(e,a):e},y={activeClassName:s.default.string,activeStyle:s.default.object,partiallyActive:s.default.bool};function v(e){return g.default.createElement(c.Location,null,(function(a){var n=a.location;return g.default.createElement(j,(0,i.default)({},e,{_location:n}))}))}var j=function(e){function a(a){var n;(n=e.call(this,a)||this).defaultGetProps=function(e){var a=e.isPartiallyCurrent,t=e.isCurrent;return(n.props.partiallyActive?a:t)?{className:[n.props.className,n.props.activeClassName].filter(Boolean).join(" "),style:(0,i.default)({},n.props.style,n.props.activeStyle)}:null};var t=!1;return"undefined"!=typeof window&&window.IntersectionObserver&&(t=!0),n.state={IOSupported:t},n.handleRef=n.handleRef.bind((0,r.default)(n)),n}(0,o.default)(a,e);var n=a.prototype;return n._prefetch=function(){var e=window.location.pathname;this.props._location&&this.props._location.pathname&&(e=this.props._location.pathname);var a=b(this.props.to,e),n=(0,l.parsePath)(a).pathname;e!==n&&___loader.enqueue(n)},n.componentDidUpdate=function(e,a){this.props.to===e.to||this.state.IOSupported||this._prefetch()},n.componentDidMount=function(){this.state.IOSupported||this._prefetch()},n.componentWillUnmount=function(){if(this.io){var e=this.io,a=e.instance,n=e.el;a.unobserve(n),a.disconnect()}},n.handleRef=function(e){var a,n,t,d=this;this.props.innerRef&&this.props.innerRef.hasOwnProperty("current")?this.props.innerRef.current=e:this.props.innerRef&&this.props.innerRef(e),this.state.IOSupported&&e&&(this.io=(a=e,n=function(){d._prefetch()},(t=new window.IntersectionObserver((function(e){e.forEach((function(e){a===e.target&&(e.isIntersecting||e.intersectionRatio>0)&&(t.unobserve(a),t.disconnect(),n())}))}))).observe(a),{instance:t,el:a}))},n.render=function(){var e=this,a=this.props,n=a.to,t=a.getProps,r=void 0===t?this.defaultGetProps:t,o=a.onClick,s=a.onMouseEnter,u=(a.activeClassName,a.activeStyle,a.innerRef,a.partiallyActive,a.state),R=a.replace,p=a._location,f=(0,d.default)(a,["to","getProps","onClick","onMouseEnter","activeClassName","activeStyle","innerRef","partiallyActive","state","replace","_location"]);var h=b(n,p.pathname);return m(h)?g.default.createElement(c.Link,(0,i.default)({to:h,state:u,getProps:r,innerRef:this.handleRef,onMouseEnter:function(e){s&&s(e),___loader.hovering((0,l.parsePath)(h).pathname)},onClick:function(a){if(o&&o(a),!(0!==a.button||e.props.target||a.defaultPrevented||a.metaKey||a.altKey||a.ctrlKey||a.shiftKey)){a.preventDefault();var n=R,t=encodeURI(h)===p.pathname;"boolean"!=typeof R&&t&&(n=!0),window.___navigate(h,{state:u,replace:n})}return!0}},f)):g.default.createElement("a",(0,i.default)({href:h},f))},a}(g.default.Component);j.propTypes=(0,i.default)({},y,{onClick:s.default.func,to:s.default.string.isRequired,replace:s.default.bool,state:s.default.object});var O=function(e,a,n){return console.warn('The "'+e+'" method is now deprecated and will be removed in Gatsby v'+n+'. Please use "'+a+'" instead.')},_=g.default.forwardRef((function(e,a){return g.default.createElement(v,(0,i.default)({innerRef:a},e))}));a.default=_;a.navigate=function(e,a){window.___navigate(b(e,window.location.pathname),a)};var x=function(e){O("push","navigate",3),window.___push(b(e,window.location.pathname))};a.push=x;a.replace=function(e){O("replace","navigate",3),window.___replace(b(e,window.location.pathname))};a.navigateTo=function(e){return O("navigateTo","navigate",3),x(e)}},"+c4W":function(e,a,n){var t=n("711d"),d=n("4/ic"),r=n("9ggG"),o=n("9Nap");e.exports=function(e){return r(e)?t(o(e)):d(e)}},"+hQC":function(e,a,n){const t=n("dVj6")(9757,9977,127877,127943,128124,128143,128145,128170,128378,128400,128675,128704,128716,129292,129295,129318,129399,129467);t.addRange(9994,9997).addRange(127938,127940).addRange(127946,127948).addRange(128066,128067).addRange(128070,128080).addRange(128102,128120).addRange(128129,128131).addRange(128133,128135).addRange(128372,128373).addRange(128405,128406).addRange(128581,128583).addRange(128587,128591).addRange(128692,128694).addRange(129304,129311).addRange(129328,129337).addRange(129340,129342).addRange(129461,129462).addRange(129464,129465).addRange(129485,129487).addRange(129489,129501).addRange(129731,129733).addRange(129776,129782),e.exports=t},"+iFO":function(e,a,n){var t=n("dTAl"),d=n("LcsW"),r=n("6sVZ");e.exports=function(e){return"function"!=typeof e.constructor||r(e)?{}:t(d(e))}},"+mUh":function(e,a,n){var t=n("sZCt")("throttle",n("DzJC"));t.placeholder=n("wuTn"),e.exports=t},"/9aa":function(e,a,n){var t=n("NykK"),d=n("ExA7");e.exports=function(e){return"symbol"==typeof e||d(e)&&"[object Symbol]"==t(e)}},"/GqU":function(e,a,n){var t=n("RK3t"),d=n("HYAF");e.exports=function(e){return t(d(e))}},"/Hxr":function(e,a,n){const t=n("dVj6")();t.addRange(2404,2405).addRange(73056,73061).addRange(73063,73064).addRange(73066,73102).addRange(73104,73105).addRange(73107,73112).addRange(73120,73129),e.exports=t},"/I8K":function(e,a,n){const t=n("dVj6")();t.addRange(68864,68903).addRange(68912,68921),e.exports=t},"/VW1":function(e,a,n){const t=n("dVj6")(170,181,186,748,750,895,902,908,1369,1749,1791,1808,1969,2042,2074,2084,2088,2365,2384,2482,2493,2510,2556,2654,2749,2768,2809,2877,2929,2947,2972,3024,3133,3165,3200,3261,3389,3406,3517,3716,3749,3773,3782,3840,4159,4193,4238,4295,4301,4696,4800,6103,6108,6314,6823,7418,8025,8027,8029,8126,8305,8319,8450,8455,8469,8484,8486,8488,8526,11559,11565,11631,42963,43259,43471,43642,43697,43712,43714,64285,64318,67592,67644,68096,69415,69749,69956,69959,70006,70106,70108,70280,70461,70480,70855,71236,71352,71945,71999,72001,72161,72163,72192,72250,72272,72349,72768,73030,73112,73648,94032,94179,119970,119995,120134,123214,125259,126500,126503,126521,126523,126530,126535,126537,126539,126548,126551,126553,126555,126557,126559,126564,126590);t.addRange(65,90).addRange(97,122).addRange(192,214).addRange(216,246).addRange(248,705).addRange(710,721).addRange(736,740).addRange(880,884).addRange(886,887).addRange(890,893).addRange(904,906).addRange(910,929).addRange(931,1013).addRange(1015,1153).addRange(1162,1327).addRange(1329,1366).addRange(1376,1416).addRange(1488,1514).addRange(1519,1522).addRange(1568,1610).addRange(1646,1647).addRange(1649,1747).addRange(1765,1766).addRange(1774,1775).addRange(1786,1788).addRange(1810,1839).addRange(1869,1957).addRange(1994,2026).addRange(2036,2037).addRange(2048,2069).addRange(2112,2136).addRange(2144,2154).addRange(2160,2183).addRange(2185,2190).addRange(2208,2249).addRange(2308,2361).addRange(2392,2401).addRange(2417,2432).addRange(2437,2444).addRange(2447,2448).addRange(2451,2472).addRange(2474,2480).addRange(2486,2489).addRange(2524,2525).addRange(2527,2529).addRange(2544,2545).addRange(2565,2570).addRange(2575,2576).addRange(2579,2600).addRange(2602,2608).addRange(2610,2611),t.addRange(2613,2614).addRange(2616,2617).addRange(2649,2652).addRange(2674,2676).addRange(2693,2701).addRange(2703,2705).addRange(2707,2728).addRange(2730,2736).addRange(2738,2739).addRange(2741,2745).addRange(2784,2785).addRange(2821,2828).addRange(2831,2832).addRange(2835,2856).addRange(2858,2864).addRange(2866,2867).addRange(2869,2873).addRange(2908,2909).addRange(2911,2913).addRange(2949,2954).addRange(2958,2960).addRange(2962,2965).addRange(2969,2970).addRange(2974,2975).addRange(2979,2980).addRange(2984,2986).addRange(2990,3001).addRange(3077,3084).addRange(3086,3088).addRange(3090,3112).addRange(3114,3129).addRange(3160,3162).addRange(3168,3169).addRange(3205,3212).addRange(3214,3216).addRange(3218,3240).addRange(3242,3251).addRange(3253,3257).addRange(3293,3294).addRange(3296,3297).addRange(3313,3314).addRange(3332,3340).addRange(3342,3344).addRange(3346,3386).addRange(3412,3414).addRange(3423,3425).addRange(3450,3455).addRange(3461,3478).addRange(3482,3505).addRange(3507,3515).addRange(3520,3526),t.addRange(3585,3632).addRange(3634,3635).addRange(3648,3654).addRange(3713,3714).addRange(3718,3722).addRange(3724,3747).addRange(3751,3760).addRange(3762,3763).addRange(3776,3780).addRange(3804,3807).addRange(3904,3911).addRange(3913,3948).addRange(3976,3980).addRange(4096,4138).addRange(4176,4181).addRange(4186,4189).addRange(4197,4198).addRange(4206,4208).addRange(4213,4225).addRange(4256,4293).addRange(4304,4346).addRange(4348,4680).addRange(4682,4685).addRange(4688,4694).addRange(4698,4701).addRange(4704,4744).addRange(4746,4749).addRange(4752,4784).addRange(4786,4789).addRange(4792,4798).addRange(4802,4805).addRange(4808,4822).addRange(4824,4880).addRange(4882,4885).addRange(4888,4954).addRange(4992,5007).addRange(5024,5109).addRange(5112,5117).addRange(5121,5740).addRange(5743,5759).addRange(5761,5786).addRange(5792,5866).addRange(5870,5880).addRange(5888,5905).addRange(5919,5937).addRange(5952,5969).addRange(5984,5996).addRange(5998,6e3).addRange(6016,6067).addRange(6176,6264).addRange(6272,6312),t.addRange(6320,6389).addRange(6400,6430).addRange(6480,6509).addRange(6512,6516).addRange(6528,6571).addRange(6576,6601).addRange(6656,6678).addRange(6688,6740).addRange(6917,6963).addRange(6981,6988).addRange(7043,7072).addRange(7086,7087).addRange(7098,7141).addRange(7168,7203).addRange(7245,7247).addRange(7258,7293).addRange(7296,7304).addRange(7312,7354).addRange(7357,7359).addRange(7401,7404).addRange(7406,7411).addRange(7413,7414).addRange(7424,7615).addRange(7680,7957).addRange(7960,7965).addRange(7968,8005).addRange(8008,8013).addRange(8016,8023).addRange(8031,8061).addRange(8064,8116).addRange(8118,8124).addRange(8130,8132).addRange(8134,8140).addRange(8144,8147).addRange(8150,8155).addRange(8160,8172).addRange(8178,8180).addRange(8182,8188).addRange(8336,8348).addRange(8458,8467).addRange(8472,8477).addRange(8490,8505).addRange(8508,8511).addRange(8517,8521).addRange(8544,8584).addRange(11264,11492).addRange(11499,11502).addRange(11506,11507).addRange(11520,11557).addRange(11568,11623).addRange(11648,11670),t.addRange(11680,11686).addRange(11688,11694).addRange(11696,11702).addRange(11704,11710).addRange(11712,11718).addRange(11720,11726).addRange(11728,11734).addRange(11736,11742).addRange(12293,12295).addRange(12321,12329).addRange(12337,12341).addRange(12344,12348).addRange(12353,12438).addRange(12443,12447).addRange(12449,12538).addRange(12540,12543).addRange(12549,12591).addRange(12593,12686).addRange(12704,12735).addRange(12784,12799).addRange(13312,19903).addRange(19968,42124).addRange(42192,42237).addRange(42240,42508).addRange(42512,42527).addRange(42538,42539).addRange(42560,42606).addRange(42623,42653).addRange(42656,42735).addRange(42775,42783).addRange(42786,42888).addRange(42891,42954).addRange(42960,42961).addRange(42965,42969).addRange(42994,43009).addRange(43011,43013).addRange(43015,43018).addRange(43020,43042).addRange(43072,43123).addRange(43138,43187).addRange(43250,43255).addRange(43261,43262).addRange(43274,43301).addRange(43312,43334).addRange(43360,43388).addRange(43396,43442).addRange(43488,43492).addRange(43494,43503).addRange(43514,43518).addRange(43520,43560).addRange(43584,43586),t.addRange(43588,43595).addRange(43616,43638).addRange(43646,43695).addRange(43701,43702).addRange(43705,43709).addRange(43739,43741).addRange(43744,43754).addRange(43762,43764).addRange(43777,43782).addRange(43785,43790).addRange(43793,43798).addRange(43808,43814).addRange(43816,43822).addRange(43824,43866).addRange(43868,43881).addRange(43888,44002).addRange(44032,55203).addRange(55216,55238).addRange(55243,55291).addRange(63744,64109).addRange(64112,64217).addRange(64256,64262).addRange(64275,64279).addRange(64287,64296).addRange(64298,64310).addRange(64312,64316).addRange(64320,64321).addRange(64323,64324).addRange(64326,64433).addRange(64467,64829).addRange(64848,64911).addRange(64914,64967).addRange(65008,65019).addRange(65136,65140).addRange(65142,65276).addRange(65313,65338).addRange(65345,65370).addRange(65382,65470).addRange(65474,65479).addRange(65482,65487).addRange(65490,65495).addRange(65498,65500).addRange(65536,65547).addRange(65549,65574).addRange(65576,65594).addRange(65596,65597).addRange(65599,65613).addRange(65616,65629).addRange(65664,65786).addRange(65856,65908).addRange(66176,66204),t.addRange(66208,66256).addRange(66304,66335).addRange(66349,66378).addRange(66384,66421).addRange(66432,66461).addRange(66464,66499).addRange(66504,66511).addRange(66513,66517).addRange(66560,66717).addRange(66736,66771).addRange(66776,66811).addRange(66816,66855).addRange(66864,66915).addRange(66928,66938).addRange(66940,66954).addRange(66956,66962).addRange(66964,66965).addRange(66967,66977).addRange(66979,66993).addRange(66995,67001).addRange(67003,67004).addRange(67072,67382).addRange(67392,67413).addRange(67424,67431).addRange(67456,67461).addRange(67463,67504).addRange(67506,67514).addRange(67584,67589).addRange(67594,67637).addRange(67639,67640).addRange(67647,67669).addRange(67680,67702).addRange(67712,67742).addRange(67808,67826).addRange(67828,67829).addRange(67840,67861).addRange(67872,67897).addRange(67968,68023).addRange(68030,68031).addRange(68112,68115).addRange(68117,68119).addRange(68121,68149).addRange(68192,68220).addRange(68224,68252).addRange(68288,68295).addRange(68297,68324).addRange(68352,68405).addRange(68416,68437).addRange(68448,68466).addRange(68480,68497).addRange(68608,68680),t.addRange(68736,68786).addRange(68800,68850).addRange(68864,68899).addRange(69248,69289).addRange(69296,69297).addRange(69376,69404).addRange(69424,69445).addRange(69488,69505).addRange(69552,69572).addRange(69600,69622).addRange(69635,69687).addRange(69745,69746).addRange(69763,69807).addRange(69840,69864).addRange(69891,69926).addRange(69968,70002).addRange(70019,70066).addRange(70081,70084).addRange(70144,70161).addRange(70163,70187).addRange(70272,70278).addRange(70282,70285).addRange(70287,70301).addRange(70303,70312).addRange(70320,70366).addRange(70405,70412).addRange(70415,70416).addRange(70419,70440).addRange(70442,70448).addRange(70450,70451).addRange(70453,70457).addRange(70493,70497).addRange(70656,70708).addRange(70727,70730).addRange(70751,70753).addRange(70784,70831).addRange(70852,70853).addRange(71040,71086).addRange(71128,71131).addRange(71168,71215).addRange(71296,71338).addRange(71424,71450).addRange(71488,71494).addRange(71680,71723).addRange(71840,71903).addRange(71935,71942).addRange(71948,71955).addRange(71957,71958).addRange(71960,71983).addRange(72096,72103).addRange(72106,72144),t.addRange(72203,72242).addRange(72284,72329).addRange(72368,72440).addRange(72704,72712).addRange(72714,72750).addRange(72818,72847).addRange(72960,72966).addRange(72968,72969).addRange(72971,73008).addRange(73056,73061).addRange(73063,73064).addRange(73066,73097).addRange(73440,73458).addRange(73728,74649).addRange(74752,74862).addRange(74880,75075).addRange(77712,77808).addRange(77824,78894).addRange(82944,83526).addRange(92160,92728).addRange(92736,92766).addRange(92784,92862).addRange(92880,92909).addRange(92928,92975).addRange(92992,92995).addRange(93027,93047).addRange(93053,93071).addRange(93760,93823).addRange(93952,94026).addRange(94099,94111).addRange(94176,94177).addRange(94208,100343).addRange(100352,101589).addRange(101632,101640).addRange(110576,110579).addRange(110581,110587).addRange(110589,110590).addRange(110592,110882).addRange(110928,110930).addRange(110948,110951).addRange(110960,111355).addRange(113664,113770).addRange(113776,113788).addRange(113792,113800).addRange(113808,113817).addRange(119808,119892).addRange(119894,119964).addRange(119966,119967).addRange(119973,119974).addRange(119977,119980).addRange(119982,119993),t.addRange(119997,120003).addRange(120005,120069).addRange(120071,120074).addRange(120077,120084).addRange(120086,120092).addRange(120094,120121).addRange(120123,120126).addRange(120128,120132).addRange(120138,120144).addRange(120146,120485).addRange(120488,120512).addRange(120514,120538).addRange(120540,120570).addRange(120572,120596).addRange(120598,120628).addRange(120630,120654).addRange(120656,120686).addRange(120688,120712).addRange(120714,120744).addRange(120746,120770).addRange(120772,120779).addRange(122624,122654).addRange(123136,123180).addRange(123191,123197).addRange(123536,123565).addRange(123584,123627).addRange(124896,124902).addRange(124904,124907).addRange(124909,124910).addRange(124912,124926).addRange(124928,125124).addRange(125184,125251).addRange(126464,126467).addRange(126469,126495).addRange(126497,126498).addRange(126505,126514).addRange(126516,126519).addRange(126541,126543).addRange(126545,126546).addRange(126561,126562).addRange(126567,126570).addRange(126572,126578).addRange(126580,126583).addRange(126585,126588).addRange(126592,126601).addRange(126603,126619).addRange(126625,126627).addRange(126629,126633).addRange(126635,126651).addRange(131072,173791).addRange(173824,177976),t.addRange(177984,178205).addRange(178208,183969).addRange(183984,191456).addRange(194560,195101).addRange(196608,201546),e.exports=t},"/b8u":function(e,a,n){var t=n("BPiQ");e.exports=t&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},"/dLw":function(e,a,n){const t=n("dVj6")(36,43,94,96,124,126,172,180,184,215,247,749,885,1014,1154,1547,1758,1769,2038,2184,2801,2928,3199,3407,3449,3647,3859,3892,3894,3896,5741,6107,6464,8125,8260,8274,8468,8485,8487,8489,8494,8527,12292,12320,12880,43867,64297,64975,65122,65129,65284,65291,65342,65344,65372,65374,65952,68296,71487,92997,113820,119365,120513,120539,120571,120597,120629,120655,120687,120713,120745,120771,123215,123647,126124,126128,126254,129008);t.addRange(60,62).addRange(162,166).addRange(168,169).addRange(174,177).addRange(706,709).addRange(722,735).addRange(741,747).addRange(751,767).addRange(900,901).addRange(1421,1423).addRange(1542,1544).addRange(1550,1551).addRange(1789,1790).addRange(2046,2047).addRange(2546,2547).addRange(2554,2555).addRange(3059,3066).addRange(3841,3843).addRange(3861,3863).addRange(3866,3871).addRange(4030,4037).addRange(4039,4044).addRange(4046,4047).addRange(4053,4056).addRange(4254,4255).addRange(5008,5017).addRange(6622,6655).addRange(7009,7018).addRange(7028,7036).addRange(8127,8129).addRange(8141,8143).addRange(8157,8159).addRange(8173,8175).addRange(8189,8190).addRange(8314,8316).addRange(8330,8332).addRange(8352,8384).addRange(8448,8449).addRange(8451,8454).addRange(8456,8457).addRange(8470,8472).addRange(8478,8483).addRange(8506,8507).addRange(8512,8516).addRange(8522,8525).addRange(8586,8587).addRange(8592,8967).addRange(8972,9e3).addRange(9003,9254).addRange(9280,9290).addRange(9372,9449),t.addRange(9472,10087).addRange(10132,10180).addRange(10183,10213).addRange(10224,10626).addRange(10649,10711).addRange(10716,10747).addRange(10750,11123).addRange(11126,11157).addRange(11159,11263).addRange(11493,11498).addRange(11856,11857).addRange(11904,11929).addRange(11931,12019).addRange(12032,12245).addRange(12272,12283).addRange(12306,12307).addRange(12342,12343).addRange(12350,12351).addRange(12443,12444).addRange(12688,12689).addRange(12694,12703).addRange(12736,12771).addRange(12800,12830).addRange(12842,12871).addRange(12896,12927).addRange(12938,12976).addRange(12992,13311).addRange(19904,19967).addRange(42128,42182).addRange(42752,42774).addRange(42784,42785).addRange(42889,42890).addRange(43048,43051).addRange(43062,43065).addRange(43639,43641).addRange(43882,43883).addRange(64434,64450).addRange(64832,64847).addRange(65020,65023).addRange(65124,65126).addRange(65308,65310).addRange(65504,65510).addRange(65512,65518).addRange(65532,65533).addRange(65847,65855).addRange(65913,65929).addRange(65932,65934).addRange(65936,65948).addRange(66e3,66044).addRange(67703,67704).addRange(73685,73713),t.addRange(92988,92991).addRange(118608,118723).addRange(118784,119029).addRange(119040,119078).addRange(119081,119140).addRange(119146,119148).addRange(119171,119172).addRange(119180,119209).addRange(119214,119274).addRange(119296,119361).addRange(119552,119638).addRange(120832,121343).addRange(121399,121402).addRange(121453,121460).addRange(121462,121475).addRange(121477,121478).addRange(126704,126705).addRange(126976,127019).addRange(127024,127123).addRange(127136,127150).addRange(127153,127167).addRange(127169,127183).addRange(127185,127221).addRange(127245,127405).addRange(127462,127490).addRange(127504,127547).addRange(127552,127560).addRange(127568,127569).addRange(127584,127589).addRange(127744,128727).addRange(128733,128748).addRange(128752,128764).addRange(128768,128883).addRange(128896,128984).addRange(128992,129003).addRange(129024,129035).addRange(129040,129095).addRange(129104,129113).addRange(129120,129159).addRange(129168,129197).addRange(129200,129201).addRange(129280,129619).addRange(129632,129645).addRange(129648,129652).addRange(129656,129660).addRange(129664,129670).addRange(129680,129708).addRange(129712,129722).addRange(129728,129733).addRange(129744,129753).addRange(129760,129767),t.addRange(129776,129782).addRange(129792,129938).addRange(129940,129994),e.exports=t},"/hTd":function(e,a,n){"use strict";a.__esModule=!0,a.SessionStorage=void 0;var t=function(){function e(){}var a=e.prototype;return a.read=function(e,a){var n=this.getStateKey(e,a);try{var t=window.sessionStorage.getItem(n);return t?JSON.parse(t):0}catch(d){return window&&window.___GATSBY_REACT_ROUTER_SCROLL&&window.___GATSBY_REACT_ROUTER_SCROLL[n]?window.___GATSBY_REACT_ROUTER_SCROLL[n]:0}},a.save=function(e,a,n){var t=this.getStateKey(e,a),d=JSON.stringify(n);try{window.sessionStorage.setItem(t,d)}catch(r){window&&window.___GATSBY_REACT_ROUTER_SCROLL||(window.___GATSBY_REACT_ROUTER_SCROLL={}),window.___GATSBY_REACT_ROUTER_SCROLL[t]=JSON.parse(d)}},a.getStateKey=function(e,a){var n="@@scroll|"+e.pathname;return null==a?n:n+"|"+a},e}();a.SessionStorage=t},"/kDM":function(e,a,n){const t=n("dVj6")(1548,1563,1567);t.addRange(1984,2042).addRange(2045,2047).addRange(64830,64831),e.exports=t},"/lCS":function(e,a,n){var t=n("gFfm"),d=n("jbM+"),r=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]];e.exports=function(e,a){return t(r,(function(n){var t="_."+n[0];a&n[1]&&!d(e,t)&&e.push(t)})),e.sort()}},"/pZ2":function(e,a,n){const t=n("dVj6")();t.addRange(68288,68326).addRange(68331,68342),e.exports=t},"/qLS":function(e,a,n){const t=n("dVj6")();t.addRange(66176,66204),e.exports=t},"/soj":function(e,a,n){const t=n("dVj6")(12295,66369,66378);t.addRange(5870,5872).addRange(8544,8578).addRange(8581,8584).addRange(12321,12329).addRange(12344,12346).addRange(42726,42735).addRange(65856,65908).addRange(66513,66517).addRange(74752,74862),e.exports=t},"/yAK":function(e,a,n){const t=n("dVj6")();t.addRange(1329,1366).addRange(1369,1418).addRange(1421,1423).addRange(64275,64279),e.exports=t},"02tC":function(e,a,n){const t=n("dVj6")();t.addRange(93760,93850),e.exports=t},"03A+":function(e,a,n){var t=n("JTzB"),d=n("ExA7"),r=Object.prototype,o=r.hasOwnProperty,i=r.propertyIsEnumerable,s=t(function(){return arguments}())?t:function(e){return d(e)&&o.call(e,"callee")&&!i.call(e,"callee")};e.exports=s},"0ADi":function(e,a,n){var t=n("heNW"),d=n("EldB"),r=n("Kz5y");e.exports=function(e,a,n,o){var i=1&a,s=d(e);return function a(){for(var d=-1,g=arguments.length,c=-1,u=o.length,l=Array(u+g),R=this&&this!==r&&this instanceof a?s:e;++c>5]|=1<<(31&e)},d.prototype.has=function(e){return!!(this.bits[e>>5]&1<<(31&e))};var r=function(e,a,n){this.start=e,this.end=a,this.original=n,this.intro="",this.outro="",this.content=n,this.storeName=!1,this.edited=!1,Object.defineProperties(this,{previous:{writable:!0,value:null},next:{writable:!0,value:null}})};r.prototype.appendLeft=function(e){this.outro+=e},r.prototype.appendRight=function(e){this.intro=this.intro+e},r.prototype.clone=function(){var e=new r(this.start,this.end,this.original);return e.intro=this.intro,e.outro=this.outro,e.content=this.content,e.storeName=this.storeName,e.edited=this.edited,e},r.prototype.contains=function(e){return this.start=t.length)return"\t";var d=t.reduce((function(e,a){var n=/^ +/.exec(a)[0].length;return Math.min(n,e)}),1/0);return new Array(d+1).join(" ")}function g(e,a){var n=e.split(/[/\\]/),t=a.split(/[/\\]/);for(n.pop();n[0]===t[0];)n.shift(),t.shift();if(n.length)for(var d=n.length;d--;)n[d]="..";return n.concat(t).join("/")}i.prototype.toString=function(){return JSON.stringify(this)},i.prototype.toUrl=function(){return"data:application/json;charset=utf-8;base64,"+o(this.toString())};var c=Object.prototype.toString;function u(e){return"[object Object]"===c.call(e)}function l(e){for(var a=e.split("\n"),n=[],t=0,d=0;t>1;e=0&&d.push(t),this.rawSegments.push(d)}else this.pending&&this.rawSegments.push(this.pending);this.advance(a),this.pending=null},R.prototype.addUneditedChunk=function(e,a,n,t,d){for(var r=a.start,o=!0;r1){for(var n=0;n=e&&n<=a)throw new Error("Cannot move a selection inside itself");this._split(e),this._split(a),this._split(n);var t=this.byStart[e],d=this.byEnd[a],r=t.previous,o=d.next,i=this.byStart[n];if(!i&&d===this.lastChunk)return this;var s=i?i.previous:this.lastChunk;return r&&(r.next=o),o&&(o.previous=r),s&&(s.next=t),i&&(i.previous=d),t.previous||(this.firstChunk=d.next),d.next||(this.lastChunk=t.previous,this.lastChunk.next=null),t.previous=s,d.next=i||null,s||(this.firstChunk=t),i||(this.lastChunk=d),this},h.prototype.overwrite=function(e,a,n,t){if("string"!=typeof n)throw new TypeError("replacement content must be a string");for(;e<0;)e+=this.original.length;for(;a<0;)a+=this.original.length;if(a>this.original.length)throw new Error("end is out of bounds");if(e===a)throw new Error("Cannot overwrite a zero-length range – use appendLeft or prependRight instead");this._split(e),this._split(a),!0===t&&(f.storeName||(console.warn("The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string"),f.storeName=!0),t={storeName:!0});var d=void 0!==t&&t.storeName,o=void 0!==t&&t.contentOnly;if(d){var i=this.original.slice(e,a);Object.defineProperty(this.storedNames,i,{writable:!0,value:!0,enumerable:!0})}var s=this.byStart[e],g=this.byEnd[a];if(s){for(var c=s;c!==g;){if(c.next!==this.byStart[c.end])throw new Error("Cannot overwrite across a split point");(c=c.next).edit("",!1)}s.edit(n,d,o)}else{var u=new r(e,a,"").edit(n,d);g.next=u,u.previous=g}return this},h.prototype.prepend=function(e){if("string"!=typeof e)throw new TypeError("outro content must be a string");return this.intro=e+this.intro,this},h.prototype.prependLeft=function(e,a){if("string"!=typeof a)throw new TypeError("inserted content must be a string");this._split(e);var n=this.byEnd[e];return n?n.prependLeft(a):this.intro=a+this.intro,this},h.prototype.prependRight=function(e,a){if("string"!=typeof a)throw new TypeError("inserted content must be a string");this._split(e);var n=this.byStart[e];return n?n.prependRight(a):this.outro=a+this.outro,this},h.prototype.remove=function(e,a){for(;e<0;)e+=this.original.length;for(;a<0;)a+=this.original.length;if(e===a)return this;if(e<0||a>this.original.length)throw new Error("Character is out of bounds");if(e>a)throw new Error("end must be greater than start");this._split(e),this._split(a);for(var n=this.byStart[e];n;)n.intro="",n.outro="",n.edit(""),n=a>n.end?this.byStart[n.end]:null;return this},h.prototype.lastChar=function(){if(this.outro.length)return this.outro[this.outro.length-1];var e=this.lastChunk;do{if(e.outro.length)return e.outro[e.outro.length-1];if(e.content.length)return e.content[e.content.length-1];if(e.intro.length)return e.intro[e.intro.length-1]}while(e=e.previous);return this.intro.length?this.intro[this.intro.length-1]:""},h.prototype.lastLine=function(){var e=this.outro.lastIndexOf(p);if(-1!==e)return this.outro.substr(e+1);var a=this.outro,n=this.lastChunk;do{if(n.outro.length>0){if(-1!==(e=n.outro.lastIndexOf(p)))return n.outro.substr(e+1)+a;a=n.outro+a}if(n.content.length>0){if(-1!==(e=n.content.lastIndexOf(p)))return n.content.substr(e+1)+a;a=n.content+a}if(n.intro.length>0){if(-1!==(e=n.intro.lastIndexOf(p)))return n.intro.substr(e+1)+a;a=n.intro+a}}while(n=n.previous);return-1!==(e=this.intro.lastIndexOf(p))?this.intro.substr(e+1)+a:this.intro+a},h.prototype.slice=function(e,a){for(void 0===e&&(e=0),void 0===a&&(a=this.original.length);e<0;)e+=this.original.length;for(;a<0;)a+=this.original.length;for(var n="",t=this.firstChunk;t&&(t.start>e||t.end<=e);){if(t.start=a)return n;t=t.next}if(t&&t.edited&&t.start!==e)throw new Error("Cannot use replaced character "+e+" as slice start anchor.");for(var d=t;t;){!t.intro||d===t&&t.start!==e||(n+=t.intro);var r=t.start=a;if(r&&t.edited&&t.end!==a)throw new Error("Cannot use replaced character "+a+" as slice end anchor.");var o=d===t?e-t.start:0,i=r?t.content.length+a-t.end:t.content.length;if(n+=t.content.slice(o,i),!t.outro||r&&t.end!==a||(n+=t.outro),r)break;t=t.next}return n},h.prototype.snip=function(e,a){var n=this.clone();return n.remove(0,e),n.remove(a,n.original.length),n},h.prototype._split=function(e){if(!this.byStart[e]&&!this.byEnd[e])for(var a=this.lastSearchedChunk,n=e>a.end;a;){if(a.contains(e))return this._splitChunk(a,e);a=n?this.byStart[a.end]:this.byEnd[a.start]}},h.prototype._splitChunk=function(e,a){if(e.edited&&e.content.length){var n=l(this.original)(a);throw new Error("Cannot split a chunk that has already been edited ("+n.line+":"+n.column+' – "'+e.original+'")')}var t=e.split(a);return this.byEnd[a]=e,this.byStart[a]=t,this.byEnd[t.end]=t,e===this.lastChunk&&(this.lastChunk=t),this.lastSearchedChunk=e,!0},h.prototype.toString=function(){for(var e=this.intro,a=this.firstChunk;a;)e+=a.toString(),a=a.next;return e+this.outro},h.prototype.isEmpty=function(){var e=this.firstChunk;do{if(e.intro.length&&e.intro.trim()||e.content.length&&e.content.trim()||e.outro.length&&e.outro.trim())return!1}while(e=e.next);return!0},h.prototype.length=function(){var e=this.firstChunk,a=0;do{a+=e.intro.length+e.content.length+e.outro.length}while(e=e.next);return a},h.prototype.trimLines=function(){return this.trim("[\\r\\n]")},h.prototype.trim=function(e){return this.trimStart(e).trimEnd(e)},h.prototype.trimEndAborted=function(e){var a=new RegExp((e||"\\s")+"+$");if(this.outro=this.outro.replace(a,""),this.outro.length)return!0;var n=this.lastChunk;do{var t=n.end,d=n.trimEnd(a);if(n.end!==t&&(this.lastChunk===n&&(this.lastChunk=n.next),this.byEnd[n.end]=n,this.byStart[n.next.start]=n.next,this.byEnd[n.next.end]=n.next),d)return!0;n=n.previous}while(n);return!1},h.prototype.trimEnd=function(e){return this.trimEndAborted(e),this},h.prototype.trimStartAborted=function(e){var a=new RegExp("^"+(e||"\\s")+"+");if(this.intro=this.intro.replace(a,""),this.intro.length)return!0;var n=this.firstChunk;do{var t=n.end,d=n.trimStart(a);if(n.end!==t&&(n===this.lastChunk&&(this.lastChunk=n.next),this.byEnd[n.end]=n,this.byStart[n.next.start]=n.next,this.byEnd[n.next.end]=n.next),d)return!0;n=n.next}while(n);return!1},h.prototype.trimStart=function(e){return this.trimStartAborted(e),this};var m=Object.prototype.hasOwnProperty,b=function(e){void 0===e&&(e={}),this.intro=e.intro||"",this.separator=void 0!==e.separator?e.separator:"\n",this.sources=[],this.uniqueSources=[],this.uniqueSourceIndexByFilename={}};b.prototype.addSource=function(e){if(e instanceof h)return this.addSource({content:e,filename:e.filename,separator:this.separator});if(!u(e)||!e.content)throw new Error("bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`");if(["filename","indentExclusionRanges","separator"].forEach((function(a){m.call(e,a)||(e[a]=e.content[a])})),void 0===e.separator&&(e.separator=this.separator),e.filename)if(m.call(this.uniqueSourceIndexByFilename,e.filename)){var a=this.uniqueSources[this.uniqueSourceIndexByFilename[e.filename]];if(e.content.original!==a.content)throw new Error("Illegal source: same filename ("+e.filename+"), different contents")}else this.uniqueSourceIndexByFilename[e.filename]=this.uniqueSources.length,this.uniqueSources.push({filename:e.filename,content:e.content.original});return this.sources.push(e),this},b.prototype.append=function(e,a){return this.addSource({content:new h(e),separator:a&&a.separator||""}),this},b.prototype.clone=function(){var e=new b({intro:this.intro,separator:this.separator});return this.sources.forEach((function(a){e.addSource({filename:a.filename,content:a.content.clone(),separator:a.separator})})),e},b.prototype.generateDecodedMap=function(e){var a=this;void 0===e&&(e={});var n=[];this.sources.forEach((function(e){Object.keys(e.content.storedNames).forEach((function(e){~n.indexOf(e)||n.push(e)}))}));var t=new R(e.hires);return this.intro&&t.advance(this.intro),this.sources.forEach((function(e,d){d>0&&t.advance(a.separator);var r=e.filename?a.uniqueSourceIndexByFilename[e.filename]:-1,o=e.content,i=l(o.original);o.intro&&t.advance(o.intro),o.firstChunk.eachNext((function(a){var d=i(a.start);a.intro.length&&t.advance(a.intro),e.filename?a.edited?t.addEdit(r,a.content,d,a.storeName?n.indexOf(a.original):-1):t.addUneditedChunk(r,a,o.original,d,o.sourcemapLocations):t.advance(a.content),a.outro.length&&t.advance(a.outro)})),o.outro&&t.advance(o.outro)})),{file:e.file?e.file.split(/[/\\]/).pop():null,sources:this.uniqueSources.map((function(a){return e.file?g(e.file,a.filename):a.filename})),sourcesContent:this.uniqueSources.map((function(a){return e.includeContent?a.content:null})),names:n,mappings:t.raw}},b.prototype.generateMap=function(e){return new i(this.generateDecodedMap(e))},b.prototype.getIndentString=function(){var e={};return this.sources.forEach((function(a){var n=a.content.indentStr;null!==n&&(e[n]||(e[n]=0),e[n]+=1)})),Object.keys(e).sort((function(a,n){return e[a]-e[n]}))[0]||"\t"},b.prototype.indent=function(e){var a=this;if(arguments.length||(e=this.getIndentString()),""===e)return this;var n=!this.intro||"\n"===this.intro.slice(-1);return this.sources.forEach((function(t,d){var r=void 0!==t.separator?t.separator:a.separator,o=n||d>0&&/\r?\n$/.test(r);t.content.indent(e,{exclude:t.indentExclusionRanges,indentStart:o}),n="\n"===t.content.lastChar()})),this.intro&&(this.intro=e+this.intro.replace(/^[^\n]/gm,(function(a,n){return n>0?e+a:a}))),this},b.prototype.prepend=function(e){return this.intro=e+this.intro,this},b.prototype.toString=function(){var e=this,a=this.sources.map((function(a,n){var t=void 0!==a.separator?a.separator:e.separator;return(n>0?t:"")+a.content.toString()})).join("");return this.intro+a},b.prototype.isEmpty=function(){return(!this.intro.length||!this.intro.trim())&&!this.sources.some((function(e){return!e.content.isEmpty()}))},b.prototype.length=function(){return this.sources.reduce((function(e,a){return e+a.content.length()}),this.intro.length)},b.prototype.trimLines=function(){return this.trim("[\\r\\n]")},b.prototype.trim=function(e){return this.trimStart(e).trimEnd(e)},b.prototype.trimStart=function(e){var a=new RegExp("^"+(e||"\\s")+"+");if(this.intro=this.intro.replace(a,""),!this.intro){var n,t=0;do{if(!(n=this.sources[t++]))break}while(!n.content.trimStartAborted(e))}return this},b.prototype.trimEnd=function(e){var a,n=new RegExp((e||"\\s")+"+$"),t=this.sources.length-1;do{if(!(a=this.sources[t--])){this.intro=this.intro.replace(n,"");break}}while(!a.content.trimEndAborted(e));return this}}).call(this,n("HDXh").Buffer)},"2JK7":function(e,a,n){const t=n("dVj6")();t.addRange(120832,121483).addRange(121499,121503).addRange(121505,121519),e.exports=t},"2PVI":function(e,a,n){const t=n("dVj6")();t.addRange(5760,5788),e.exports=t},"2TvA":function(e,a,n){const t=n("dVj6")(908,2142,2482,2519,2620,2641,2654,2768,2972,3024,3031,3165,3517,3530,3542,3716,3749,3782,4295,4301,4696,4800,6464,8025,8027,8029,11559,11565,42963,64318,64975,65279,65952,67592,67644,67903,69837,70280,70480,70487,71945,73018,73648,119970,119995,120134,123647,126500,126503,126521,126523,126530,126535,126537,126539,126548,126551,126553,126555,126557,126559,126564,126590,129008,917505);t.addRange(0,887).addRange(890,895).addRange(900,906).addRange(910,929).addRange(931,1327).addRange(1329,1366).addRange(1369,1418).addRange(1421,1423).addRange(1425,1479).addRange(1488,1514).addRange(1519,1524).addRange(1536,1805).addRange(1807,1866).addRange(1869,1969).addRange(1984,2042).addRange(2045,2093).addRange(2096,2110).addRange(2112,2139).addRange(2144,2154).addRange(2160,2190).addRange(2192,2193).addRange(2200,2435).addRange(2437,2444).addRange(2447,2448).addRange(2451,2472).addRange(2474,2480).addRange(2486,2489).addRange(2492,2500).addRange(2503,2504).addRange(2507,2510).addRange(2524,2525).addRange(2527,2531).addRange(2534,2558).addRange(2561,2563).addRange(2565,2570).addRange(2575,2576).addRange(2579,2600).addRange(2602,2608).addRange(2610,2611).addRange(2613,2614).addRange(2616,2617).addRange(2622,2626).addRange(2631,2632).addRange(2635,2637).addRange(2649,2652).addRange(2662,2678).addRange(2689,2691).addRange(2693,2701).addRange(2703,2705).addRange(2707,2728).addRange(2730,2736),t.addRange(2738,2739).addRange(2741,2745).addRange(2748,2757).addRange(2759,2761).addRange(2763,2765).addRange(2784,2787).addRange(2790,2801).addRange(2809,2815).addRange(2817,2819).addRange(2821,2828).addRange(2831,2832).addRange(2835,2856).addRange(2858,2864).addRange(2866,2867).addRange(2869,2873).addRange(2876,2884).addRange(2887,2888).addRange(2891,2893).addRange(2901,2903).addRange(2908,2909).addRange(2911,2915).addRange(2918,2935).addRange(2946,2947).addRange(2949,2954).addRange(2958,2960).addRange(2962,2965).addRange(2969,2970).addRange(2974,2975).addRange(2979,2980).addRange(2984,2986).addRange(2990,3001).addRange(3006,3010).addRange(3014,3016).addRange(3018,3021).addRange(3046,3066).addRange(3072,3084).addRange(3086,3088).addRange(3090,3112).addRange(3114,3129).addRange(3132,3140).addRange(3142,3144).addRange(3146,3149).addRange(3157,3158).addRange(3160,3162).addRange(3168,3171).addRange(3174,3183).addRange(3191,3212).addRange(3214,3216).addRange(3218,3240).addRange(3242,3251).addRange(3253,3257),t.addRange(3260,3268).addRange(3270,3272).addRange(3274,3277).addRange(3285,3286).addRange(3293,3294).addRange(3296,3299).addRange(3302,3311).addRange(3313,3314).addRange(3328,3340).addRange(3342,3344).addRange(3346,3396).addRange(3398,3400).addRange(3402,3407).addRange(3412,3427).addRange(3430,3455).addRange(3457,3459).addRange(3461,3478).addRange(3482,3505).addRange(3507,3515).addRange(3520,3526).addRange(3535,3540).addRange(3544,3551).addRange(3558,3567).addRange(3570,3572).addRange(3585,3642).addRange(3647,3675).addRange(3713,3714).addRange(3718,3722).addRange(3724,3747).addRange(3751,3773).addRange(3776,3780).addRange(3784,3789).addRange(3792,3801).addRange(3804,3807).addRange(3840,3911).addRange(3913,3948).addRange(3953,3991).addRange(3993,4028).addRange(4030,4044).addRange(4046,4058).addRange(4096,4293).addRange(4304,4680).addRange(4682,4685).addRange(4688,4694).addRange(4698,4701).addRange(4704,4744).addRange(4746,4749).addRange(4752,4784).addRange(4786,4789).addRange(4792,4798).addRange(4802,4805),t.addRange(4808,4822).addRange(4824,4880).addRange(4882,4885).addRange(4888,4954).addRange(4957,4988).addRange(4992,5017).addRange(5024,5109).addRange(5112,5117).addRange(5120,5788).addRange(5792,5880).addRange(5888,5909).addRange(5919,5942).addRange(5952,5971).addRange(5984,5996).addRange(5998,6e3).addRange(6002,6003).addRange(6016,6109).addRange(6112,6121).addRange(6128,6137).addRange(6144,6169).addRange(6176,6264).addRange(6272,6314).addRange(6320,6389).addRange(6400,6430).addRange(6432,6443).addRange(6448,6459).addRange(6468,6509).addRange(6512,6516).addRange(6528,6571).addRange(6576,6601).addRange(6608,6618).addRange(6622,6683).addRange(6686,6750).addRange(6752,6780).addRange(6783,6793).addRange(6800,6809).addRange(6816,6829).addRange(6832,6862).addRange(6912,6988).addRange(6992,7038).addRange(7040,7155).addRange(7164,7223).addRange(7227,7241).addRange(7245,7304).addRange(7312,7354).addRange(7357,7367).addRange(7376,7418).addRange(7424,7957).addRange(7960,7965).addRange(7968,8005).addRange(8008,8013),t.addRange(8016,8023).addRange(8031,8061).addRange(8064,8116).addRange(8118,8132).addRange(8134,8147).addRange(8150,8155).addRange(8157,8175).addRange(8178,8180).addRange(8182,8190).addRange(8192,8292).addRange(8294,8305).addRange(8308,8334).addRange(8336,8348).addRange(8352,8384).addRange(8400,8432).addRange(8448,8587).addRange(8592,9254).addRange(9280,9290).addRange(9312,11123).addRange(11126,11157).addRange(11159,11507).addRange(11513,11557).addRange(11568,11623).addRange(11631,11632).addRange(11647,11670).addRange(11680,11686).addRange(11688,11694).addRange(11696,11702).addRange(11704,11710).addRange(11712,11718).addRange(11720,11726).addRange(11728,11734).addRange(11736,11742).addRange(11744,11869).addRange(11904,11929).addRange(11931,12019).addRange(12032,12245).addRange(12272,12283).addRange(12288,12351).addRange(12353,12438).addRange(12441,12543).addRange(12549,12591).addRange(12593,12686).addRange(12688,12771).addRange(12784,12830).addRange(12832,42124).addRange(42128,42182).addRange(42192,42539).addRange(42560,42743).addRange(42752,42954).addRange(42960,42961),t.addRange(42965,42969).addRange(42994,43052).addRange(43056,43065).addRange(43072,43127).addRange(43136,43205).addRange(43214,43225).addRange(43232,43347).addRange(43359,43388).addRange(43392,43469).addRange(43471,43481).addRange(43486,43518).addRange(43520,43574).addRange(43584,43597).addRange(43600,43609).addRange(43612,43714).addRange(43739,43766).addRange(43777,43782).addRange(43785,43790).addRange(43793,43798).addRange(43808,43814).addRange(43816,43822).addRange(43824,43883).addRange(43888,44013).addRange(44016,44025).addRange(44032,55203).addRange(55216,55238).addRange(55243,55291).addRange(55296,64109).addRange(64112,64217).addRange(64256,64262).addRange(64275,64279).addRange(64285,64310).addRange(64312,64316).addRange(64320,64321).addRange(64323,64324).addRange(64326,64450).addRange(64467,64911).addRange(64914,64967).addRange(65008,65049).addRange(65056,65106).addRange(65108,65126).addRange(65128,65131).addRange(65136,65140).addRange(65142,65276).addRange(65281,65470).addRange(65474,65479).addRange(65482,65487).addRange(65490,65495).addRange(65498,65500).addRange(65504,65510).addRange(65512,65518),t.addRange(65529,65533).addRange(65536,65547).addRange(65549,65574).addRange(65576,65594).addRange(65596,65597).addRange(65599,65613).addRange(65616,65629).addRange(65664,65786).addRange(65792,65794).addRange(65799,65843).addRange(65847,65934).addRange(65936,65948).addRange(66e3,66045).addRange(66176,66204).addRange(66208,66256).addRange(66272,66299).addRange(66304,66339).addRange(66349,66378).addRange(66384,66426).addRange(66432,66461).addRange(66463,66499).addRange(66504,66517).addRange(66560,66717).addRange(66720,66729).addRange(66736,66771).addRange(66776,66811).addRange(66816,66855).addRange(66864,66915).addRange(66927,66938).addRange(66940,66954).addRange(66956,66962).addRange(66964,66965).addRange(66967,66977).addRange(66979,66993).addRange(66995,67001).addRange(67003,67004).addRange(67072,67382).addRange(67392,67413).addRange(67424,67431).addRange(67456,67461).addRange(67463,67504).addRange(67506,67514).addRange(67584,67589).addRange(67594,67637).addRange(67639,67640).addRange(67647,67669).addRange(67671,67742).addRange(67751,67759).addRange(67808,67826).addRange(67828,67829).addRange(67835,67867),t.addRange(67871,67897).addRange(67968,68023).addRange(68028,68047).addRange(68050,68099).addRange(68101,68102).addRange(68108,68115).addRange(68117,68119).addRange(68121,68149).addRange(68152,68154).addRange(68159,68168).addRange(68176,68184).addRange(68192,68255).addRange(68288,68326).addRange(68331,68342).addRange(68352,68405).addRange(68409,68437).addRange(68440,68466).addRange(68472,68497).addRange(68505,68508).addRange(68521,68527).addRange(68608,68680).addRange(68736,68786).addRange(68800,68850).addRange(68858,68903).addRange(68912,68921).addRange(69216,69246).addRange(69248,69289).addRange(69291,69293).addRange(69296,69297).addRange(69376,69415).addRange(69424,69465).addRange(69488,69513).addRange(69552,69579).addRange(69600,69622).addRange(69632,69709).addRange(69714,69749).addRange(69759,69826).addRange(69840,69864).addRange(69872,69881).addRange(69888,69940).addRange(69942,69959).addRange(69968,70006).addRange(70016,70111).addRange(70113,70132).addRange(70144,70161).addRange(70163,70206).addRange(70272,70278).addRange(70282,70285).addRange(70287,70301).addRange(70303,70313).addRange(70320,70378),t.addRange(70384,70393).addRange(70400,70403).addRange(70405,70412).addRange(70415,70416).addRange(70419,70440).addRange(70442,70448).addRange(70450,70451).addRange(70453,70457).addRange(70459,70468).addRange(70471,70472).addRange(70475,70477).addRange(70493,70499).addRange(70502,70508).addRange(70512,70516).addRange(70656,70747).addRange(70749,70753).addRange(70784,70855).addRange(70864,70873).addRange(71040,71093).addRange(71096,71133).addRange(71168,71236).addRange(71248,71257).addRange(71264,71276).addRange(71296,71353).addRange(71360,71369).addRange(71424,71450).addRange(71453,71467).addRange(71472,71494).addRange(71680,71739).addRange(71840,71922).addRange(71935,71942).addRange(71948,71955).addRange(71957,71958).addRange(71960,71989).addRange(71991,71992).addRange(71995,72006).addRange(72016,72025).addRange(72096,72103).addRange(72106,72151).addRange(72154,72164).addRange(72192,72263).addRange(72272,72354).addRange(72368,72440).addRange(72704,72712).addRange(72714,72758).addRange(72760,72773).addRange(72784,72812).addRange(72816,72847).addRange(72850,72871).addRange(72873,72886).addRange(72960,72966),t.addRange(72968,72969).addRange(72971,73014).addRange(73020,73021).addRange(73023,73031).addRange(73040,73049).addRange(73056,73061).addRange(73063,73064).addRange(73066,73102).addRange(73104,73105).addRange(73107,73112).addRange(73120,73129).addRange(73440,73464).addRange(73664,73713).addRange(73727,74649).addRange(74752,74862).addRange(74864,74868).addRange(74880,75075).addRange(77712,77810).addRange(77824,78894).addRange(78896,78904).addRange(82944,83526).addRange(92160,92728).addRange(92736,92766).addRange(92768,92777).addRange(92782,92862).addRange(92864,92873).addRange(92880,92909).addRange(92912,92917).addRange(92928,92997).addRange(93008,93017).addRange(93019,93025).addRange(93027,93047).addRange(93053,93071).addRange(93760,93850).addRange(93952,94026).addRange(94031,94087).addRange(94095,94111).addRange(94176,94180).addRange(94192,94193).addRange(94208,100343).addRange(100352,101589).addRange(101632,101640).addRange(110576,110579).addRange(110581,110587).addRange(110589,110590).addRange(110592,110882).addRange(110928,110930).addRange(110948,110951).addRange(110960,111355).addRange(113664,113770).addRange(113776,113788),t.addRange(113792,113800).addRange(113808,113817).addRange(113820,113827).addRange(118528,118573).addRange(118576,118598).addRange(118608,118723).addRange(118784,119029).addRange(119040,119078).addRange(119081,119274).addRange(119296,119365).addRange(119520,119539).addRange(119552,119638).addRange(119648,119672).addRange(119808,119892).addRange(119894,119964).addRange(119966,119967).addRange(119973,119974).addRange(119977,119980).addRange(119982,119993).addRange(119997,120003).addRange(120005,120069).addRange(120071,120074).addRange(120077,120084).addRange(120086,120092).addRange(120094,120121).addRange(120123,120126).addRange(120128,120132).addRange(120138,120144).addRange(120146,120485).addRange(120488,120779).addRange(120782,121483).addRange(121499,121503).addRange(121505,121519).addRange(122624,122654).addRange(122880,122886).addRange(122888,122904).addRange(122907,122913).addRange(122915,122916).addRange(122918,122922).addRange(123136,123180).addRange(123184,123197).addRange(123200,123209).addRange(123214,123215).addRange(123536,123566).addRange(123584,123641).addRange(124896,124902).addRange(124904,124907).addRange(124909,124910).addRange(124912,124926).addRange(124928,125124).addRange(125127,125142),t.addRange(125184,125259).addRange(125264,125273).addRange(125278,125279).addRange(126065,126132).addRange(126209,126269).addRange(126464,126467).addRange(126469,126495).addRange(126497,126498).addRange(126505,126514).addRange(126516,126519).addRange(126541,126543).addRange(126545,126546).addRange(126561,126562).addRange(126567,126570).addRange(126572,126578).addRange(126580,126583).addRange(126585,126588).addRange(126592,126601).addRange(126603,126619).addRange(126625,126627).addRange(126629,126633).addRange(126635,126651).addRange(126704,126705).addRange(126976,127019).addRange(127024,127123).addRange(127136,127150).addRange(127153,127167).addRange(127169,127183).addRange(127185,127221).addRange(127232,127405).addRange(127462,127490).addRange(127504,127547).addRange(127552,127560).addRange(127568,127569).addRange(127584,127589).addRange(127744,128727).addRange(128733,128748).addRange(128752,128764).addRange(128768,128883).addRange(128896,128984).addRange(128992,129003).addRange(129024,129035).addRange(129040,129095).addRange(129104,129113).addRange(129120,129159).addRange(129168,129197).addRange(129200,129201).addRange(129280,129619).addRange(129632,129645).addRange(129648,129652).addRange(129656,129660),t.addRange(129664,129670).addRange(129680,129708).addRange(129712,129722).addRange(129728,129733).addRange(129744,129753).addRange(129760,129767).addRange(129776,129782).addRange(129792,129938).addRange(129940,129994).addRange(130032,130041).addRange(131072,173791).addRange(173824,177976).addRange(177984,178205).addRange(178208,183969).addRange(183984,191456).addRange(194560,195101).addRange(196608,201546).addRange(917536,917631).addRange(917760,917999).addRange(983040,1048573).addRange(1048576,1114109),e.exports=t},"2Zix":function(e,a,n){var t=n("NC/Y");e.exports=/MSIE|Trident/.test(t)},"2ajD":function(e,a){e.exports=function(e){return e!=e}},"2bX/":function(e,a,n){var t=n("0GbY"),d=n("Fib7"),r=n("OpvP"),o=n("/b8u"),i=Object;e.exports=o?function(e){return"symbol"==typeof e}:function(e){var a=t("Symbol");return d(a)&&r(a.prototype,i(e))}},"2gN3":function(e,a,n){var t=n("Kz5y")["__core-js_shared__"];e.exports=t},"2lMS":function(e,a){var n=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;e.exports=function(e,a){var t=a.length;if(!t)return e;var d=t-1;return a[d]=(t>1?"& ":"")+a[d],a=a.join(t>2?", ":" "),e.replace(n,"{\n/* [wrapped with "+a+"] */\n")}},"2mql":function(e,a,n){"use strict";var t=n("TOwV"),d={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},r={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},o={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},i={};function s(e){return t.isMemo(e)?o:i[e.$$typeof]||d}i[t.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},i[t.Memo]=o;var g=Object.defineProperty,c=Object.getOwnPropertyNames,u=Object.getOwnPropertySymbols,l=Object.getOwnPropertyDescriptor,R=Object.getPrototypeOf,p=Object.prototype;e.exports=function e(a,n,t){if("string"!=typeof n){if(p){var d=R(n);d&&d!==p&&e(a,d,t)}var o=c(n);u&&(o=o.concat(u(n)));for(var i=s(a),f=s(n),h=0;hvoid 0===e?e:"/"===e?"/":"/"===e.charAt(e.length-1)?e.slice(0,-1):e;const o=new Map;let i=[];const s=e=>{const a=decodeURIComponent(e);return Object(d.a)(a,"/pr-preview/pr-1029").split("#")[0].split("?")[0]};function g(e){return e.startsWith("/")||e.startsWith("https://")||e.startsWith("http://")?e:new URL(e,window.location.href+(window.location.href.endsWith("/")?"":"/")).pathname}const c=e=>{i=e},u=e=>{const a=p(e),n=i.map(e=>{let{path:a,matchPath:n}=e;return{path:n,originalPath:a}}),d=Object(t.pick)(n,a);return d?r(d.route.originalPath):null},l=e=>{const a=p(e),n=i.map(e=>{let{path:a,matchPath:n}=e;return{path:n,originalPath:a}}),d=Object(t.pick)(n,a);return d?d.params:{}},R=e=>{const a=s(g(e));if(o.has(a))return o.get(a);let n=u(a);return n||(n=p(e)),o.set(a,n),n},p=e=>{let a=s(g(e));return"/index.html"===a&&(a="/"),a=r(a),a}},"33Wh":function(e,a,n){var t=n("yoRg"),d=n("eDl+");e.exports=Object.keys||function(e){return t(e,d)}},"34Qh":function(e,a,n){const t=n("dVj6")(67871);t.addRange(67840,67867),e.exports=t},"3A9y":function(e,a){e.exports=function(e){return this.__data__.has(e)}},"3EZw":function(e,a,n){var t=n("6T1N");function d(e,a,n){var r=t(e,8,void 0,void 0,void 0,void 0,void 0,a=n?void 0:a);return r.placeholder=d.placeholder,r}d.placeholder={},e.exports=d},"3Eq5":function(e,a,n){var t=n("We1y"),d=n("cjT7");e.exports=function(e,a){var n=e[a];return d(n)?void 0:t(n)}},"3Fdi":function(e,a){var n=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return n.call(e)}catch(a){}try{return e+""}catch(a){}}return""}},"3L66":function(e,a,n){var t=n("MMmD"),d=n("ExA7");e.exports=function(e){return d(e)&&t(e)}},"3O+O":function(e,a,n){const t=n("dVj6")(453,456,459,498,8124,8140,8188);t.addRange(8072,8079).addRange(8088,8095).addRange(8104,8111),e.exports=t},"3cYt":function(e,a){e.exports=function(e){return function(a){return null==e?void 0:e[a]}}},"3pNy":function(e,a,n){var t=n("OBhP"),d=n("GDhZ");e.exports=function(e,a){return d(e,t(a,1))}},"3uz+":function(e,a,n){"use strict";a.__esModule=!0,a.useScrollRestoration=function(e){var a=(0,r.useLocation)(),n=(0,d.useContext)(t.ScrollContext),o=(0,d.useRef)();return(0,d.useLayoutEffect)((function(){if(o.current){var t=n.read(a,e);o.current.scrollTo(0,t||0)}}),[]),{ref:o,onScroll:function(){o.current&&n.save(a,e,o.current.scrollTop)}}};var t=n("Enzk"),d=n("q1tI"),r=n("YwZP")},"4/F7":function(e,a,n){const t=n("dVj6")(173,847,1564,12644,65279,65440);t.addRange(4447,4448).addRange(6068,6069).addRange(6155,6159).addRange(8203,8207).addRange(8234,8238).addRange(8288,8303).addRange(65024,65039).addRange(65520,65528).addRange(113824,113827).addRange(119155,119162).addRange(917504,921599),e.exports=t},"4/ic":function(e,a,n){var t=n("ZWtO");e.exports=function(e){return function(a){return t(a,e)}}},4172:function(e,a,n){const t=n("dVj6")(69837);t.addRange(69760,69826),e.exports=t},"44Ds":function(e,a,n){var t=n("e4Nc");function d(e,a){if("function"!=typeof e||null!=a&&"function"!=typeof a)throw new TypeError("Expected a function");var n=function(){var t=arguments,d=a?a.apply(this,t):t[0],r=n.cache;if(r.has(d))return r.get(d);var o=e.apply(this,t);return n.cache=r.set(d,o)||r,o};return n.cache=new(d.Cache||t),n}d.Cache=t,e.exports=d},"477v":function(e,a,n){const t=n("dVj6")();t.addRange(43392,43469).addRange(43472,43481).addRange(43486,43487),e.exports=t},"49sm":function(e,a){var n={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==n.call(e)}},"4Oe1":function(e,a,n){var t=n("YO3V");e.exports=function(e){return t(e)?void 0:e}},"4WOD":function(e,a,n){var t=n("Gi26"),d=n("Fib7"),r=n("ewvW"),o=n("93I0"),i=n("4Xet"),s=o("IE_PROTO"),g=Object,c=g.prototype;e.exports=i?g.getPrototypeOf:function(e){var a=r(e);if(t(a,s))return a[s];var n=a.constructor;return d(n)&&a instanceof n?n.prototype:a instanceof g?c:null}},"4Xet":function(e,a,n){var t=n("0Dky");e.exports=!t((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},"4YcT":function(e,a,n){const t=n("dVj6")();t.addRange(48,57).addRange(65,70).addRange(97,102).addRange(65296,65305).addRange(65313,65318).addRange(65345,65350),e.exports=t},"4kuk":function(e,a,n){var t=n("SfRM"),d=n("Hvzi"),r=n("u8Dt"),o=n("ekgI"),i=n("JSQU");function s(e){var a=-1,n=null==e?0:e.length;for(this.clear();++a0&&n>="0"&&n<="9"?"_"+n+t:""+n.toUpperCase()+t}function S(e,a){return void 0===a&&(a={}),function(e,a){void 0===a&&(a={});for(var n=a.splitRegexp,t=void 0===n?x:n,d=a.stripRegexp,r=void 0===d?w:d,o=a.transform,i=void 0===o?_:o,s=a.delimiter,g=void 0===s?" ":s,c=E(E(e,t,"$1\0$2"),r,"\0"),u=0,l=c.length;"\0"===c.charAt(u);)u++;for(;"\0"===c.charAt(l-1);)l--;return c.slice(u,l).split("\0").map(i).join(g)}(e,j({delimiter:"",transform:k},a))}var D=n("ZHd1"),A=n.n(D),C=n("FI//"),P=n.n(C),F=n("j/kN"),T=n.n(F),L=n("bFuJ"),B=n.n(L),N=n("Bcse"),I=n.n(N),M=n("xXH7"),z=n.n(M);n("PF2M"),n("IZzc");function q(e){var a=new Error(e);return a.source="ulid",a}var V="0123456789ABCDEFGHJKMNPQRSTVWXYZ",U=V.length,G=Math.pow(2,48)-1;function H(e){var a=Math.floor(e()*U);return a===U&&(a=U-1),V.charAt(a)}function W(e,a){if(isNaN(e))throw new Error(e+" must be a number");if(e>G)throw q("cannot encode time greater than "+G);if(e<0)throw q("time must be positive");if(!1===Number.isInteger(e))throw q("time must be an integer");for(var n=void 0,t="";a>0;a--)t=V.charAt(n=e%U)+t,e=(e-n)/U;return t}function K(e,a){for(var n="";e>0;e--)n=H(a)+n;return n}function Y(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],a=arguments[1];a||(a="undefined"!=typeof window?window:null);var t=a&&(a.crypto||a.msCrypto);if(t)return function(){var e=new Uint8Array(1);return t.getRandomValues(e),e[0]/255};try{var d=n("v6W9");return function(){return d.randomBytes(1).readUInt8()/255}}catch(r){}if(e){try{console.error("secure crypto unusable, falling back to insecure Math.random()!")}catch(r){}return function(){return Math.random()}}throw q("secure crypto unusable, insecure Math.random not allowed")}var Z,$=(Z||(Z=Y()),function(e){return isNaN(e)&&(e=Date.now()),W(e,10)+K(16,Z)}),X={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","Ấ":"A","Ắ":"A","Ẳ":"A","Ẵ":"A","Ặ":"A","Æ":"AE","Ầ":"A","Ằ":"A","Ȃ":"A","Ç":"C","Ḉ":"C","È":"E","É":"E","Ê":"E","Ë":"E","Ế":"E","Ḗ":"E","Ề":"E","Ḕ":"E","Ḝ":"E","Ȇ":"E","Ì":"I","Í":"I","Î":"I","Ï":"I","Ḯ":"I","Ȋ":"I","Ð":"D","Ñ":"N","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","Ố":"O","Ṍ":"O","Ṓ":"O","Ȏ":"O","Ù":"U","Ú":"U","Û":"U","Ü":"U","Ý":"Y","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","ấ":"a","ắ":"a","ẳ":"a","ẵ":"a","ặ":"a","æ":"ae","ầ":"a","ằ":"a","ȃ":"a","ç":"c","ḉ":"c","è":"e","é":"e","ê":"e","ë":"e","ế":"e","ḗ":"e","ề":"e","ḕ":"e","ḝ":"e","ȇ":"e","ì":"i","í":"i","î":"i","ï":"i","ḯ":"i","ȋ":"i","ð":"d","ñ":"n","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","ố":"o","ṍ":"o","ṓ":"o","ȏ":"o","ù":"u","ú":"u","û":"u","ü":"u","ý":"y","ÿ":"y","Ā":"A","ā":"a","Ă":"A","ă":"a","Ą":"A","ą":"a","Ć":"C","ć":"c","Ĉ":"C","ĉ":"c","Ċ":"C","ċ":"c","Č":"C","č":"c","C̆":"C","c̆":"c","Ď":"D","ď":"d","Đ":"D","đ":"d","Ē":"E","ē":"e","Ĕ":"E","ĕ":"e","Ė":"E","ė":"e","Ę":"E","ę":"e","Ě":"E","ě":"e","Ĝ":"G","Ǵ":"G","ĝ":"g","ǵ":"g","Ğ":"G","ğ":"g","Ġ":"G","ġ":"g","Ģ":"G","ģ":"g","Ĥ":"H","ĥ":"h","Ħ":"H","ħ":"h","Ḫ":"H","ḫ":"h","Ĩ":"I","ĩ":"i","Ī":"I","ī":"i","Ĭ":"I","ĭ":"i","Į":"I","į":"i","İ":"I","ı":"i","IJ":"IJ","ij":"ij","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","Ḱ":"K","ḱ":"k","K̆":"K","k̆":"k","Ĺ":"L","ĺ":"l","Ļ":"L","ļ":"l","Ľ":"L","ľ":"l","Ŀ":"L","ŀ":"l","Ł":"l","ł":"l","Ḿ":"M","ḿ":"m","M̆":"M","m̆":"m","Ń":"N","ń":"n","Ņ":"N","ņ":"n","Ň":"N","ň":"n","ʼn":"n","N̆":"N","n̆":"n","Ō":"O","ō":"o","Ŏ":"O","ŏ":"o","Ő":"O","ő":"o","Œ":"OE","œ":"oe","P̆":"P","p̆":"p","Ŕ":"R","ŕ":"r","Ŗ":"R","ŗ":"r","Ř":"R","ř":"r","R̆":"R","r̆":"r","Ȓ":"R","ȓ":"r","Ś":"S","ś":"s","Ŝ":"S","ŝ":"s","Ş":"S","Ș":"S","ș":"s","ş":"s","Š":"S","š":"s","Ţ":"T","ţ":"t","ț":"t","Ț":"T","Ť":"T","ť":"t","Ŧ":"T","ŧ":"t","T̆":"T","t̆":"t","Ũ":"U","ũ":"u","Ū":"U","ū":"u","Ŭ":"U","ŭ":"u","Ů":"U","ů":"u","Ű":"U","ű":"u","Ų":"U","ų":"u","Ȗ":"U","ȗ":"u","V̆":"V","v̆":"v","Ŵ":"W","ŵ":"w","Ẃ":"W","ẃ":"w","X̆":"X","x̆":"x","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Y̆":"Y","y̆":"y","Ź":"Z","ź":"z","Ż":"Z","ż":"z","Ž":"Z","ž":"z","ſ":"s","ƒ":"f","Ơ":"O","ơ":"o","Ư":"U","ư":"u","Ǎ":"A","ǎ":"a","Ǐ":"I","ǐ":"i","Ǒ":"O","ǒ":"o","Ǔ":"U","ǔ":"u","Ǖ":"U","ǖ":"u","Ǘ":"U","ǘ":"u","Ǚ":"U","ǚ":"u","Ǜ":"U","ǜ":"u","Ứ":"U","ứ":"u","Ṹ":"U","ṹ":"u","Ǻ":"A","ǻ":"a","Ǽ":"AE","ǽ":"ae","Ǿ":"O","ǿ":"o","Þ":"TH","þ":"th","Ṕ":"P","ṕ":"p","Ṥ":"S","ṥ":"s","X́":"X","x́":"x","Ѓ":"Г","ѓ":"г","Ќ":"К","ќ":"к","A̋":"A","a̋":"a","E̋":"E","e̋":"e","I̋":"I","i̋":"i","Ǹ":"N","ǹ":"n","Ồ":"O","ồ":"o","Ṑ":"O","ṑ":"o","Ừ":"U","ừ":"u","Ẁ":"W","ẁ":"w","Ỳ":"Y","ỳ":"y","Ȁ":"A","ȁ":"a","Ȅ":"E","ȅ":"e","Ȉ":"I","ȉ":"i","Ȍ":"O","ȍ":"o","Ȑ":"R","ȑ":"r","Ȕ":"U","ȕ":"u","B̌":"B","b̌":"b","Č̣":"C","č̣":"c","Ê̌":"E","ê̌":"e","F̌":"F","f̌":"f","Ǧ":"G","ǧ":"g","Ȟ":"H","ȟ":"h","J̌":"J","ǰ":"j","Ǩ":"K","ǩ":"k","M̌":"M","m̌":"m","P̌":"P","p̌":"p","Q̌":"Q","q̌":"q","Ř̩":"R","ř̩":"r","Ṧ":"S","ṧ":"s","V̌":"V","v̌":"v","W̌":"W","w̌":"w","X̌":"X","x̌":"x","Y̌":"Y","y̌":"y","A̧":"A","a̧":"a","B̧":"B","b̧":"b","Ḑ":"D","ḑ":"d","Ȩ":"E","ȩ":"e","Ɛ̧":"E","ɛ̧":"e","Ḩ":"H","ḩ":"h","I̧":"I","i̧":"i","Ɨ̧":"I","ɨ̧":"i","M̧":"M","m̧":"m","O̧":"O","o̧":"o","Q̧":"Q","q̧":"q","U̧":"U","u̧":"u","X̧":"X","x̧":"x","Z̧":"Z","z̧":"z"},Q=Object.keys(X).join("|"),J=new RegExp(Q,"g"),ee=new RegExp(Q,""),ae=function(e){return e.replace(J,(function(e){return X[e]}))},ne=ae,te=function(e){return!!e.match(ee)},de=ae;ne.has=te,ne.remove=de;var re="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},oe=Object.assign||function(e){for(var a=1;a2&&void 0!==arguments[2]?arguments[2]:{};if(!a)return e;var t=n.keys,d=n.threshold,r=void 0===d?ie.MATCHES:d,o=e.reduce((function(e,d,o){var i=ce(d,t,a,n),s=i.rankedItem,g=i.rank,c=i.keyIndex,u=i.keyThreshold;return g>=(void 0===u?r:u)&&e.push({rankedItem:s,item:d,rank:g,index:o,keyIndex:c}),e}),[]);return o.sort(le).map((function(e){return e.item}))}function ce(e,a,n,t){return a?function(e,a){return a.reduce((function(a,n){var t=function(e,a){"object"===(void 0===a?"undefined":re(a))&&(a=a.key);var n=void 0;n="function"==typeof a?a(e):-1!==a.indexOf(".")?a.split(".").reduce((function(e,a){return e?e[a]:null}),e):e[a];return null!=n?[].concat(n):null}(e,n);return t&&t.forEach((function(e){a.push({itemValue:e,attributes:pe(n)})})),a}),[])}(e,a).reduce((function(e,a,d){var r=e.rank,o=e.keyIndex,i=e.keyThreshold,s=a.itemValue,g=a.attributes,c=ue(s,n,t),u=g.minRanking,l=g.maxRanking,R=g.threshold;return c=ie.MATCHES?c=u:c>l&&(c=l),c>r&&(r=c,o=d,i=R),{rankedItem:s,rank:r,keyIndex:o,keyThreshold:i}}),{rank:ie.NO_MATCH,keyIndex:-1,keyThreshold:t.threshold}):{rankedItem:e,rank:ue(e,n,t),keyIndex:-1,keyThreshold:t.threshold}}function ue(e,a,n){if(e=Re(e,n),(a=Re(a,n)).length>e.length)return ie.NO_MATCH;if(e===a)return ie.CASE_SENSITIVE_EQUAL;var t,d,r=function(e){var a=e.toLowerCase()!==e,n=e.indexOf("-")>=0,t=e.indexOf("_")>=0;if(!a&&!t&&n)return se.KEBAB;if(!a&&t&&!n)return se.SNAKE;if(a&&!n&&!t){return e[0].toUpperCase()===e[0]?se.PASCAL:se.CAMEL}return se.NO_CASE}(e),o=function(e,a,n){var t=e.toLowerCase().indexOf(a.toLowerCase());switch(n){case se.SNAKE:return"_"===e[t-1];case se.KEBAB:return"-"===e[t-1];case se.PASCAL:case se.CAMEL:return-1!==t&&e[t]===e[t].toUpperCase();default:return!1}}(e,a,r),i=function(e,a,n){var t=null;switch(n){case se.SNAKE:t="_";break;case se.KEBAB:t="-";break;case se.PASCAL:case se.CAMEL:t=/(?=[A-Z])/;break;default:t=null}var d=e.split(t);return a.toLowerCase().split("").reduce((function(e,a,n){var t=d[n];return e&&t&&t[0].toLowerCase()===a}),!0)}(e,a,r);return(e=e.toLowerCase())===(a=a.toLowerCase())?ie.EQUAL+r:0===e.indexOf(a)?ie.STARTS_WITH+r:-1!==e.indexOf(" "+a)?ie.WORD_STARTS_WITH+r:o?ie.STRING_CASE+r:r>0&&i?ie.STRING_CASE_ACRONYM+r:-1!==e.indexOf(a)?ie.CONTAINS+r:1===a.length?ie.NO_MATCH:-1!==(t=e,d="",t.split(" ").forEach((function(e){e.split("-").forEach((function(e){d+=e.substr(0,1)}))})),d).indexOf(a)?ie.ACRONYM+r:function(e,a){var n=0,t=0;function d(e,a,t){for(var d=t;d-1))return ie.NO_MATCH}return function(e){var t=n/a.length;return ie.MATCHES+t*(1/e)}(t-r)}(e,a)}function le(e,a){var n=e.rankedItem,t=e.rank,d=e.keyIndex,r=a.rankedItem,o=a.rank,i=a.keyIndex;return t===o?d===i?String(n).localeCompare(r):do?-1:1}function Re(e,a){return e=""+e,a.keepDiacritics||(e=ne(e)),e}function pe(e){return"string"==typeof e&&(e={key:e}),oe({maxRanking:1/0,minRanking:-1/0},e)}ge.rankings=ie,ge.caseRankings=se;var fe=ge,he=n("+mUh"),me=n.n(he),be=n("m2xi"),ye=n.n(be);"undefined"!=typeof Link&&Link&&Link===Object(Link)&&Object.isExtensible(Link)&&!Object.prototype.hasOwnProperty.call(Link,"__filemeta")&&Object.defineProperty(Link,"__filemeta",{configurable:!0,value:{name:"Link",filename:"node_modules/docz/dist/index.esm.js"}});const ve={layout:e=>{let{children:a}=e;return o.a.createElement(o.a.Fragment,null,a)},notFound:()=>o.a.createElement(o.a.Fragment,null,"Not found"),playground:e=>{let{component:a,code:n}=e;return o.a.createElement("div",null,a,o.a.createElement("pre",null,n))}},je=Object(r.createContext)(ve),Oe=e=>{let{components:a={},children:n}=e;return o.a.createElement(je.Provider,{value:Object.assign(Object.assign({},ve),a)},n)},_e=()=>Object(r.useContext)(je);const xe=function(e){var a;const n=Object(r.createContext)(e),d=new Set;return{context:n,set:e=>(e=>{d.forEach(a=>a(e))})(e),Provider:(a=function(a){function r(){var n;return(n=a.apply(this,arguments)||this).state=n.props.initial||e||{},n}Object(t.a)(r,a),r.getDerivedStateFromProps=function(e,a){return c()(e.initial,a)?null:e.initial};var i=r.prototype;return i.componentDidMount=function(){d.add(e=>this.setState(e))},i.componentWillUnmount=function(){d.clear()},i.render=function(){return o.a.createElement(n.Provider,{value:this.state},this.props.children)},r}(r.Component),a.displayName="DoczStateProvider",a)}}({}),we=()=>{const e=Object(r.useContext)(xe.context),{transform:a,config:n,themeConfig:t={}}=e,d=s()(t,n?n.themeConfig:{}),o=a?a(d):d;return Object.assign(Object.assign({},n),{themeConfig:o})},Ee=e=>{let{componentName:a,fileName:n}=e;const t=_e(),{props:d}=Object(r.useContext)(xe.context),o=d&&d.length>0&&d.find(e=>((e,a)=>!![n,"/"+e+".","/"+l()(e)+".","/"+S(e)+"."].find(e=>a.key.includes(e)))(a,e)),i=h()("value",o)||[],s=b()(i),g=i.find(e=>e.displayName===a),c=Object(r.useMemo)(()=>A()({createElement:r.createElement,elements:t}),[t]);return Object(r.useMemo)(()=>{const e=h()("props",g||s);return p()(e=>{const a=h()("description",e);return a?v()("description",c(a).tree,e):e})(e)},[c,g||s])},ke=()=>{const e=Object(r.useContext)(xe.context);return h()("currentEntry.value",e)},Se=e=>{const{type:a,payload:n}=JSON.parse(e.data),t=a.startsWith("state.")&&a.split(".")[1];t&&xe.set(e=>Object.assign(Object.assign({},e),{[t]:n}))},De=e=>{Object(r.useEffect)(()=>{if(!e)return;const a=new WebSocket(e);return a.onmessage=Se,()=>a.close()},[])};function Ae(e,a,n){return ea?n?-1:1:0}const Ce=()=>{const{entries:e=[]}=Object(r.useContext)(xe.context),a=e.map(e=>{let{value:a}=e;return a});return P()(a,(e,a)=>Ae(e.name,a.name))},Pe=e=>!e.menu,Fe=(e,a)=>a.filter((e=>a=>a.menu===e)(e)),Te=e=>{const a=e.filter(Pe),n=(t=e,d="menu",Array.from(new Set(t.reduce((e,a)=>{const n=h()(d)(a);return n?e.concat([n]):e},[])))).map((e=>a=>({name:a,menu:Fe(a,e)}))(e));var t,d;return T()("name",n,a)},Le=e=>{const a=(e=>"string"==typeof e?{name:e}:e)(e);return Object.assign(Object.assign({},a),{id:a.id||$(),parent:h()("parent",a)||h()("parent",e),menu:Array.isArray(a.menu)?a.menu.map(Le):a.menu})},Be=z()(Le,e=>e.href||e.route?I()("menu",e):e),Ne=(e,a)=>{const n=e.map(Be),t=a.map(Be);return T()("name",n,t).map(e=>{if(!e.menu)return e;const a=t.find(a=>a.name===e.name),n=a&&a.menu;return Object.assign(Object.assign({},e),{menu:n?Ne(e.menu,n):e.menu||a.menu})})},Ie=function(e,a){void 0===a&&(a=[]);const n="string"!=typeof e?h()("name",e):e,t=a.findIndex(e=>e===n);return-1!==t?t:1/0},Me=(e,a)=>e.namea.name?1:0,ze=function(e,a){void 0===a&&(a=[]);var n;return P()(e,(void 0===(n=a)&&(n=[]),(e,a)=>{const t=n.map(e=>e.name||e);return Ae(Ie(e,t),Ie(a,t))}),Me).map(e=>{if(!e.menu)return e;const n=a.find(a=>a.name===e.name),t=n&&n.menu;return Object.assign(Object.assign({},e),{menu:t?ze(e.menu,t):P()(e.menu,Me)})})},qe=e=>{const{query:a=""}=e||{},{entries:n,config:t}=Object(r.useContext)(xe.context);if(!n)return null;const d=n.map(e=>{let{value:a}=e;return a}),o=Te(d),i=Object(r.useMemo)(()=>{const a=Ne(o,t.menu),n=ze(a,t.menu);return d=n,(r=e&&e.filter)?d.filter(r).map(e=>e.menu?Object.assign(Object.assign({},e),{menu:e.menu.filter(r)}):e):d;var d,r},[n,t]);return a&&a.length>0?((e,a)=>{const n=a.map(e=>[e].concat(e.menu||[])),t=B()(2,n),d=Array.from(new Set(t));return fe(d,e,{keys:["name"]})})(a,i):i},Ve=(e,a)=>{const n=Object(r.useRef)(a);return Object(r.useEffect)(()=>{n.current=e}),n.current},Ue="object"==typeof window,Ge=(e,a)=>({innerHeight:Ue?window.innerHeight:a,innerWidth:Ue?window.innerWidth:e,outerHeight:Ue?window.outerHeight:a,outerWidth:Ue?window.outerWidth:e}),He=function(e,a,n){void 0===e&&(e=300),void 0===a&&(a=1/0),void 0===n&&(n=1/0);const{0:t,1:d}=Object(r.useState)(Ge(n,n)),o=me()(e,()=>d(Ge(n,n)));return Object(r.useEffect)(()=>(window.addEventListener("resize",o),()=>{window.removeEventListener("resize",o)}),[]),t},We=e=>{let{className:a,children:n,style:t,wrapper:d,__scope:r,__position:i,__code:s,language:g,useScoping:c}=e;const u=_e(),l=u.playground;return l?o.a.createElement(l,{components:u,component:n,className:a,style:t,wrapper:d,scope:r,position:i,code:s,language:g,useScoping:c}):null},Ke=/(?:React\.)?(?:PropTypes\.)?objectOf\((?:React\.)?(?:PropTypes\.)?(\w+)\)/,Ye=e=>{switch(e.name.toLowerCase()){case"instanceof":return"Class("+e.value+")";case"enum":return e.computed?e.value:e.value?e.value.map(e=>""+e.value).join(" │ "):e.raw;case"union":return e.value?e.value.map(e=>""+Ye(e)).join(" │ "):e.raw;case"array":return e.raw;case"arrayof":return"Array<"+Ye(e.value)+">";case"custom":if(-1!==e.raw.indexOf("function")||-1!==e.raw.indexOf("=>"))return"Custom(Function)";if(-1!==e.raw.toLowerCase().indexOf("objectof")){const a=e.raw.match(Ke);return a&&a[1]?"ObjectOf("+ye()(a[1])+")":"ObjectOf"}return"Custom";case"bool":return"Boolean";case"func":return"Function";case"shape":const a=e.value,n={};return Object.keys(a).forEach(e=>{n[e]=Ye(a[e])}),JSON.stringify(n,null,2);default:return e.name}},Ze=e=>Ye(e),$e=e=>{const a=h()("name",e.flowType||e.type);if(!a)return null;const n=a.startsWith('"')||"enum"===a,t=n?"enum":a,d=h()("type.value",e);return t?n&&"string"==typeof d||!e.flowType&&!n&&!d||e.flowType&&!e.flowType.elements?t:e.flowType?Ze(e.flowType):Ze(e.type):null},Xe=e=>{var{title:a,isToggle:n,isRaw:t,of:d}=e,r=O(e,["title","isToggle","isRaw","of"]);const i=_e().props,s=h()("__filemeta.filename",d),g=h()("__filemeta.name",d)||h()("displayName",d)||h()("name",d),c=Ee({componentName:g,fileName:s});return i?o.a.createElement(i,Object.assign({title:a,isRaw:t,isToggle:n,props:c,getPropType:$e,of:d},r)):null};function Qe(e,a){return void 0===a&&(a=e=>e),n=>{const t=Object(r.memo)(t=>{const{db:d,currentEntry:r,children:i}=t,s=Object.assign(Object.assign({},d),{currentEntry:r,themeConfig:e,transform:a});return o.a.createElement(xe.Provider,{initial:s},o.a.createElement(n,null,i))});return t.displayName=n.displayName||"DoczTheme",t}}void 0!==He&&He&&He===Object(He)&&Object.isExtensible(He)&&!Object.prototype.hasOwnProperty.call(He,"__filemeta")&&Object.defineProperty(He,"__filemeta",{configurable:!0,value:{name:"useWindowSize",filename:"node_modules/docz/dist/index.esm.js"}}),void 0!==Ve&&Ve&&Ve===Object(Ve)&&Object.isExtensible(Ve)&&!Object.prototype.hasOwnProperty.call(Ve,"__filemeta")&&Object.defineProperty(Ve,"__filemeta",{configurable:!0,value:{name:"usePrevious",filename:"node_modules/docz/dist/index.esm.js"}}),void 0!==qe&&qe&&qe===Object(qe)&&Object.isExtensible(qe)&&!Object.prototype.hasOwnProperty.call(qe,"__filemeta")&&Object.defineProperty(qe,"__filemeta",{configurable:!0,value:{name:"useMenus",filename:"node_modules/docz/dist/index.esm.js"}}),void 0!==Ce&&Ce&&Ce===Object(Ce)&&Object.isExtensible(Ce)&&!Object.prototype.hasOwnProperty.call(Ce,"__filemeta")&&Object.defineProperty(Ce,"__filemeta",{configurable:!0,value:{name:"useDocs",filename:"node_modules/docz/dist/index.esm.js"}}),void 0!==De&&De&&De===Object(De)&&Object.isExtensible(De)&&!Object.prototype.hasOwnProperty.call(De,"__filemeta")&&Object.defineProperty(De,"__filemeta",{configurable:!0,value:{name:"useDataServer",filename:"node_modules/docz/dist/index.esm.js"}}),void 0!==ke&&ke&&ke===Object(ke)&&Object.isExtensible(ke)&&!Object.prototype.hasOwnProperty.call(ke,"__filemeta")&&Object.defineProperty(ke,"__filemeta",{configurable:!0,value:{name:"useCurrentDoc",filename:"node_modules/docz/dist/index.esm.js"}}),void 0!==we&&we&&we===Object(we)&&Object.isExtensible(we)&&!Object.prototype.hasOwnProperty.call(we,"__filemeta")&&Object.defineProperty(we,"__filemeta",{configurable:!0,value:{name:"useConfig",filename:"node_modules/docz/dist/index.esm.js"}}),void 0!==_e&&_e&&_e===Object(_e)&&Object.isExtensible(_e)&&!Object.prototype.hasOwnProperty.call(_e,"__filemeta")&&Object.defineProperty(_e,"__filemeta",{configurable:!0,value:{name:"useComponents",filename:"node_modules/docz/dist/index.esm.js"}}),void 0!==Ee&&Ee&&Ee===Object(Ee)&&Object.isExtensible(Ee)&&!Object.prototype.hasOwnProperty.call(Ee,"__filemeta")&&Object.defineProperty(Ee,"__filemeta",{configurable:!0,value:{name:"useComponentProps",filename:"node_modules/docz/dist/index.esm.js"}}),void 0!==Qe&&Qe&&Qe===Object(Qe)&&Object.isExtensible(Qe)&&!Object.prototype.hasOwnProperty.call(Qe,"__filemeta")&&Object.defineProperty(Qe,"__filemeta",{configurable:!0,value:{name:"theme",filename:"node_modules/docz/dist/index.esm.js"}}),void 0!==xe&&xe&&xe===Object(xe)&&Object.isExtensible(xe)&&!Object.prototype.hasOwnProperty.call(xe,"__filemeta")&&Object.defineProperty(xe,"__filemeta",{configurable:!0,value:{name:"doczState",filename:"node_modules/docz/dist/index.esm.js"}}),void 0!==Xe&&Xe&&Xe===Object(Xe)&&Object.isExtensible(Xe)&&!Object.prototype.hasOwnProperty.call(Xe,"__filemeta")&&Object.defineProperty(Xe,"__filemeta",{configurable:!0,value:{name:"Props",filename:"node_modules/docz/dist/index.esm.js"}}),void 0!==We&&We&&We===Object(We)&&Object.isExtensible(We)&&!Object.prototype.hasOwnProperty.call(We,"__filemeta")&&Object.defineProperty(We,"__filemeta",{configurable:!0,value:{name:"Playground",filename:"node_modules/docz/dist/index.esm.js"}}),void 0!==Oe&&Oe&&Oe===Object(Oe)&&Object.isExtensible(Oe)&&!Object.prototype.hasOwnProperty.call(Oe,"__filemeta")&&Object.defineProperty(Oe,"__filemeta",{configurable:!0,value:{name:"ComponentsProvider",filename:"node_modules/docz/dist/index.esm.js"}})},"56YH":function(e,a,n){var t=n("NBRE")();e.exports=t},"5EYo":function(e,a,n){const t=n("dVj6")();t.addRange(42240,42539),e.exports=t},"5TAg":function(e,a,n){const t=n("dVj6")();t.addRange(5024,5109).addRange(5112,5117).addRange(43888,43967),e.exports=t},"5Tg0":function(e,a,n){(function(e){var t=n("Kz5y"),d=a&&!a.nodeType&&a,r=d&&"object"==typeof e&&e&&!e.nodeType&&e,o=r&&r.exports===d?t.Buffer:void 0,i=o?o.allocUnsafe:void 0;e.exports=function(e,a){if(a)return e.slice();var n=e.length,t=i?i(n):new e.constructor(n);return e.copy(t),t}}).call(this,n("YuTi")(e))},"5bsx":function(e,a,n){const t=n("dVj6")();t.addRange(7168,7223).addRange(7227,7241).addRange(7245,7247),e.exports=t},"5eRf":function(e,a,n){const t=n("dVj6")();t.addRange(92736,92766).addRange(92768,92777).addRange(92782,92783),e.exports=t},"5mMq":function(e,a,n){"use strict";n.r(a),n.d(a,"_frontmatter",(function(){return s})),n.d(a,"default",(function(){return u}));var t=n("wx14"),d=n("Ff2n"),r=(n("q1tI"),n("7ljp")),o=n("hhGP");n("qKvR");const i=["components"],s={};void 0!==s&&s&&s===Object(s)&&Object.isExtensible(s)&&!Object.prototype.hasOwnProperty.call(s,"__filemeta")&&Object.defineProperty(s,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"src/components/install/jb/go.mdx"}});const g={_frontmatter:s},c=o.a;function u(e){let{components:a}=e,n=Object(d.a)(e,i);return Object(r.b)(c,Object(t.a)({},g,n,{components:a,mdxType:"MDXLayout"}),Object(r.b)("p",null,"If you happen to have a local ",Object(r.b)("a",{parentName:"p",href:"https://golang.org"},"Go")," toolchain available, you can build from source using ",Object(r.b)("inlineCode",{parentName:"p"},"go install"),":"),Object(r.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(r.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(r.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(r.b)("span",{parentName:"span",className:"mtk1"},"$ "),Object(r.b)("span",{parentName:"span",className:"mtk9"},"cd"),Object(r.b)("span",{parentName:"span",className:"mtk1"}," /tmp")),"\n",Object(r.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(r.b)("span",{parentName:"span",className:"mtk1"},"$ go install github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb@latest")))),Object(r.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==u&&u&&u===Object(u)&&Object.isExtensible(u)&&!Object.prototype.hasOwnProperty.call(u,"__filemeta")&&Object.defineProperty(u,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"src/components/install/jb/go.mdx"}}),u.isMDXComponent=!0},"5sOR":function(e,a,n){var t=n("N4mw"),d=n("99Ms"),r=n("T8tx");e.exports=function(e,a,n,o,i,s,g,c,u,l){var R=8&a;a|=R?32:64,4&(a&=~(R?64:32))||(a&=-4);var p=[e,a,i,R?s:void 0,R?g:void 0,R?void 0:s,R?void 0:g,c,u,l],f=n.apply(void 0,p);return t(e)&&d(f,p),f.placeholder=o,r(f,e,a)}},"5scg":function(e,a,n){const t=n("dVj6")();t.addRange(67072,67382).addRange(67392,67413).addRange(67424,67431),e.exports=t},"5tk3":function(e,a,n){const t=n("dVj6")();t.addRange(70656,70747).addRange(70749,70753),e.exports=t},"5xM+":function(e,a,n){const t=n("dVj6")(166,169,174,176,1154,1758,1769,2038,2554,2928,3066,3199,3407,3449,3859,3892,3894,3896,5741,6464,8468,8485,8487,8489,8494,8522,8527,8659,12292,12320,12880,43065,64975,65508,65512,65952,68296,71487,92997,113820,119365,123215,126124,126254,129008);t.addRange(1421,1422).addRange(1550,1551).addRange(1789,1790).addRange(3059,3064).addRange(3841,3843).addRange(3861,3863).addRange(3866,3871).addRange(4030,4037).addRange(4039,4044).addRange(4046,4047).addRange(4053,4056).addRange(4254,4255).addRange(5008,5017).addRange(6622,6655).addRange(7009,7018).addRange(7028,7036).addRange(8448,8449).addRange(8451,8454).addRange(8456,8457).addRange(8470,8471).addRange(8478,8483).addRange(8506,8507).addRange(8524,8525).addRange(8586,8587).addRange(8597,8601).addRange(8604,8607).addRange(8609,8610).addRange(8612,8613).addRange(8615,8621).addRange(8623,8653).addRange(8656,8657).addRange(8661,8691).addRange(8960,8967).addRange(8972,8991).addRange(8994,9e3).addRange(9003,9083).addRange(9085,9114).addRange(9140,9179).addRange(9186,9254).addRange(9280,9290).addRange(9372,9449).addRange(9472,9654).addRange(9656,9664).addRange(9666,9719).addRange(9728,9838).addRange(9840,10087).addRange(10132,10175).addRange(10240,10495).addRange(11008,11055).addRange(11077,11078).addRange(11085,11123),t.addRange(11126,11157).addRange(11159,11263).addRange(11493,11498).addRange(11856,11857).addRange(11904,11929).addRange(11931,12019).addRange(12032,12245).addRange(12272,12283).addRange(12306,12307).addRange(12342,12343).addRange(12350,12351).addRange(12688,12689).addRange(12694,12703).addRange(12736,12771).addRange(12800,12830).addRange(12842,12871).addRange(12896,12927).addRange(12938,12976).addRange(12992,13311).addRange(19904,19967).addRange(42128,42182).addRange(43048,43051).addRange(43062,43063).addRange(43639,43641).addRange(64832,64847).addRange(65021,65023).addRange(65517,65518).addRange(65532,65533).addRange(65847,65855).addRange(65913,65929).addRange(65932,65934).addRange(65936,65948).addRange(66e3,66044).addRange(67703,67704).addRange(73685,73692).addRange(73697,73713).addRange(92988,92991).addRange(118608,118723).addRange(118784,119029).addRange(119040,119078).addRange(119081,119140).addRange(119146,119148).addRange(119171,119172).addRange(119180,119209).addRange(119214,119274).addRange(119296,119361).addRange(119552,119638).addRange(120832,121343).addRange(121399,121402).addRange(121453,121460).addRange(121462,121475),t.addRange(121477,121478).addRange(126976,127019).addRange(127024,127123).addRange(127136,127150).addRange(127153,127167).addRange(127169,127183).addRange(127185,127221).addRange(127245,127405).addRange(127462,127490).addRange(127504,127547).addRange(127552,127560).addRange(127568,127569).addRange(127584,127589).addRange(127744,127994).addRange(128e3,128727).addRange(128733,128748).addRange(128752,128764).addRange(128768,128883).addRange(128896,128984).addRange(128992,129003).addRange(129024,129035).addRange(129040,129095).addRange(129104,129113).addRange(129120,129159).addRange(129168,129197).addRange(129200,129201).addRange(129280,129619).addRange(129632,129645).addRange(129648,129652).addRange(129656,129660).addRange(129664,129670).addRange(129680,129708).addRange(129712,129722).addRange(129728,129733).addRange(129744,129753).addRange(129760,129767).addRange(129776,129782).addRange(129792,129938).addRange(129940,129994),e.exports=t},"5yr3":function(e,a,n){"use strict";const t=function(e){return e=e||Object.create(null),{on:function(a,n){(e[a]||(e[a]=[])).push(n)},off:function(a,n){e[a]&&e[a].splice(e[a].indexOf(n)>>>0,1)},emit:function(a,n){(e[a]||[]).slice().map((function(e){e(n)})),(e["*"]||[]).slice().map((function(e){e(a,n)}))}}}();a.a=t},"6+Eo":function(e,a,n){var t=n("XGnz"),d=n("Sxd8");e.exports=function(e,a){return(null==e?0:e.length)?(a=void 0===a?1:d(a),t(e,a)):[]}},"61NE":function(e,a,n){const t=n("dVj6")();t.addRange(67648,67669).addRange(67671,67679),e.exports=t},"64uU":function(e,a,n){const t=n("dVj6")();t.addRange(4160,4169).addRange(6480,6509).addRange(6512,6516),e.exports=t},"67WC":function(e,a,n){"use strict";var t,d,r,o=n("SxGu"),i=n("g6v/"),s=n("2oRo"),g=n("Fib7"),c=n("hh1v"),u=n("Gi26"),l=n("9d/t"),R=n("DVFp"),p=n("kRJp"),f=n("yy0I"),h=n("7dAM"),m=n("OpvP"),b=n("4WOD"),y=n("0rvr"),v=n("tiKp"),j=n("kOOl"),O=n("afO8"),_=O.enforce,x=O.get,w=s.Int8Array,E=w&&w.prototype,k=s.Uint8ClampedArray,S=k&&k.prototype,D=w&&b(w),A=E&&b(E),C=Object.prototype,P=s.TypeError,F=v("toStringTag"),T=j("TYPED_ARRAY_TAG"),L=o&&!!y&&"Opera"!==l(s.opera),B=!1,N={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},I={BigInt64Array:8,BigUint64Array:8},M=function(e){var a=b(e);if(c(a)){var n=x(a);return n&&u(n,"TypedArrayConstructor")?n.TypedArrayConstructor:M(a)}},z=function(e){if(!c(e))return!1;var a=l(e);return u(N,a)||u(I,a)};for(t in N)(r=(d=s[t])&&d.prototype)?_(r).TypedArrayConstructor=d:L=!1;for(t in I)(r=(d=s[t])&&d.prototype)&&(_(r).TypedArrayConstructor=d);if((!L||!g(D)||D===Function.prototype)&&(D=function(){throw P("Incorrect invocation")},L))for(t in N)s[t]&&y(s[t],D);if((!L||!A||A===C)&&(A=D.prototype,L))for(t in N)s[t]&&y(s[t].prototype,A);if(L&&b(S)!==A&&y(S,A),i&&!u(A,F))for(t in B=!0,h(A,F,{configurable:!0,get:function(){return c(this)?this[T]:void 0}}),N)s[t]&&p(s[t],T,t);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:L,TYPED_ARRAY_TAG:B&&T,aTypedArray:function(e){if(z(e))return e;throw P("Target is not a typed array")},aTypedArrayConstructor:function(e){if(g(e)&&(!y||m(D,e)))return e;throw P(R(e)+" is not a typed array constructor")},exportTypedArrayMethod:function(e,a,n,t){if(i){if(n)for(var d in N){var r=s[d];if(r&&u(r.prototype,e))try{delete r.prototype[e]}catch(o){try{r.prototype[e]=a}catch(g){}}}A[e]&&!n||f(A,e,n?a:L&&E[e]||a,t)}},exportTypedArrayStaticMethod:function(e,a,n){var t,d;if(i){if(y){if(n)for(t in N)if((d=s[t])&&u(d,e))try{delete d[e]}catch(r){}if(D[e]&&!n)return;try{return f(D,e,n?a:L&&D[e]||a)}catch(r){}}for(t in N)!(d=s[t])||d[e]&&!n||f(d,e,a)}},getTypedArrayConstructor:M,isView:function(e){if(!c(e))return!1;var a=l(e);return"DataView"===a||u(N,a)||u(I,a)},isTypedArray:z,TypedArray:D,TypedArrayPrototype:A}},"67s2":function(e,a,n){e.exports=n("oasZ")},"6DvP":function(e,a,n){const t=n("dVj6")();t.addRange(65792,65793).addRange(77712,77810),e.exports=t},"6Ik7":function(e,a,n){const t=n("dVj6")();t.addRange(42656,42743).addRange(92160,92728),e.exports=t},"6JNq":function(e,a,n){var t=n("Gi26"),d=n("Vu81"),r=n("Bs8V"),o=n("m/L8");e.exports=function(e,a,n){for(var i=d(a),s=o.f,g=r.f,c=0;c=0||(d[n]=e[n]);return d}(e,a);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(d[n]=e[n])}return d}var c=d.a.createContext({}),u=function(e){return function(a){var n=l(a.components);return d.a.createElement(e,o({},a,{components:n}))}},l=function(e){var a=d.a.useContext(c),n=a;return e&&(n="function"==typeof e?e(a):s(s({},a),e)),n},R=function(e){var a=l(e.components);return d.a.createElement(c.Provider,{value:a},e.children)},p={inlineCode:"code",wrapper:function(e){var a=e.children;return d.a.createElement(d.a.Fragment,{},a)}},f=d.a.forwardRef((function(e,a){var n=e.components,t=e.mdxType,r=e.originalType,o=e.parentName,i=g(e,["components","mdxType","originalType","parentName"]),c=l(n),u=t,R=c["".concat(o,".").concat(u)]||c[u]||p[u]||r;return n?d.a.createElement(R,s(s({ref:a},i),{},{components:n})):d.a.createElement(R,s({ref:a},i))}));function h(e,a){var n=arguments,t=a&&a.mdxType;if("string"==typeof e||t){var r=n.length,o=new Array(r);o[0]=f;var i={};for(var s in a)hasOwnProperty.call(a,s)&&(i[s]=a[s]);i.originalType=e,i.mdxType="string"==typeof e?e:t,o[1]=i;for(var g=2;g0){if(++a>=800)return arguments[0]}else a=0;return e.apply(void 0,arguments)}}},"8Gun":function(e,a,n){const t=n("dVj6")();t.addRange(5920,5942),e.exports=t},"8OQS":function(e,a){e.exports=function(e,a){if(null==e)return{};var n,t,d={},r=Object.keys(e);for(t=0;t=0||(d[n]=e[n]);return d},e.exports.__esModule=!0,e.exports.default=e.exports},"8PCV":function(e,a,n){const t=n("dVj6")();t.addRange(73728,74649).addRange(74752,74862).addRange(74864,74868).addRange(74880,75075),e.exports=t},"8Ppc":function(e,a,n){"use strict";var t,d=this&&this.__extends||(t=function(e,a){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,a){e.__proto__=a}||function(e,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n])})(e,a)},function(e,a){if("function"!=typeof a&&null!==a)throw new TypeError("Class extends value "+String(a)+" is not a constructor or null");function n(){this.constructor=e}t(e,a),e.prototype=null===a?Object.create(a):(n.prototype=a.prototype,new n)}),r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var a,n=1,t=arguments.length;n-1){a._history.stack=s.slice(0,g+1);var c=a._history.stack.length;if(c>100){var u=c-100;a._history.stack=s.slice(u,c),a._history.offset=Math.max(a._history.offset-u,0)}}var l=Date.now();if(n){var R=a._history.stack[a._history.offset];if(R&&l-R.timestamp<3e3){var p=/[^a-z0-9]([a-z0-9]+)$/i,f=null===(t=a._getLines(R.value,R.selectionStart).pop())||void 0===t?void 0:t.match(p),h=null===(d=a._getLines(e.value,e.selectionStart).pop())||void 0===d?void 0:d.match(p);if((null==f?void 0:f[1])&&(null===(o=null==h?void 0:h[1])||void 0===o?void 0:o.startsWith(f[1])))return void(a._history.stack[a._history.offset]=r(r({},e),{timestamp:l}))}}a._history.stack.push(r(r({},e),{timestamp:l})),a._history.offset++},a._updateInput=function(e){var n=a._input;n&&(n.value=e.value,n.selectionStart=e.selectionStart,n.selectionEnd=e.selectionEnd,a.props.onValueChange(e.value))},a._applyEdits=function(e){var n=a._input,t=a._history.stack[a._history.offset];t&&n&&(a._history.stack[a._history.offset]=r(r({},t),{selectionStart:n.selectionStart,selectionEnd:n.selectionEnd})),a._recordChange(e),a._updateInput(e)},a._undoEdit=function(){var e=a._history,n=e.stack,t=e.offset,d=n[t-1];d&&(a._updateInput(d),a._history.offset=Math.max(t-1,0))},a._redoEdit=function(){var e=a._history,n=e.stack,t=e.offset,d=n[t+1];d&&(a._updateInput(d),a._history.offset=Math.min(t+1,n.length-1))},a._handleKeyDown=function(e){var n=a.props,t=n.tabSize,d=n.insertSpaces,r=n.ignoreTabKey,o=n.onKeyDown;if(!o||(o(e),!e.defaultPrevented)){27===e.keyCode&&e.currentTarget.blur();var i=e.currentTarget,s=i.value,g=i.selectionStart,c=i.selectionEnd,R=(d?" ":"\t").repeat(t);if(9===e.keyCode&&!r&&a.state.capture)if(e.preventDefault(),e.shiftKey){var p=(b=a._getLines(s,g)).length-1,f=a._getLines(s,c).length-1,h=s.split("\n").map((function(e,a){return a>=p&&a<=f&&e.startsWith(R)?e.substring(R.length):e})).join("\n");if(s!==h){var m=b[p];a._applyEdits({value:h,selectionStart:(null==m?void 0:m.startsWith(R))?g-R.length:g,selectionEnd:c-(s.length-h.length)})}}else if(g!==c){var b,y=(b=a._getLines(s,g)).length-1,v=a._getLines(s,c).length-1;m=b[y];a._applyEdits({value:s.split("\n").map((function(e,a){return a>=y&&a<=v?R+e:e})).join("\n"),selectionStart:m&&/\S/.test(m)?g+R.length:g,selectionEnd:c+R.length*(v-y+1)})}else{var j=g+R.length;a._applyEdits({value:s.substring(0,g)+R+s.substring(c),selectionStart:j,selectionEnd:j})}else if(8===e.keyCode){var O=g!==c;if(s.substring(0,g).endsWith(R)&&!O){e.preventDefault();j=g-R.length;a._applyEdits({value:s.substring(0,g-R.length)+s.substring(c),selectionStart:j,selectionEnd:j})}}else if(13===e.keyCode){if(g===c){var _=a._getLines(s,g).pop(),x=null==_?void 0:_.match(/^\s+/);if(null==x?void 0:x[0]){e.preventDefault();var w="\n"+x[0];j=g+w.length;a._applyEdits({value:s.substring(0,g)+w+s.substring(c),selectionStart:j,selectionEnd:j})}}}else if(57===e.keyCode||219===e.keyCode||222===e.keyCode||192===e.keyCode){var E=void 0;57===e.keyCode&&e.shiftKey?E=["(",")"]:219===e.keyCode?E=e.shiftKey?["{","}"]:["[","]"]:222===e.keyCode?E=e.shiftKey?['"','"']:["'","'"]:192!==e.keyCode||e.shiftKey||(E=["`","`"]),g!==c&&E&&(e.preventDefault(),a._applyEdits({value:s.substring(0,g)+E[0]+s.substring(g,c)+E[1]+s.substring(c),selectionStart:g,selectionEnd:c+2}))}else!(l?e.metaKey&&90===e.keyCode:e.ctrlKey&&90===e.keyCode)||e.shiftKey||e.altKey?(l?e.metaKey&&90===e.keyCode&&e.shiftKey:u?e.ctrlKey&&89===e.keyCode:e.ctrlKey&&90===e.keyCode&&e.shiftKey)&&!e.altKey?(e.preventDefault(),a._redoEdit()):77!==e.keyCode||!e.ctrlKey||l&&!e.shiftKey||(e.preventDefault(),a.setState((function(e){return{capture:!e.capture}}))):(e.preventDefault(),a._undoEdit())}},a._handleChange=function(e){var n=e.currentTarget,t=n.value,d=n.selectionStart,r=n.selectionEnd;a._recordChange({value:t,selectionStart:d,selectionEnd:r},!0),a.props.onValueChange(t)},a._history={stack:[],offset:-1},a._input=null,a}return d(a,e),a.prototype.componentDidMount=function(){this._recordCurrentState()},Object.defineProperty(a.prototype,"session",{get:function(){return{history:this._history}},set:function(e){this._history=e.history},enumerable:!1,configurable:!0}),a.prototype.render=function(){var e=this,a=this.props,n=a.value,t=a.style,d=a.padding,o=a.highlight,i=a.textareaId,s=a.textareaClassName,u=a.autoFocus,l=a.disabled,f=a.form,m=a.maxLength,b=a.minLength,y=a.name,v=a.placeholder,j=a.readOnly,O=a.required,_=a.onClick,x=a.onFocus,w=a.onBlur,E=a.onKeyUp,k=(a.onKeyDown,a.onValueChange,a.tabSize,a.insertSpaces,a.ignoreTabKey,a.preClassName),S=g(a,["value","style","padding","highlight","textareaId","textareaClassName","autoFocus","disabled","form","maxLength","minLength","name","placeholder","readOnly","required","onClick","onFocus","onBlur","onKeyUp","onKeyDown","onValueChange","tabSize","insertSpaces","ignoreTabKey","preClassName"]),D={paddingTop:d,paddingRight:d,paddingBottom:d,paddingLeft:d},A=o(n);return c.createElement("div",r({},S,{style:r(r({},h.container),t)}),c.createElement("textarea",{ref:function(a){return e._input=a},style:r(r(r({},h.editor),h.textarea),D),className:R+(s?" ".concat(s):""),id:i,value:n,onChange:this._handleChange,onKeyDown:this._handleKeyDown,onClick:_,onKeyUp:E,onFocus:x,onBlur:w,disabled:l,form:f,maxLength:m,minLength:b,name:y,placeholder:v,readOnly:j,required:O,autoFocus:u,autoCapitalize:"off",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"data-gramm":!1}),c.createElement("pre",r({className:k,"aria-hidden":"true",style:r(r(r({},h.editor),h.highlight),D)},"string"==typeof A?{dangerouslySetInnerHTML:{__html:A+"
"}}:{children:A})),c.createElement("style",{type:"text/css",dangerouslySetInnerHTML:{__html:p}}))},a.defaultProps={tabSize:2,insertSpaces:!0,ignoreTabKey:!1,padding:0},a}(c.Component);a.default=f;var h={container:{position:"relative",textAlign:"left",boxSizing:"border-box",padding:0,overflow:"hidden"},textarea:{position:"absolute",top:0,left:0,height:"100%",width:"100%",resize:"none",color:"inherit",overflow:"hidden",MozOsxFontSmoothing:"grayscale",WebkitFontSmoothing:"antialiased",WebkitTextFillColor:"transparent"},highlight:{position:"relative",pointerEvents:"none"},editor:{margin:0,border:0,background:"none",boxSizing:"inherit",display:"inherit",fontFamily:"inherit",fontSize:"inherit",fontStyle:"inherit",fontVariantLigatures:"inherit",fontWeight:"inherit",letterSpacing:"inherit",lineHeight:"inherit",tabSize:"inherit",textIndent:"inherit",textRendering:"inherit",textTransform:"inherit",whiteSpace:"pre-wrap",wordBreak:"keep-all",overflowWrap:"break-word"}}},"8fW5":function(e,a,n){const t=n("dVj6")();t.addRange(72816,72847).addRange(72850,72871).addRange(72873,72886),e.exports=t},"8goA":function(e,a,n){const t=n("dVj6")();t.addRange(67648,67669).addRange(67671,67679),e.exports=t},"8nCx":function(e,a,n){const t=n("dVj6")(1548,1563,1567);t.addRange(1632,1641).addRange(69248,69289).addRange(69291,69293).addRange(69296,69297),e.exports=t},"9/o/":function(e,a,n){const t=n("dVj6")(5919);t.addRange(5888,5909).addRange(5941,5942),e.exports=t},"93I0":function(e,a,n){var t=n("VpIT"),d=n("kOOl"),r=t("keys");e.exports=function(e){return r[e]||(r[e]=d(e))}},"94VI":function(e,a){a.polyfill=e=>e},"96ys":function(e,a,n){const t=n("dVj6")();t.addRange(72384,72440),e.exports=t},"99Ms":function(e,a,n){var t=n("s0N+"),d=n("88Gu")(t);e.exports=d},"9H8i":function(e,a,n){const t=n("dVj6")(5919);t.addRange(5888,5909),e.exports=t},"9H9O":function(e,a,n){const t=n("dVj6")(12293,12295);t.addRange(11904,11929).addRange(11931,12019).addRange(12032,12245).addRange(12321,12329).addRange(12344,12347).addRange(13312,19903).addRange(19968,40959).addRange(63744,64109).addRange(64112,64217).addRange(94178,94179).addRange(94192,94193).addRange(131072,173791).addRange(173824,177976).addRange(177984,178205).addRange(178208,183969).addRange(183984,191456).addRange(194560,195101).addRange(196608,201546),e.exports=t},"9LXj":function(e,a,n){const t=n("dVj6")();t.addRange(2534,2543).addRange(4160,4169).addRange(69888,69940).addRange(69942,69959),e.exports=t},"9NKt":function(e,a){e.exports="14.0.0"},"9Nap":function(e,a,n){var t=n("/9aa");e.exports=function(e){if("string"==typeof e||t(e))return e;var a=e+"";return"0"==a&&1/e==-1/0?"-0":a}},"9NmV":function(e,a){var n="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",t="["+n+"]",d="\\d+",r="[\\u2700-\\u27bf]",o="[a-z\\xdf-\\xf6\\xf8-\\xff]",i="[^\\ud800-\\udfff"+n+d+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",s="(?:\\ud83c[\\udde6-\\uddff]){2}",g="[\\ud800-\\udbff][\\udc00-\\udfff]",c="[A-Z\\xc0-\\xd6\\xd8-\\xde]",u="(?:"+o+"|"+i+")",l="(?:"+c+"|"+i+")",R="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",p="[\\ufe0e\\ufe0f]?"+R+("(?:\\u200d(?:"+["[^\\ud800-\\udfff]",s,g].join("|")+")[\\ufe0e\\ufe0f]?"+R+")*"),f="(?:"+[r,s,g].join("|")+")"+p,h=RegExp([c+"?"+o+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[t,c,"$"].join("|")+")",l+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[t,c+u,"$"].join("|")+")",c+"?"+u+"+(?:['’](?:d|ll|m|re|s|t|ve))?",c+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",d,f].join("|"),"g");e.exports=function(e){return e.match(h)||[]}},"9Ubl":function(e,a,n){"use strict";n.r(a);var t=n("XHv3"),d=n("q1tI");a.default={PlatformInstall:t.b,Tanka:t.c,Jb:t.a,React:d}},"9VM+":function(e,a,n){const t=n("dVj6")(1600);t.addRange(69424,69465),e.exports=t},"9Xx/":function(e,a,n){"use strict";n.d(a,"c",(function(){return s})),n.d(a,"d",(function(){return g})),n.d(a,"a",(function(){return r})),n.d(a,"b",(function(){return o}));var t=Object.assign||function(e){for(var a=1;a1&&void 0!==arguments[1]?arguments[1]:{},g=s.state,c=s.replace,u=void 0!==c&&c;if("number"==typeof a)e.history.go(a);else{g=t({},g,{key:Date.now()+""});try{o||u?e.history.replaceState(g,null,a):e.history.pushState(g,null,a)}catch(R){e.location[u?"replace":"assign"](a)}}r=d(e),o=!0;var l=new Promise((function(e){return i=e}));return n.forEach((function(e){return e({location:r,action:"PUSH"})})),l}}},o=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/",a=e.indexOf("?"),n={pathname:a>-1?e.substr(0,a):e,search:a>-1?e.substr(a):""},t=0,d=[n],r=[null];return{get location(){return d[t]},addEventListener:function(e,a){},removeEventListener:function(e,a){},history:{get entries(){return d},get index(){return t},get state(){return r[t]},pushState:function(e,a,n){var o=n.split("?"),i=o[0],s=o[1],g=void 0===s?"":s;t++,d.push({pathname:i,search:g.length?"?"+g:g}),r.push(e)},replaceState:function(e,a,n){var o=n.split("?"),i=o[0],s=o[1],g=void 0===s?"":s;d[t]={pathname:i,search:g},r[t]=e},go:function(e){var a=t+e;a<0||a>r.length-1||(t=a)}}}},i=!("undefined"==typeof window||!window.document||!window.document.createElement),s=r(i?window:o()),g=s.navigate},"9Z7h":function(e,a,n){const t=n("dVj6")();t.addRange(72096,72103).addRange(72106,72151).addRange(72154,72164),e.exports=t},"9d/t":function(e,a,n){var t=n("AO7/"),d=n("Fib7"),r=n("xrYK"),o=n("tiKp")("toStringTag"),i=Object,s="Arguments"==r(function(){return arguments}());e.exports=t?r:function(e){var a,n,t;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,a){try{return e[a]}catch(n){}}(a=i(e),o))?n:s?r(a):"Object"==(t=r(a))&&d(a.callee)?"Arguments":t}},"9ggG":function(e,a,n){var t=n("Z0cm"),d=n("/9aa"),r=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,o=/^\w*$/;e.exports=function(e,a){if(t(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!d(e))||(o.test(e)||!r.test(e)||null!=a&&e in Object(a))}},"9hXx":function(e,a,n){"use strict";a.__esModule=!0,a.default=void 0;a.default=function(e,a){if(!Array.isArray(a))return"manifest.webmanifest";var n=a.find((function(a){return e.startsWith(a.start_url)}));return n?"manifest_"+n.lang+".webmanifest":"manifest.webmanifest"}},"9jCe":function(e,a,n){const t=n("dVj6")(2620,2641,2654);t.addRange(2385,2386).addRange(2404,2405).addRange(2561,2563).addRange(2565,2570).addRange(2575,2576).addRange(2579,2600).addRange(2602,2608).addRange(2610,2611).addRange(2613,2614).addRange(2616,2617).addRange(2622,2626).addRange(2631,2632).addRange(2635,2637).addRange(2649,2652).addRange(2662,2678).addRange(43056,43065),e.exports=t},"9mTJ":function(e,a,n){const t=n("dVj6")();t.addRange(3585,3642).addRange(3648,3675),e.exports=t},"9nmK":function(e,a,n){"use strict";Object.defineProperty(a,"__esModule",{value:!0});var t=function(){function e(e,a){for(var n=0;n ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ {0,3}\[(label)\]: *\n? *]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,table:f,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,paragraph:/^([^\n]+(?:\n?(?!hr|heading|lheading| {0,3}>|tag)[^\n]+)+)/,text:/^[^\n]+/};function t(e){this.tokens=[],this.tokens.links={},this.options=e||m.defaults,this.rules=n.normal,this.options.gfm&&(this.options.tables?this.rules=n.tables:this.rules=n.gfm)}n._label=/(?:\\[\[\]]|[^\[\]])+/,n._title=/(?:"(?:\\"|[^"]|"[^"\n]*")*"|'\n?(?:[^'\n]+\n?)*'|\([^()]*\))/,n.def=u(n.def).replace("label",n._label).replace("title",n._title).getRegex(),n.bullet=/(?:[*+-]|\d+\.)/,n.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/,n.item=u(n.item,"gm").replace(/bull/g,n.bullet).getRegex(),n.list=u(n.list).replace(/bull/g,n.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+n.def.source+")").getRegex(),n._tag="(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b",n.html=u(n.html).replace("comment",//).replace("closed",/<(tag)[\s\S]+?<\/\1>/).replace("closing",/\s]*)*?\/?>/).replace(/tag/g,n._tag).getRegex(),n.paragraph=u(n.paragraph).replace("hr",n.hr).replace("heading",n.heading).replace("lheading",n.lheading).replace("tag","<"+n._tag).getRegex(),n.blockquote=u(n.blockquote).replace("paragraph",n.paragraph).getRegex(),n.normal=h({},n),n.gfm=h({},n.normal,{fences:/^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\n? *\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/}),n.gfm.paragraph=u(n.paragraph).replace("(?!","(?!"+n.gfm.fences.source.replace("\\1","\\2")+"|"+n.list.source.replace("\\1","\\3")+"|").getRegex(),n.tables=h({},n.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/}),t.rules=n,t.lex=function(e,a){return new t(a).lex(e)},t.prototype.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(e,!0)},t.prototype.token=function(e,a){var t,d,r,o,i,s,g,c,u,l,R;for(e=e.replace(/^ +$/gm,"");e;)if((r=this.rules.newline.exec(e))&&(e=e.substring(r[0].length),r[0].length>1&&this.tokens.push({type:"space"})),r=this.rules.code.exec(e))e=e.substring(r[0].length),r=r[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",text:this.options.pedantic?r:r.replace(/\n+$/,"")});else if(r=this.rules.fences.exec(e))e=e.substring(r[0].length),this.tokens.push({type:"code",lang:r[2],text:r[3]||""});else if(r=this.rules.heading.exec(e))e=e.substring(r[0].length),this.tokens.push({type:"heading",depth:r[1].length,text:r[2]});else if(a&&(r=this.rules.nptable.exec(e))){for(e=e.substring(r[0].length),s={type:"table",header:r[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:r[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:r[3].replace(/\n$/,"").split("\n")},c=0;c ?/gm,""),this.token(r,a),this.tokens.push({type:"blockquote_end"});else if(r=this.rules.list.exec(e)){for(e=e.substring(r[0].length),R=(o=r[2]).length>1,this.tokens.push({type:"list_start",ordered:R,start:R?+o:""}),t=!1,l=(r=r[0].match(this.rules.item)).length,c=0;c1&&i.length>1||(e=r.slice(c+1).join("\n")+e,c=l-1)),d=t||/\n\n(?!\s*$)/.test(s),c!==l-1&&(t="\n"===s.charAt(s.length-1),d||(d=t)),this.tokens.push({type:d?"loose_item_start":"list_item_start"}),this.token(s,!1),this.tokens.push({type:"list_item_end"});this.tokens.push({type:"list_end"})}else if(r=this.rules.html.exec(e))e=e.substring(r[0].length),this.tokens.push({type:this.options.sanitize?"paragraph":"html",pre:!this.options.sanitizer&&("pre"===r[1]||"script"===r[1]||"style"===r[1]),text:r[0]});else if(a&&(r=this.rules.def.exec(e)))e=e.substring(r[0].length),r[3]&&(r[3]=r[3].substring(1,r[3].length-1)),u=r[1].toLowerCase(),this.tokens.links[u]||(this.tokens.links[u]={href:r[2],title:r[3]});else if(a&&(r=this.rules.table.exec(e))){for(e=e.substring(r[0].length),s={type:"table",header:r[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:r[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:r[3].replace(/(?: *\| *)?\n$/,"").split("\n")},c=0;c])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:f,tag:/^|^<\/?[a-zA-Z0-9\-]+(?:"[^"]*"|'[^']*'|\s[^<'">\/\s]*)*?\/?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^_([^\s_](?:[^_]|__)+?[^\s_])_\b|^\*((?:\*\*|[^*])+?)\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`]?)\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:f,text:/^[\s\S]+?(?=[\\/g,">").replace(/"/g,""").replace(/'/g,"'")}function c(e){return e.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,(function(e,a){return"colon"===(a=a.toLowerCase())?":":"#"===a.charAt(0)?"x"===a.charAt(1)?String.fromCharCode(parseInt(a.substring(2),16)):String.fromCharCode(+a.substring(1)):""}))}function u(e,a){return e=e.source,a=a||"",{replace:function(a,n){return n=(n=n.source||n).replace(/(^|[^\[])\^/g,"$1"),e=e.replace(a,n),this},getRegex:function(){return new RegExp(e,a)}}}function l(e,a){return R[" "+e]||(/^[^:]+:\/*[^/]*$/.test(e)?R[" "+e]=e+"/":R[" "+e]=e.replace(/[^/]*$/,"")),e=R[" "+e],"//"===a.slice(0,2)?e.replace(/:[\s\S]*/,":")+a:"/"===a.charAt(0)?e.replace(/(:\/*[^/]*)[\s\S]*/,"$1")+a:e+a}d._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,d._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,d.autolink=u(d.autolink).replace("scheme",d._scheme).replace("email",d._email).getRegex(),d._inside=/(?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]]|\](?=[^\[]*\]))*/,d._href=/\s*?(?:\s+['"]([\s\S]*?)['"])?\s*/,d.link=u(d.link).replace("inside",d._inside).replace("href",d._href).getRegex(),d.reflink=u(d.reflink).replace("inside",d._inside).getRegex(),d.normal=h({},d),d.pedantic=h({},d.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/}),d.gfm=h({},d.normal,{escape:u(d.escape).replace("])","~|])").getRegex(),url:u(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("email",d._email).getRegex(),_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:u(d.text).replace("]|","~]|").replace("|","|https?://|ftp://|www\\.|[a-zA-Z0-9.!#$%&'*+/=?^_`{\\|}~-]+@|").getRegex()}),d.breaks=h({},d.gfm,{br:u(d.br).replace("{2,}","*").getRegex(),text:u(d.gfm.text).replace("{2,}","*").getRegex()}),r.rules=d,r.output=function(e,a,n){return new r(a,n).output(e)},r.prototype.output=function(e){for(var a,n,t,d,r="";e;)if(d=this.rules.escape.exec(e))e=e.substring(d[0].length),r+=d[1];else if(d=this.rules.autolink.exec(e))e=e.substring(d[0].length),t="@"===d[2]?"mailto:"+(n=g(this.mangle(d[1]))):n=g(d[1]),r+=this.renderer.link(t,null,n);else if(this.inLink||!(d=this.rules.url.exec(e))){if(d=this.rules.tag.exec(e))!this.inLink&&/^/i.test(d[0])&&(this.inLink=!1),e=e.substring(d[0].length),r+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(d[0]):g(d[0]):d[0];else if(d=this.rules.link.exec(e))e=e.substring(d[0].length),this.inLink=!0,r+=this.outputLink(d,{href:d[2],title:d[3]}),this.inLink=!1;else if((d=this.rules.reflink.exec(e))||(d=this.rules.nolink.exec(e))){if(e=e.substring(d[0].length),a=(d[2]||d[1]).replace(/\s+/g," "),!(a=this.links[a.toLowerCase()])||!a.href){r+=d[0].charAt(0),e=d[0].substring(1)+e;continue}this.inLink=!0,r+=this.outputLink(d,a),this.inLink=!1}else if(d=this.rules.strong.exec(e))e=e.substring(d[0].length),r+=this.renderer.strong(this.output(d[2]||d[1]));else if(d=this.rules.em.exec(e))e=e.substring(d[0].length),r+=this.renderer.em(this.output(d[2]||d[1]));else if(d=this.rules.code.exec(e))e=e.substring(d[0].length),r+=this.renderer.codespan(g(d[2].trim(),!0));else if(d=this.rules.br.exec(e))e=e.substring(d[0].length),r+=this.renderer.br();else if(d=this.rules.del.exec(e))e=e.substring(d[0].length),r+=this.renderer.del(this.output(d[1]));else if(d=this.rules.text.exec(e))e=e.substring(d[0].length),r+=this.renderer.text(g(this.smartypants(d[0])));else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else d[0]=this.rules._backpedal.exec(d[0])[0],e=e.substring(d[0].length),"@"===d[2]?t="mailto:"+(n=g(d[0])):(n=g(d[0]),t="www."===d[1]?"http://"+n:n),r+=this.renderer.link(t,null,n);return r},r.prototype.outputLink=function(e,a){var n=g(a.href),t=a.title?g(a.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(n,t,this.output(e[1])):this.renderer.image(n,t,g(e[1]))},r.prototype.smartypants=function(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e},r.prototype.mangle=function(e){if(!this.options.mangle)return e;for(var a,n="",t=e.length,d=0;d.5&&(a="x"+a.toString(16)),n+="&#"+a+";";return n},o.prototype.code=function(e,a,n){if(this.options.highlight){var t=this.options.highlight(e,a);null!=t&&t!==e&&(n=!0,e=t)}return a?'
'+(n?e:g(e,!0))+"\n
\n":"
"+(n?e:g(e,!0))+"\n
"},o.prototype.blockquote=function(e){return"
\n"+e+"
\n"},o.prototype.html=function(e){return e},o.prototype.heading=function(e,a,n){return"'+e+"\n"},o.prototype.hr=function(){return this.options.xhtml?"
\n":"
\n"},o.prototype.list=function(e,a,n){var t=a?"ol":"ul";return"<"+t+(a&&1!==n?' start="'+n+'"':"")+">\n"+e+"\n"},o.prototype.listitem=function(e){return"
  • "+e+"
  • \n"},o.prototype.paragraph=function(e){return"

    "+e+"

    \n"},o.prototype.table=function(e,a){return"\n\n"+e+"\n\n"+a+"\n
    \n"},o.prototype.tablerow=function(e){return"\n"+e+"\n"},o.prototype.tablecell=function(e,a){var n=a.header?"th":"td";return(a.align?"<"+n+' style="text-align:'+a.align+'">':"<"+n+">")+e+"\n"},o.prototype.strong=function(e){return""+e+""},o.prototype.em=function(e){return""+e+""},o.prototype.codespan=function(e){return""+e+""},o.prototype.br=function(){return this.options.xhtml?"
    ":"
    "},o.prototype.del=function(e){return""+e+""},o.prototype.link=function(e,a,n){if(this.options.sanitize){try{var t=decodeURIComponent(c(e)).replace(/[^\w:]/g,"").toLowerCase()}catch(r){return n}if(0===t.indexOf("javascript:")||0===t.indexOf("vbscript:")||0===t.indexOf("data:"))return n}this.options.baseUrl&&!p.test(e)&&(e=l(this.options.baseUrl,e));var d='
    "},o.prototype.image=function(e,a,n){this.options.baseUrl&&!p.test(e)&&(e=l(this.options.baseUrl,e));var t=''+n+'":">"},o.prototype.text=function(e){return e},i.prototype.strong=i.prototype.em=i.prototype.codespan=i.prototype.del=i.prototype.text=function(e){return e},i.prototype.link=i.prototype.image=function(e,a,n){return""+n},i.prototype.br=function(){return""},s.parse=function(e,a){return new s(a).parse(e)},s.prototype.parse=function(e){this.inline=new r(e.links,this.options),this.inlineText=new r(e.links,h({},this.options,{renderer:new i})),this.tokens=e.reverse();for(var a="";this.next();)a+=this.tok();return a},s.prototype.next=function(){return this.token=this.tokens.pop()},s.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},s.prototype.parseText=function(){for(var e=this.token.text;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.output(e)},s.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,c(this.inlineText.output(this.token.text)));case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,a,n,t,d="",r="";for(n="",e=0;eAn error occurred:

    "+g(u.message+"",!0)+"
    ";throw u}}f.exec=f,m.options=m.setOptions=function(e){return h(m.defaults,e),m},m.defaults={gfm:!0,tables:!0,breaks:!1,pedantic:!1,sanitize:!1,sanitizer:null,mangle:!0,smartLists:!1,silent:!1,highlight:null,langPrefix:"lang-",smartypants:!1,headerPrefix:"",renderer:new o,xhtml:!1,baseUrl:null},m.Parser=s,m.parser=s.parse,m.Renderer=o,m.TextRenderer=i,m.Lexer=t,m.lexer=t.lex,m.InlineLexer=r,m.inlineLexer=r.output,m.parse=m,e.exports=m}(this||"undefined"!=typeof window&&window)}).call(this,n("yLpj"))},Dm2Y:function(e,a,n){const t=n("dVj6")();t.addRange(5792,5866).addRange(5870,5880),e.exports=t},Dpr8:function(e,a,n){const t=n("dVj6")();t.addRange(123136,123180).addRange(123184,123197).addRange(123200,123209).addRange(123214,123215),e.exports=t},DusV:function(e,a,n){const t=n("dVj6")(171,8216,8223,8249,11778,11780,11785,11788,11804,11808);t.addRange(8219,8220),e.exports=t},"Dw+G":function(e,a,n){var t=n("juv8"),d=n("mTTR");e.exports=function(e,a){return e&&t(a,d(a),e)}},DzJC:function(e,a,n){var t=n("sEfC"),d=n("GoyQ");e.exports=function(e,a,n){var r=!0,o=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return d(n)&&(r="leading"in n?!!n.leading:r,o="trailing"in n?!!n.trailing:o),t(e,a,{leading:r,maxWait:a,trailing:o})}},E2jh:function(e,a,n){var t,d=n("2gN3"),r=(t=/[^.]+$/.exec(d&&d.keys&&d.keys.IE_PROTO||""))?"Symbol(src)_1."+t:"";e.exports=function(e){return!!r&&r in e}},E9LY:function(e,a,n){var t=n("4zBA"),d=n("0Dky"),r=n("Fib7"),o=n("Gi26"),i=n("g6v/"),s=n("Xnc8").CONFIGURABLE,g=n("iSVu"),c=n("afO8"),u=c.enforce,l=c.get,R=String,p=Object.defineProperty,f=t("".slice),h=t("".replace),m=t([].join),b=i&&!d((function(){return 8!==p((function(){}),"length",{value:8}).length})),y=String(String).split("String"),v=e.exports=function(e,a,n){"Symbol("===f(R(a),0,7)&&(a="["+h(R(a),/^Symbol\(([^)]*)\)/,"$1")+"]"),n&&n.getter&&(a="get "+a),n&&n.setter&&(a="set "+a),(!o(e,"name")||s&&e.name!==a)&&(i?p(e,"name",{value:a,configurable:!0}):e.name=a),b&&n&&o(n,"arity")&&e.length!==n.arity&&p(e,"length",{value:n.arity});try{n&&o(n,"constructor")&&n.constructor?i&&p(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(d){}var t=u(e);return o(t,"source")||(t.source=m(y,"string"==typeof a?a:"")),e};Function.prototype.toString=v((function(){return r(this)&&l(this).source||g(this)}),"toString")},EA7m:function(e,a,n){var t=n("zZ0H"),d=n("Ioao"),r=n("wclG");e.exports=function(e,a){return r(d(e,a,t),e+"")}},EEGq:function(e,a,n){var t=n("juv8"),d=n("oCl/");e.exports=function(e,a){return t(e,d(e),a)}},EJMw:function(e,a,n){const t=n("dVj6")();t.addRange(92928,92997).addRange(93008,93017).addRange(93019,93025).addRange(93027,93047).addRange(93053,93071),e.exports=t},ELeP:function(e,a,n){const t=n("dVj6")(123647);t.addRange(123584,123641),e.exports=t},EN1A:function(e,a,n){"use strict";n.d(a,"a",(function(){return R}));var t=n("rePB"),d=n("qKvR"),r=(n("q1tI"),n("52AM")),o=n("PT20");function i(e,a){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);a&&(t=t.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),n.push.apply(n,t)}return n}function s(e){for(var a=1;aObject(d.d)("div",{css:c},Object(d.d)("div",{css:g},Object(d.d)("h1",{css:u},"Define. Reuse. Override."),Object(d.d)("p",null,"Grafana Tanka is the robust configuration utility for your"," ",Object(d.d)("a",{href:"https://kubernetes.io"},"Kubernetes")," cluster, powered by the unique ",Object(d.d)("a",{href:"https://jsonnet.org"},"Jsonnet")," language"),Object(d.d)("div",{css:l},Object(d.d)(f,{to:"/install"},"Install"),Object(d.d)(f,{to:"/tutorial/overview"},"Tutorial"))),Object(d.d)("div",{css:Object(d.c)(s(s({},g),{},{flexBasis:"calc(50% - 2em)",overflowX:"hidden",pre:{marginTop:0,marginBottom:0}}),"","")},Object(d.d)(o.default,null),Object(d.d)("small",null,"Kubernetes Deployment. That's all it takes.")));void 0!==R&&R&&R===Object(R)&&Object.isExtensible(R)&&!Object.prototype.hasOwnProperty.call(R,"__filemeta")&&Object.defineProperty(R,"__filemeta",{configurable:!0,value:{name:"Catcher",filename:"src/components/home/index.js"}}),void 0!==R&&R&&R===Object(R)&&Object.isExtensible(R)&&!Object.prototype.hasOwnProperty.call(R,"__filemeta")&&Object.defineProperty(R,"__filemeta",{configurable:!0,value:{name:"Catcher",filename:"src/components/home/index.js"}});var p={name:"r1396k",styles:"margin-left:1em;text-decoration:none;color:white;background:#0B5FFF;padding:.5em;justify-content:center;display:flex;flex-grow:1;border-radius:5px;border:2px solid #0B5FFF;:hover{background:white;color:#0B5FFF;}"};const f=e=>{let{to:a,children:n}=e;return Object(d.d)(r.b,{css:p,to:a},n)}},EO6k:function(e,a,n){e.exports=n("msqZ")},ERuW:function(e,a,n){var t=n("JbSc"),d=Object.prototype.hasOwnProperty;e.exports=function(e){for(var a=e.name+"",n=t[a],r=d.call(t,a)?n.length:0;r--;){var o=n[r],i=o.func;if(null==i||i==e)return o.name}return a}},EVgB:function(e,a,n){const t=n("dVj6")();t.addRange(66688,66717).addRange(66720,66729),e.exports=t},"Eb/5":function(e,a,n){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.LARGER_DISPLAY_WIDTH="1600px",a.LARGE_DISPLAY_WIDTH="1280px",a.DEFAULT_WIDTH="980px",a.TABLET_WIDTH="768px",a.MOBILE_WIDTH="480px",a.LARGER_DISPLAY_MEDIA_QUERY="@media only screen and (max-width:1600px)",a.LARGE_DISPLAY_MEDIA_QUERY="@media only screen and (max-width:1280px)",a.DEFAULT_MEDIA_QUERY="@media only screen and (max-width:980px)",a.TABLET_MEDIA_QUERY="@media only screen and (max-width:768px)",a.MOBILE_MEDIA_QUERY="@media only screen and (max-width:480px)",a.MIN_LARGER_DISPLAY_MEDIA_QUERY="@media (min-width:1600px)",a.MIN_LARGE_DISPLAY_MEDIA_QUERY="@media (min-width:1280px)",a.MIN_DEFAULT_MEDIA_QUERY="@media (min-width:980px)",a.MIN_TABLET_MEDIA_QUERY="@media (min-width:768px)",a.MIN_MOBILE_MEDIA_QUERY="@media (min-width:480px)"},EkIy:function(e,a,n){const t=n("dVj6")();t.addRange(43264,43311),e.exports=t},EldB:function(e,a,n){var t=n("dTAl"),d=n("GoyQ");e.exports=function(e){return function(){var a=arguments;switch(a.length){case 0:return new e;case 1:return new e(a[0]);case 2:return new e(a[0],a[1]);case 3:return new e(a[0],a[1],a[2]);case 4:return new e(a[0],a[1],a[2],a[3]);case 5:return new e(a[0],a[1],a[2],a[3],a[4]);case 6:return new e(a[0],a[1],a[2],a[3],a[4],a[5]);case 7:return new e(a[0],a[1],a[2],a[3],a[4],a[5],a[6])}var n=t(e.prototype),r=e.apply(n,a);return d(r)?r:n}}},Enzk:function(e,a,n){"use strict";var t=n("284h"),d=n("TqRt");a.__esModule=!0,a.ScrollHandler=a.ScrollContext=void 0;var r=d(n("PJYZ")),o=d(n("VbXa")),i=t(n("q1tI")),s=d(n("17x9")),g=n("/hTd"),c=i.createContext(new g.SessionStorage);a.ScrollContext=c,c.displayName="GatsbyScrollContext";var u=function(e){function a(){for(var a,n=arguments.length,t=new Array(n),d=0;d=0||(d[n]=e[n]);return d}(e,a);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(d[n]=e[n])}return d}n.d(a,"a",(function(){return t}))},Fib7:function(e,a,n){var t=n("jqES"),d=t.all;e.exports=t.IS_HTMLDDA?function(e){return"function"==typeof e||e===d}:function(e){return"function"==typeof e}},Fl1y:function(e,a){e.exports=function(e,a){return null==e||e!=e?a:e}},FvNL:function(e,a,n){const t=n("dVj6")(64975,126500,126503,126521,126523,126530,126535,126537,126539,126548,126551,126553,126555,126557,126559,126564,126590);t.addRange(1536,1540).addRange(1542,1547).addRange(1549,1562).addRange(1564,1566).addRange(1568,1599).addRange(1601,1610).addRange(1622,1647).addRange(1649,1756).addRange(1758,1791).addRange(1872,1919).addRange(2160,2190).addRange(2192,2193).addRange(2200,2273).addRange(2275,2303).addRange(64336,64450).addRange(64467,64829).addRange(64832,64911).addRange(64914,64967).addRange(65008,65023).addRange(65136,65140).addRange(65142,65276).addRange(69216,69246).addRange(126464,126467).addRange(126469,126495).addRange(126497,126498).addRange(126505,126514).addRange(126516,126519).addRange(126541,126543).addRange(126545,126546).addRange(126561,126562).addRange(126567,126570).addRange(126572,126578).addRange(126580,126583).addRange(126585,126588).addRange(126592,126601).addRange(126603,126619).addRange(126625,126627).addRange(126629,126633).addRange(126635,126651).addRange(126704,126705),e.exports=t},G1tY:function(e,a,n){const t=n("dVj6")();t.addRange(93952,94026).addRange(94031,94087).addRange(94095,94111),e.exports=t},G6z8:function(e,a,n){var t=n("fR/l"),d=n("oCl/"),r=n("mTTR");e.exports=function(e){return t(e,r,d)}},GC2F:function(e,a,n){var t=n("+M1K"),d=RangeError;e.exports=function(e,a){var n=t(e);if(n%a)throw d("Wrong offset");return n}},GDhZ:function(e,a,n){var t=n("wF/u"),d=n("mwIZ"),r=n("hgQt"),o=n("9ggG"),i=n("CMye"),s=n("IOzZ"),g=n("9Nap");e.exports=function(e,a){return o(e)&&i(a)?s(g(e),a):function(n){var o=d(n,e);return void 0===o&&o===a?r(n,e):t(a,o,3)}}},GI2u:function(e,a,n){const t=n("dVj6")();t.addRange(2404,2405).addRange(43056,43065).addRange(70320,70378).addRange(70384,70393),e.exports=t},GNiM:function(e,a,n){var t=n("I01J"),d=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,r=/\\(\\)?/g,o=t((function(e){var a=[];return 46===e.charCodeAt(0)&&a.push(""),e.replace(d,(function(e,n,t,d){a.push(t?d.replace(r,"$1"):n||e)})),a}));e.exports=o},GS9R:function(e,a,n){const t=n("dVj6")();t.addRange(57344,63743).addRange(983040,1048573).addRange(1048576,1114109),e.exports=t},GcGr:function(e,a,n){const t=n("dVj6")();t.addRange(68352,68405).addRange(68409,68415),e.exports=t},Gi0A:function(e,a,n){var t=n("QqLw"),d=n("ExA7");e.exports=function(e){return d(e)&&"[object Map]"==t(e)}},Gi26:function(e,a,n){var t=n("4zBA"),d=n("ewvW"),r=t({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,a){return r(d(e),a)}},GoyQ:function(e,a){e.exports=function(e){var a=typeof e;return null!=e&&("object"==a||"function"==a)}},GsYE:function(e,a,n){const t=n("dVj6")();t.addRange(71424,71450).addRange(71453,71467).addRange(71472,71494),e.exports=t},Gytx:function(e,a){e.exports=function(e,a,n,t){var d=n?n.call(t,e,a):void 0;if(void 0!==d)return!!d;if(e===a)return!0;if("object"!=typeof e||!e||"object"!=typeof a||!a)return!1;var r=Object.keys(e),o=Object.keys(a);if(r.length!==o.length)return!1;for(var i=Object.prototype.hasOwnProperty.bind(a),s=0;s0?o-4:o;for(n=0;n>16&255,s[c++]=a>>8&255,s[c++]=255&a;2===i&&(a=d[e.charCodeAt(n)]<<2|d[e.charCodeAt(n+1)]>>4,s[c++]=255&a);1===i&&(a=d[e.charCodeAt(n)]<<10|d[e.charCodeAt(n+1)]<<4|d[e.charCodeAt(n+2)]>>2,s[c++]=a>>8&255,s[c++]=255&a);return s},a.fromByteArray=function(e){for(var a,n=e.length,d=n%3,r=[],o=0,i=n-d;oi?i:o+16383));1===d?(a=e[n-1],r.push(t[a>>2]+t[a<<4&63]+"==")):2===d&&(a=(e[n-2]<<8)+e[n-1],r.push(t[a>>10]+t[a>>4&63]+t[a<<2&63]+"="));return r.join("")};for(var t=[],d=[],r="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=0,s=o.length;i0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=a),[n,n===a?0:4-n%4]}function c(e,a,n){for(var d,r,o=[],i=a;i>18&63]+t[r>>12&63]+t[r>>6&63]+t[63&r]);return o.join("")}d["-".charCodeAt(0)]=62,d["_".charCodeAt(0)]=63},H8j4:function(e,a,n){var t=n("QkVE");e.exports=function(e,a){var n=t(this,e),d=n.size;return n.set(e,a),this.size+=n.size==d?0:1,this}},HDXh:function(e,a,n){"use strict";(function(e){n("PF2M"),n("IZzc");var t=n("H7XF"),d=n("kVK+"),r=n("49sm");function o(){return s.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function i(e,a){if(o()=o())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o().toString(16)+" bytes");return 0|e}function p(e,a){if(s.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var t=!1;;)switch(a){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return z(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return q(e).length;default:if(t)return z(e).length;a=(""+a).toLowerCase(),t=!0}}function f(e,a,n){var t=!1;if((void 0===a||a<0)&&(a=0),a>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(a>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return D(this,a,n);case"utf8":case"utf-8":return E(this,a,n);case"ascii":return k(this,a,n);case"latin1":case"binary":return S(this,a,n);case"base64":return w(this,a,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A(this,a,n);default:if(t)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),t=!0}}function h(e,a,n){var t=e[a];e[a]=e[n],e[n]=t}function m(e,a,n,t,d){if(0===e.length)return-1;if("string"==typeof n?(t=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=d?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(d)return-1;n=e.length-1}else if(n<0){if(!d)return-1;n=0}if("string"==typeof a&&(a=s.from(a,t)),s.isBuffer(a))return 0===a.length?-1:b(e,a,n,t,d);if("number"==typeof a)return a&=255,s.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?d?Uint8Array.prototype.indexOf.call(e,a,n):Uint8Array.prototype.lastIndexOf.call(e,a,n):b(e,[a],n,t,d);throw new TypeError("val must be string, number or Buffer")}function b(e,a,n,t,d){var r,o=1,i=e.length,s=a.length;if(void 0!==t&&("ucs2"===(t=String(t).toLowerCase())||"ucs-2"===t||"utf16le"===t||"utf-16le"===t)){if(e.length<2||a.length<2)return-1;o=2,i/=2,s/=2,n/=2}function g(e,a){return 1===o?e[a]:e.readUInt16BE(a*o)}if(d){var c=-1;for(r=n;ri&&(n=i-s),r=n;r>=0;r--){for(var u=!0,l=0;ld&&(t=d):t=d;var r=a.length;if(r%2!=0)throw new TypeError("Invalid hex string");t>r/2&&(t=r/2);for(var o=0;o>8,d=n%256,r.push(d),r.push(t);return r}(a,e.length-n),e,n,t)}function w(e,a,n){return 0===a&&n===e.length?t.fromByteArray(e):t.fromByteArray(e.slice(a,n))}function E(e,a,n){n=Math.min(e.length,n);for(var t=[],d=a;d239?4:g>223?3:g>191?2:1;if(d+u<=n)switch(u){case 1:g<128&&(c=g);break;case 2:128==(192&(r=e[d+1]))&&(s=(31&g)<<6|63&r)>127&&(c=s);break;case 3:r=e[d+1],o=e[d+2],128==(192&r)&&128==(192&o)&&(s=(15&g)<<12|(63&r)<<6|63&o)>2047&&(s<55296||s>57343)&&(c=s);break;case 4:r=e[d+1],o=e[d+2],i=e[d+3],128==(192&r)&&128==(192&o)&&128==(192&i)&&(s=(15&g)<<18|(63&r)<<12|(63&o)<<6|63&i)>65535&&s<1114112&&(c=s)}null===c?(c=65533,u=1):c>65535&&(c-=65536,t.push(c>>>10&1023|55296),c=56320|1023&c),t.push(c),d+=u}return function(e){var a=e.length;if(a<=4096)return String.fromCharCode.apply(String,e);var n="",t=0;for(;t0&&(e=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(e+=" ... ")),""},s.prototype.compare=function(e,a,n,t,d){if(!s.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===a&&(a=0),void 0===n&&(n=e?e.length:0),void 0===t&&(t=0),void 0===d&&(d=this.length),a<0||n>e.length||t<0||d>this.length)throw new RangeError("out of range index");if(t>=d&&a>=n)return 0;if(t>=d)return-1;if(a>=n)return 1;if(this===e)return 0;for(var r=(d>>>=0)-(t>>>=0),o=(n>>>=0)-(a>>>=0),i=Math.min(r,o),g=this.slice(t,d),c=e.slice(a,n),u=0;ud)&&(n=d),e.length>0&&(n<0||a<0)||a>this.length)throw new RangeError("Attempt to write outside buffer bounds");t||(t="utf8");for(var r=!1;;)switch(t){case"hex":return y(this,e,a,n);case"utf8":case"utf-8":return v(this,e,a,n);case"ascii":return j(this,e,a,n);case"latin1":case"binary":return O(this,e,a,n);case"base64":return _(this,e,a,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return x(this,e,a,n);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(""+t).toLowerCase(),r=!0}},s.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function k(e,a,n){var t="";n=Math.min(e.length,n);for(var d=a;dt)&&(n=t);for(var d="",r=a;rn)throw new RangeError("Trying to access beyond buffer length")}function P(e,a,n,t,d,r){if(!s.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(a>d||ae.length)throw new RangeError("Index out of range")}function F(e,a,n,t){a<0&&(a=65535+a+1);for(var d=0,r=Math.min(e.length-n,2);d>>8*(t?d:1-d)}function T(e,a,n,t){a<0&&(a=4294967295+a+1);for(var d=0,r=Math.min(e.length-n,4);d>>8*(t?d:3-d)&255}function L(e,a,n,t,d,r){if(n+t>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function B(e,a,n,t,r){return r||L(e,0,n,4),d.write(e,a,n,t,23,4),n+4}function N(e,a,n,t,r){return r||L(e,0,n,8),d.write(e,a,n,t,52,8),n+8}s.prototype.slice=function(e,a){var n,t=this.length;if((e=~~e)<0?(e+=t)<0&&(e=0):e>t&&(e=t),(a=void 0===a?t:~~a)<0?(a+=t)<0&&(a=0):a>t&&(a=t),a0&&(d*=256);)t+=this[e+--a]*d;return t},s.prototype.readUInt8=function(e,a){return a||C(e,1,this.length),this[e]},s.prototype.readUInt16LE=function(e,a){return a||C(e,2,this.length),this[e]|this[e+1]<<8},s.prototype.readUInt16BE=function(e,a){return a||C(e,2,this.length),this[e]<<8|this[e+1]},s.prototype.readUInt32LE=function(e,a){return a||C(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},s.prototype.readUInt32BE=function(e,a){return a||C(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},s.prototype.readIntLE=function(e,a,n){e|=0,a|=0,n||C(e,a,this.length);for(var t=this[e],d=1,r=0;++r=(d*=128)&&(t-=Math.pow(2,8*a)),t},s.prototype.readIntBE=function(e,a,n){e|=0,a|=0,n||C(e,a,this.length);for(var t=a,d=1,r=this[e+--t];t>0&&(d*=256);)r+=this[e+--t]*d;return r>=(d*=128)&&(r-=Math.pow(2,8*a)),r},s.prototype.readInt8=function(e,a){return a||C(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},s.prototype.readInt16LE=function(e,a){a||C(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},s.prototype.readInt16BE=function(e,a){a||C(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},s.prototype.readInt32LE=function(e,a){return a||C(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},s.prototype.readInt32BE=function(e,a){return a||C(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},s.prototype.readFloatLE=function(e,a){return a||C(e,4,this.length),d.read(this,e,!0,23,4)},s.prototype.readFloatBE=function(e,a){return a||C(e,4,this.length),d.read(this,e,!1,23,4)},s.prototype.readDoubleLE=function(e,a){return a||C(e,8,this.length),d.read(this,e,!0,52,8)},s.prototype.readDoubleBE=function(e,a){return a||C(e,8,this.length),d.read(this,e,!1,52,8)},s.prototype.writeUIntLE=function(e,a,n,t){(e=+e,a|=0,n|=0,t)||P(this,e,a,n,Math.pow(2,8*n)-1,0);var d=1,r=0;for(this[a]=255&e;++r=0&&(r*=256);)this[a+d]=e/r&255;return a+n},s.prototype.writeUInt8=function(e,a,n){return e=+e,a|=0,n||P(this,e,a,1,255,0),s.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[a]=255&e,a+1},s.prototype.writeUInt16LE=function(e,a,n){return e=+e,a|=0,n||P(this,e,a,2,65535,0),s.TYPED_ARRAY_SUPPORT?(this[a]=255&e,this[a+1]=e>>>8):F(this,e,a,!0),a+2},s.prototype.writeUInt16BE=function(e,a,n){return e=+e,a|=0,n||P(this,e,a,2,65535,0),s.TYPED_ARRAY_SUPPORT?(this[a]=e>>>8,this[a+1]=255&e):F(this,e,a,!1),a+2},s.prototype.writeUInt32LE=function(e,a,n){return e=+e,a|=0,n||P(this,e,a,4,4294967295,0),s.TYPED_ARRAY_SUPPORT?(this[a+3]=e>>>24,this[a+2]=e>>>16,this[a+1]=e>>>8,this[a]=255&e):T(this,e,a,!0),a+4},s.prototype.writeUInt32BE=function(e,a,n){return e=+e,a|=0,n||P(this,e,a,4,4294967295,0),s.TYPED_ARRAY_SUPPORT?(this[a]=e>>>24,this[a+1]=e>>>16,this[a+2]=e>>>8,this[a+3]=255&e):T(this,e,a,!1),a+4},s.prototype.writeIntLE=function(e,a,n,t){if(e=+e,a|=0,!t){var d=Math.pow(2,8*n-1);P(this,e,a,n,d-1,-d)}var r=0,o=1,i=0;for(this[a]=255&e;++r>0)-i&255;return a+n},s.prototype.writeIntBE=function(e,a,n,t){if(e=+e,a|=0,!t){var d=Math.pow(2,8*n-1);P(this,e,a,n,d-1,-d)}var r=n-1,o=1,i=0;for(this[a+r]=255&e;--r>=0&&(o*=256);)e<0&&0===i&&0!==this[a+r+1]&&(i=1),this[a+r]=(e/o>>0)-i&255;return a+n},s.prototype.writeInt8=function(e,a,n){return e=+e,a|=0,n||P(this,e,a,1,127,-128),s.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[a]=255&e,a+1},s.prototype.writeInt16LE=function(e,a,n){return e=+e,a|=0,n||P(this,e,a,2,32767,-32768),s.TYPED_ARRAY_SUPPORT?(this[a]=255&e,this[a+1]=e>>>8):F(this,e,a,!0),a+2},s.prototype.writeInt16BE=function(e,a,n){return e=+e,a|=0,n||P(this,e,a,2,32767,-32768),s.TYPED_ARRAY_SUPPORT?(this[a]=e>>>8,this[a+1]=255&e):F(this,e,a,!1),a+2},s.prototype.writeInt32LE=function(e,a,n){return e=+e,a|=0,n||P(this,e,a,4,2147483647,-2147483648),s.TYPED_ARRAY_SUPPORT?(this[a]=255&e,this[a+1]=e>>>8,this[a+2]=e>>>16,this[a+3]=e>>>24):T(this,e,a,!0),a+4},s.prototype.writeInt32BE=function(e,a,n){return e=+e,a|=0,n||P(this,e,a,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),s.TYPED_ARRAY_SUPPORT?(this[a]=e>>>24,this[a+1]=e>>>16,this[a+2]=e>>>8,this[a+3]=255&e):T(this,e,a,!1),a+4},s.prototype.writeFloatLE=function(e,a,n){return B(this,e,a,!0,n)},s.prototype.writeFloatBE=function(e,a,n){return B(this,e,a,!1,n)},s.prototype.writeDoubleLE=function(e,a,n){return N(this,e,a,!0,n)},s.prototype.writeDoubleBE=function(e,a,n){return N(this,e,a,!1,n)},s.prototype.copy=function(e,a,n,t){if(n||(n=0),t||0===t||(t=this.length),a>=e.length&&(a=e.length),a||(a=0),t>0&&t=this.length)throw new RangeError("sourceStart out of bounds");if(t<0)throw new RangeError("sourceEnd out of bounds");t>this.length&&(t=this.length),e.length-a=0;--d)e[d+a]=this[d+n];else if(r<1e3||!s.TYPED_ARRAY_SUPPORT)for(d=0;d>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(r=a;r55295&&n<57344){if(!d){if(n>56319){(a-=3)>-1&&r.push(239,191,189);continue}if(o+1===t){(a-=3)>-1&&r.push(239,191,189);continue}d=n;continue}if(n<56320){(a-=3)>-1&&r.push(239,191,189),d=n;continue}n=65536+(d-55296<<10|n-56320)}else d&&(a-=3)>-1&&r.push(239,191,189);if(d=null,n<128){if((a-=1)<0)break;r.push(n)}else if(n<2048){if((a-=2)<0)break;r.push(n>>6|192,63&n|128)}else if(n<65536){if((a-=3)<0)break;r.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((a-=4)<0)break;r.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return r}function q(e){return t.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(I,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function V(e,a,n,t){for(var d=0;d=a.length||d>=e.length);++d)a[d+n]=e[d];return d}}).call(this,n("yLpj"))},HDyB:function(e,a,n){var t=n("nmnc"),d=n("JHRd"),r=n("ljhN"),o=n("or5M"),i=n("7fqy"),s=n("rEGp"),g=t?t.prototype:void 0,c=g?g.valueOf:void 0;e.exports=function(e,a,n,t,g,u,l){switch(n){case"[object DataView]":if(e.byteLength!=a.byteLength||e.byteOffset!=a.byteOffset)return!1;e=e.buffer,a=a.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=a.byteLength||!u(new d(e),new d(a)));case"[object Boolean]":case"[object Date]":case"[object Number]":return r(+e,+a);case"[object Error]":return e.name==a.name&&e.message==a.message;case"[object RegExp]":case"[object String]":return e==a+"";case"[object Map]":var R=i;case"[object Set]":var p=1&t;if(R||(R=s),e.size!=a.size&&!p)return!1;var f=l.get(e);if(f)return f==a;t|=2,l.set(e,a);var h=o(R(e),R(a),t,g,u,l);return l.delete(e),h;case"[object Symbol]":if(c)return c.call(e)==c.call(a)}return!1}},HGcO:function(e,a,n){const t=n("dVj6")();t.addRange(994,1007).addRange(11392,11507).addRange(11513,11519),e.exports=t},HIQX:function(e,a,n){"use strict";n.r(a),n.d(a,"_frontmatter",(function(){return s})),n.d(a,"default",(function(){return u}));var t=n("wx14"),d=n("Ff2n"),r=(n("q1tI"),n("7ljp")),o=n("hhGP");n("qKvR");const i=["components"],s={};void 0!==s&&s&&s===Object(s)&&Object.isExtensible(s)&&!Object.prototype.hasOwnProperty.call(s,"__filemeta")&&Object.defineProperty(s,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"src/components/install/tk/go.mdx"}});const g={_frontmatter:s},c=o.a;function u(e){let{components:a}=e,n=Object(d.a)(e,i);return Object(r.b)(c,Object(t.a)({},g,n,{components:a,mdxType:"MDXLayout"}),Object(r.b)("p",null,"If you happen to have a local ",Object(r.b)("a",{parentName:"p",href:"https://golang.org"},"Go")," toolchain, you can also build Tanka from source using ",Object(r.b)("inlineCode",{parentName:"p"},"go install"),":"),Object(r.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(r.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(r.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(r.b)("span",{parentName:"span",className:"mtk1"},"$ "),Object(r.b)("span",{parentName:"span",className:"mtk9"},"cd"),Object(r.b)("span",{parentName:"span",className:"mtk1"}," /tmp")),"\n",Object(r.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(r.b)("span",{parentName:"span",className:"mtk1"},"$ go install github.com/grafana/tanka/cmd/tk@latest")))),Object(r.b)("p",null,"If that does not work for whatever reason (Go modules, etc), clone and compile manually:"),Object(r.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(r.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(r.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(r.b)("span",{parentName:"span",className:"mtk1"},"$ git clone https://github.com/grafana/tanka")),"\n",Object(r.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(r.b)("span",{parentName:"span",className:"mtk1"},"$ "),Object(r.b)("span",{parentName:"span",className:"mtk9"},"cd"),Object(r.b)("span",{parentName:"span",className:"mtk1"}," tanka")),"\n",Object(r.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(r.b)("span",{parentName:"span",className:"mtk1"},"$ make install")))),Object(r.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==u&&u&&u===Object(u)&&Object.isExtensible(u)&&!Object.prototype.hasOwnProperty.call(u,"__filemeta")&&Object.defineProperty(u,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"src/components/install/tk/go.mdx"}}),u.isMDXComponent=!0},HLRT:function(e,a,n){const t=n("dVj6")();t.addRange(746,747).addRange(12549,12591).addRange(12704,12735),e.exports=t},HOxn:function(e,a,n){var t=n("Cwc5")(n("Kz5y"),"Promise");e.exports=t},HUGt:function(e,a,n){const t=n("dVj6")(1548,1567,1600,1648,7672,7674);t.addRange(1563,1564).addRange(1611,1621).addRange(1792,1805).addRange(1807,1866).addRange(1869,1871).addRange(2144,2154),e.exports=t},HYAF:function(e,a,n){var t=n("cjT7"),d=TypeError;e.exports=function(e){if(t(e))throw d("Can't call method on "+e);return e}},HYoX:function(e,a,n){const t=n("dVj6")();t.addRange(3328,3340).addRange(3342,3344).addRange(3346,3396).addRange(3398,3400).addRange(3402,3407).addRange(3412,3427).addRange(3430,3455),e.exports=t},HpTs:function(e,a,n){const t=n("dVj6")(32,160,5760,8239,8287,12288);t.addRange(8192,8202).addRange(8232,8233),e.exports=t},Hu3I:function(e,a,n){const t=n("dVj6")();t.addRange(68e3,68023).addRange(68028,68047).addRange(68050,68095),e.exports=t},Hv6T:function(e,a,n){const t=n("dVj6")(71945);t.addRange(71936,71942).addRange(71948,71955).addRange(71957,71958).addRange(71960,71989).addRange(71991,71992).addRange(71995,72006).addRange(72016,72025),e.exports=t},Hvzi:function(e,a){e.exports=function(e){var a=this.has(e)&&delete this.__data__[e];return this.size-=a?1:0,a}},HwGp:function(e,a,n){const t=n("dVj6")();t.addRange(43056,43065).addRange(71168,71236).addRange(71248,71257),e.exports=t},"I+eb":function(e,a,n){var t=n("2oRo"),d=n("Bs8V").f,r=n("kRJp"),o=n("yy0I"),i=n("Y3Q8"),s=n("6JNq"),g=n("lMq5");e.exports=function(e,a){var n,c,u,l,R,p=e.target,f=e.global,h=e.stat;if(n=f?t:h?t[p]||i(p,{}):(t[p]||{}).prototype)for(c in a){if(l=a[c],u=e.dontCallGetSet?(R=d(n,c))&&R.value:n[c],!g(f?c:p+(h?".":"#")+c,e.forced)&&void 0!==u){if(typeof l==typeof u)continue;s(l,u)}(e.sham||u&&u.sham)&&r(l,"sham",!0),o(n,c,l,e)}}},I01J:function(e,a,n){var t=n("44Ds");e.exports=function(e){var a=t(e,(function(e){return 500===n.size&&n.clear(),e})),n=a.cache;return a}},I8vh:function(e,a,n){var t=n("WSbT"),d=Math.max,r=Math.min;e.exports=function(e,a){var n=t(e);return n<0?d(n+a,0):r(n,a)}},IAU5:function(e,a,n){const t=n("dVj6")(123647);t.addRange(123584,123641),e.exports=t},IAl6:function(e,a,n){(function(e,t){var d;(function(){"use strict";var r={function:!0,object:!0},o=r[typeof window]&&window||this,i=r[typeof a]&&a&&!a.nodeType&&a,s=r[typeof e]&&e&&!e.nodeType,g=i&&s&&"object"==typeof t&&t;!g||g.global!==g&&g.window!==g&&g.self!==g||(o=g);var c=Object.prototype.hasOwnProperty;function u(){var e=Number(arguments[0]);if(!isFinite(e)||e<0||e>1114111||Math.floor(e)!=e)throw RangeError("Invalid code point: "+e);if(e<=65535)return String.fromCharCode(e);var a=55296+((e-=65536)>>10),n=e%1024+56320;return String.fromCharCode(a,n)}var l={};function R(e,a){if(-1==a.indexOf("|")){if(e==a)return;throw Error("Invalid node type: "+e+"; expected type: "+a)}if(!(a=c.call(l,a)?l[a]:l[a]=RegExp("^(?:"+a+")$")).test(e))throw Error("Invalid node type: "+e+"; expected types: "+a)}function p(e){var a=e.type;if(c.call(y,a))return y[a](e);throw Error("Invalid node type: "+a)}function f(e,a){for(var n,t=-1,d=a.length,r="";++t=48&&a[t+1].codePoint<=57?r+="\\000":r+=e(n);return r}function h(e){return R(e.type,"anchor|characterClassEscape|characterClassRange|dot|value"),p(e)}function m(e){return R(e.type,"identifier"),e.value}function b(e){return R(e.type,"anchor|characterClass|characterClassEscape|empty|group|quantifier|reference|unicodePropertyEscape|value|dot"),p(e)}var y={alternative:function(e){return R(e.type,"alternative"),f(b,e.body)},anchor:function(e){switch(R(e.type,"anchor"),e.kind){case"start":return"^";case"end":return"$";case"boundary":return"\\b";case"not-boundary":return"\\B";default:throw Error("Invalid assertion")}},characterClass:function(e){return R(e.type,"characterClass"),"["+(e.negative?"^":"")+f(h,e.body)+"]"},characterClassEscape:function(e){return R(e.type,"characterClassEscape"),"\\"+e.value},characterClassRange:function(e){R(e.type,"characterClassRange");var a=e.min,n=e.max;if("characterClassRange"==a.type||"characterClassRange"==n.type)throw Error("Invalid character class range");return h(a)+"-"+h(n)},disjunction:function(e){R(e.type,"disjunction");for(var a=e.body,n=-1,t=a.length,d="";++n");break;case"ignore":a+="?:";break;case"lookahead":a+="?=";break;case"negativeLookahead":a+="?!";break;case"lookbehind":a+="?<=";break;case"negativeLookbehind":a+="?";throw new Error("Unknown reference type")},unicodePropertyEscape:function(e){return R(e.type,"unicodePropertyEscape"),"\\"+(e.negative?"P":"p")+"{"+e.value+"}"},value:function(e){R(e.type,"value");var a=e.kind,n=e.codePoint;if("number"!=typeof n)throw new Error("Invalid code point: "+n);switch(a){case"controlLetter":return"\\c"+u(n+64);case"hexadecimalEscape":return"\\x"+("00"+n.toString(16).toUpperCase()).slice(-2);case"identifier":return"\\"+u(n);case"null":return"\\"+n;case"octal":return"\\"+("000"+n.toString(8)).slice(-3);case"singleEscape":switch(n){case 8:return"\\b";case 9:return"\\t";case 10:return"\\n";case 11:return"\\v";case 12:return"\\f";case 13:return"\\r";case 45:return"\\-";default:throw Error("Invalid code point: "+n)}case"symbol":return u(n);case"unicodeEscape":return"\\u"+("0000"+n.toString(16).toUpperCase()).slice(-4);case"unicodeCodePointEscape":return"\\u{"+n.toString(16).toUpperCase()+"}";default:throw Error("Unsupported node kind: "+a)}}},v={generate:p};void 0===(d=function(){return v}.call(a,n,a,e))||(e.exports=d),o.regjsgen=v}).call(this)}).call(this,n("YuTi")(e),n("yLpj"))},IK5f:function(e,a,n){const t=n("dVj6")();t.addRange(68736,68786).addRange(68800,68850).addRange(68858,68863),e.exports=t},IMPD:function(e,a,n){const t=n("dVj6")(181,257,259,261,263,265,267,269,271,273,275,277,279,281,283,285,287,289,291,293,295,297,299,301,303,305,307,309,311,314,316,318,320,322,324,326,331,333,335,337,339,341,343,345,347,349,351,353,355,357,359,361,363,365,367,369,371,373,375,378,380,387,389,392,396,402,405,414,417,419,421,424,429,432,436,438,441,445,447,452,460,462,464,466,468,470,472,474,479,481,483,485,487,489,491,493,499,501,505,507,509,511,513,515,517,519,521,523,525,527,529,531,533,535,537,539,541,543,547,549,551,553,555,557,559,561,563,572,578,583,585,587,589,601,611,623,629,637,640,658,837,881,883,887,912,985,987,989,991,993,995,997,999,1001,1003,1005,1013,1016,1019,1121,1123,1125,1127,1129,1131,1133,1135,1137,1139,1141,1143,1145,1147,1149,1151,1153,1163,1165,1167,1169,1171,1173,1175,1177,1179,1181,1183,1185,1187,1189,1191,1193,1195,1197,1199,1201,1203,1205,1207,1209,1211,1213,1215,1218,1220,1222,1224,1226,1228,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315,1317,1319,1321,1323,1325,1327,7545,7549,7566,7681,7683,7685,7687,7689,7691,7693,7695,7697,7699,7701,7703,7705,7707,7709,7711,7713,7715,7717,7719,7721,7723,7725,7727,7729,7731,7733,7735,7737,7739,7741,7743,7745,7747,7749,7751,7753,7755,7757,7759,7761,7763,7765,7767,7769,7771,7773,7775,7777,7779,7781,7783,7785,7787,7789,7791,7793,7795,7797,7799,7801,7803,7805,7807,7809,7811,7813,7815,7817,7819,7821,7823,7825,7827,7841,7843,7845,7847,7849,7851,7853,7855,7857,7859,7861,7863,7865,7867,7869,7871,7873,7875,7877,7879,7881,7883,7885,7887,7889,7891,7893,7895,7897,7899,7901,7903,7905,7907,7909,7911,7913,7915,7917,7919,7921,7923,7925,7927,7929,7931,7933,8126,8526,8580,11361,11368,11370,11372,11379,11382,11393,11395,11397,11399,11401,11403,11405,11407,11409,11411,11413,11415,11417,11419,11421,11423,11425,11427,11429,11431,11433,11435,11437,11439,11441,11443,11445,11447,11449,11451,11453,11455,11457,11459,11461,11463,11465,11467,11469,11471,11473,11475,11477,11479,11481,11483,11485,11487,11489,11491,11500,11502,11507,11559,11565,42561,42563,42565,42567,42569,42571,42573,42575,42577,42579,42581,42583,42585,42587,42589,42591,42593,42595,42597,42599,42601,42603,42605,42625,42627,42629,42631,42633,42635,42637,42639,42641,42643,42645,42647,42649,42651,42787,42789,42791,42793,42795,42797,42799,42803,42805,42807,42809,42811,42813,42815,42817,42819,42821,42823,42825,42827,42829,42831,42833,42835,42837,42839,42841,42843,42845,42847,42849,42851,42853,42855,42857,42859,42861,42863,42874,42876,42879,42881,42883,42885,42887,42892,42897,42903,42905,42907,42909,42911,42913,42915,42917,42919,42921,42933,42935,42937,42939,42941,42943,42945,42947,42952,42954,42961,42967,42969,42998,43859);t.addRange(97,122).addRange(223,246).addRange(248,255).addRange(328,329).addRange(382,384).addRange(409,410).addRange(454,455).addRange(457,458).addRange(476,477).addRange(495,497).addRange(575,576).addRange(591,596).addRange(598,599).addRange(603,604).addRange(608,609).addRange(613,614).addRange(616,620).addRange(625,626).addRange(642,643).addRange(647,652).addRange(669,670).addRange(891,893).addRange(940,974).addRange(976,977).addRange(981,983).addRange(1007,1011).addRange(1072,1119).addRange(1230,1231).addRange(1377,1415).addRange(5112,5117).addRange(7296,7304).addRange(7829,7835).addRange(7935,7943).addRange(7952,7957).addRange(7968,7975).addRange(7984,7991).addRange(8e3,8005).addRange(8016,8023).addRange(8032,8039).addRange(8048,8061).addRange(8064,8071).addRange(8080,8087).addRange(8096,8103).addRange(8112,8116).addRange(8118,8119).addRange(8130,8132).addRange(8134,8135).addRange(8144,8147).addRange(8150,8151).addRange(8160,8167).addRange(8178,8180),t.addRange(8182,8183).addRange(8560,8575).addRange(9424,9449).addRange(11312,11359).addRange(11365,11366).addRange(11520,11557).addRange(42899,42900).addRange(43888,43967).addRange(64256,64262).addRange(64275,64279).addRange(65345,65370).addRange(66600,66639).addRange(66776,66811).addRange(66967,66977).addRange(66979,66993).addRange(66995,67001).addRange(67003,67004).addRange(68800,68850).addRange(71872,71903).addRange(93792,93823).addRange(125218,125251),e.exports=t},IOVJ:function(e,a,n){"use strict";var t=n("rePB"),d=n("dI71"),r=n("q1tI"),o=n.n(r),i=n("emEt"),s=n("xtsi"),g=n("30RF");function c(e,a){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);a&&(t=t.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),n.push.apply(n,t)}return n}function u(e){for(var a=1;a{let{result:n}=a;return{element:n,props:e}}).pop()},a}(o.a.Component);a.a=l},IOzZ:function(e,a){e.exports=function(e,a){return function(n){return null!=n&&(n[e]===a&&(void 0!==a||e in Object(n)))}}},ITVs:function(e){e.exports=JSON.parse('{"a":"10.3.1"}')},IZLa:function(e,a,n){const t=n("dVj6")();t.addRange(64976,65007).addRange(65534,65535).addRange(131070,131071).addRange(196606,196607).addRange(262142,262143).addRange(327678,327679).addRange(393214,393215).addRange(458750,458751).addRange(524286,524287).addRange(589822,589823).addRange(655358,655359).addRange(720894,720895).addRange(786430,786431).addRange(851966,851967).addRange(917502,917503).addRange(983038,983039).addRange(1048574,1048575).addRange(1114110,1114111),e.exports=t},IZzc:function(e,a,n){"use strict";var t=n("2oRo"),d=n("RiVN"),r=n("0Dky"),o=n("We1y"),i=n("rdv8"),s=n("67WC"),g=n("BNF5"),c=n("2Zix"),u=n("LQDL"),l=n("USzg"),R=s.aTypedArray,p=s.exportTypedArrayMethod,f=t.Uint16Array,h=f&&d(f.prototype.sort),m=!(!h||r((function(){h(new f(2),null)}))&&r((function(){h(new f(2),{})}))),b=!!h&&!r((function(){if(u)return u<74;if(g)return g<67;if(c)return!0;if(l)return l<602;var e,a,n=new f(516),t=Array(516);for(e=0;e<516;e++)a=e%4,n[e]=515-e,t[e]=e-2*a+3;for(h(n,(function(e,a){return(e/4|0)-(a/4|0)})),e=0;e<516;e++)if(n[e]!==t[e])return!0}));p("sort",(function(e){return void 0!==e&&o(e),b?h(this,e):i(R(this),function(e){return function(a,n){return void 0!==e?+e(a,n)||0:n!=n?-1:a!=a?1:0===a&&0===n?1/a>0&&1/n<0?1:-1:a>n}}(e))}),!b||m)},Ig5p:function(e,a,n){e.exports={ary:n("v8vJ"),assign:n("WwFo"),clone:n("uM7l"),curry:n("3EZw"),forEach:n("gFfm"),isArray:n("Z0cm"),isError:n("PtqM"),isFunction:n("lSCD"),isWeakMap:n("gz5L"),iteratee:n("cWj/"),keys:n("A90E"),rearg:n("be4H"),toInteger:n("Sxd8"),toPath:n("0Bgb")}},IiUL:function(e,a,n){"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.FrameContextConsumer=a.FrameContext=void 0;var t=n("Z6fC");Object.defineProperty(a,"FrameContext",{enumerable:!0,get:function(){return t.FrameContext}}),Object.defineProperty(a,"FrameContextConsumer",{enumerable:!0,get:function(){return t.FrameContextConsumer}});var d,r=n("c+H2"),o=(d=r)&&d.__esModule?d:{default:d};a.default=o.default},Ioao:function(e,a,n){var t=n("heNW"),d=Math.max;e.exports=function(e,a,n){return a=d(void 0===a?e.length-1:a,0),function(){for(var r=arguments,o=-1,i=d(r.length-a,0),s=Array(i);++o1114111||d(g)!=g)throw RangeError("Invalid code point: "+g);g<=65535?r.push(g):(e=55296+((g-=65536)>>10),a=g%1024+56320,r.push(e,a)),(o+1==i||r.length>n)&&(s+=t.apply(null,r),r.length=0)}return s}),o={parse:function(e,a,n){function t(a){return a.raw=e.substring(a.range[0],a.range[1]),a}function d(e,a){return e.range[0]=a,t(e)}function o(e,a){return t({type:"anchor",kind:e,range:[Q-a,Q]})}function i(e,a,n,d){return t({type:"value",kind:e,codePoint:a,range:[n,d]})}function s(e,a,n,t){return t=t||0,i(e,a,Q-(n.length+t),Q)}function g(e){var a,n=e[0],t=n.charCodeAt(0);return $&&1===n.length&&t>=55296&&t<=56319&&(a=m().charCodeAt(0))>=56320&&a<=57343?i("symbol",1024*(t-55296)+a-56320+65536,++Q-2,Q):i("symbol",t,Q-1,Q)}function c(e,a,n,d){return null==d&&(n=Q-1,d=Q),t({type:"quantifier",min:e,max:a,greedy:!0,body:null,range:[n,d]})}function u(e,a,n,d){return t({type:"characterClass",kind:e.kind,body:e.body,negative:a,range:[n,d]})}function l(e,a,n,d){return e.codePoint>a.codePoint&&W("invalid range in character class",e.raw+"-"+a.raw,n,d),t({type:"characterClassRange",min:e,max:a,range:[n,d]})}function R(e){return"alternative"===e.type?e.body:[e]}function p(a){a=a||1;var n=e.substring(Q,Q+a);return Q+=a||1,n}function f(e){h(e)||W("character",e)}function h(a){if(e.indexOf(a,Q)===Q)return p(a.length)}function m(){return e[Q]}function b(a){return e.indexOf(a,Q)===Q}function y(a){return e[Q+1]===a}function v(a){var n=e.substring(Q).match(a);return n&&(n.range=[],n.range[0]=Q,p(n[0].length),n.range[1]=Q),n}function j(){var e=[],a=Q;for(e.push(O());h("|");)e.push(O());return 1===e.length?e[0]:function(e,a,n){return t({type:"disjunction",body:e,range:[a,n]})}(e,a,Q)}function O(){for(var e,a=[],n=Q;e=_();)a.push(e);return 1===a.length?a[0]:function(e,a,n){return t({type:"alternative",body:e,range:[a,n]})}(a,n,Q)}function _(){if(Q>=e.length||b("|")||b(")"))return null;var a=h("^")?o("start",1):h("$")?o("end",1):h("\\b")?o("boundary",2):h("\\B")?o("not-boundary",2):x("(?=","lookahead","(?!","negativeLookahead");if(a)return a;var r,s=function(){var e;if(e=v(/^[^^$\\.*+?()[\]{}|]/))return g(e);if(!$&&(e=v(/^(?:]|})/)))return g(e);if(h("."))return t({type:"dot",range:[Q-1,Q]});if(h("\\")){if(!(e=D())){if(!$&&"c"==m())return i("symbol",92,Q-1,Q);W("atomEscape")}return e}if(e=N())return e;if(n.lookbehind&&(e=x("(?<=","lookbehind","(?");var d=w("normal",a.range[0]-3);return d.name=a,d}return x("(?:","ignore","(","normal")}();return s||(pos_backup=Q,(r=E()||!1)&&(Q=pos_backup,W("Expected atom")),!$&&(res=v(/^{/))?s=g(res):W("Expected atom")),(r=E()||!1)?(r.body=R(s),d(r,s.range[0]),r):s}function x(e,a,n,t){var d=null,r=Q;if(h(e))d=a;else{if(!h(n))return!1;d=t}return w(d,r)}function w(e,a){var n=j();n||W("Expected disjunction"),f(")");var d=function(e,a,n,d){return t({type:"group",behavior:e,body:a,range:[n,d]})}(e,R(n),a,Q);return"normal"==e&&Z&&Y++,d}function E(){var e,a,n,t,d=Q;return h("*")?a=c(0):h("+")?a=c(1):h("?")?a=c(0,1):(e=v(/^\{([0-9]+)\}/))?a=c(n=parseInt(e[1],10),n,e.range[0],e.range[1]):(e=v(/^\{([0-9]+),\}/))?a=c(n=parseInt(e[1],10),void 0,e.range[0],e.range[1]):(e=v(/^\{([0-9]+),([0-9]+)\}/))&&((n=parseInt(e[1],10))>(t=parseInt(e[2],10))&&W("numbers out of order in {} quantifier","",d,Q),a=c(n,t,e.range[0],e.range[1])),a&&h("?")&&(a.greedy=!1,a.range[1]+=1),a}function k(e){var a,n;if($&&"unicodeEscape"==e.kind&&(a=e.codePoint)>=55296&&a<=56319&&b("\\")&&y("u")){var d=Q;Q++;var r=S();"unicodeEscape"==r.kind&&(n=r.codePoint)>=56320&&n<=57343?(e.range[1]=r.range[1],e.codePoint=1024*(a-55296)+n-56320+65536,e.type="value",e.kind="unicodeCodePointEscape",t(e)):Q=d}return e}function S(){return D(!0)}function D(e){var a,r=Q;if(a=function(){var e,a,n;if(e=v(/^(?!0)\d+/)){a=e[0];var r=parseInt(e[0],10);return r<=Y?(n=e[0],t({type:"reference",matchIndex:parseInt(n,10),range:[Q-1-n.length,Q]})):(K.push(r),p(-e[0].length),(e=v(/^[0-7]{1,3}/))?s("octal",parseInt(e[0],8),e[0],1):d(e=g(v(/^[89]/)),e.range[0]-1))}return!!(e=v(/^[0-7]{1,3}/))&&(a=e[0],/^0{1,3}$/.test(a)?s("null",0,"0",a.length):s("octal",parseInt(a,8),a,1))}()||function(){if(n.namedGroups&&v(/^k<(?=.*?>)/)){var e=T();return f(">"),function(e){return t({type:"reference",name:e,range:[e.range[0]-3,Q]})}(e)}}())return a;if(e){if(h("b"))return s("singleEscape",8,"\\b");if(h("B"))W("\\B not possible inside of CharacterClass","",r);else{if(!$&&(a=v(/^c([0-9])/)))return s("controlLetter",a[1]+16,a[1],2);if(!$&&(a=v(/^c_/)))return s("controlLetter",31,"_",2)}if($&&h("-"))return s("singleEscape",45,"\\-")}return a=A()||P()}function A(){var e;return(e=v(/^[dDsSwW]/))?t({type:"characterClassEscape",value:e[0],range:[Q-2,Q]}):!(!n.unicodePropertyEscape||!$&&!X||!(e=v(/^([pP])\{([^\}]+)\}/)))&&t({type:"unicodePropertyEscape",negative:"P"===e[1],value:e[2],range:[e.range[0]-1,e.range[1]],raw:e[0]})}function C(){var e;return(e=v(/^u([0-9a-fA-F]{4})/))?k(s("unicodeEscape",parseInt(e[1],16),e[1],2)):$&&(e=v(/^u\{([0-9a-fA-F]+)\}/))?s("unicodeCodePointEscape",parseInt(e[1],16),e[1],4):void 0}function P(){var e,a,t,d=Q;if(e=v(/^[fnrtv]/)){var r=0;switch(e[0]){case"t":r=9;break;case"n":r=10;break;case"v":r=11;break;case"f":r=12;break;case"r":r=13}return s("singleEscape",r,"\\"+e[0])}return(e=v(/^c([a-zA-Z])/))?s("controlLetter",e[1].charCodeAt(0)%32,e[1],2):(e=v(/^x([0-9a-fA-F]{2})/))?s("hexadecimalEscape",parseInt(e[1],16),e[1],2):(e=C())?((!e||e.codePoint>1114111)&&W("Invalid escape sequence",null,d,Q),e):(t=m(),$&&/[\^\$\.\*\+\?\(\)\\\[\]\{\}\|\/]/.test(t)||!$&&"c"!==t?"k"===t&&n.lookbehind?null:s("identifier",(a=p()).charCodeAt(0),a,1):null)}function F(a){var n=m(),t=Q;if("\\"===n){p();var d=C();return d&&a(d.codePoint)||W("Invalid escape sequence",null,t,Q),r(d.codePoint)}var o=n.charCodeAt(0);if(o>=55296&&o<=56319){var i=(n+=e[Q+1]).charCodeAt(1);i>=56320&&i<=57343&&(o=1024*(o-55296)+i-56320+65536)}if(a(o))return p(),o>65535&&p(),n}function T(){var e,a=Q,n=F(L);for(n||W("Invalid identifier");e=F(B);)n+=e;return t({type:"identifier",value:n,range:[a,Q]})}function L(e){return 36===e||95===e||e>=65&&e<=90||e>=97&&e<=122||e>=128&&/[\$A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7B9\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDF00-\uDF1C\uDF27\uDF30-\uDF45]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF1A]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFF1]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/.test(r(e))}function B(e){return L(e)||e>=48&&e<=57||e>=128&&/[0-9_\xB7\u0300-\u036F\u0387\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u0669\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u06F0-\u06F9\u0711\u0730-\u074A\u07A6-\u07B0\u07C0-\u07C9\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0966-\u096F\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09E6-\u09EF\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A66-\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AE6-\u0AEF\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B66-\u0B6F\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE6-\u0BEF\u0C00-\u0C04\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0CE6-\u0CEF\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D66-\u0D6F\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0E50-\u0E59\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0ED0-\u0ED9\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1040-\u1049\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109D\u135D-\u135F\u1369-\u1371\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u18A9\u1920-\u192B\u1930-\u193B\u1946-\u194F\u19D0-\u19DA\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AB0-\u1ABD\u1B00-\u1B04\u1B34-\u1B44\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BF3\u1C24-\u1C37\u1C40-\u1C49\u1C50-\u1C59\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u200C\u200D\u203F\u2040\u2054\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA620-\uA629\uA66F\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F1\uA8FF-\uA909\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9D0-\uA9D9\uA9E5\uA9F0-\uA9F9\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA50-\uAA59\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uABF0-\uABF9\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFF10-\uFF19\uFF3F]|\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD803[\uDD24-\uDD27\uDD30-\uDD39\uDF46-\uDF50]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC66-\uDC6F\uDC7F-\uDC82\uDCB0-\uDCBA\uDCF0-\uDCF9\uDD00-\uDD02\uDD27-\uDD34\uDD36-\uDD3F\uDD45\uDD46\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDDC9-\uDDCC\uDDD0-\uDDD9\uDE2C-\uDE37\uDE3E\uDEDF-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF3B\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC35-\uDC46\uDC50-\uDC59\uDC5E\uDCB0-\uDCC3\uDCD0-\uDCD9\uDDAF-\uDDB5\uDDB8-\uDDC0\uDDDC\uDDDD\uDE30-\uDE40\uDE50-\uDE59\uDEAB-\uDEB7\uDEC0-\uDEC9\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDC2C-\uDC3A\uDCE0-\uDCE9\uDE01-\uDE0A\uDE33-\uDE39\uDE3B-\uDE3E\uDE47\uDE51-\uDE5B\uDE8A-\uDE99]|\uD807[\uDC2F-\uDC36\uDC38-\uDC3F\uDC50-\uDC59\uDC92-\uDCA7\uDCA9-\uDCB6\uDD31-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD45\uDD47\uDD50-\uDD59\uDD8A-\uDD8E\uDD90\uDD91\uDD93-\uDD97\uDDA0-\uDDA9\uDEF3-\uDEF6]|\uD81A[\uDE60-\uDE69\uDEF0-\uDEF4\uDF30-\uDF36\uDF50-\uDF59]|\uD81B[\uDF51-\uDF7E\uDF8F-\uDF92]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDCD0-\uDCD6\uDD44-\uDD4A\uDD50-\uDD59]|\uDB40[\uDD00-\uDDEF]/.test(r(e))}function N(){var e,a=Q;return(e=v(/^\[\^/))?(e=I(),f("]"),u(e,!0,a,Q)):h("[")?(e=I(),f("]"),u(e,!1,a,Q)):null}function I(){var e,a;return b("]")?{kind:"union",body:[]}:X?function(){var e,a=[],n=q(!0);for(a.push(n),e="classRange"===n.type?"union":b("&")?"intersection":b("-")?"subtraction":"union";!b("]");)"intersection"===e?(f("&"),f("&"),b("&")&&W("&& cannot be followed by &. Wrap it in parentheses: &&(&).")):"subtraction"===e&&(f("-"),f("-")),n=q("union"===e),a.push(n);return{kind:e,body:a}}():((a=z())||W("classAtom"),(e=b("]")?[a]:M(a))||W("nonEmptyClassRanges"),{kind:"union",body:e})}function M(e){var a,n,t,d,r;if(b("-")&&!y("]")){a=e.range[0],r=g(h("-")),(d=z())||W("classAtom"),n=Q;var o=I();return o||W("classRanges"),"codePoint"in e&&"codePoint"in d?t=[l(e,d,a,n)]:$?W("invalid character class"):t=[e,r,d],"empty"===o.type?t:t.concat(o.body)}return(t=function(){var e=z();return e||W("classAtom"),b("]")?e:M(e)}())||W("nonEmptyClassRangesNoDash"),[e].concat(t)}function z(){return h("-")?g("-"):function(){var e;return(e=v(/^[^\\\]-]/))?g(e[0]):h("\\")?((e=S())||W("classEscape"),k(e)):void 0}()}function q(e){var a,n,d=Q;if(h("\\"))if(n=A())a=n;else{if(n=G())return n;W("Invalid escape","\\"+m(),d)}else if(n=U())a=n;else{if(n=function(){var e=[],a=Q;if(!h("("))return null;do{e.push(H())}while(h("|"));return f(")"),function(e,a,n){return t({type:"classStrings",strings:e,range:[a,n]})}(e,a,Q)}()||N())return n;W("Invalid character",m())}if(e&&b("-")&&!y("-")){if(f("-"),n=V())return l(a,n,d,Q);W("Invalid range end",m())}return a}function V(){if(h("\\")){if(res=G())return res;W("Invalid escape","\\"+m(),from)}return U()}function U(){var e;if(e=v(/^[^()[\]{}/\-\\|]/))return g(e)}function G(){return h("b")?s("singleEscape",8,"\\b"):h("B")?void W("\\B not possible inside of ClassContents","",Q-2):(res=v(/^[&\-!#%,:;<=>@_`~]/))?s("identifier",res[0].codePointAt(0),res[0]):(res=P())?res:null}function H(){for(var e,a=[],n=Q;e=V();)a.push(e);return function(e,a,n){return t({type:"classString",characters:e,range:[a,n]})}(a,n,Q)}function W(a,n,t,d){t=null==t?Q:t,d=null==d?t:d;var r=Math.max(0,t-10),o=Math.min(d+10,e.length),i=" "+e.substring(r,o),s=" "+new Array(t-r+1).join(" ")+"^";throw SyntaxError(a+" at position "+t+(n?": "+n:"")+"\n"+i+"\n"+s)}n||(n={});var K=[],Y=0,Z=!0,$=-1!==(a||"").indexOf("u"),X=-1!==(a||"").indexOf("v"),Q=0;if(X&&!n.unicodeSet)throw new Error('The "v" flag is only supported when the .unicodeSet option is enabled.');if($&&X)throw new Error('The "u" and "v" flags are mutually exclusive.');""===(e=String(e))&&(e="(?:)");var J=j();J.range[1]!==e.length&&W("Could not parse entire input - got stuck","",J.range[1]);for(var ee=0;eed?0:d+a),(n=n>d?d:n)<0&&(n+=d),d=a>n?0:n-a>>>0,a>>>=0;for(var r=Array(d);++t=200){var f=a?null:i(e);if(f)return s(f);l=!1,c=o,p=new t}else p=a?[]:R;e:for(;++g0&&t[0]<4?1:+(t[0]+t[1])),!d&&o&&(!(t=o.match(/Edge\/(\d+)/))||t[1]>=74)&&(t=o.match(/Chrome\/(\d+)/))&&(d=+t[1]),e.exports=d},LXxW:function(e,a){e.exports=function(e,a){for(var n=-1,t=null==e?0:e.length,d=0,r=[];++na.score?-1:e.index-a.index}))},h=function(e){return e.replace(/(^\/+|\/+$)/g,"").split("/")},m=function(e){for(var a=arguments.length,n=Array(a>1?a-1:0),t=1;t0})))&&n.length>0?"?"+n.join("&"):"")},b=["uri","path"],y=function(e,a){var n=Object.keys(e);return n.length===Object.keys(a).length&&n.every((function(n){return a.hasOwnProperty(n)&&e[n]===a[n]}))}},LZTu:function(e,a,n){const t=n("dVj6")(3517,3530,3542);t.addRange(3457,3459).addRange(3461,3478).addRange(3482,3505).addRange(3507,3515).addRange(3520,3526).addRange(3535,3540).addRange(3544,3551).addRange(3558,3567).addRange(3570,3572).addRange(70113,70132),e.exports=t},LZZ3:function(e,a,n){const t=n("dVj6")(41,93,125,3899,3901,5788,8262,8318,8334,8969,8971,9002,10089,10091,10093,10095,10097,10099,10101,10182,10215,10217,10219,10221,10223,10628,10630,10632,10634,10636,10638,10640,10642,10644,10646,10648,10713,10715,10749,11811,11813,11815,11817,11862,11864,11866,11868,12297,12299,12301,12303,12305,12309,12311,12313,12315,64830,65048,65078,65080,65082,65084,65086,65088,65090,65092,65096,65114,65116,65118,65289,65341,65373,65376,65379);t.addRange(12318,12319),e.exports=t},LcsW:function(e,a,n){var t=n("kekF")(Object.getPrototypeOf,Object);e.exports=t},LeKB:function(e,a,n){e.exports=[{plugin:n("BOnt"),options:{plugins:[]}},{plugin:n("flL/"),options:{plugins:[],extensions:[".md",".mdx"],remarkPlugins:[[null,{type:"yaml",marker:"-"}],null],rehypePlugins:[null,null],gatsbyRemarkPlugins:[{resolve:"gatsby-remark-images",options:{sizeByPixelDensity:!0,withWebp:!0}},{resolve:"gatsby-remark-vscode",options:{logLevel:"debug",colorTheme:"Material Theme Darker",injectStyles:!1,extensionDataDirectory:"/home/runner/work/tanka/tanka/docs/.vscext",extensions:[{identifier:"heptio.jsonnet",version:"0.1.0"},{identifier:"Equinusocio.vsc-material-theme",version:"30.0.0"}]}}],defaultLayouts:{default:"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js"},lessBabel:!1,mediaTypes:["text/markdown","text/x-markdown"],root:"/home/runner/work/tanka/tanka/docs"}},{plugin:n("anp4"),options:{plugins:[]}},{plugin:n("XdyY"),options:{plugins:[],gatsbyRemarkPlugins:[{resolve:"gatsby-remark-images",options:{sizeByPixelDensity:!0,withWebp:!0}},{resolve:"gatsby-remark-vscode",options:{logLevel:"debug",colorTheme:"Material Theme Darker",injectStyles:!1,extensionDataDirectory:"/home/runner/work/tanka/tanka/docs/.vscext",extensions:[{identifier:"heptio.jsonnet",version:"0.1.0"},{identifier:"Equinusocio.vsc-material-theme",version:"30.0.0"}]}}]}},{plugin:n("npZl"),options:{plugins:[],name:"Grafana Tanka",short_name:"Tanka",start_url:"/",display:"standalone",icon:"img/logo_black.svg",background_color:"#ffffff",theme_color:"#000000",legacy:!0,theme_color_in_head:!0,cache_busting_mode:"query",crossOrigin:"anonymous",include_favicon:!0,cacheDigest:"815afb474b603167d9aafa836ab02617"}},{plugin:n("e/UW"),options:{plugins:[],precachePages:["/","/install","/tutorial/overview"]}}]},LqhL:function(e,a,n){const t=n("dVj6")();t.addRange(72816,72847).addRange(72850,72871).addRange(72873,72886),e.exports=t},LsHQ:function(e,a,n){var t=n("EA7m"),d=n("mv/X");e.exports=function(e){return t((function(a,n){var t=-1,r=n.length,o=r>1?n[r-1]:void 0,i=r>2?n[2]:void 0;for(o=e.length>3&&"function"==typeof o?(r--,o):void 0,i&&d(n[0],n[1],i)&&(o=r<3?void 0:o,r=1),a=Object(a);++t{Object(t.apiRunner)("onServiceWorkerUpdateFound",{serviceWorker:e});const a=e.installing;console.log("installingWorker",a),a.addEventListener("statechange",()=>{switch(a.state){case"installed":navigator.serviceWorker.controller?(window.___swUpdated=!0,Object(t.apiRunner)("onServiceWorkerUpdateReady",{serviceWorker:e}),window.___failedResources&&(console.log("resources failed, SW updated - reloading"),window.location.reload())):(console.log("Content is now available offline!"),Object(t.apiRunner)("onServiceWorkerInstalled",{serviceWorker:e}));break;case"redundant":console.error("The installing service worker became redundant."),Object(t.apiRunner)("onServiceWorkerRedundant",{serviceWorker:e});break;case"activated":Object(t.apiRunner)("onServiceWorkerActive",{serviceWorker:e})}})})})).catch((function(e){console.error("Error during service worker registration:",e)}))},NTOk:function(e,a,n){const t=n("dVj6")();t.addRange(7248,7295),e.exports=t},NcVZ:function(e,a,n){const t=n("dVj6")();t.addRange(70016,70111),e.exports=t},"Ng/I":function(e,a,n){const t=n("dVj6")();t.addRange(69840,69864).addRange(69872,69881),e.exports=t},NhNr:function(e,a,n){const t=n("dVj6")();t.addRange(43072,43127),e.exports=t},NpMe:function(e,a,n){const t=n("dVj6")();t.addRange(69424,69465),e.exports=t},Npjl:function(e,a){e.exports=function(e,a){return null==e?void 0:e[a]}},NsGk:function(e,a,n){a.components={"component---cache-caches-gatsby-plugin-offline-app-shell-js":()=>n.e(2).then(n.t.bind(null,"zXQ9",7)),"component---docs-completion-md":()=>n.e(3).then(n.bind(null,"pdrC")),"component---docs-config-md":()=>n.e(4).then(n.bind(null,"9oCR")),"component---docs-diff-strategy-md":()=>n.e(5).then(n.bind(null,"tUVA")),"component---docs-directory-structure-md":()=>n.e(6).then(n.bind(null,"6SEy")),"component---docs-env-vars-md":()=>n.e(7).then(n.bind(null,"YnQe")),"component---docs-exporting-md":()=>n.e(8).then(n.bind(null,"AXtd")),"component---docs-faq-md":()=>n.e(9).then(n.bind(null,"RGCZ")),"component---docs-formatting-md":()=>n.e(10).then(n.bind(null,"zzAL")),"component---docs-garbage-collection-md":()=>n.e(11).then(n.bind(null,"GAVx")),"component---docs-helm-mdx":()=>n.e(12).then(n.bind(null,"YJCz")),"component---docs-inline-environments-mdx":()=>n.e(13).then(n.bind(null,"d0WO")),"component---docs-installation-mdx":()=>n.e(14).then(n.bind(null,"5gTo")),"component---docs-introduction-mdx":()=>n.e(15).then(n.bind(null,"iQkD")),"component---docs-jsonnet-injecting-values-md":()=>n.e(16).then(n.bind(null,"3fvT")),"component---docs-jsonnet-main-md":()=>n.e(17).then(n.bind(null,"hUCp")),"component---docs-jsonnet-native-functions-md":()=>n.e(18).then(n.bind(null,"3rzr")),"component---docs-jsonnet-overview-md":()=>n.e(19).then(n.bind(null,"5bP6")),"component---docs-known-issues-md":()=>n.e(20).then(n.bind(null,"+sT5")),"component---docs-kustomize-mdx":()=>n.e(21).then(n.bind(null,"uQoz")),"component---docs-libraries-import-paths-md":()=>n.e(22).then(n.bind(null,"OlZl")),"component---docs-libraries-install-publish-md":()=>n.e(23).then(n.bind(null,"pI5B")),"component---docs-libraries-overriding-md":()=>n.e(24).then(n.bind(null,"7Pa4")),"component---docs-namespaces-md":()=>n.e(25).then(n.bind(null,"+UK2")),"component---docs-server-side-apply-md":()=>n.e(26).then(n.bind(null,"BC+V")),"component---docs-targets-md":()=>n.e(27).then(n.bind(null,"txtL")),"component---docs-tutorial-abstraction-mdx":()=>n.e(28).then(n.bind(null,"pcXi")),"component---docs-tutorial-environments-mdx":()=>n.e(29).then(n.bind(null,"RnbX")),"component---docs-tutorial-jsonnet-mdx":()=>n.e(30).then(n.bind(null,"H1MS")),"component---docs-tutorial-k-lib-mdx":()=>n.e(31).then(n.bind(null,"3kBX")),"component---docs-tutorial-overview-mdx":()=>n.e(32).then(n.bind(null,"hwtK")),"component---docs-tutorial-parameterizing-mdx":()=>n.e(33).then(n.bind(null,"qTU8")),"component---docs-tutorial-refresher-mdx":()=>n.e(34).then(n.bind(null,"Xb6S")),"component---src-components-home-snippet-mdx":()=>Promise.resolve().then(n.bind(null,"PT20")),"component---src-components-install-jb-arch-mdx":()=>Promise.resolve().then(n.bind(null,"N+J+")),"component---src-components-install-jb-binary-mdx":()=>Promise.resolve().then(n.bind(null,"Tp2l")),"component---src-components-install-jb-go-mdx":()=>Promise.resolve().then(n.bind(null,"5mMq")),"component---src-components-install-jb-osx-mdx":()=>Promise.resolve().then(n.bind(null,"of3k")),"component---src-components-install-tk-arch-mdx":()=>Promise.resolve().then(n.bind(null,"z8l3")),"component---src-components-install-tk-binary-mdx":()=>Promise.resolve().then(n.bind(null,"XiyU")),"component---src-components-install-tk-go-mdx":()=>Promise.resolve().then(n.bind(null,"HIQX")),"component---src-components-install-tk-osx-mdx":()=>Promise.resolve().then(n.bind(null,"sUPn"))}},NykK:function(e,a,n){var t=n("nmnc"),d=n("AP2z"),r=n("KfNM"),o=t?t.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":o&&o in Object(e)?d(e):r(e)}},O0oS:function(e,a,n){var t=n("Cwc5"),d=function(){try{var e=t(Object,"defineProperty");return e({},"",{}),e}catch(a){}}();e.exports=d},O741:function(e,a,n){var t=n("Fib7"),d=String,r=TypeError;e.exports=function(e){if("object"==typeof e||t(e))return e;throw r("Can't set "+d(e)+" as a prototype")}},O7RO:function(e,a,n){var t=n("CMye"),d=n("7GkX");e.exports=function(e){for(var a=d(e),n=a.length;n--;){var r=a[n],o=e[r];a[n]=[r,o,t(o)]}return a}},OBhP:function(e,a,n){var t=n("fmRc"),d=n("gFfm"),r=n("MrPd"),o=n("WwFo"),i=n("Dw+G"),s=n("5Tg0"),g=n("Q1l4"),c=n("VOtZ"),u=n("EEGq"),l=n("qZTm"),R=n("G6z8"),p=n("QqLw"),f=n("yHx3"),h=n("wrZu"),m=n("+iFO"),b=n("Z0cm"),y=n("DSRE"),v=n("zEVN"),j=n("GoyQ"),O=n("1+5i"),_=n("7GkX"),x=n("mTTR"),w={};w["[object Arguments]"]=w["[object Array]"]=w["[object ArrayBuffer]"]=w["[object DataView]"]=w["[object Boolean]"]=w["[object Date]"]=w["[object Float32Array]"]=w["[object Float64Array]"]=w["[object Int8Array]"]=w["[object Int16Array]"]=w["[object Int32Array]"]=w["[object Map]"]=w["[object Number]"]=w["[object Object]"]=w["[object RegExp]"]=w["[object Set]"]=w["[object String]"]=w["[object Symbol]"]=w["[object Uint8Array]"]=w["[object Uint8ClampedArray]"]=w["[object Uint16Array]"]=w["[object Uint32Array]"]=!0,w["[object Error]"]=w["[object Function]"]=w["[object WeakMap]"]=!1,e.exports=function e(a,n,E,k,S,D){var A,C=1&n,P=2&n,F=4&n;if(E&&(A=S?E(a,k,S,D):E(a)),void 0!==A)return A;if(!j(a))return a;var T=b(a);if(T){if(A=f(a),!C)return g(a,A)}else{var L=p(a),B="[object Function]"==L||"[object GeneratorFunction]"==L;if(y(a))return s(a,C);if("[object Object]"==L||"[object Arguments]"==L||B&&!S){if(A=P||B?{}:m(a),!C)return P?u(a,i(A,a)):c(a,o(A,a))}else{if(!w[L])return S?a:{};A=h(a,L,C)}}D||(D=new t);var N=D.get(a);if(N)return N;D.set(a,A),O(a)?a.forEach((function(t){A.add(e(t,n,E,t,a,D))})):v(a)&&a.forEach((function(t,d){A.set(d,e(t,n,E,d,a,D))}));var I=T?void 0:(F?P?R:l:P?x:_)(a);return d(I||a,(function(t,d){I&&(t=a[d=t]),r(A,d,e(t,n,E,d,a,D))})),A}},OMsT:function(e,a,n){const t=n("dVj6")(94,96,168,175,180,184,749,885,2184,8125,43867,65342,65344,65507);t.addRange(706,709).addRange(722,735).addRange(741,747).addRange(751,767).addRange(900,901).addRange(8127,8129).addRange(8141,8143).addRange(8157,8159).addRange(8173,8175).addRange(8189,8190).addRange(12443,12444).addRange(42752,42774).addRange(42784,42785).addRange(42889,42890).addRange(43882,43883).addRange(64434,64450).addRange(127995,127999),e.exports=t},OQG6:function(e,a,n){const t=n("dVj6")();t.addRange(3585,3642).addRange(3648,3675),e.exports=t},OQyL:function(e,a,n){const t=n("dVj6")(45,1418,1470,5120,6150,11799,11802,11840,11869,12316,12336,12448,65112,65123,65293,69293);t.addRange(8208,8213).addRange(11834,11835).addRange(65073,65074),e.exports=t},OTnk:function(e,a,n){const t=n("dVj6")();t.addRange(66560,66639),e.exports=t},OZnc:function(e,a,n){const t=n("dVj6")();t.addRange(5120,5759).addRange(6320,6389).addRange(72368,72383),e.exports=t},ObV2:function(e,a,n){const t=n("dVj6")(7401,7410,7418);t.addRange(2404,2405).addRange(3302,3311).addRange(43056,43061).addRange(72096,72103).addRange(72106,72151).addRange(72154,72164),e.exports=t},"Of+w":function(e,a,n){var t=n("Cwc5")(n("Kz5y"),"WeakMap");e.exports=t},Ohg8:function(e,a,n){const t=n("dVj6")(173,1564,1757,1807,2274,6158,65279,69821,69837,917505);t.addRange(1536,1541).addRange(2192,2193).addRange(8203,8207).addRange(8234,8238).addRange(8288,8292).addRange(8294,8303).addRange(65529,65531).addRange(78896,78904).addRange(113824,113827).addRange(119155,119162).addRange(917536,917631),e.exports=t},OpvP:function(e,a,n){var t=n("4zBA");e.exports=t({}.isPrototypeOf)},P0BJ:function(e,a,n){const t=n("dVj6")();t.addRange(5920,5940),e.exports=t},PE4B:function(e,a,n){"use strict";var t=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var a=Object.prototype.toString.call(e);return"[object RegExp]"===a||"[object Date]"===a||function(e){return e.$$typeof===d}(e)}(e)};var d="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function r(e,a){return!1!==a.clone&&a.isMergeableObject(e)?c((n=e,Array.isArray(n)?[]:{}),e,a):e;var n}function o(e,a,n){return e.concat(a).map((function(e){return r(e,n)}))}function i(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter((function(a){return Object.propertyIsEnumerable.call(e,a)})):[]}(e))}function s(e,a){try{return a in e}catch(n){return!1}}function g(e,a,n){var t={};return n.isMergeableObject(e)&&i(e).forEach((function(a){t[a]=r(e[a],n)})),i(a).forEach((function(d){(function(e,a){return s(e,a)&&!(Object.hasOwnProperty.call(e,a)&&Object.propertyIsEnumerable.call(e,a))})(e,d)||(s(e,d)&&n.isMergeableObject(a[d])?t[d]=function(e,a){if(!a.customMerge)return c;var n=a.customMerge(e);return"function"==typeof n?n:c}(d,n)(e[d],a[d],n):t[d]=r(a[d],n))})),t}function c(e,a,n){(n=n||{}).arrayMerge=n.arrayMerge||o,n.isMergeableObject=n.isMergeableObject||t,n.cloneUnlessOtherwiseSpecified=r;var d=Array.isArray(a);return d===Array.isArray(e)?d?n.arrayMerge(e,a,n):g(e,a,n):r(a,n)}c.all=function(e,a){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce((function(e,n){return c(e,n,a)}),{})};var u=c;e.exports=u},PF2M:function(e,a,n){"use strict";var t=n("2oRo"),d=n("xluM"),r=n("67WC"),o=n("B/qT"),i=n("GC2F"),s=n("ewvW"),g=n("0Dky"),c=t.RangeError,u=t.Int8Array,l=u&&u.prototype,R=l&&l.set,p=r.aTypedArray,f=r.exportTypedArrayMethod,h=!g((function(){var e=new Uint8ClampedArray(2);return d(R,e,{length:1,0:3},1),3!==e[1]})),m=h&&r.NATIVE_ARRAY_BUFFER_VIEWS&&g((function(){var e=new u(2);return e.set(1),e.set("2",1),0!==e[0]||2!==e[1]}));f("set",(function(e){p(this);var a=i(arguments.length>1?arguments[1]:void 0,1),n=s(e);if(h)return d(R,this,n,a);var t=this.length,r=o(n),g=0;if(r+a>t)throw c("Wrong length");for(;g1),a})),i(e,c(e),n),g&&(n=d(n,7,s));for(var u=a.length;u--;)r(n,a[u]);return n}));e.exports=u},Q1l4:function(e,a){e.exports=function(e,a){var n=-1,t=e.length;for(a||(a=Array(t));++nc;)if((i=s[c++])!=i)return!0}else for(;g>c;c++)if((e||c in s)&&s[c]===n)return e||c||0;return!e&&-1}};e.exports={includes:o(!0),indexOf:o(!1)}},TYy9:function(e,a,n){var t=n("XGnz");e.exports=function(e){return(null==e?0:e.length)?t(e,1):[]}},Ta7t:function(e,a,n){var t=n("I8vh"),d=n("B/qT"),r=n("hBjN"),o=Array,i=Math.max;e.exports=function(e,a,n){for(var s=d(e),g=t(a,s),c=t(void 0===n?s:n,s),u=o(i(c-g,0)),l=0;g0?d(t(e),9007199254740991):0}},"UNi/":function(e,a){e.exports=function(e,a){for(var n=-1,t=Array(e);++n{e.ignoreCase?_.set(e.fromPath,e):O.set(e.fromPath,e)});const w=(e,a)=>{x(e.pathname)||Object(r.apiRunner)("onPreRouteUpdate",{location:e,prevLocation:a})},E=(e,a)=>{x(e.pathname)||Object(r.apiRunner)("onRouteUpdate",{location:e,prevLocation:a})},k=function(e,a){if(void 0===a&&(a={}),"number"==typeof e)return void y.c.navigate(e);let{pathname:n}=Object(v.parsePath)(e),t=O.get(n);if(t||(t=_.get(n.toLowerCase())),t&&(e=t.toPath,n=Object(v.parsePath)(e).pathname),window.___swUpdated)return void(window.location=n);const d=setTimeout(()=>{m.a.emit("onDelayedLoadPageResources",{pathname:n}),Object(r.apiRunner)("onRouteUpdateDelayed",{location:window.location})},1e3);f.default.loadPage(n).then(t=>{if(!t||t.status===f.PageResourceStatus.Error)return window.history.replaceState({},"",location.href),window.location=n,void clearTimeout(d);t&&t.page.webpackCompilationHash!==window.___webpackCompilationHash&&("serviceWorker"in navigator&&null!==navigator.serviceWorker.controller&&"activated"===navigator.serviceWorker.controller.state&&navigator.serviceWorker.controller.postMessage({gatsbyApi:"clearPathResources"}),window.location=n),Object(c.navigate)(e,a),clearTimeout(d)})};function S(e,a){let{location:n}=a;const{pathname:t,hash:d}=n,o=Object(r.apiRunner)("shouldUpdateScroll",{prevRouterProps:e,pathname:t,routerProps:{location:n},getSavedScrollPosition:e=>[0,this._stateStorage.read(e,e.key)]});if(o.length>0)return o[o.length-1];if(e){const{location:{pathname:a}}=e;if(a===t)return d?decodeURI(d.slice(1)):[0,0]}return!0}let D=function(e){function a(a){var n;return(n=e.call(this,a)||this).announcementRef=i.a.createRef(),n}Object(d.a)(a,e);var n=a.prototype;return n.componentDidUpdate=function(e,a){requestAnimationFrame(()=>{let e="new page at "+this.props.location.pathname;document.title&&(e=document.title);const a=document.querySelectorAll("#gatsby-focus-wrapper h1");a&&a.length&&(e=a[0].textContent);const n="Navigated to "+e;if(this.announcementRef.current){this.announcementRef.current.innerText!==n&&(this.announcementRef.current.innerText=n)}})},n.render=function(){return Object(j.d)("div",Object(t.a)({},b,{ref:this.announcementRef}))},a}(i.a.Component);const A=(e,a)=>{var n,t;return e.href!==a.href||(null==e||null===(n=e.state)||void 0===n?void 0:n.key)!==(null==a||null===(t=a.state)||void 0===t?void 0:t.key)};let C=function(e){function a(a){var n;return n=e.call(this,a)||this,w(a.location,null),n}Object(d.a)(a,e);var n=a.prototype;return n.componentDidMount=function(){E(this.props.location,null)},n.shouldComponentUpdate=function(e){return!!A(e.location,this.props.location)&&(w(this.props.location,e.location),!0)},n.componentDidUpdate=function(e){A(e.location,this.props.location)&&E(this.props.location,e.location)},n.render=function(){return Object(j.d)(i.a.Fragment,null,this.props.children,Object(j.d)(D,{location:location}))},a}(i.a.Component);var P=n("IOVJ"),F=n("NsGk"),T=n.n(F),L=n("rePB");function B(e,a){for(var n in e)if(!(n in a))return!0;for(var t in a)if(e[t]!==a[t])return!0;return!1}function N(e,a){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);a&&(t=t.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),n.push.apply(n,t)}return n}function I(e){for(var a=1;a{a&&a.status!==f.PageResourceStatus.Error?this.setState({location:I({},window.location),pageResources:a}):(window.history.replaceState({},"",location.href),window.location=e)})},n.shouldComponentUpdate=function(e,a){return a.pageResources?this.state.pageResources!==a.pageResources||(this.state.pageResources.component!==a.pageResources.component||(this.state.pageResources.json!==a.pageResources.json||(!(this.state.location.key===a.location.key||!a.pageResources.page||!a.pageResources.page.matchPath&&!a.pageResources.page.path)||function(e,a,n){return B(e.props,a)||B(e.state,n)}(this,e,a)))):(this.loadResources(e.location.pathname),!1)},n.render=function(){return this.props.children(this.state)},a}(i.a.Component),z=n("cSJ8"),q=n("JeVI");const V=new f.ProdLoader(T.a,q);Object(f.setLoader)(V),V.setApiRunner(r.apiRunner),window.asyncRequires=T.a,window.___emitter=m.a,window.___loader=f.publicLoader,y.c.listen(e=>{e.location.action=e.action}),window.___push=e=>k(e,{replace:!1}),window.___replace=e=>k(e,{replace:!0}),window.___navigate=(e,a)=>k(e,a),x(window.location.pathname),Object(r.apiRunnerAsync)("onClientEntry").then(()=>{Object(r.apiRunner)("registerServiceWorker").length>0&&n("NSX3");const e=e=>Object(j.d)(c.BaseContext.Provider,{value:{baseuri:"/",basepath:"/"}},Object(j.d)(P.a,e)),a=i.a.createContext({});let o=function(e){function n(){return e.apply(this,arguments)||this}return Object(d.a)(n,e),n.prototype.render=function(){const{children:e}=this.props;return Object(j.d)(c.Location,null,n=>{let{location:t}=n;return Object(j.d)(M,{location:t},n=>{let{pageResources:t,location:d}=n;const r=Object(f.getStaticQueryResults)();return Object(j.d)(p.StaticQueryContext.Provider,{value:r},Object(j.d)(a.Provider,{value:{pageResources:t,location:d}},e))})})},n}(i.a.Component),s=function(n){function r(){return n.apply(this,arguments)||this}return Object(d.a)(r,n),r.prototype.render=function(){return Object(j.d)(a.Consumer,null,a=>{let{pageResources:n,location:d}=a;return Object(j.d)(C,{location:d},Object(j.d)(u.ScrollContext,{location:d,shouldUpdateScroll:S},Object(j.d)(c.Router,{basepath:"/pr-preview/pr-1029",location:d,id:"gatsby-focus-wrapper"},Object(j.d)(e,Object(t.a)({path:"/404.html"===n.page.path?Object(z.a)(d.pathname,"/pr-preview/pr-1029"):encodeURI(n.page.matchPath||n.page.path)},this.props,{location:d,pageResources:n},n.json)))))})},r}(i.a.Component);const{pagePath:l,location:h}=window;l&&"/pr-preview/pr-1029"+l!==h.pathname&&!(V.findMatchPath(Object(z.a)(h.pathname,"/pr-preview/pr-1029"))||"/404.html"===l||l.match(/^\/404\/?$/)||l.match(/^\/offline-plugin-app-shell-fallback\/?$/))&&Object(c.navigate)("/pr-preview/pr-1029"+l+h.search+h.hash,{replace:!0}),f.publicLoader.loadPage(h.pathname).then(e=>{if(!e||e.status===f.PageResourceStatus.Error)throw new Error("page resources for "+h.pathname+" not found. Not rendering React");window.___webpackCompilationHash=e.page.webpackCompilationHash;const a=Object(r.apiRunner)("wrapRootElement",{element:Object(j.d)(s,null)},Object(j.d)(s,null),e=>{let{result:a}=e;return{element:a}}).pop(),n=()=>Object(j.d)(o,null,a),t=Object(r.apiRunner)("replaceHydrateFunction",void 0,g.a.hydrate)[0];R()(()=>{t(Object(j.d)(n,null),"undefined"!=typeof window?document.getElementById("___gatsby"):void 0,()=>{Object(r.apiRunner)("onInitialClientRender")})})})})},Uyem:function(e,a,n){const t=n("dVj6")();t.addRange(67712,67742).addRange(67751,67759),e.exports=t},"V+/M":function(e,a,n){const t=n("dVj6")(110592);t.addRange(12449,12538).addRange(12541,12543).addRange(12784,12799).addRange(13008,13054).addRange(13056,13143).addRange(65382,65391).addRange(65393,65437).addRange(110576,110579).addRange(110581,110587).addRange(110589,110590).addRange(110880,110882).addRange(110948,110951),e.exports=t},V3uO:function(e,a,n){const t=n("dVj6")(1471,1479,1648,1809,2045,2362,2364,2381,2433,2492,2494,2509,2519,2558,2620,2641,2677,2748,2765,2817,2876,2893,2946,3006,3008,3021,3031,3072,3076,3132,3201,3260,3263,3266,3270,3390,3405,3415,3457,3530,3535,3542,3551,3633,3761,3893,3895,3897,4038,4226,4237,4253,6086,6109,6159,6313,6450,6683,6742,6752,6754,6783,6972,6978,7142,7149,7405,7412,8204,11647,43010,43014,43019,43052,43263,43443,43493,43587,43596,43644,43696,43713,43766,44005,44008,44013,64286,66045,66272,68159,69633,69744,69826,70003,70095,70196,70206,70367,70462,70464,70487,70726,70750,70832,70842,70845,71087,71229,71339,71341,71351,71984,71998,72003,72160,72263,72767,73018,73031,73109,73111,94031,94180,119141,121461,121476,123566);t.addRange(768,879).addRange(1155,1161).addRange(1425,1469).addRange(1473,1474).addRange(1476,1477).addRange(1552,1562).addRange(1611,1631).addRange(1750,1756).addRange(1759,1764).addRange(1767,1768).addRange(1770,1773).addRange(1840,1866).addRange(1958,1968).addRange(2027,2035).addRange(2070,2073).addRange(2075,2083).addRange(2085,2087).addRange(2089,2093).addRange(2137,2139).addRange(2200,2207).addRange(2250,2273).addRange(2275,2306).addRange(2369,2376).addRange(2385,2391).addRange(2402,2403).addRange(2497,2500).addRange(2530,2531).addRange(2561,2562).addRange(2625,2626).addRange(2631,2632).addRange(2635,2637).addRange(2672,2673).addRange(2689,2690).addRange(2753,2757).addRange(2759,2760).addRange(2786,2787).addRange(2810,2815).addRange(2878,2879).addRange(2881,2884).addRange(2901,2903).addRange(2914,2915).addRange(3134,3136).addRange(3142,3144).addRange(3146,3149).addRange(3157,3158).addRange(3170,3171).addRange(3276,3277).addRange(3285,3286).addRange(3298,3299).addRange(3328,3329).addRange(3387,3388),t.addRange(3393,3396).addRange(3426,3427).addRange(3538,3540).addRange(3636,3642).addRange(3655,3662).addRange(3764,3772).addRange(3784,3789).addRange(3864,3865).addRange(3953,3966).addRange(3968,3972).addRange(3974,3975).addRange(3981,3991).addRange(3993,4028).addRange(4141,4144).addRange(4146,4151).addRange(4153,4154).addRange(4157,4158).addRange(4184,4185).addRange(4190,4192).addRange(4209,4212).addRange(4229,4230).addRange(4957,4959).addRange(5906,5908).addRange(5938,5939).addRange(5970,5971).addRange(6002,6003).addRange(6068,6069).addRange(6071,6077).addRange(6089,6099).addRange(6155,6157).addRange(6277,6278).addRange(6432,6434).addRange(6439,6440).addRange(6457,6459).addRange(6679,6680).addRange(6744,6750).addRange(6757,6764).addRange(6771,6780).addRange(6832,6862).addRange(6912,6915).addRange(6964,6970).addRange(7019,7027).addRange(7040,7041).addRange(7074,7077).addRange(7080,7081).addRange(7083,7085).addRange(7144,7145).addRange(7151,7153).addRange(7212,7219).addRange(7222,7223).addRange(7376,7378),t.addRange(7380,7392).addRange(7394,7400).addRange(7416,7417).addRange(7616,7679).addRange(8400,8432).addRange(11503,11505).addRange(11744,11775).addRange(12330,12335).addRange(12441,12442).addRange(42607,42610).addRange(42612,42621).addRange(42654,42655).addRange(42736,42737).addRange(43045,43046).addRange(43204,43205).addRange(43232,43249).addRange(43302,43309).addRange(43335,43345).addRange(43392,43394).addRange(43446,43449).addRange(43452,43453).addRange(43561,43566).addRange(43569,43570).addRange(43573,43574).addRange(43698,43700).addRange(43703,43704).addRange(43710,43711).addRange(43756,43757).addRange(65024,65039).addRange(65056,65071).addRange(65438,65439).addRange(66422,66426).addRange(68097,68099).addRange(68101,68102).addRange(68108,68111).addRange(68152,68154).addRange(68325,68326).addRange(68900,68903).addRange(69291,69292).addRange(69446,69456).addRange(69506,69509).addRange(69688,69702).addRange(69747,69748).addRange(69759,69761).addRange(69811,69814).addRange(69817,69818).addRange(69888,69890).addRange(69927,69931).addRange(69933,69940).addRange(70016,70017).addRange(70070,70078),t.addRange(70089,70092).addRange(70191,70193).addRange(70198,70199).addRange(70371,70378).addRange(70400,70401).addRange(70459,70460).addRange(70502,70508).addRange(70512,70516).addRange(70712,70719).addRange(70722,70724).addRange(70835,70840).addRange(70847,70848).addRange(70850,70851).addRange(71090,71093).addRange(71100,71101).addRange(71103,71104).addRange(71132,71133).addRange(71219,71226).addRange(71231,71232).addRange(71344,71349).addRange(71453,71455).addRange(71458,71461).addRange(71463,71467).addRange(71727,71735).addRange(71737,71738).addRange(71995,71996).addRange(72148,72151).addRange(72154,72155).addRange(72193,72202).addRange(72243,72248).addRange(72251,72254).addRange(72273,72278).addRange(72281,72283).addRange(72330,72342).addRange(72344,72345).addRange(72752,72758).addRange(72760,72765).addRange(72850,72871).addRange(72874,72880).addRange(72882,72883).addRange(72885,72886).addRange(73009,73014).addRange(73020,73021).addRange(73023,73029).addRange(73104,73105).addRange(73459,73460).addRange(92912,92916).addRange(92976,92982).addRange(94095,94098).addRange(113821,113822).addRange(118528,118573),t.addRange(118576,118598).addRange(119143,119145).addRange(119150,119154).addRange(119163,119170).addRange(119173,119179).addRange(119210,119213).addRange(119362,119364).addRange(121344,121398).addRange(121403,121452).addRange(121499,121503).addRange(121505,121519).addRange(122880,122886).addRange(122888,122904).addRange(122907,122913).addRange(122915,122916).addRange(122918,122922).addRange(123184,123190).addRange(123628,123631).addRange(125136,125142).addRange(125252,125258).addRange(917536,917631).addRange(917760,917999),e.exports=t},V6Ve:function(e,a,n){var t=n("kekF")(Object.keys,Object);e.exports=t},V6iA:function(e,a,n){const t=n("dVj6")();t.addRange(11904,11929).addRange(11931,12019).addRange(12032,12245),e.exports=t},V8Tt:function(e,a,n){const t=n("dVj6")();t.addRange(66208,66256),e.exports=t},V9aw:function(e,a){e.exports=function(e){return e.placeholder}},VArt:function(e,a,n){const t=n("dVj6")();t.addRange(92784,92862).addRange(92864,92873),e.exports=t},"VHj/":function(e,a,n){const t=n("dVj6")();t.addRange(66304,66339).addRange(66349,66351),e.exports=t},VOtZ:function(e,a,n){var t=n("juv8"),d=n("MvSz");e.exports=function(e,a){return t(e,d(e),a)}},VaNO:function(e,a){e.exports=function(e){return this.__data__.has(e)}},VbXa:function(e,a,n){var t=n("SksO");e.exports=function(e,a){e.prototype=Object.create(a.prototype),e.prototype.constructor=e,t(e,a)},e.exports.__esModule=!0,e.exports.default=e.exports},VdHZ:function(e,a,n){const t=n("dVj6")(94180);t.addRange(12294,12295).addRange(12321,12329).addRange(12344,12346).addRange(13312,19903).addRange(19968,40959).addRange(63744,64109).addRange(64112,64217).addRange(94208,100343).addRange(100352,101589).addRange(101632,101640).addRange(110960,111355).addRange(131072,173791).addRange(173824,177976).addRange(177984,178205).addRange(178208,183969).addRange(183984,191456).addRange(194560,195101).addRange(196608,201546),e.exports=t},VpIT:function(e,a,n){var t=n("xDBR"),d=n("xs3f");(e.exports=function(e,a){return d[e]||(d[e]=void 0!==a?a:{})})("versions",[]).push({version:"3.30.2",mode:t?"pure":"global",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.30.2/LICENSE",source:"https://github.com/zloirock/core-js"})},VqP8:function(e,a,n){const t=n("dVj6")(12336,12539,13055);t.addRange(11904,11929).addRange(11931,12019).addRange(12032,12245).addRange(12289,12291).addRange(12293,12305).addRange(12307,12319).addRange(12321,12333).addRange(12343,12351).addRange(12688,12703).addRange(12736,12771).addRange(12832,12871).addRange(12928,12976).addRange(12992,13003).addRange(13144,13168).addRange(13179,13183).addRange(13280,13310).addRange(13312,19903).addRange(19968,40959).addRange(42752,42759).addRange(63744,64109).addRange(64112,64217).addRange(65093,65094).addRange(65377,65381).addRange(94178,94179).addRange(94192,94193).addRange(119648,119665).addRange(127568,127569).addRange(131072,173791).addRange(173824,177976).addRange(177984,178205).addRange(178208,183969).addRange(183984,191456).addRange(194560,195101).addRange(196608,201546),e.exports=t},Vu81:function(e,a,n){var t=n("0GbY"),d=n("4zBA"),r=n("JBy8"),o=n("dBg+"),i=n("glrk"),s=d([].concat);e.exports=t("Reflect","ownKeys")||function(e){var a=r.f(i(e)),n=o.f;return n?s(a,n(e)):a}},WAkd:function(e,a,n){const t=n("dVj6")();t.addRange(67968,67999),e.exports=t},WFqU:function(e,a,n){(function(a){var n="object"==typeof a&&a&&a.Object===Object&&a;e.exports=n}).call(this,n("yLpj"))},WGqn:function(e,a,n){const t=n("dVj6")(8239);t.addRange(6144,6169).addRange(6176,6264).addRange(6272,6314).addRange(71264,71276),e.exports=t},WPcv:function(e,a,n){const t=n("dVj6")();t.addRange(65536,65547).addRange(65549,65574).addRange(65576,65594).addRange(65596,65597).addRange(65599,65613).addRange(65616,65629).addRange(65664,65786),e.exports=t},WR1s:function(e,a,n){const t=n("dVj6")(66927);t.addRange(66864,66915),e.exports=t},WSbT:function(e,a,n){var t=n("tC4l");e.exports=function(e){var a=+e;return a!=a||0===a?0:t(a)}},WWur:function(e,a,n){"use strict";const t=function(e){let{target:a=document.body}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=document.createElement("textarea"),t=document.activeElement;n.value=e,n.setAttribute("readonly",""),n.style.contain="strict",n.style.position="absolute",n.style.left="-9999px",n.style.fontSize="12pt";const d=document.getSelection();let r=!1;d.rangeCount>0&&(r=d.getRangeAt(0)),a.append(n),n.select(),n.selectionStart=0,n.selectionEnd=e.length;let o=!1;try{o=document.execCommand("copy")}catch(i){}return n.remove(),r&&(d.removeAllRanges(),d.addRange(r)),t&&t.focus(),o};e.exports=t,e.exports.default=t},Wbzz:function(e,a,n){"use strict";n.r(a),n.d(a,"graphql",(function(){return m})),n.d(a,"StaticQueryContext",(function(){return R})),n.d(a,"StaticQuery",(function(){return f})),n.d(a,"useStaticQuery",(function(){return h})),n.d(a,"prefetchPathname",(function(){return l}));var t=n("q1tI"),d=n.n(t),r=n("+ZDr"),o=n.n(r);n.d(a,"Link",(function(){return o.a})),n.d(a,"withAssetPrefix",(function(){return r.withAssetPrefix})),n.d(a,"withPrefix",(function(){return r.withPrefix})),n.d(a,"parsePath",(function(){return r.parsePath})),n.d(a,"navigate",(function(){return r.navigate})),n.d(a,"push",(function(){return r.push})),n.d(a,"replace",(function(){return r.replace})),n.d(a,"navigateTo",(function(){return r.navigateTo}));var i=n("7hJ6");n.d(a,"useScrollRestoration",(function(){return i.useScrollRestoration}));var s=n("lw3w"),g=n.n(s);n.d(a,"PageRenderer",(function(){return g.a}));var c=n("emEt"),u=n("qKvR");const l=c.default.enqueue,R=d.a.createContext({});function p(e){let{staticQueryData:a,data:n,query:t,render:r}=e;const o=n?n.data:a[t]&&a[t].data;return Object(u.d)(d.a.Fragment,null,o&&r(o),!o&&Object(u.d)("div",null,"Loading (StaticQuery)"))}const f=e=>{const{data:a,query:n,render:t,children:d}=e;return Object(u.d)(R.Consumer,null,e=>Object(u.d)(p,{data:a,query:n,render:t||d,staticQueryData:e}))},h=e=>{var a;d.a.useContext;const n=d.a.useContext(R);if(isNaN(Number(e)))throw new Error("useStaticQuery was called with a string but expects to be called using `graphql`. Try this:\n\nimport { useStaticQuery, graphql } from 'gatsby';\n\nuseStaticQuery(graphql`"+e+"`);\n");if(null!==(a=n[e])&&void 0!==a&&a.data)return n[e].data;throw new Error("The result of this StaticQuery could not be fetched.\n\nThis is likely a bug in Gatsby and if refreshing the page does not fix it, please open an issue in https://github.com/gatsbyjs/gatsby/issues")};function m(){throw new Error("It appears like Gatsby is misconfigured. Gatsby related `graphql` calls are supposed to only be evaluated at compile time, and then compiled away. Unfortunately, something went wrong and the query was left in the compiled code.\n\nUnless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.")}},We1y:function(e,a,n){var t=n("Fib7"),d=n("DVFp"),r=TypeError;e.exports=function(e){if(t(e))return e;throw r(d(e)+" is not a function")}},WfgX:function(e,a,n){const t=n("dVj6")(70280);t.addRange(2662,2671).addRange(70272,70278).addRange(70282,70285).addRange(70287,70301).addRange(70303,70313),e.exports=t},Wp8k:function(e,a,n){const t=n("dVj6")();t.addRange(66640,66687),e.exports=t},"Wry+":function(e,a,n){const t=n("dVj6")();t.addRange(125184,125259).addRange(125264,125273).addRange(125278,125279),e.exports=t},WwFo:function(e,a,n){var t=n("juv8"),d=n("7GkX");e.exports=function(e,a){return e&&t(a,d(a),e)}},X29h:function(e,a,n){const t=n("dVj6")();t.addRange(2404,2405).addRange(2534,2543).addRange(43008,43052),e.exports=t},X2h1:function(e,a,n){const t=n("dVj6")(94176);t.addRange(94208,100343).addRange(100352,101119).addRange(101632,101640),e.exports=t},XDiy:function(e,a,n){},XGnz:function(e,a,n){var t=n("CH3K"),d=n("BiGR");e.exports=function e(a,n,r,o,i){var s=-1,g=a.length;for(r||(r=d),i||(i=[]);++s0&&r(c)?n>1?e(c,n-1,r,o,i):t(i,c):o||(i[i.length]=c)}return i}},XGwC:function(e,a){e.exports=function(e,a){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:a}}},XHv3:function(e,a,n){"use strict";n.d(a,"c",(function(){return R})),n.d(a,"a",(function(){return p})),n.d(a,"b",(function(){return b}));var t=n("qKvR"),d=n("q1tI"),r=n("sUPn"),o=n("z8l3"),i=n("HIQX"),s=n("XiyU"),g=n("of3k"),c=n("N+J+"),u=n("5mMq"),l=n("Tp2l");const R={macOS:Object(t.d)(r.default,null),ArchLinux:Object(t.d)(o.default,null),Binary:Object(t.d)(s.default,null),Go:Object(t.d)(i.default,null)};void 0!==R&&R&&R===Object(R)&&Object.isExtensible(R)&&!Object.prototype.hasOwnProperty.call(R,"__filemeta")&&Object.defineProperty(R,"__filemeta",{configurable:!0,value:{name:"Tanka",filename:"src/components/install/index.js"}}),void 0!==R&&R&&R===Object(R)&&Object.isExtensible(R)&&!Object.prototype.hasOwnProperty.call(R,"__filemeta")&&Object.defineProperty(R,"__filemeta",{configurable:!0,value:{name:"Tanka",filename:"src/components/install/index.js"}});const p={macOS:Object(t.d)(g.default,null),ArchLinux:Object(t.d)(c.default,null),Binary:Object(t.d)(l.default,null),Go:Object(t.d)(u.default,null)};void 0!==p&&p&&p===Object(p)&&Object.isExtensible(p)&&!Object.prototype.hasOwnProperty.call(p,"__filemeta")&&Object.defineProperty(p,"__filemeta",{configurable:!0,value:{name:"Jb",filename:"src/components/install/index.js"}}),void 0!==p&&p&&p===Object(p)&&Object.isExtensible(p)&&!Object.prototype.hasOwnProperty.call(p,"__filemeta")&&Object.defineProperty(p,"__filemeta",{configurable:!0,value:{name:"Jb",filename:"src/components/install/index.js"}});var f={name:"j7qwjs",styles:"display:flex;flex-direction:column;"},h={name:"1uj31nx",styles:"display:flex;margin-bottom:1em;margin-left:-.5em;flex-wrap:wrap;"},m={name:"441d6o",styles:"margin-top:-1em;border:1px solid #CED4DE;border-radius:3px;padding:.8em;"};const b=e=>{let{elems:a,def:n}=e;const{0:r,1:o}=Object(d.useState)(n);return Object(t.d)("div",{css:f},Object(t.d)("div",{css:h},Object.keys(a).map(e=>Object(t.d)("button",{key:e,css:Object(t.c)({background:"none",color:"inherit",fontSize:"1em",fontFamily:"inherit",padding:".4em .8em .4em .8em",marginLeft:".5em",marginBottom:".5em",border:"1px solid "+(e===r?"#0B5FFF":"#CED4DE"),borderRadius:"3px",outline:"none",":hover":{border:"1px solid #0B5FFF",cursor:"pointer"}},"",""),onClick:()=>{o(e)}},e))),Object(t.d)("div",{css:m},a[r]))};void 0!==b&&b&&b===Object(b)&&Object.isExtensible(b)&&!Object.prototype.hasOwnProperty.call(b,"__filemeta")&&Object.defineProperty(b,"__filemeta",{configurable:!0,value:{name:"PlatformInstall",filename:"src/components/install/index.js"}}),void 0!==b&&b&&b===Object(b)&&Object.isExtensible(b)&&!Object.prototype.hasOwnProperty.call(b,"__filemeta")&&Object.defineProperty(b,"__filemeta",{configurable:!0,value:{name:"PlatformInstall",filename:"src/components/install/index.js"}})},XYm9:function(e,a,n){var t=n("+K+b");e.exports=function(e,a){var n=a?t(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}},XcdB:function(e,a,n){const t=n("dVj6")();t.addRange(68224,68255),e.exports=t},XdyY:function(e,a,n){"use strict";n.r(a);n("w3mS")},XhaC:function(e,a){e.exports=new Set(["General_Category","Script","Script_Extensions","Alphabetic","Any","ASCII","ASCII_Hex_Digit","Assigned","Bidi_Control","Bidi_Mirrored","Case_Ignorable","Cased","Changes_When_Casefolded","Changes_When_Casemapped","Changes_When_Lowercased","Changes_When_NFKC_Casefolded","Changes_When_Titlecased","Changes_When_Uppercased","Dash","Default_Ignorable_Code_Point","Deprecated","Diacritic","Emoji","Emoji_Component","Emoji_Modifier","Emoji_Modifier_Base","Emoji_Presentation","Extended_Pictographic","Extender","Grapheme_Base","Grapheme_Extend","Hex_Digit","ID_Continue","ID_Start","Ideographic","IDS_Binary_Operator","IDS_Trinary_Operator","Join_Control","Logical_Order_Exception","Lowercase","Math","Noncharacter_Code_Point","Pattern_Syntax","Pattern_White_Space","Quotation_Mark","Radical","Regional_Indicator","Sentence_Terminal","Soft_Dotted","Terminal_Punctuation","Unified_Ideograph","Uppercase","Variation_Selector","White_Space","XID_Continue","XID_Start"])},Xhwf:function(e,a,n){(function(){var a,t;a=n("Z94/"),t={"minor second":16/15,"major second":9/8,"minor third":1.2,"major third":4/3,"augmented fourth":Math.sqrt(2),"perfect fifth":1.5,"minor sixth":1.6,golden:1.61803398875,phi:1.61803398875,"major sixth":5/3,"minor seventh":16/9,"major seventh":15/8,octave:2,"major tenth":2.5,"major eleventh":8/3,"major twelfth":3,"double octave":4},e.exports=function(e,n){var d;return null==e&&(e=0),null==n&&(n="golden"),d=a(n)?n:null!=t[n]?t[n]:t.golden,Math.pow(d,e)}}).call(this)},Xi7e:function(e,a,n){var t=n("KMkd"),d=n("adU4"),r=n("tMB7"),o=n("+6XX"),i=n("Z8oC");function s(e){var a=-1,n=null==e?0:e.length;for(this.clear();++ao;)for(var f,h=u(arguments[o++]),m=l?p(i(h),l(h)):i(h),b=m.length,y=0;b>y;)f=m[y++],t&&!r(R,h,f)||(n[f]=h[f]);return n}:l},YO3V:function(e,a,n){var t=n("NykK"),d=n("LcsW"),r=n("ExA7"),o=Function.prototype,i=Object.prototype,s=o.toString,g=i.hasOwnProperty,c=s.call(Object);e.exports=function(e){if(!r(e)||"[object Object]"!=t(e))return!1;var a=d(e);if(null===a)return!0;var n=g.call(a,"constructor")&&a.constructor;return"function"==typeof n&&n instanceof n&&s.call(n)==c}},YVoz:function(e,a,n){"use strict";e.exports=Object.assign},YXr4:function(e,a,n){const t=n("dVj6")(1548,1567,65010,65021);t.addRange(1563,1564).addRange(1632,1641).addRange(1920,1969),e.exports=t},Yoag:function(e,a,n){var t=n("dTAl"),d=n("RrRF");function r(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}r.prototype=t(d.prototype),r.prototype.constructor=r,e.exports=r},YuTi:function(e,a){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},YulU:function(e,a,n){const t=n("dVj6")();t.addRange(68352,68405).addRange(68409,68415),e.exports=t},YwZP:function(e,a,n){"use strict";n.r(a),n.d(a,"Link",(function(){return P})),n.d(a,"Location",(function(){return y})),n.d(a,"LocationProvider",(function(){return v})),n.d(a,"Match",(function(){return I})),n.d(a,"Redirect",(function(){return N})),n.d(a,"Router",(function(){return _})),n.d(a,"ServerLocation",(function(){return j})),n.d(a,"isRedirect",(function(){return T})),n.d(a,"redirectTo",(function(){return L})),n.d(a,"useLocation",(function(){return M})),n.d(a,"useNavigate",(function(){return z})),n.d(a,"useParams",(function(){return q})),n.d(a,"useMatch",(function(){return V})),n.d(a,"BaseContext",(function(){return O}));var t=n("q1tI"),d=n.n(t),r=n("QLaP"),o=n.n(r),i=n("nqlD"),s=n.n(i),g=n("94VI"),c=n("LYrO");n.d(a,"matchPath",(function(){return c.match}));var u=n("9Xx/");n.d(a,"createHistory",(function(){return u.a})),n.d(a,"createMemorySource",(function(){return u.b})),n.d(a,"navigate",(function(){return u.d})),n.d(a,"globalHistory",(function(){return u.c}));var l=Object.assign||function(e){for(var a=1;a=0||Object.prototype.hasOwnProperty.call(e,t)&&(n[t]=e[t]);return n}function p(e,a){if(!(e instanceof a))throw new TypeError("Cannot call a class as a function")}function f(e,a){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!a||"object"!=typeof a&&"function"!=typeof a?e:a}function h(e,a){if("function"!=typeof a&&null!==a)throw new TypeError("Super expression must either be null or a function, not "+typeof a);e.prototype=Object.create(a&&a.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),a&&(Object.setPrototypeOf?Object.setPrototypeOf(e,a):e.__proto__=a)}var m=function(e,a){var n=s()(a);return n.displayName=e,n},b=m("Location"),y=function(e){var a=e.children;return d.a.createElement(b.Consumer,null,(function(e){return e?a(e):d.a.createElement(v,null,a)}))},v=function(e){function a(){var n,t;p(this,a);for(var d=arguments.length,r=Array(d),o=0;o-1?(r=a.substring(0,t),o=a.substring(t)):r=a,d.a.createElement(b.Provider,{value:{location:{pathname:r,search:o,hash:""},navigate:function(){throw new Error("You can't call navigate on the server.")}}},n)},O=m("Base",{baseuri:"/",basepath:"/"}),_=function(e){return d.a.createElement(O.Consumer,null,(function(a){return d.a.createElement(y,null,(function(n){return d.a.createElement(x,l({},a,n,e))}))}))},x=function(e){function a(){return p(this,a),f(this,e.apply(this,arguments))}return h(a,e),a.prototype.render=function(){var e=this.props,a=e.location,n=e.navigate,t=e.basepath,r=e.primary,o=e.children,i=(e.baseuri,e.component),s=void 0===i?"div":i,g=R(e,["location","navigate","basepath","primary","children","baseuri","component"]),u=d.a.Children.toArray(o).reduce((function(e,a){var n=G(t)(a);return e.concat(n)}),[]),p=a.pathname,f=Object(c.pick)(u,p);if(f){var h=f.params,m=f.uri,b=f.route,y=f.route.value;t=b.default?t:b.path.replace(/\*$/,"");var v=l({},h,{uri:m,location:a,navigate:function(e,a){return n(Object(c.resolve)(e,m),a)}}),j=d.a.cloneElement(y,v,y.props.children?d.a.createElement(_,{location:a,primary:r},y.props.children):void 0),x=r?E:s,w=r?l({uri:m,location:a,component:s},g):g;return d.a.createElement(O.Provider,{value:{baseuri:m,basepath:t}},d.a.createElement(x,w,j))}return null},a}(d.a.PureComponent);x.defaultProps={primary:!0};var w=m("Focus"),E=function(e){var a=e.uri,n=e.location,t=e.component,r=R(e,["uri","location","component"]);return d.a.createElement(w.Consumer,null,(function(e){return d.a.createElement(D,l({},r,{component:t,requestFocus:e,uri:a,location:n}))}))},k=!0,S=0,D=function(e){function a(){var n,t;p(this,a);for(var d=arguments.length,r=Array(d),o=0;o{let{href:a,names:n,next:t,alone:r}=e;return Object(d.h)("a",{href:a,sx:{flexShrink:0,flexGrow:1,marginLeft:"7em",display:"flex",flexDirection:"column",textAlign:t&&!r?"right":"left",textDecoration:"none","&:visited":{color:"primary"}}},Object(d.h)("span",{sx:{color:"gray"}},t?"Next":"Previous"),Object(d.h)("span",{sx:{fontWeight:700}},n[a]))};a.a=e=>{let{prev:a,next:n}=e;const t=Object(i.g)().reduce((e,a)=>g(g({},e),{},{[a.route]:a.name}),{});return Object(d.h)(o.a.Fragment,null,Object(d.h)("hr",{sx:{marginTop:"4em"}}),Object(d.h)("div",{sx:{display:"flex",flexDirection:"row",marginLeft:"-7em",flexWrap:"wrap",justifyContent:"flex-start"}},a&&Object(d.h)(c,{alone:!n,names:t,href:a}),n&&Object(d.h)(c,{next:!0,alone:!a,names:t,href:n})))}},"Z/4g":function(e,a,n){const t=n("dVj6")();t.addRange(77712,77810),e.exports=t},Z0cm:function(e,a){var n=Array.isArray;e.exports=n},Z3Cz:function(e,a,n){const t=n("dVj6")(95,170,181,183,186,748,750,895,908,1369,1471,1479,1791,2042,2045,2482,2519,2556,2558,2620,2641,2654,2768,2929,2972,3024,3031,3165,3517,3530,3542,3716,3749,3782,3840,3893,3895,3897,4038,4295,4301,4696,4800,6103,6823,8025,8027,8029,8126,8276,8305,8319,8417,8450,8455,8469,8484,8486,8488,8526,11559,11565,11631,42963,43052,43259,64318,65343,66045,66272,67592,67644,68159,69415,69826,70006,70108,70206,70280,70480,70487,70855,71236,71945,72263,72349,73018,73648,119970,119995,120134,121461,121476,123214,126500,126503,126521,126523,126530,126535,126537,126539,126548,126551,126553,126555,126557,126559,126564,126590);t.addRange(48,57).addRange(65,90).addRange(97,122).addRange(192,214).addRange(216,246).addRange(248,705).addRange(710,721).addRange(736,740).addRange(768,884).addRange(886,887).addRange(890,893).addRange(902,906).addRange(910,929).addRange(931,1013).addRange(1015,1153).addRange(1155,1159).addRange(1162,1327).addRange(1329,1366).addRange(1376,1416).addRange(1425,1469).addRange(1473,1474).addRange(1476,1477).addRange(1488,1514).addRange(1519,1522).addRange(1552,1562).addRange(1568,1641).addRange(1646,1747).addRange(1749,1756).addRange(1759,1768).addRange(1770,1788).addRange(1808,1866).addRange(1869,1969).addRange(1984,2037).addRange(2048,2093).addRange(2112,2139).addRange(2144,2154).addRange(2160,2183).addRange(2185,2190).addRange(2200,2273).addRange(2275,2403).addRange(2406,2415).addRange(2417,2435).addRange(2437,2444).addRange(2447,2448).addRange(2451,2472).addRange(2474,2480).addRange(2486,2489).addRange(2492,2500).addRange(2503,2504).addRange(2507,2510).addRange(2524,2525),t.addRange(2527,2531).addRange(2534,2545).addRange(2561,2563).addRange(2565,2570).addRange(2575,2576).addRange(2579,2600).addRange(2602,2608).addRange(2610,2611).addRange(2613,2614).addRange(2616,2617).addRange(2622,2626).addRange(2631,2632).addRange(2635,2637).addRange(2649,2652).addRange(2662,2677).addRange(2689,2691).addRange(2693,2701).addRange(2703,2705).addRange(2707,2728).addRange(2730,2736).addRange(2738,2739).addRange(2741,2745).addRange(2748,2757).addRange(2759,2761).addRange(2763,2765).addRange(2784,2787).addRange(2790,2799).addRange(2809,2815).addRange(2817,2819).addRange(2821,2828).addRange(2831,2832).addRange(2835,2856).addRange(2858,2864).addRange(2866,2867).addRange(2869,2873).addRange(2876,2884).addRange(2887,2888).addRange(2891,2893).addRange(2901,2903).addRange(2908,2909).addRange(2911,2915).addRange(2918,2927).addRange(2946,2947).addRange(2949,2954).addRange(2958,2960).addRange(2962,2965).addRange(2969,2970).addRange(2974,2975).addRange(2979,2980).addRange(2984,2986).addRange(2990,3001),t.addRange(3006,3010).addRange(3014,3016).addRange(3018,3021).addRange(3046,3055).addRange(3072,3084).addRange(3086,3088).addRange(3090,3112).addRange(3114,3129).addRange(3132,3140).addRange(3142,3144).addRange(3146,3149).addRange(3157,3158).addRange(3160,3162).addRange(3168,3171).addRange(3174,3183).addRange(3200,3203).addRange(3205,3212).addRange(3214,3216).addRange(3218,3240).addRange(3242,3251).addRange(3253,3257).addRange(3260,3268).addRange(3270,3272).addRange(3274,3277).addRange(3285,3286).addRange(3293,3294).addRange(3296,3299).addRange(3302,3311).addRange(3313,3314).addRange(3328,3340).addRange(3342,3344).addRange(3346,3396).addRange(3398,3400).addRange(3402,3406).addRange(3412,3415).addRange(3423,3427).addRange(3430,3439).addRange(3450,3455).addRange(3457,3459).addRange(3461,3478).addRange(3482,3505).addRange(3507,3515).addRange(3520,3526).addRange(3535,3540).addRange(3544,3551).addRange(3558,3567).addRange(3570,3571).addRange(3585,3642).addRange(3648,3662).addRange(3664,3673).addRange(3713,3714),t.addRange(3718,3722).addRange(3724,3747).addRange(3751,3773).addRange(3776,3780).addRange(3784,3789).addRange(3792,3801).addRange(3804,3807).addRange(3864,3865).addRange(3872,3881).addRange(3902,3911).addRange(3913,3948).addRange(3953,3972).addRange(3974,3991).addRange(3993,4028).addRange(4096,4169).addRange(4176,4253).addRange(4256,4293).addRange(4304,4346).addRange(4348,4680).addRange(4682,4685).addRange(4688,4694).addRange(4698,4701).addRange(4704,4744).addRange(4746,4749).addRange(4752,4784).addRange(4786,4789).addRange(4792,4798).addRange(4802,4805).addRange(4808,4822).addRange(4824,4880).addRange(4882,4885).addRange(4888,4954).addRange(4957,4959).addRange(4969,4977).addRange(4992,5007).addRange(5024,5109).addRange(5112,5117).addRange(5121,5740).addRange(5743,5759).addRange(5761,5786).addRange(5792,5866).addRange(5870,5880).addRange(5888,5909).addRange(5919,5940).addRange(5952,5971).addRange(5984,5996).addRange(5998,6e3).addRange(6002,6003).addRange(6016,6099).addRange(6108,6109).addRange(6112,6121),t.addRange(6155,6157).addRange(6159,6169).addRange(6176,6264).addRange(6272,6314).addRange(6320,6389).addRange(6400,6430).addRange(6432,6443).addRange(6448,6459).addRange(6470,6509).addRange(6512,6516).addRange(6528,6571).addRange(6576,6601).addRange(6608,6618).addRange(6656,6683).addRange(6688,6750).addRange(6752,6780).addRange(6783,6793).addRange(6800,6809).addRange(6832,6845).addRange(6847,6862).addRange(6912,6988).addRange(6992,7001).addRange(7019,7027).addRange(7040,7155).addRange(7168,7223).addRange(7232,7241).addRange(7245,7293).addRange(7296,7304).addRange(7312,7354).addRange(7357,7359).addRange(7376,7378).addRange(7380,7418).addRange(7424,7957).addRange(7960,7965).addRange(7968,8005).addRange(8008,8013).addRange(8016,8023).addRange(8031,8061).addRange(8064,8116).addRange(8118,8124).addRange(8130,8132).addRange(8134,8140).addRange(8144,8147).addRange(8150,8155).addRange(8160,8172).addRange(8178,8180).addRange(8182,8188).addRange(8255,8256).addRange(8336,8348).addRange(8400,8412).addRange(8421,8432),t.addRange(8458,8467).addRange(8472,8477).addRange(8490,8505).addRange(8508,8511).addRange(8517,8521).addRange(8544,8584).addRange(11264,11492).addRange(11499,11507).addRange(11520,11557).addRange(11568,11623).addRange(11647,11670).addRange(11680,11686).addRange(11688,11694).addRange(11696,11702).addRange(11704,11710).addRange(11712,11718).addRange(11720,11726).addRange(11728,11734).addRange(11736,11742).addRange(11744,11775).addRange(12293,12295).addRange(12321,12335).addRange(12337,12341).addRange(12344,12348).addRange(12353,12438).addRange(12441,12447).addRange(12449,12538).addRange(12540,12543).addRange(12549,12591).addRange(12593,12686).addRange(12704,12735).addRange(12784,12799).addRange(13312,19903).addRange(19968,42124).addRange(42192,42237).addRange(42240,42508).addRange(42512,42539).addRange(42560,42607).addRange(42612,42621).addRange(42623,42737).addRange(42775,42783).addRange(42786,42888).addRange(42891,42954).addRange(42960,42961).addRange(42965,42969).addRange(42994,43047).addRange(43072,43123).addRange(43136,43205).addRange(43216,43225).addRange(43232,43255).addRange(43261,43309),t.addRange(43312,43347).addRange(43360,43388).addRange(43392,43456).addRange(43471,43481).addRange(43488,43518).addRange(43520,43574).addRange(43584,43597).addRange(43600,43609).addRange(43616,43638).addRange(43642,43714).addRange(43739,43741).addRange(43744,43759).addRange(43762,43766).addRange(43777,43782).addRange(43785,43790).addRange(43793,43798).addRange(43808,43814).addRange(43816,43822).addRange(43824,43866).addRange(43868,43881).addRange(43888,44010).addRange(44012,44013).addRange(44016,44025).addRange(44032,55203).addRange(55216,55238).addRange(55243,55291).addRange(63744,64109).addRange(64112,64217).addRange(64256,64262).addRange(64275,64279).addRange(64285,64296).addRange(64298,64310).addRange(64312,64316).addRange(64320,64321).addRange(64323,64324).addRange(64326,64433).addRange(64467,64829).addRange(64848,64911).addRange(64914,64967).addRange(65008,65019).addRange(65024,65039).addRange(65056,65071).addRange(65075,65076).addRange(65101,65103).addRange(65136,65140).addRange(65142,65276).addRange(65296,65305).addRange(65313,65338).addRange(65345,65370).addRange(65382,65470).addRange(65474,65479),t.addRange(65482,65487).addRange(65490,65495).addRange(65498,65500).addRange(65536,65547).addRange(65549,65574).addRange(65576,65594).addRange(65596,65597).addRange(65599,65613).addRange(65616,65629).addRange(65664,65786).addRange(65856,65908).addRange(66176,66204).addRange(66208,66256).addRange(66304,66335).addRange(66349,66378).addRange(66384,66426).addRange(66432,66461).addRange(66464,66499).addRange(66504,66511).addRange(66513,66517).addRange(66560,66717).addRange(66720,66729).addRange(66736,66771).addRange(66776,66811).addRange(66816,66855).addRange(66864,66915).addRange(66928,66938).addRange(66940,66954).addRange(66956,66962).addRange(66964,66965).addRange(66967,66977).addRange(66979,66993).addRange(66995,67001).addRange(67003,67004).addRange(67072,67382).addRange(67392,67413).addRange(67424,67431).addRange(67456,67461).addRange(67463,67504).addRange(67506,67514).addRange(67584,67589).addRange(67594,67637).addRange(67639,67640).addRange(67647,67669).addRange(67680,67702).addRange(67712,67742).addRange(67808,67826).addRange(67828,67829).addRange(67840,67861).addRange(67872,67897).addRange(67968,68023),t.addRange(68030,68031).addRange(68096,68099).addRange(68101,68102).addRange(68108,68115).addRange(68117,68119).addRange(68121,68149).addRange(68152,68154).addRange(68192,68220).addRange(68224,68252).addRange(68288,68295).addRange(68297,68326).addRange(68352,68405).addRange(68416,68437).addRange(68448,68466).addRange(68480,68497).addRange(68608,68680).addRange(68736,68786).addRange(68800,68850).addRange(68864,68903).addRange(68912,68921).addRange(69248,69289).addRange(69291,69292).addRange(69296,69297).addRange(69376,69404).addRange(69424,69456).addRange(69488,69509).addRange(69552,69572).addRange(69600,69622).addRange(69632,69702).addRange(69734,69749).addRange(69759,69818).addRange(69840,69864).addRange(69872,69881).addRange(69888,69940).addRange(69942,69951).addRange(69956,69959).addRange(69968,70003).addRange(70016,70084).addRange(70089,70092).addRange(70094,70106).addRange(70144,70161).addRange(70163,70199).addRange(70272,70278).addRange(70282,70285).addRange(70287,70301).addRange(70303,70312).addRange(70320,70378).addRange(70384,70393).addRange(70400,70403).addRange(70405,70412).addRange(70415,70416),t.addRange(70419,70440).addRange(70442,70448).addRange(70450,70451).addRange(70453,70457).addRange(70459,70468).addRange(70471,70472).addRange(70475,70477).addRange(70493,70499).addRange(70502,70508).addRange(70512,70516).addRange(70656,70730).addRange(70736,70745).addRange(70750,70753).addRange(70784,70853).addRange(70864,70873).addRange(71040,71093).addRange(71096,71104).addRange(71128,71133).addRange(71168,71232).addRange(71248,71257).addRange(71296,71352).addRange(71360,71369).addRange(71424,71450).addRange(71453,71467).addRange(71472,71481).addRange(71488,71494).addRange(71680,71738).addRange(71840,71913).addRange(71935,71942).addRange(71948,71955).addRange(71957,71958).addRange(71960,71989).addRange(71991,71992).addRange(71995,72003).addRange(72016,72025).addRange(72096,72103).addRange(72106,72151).addRange(72154,72161).addRange(72163,72164).addRange(72192,72254).addRange(72272,72345).addRange(72368,72440).addRange(72704,72712).addRange(72714,72758).addRange(72760,72768).addRange(72784,72793).addRange(72818,72847).addRange(72850,72871).addRange(72873,72886).addRange(72960,72966).addRange(72968,72969),t.addRange(72971,73014).addRange(73020,73021).addRange(73023,73031).addRange(73040,73049).addRange(73056,73061).addRange(73063,73064).addRange(73066,73102).addRange(73104,73105).addRange(73107,73112).addRange(73120,73129).addRange(73440,73462).addRange(73728,74649).addRange(74752,74862).addRange(74880,75075).addRange(77712,77808).addRange(77824,78894).addRange(82944,83526).addRange(92160,92728).addRange(92736,92766).addRange(92768,92777).addRange(92784,92862).addRange(92864,92873).addRange(92880,92909).addRange(92912,92916).addRange(92928,92982).addRange(92992,92995).addRange(93008,93017).addRange(93027,93047).addRange(93053,93071).addRange(93760,93823).addRange(93952,94026).addRange(94031,94087).addRange(94095,94111).addRange(94176,94177).addRange(94179,94180).addRange(94192,94193).addRange(94208,100343).addRange(100352,101589).addRange(101632,101640).addRange(110576,110579).addRange(110581,110587).addRange(110589,110590).addRange(110592,110882).addRange(110928,110930).addRange(110948,110951).addRange(110960,111355).addRange(113664,113770).addRange(113776,113788).addRange(113792,113800).addRange(113808,113817).addRange(113821,113822),t.addRange(118528,118573).addRange(118576,118598).addRange(119141,119145).addRange(119149,119154).addRange(119163,119170).addRange(119173,119179).addRange(119210,119213).addRange(119362,119364).addRange(119808,119892).addRange(119894,119964).addRange(119966,119967).addRange(119973,119974).addRange(119977,119980).addRange(119982,119993).addRange(119997,120003).addRange(120005,120069).addRange(120071,120074).addRange(120077,120084).addRange(120086,120092).addRange(120094,120121).addRange(120123,120126).addRange(120128,120132).addRange(120138,120144).addRange(120146,120485).addRange(120488,120512).addRange(120514,120538).addRange(120540,120570).addRange(120572,120596).addRange(120598,120628).addRange(120630,120654).addRange(120656,120686).addRange(120688,120712).addRange(120714,120744).addRange(120746,120770).addRange(120772,120779).addRange(120782,120831).addRange(121344,121398).addRange(121403,121452).addRange(121499,121503).addRange(121505,121519).addRange(122624,122654).addRange(122880,122886).addRange(122888,122904).addRange(122907,122913).addRange(122915,122916).addRange(122918,122922).addRange(123136,123180).addRange(123184,123197).addRange(123200,123209).addRange(123536,123566).addRange(123584,123641),t.addRange(124896,124902).addRange(124904,124907).addRange(124909,124910).addRange(124912,124926).addRange(124928,125124).addRange(125136,125142).addRange(125184,125259).addRange(125264,125273).addRange(126464,126467).addRange(126469,126495).addRange(126497,126498).addRange(126505,126514).addRange(126516,126519).addRange(126541,126543).addRange(126545,126546).addRange(126561,126562).addRange(126567,126570).addRange(126572,126578).addRange(126580,126583).addRange(126585,126588).addRange(126592,126601).addRange(126603,126619).addRange(126625,126627).addRange(126629,126633).addRange(126635,126651).addRange(130032,130041).addRange(131072,173791).addRange(173824,177976).addRange(177984,178205).addRange(178208,183969).addRange(183984,191456).addRange(194560,195101).addRange(196608,201546).addRange(917760,917999),e.exports=t},Z6fC:function(e,a,n){"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.FrameContextConsumer=a.FrameContextProvider=a.FrameContext=void 0;var t,d=n("q1tI"),r=(t=d)&&t.__esModule?t:{default:t};var o=void 0,i=void 0;"undefined"!=typeof document&&(o=document),"undefined"!=typeof window&&(i=window);var s=a.FrameContext=r.default.createContext({document:o,window:i}),g=s.Provider,c=s.Consumer;a.FrameContextProvider=g,a.FrameContextConsumer=c},Z8oC:function(e,a,n){var t=n("y1pI");e.exports=function(e,a){var n=this.__data__,d=t(n,e);return d<0?(++this.size,n.push([e,a])):n[d][1]=a,this}},"Z94/":function(e,a){var n=Object.prototype.toString;e.exports=function(e){return"number"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&"[object Number]"==n.call(e)}},ZAyF:function(e,a,n){const t=n("dVj6")(11647);t.addRange(11568,11623).addRange(11631,11632),e.exports=t},ZCgT:function(e,a,n){var t=n("tLB3");e.exports=function(e){return e?(e=t(e))===1/0||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}},ZCpW:function(e,a,n){var t=n("lm/5"),d=n("O7RO"),r=n("IOzZ");e.exports=function(e){var a=d(e);return 1==a.length&&a[0][2]?r(a[0][0],a[0][1]):function(n){return n===e||t(n,e,a)}}},ZHd1:function(e,a,n){"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.marksy=c,a.default=function(e){return c(e)};var t,d=(t=n("DlQD"))&&t.__esModule?t:{default:t},r=function(e){if(e&&e.__esModule)return e;var a={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var t=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};t.get||t.set?Object.defineProperty(a,n,t):a[n]=e[n]}return a.default=e,a}(n("p+Yj"));function o(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}function i(e,a,n){return(i=o()?Reflect.construct:function(e,a,n){var t=[null];t.push.apply(t,a);var d=new(Function.bind.apply(e,t));return n&&s(d,n.prototype),d}).apply(null,arguments)}function s(e,a){return(s=Object.setPrototypeOf||function(e,a){return e.__proto__=a,e})(e,a)}function g(e){return function(e){if(Array.isArray(e)){for(var a=0,n=new Array(e.length);a0&&void 0!==arguments[0]?arguments[0]:{},a={tree:null,elements:null,nextElementId:null,toc:null,currentIdLevel:0,currentId:[]},n=(0,r.default)(a,e,{code:function(n,t){if("marksy"===t){try{var d=a.nextElementId++,o=Object.keys(e.components).map((function(a){return e.components[a]}));return a.elements[d]=i(Function,["h"].concat(g(Object.keys(e.components)),["return ".concat(n)])).apply(void 0,[function(n){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},d=o.indexOf(n)>=0?Object.assign(t||{},{key:a.nextElementId++,context:a.context}):t,r=arguments.length,i=new Array(r>2?r-2:0),s=2;s1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return a.tree=[],a.elements={},a.toc=[],a.nextElementId=0,a.context=r,a.currentId=[],(0,d.default)(e,Object.assign({renderer:n,smartypants:!0},t)),{tree:a.tree,toc:a.toc}}}},ZKzb:function(e,a,n){const t=n("dVj6")();t.addRange(0,31).addRange(127,159),e.exports=t},ZSfS:function(e,a,n){const t=n("dVj6")();t.addRange(72272,72354),e.exports=t},ZWtO:function(e,a,n){var t=n("4uTw"),d=n("9Nap");e.exports=function(e,a){for(var n=0,r=(a=t(a,e)).length;null!=e&&n1&&S.reverse(),v&&b100&&(e=100),e<0&&(e=0);var d=0;if(0!==a){d=19.92978+-.3651759*e+.001737214*Math.pow(e,2)}var r=0;return t?(r=e/100,e="100%,"):(r=(100-e)/100,e="0%,"),"hsla("+a+","+d+"%,"+e+r+")"}},adU4:function(e,a,n){var t=n("y1pI"),d=Array.prototype.splice;e.exports=function(e){var a=this.__data__,n=t(a,e);return!(n<0)&&(n==a.length-1?a.pop():d.call(a,n,1),--this.size,!0)}},afO8:function(e,a,n){var t,d,r,o=n("zc4i"),i=n("2oRo"),s=n("hh1v"),g=n("kRJp"),c=n("Gi26"),u=n("xs3f"),l=n("93I0"),R=n("0BK2"),p=i.TypeError,f=i.WeakMap;if(o||u.state){var h=u.state||(u.state=new f);h.get=h.get,h.has=h.has,h.set=h.set,t=function(e,a){if(h.has(e))throw p("Object already initialized");return a.facade=e,h.set(e,a),a},d=function(e){return h.get(e)||{}},r=function(e){return h.has(e)}}else{var m=l("state");R[m]=!0,t=function(e,a){if(c(e,m))throw p("Object already initialized");return a.facade=e,g(e,m,a),a},d=function(e){return c(e,m)?e[m]:{}},r=function(e){return c(e,m)}}e.exports={set:t,get:d,has:r,enforce:function(e){return r(e)?d(e):t(e,{})},getterFor:function(e){return function(a){var n;if(!s(a)||(n=d(a)).type!==e)throw p("Incompatible receiver, "+e+" required");return n}}}},anp4:function(e,a,n){"use strict";var t=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(a,"__esModule",{value:!0}),a.wrapRootElement=void 0;var d=t(n("q1tI")),r=n("rid2");a.wrapRootElement=function(e){var a=e.element;return d.default.createElement(r.HelmetProvider,null,a)}},asDA:function(e,a){e.exports=function(e,a,n,t){var d=-1,r=null==e?0:e.length;for(t&&r&&(n=e[++d]);++d0},e.prototype.connect_=function(){t&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),i?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){t&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var a=e.propertyName,n=void 0===a?"":a;o.some((function(e){return!!~n.indexOf(e)}))&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),g=function(e,a){for(var n=0,t=Object.keys(a);n0},e}(),j="undefined"!=typeof WeakMap?new WeakMap:new n,O=function e(a){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=s.getInstance(),t=new v(a,n,this);j.set(this,t)};["observe","unobserve","disconnect"].forEach((function(e){O.prototype[e]=function(){var a;return(a=j.get(this))[e].apply(a,arguments)}}));var _=void 0!==d.ResizeObserver?d.ResizeObserver:O;a.a=_}).call(this,n("yLpj"))},be4H:function(e,a,n){var t=n("6T1N"),d=n("xs/l"),r=d((function(e,a){return t(e,256,void 0,void 0,void 0,a)}));e.exports=r},bmMU:function(e,a,n){n("U3f4");var t="undefined"!=typeof Element,d="function"==typeof Map,r="function"==typeof Set,o="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;e.exports=function(e,a){try{return function e(a,n){if(a===n)return!0;if(a&&n&&"object"==typeof a&&"object"==typeof n){if(a.constructor!==n.constructor)return!1;var i,s,g,c;if(Array.isArray(a)){if((i=a.length)!=n.length)return!1;for(s=i;0!=s--;)if(!e(a[s],n[s]))return!1;return!0}if(d&&a instanceof Map&&n instanceof Map){if(a.size!==n.size)return!1;for(c=a.entries();!(s=c.next()).done;)if(!n.has(s.value[0]))return!1;for(c=a.entries();!(s=c.next()).done;)if(!e(s.value[1],n.get(s.value[0])))return!1;return!0}if(r&&a instanceof Set&&n instanceof Set){if(a.size!==n.size)return!1;for(c=a.entries();!(s=c.next()).done;)if(!n.has(s.value[0]))return!1;return!0}if(o&&ArrayBuffer.isView(a)&&ArrayBuffer.isView(n)){if((i=a.length)!=n.length)return!1;for(s=i;0!=s--;)if(a[s]!==n[s])return!1;return!0}if(a.constructor===RegExp)return a.source===n.source&&a.flags===n.flags;if(a.valueOf!==Object.prototype.valueOf&&"function"==typeof a.valueOf&&"function"==typeof n.valueOf)return a.valueOf()===n.valueOf();if(a.toString!==Object.prototype.toString&&"function"==typeof a.toString&&"function"==typeof n.toString)return a.toString()===n.toString();if((i=(g=Object.keys(a)).length)!==Object.keys(n).length)return!1;for(s=i;0!=s--;)if(!Object.prototype.hasOwnProperty.call(n,g[s]))return!1;if(t&&a instanceof Element)return!1;for(s=i;0!=s--;)if(("_owner"!==g[s]&&"__v"!==g[s]&&"__o"!==g[s]||!a.$$typeof)&&!e(a[g[s]],n[g[s]]))return!1;return!0}return a!=a&&n!=n}(e,a)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},bntx:function(e,a,n){const t=n("dVj6")(69759);t.addRange(69632,69709).addRange(69714,69749),e.exports=t},bqHw:function(e,a,n){const t=n("dVj6")(43310);t.addRange(4096,4255).addRange(43488,43518).addRange(43616,43647),e.exports=t},"c+H2":function(e,a,n){"use strict";Object.defineProperty(a,"__esModule",{value:!0});var t=Object.assign||function(e){for(var a=1;a
    '},a.default=l},c6wG:function(e,a,n){var t=n("dD9F"),d=n("sEf8"),r=n("mdPL"),o=r&&r.isTypedArray,i=o?d(o):t;e.exports=i},cDf5:function(e,a){function n(a){return e.exports=n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,n(a)}e.exports=n,e.exports.__esModule=!0,e.exports.default=e.exports},cSJ8:function(e,a,n){"use strict";function t(e,a){return void 0===a&&(a=""),a?e===a?"/":e.startsWith(a+"/")?e.slice(a.length):e:e}n.d(a,"a",(function(){return t}))},"cU+8":function(e,a,n){const t=n("dVj6")();t.addRange(71168,71236).addRange(71248,71257),e.exports=t},"cWj/":function(e,a,n){var t=n("OBhP"),d=n("ut/Y");e.exports=function(e){return d("function"==typeof e?e:t(e,1))}},cjT7:function(e,a){e.exports=function(e){return null==e}},coJu:function(e,a,n){var t=n("4zBA"),d=n("We1y");e.exports=function(e,a,n){try{return t(d(Object.getOwnPropertyDescriptor(e,a)[n]))}catch(r){}}},"cq/+":function(e,a,n){var t=n("mc0g")();e.exports=t},cu4x:function(e,a,n){"use strict";a.__esModule=!0,a.parsePath=function(e){var a=e||"/",n="",t="",d=a.indexOf("#");-1!==d&&(t=a.substr(d),a=a.substr(0,d));var r=a.indexOf("?");-1!==r&&(n=a.substr(r),a=a.substr(0,r));return{pathname:a,search:"?"===n?"":n,hash:"#"===t?"":t}}},cvCv:function(e,a){e.exports=function(e){return function(){return e}}},cyPN:function(e,a,n){const t=n("dVj6")();t.addRange(42240,42539),e.exports=t},"dBg+":function(e,a){a.f=Object.getOwnPropertySymbols},dC9X:function(e,a,n){const t=n("dVj6")(43359);t.addRange(43312,43347),e.exports=t},dD9F:function(e,a,n){var t=n("NykK"),d=n("shjB"),r=n("ExA7"),o={};o["[object Float32Array]"]=o["[object Float64Array]"]=o["[object Int8Array]"]=o["[object Int16Array]"]=o["[object Int32Array]"]=o["[object Uint8Array]"]=o["[object Uint8ClampedArray]"]=o["[object Uint16Array]"]=o["[object Uint32Array]"]=!0,o["[object Arguments]"]=o["[object Array]"]=o["[object ArrayBuffer]"]=o["[object Boolean]"]=o["[object DataView]"]=o["[object Date]"]=o["[object Error]"]=o["[object Function]"]=o["[object Map]"]=o["[object Number]"]=o["[object Object]"]=o["[object RegExp]"]=o["[object Set]"]=o["[object String]"]=o["[object WeakMap]"]=!1,e.exports=function(e){return r(e)&&d(e.length)&&!!o[t(e)]}},dI71:function(e,a,n){"use strict";function t(e,a){return(t=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,a){return e.__proto__=a,e})(e,a)}function d(e,a){e.prototype=Object.create(a.prototype),e.prototype.constructor=e,t(e,a)}n.d(a,"a",(function(){return d}))},dN2w:function(e,a,n){const t=n("dVj6")(170,186,8305,8319,8498,8526,42963);t.addRange(65,90).addRange(97,122).addRange(192,214).addRange(216,246).addRange(248,696).addRange(736,740).addRange(7424,7461).addRange(7468,7516).addRange(7522,7525).addRange(7531,7543).addRange(7545,7614).addRange(7680,7935).addRange(8336,8348).addRange(8490,8491).addRange(8544,8584).addRange(11360,11391).addRange(42786,42887).addRange(42891,42954).addRange(42960,42961).addRange(42965,42969).addRange(42994,43007).addRange(43824,43866).addRange(43868,43876).addRange(43878,43881).addRange(64256,64262).addRange(65313,65338).addRange(65345,65370).addRange(67456,67461).addRange(67463,67504).addRange(67506,67514).addRange(122624,122654),e.exports=t},dOYW:function(e,a,n){const t=n("dVj6")();t.addRange(82944,83526),e.exports=t},dP5d:function(e,a,n){const t=n("dVj6")(94180);t.addRange(101120,101589),e.exports=t},dQpi:function(e,a,n){var t=n("yGk4"),d=n("vN+2"),r=n("rEGp"),o=t&&1/r(new t([,-0]))[1]==1/0?function(e){return new t(e)}:d;e.exports=o},dTAl:function(e,a,n){var t=n("GoyQ"),d=Object.create,r=function(){function e(){}return function(a){if(!t(a))return{};if(d)return d(a);e.prototype=a;var n=new e;return e.prototype=void 0,n}}();e.exports=r},dVj6:function(e,a,n){(function(e,t){var d;!function(r){var o=a,i=(e&&e.exports,"object"==typeof t&&t);i.global!==i&&i.window;var s="A range’s `stop` value must be greater than or equal to the `start` value.",g="Invalid code point value. Code points range from U+000000 to U+10FFFF.",c=/\\x00([^0123456789]|$)/g,u={},l=u.hasOwnProperty,R=function(e,a){for(var n=-1,t=e.length;++n=n&&an)return e;if(a<=t&&n>=d)e.splice(r,2);else{if(a>=t&&n=t&&a<=d)e[r+1]=a;else if(n>=t&&n<=d)return e[r]=n+1,e;r+=2}}return e},O=function(e,a){var n,t,d=0,r=null,o=e.length;if(a<0||a>1114111)throw RangeError(g);for(;d=n&&aa)return e.splice(null!=r?r+2:0,0,a,a+1),e;if(a==t)return a+1==e[d+2]?(e.splice(d,4,n,e[d+3]),e):(e[d+1]=a+1,e);r=d,d+=2}return e.push(a,a+1),e},_=function(e,a){for(var n,t,d=0,r=e.slice(),o=a.length;d1114111||n<0||n>1114111)throw RangeError(g);for(var t,d,r=0,o=!1,i=e.length;rn)return e;t>=a&&t<=n&&(d>a&&d-1<=n?(e.splice(r,2),r-=2):(e.splice(r-1,2),r-=2))}else{if(t==n+1||t==n)return e[r]=a,e;if(t>n)return e.splice(r,0,a,n+1),e;if(a>=t&&a=t&&a=d&&(e[r]=a,e[r+1]=n+1,o=!0)}r+=2}return o||e.push(a,n+1),e},E=function(e,a){var n=0,t=e.length,d=e[n],r=e[t-1];if(t>=2&&(ar))return!1;for(;n=d&&a=40&&e<=43||46==e||47==e||63==e||e>=91&&e<=94||e>=123&&e<=125?"\\"+F(e):e>=32&&e<=126?F(e):e<=255?"\\x"+m(b(e),2):"\\u"+m(b(e),4)},L=function(e){return e<=65535?T(e):"\\u{"+e.toString(16).toUpperCase()+"}"},B=function(e){var a=e.length,n=e.charCodeAt(0);return n>=55296&&n<=56319&&a>1?1024*(n-55296)+e.charCodeAt(1)-56320+65536:n},N=function(e){var a,n,t="",d=0,r=e.length;if(S(e))return T(e[0]);for(;d=55296&&n<=56319&&(r.push(a,55296),t.push(55296,n+1)),n>=56320&&n<=57343&&(r.push(a,55296),t.push(55296,56320),d.push(56320,n+1)),n>57343&&(r.push(a,55296),t.push(55296,56320),d.push(56320,57344),n<=65535?r.push(57344,n+1):(r.push(57344,65536),o.push(65536,n+1)))):a>=55296&&a<=56319?(n>=55296&&n<=56319&&t.push(a,n+1),n>=56320&&n<=57343&&(t.push(a,56320),d.push(56320,n+1)),n>57343&&(t.push(a,56320),d.push(56320,57344),n<=65535?r.push(57344,n+1):(r.push(57344,65536),o.push(65536,n+1)))):a>=56320&&a<=57343?(n>=56320&&n<=57343&&d.push(a,n+1),n>57343&&(d.push(a,57344),n<=65535?r.push(57344,n+1):(r.push(57344,65536),o.push(65536,n+1)))):a>57343&&a<=65535?n<=65535?r.push(a,n+1):(r.push(a,65536),o.push(65536,n+1)):o.push(a,n+1),i+=2;return{loneHighSurrogates:t,loneLowSurrogates:d,bmp:r,astral:o}}(e),r=d.loneHighSurrogates,o=d.loneLowSurrogates,i=d.bmp,s=d.astral,g=!k(r),c=!k(o),u=M(s);return a&&(i=_(i,r),g=!1,i=_(i,o),c=!1),k(i)||t.push(N(i)),u.length&&t.push(function(e){var a=[];return R(e,(function(e){var n=e[0],t=e[1];a.push(N(n)+N(t))})),a.join("|")}(u)),g&&t.push(N(r)+"(?![\\uDC00-\\uDFFF])"),c&&t.push("(?:[^\\uD800-\\uDBFF]|^)"+N(o)),t.join("|")},q=function(e){return arguments.length>1&&(e=y.call(arguments)),this instanceof q?(this.data=[],e?this.add(e):this):(new q).add(e)};q.version="1.4.2";var V=q.prototype;!function(e,a){var n;for(n in a)l.call(a,n)&&(e[n]=a[n])}(V,{add:function(e){var a=this;return null==e?a:e instanceof q?(a.data=_(a.data,e.data),a):(arguments.length>1&&(e=y.call(arguments)),f(e)?(R(e,(function(e){a.add(e)})),a):(a.data=O(a.data,h(e)?e:B(e)),a))},remove:function(e){var a=this;return null==e?a:e instanceof q?(a.data=x(a.data,e.data),a):(arguments.length>1&&(e=y.call(arguments)),f(e)?(R(e,(function(e){a.remove(e)})),a):(a.data=v(a.data,h(e)?e:B(e)),a))},addRange:function(e,a){return this.data=w(this.data,h(e)?e:B(e),h(a)?a:B(a)),this},removeRange:function(e,a){var n=h(e)?e:B(e),t=h(a)?a:B(a);return this.data=j(this.data,n,t),this},intersection:function(e){var a=e instanceof q?D(e.data):e;return this.data=function(e,a){for(var n,t=0,d=a.length,r=[];t script[src],\n head > link[href],\n head > style[data-href]\n "),o=[].slice.call(r).filter((function(e){return"LINK"!==e.tagName||t.test(e.getAttribute("rel"))})).map((function(e){return e.src||e.href||e.getAttribute("data-href")})),i=[];d.forEach((function(e){var t=a(e);i.push.apply(i,t),n.active.postMessage({gatsbyApi:"setPathResources",path:e,resources:t})})),[].concat(o,i).forEach((function(e){var a=document.createElement("link");a.rel="prefetch",a.href=e,a.onload=a.remove,a.onerror=a.remove,document.head.appendChild(a)}))}},a.onRouteUpdate=function(e){var a=e.location,n=e.getResourceURLsForPathname;r(a.pathname.replace("/pr-preview/pr-1029",""),n),"serviceWorker"in navigator&&null!==navigator.serviceWorker.controller&&navigator.serviceWorker.controller.postMessage({gatsbyApi:"enableOfflineShell"})},a.onPostPrefetchPathname=function(e){r(e.pathname,e.getResourceURLsForPathname)}},e4Nc:function(e,a,n){var t=n("fGT3"),d=n("k+1r"),r=n("JHgL"),o=n("pSRY"),i=n("H8j4");function s(e){var a=-1,n=null==e?0:e.length;for(this.clear();++a0&&(r+=";"),0!==s.length){for(var g=0,c=[],u=0,l=s;u1&&(p+=i(R[1]-a)+i(R[2]-n)+i(R[3]-t),a=R[1],n=R[2],t=R[3]),5===R.length&&(p+=i(R[4]-d),d=R[4]),c.push(p)}r+=c.join(",")}}return r}function i(e){var a="";e=e<0?-e<<1|1:e<<1;do{var n=31&e;(e>>>=5)>0&&(n|=32),a+=d[n]}while(e>0);return a}},eX0k:function(e,a,n){"use strict";var t=n("7BAC");e.exports=function(e,a,n){if(null!=n&&"string"!==t(n))throw new TypeError('expected "prop" to be undefined or a string');var d=t(e),r=t(a);return n&&("object"===d&&(e=e[n],d=t(e)),"object"===r&&(a=a[n],r=t(a))),"null"===d?"null"===r?0:"undefined"===r?-1:1:"undefined"===d?"null"===r?1:"undefined"===r?0:1:"null"===r||"undefined"===r||ea?1:0}},ebwN:function(e,a,n){var t=n("Cwc5")(n("Kz5y"),"Map");e.exports=t},"ec/7":function(e,a,n){const t=n("dVj6")(4696,4800);t.addRange(4608,4680).addRange(4682,4685).addRange(4688,4694).addRange(4698,4701).addRange(4704,4744).addRange(4746,4749).addRange(4752,4784).addRange(4786,4789).addRange(4792,4798).addRange(4802,4805).addRange(4808,4822).addRange(4824,4880).addRange(4882,4885).addRange(4888,4954).addRange(4957,4988).addRange(4992,5017).addRange(11648,11670).addRange(11680,11686).addRange(11688,11694).addRange(11696,11702).addRange(11704,11710).addRange(11712,11718).addRange(11720,11726).addRange(11728,11734).addRange(11736,11742).addRange(43777,43782).addRange(43785,43790).addRange(43793,43798).addRange(43808,43814).addRange(43816,43822).addRange(124896,124902).addRange(124904,124907).addRange(124909,124910).addRange(124912,124926),e.exports=t},edsp:function(e,a,n){const t=n("dVj6")(127488);t.addRange(12353,12438).addRange(12445,12447).addRange(110593,110879).addRange(110928,110930),e.exports=t},ekgI:function(e,a,n){var t=n("YESw"),d=Object.prototype.hasOwnProperty;e.exports=function(e){var a=this.__data__;return t?void 0!==a[e]:d.call(a,e)}},emEt:function(e,a,n){"use strict";n.r(a),n.d(a,"PageResourceStatus",(function(){return p})),n.d(a,"BaseLoader",(function(){return y})),n.d(a,"ProdLoader",(function(){return O})),n.d(a,"setLoader",(function(){return _})),n.d(a,"publicLoader",(function(){return x})),n.d(a,"getStaticQueryResults",(function(){return w}));var t=n("dI71");function d(e,a){(null==a||a>e.length)&&(a=e.length);for(var n=0,t=new Array(a);n{if("undefined"==typeof document)return void t();const d=document.createElement("link");d.setAttribute("rel","prefetch"),d.setAttribute("href",e),Object.keys(a).forEach(e=>{d.setAttribute(e,a[e])}),d.onload=n,d.onerror=t;(document.getElementsByTagName("head")[0]||document.getElementsByName("script")[0].parentNode).appendChild(d)})}:function(e){return new Promise((a,n)=>{const t=new XMLHttpRequest;t.open("GET",e,!0),t.onload=()=>{200===t.status?a():n()},t.send(null)})},s={};var g=function(e,a){return new Promise(n=>{s[e]?n():i(e,a).then(()=>{n(),s[e]=!0}).catch(()=>{})})},c=n("5yr3"),u=n("30RF");function l(e,a){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);a&&(t=t.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),n.push.apply(n,t)}return n}function R(e){for(var a=1;ae&&e.default||e,h=e=>{var a;return"/pr-preview/pr-1029/page-data/"+("/"===e?"index":a=(a="/"===(a=e)[0]?a.slice(1):a).endsWith("/")?a.slice(0,-1):a)+"/page-data.json"};function m(e,a){return void 0===a&&(a="GET"),new Promise((n,t)=>{const d=new XMLHttpRequest;d.open(a,e,!0),d.onreadystatechange=()=>{4==d.readyState&&n(d)},d.send(null)})}const b=function(e,a){void 0===a&&(a=null);const n={componentChunkName:e.componentChunkName,path:e.path,webpackCompilationHash:e.webpackCompilationHash,matchPath:e.matchPath,staticQueryHashes:e.staticQueryHashes};return{component:a,json:e.result,page:n}};let y=function(){function e(e,a){this.inFlightNetworkRequests=new Map,this.pageDb=new Map,this.inFlightDb=new Map,this.staticQueryDb={},this.pageDataDb=new Map,this.prefetchTriggered=new Set,this.prefetchCompleted=new Set,this.loadComponent=e,Object(u.d)(a)}var a=e.prototype;return a.memoizedGet=function(e){let a=this.inFlightNetworkRequests.get(e);return a||(a=m(e,"GET"),this.inFlightNetworkRequests.set(e,a)),a.then(a=>(this.inFlightNetworkRequests.delete(e),a)).catch(a=>{throw this.inFlightNetworkRequests.delete(e),a})},a.setApiRunner=function(e){this.apiRunner=e,this.prefetchDisabled=e("disableCorePrefetching").some(e=>e)},a.fetchPageDataJson=function(e){const{pagePath:a,retries:n=0}=e,t=h(a);return this.memoizedGet(t).then(t=>{const{status:d,responseText:r}=t;if(200===d)try{const a=JSON.parse(r);if(void 0===a.path)throw new Error("not a valid pageData response");return Object.assign(e,{status:p.Success,payload:a})}catch(o){}return 404===d||200===d?"/404.html"===a?Object.assign(e,{status:p.Error}):this.fetchPageDataJson(Object.assign(e,{pagePath:"/404.html",notFound:!0})):500===d?Object.assign(e,{status:p.Error}):n<3?this.fetchPageDataJson(Object.assign(e,{retries:n+1})):Object.assign(e,{status:p.Error})})},a.loadPageDataJson=function(e){const a=Object(u.b)(e);if(this.pageDataDb.has(a)){const e=this.pageDataDb.get(a);return Promise.resolve(e)}return this.fetchPageDataJson({pagePath:a}).then(e=>(this.pageDataDb.set(a,e),e))},a.findMatchPath=function(e){return Object(u.a)(e)},a.loadPage=function(e){const a=Object(u.b)(e);if(this.pageDb.has(a)){const e=this.pageDb.get(a);return Promise.resolve(e.payload)}if(this.inFlightDb.has(a))return this.inFlightDb.get(a);const n=Promise.all([this.loadAppData(),this.loadPageDataJson(a)]).then(e=>{const n=e[1];if(n.status===p.Error)return{status:p.Error};let t=n.payload;const{componentChunkName:d,staticQueryHashes:r=[]}=t,o={},i=this.loadComponent(d).then(a=>{let d;return o.createdAt=new Date,a?(o.status=p.Success,!0===n.notFound&&(o.notFound=!0),t=Object.assign(t,{webpackCompilationHash:e[0]?e[0].webpackCompilationHash:""}),d=b(t,a)):o.status=p.Error,d}),s=Promise.all(r.map(e=>{if(this.staticQueryDb[e]){const a=this.staticQueryDb[e];return{staticQueryHash:e,jsonPayload:a}}return this.memoizedGet("/pr-preview/pr-1029/page-data/sq/d/"+e+".json").then(a=>{const n=JSON.parse(a.responseText);return{staticQueryHash:e,jsonPayload:n}})})).then(e=>{const a={};return e.forEach(e=>{let{staticQueryHash:n,jsonPayload:t}=e;a[n]=t,this.staticQueryDb[n]=t}),a});return Promise.all([i,s]).then(e=>{let n,[t,d]=e;return t&&(n=R(R({},t),{},{staticQueryResults:d}),o.payload=n,c.a.emit("onPostLoadPageResources",{page:n,pageResources:n})),this.pageDb.set(a,o),n})});return n.then(e=>{this.inFlightDb.delete(a)}).catch(e=>{throw this.inFlightDb.delete(a),e}),this.inFlightDb.set(a,n),n},a.loadPageSync=function(e){const a=Object(u.b)(e);if(this.pageDb.has(a)){return this.pageDb.get(a).payload}},a.shouldPrefetch=function(e){return!!(()=>{if("connection"in navigator&&void 0!==navigator.connection){if((navigator.connection.effectiveType||"").includes("2g"))return!1;if(navigator.connection.saveData)return!1}return!0})()&&!this.pageDb.has(e)},a.prefetch=function(e){if(!this.shouldPrefetch(e))return!1;if(this.prefetchTriggered.has(e)||(this.apiRunner("onPrefetchPathname",{pathname:e}),this.prefetchTriggered.add(e)),this.prefetchDisabled)return!1;const a=Object(u.b)(e);return this.doPrefetch(a).then(()=>{this.prefetchCompleted.has(e)||(this.apiRunner("onPostPrefetchPathname",{pathname:e}),this.prefetchCompleted.add(e))}),!0},a.doPrefetch=function(e){const a=h(e);return g(a,{crossOrigin:"anonymous",as:"fetch"}).then(()=>this.loadPageDataJson(e))},a.hovering=function(e){this.loadPage(e)},a.getResourceURLsForPathname=function(e){const a=Object(u.b)(e),n=this.pageDataDb.get(a);if(n){const e=b(n.payload);return[].concat(r(v(e.page.componentChunkName)),[h(a)])}return null},a.isPageNotFound=function(e){const a=Object(u.b)(e),n=this.pageDb.get(a);return!n||n.notFound},a.loadAppData=function(e){return void 0===e&&(e=0),this.memoizedGet("/pr-preview/pr-1029/page-data/app-data.json").then(a=>{const{status:n,responseText:t}=a;let d;if(200!==n&&e<3)return this.loadAppData(e+1);if(200===n)try{const e=JSON.parse(t);if(void 0===e.webpackCompilationHash)throw new Error("not a valid app-data response");d=e}catch(r){}return d})},e}();const v=e=>(window.___chunkMapping[e]||[]).map(e=>"/pr-preview/pr-1029"+e);let j,O=function(e){function a(a,n){return e.call(this,e=>a.components[e]?a.components[e]().then(f).catch(()=>null):Promise.resolve(),n)||this}Object(t.a)(a,e);var n=a.prototype;return n.doPrefetch=function(a){return e.prototype.doPrefetch.call(this,a).then(e=>{if(e.status!==p.Success)return Promise.resolve();const a=e.payload,n=a.componentChunkName,t=v(n);return Promise.all(t.map(g)).then(()=>a)})},n.loadPageDataJson=function(a){return e.prototype.loadPageDataJson.call(this,a).then(e=>e.notFound?m(a,"HEAD").then(a=>200===a.status?{status:p.Error}:e):e)},a}(y);const _=e=>{j=e},x={getResourcesForPathname:e=>(console.warn("Warning: getResourcesForPathname is deprecated. Use loadPage instead"),j.i.loadPage(e)),getResourcesForPathnameSync:e=>(console.warn("Warning: getResourcesForPathnameSync is deprecated. Use loadPageSync instead"),j.i.loadPageSync(e)),enqueue:e=>j.prefetch(e),getResourceURLsForPathname:e=>j.getResourceURLsForPathname(e),loadPage:e=>j.loadPage(e),loadPageSync:e=>j.loadPageSync(e),prefetch:e=>j.prefetch(e),isPageNotFound:e=>j.isPageNotFound(e),hovering:e=>j.hovering(e),loadAppData:()=>j.loadAppData()};a.default=x;function w(){return j?j.staticQueryDb:{}}},ep7J:function(e,a,n){const t=n("dVj6")(9200,9203,9855,9875,9889,9934,9940,9962,9973,9978,9981,9989,10024,10060,10062,10071,10160,10175,11088,11093,126980,127183,127374,127489,127514,127535,127988,128064,128378,128420,128716,129008);t.addRange(8986,8987).addRange(9193,9196).addRange(9725,9726).addRange(9748,9749).addRange(9800,9811).addRange(9898,9899).addRange(9917,9918).addRange(9924,9925).addRange(9970,9971).addRange(9994,9995).addRange(10067,10069).addRange(10133,10135).addRange(11035,11036).addRange(127377,127386).addRange(127462,127487).addRange(127538,127542).addRange(127544,127546).addRange(127568,127569).addRange(127744,127776).addRange(127789,127797).addRange(127799,127868).addRange(127870,127891).addRange(127904,127946).addRange(127951,127955).addRange(127968,127984).addRange(127992,128062).addRange(128066,128252).addRange(128255,128317).addRange(128331,128334).addRange(128336,128359).addRange(128405,128406).addRange(128507,128591).addRange(128640,128709).addRange(128720,128722).addRange(128725,128727).addRange(128733,128735).addRange(128747,128748).addRange(128756,128764).addRange(128992,129003).addRange(129292,129338).addRange(129340,129349).addRange(129351,129535).addRange(129648,129652).addRange(129656,129660).addRange(129664,129670).addRange(129680,129708).addRange(129712,129722).addRange(129728,129733).addRange(129744,129753).addRange(129760,129767).addRange(129776,129782),e.exports=t},ewvW:function(e,a,n){var t=n("HYAF"),d=Object;e.exports=function(e){return d(t(e))}},ezlQ:function(e,a,n){const t=n("dVj6")(1471,1479,1648,1809,2045,2362,2364,2381,2433,2492,2509,2558,2620,2641,2677,2748,2765,2817,2876,2879,2893,2946,3008,3021,3072,3076,3132,3201,3260,3263,3270,3405,3457,3530,3542,3633,3761,3893,3895,3897,4038,4226,4237,4253,6086,6109,6159,6313,6450,6683,6742,6752,6754,6783,6964,6972,6978,7142,7149,7405,7412,8417,11647,42607,43010,43014,43019,43052,43263,43443,43493,43587,43596,43644,43696,43713,43766,44005,44008,44013,64286,66045,66272,68159,69633,69744,69826,70003,70095,70196,70206,70367,70464,70726,70750,70842,71229,71339,71341,71351,71998,72003,72160,72263,72767,73018,73031,73109,73111,94031,94180,121461,121476,123566);t.addRange(768,879).addRange(1155,1159).addRange(1425,1469).addRange(1473,1474).addRange(1476,1477).addRange(1552,1562).addRange(1611,1631).addRange(1750,1756).addRange(1759,1764).addRange(1767,1768).addRange(1770,1773).addRange(1840,1866).addRange(1958,1968).addRange(2027,2035).addRange(2070,2073).addRange(2075,2083).addRange(2085,2087).addRange(2089,2093).addRange(2137,2139).addRange(2200,2207).addRange(2250,2273).addRange(2275,2306).addRange(2369,2376).addRange(2385,2391).addRange(2402,2403).addRange(2497,2500).addRange(2530,2531).addRange(2561,2562).addRange(2625,2626).addRange(2631,2632).addRange(2635,2637).addRange(2672,2673).addRange(2689,2690).addRange(2753,2757).addRange(2759,2760).addRange(2786,2787).addRange(2810,2815).addRange(2881,2884).addRange(2901,2902).addRange(2914,2915).addRange(3134,3136).addRange(3142,3144).addRange(3146,3149).addRange(3157,3158).addRange(3170,3171).addRange(3276,3277).addRange(3298,3299).addRange(3328,3329).addRange(3387,3388).addRange(3393,3396).addRange(3426,3427),t.addRange(3538,3540).addRange(3636,3642).addRange(3655,3662).addRange(3764,3772).addRange(3784,3789).addRange(3864,3865).addRange(3953,3966).addRange(3968,3972).addRange(3974,3975).addRange(3981,3991).addRange(3993,4028).addRange(4141,4144).addRange(4146,4151).addRange(4153,4154).addRange(4157,4158).addRange(4184,4185).addRange(4190,4192).addRange(4209,4212).addRange(4229,4230).addRange(4957,4959).addRange(5906,5908).addRange(5938,5939).addRange(5970,5971).addRange(6002,6003).addRange(6068,6069).addRange(6071,6077).addRange(6089,6099).addRange(6155,6157).addRange(6277,6278).addRange(6432,6434).addRange(6439,6440).addRange(6457,6459).addRange(6679,6680).addRange(6744,6750).addRange(6757,6764).addRange(6771,6780).addRange(6832,6845).addRange(6847,6862).addRange(6912,6915).addRange(6966,6970).addRange(7019,7027).addRange(7040,7041).addRange(7074,7077).addRange(7080,7081).addRange(7083,7085).addRange(7144,7145).addRange(7151,7153).addRange(7212,7219).addRange(7222,7223).addRange(7376,7378).addRange(7380,7392),t.addRange(7394,7400).addRange(7416,7417).addRange(7616,7679).addRange(8400,8412).addRange(8421,8432).addRange(11503,11505).addRange(11744,11775).addRange(12330,12333).addRange(12441,12442).addRange(42612,42621).addRange(42654,42655).addRange(42736,42737).addRange(43045,43046).addRange(43204,43205).addRange(43232,43249).addRange(43302,43309).addRange(43335,43345).addRange(43392,43394).addRange(43446,43449).addRange(43452,43453).addRange(43561,43566).addRange(43569,43570).addRange(43573,43574).addRange(43698,43700).addRange(43703,43704).addRange(43710,43711).addRange(43756,43757).addRange(65024,65039).addRange(65056,65071).addRange(66422,66426).addRange(68097,68099).addRange(68101,68102).addRange(68108,68111).addRange(68152,68154).addRange(68325,68326).addRange(68900,68903).addRange(69291,69292).addRange(69446,69456).addRange(69506,69509).addRange(69688,69702).addRange(69747,69748).addRange(69759,69761).addRange(69811,69814).addRange(69817,69818).addRange(69888,69890).addRange(69927,69931).addRange(69933,69940).addRange(70016,70017).addRange(70070,70078).addRange(70089,70092).addRange(70191,70193),t.addRange(70198,70199).addRange(70371,70378).addRange(70400,70401).addRange(70459,70460).addRange(70502,70508).addRange(70512,70516).addRange(70712,70719).addRange(70722,70724).addRange(70835,70840).addRange(70847,70848).addRange(70850,70851).addRange(71090,71093).addRange(71100,71101).addRange(71103,71104).addRange(71132,71133).addRange(71219,71226).addRange(71231,71232).addRange(71344,71349).addRange(71453,71455).addRange(71458,71461).addRange(71463,71467).addRange(71727,71735).addRange(71737,71738).addRange(71995,71996).addRange(72148,72151).addRange(72154,72155).addRange(72193,72202).addRange(72243,72248).addRange(72251,72254).addRange(72273,72278).addRange(72281,72283).addRange(72330,72342).addRange(72344,72345).addRange(72752,72758).addRange(72760,72765).addRange(72850,72871).addRange(72874,72880).addRange(72882,72883).addRange(72885,72886).addRange(73009,73014).addRange(73020,73021).addRange(73023,73029).addRange(73104,73105).addRange(73459,73460).addRange(92912,92916).addRange(92976,92982).addRange(94095,94098).addRange(113821,113822).addRange(118528,118573).addRange(118576,118598).addRange(119143,119145),t.addRange(119163,119170).addRange(119173,119179).addRange(119210,119213).addRange(119362,119364).addRange(121344,121398).addRange(121403,121452).addRange(121499,121503).addRange(121505,121519).addRange(122880,122886).addRange(122888,122904).addRange(122907,122913).addRange(122915,122916).addRange(122918,122922).addRange(123184,123190).addRange(123628,123631).addRange(125136,125142).addRange(125252,125258).addRange(917760,917999),e.exports=t},fGT3:function(e,a,n){var t=n("4kuk"),d=n("Xi7e"),r=n("ebwN");e.exports=function(){this.size=0,this.__data__={hash:new t,map:new(r||d),string:new t}}},"fR/l":function(e,a,n){var t=n("CH3K"),d=n("Z0cm");e.exports=function(e,a,n){var r=a(e);return d(e)?r:t(r,n(e))}},fdhu:function(e,a,n){const t=n("dVj6")();t.addRange(5760,5788),e.exports=t},fjIA:function(e,a,n){const t=n("dVj6")(2482,2519);t.addRange(2432,2435).addRange(2437,2444).addRange(2447,2448).addRange(2451,2472).addRange(2474,2480).addRange(2486,2489).addRange(2492,2500).addRange(2503,2504).addRange(2507,2510).addRange(2524,2525).addRange(2527,2531).addRange(2534,2558),e.exports=t},"flL/":function(e,a,n){"use strict";n.r(a),n.d(a,"wrapRootElement",(function(){return E}));var t=n("rePB"),d=n("q1tI"),r=n.n(d),o=n("7ljp");const i=Object(d.createContext)({}),s=e=>{const a=Object(d.useContext)(i);return e||a};void 0!==s&&s&&s===Object(s)&&Object.isExtensible(s)&&!Object.prototype.hasOwnProperty.call(s,"__filemeta")&&Object.defineProperty(s,"__filemeta",{configurable:!0,value:{name:"useMDXScope",filename:"node_modules/gatsby-plugin-mdx/context.js"}}),void 0!==s&&s&&s===Object(s)&&Object.isExtensible(s)&&!Object.prototype.hasOwnProperty.call(s,"__filemeta")&&Object.defineProperty(s,"__filemeta",{configurable:!0,value:{name:"useMDXScope",filename:"node_modules/gatsby-plugin-mdx/context.js"}});const g=e=>{let{__mdxScope:a,children:n}=e;return r.a.createElement(i.Provider,{value:a},n)};void 0!==g&&g&&g===Object(g)&&Object.isExtensible(g)&&!Object.prototype.hasOwnProperty.call(g,"__filemeta")&&Object.defineProperty(g,"__filemeta",{configurable:!0,value:{name:"MDXScopeProvider",filename:"node_modules/gatsby-plugin-mdx/context.js"}}),void 0!==g&&g&&g===Object(g)&&Object.isExtensible(g)&&!Object.prototype.hasOwnProperty.call(g,"__filemeta")&&Object.defineProperty(g,"__filemeta",{configurable:!0,value:{name:"MDXScopeProvider",filename:"node_modules/gatsby-plugin-mdx/context.js"}});var c=n("gXpC"),u=n("CKVf").default,l=n("9Ubl").default,R=n("JTKy").default,p=n("PmL6").default;const f=Object.assign({},u,l,R,p);var h=f;void 0!==f&&f&&f===Object(f)&&Object.isExtensible(f)&&!Object.prototype.hasOwnProperty.call(f,"__filemeta")&&Object.defineProperty(f,"__filemeta",{configurable:!0,value:{name:"__DOCZ_DUMMY_EXPORT_DEFAULT",filename:"node_modules/gatsby-plugin-mdx/loaders/mdx-scopes.js"}}),void 0!==f&&f&&f===Object(f)&&Object.isExtensible(f)&&!Object.prototype.hasOwnProperty.call(f,"__filemeta")&&Object.defineProperty(f,"__filemeta",{configurable:!0,value:{name:"__DOCZ_DUMMY_EXPORT_DEFAULT",filename:"node_modules/gatsby-plugin-mdx/loaders/mdx-scopes.js"}}),void 0!==f&&f&&f===Object(f)&&Object.isExtensible(f)&&!Object.prototype.hasOwnProperty.call(f,"__filemeta")&&Object.defineProperty(f,"__filemeta",{configurable:!0,value:{name:"__DOCZ_DUMMY_EXPORT_DEFAULT",filename:"node_modules/gatsby-plugin-mdx/loaders/mdx-scopes.js"}});var m=n("qKvR");function b(e,a){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);a&&(t=t.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),n.push.apply(n,t)}return n}function y(e){for(var a=1;afunction(a){const{Component:n}=e.find(e=>{let{guard:n}=e;return!n||n(a)});return Object(m.d)(n,a)};c.plugins.forEach(e=>{let{guards:a={},components:n}=e;Object.entries(n).forEach(e=>{let[n,t]=e;v[n]?v.push({guard:a[n],Component:t}):v[n]=[{guard:a[n],Component:t}]})});const O=Object.entries(v).map(e=>{let[a,n]=e;return{[a]:j(n.concat({guard:void 0,Component:a}))}}).reduce((e,a)=>y(y({},e),a),{}),_=Object(o.c)(e=>{let{components:a,children:n}=e;return Object(m.d)(g,{__mdxScope:h},Object(m.d)(o.a,{components:y(y({},a),O)},n))}),x=e=>{let{element:a}=e;return Object(m.d)(_,null,a)};var w=x;void 0!==x&&x&&x===Object(x)&&Object.isExtensible(x)&&!Object.prototype.hasOwnProperty.call(x,"__filemeta")&&Object.defineProperty(x,"__filemeta",{configurable:!0,value:{name:"WrapRootElement",filename:"node_modules/gatsby-plugin-mdx/wrap-root-element.js"}}),void 0!==x&&x&&x===Object(x)&&Object.isExtensible(x)&&!Object.prototype.hasOwnProperty.call(x,"__filemeta")&&Object.defineProperty(x,"__filemeta",{configurable:!0,value:{name:"WrapRootElement",filename:"node_modules/gatsby-plugin-mdx/wrap-root-element.js"}});const E=w;void 0!==E&&E&&E===Object(E)&&Object.isExtensible(E)&&!Object.prototype.hasOwnProperty.call(E,"__filemeta")&&Object.defineProperty(E,"__filemeta",{configurable:!0,value:{name:"wrapRootElement",filename:"node_modules/gatsby-plugin-mdx/gatsby-browser.js"}}),void 0!==E&&E&&E===Object(E)&&Object.isExtensible(E)&&!Object.prototype.hasOwnProperty.call(E,"__filemeta")&&Object.defineProperty(E,"__filemeta",{configurable:!0,value:{name:"wrapRootElement",filename:"node_modules/gatsby-plugin-mdx/gatsby-browser.js"}})},fmRc:function(e,a,n){var t=n("Xi7e"),d=n("77Zs"),r=n("L8xA"),o=n("gCq4"),i=n("VaNO"),s=n("0Cz8");function g(e){var a=this.__data__=new t(e);this.size=a.size}g.prototype.clear=d,g.prototype.delete=r,g.prototype.get=o,g.prototype.has=i,g.prototype.set=s,e.exports=g},fo6e:function(e,a){var n=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;e.exports=function(e){return n.test(e)}},ftKO:function(e,a){e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},"ftu+":function(e,a,n){e.exports=n("aCJ4")},"g6v/":function(e,a,n){var t=n("0Dky");e.exports=!t((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},gCq4:function(e,a){e.exports=function(e){return this.__data__.get(e)}},gFfm:function(e,a){e.exports=function(e,a){for(var n=-1,t=null==e?0:e.length;++n{try{const e=Object(h.useStaticQuery)("1635659820");return JSON.parse(e.doczDb.db)}catch(e){return console.error(e),console.error("Error when parsing docz database"),{}}};void 0!==m&&m&&m===Object(m)&&Object.isExtensible(m)&&!Object.prototype.hasOwnProperty.call(m,"__filemeta")&&Object.defineProperty(m,"__filemeta",{configurable:!0,value:{name:"useDbQuery",filename:"node_modules/gatsby-theme-docz/src/hooks/useDbQuery.js"}}),void 0!==m&&m&&m===Object(m)&&Object.isExtensible(m)&&!Object.prototype.hasOwnProperty.call(m,"__filemeta")&&Object.defineProperty(m,"__filemeta",{configurable:!0,value:{name:"useDbQuery",filename:"node_modules/gatsby-theme-docz/src/hooks/useDbQuery.js"}});var b=n("qKvR");const y=e=>{let{children:a}=e;return Object(b.d)(R.a.Fragment,null,a)};var v=y;void 0!==y&&y&&y===Object(y)&&Object.isExtensible(y)&&!Object.prototype.hasOwnProperty.call(y,"__filemeta")&&Object.defineProperty(y,"__filemeta",{configurable:!0,value:{name:"Wrapper",filename:"node_modules/gatsby-theme-docz/src/wrapper.js"}}),void 0!==y&&y&&y===Object(y)&&Object.isExtensible(y)&&!Object.prototype.hasOwnProperty.call(y,"__filemeta")&&Object.defineProperty(y,"__filemeta",{configurable:!0,value:{name:"Wrapper",filename:"node_modules/gatsby-theme-docz/src/wrapper.js"}});var j=n("txSG"),O=n("hxO4"),_=n.n(O),x=n("jTvw"),w=n.n(x),E=n("ki+i"),k=n.n(E),S=n("Xhwf"),D=n.n(S),A=n("YVoz"),C=n.n(A);function P(e,a,n){return a in e?Object.defineProperty(e,a,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[a]=n,e}function F(e,a){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);a&&(t=t.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),n.push.apply(n,t)}return n}function T(e){for(var a=1;a"5px solid "+e.colors.blockquote.border,color:"blockquote.color",fontStyle:"italic","> p":{m:0}},code:{fontFamily:"monospace"},inlineCode:{fontFamily:"monospace"},pre:{my:4,p:3,variant:"prism",textAlign:"left",fontFamily:"monospace",borderRadius:"radius"},table:{width:"100%",my:4,borderCollapse:"separate",borderSpacing:0,[["th","td"]]:{textAlign:"left",py:"4px",pr:"4px",pl:0,borderColor:"muted",borderBottomStyle:"solid"}},th:{verticalAlign:"bottom",borderBottomWidth:"2px"},td:{verticalAlign:"top",borderBottomWidth:"1px"},hr:{border:0,borderBottom:e=>"1px solid "+e.colors.border}};var Re=le;function pe(e,a){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);a&&(t=t.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),n.push.apply(n,t)}return n}function fe(e){for(var a=1;a0&&void 0!==arguments[0]?arguments[0]:{},a=T({},N,{},e);a.baseFontSize=I(a.baseFontSize),a.rhythmUnit="px";var n=k()(a),t={};return n.options=a,t.space=M(n,a),t.fonts=U(0,a),t.fontSizes=G(0,a),t.fontWeights=W(0,a),t.lineHeights=H(0,a),T({},t,{styles:B,typography:n})}(w.a),me=_()(he,{initialColorMode:"light",showLiveError:!0,showLivePreview:!0,showPlaygroundEditor:!0,showDarkModeSwitch:!0,showMarkdownEditButton:!0,useScopingInPlayground:!1,colors:fe(fe({},ge),{},{modes:{dark:ce}}),fonts:{monospace:"Inconsolata"},fontSizes:[12,14,16,20,24,32,48,64],fontWeights:{body:400,heading:700,bold:700},lineHeights:{body:1.5,heading:1.125},letterSpacings:{body:"normal",caps:"0.2em"},space:[0,4,8,16,32,48,64,80,100],radii:{square:0,radius:4,rounded:10},styles:Re,prism:ue});var be=me;void 0!==me&&me&&me===Object(me)&&Object.isExtensible(me)&&!Object.prototype.hasOwnProperty.call(me,"__filemeta")&&Object.defineProperty(me,"__filemeta",{configurable:!0,value:{name:"__DOCZ_DUMMY_EXPORT_DEFAULT",filename:"node_modules/gatsby-theme-docz/src/theme/index.js"}}),void 0!==me&&me&&me===Object(me)&&Object.isExtensible(me)&&!Object.prototype.hasOwnProperty.call(me,"__filemeta")&&Object.defineProperty(me,"__filemeta",{configurable:!0,value:{name:"__DOCZ_DUMMY_EXPORT_DEFAULT",filename:"node_modules/gatsby-theme-docz/src/theme/index.js"}});const ye=e=>{const a=a=>a.id?Object(j.h)(e,a,Object(j.h)("a",{href:"#"+a.id,sx:{color:"inherit",textDecoration:"none",":hover":{textDecoration:"underline"}}},a.children)):Object(j.h)(e,a);return a.displayName=e,a},ve=ye("h2");void 0!==ve&&ve&&ve===Object(ve)&&Object.isExtensible(ve)&&!Object.prototype.hasOwnProperty.call(ve,"__filemeta")&&Object.defineProperty(ve,"__filemeta",{configurable:!0,value:{name:"h2",filename:"node_modules/gatsby-theme-docz/src/components/Headings/index.js"}}),void 0!==ve&&ve&&ve===Object(ve)&&Object.isExtensible(ve)&&!Object.prototype.hasOwnProperty.call(ve,"__filemeta")&&Object.defineProperty(ve,"__filemeta",{configurable:!0,value:{name:"h2",filename:"node_modules/gatsby-theme-docz/src/components/Headings/index.js"}});const je=ye("h3");void 0!==je&&je&&je===Object(je)&&Object.isExtensible(je)&&!Object.prototype.hasOwnProperty.call(je,"__filemeta")&&Object.defineProperty(je,"__filemeta",{configurable:!0,value:{name:"h3",filename:"node_modules/gatsby-theme-docz/src/components/Headings/index.js"}}),void 0!==je&&je&&je===Object(je)&&Object.isExtensible(je)&&!Object.prototype.hasOwnProperty.call(je,"__filemeta")&&Object.defineProperty(je,"__filemeta",{configurable:!0,value:{name:"h3",filename:"node_modules/gatsby-theme-docz/src/components/Headings/index.js"}});const Oe=ye("h4");void 0!==Oe&&Oe&&Oe===Object(Oe)&&Object.isExtensible(Oe)&&!Object.prototype.hasOwnProperty.call(Oe,"__filemeta")&&Object.defineProperty(Oe,"__filemeta",{configurable:!0,value:{name:"h4",filename:"node_modules/gatsby-theme-docz/src/components/Headings/index.js"}}),void 0!==Oe&&Oe&&Oe===Object(Oe)&&Object.isExtensible(Oe)&&!Object.prototype.hasOwnProperty.call(Oe,"__filemeta")&&Object.defineProperty(Oe,"__filemeta",{configurable:!0,value:{name:"h4",filename:"node_modules/gatsby-theme-docz/src/components/Headings/index.js"}});const _e=ye("h5");void 0!==_e&&_e&&_e===Object(_e)&&Object.isExtensible(_e)&&!Object.prototype.hasOwnProperty.call(_e,"__filemeta")&&Object.defineProperty(_e,"__filemeta",{configurable:!0,value:{name:"h5",filename:"node_modules/gatsby-theme-docz/src/components/Headings/index.js"}}),void 0!==_e&&_e&&_e===Object(_e)&&Object.isExtensible(_e)&&!Object.prototype.hasOwnProperty.call(_e,"__filemeta")&&Object.defineProperty(_e,"__filemeta",{configurable:!0,value:{name:"h5",filename:"node_modules/gatsby-theme-docz/src/components/Headings/index.js"}});const xe=ye("h6");void 0!==xe&&xe&&xe===Object(xe)&&Object.isExtensible(xe)&&!Object.prototype.hasOwnProperty.call(xe,"__filemeta")&&Object.defineProperty(xe,"__filemeta",{configurable:!0,value:{name:"h6",filename:"node_modules/gatsby-theme-docz/src/components/Headings/index.js"}}),void 0!==xe&&xe&&xe===Object(xe)&&Object.isExtensible(xe)&&!Object.prototype.hasOwnProperty.call(xe,"__filemeta")&&Object.defineProperty(xe,"__filemeta",{configurable:!0,value:{name:"h6",filename:"node_modules/gatsby-theme-docz/src/components/Headings/index.js"}});var we=function(){function e(e){var a=this;this._insertTag=function(e){var n;n=0===a.tags.length?a.insertionPoint?a.insertionPoint.nextSibling:a.prepend?a.container.firstChild:a.before:a.tags[a.tags.length-1].nextSibling,a.container.insertBefore(e,n),a.tags.push(e)},this.isSpeedy=void 0===e.speedy||e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var a=e.prototype;return a.hydrate=function(e){e.forEach(this._insertTag)},a.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(function(e){var a=document.createElement("style");return a.setAttribute("data-emotion",e.key),void 0!==e.nonce&&a.setAttribute("nonce",e.nonce),a.appendChild(document.createTextNode("")),a.setAttribute("data-s",""),a}(this));var a=this.tags[this.tags.length-1];if(this.isSpeedy){var n=function(e){if(e.sheet)return e.sheet;for(var a=0;a2||ra(Xe)>3?"":" "}function ca(e,a){for(;--a&&aa()&&!(Xe<48||Xe>102||Xe>57&&Xe<65||Xe>70&&Xe<97););return da(e,ta()+(a<6&&32==na()&&32==aa()))}function ua(e,a){for(;aa()&&e+Xe!==57&&(e+Xe!==84||47!==na()););return"/*"+da(a,$e-1)+"*"+Te(47===e?e:aa())}function la(e){for(;!ra(na());)aa();return da(e,$e)}function Ra(e){return ia(function e(a,n,t,d,r,o,i,s,g){var c=0,u=0,l=i,R=0,p=0,f=0,h=1,m=1,b=1,y=0,v="",j=r,O=o,_=d,x=v;for(;m;)switch(f=y,y=aa()){case 40:if(108!=f&&58==qe(x,l-1)){-1!=ze(x+=Me(sa(y),"&","&\f"),"&\f")&&(b=-1);break}case 34:case 39:case 91:x+=sa(y);break;case 9:case 10:case 13:case 32:x+=ga(f);break;case 92:x+=ca(ta()-1,7);continue;case 47:switch(na()){case 42:case 47:He(fa(ua(aa(),ta()),n,t),g);break;default:x+="/"}break;case 123*h:s[c++]=Ue(x)*b;case 125*h:case 59:case 0:switch(y){case 0:case 125:m=0;case 59+u:-1==b&&(x=Me(x,/\f/g,"")),p>0&&Ue(x)-l&&He(p>32?ha(x+";",d,t,l-1):ha(Me(x," ","")+";",d,t,l-2),g);break;case 59:x+=";";default:if(He(_=pa(x,n,t,c,u,r,s,v,j=[],O=[],l),o),123===y)if(0===u)e(x,n,_,_,j,o,l,s,O);else switch(99===R&&110===qe(x,3)?100:R){case 100:case 108:case 109:case 115:e(a,_,_,d&&He(pa(a,_,_,0,0,r,s,v,r,j=[],l),O),r,O,l,s,d?j:O);break;default:e(x,_,_,_,[""],O,0,s,O)}}c=u=p=0,h=b=1,v=x="",l=i;break;case 58:l=1+Ue(x),p=f;default:if(h<1)if(123==y)--h;else if(125==y&&0==h++&&125==(Xe=$e>0?qe(Qe,--$e):0,Ye--,10===Xe&&(Ye=1,Ke--),Xe))continue;switch(x+=Te(y),y*h){case 38:b=u>0?1:(x+="\f",-1);break;case 44:s[c++]=(Ue(x)-1)*b,b=1;break;case 64:45===na()&&(x+=sa(aa())),R=na(),u=l=Ue(v=x+=la(ta())),y++;break;case 45:45===f&&2==Ue(x)&&(h=0)}}return o}("",null,null,null,[""],e=oa(e),0,[0],e))}function pa(e,a,n,t,d,r,o,i,s,g,c){for(var u=d-1,l=0===d?r:[""],R=Ge(l),p=0,f=0,h=0;p0?l[m]+" "+b:Me(b,/&\f/g,l[m])))&&(s[h++]=y);return Je(e,a,n,0===d?Ae:i,s,g,c)}function fa(e,a,n){return Je(e,a,n,De,Te(Xe),Ve(e,2,-2),0)}function ha(e,a,n,t){return Je(e,a,n,Ce,Ve(e,0,t),Ve(e,t+1,-1),t)}function ma(e,a){for(var n="",t=Ge(e),d=0;d-1&&!e.return)switch(e.type){case Ce:e.return=function e(a,n){switch(Be(a,n)){case 5103:return Se+"print-"+a+a;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return Se+a+a;case 5349:case 4246:case 4810:case 6968:case 2756:return Se+a+ke+a+Ee+a+a;case 6828:case 4268:return Se+a+Ee+a+a;case 6165:return Se+a+Ee+"flex-"+a+a;case 5187:return Se+a+Me(a,/(\w+).+(:[^]+)/,Se+"box-$1$2"+Ee+"flex-$1$2")+a;case 5443:return Se+a+Ee+"flex-item-"+Me(a,/flex-|-self/,"")+a;case 4675:return Se+a+Ee+"flex-line-pack"+Me(a,/align-content|flex-|-self/,"")+a;case 5548:return Se+a+Ee+Me(a,"shrink","negative")+a;case 5292:return Se+a+Ee+Me(a,"basis","preferred-size")+a;case 6060:return Se+"box-"+Me(a,"-grow","")+Se+a+Ee+Me(a,"grow","positive")+a;case 4554:return Se+Me(a,/([^-])(transform)/g,"$1"+Se+"$2")+a;case 6187:return Me(Me(Me(a,/(zoom-|grab)/,Se+"$1"),/(image-set)/,Se+"$1"),a,"")+a;case 5495:case 3959:return Me(a,/(image-set\([^]*)/,Se+"$1$`$1");case 4968:return Me(Me(a,/(.+:)(flex-)?(.*)/,Se+"box-pack:$3"+Ee+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+Se+a+a;case 4095:case 3583:case 4068:case 2532:return Me(a,/(.+)-inline(.+)/,Se+"$1$2")+a;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(Ue(a)-1-n>6)switch(qe(a,n+1)){case 109:if(45!==qe(a,n+4))break;case 102:return Me(a,/(.+:)(.+)-([^]+)/,"$1"+Se+"$2-$3$1"+ke+(108==qe(a,n+3)?"$3":"$2-$3"))+a;case 115:return~ze(a,"stretch")?e(Me(a,"stretch","fill-available"),n)+a:a}break;case 4949:if(115!==qe(a,n+1))break;case 6444:switch(qe(a,Ue(a)-3-(~ze(a,"!important")&&10))){case 107:return Me(a,":",":"+Se)+a;case 101:return Me(a,/(.+:)([^;!]+)(;|!.+)?/,"$1"+Se+(45===qe(a,14)?"inline-":"")+"box$3$1"+Se+"$2$3$1"+Ee+"$2box$3")+a}break;case 5936:switch(qe(a,n+11)){case 114:return Se+a+Ee+Me(a,/[svh]\w+-[tblr]{2}/,"tb")+a;case 108:return Se+a+Ee+Me(a,/[svh]\w+-[tblr]{2}/,"tb-rl")+a;case 45:return Se+a+Ee+Me(a,/[svh]\w+-[tblr]{2}/,"lr")+a}return Se+a+Ee+a+a}return a}(e.value,e.length);break;case Pe:return ma([ea(e,{value:Me(e.value,"@","@"+Se)})],t);case Ae:if(e.length)return We(e.props,(function(a){switch(Ie(a,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return ma([ea(e,{props:[Me(a,/:(read-\w+)/,":-moz-$1")]})],t);case"::placeholder":return ma([ea(e,{props:[Me(a,/:(plac\w+)/,":"+Se+"input-$1")]}),ea(e,{props:[Me(a,/:(plac\w+)/,":-moz-$1")]}),ea(e,{props:[Me(a,/:(plac\w+)/,Ee+"input-$1")]})],t)}return""}))}}],ka=function(e){var a=e.key;if("css"===a){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,(function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))}))}var t=e.stylisPlugins||Ea;var d,r,o={},i=[];d=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+a+' "]'),(function(e){for(var a=e.getAttribute("data-emotion").split(" "),n=1;n=4;++t,d-=4)a=1540483477*(65535&(a=255&e.charCodeAt(t)|(255&e.charCodeAt(++t))<<8|(255&e.charCodeAt(++t))<<16|(255&e.charCodeAt(++t))<<24))+(59797*(a>>>16)<<16),n=1540483477*(65535&(a^=a>>>24))+(59797*(a>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(d){case 3:n^=(255&e.charCodeAt(t+2))<<16;case 2:n^=(255&e.charCodeAt(t+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(t)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)}(d)+s,styles:d,next:Ia}},qa=!!l.useInsertionEffect&&l.useInsertionEffect,Va=qa||l.useLayoutEffect,Ua=l.createContext("undefined"!=typeof HTMLElement?ka({key:"css"}):null);Ua.Provider;var Ga=function(e){return Object(l.forwardRef)((function(a,n){var t=Object(l.useContext)(Ua);return e(a,t,n)}))};var Ha=l.createContext({});n("pVnL");var Wa=Ga((function(e,a){var n=e.styles,t=za([n],void 0,l.useContext(Ha)),d=l.useRef();return Va((function(){var e=a.key+"-global",n=new a.sheet.constructor({key:e,nonce:a.sheet.nonce,container:a.sheet.container,speedy:a.sheet.isSpeedy}),r=!1,o=document.querySelector('style[data-emotion="'+e+" "+t.name+'"]');return a.sheet.tags.length&&(n.before=a.sheet.tags[0]),null!==o&&(r=!0,o.setAttribute("data-emotion",e),n.hydrate([o])),d.current=[n,r],function(){n.flush()}}),[a]),Va((function(){var e=d.current,n=e[0];if(e[1])e[1]=!1;else{if(void 0!==t.next&&Da(a,t.next,!0),n.tags.length){var r=n.tags[n.tags.length-1].nextElementSibling;n.before=r,n.flush()}a.insert("",t,n,!1)}}),[a,t.name]),null}));var Ka={body:{margin:0,padding:0},".icon-link":{display:"none"},".with-overlay":{overflow:"hidden"}};"undefined"!=typeof body&&body&&body===Object(body)&&Object.isExtensible(body)&&!Object.prototype.hasOwnProperty.call(body,"__filemeta")&&Object.defineProperty(body,"__filemeta",{configurable:!0,value:{name:"body",filename:"node_modules/gatsby-theme-docz/src/theme/global.js"}}),"undefined"!=typeof body&&body&&body===Object(body)&&Object.isExtensible(body)&&!Object.prototype.hasOwnProperty.call(body,"__filemeta")&&Object.defineProperty(body,"__filemeta",{configurable:!0,value:{name:"body",filename:"node_modules/gatsby-theme-docz/src/theme/global.js"}});const Ya={display:"flex",alignItems:"center",justifyContent:"center"};void 0!==Ya&&Ya&&Ya===Object(Ya)&&Object.isExtensible(Ya)&&!Object.prototype.hasOwnProperty.call(Ya,"__filemeta")&&Object.defineProperty(Ya,"__filemeta",{configurable:!0,value:{name:"centerAlign",filename:"node_modules/gatsby-theme-docz/src/utils/mixins.js"}}),void 0!==Ya&&Ya&&Ya===Object(Ya)&&Object.isExtensible(Ya)&&!Object.prototype.hasOwnProperty.call(Ya,"__filemeta")&&Object.defineProperty(Ya,"__filemeta",{configurable:!0,value:{name:"centerAlign",filename:"node_modules/gatsby-theme-docz/src/utils/mixins.js"}});const Za={p:0,outline:"none",background:"transparent",border:"none",":hover":{cursor:"pointer"}};void 0!==Za&&Za&&Za===Object(Za)&&Object.isExtensible(Za)&&!Object.prototype.hasOwnProperty.call(Za,"__filemeta")&&Object.defineProperty(Za,"__filemeta",{configurable:!0,value:{name:"ghostButton",filename:"node_modules/gatsby-theme-docz/src/utils/mixins.js"}}),void 0!==Za&&Za&&Za===Object(Za)&&Object.isExtensible(Za)&&!Object.prototype.hasOwnProperty.call(Za,"__filemeta")&&Object.defineProperty(Za,"__filemeta",{configurable:!0,value:{name:"ghostButton",filename:"node_modules/gatsby-theme-docz/src/utils/mixins.js"}});const $a=e=>"@media screen and (max-width: "+(e/16+"em)"),Xa={mobile:630,tablet:920,desktop:1120};void 0!==Xa&&Xa&&Xa===Object(Xa)&&Object.isExtensible(Xa)&&!Object.prototype.hasOwnProperty.call(Xa,"__filemeta")&&Object.defineProperty(Xa,"__filemeta",{configurable:!0,value:{name:"breakpoints",filename:"node_modules/gatsby-theme-docz/src/theme/breakpoints.js"}}),void 0!==Xa&&Xa&&Xa===Object(Xa)&&Object.isExtensible(Xa)&&!Object.prototype.hasOwnProperty.call(Xa,"__filemeta")&&Object.defineProperty(Xa,"__filemeta",{configurable:!0,value:{name:"breakpoints",filename:"node_modules/gatsby-theme-docz/src/theme/breakpoints.js"}});const Qa={mobile:$a(Xa.mobile),tablet:$a(Xa.tablet),desktop:$a(Xa.desktop)};function Ja(e,a){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);a&&(t=t.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),n.push.apply(n,t)}return n}function en(e){for(var a=1;a"1px solid "+e.colors.border};void 0!==an&&an&&an===Object(an)&&Object.isExtensible(an)&&!Object.prototype.hasOwnProperty.call(an,"__filemeta")&&Object.defineProperty(an,"__filemeta",{configurable:!0,value:{name:"wrapper",filename:"node_modules/gatsby-theme-docz/src/components/Header/styles.js"}}),void 0!==an&&an&&an===Object(an)&&Object.isExtensible(an)&&!Object.prototype.hasOwnProperty.call(an,"__filemeta")&&Object.defineProperty(an,"__filemeta",{configurable:!0,value:{name:"wrapper",filename:"node_modules/gatsby-theme-docz/src/components/Header/styles.js"}});const nn=en(en({},Ya),{},{px:4,position:"relative",justifyContent:"space-between",height:80});void 0!==nn&&nn&&nn===Object(nn)&&Object.isExtensible(nn)&&!Object.prototype.hasOwnProperty.call(nn,"__filemeta")&&Object.defineProperty(nn,"__filemeta",{configurable:!0,value:{name:"innerContainer",filename:"node_modules/gatsby-theme-docz/src/components/Header/styles.js"}}),void 0!==nn&&nn&&nn===Object(nn)&&Object.isExtensible(nn)&&!Object.prototype.hasOwnProperty.call(nn,"__filemeta")&&Object.defineProperty(nn,"__filemeta",{configurable:!0,value:{name:"innerContainer",filename:"node_modules/gatsby-theme-docz/src/components/Header/styles.js"}});const tn={display:"none",position:"absolute",top:"calc(100% + 15px)",left:30,[Qa.tablet]:{display:"block"}};void 0!==tn&&tn&&tn===Object(tn)&&Object.isExtensible(tn)&&!Object.prototype.hasOwnProperty.call(tn,"__filemeta")&&Object.defineProperty(tn,"__filemeta",{configurable:!0,value:{name:"menuIcon",filename:"node_modules/gatsby-theme-docz/src/components/Header/styles.js"}}),void 0!==tn&&tn&&tn===Object(tn)&&Object.isExtensible(tn)&&!Object.prototype.hasOwnProperty.call(tn,"__filemeta")&&Object.defineProperty(tn,"__filemeta",{configurable:!0,value:{name:"menuIcon",filename:"node_modules/gatsby-theme-docz/src/components/Header/styles.js"}});const dn=en(en({},Za),{},{color:"header.text",opacity:.5,cursor:"pointer"});void 0!==dn&&dn&&dn===Object(dn)&&Object.isExtensible(dn)&&!Object.prototype.hasOwnProperty.call(dn,"__filemeta")&&Object.defineProperty(dn,"__filemeta",{configurable:!0,value:{name:"menuButton",filename:"node_modules/gatsby-theme-docz/src/components/Header/styles.js"}}),void 0!==dn&&dn&&dn===Object(dn)&&Object.isExtensible(dn)&&!Object.prototype.hasOwnProperty.call(dn,"__filemeta")&&Object.defineProperty(dn,"__filemeta",{configurable:!0,value:{name:"menuButton",filename:"node_modules/gatsby-theme-docz/src/components/Header/styles.js"}});const rn=en(en({},Ya),{},{outline:"none",p:"12px",border:"none",borderRadius:9999,bg:"header.button.bg",color:"header.button.color",fontSize:0,fontWeight:600,cursor:"pointer"});void 0!==rn&&rn&&rn===Object(rn)&&Object.isExtensible(rn)&&!Object.prototype.hasOwnProperty.call(rn,"__filemeta")&&Object.defineProperty(rn,"__filemeta",{configurable:!0,value:{name:"headerButton",filename:"node_modules/gatsby-theme-docz/src/components/Header/styles.js"}}),void 0!==rn&&rn&&rn===Object(rn)&&Object.isExtensible(rn)&&!Object.prototype.hasOwnProperty.call(rn,"__filemeta")&&Object.defineProperty(rn,"__filemeta",{configurable:!0,value:{name:"headerButton",filename:"node_modules/gatsby-theme-docz/src/components/Header/styles.js"}});const on=en(en({},Ya),{},{position:"absolute",bottom:-40,right:30,bg:"transparent",color:"muted",fontSize:1,textDecoration:"none",borderRadius:"radius"});function sn(){return(sn=Object.assign||function(e){for(var a=1;a=0||(d[n]=e[n]);return d}(e,a);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(d[n]=e[n])}return d}void 0!==on&&on&&on===Object(on)&&Object.isExtensible(on)&&!Object.prototype.hasOwnProperty.call(on,"__filemeta")&&Object.defineProperty(on,"__filemeta",{configurable:!0,value:{name:"editButton",filename:"node_modules/gatsby-theme-docz/src/components/Header/styles.js"}}),void 0!==on&&on&&on===Object(on)&&Object.isExtensible(on)&&!Object.prototype.hasOwnProperty.call(on,"__filemeta")&&Object.defineProperty(on,"__filemeta",{configurable:!0,value:{name:"editButton",filename:"node_modules/gatsby-theme-docz/src/components/Header/styles.js"}});var cn=Object(l.forwardRef)((function(e,a){var n=e.color,t=void 0===n?"currentColor":n,d=e.size,r=void 0===d?24:d,o=gn(e,["color","size"]);return R.a.createElement("svg",sn({ref:a,xmlns:"http://www.w3.org/2000/svg",width:r,height:r,viewBox:"0 0 24 24",fill:"none",stroke:t,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},o),R.a.createElement("polyline",{points:"6 9 12 15 18 9"}))}));cn.displayName="ChevronDown";var un=cn;function ln(){return(ln=Object.assign||function(e){for(var a=1;a=0||(d[n]=e[n]);return d}(e,a);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(d[n]=e[n])}return d}var pn=Object(l.forwardRef)((function(e,a){var n=e.color,t=void 0===n?"currentColor":n,d=e.size,r=void 0===d?24:d,o=Rn(e,["color","size"]);return R.a.createElement("svg",ln({ref:a,xmlns:"http://www.w3.org/2000/svg",width:r,height:r,viewBox:"0 0 24 24",fill:"none",stroke:t,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},o),R.a.createElement("polyline",{points:"18 15 12 9 6 15"}))}));pn.displayName="ChevronUp";var fn=pn;function hn(){return(hn=Object.assign||function(e){for(var a=1;a=0||(d[n]=e[n]);return d}(e,a);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(d[n]=e[n])}return d}var bn=Object(l.forwardRef)((function(e,a){var n=e.color,t=void 0===n?"currentColor":n,d=e.size,r=void 0===d?24:d,o=mn(e,["color","size"]);return R.a.createElement("svg",hn({ref:a,xmlns:"http://www.w3.org/2000/svg",width:r,height:r,viewBox:"0 0 24 24",fill:"none",stroke:t,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},o),R.a.createElement("path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"}),R.a.createElement("rect",{x:"8",y:"2",width:"8",height:"4",rx:"1",ry:"1"}))}));bn.displayName="Clipboard";var yn=bn;function vn(){return(vn=Object.assign||function(e){for(var a=1;a=0||(d[n]=e[n]);return d}(e,a);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(d[n]=e[n])}return d}var On=Object(l.forwardRef)((function(e,a){var n=e.color,t=void 0===n?"currentColor":n,d=e.size,r=void 0===d?24:d,o=jn(e,["color","size"]);return R.a.createElement("svg",vn({ref:a,xmlns:"http://www.w3.org/2000/svg",width:r,height:r,viewBox:"0 0 24 24",fill:"none",stroke:t,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},o),R.a.createElement("polyline",{points:"16 18 22 12 16 6"}),R.a.createElement("polyline",{points:"8 6 2 12 8 18"}))}));On.displayName="Code";var _n=On;function xn(){return(xn=Object.assign||function(e){for(var a=1;a=0||(d[n]=e[n]);return d}(e,a);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(d[n]=e[n])}return d}var En=Object(l.forwardRef)((function(e,a){var n=e.color,t=void 0===n?"currentColor":n,d=e.size,r=void 0===d?24:d,o=wn(e,["color","size"]);return R.a.createElement("svg",xn({ref:a,xmlns:"http://www.w3.org/2000/svg",width:r,height:r,viewBox:"0 0 24 24",fill:"none",stroke:t,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},o),R.a.createElement("path",{d:"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"}))}));En.displayName="Edit2";var kn=En;function Sn(){return(Sn=Object.assign||function(e){for(var a=1;a=0||(d[n]=e[n]);return d}(e,a);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(d[n]=e[n])}return d}var An=Object(l.forwardRef)((function(e,a){var n=e.color,t=void 0===n?"currentColor":n,d=e.size,r=void 0===d?24:d,o=Dn(e,["color","size"]);return R.a.createElement("svg",Sn({ref:a,xmlns:"http://www.w3.org/2000/svg",width:r,height:r,viewBox:"0 0 24 24",fill:"none",stroke:t,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},o),R.a.createElement("path",{d:"M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22"}))}));An.displayName="GitHub";var Cn=An;function Pn(){return(Pn=Object.assign||function(e){for(var a=1;a=0||(d[n]=e[n]);return d}(e,a);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(d[n]=e[n])}return d}var Tn=Object(l.forwardRef)((function(e,a){var n=e.color,t=void 0===n?"currentColor":n,d=e.size,r=void 0===d?24:d,o=Fn(e,["color","size"]);return R.a.createElement("svg",Pn({ref:a,xmlns:"http://www.w3.org/2000/svg",width:r,height:r,viewBox:"0 0 24 24",fill:"none",stroke:t,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},o),R.a.createElement("line",{x1:"3",y1:"12",x2:"21",y2:"12"}),R.a.createElement("line",{x1:"3",y1:"6",x2:"21",y2:"6"}),R.a.createElement("line",{x1:"3",y1:"18",x2:"21",y2:"18"}))}));Tn.displayName="Menu";var Ln=Tn;function Bn(){return(Bn=Object.assign||function(e){for(var a=1;a=0||(d[n]=e[n]);return d}(e,a);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(d[n]=e[n])}return d}var In=Object(l.forwardRef)((function(e,a){var n=e.color,t=void 0===n?"currentColor":n,d=e.size,r=void 0===d?24:d,o=Nn(e,["color","size"]);return R.a.createElement("svg",Bn({ref:a,xmlns:"http://www.w3.org/2000/svg",width:r,height:r,viewBox:"0 0 24 24",fill:"none",stroke:t,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},o),R.a.createElement("circle",{cx:"11",cy:"11",r:"8"}),R.a.createElement("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"}))}));In.displayName="Search";var Mn=In;function zn(){return(zn=Object.assign||function(e){for(var a=1;a=0||(d[n]=e[n]);return d}(e,a);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(d[n]=e[n])}return d}var Vn=Object(l.forwardRef)((function(e,a){var n=e.color,t=void 0===n?"currentColor":n,d=e.size,r=void 0===d?24:d,o=qn(e,["color","size"]);return R.a.createElement("svg",zn({ref:a,xmlns:"http://www.w3.org/2000/svg",width:r,height:r,viewBox:"0 0 24 24",fill:"none",stroke:t,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},o),R.a.createElement("circle",{cx:"12",cy:"12",r:"5"}),R.a.createElement("line",{x1:"12",y1:"1",x2:"12",y2:"3"}),R.a.createElement("line",{x1:"12",y1:"21",x2:"12",y2:"23"}),R.a.createElement("line",{x1:"4.22",y1:"4.22",x2:"5.64",y2:"5.64"}),R.a.createElement("line",{x1:"18.36",y1:"18.36",x2:"19.78",y2:"19.78"}),R.a.createElement("line",{x1:"1",y1:"12",x2:"3",y2:"12"}),R.a.createElement("line",{x1:"21",y1:"12",x2:"23",y2:"12"}),R.a.createElement("line",{x1:"4.22",y1:"19.78",x2:"5.64",y2:"18.36"}),R.a.createElement("line",{x1:"18.36",y1:"5.64",x2:"19.78",y2:"4.22"}))}));Vn.displayName="Sun";var Un=Vn;"undefined"!=typeof ChevronDown&&ChevronDown&&ChevronDown===Object(ChevronDown)&&Object.isExtensible(ChevronDown)&&!Object.prototype.hasOwnProperty.call(ChevronDown,"__filemeta")&&Object.defineProperty(ChevronDown,"__filemeta",{configurable:!0,value:{name:"ChevronDown",filename:"node_modules/gatsby-theme-docz/src/components/Icons/index.js"}}),"undefined"!=typeof ChevronDown&&ChevronDown&&ChevronDown===Object(ChevronDown)&&Object.isExtensible(ChevronDown)&&!Object.prototype.hasOwnProperty.call(ChevronDown,"__filemeta")&&Object.defineProperty(ChevronDown,"__filemeta",{configurable:!0,value:{name:"ChevronDown",filename:"node_modules/gatsby-theme-docz/src/components/Icons/index.js"}}),"undefined"!=typeof ChevronUp&&ChevronUp&&ChevronUp===Object(ChevronUp)&&Object.isExtensible(ChevronUp)&&!Object.prototype.hasOwnProperty.call(ChevronUp,"__filemeta")&&Object.defineProperty(ChevronUp,"__filemeta",{configurable:!0,value:{name:"ChevronUp",filename:"node_modules/gatsby-theme-docz/src/components/Icons/index.js"}}),"undefined"!=typeof ChevronUp&&ChevronUp&&ChevronUp===Object(ChevronUp)&&Object.isExtensible(ChevronUp)&&!Object.prototype.hasOwnProperty.call(ChevronUp,"__filemeta")&&Object.defineProperty(ChevronUp,"__filemeta",{configurable:!0,value:{name:"ChevronUp",filename:"node_modules/gatsby-theme-docz/src/components/Icons/index.js"}}),"undefined"!=typeof Clipboard&&Clipboard&&Clipboard===Object(Clipboard)&&Object.isExtensible(Clipboard)&&!Object.prototype.hasOwnProperty.call(Clipboard,"__filemeta")&&Object.defineProperty(Clipboard,"__filemeta",{configurable:!0,value:{name:"Clipboard",filename:"node_modules/gatsby-theme-docz/src/components/Icons/index.js"}}),"undefined"!=typeof Clipboard&&Clipboard&&Clipboard===Object(Clipboard)&&Object.isExtensible(Clipboard)&&!Object.prototype.hasOwnProperty.call(Clipboard,"__filemeta")&&Object.defineProperty(Clipboard,"__filemeta",{configurable:!0,value:{name:"Clipboard",filename:"node_modules/gatsby-theme-docz/src/components/Icons/index.js"}}),"undefined"!=typeof Code&&Code&&Code===Object(Code)&&Object.isExtensible(Code)&&!Object.prototype.hasOwnProperty.call(Code,"__filemeta")&&Object.defineProperty(Code,"__filemeta",{configurable:!0,value:{name:"Code",filename:"node_modules/gatsby-theme-docz/src/components/Icons/index.js"}}),"undefined"!=typeof Code&&Code&&Code===Object(Code)&&Object.isExtensible(Code)&&!Object.prototype.hasOwnProperty.call(Code,"__filemeta")&&Object.defineProperty(Code,"__filemeta",{configurable:!0,value:{name:"Code",filename:"node_modules/gatsby-theme-docz/src/components/Icons/index.js"}}),"undefined"!=typeof Edit&&Edit&&Edit===Object(Edit)&&Object.isExtensible(Edit)&&!Object.prototype.hasOwnProperty.call(Edit,"__filemeta")&&Object.defineProperty(Edit,"__filemeta",{configurable:!0,value:{name:"Edit",filename:"node_modules/gatsby-theme-docz/src/components/Icons/index.js"}}),"undefined"!=typeof Edit&&Edit&&Edit===Object(Edit)&&Object.isExtensible(Edit)&&!Object.prototype.hasOwnProperty.call(Edit,"__filemeta")&&Object.defineProperty(Edit,"__filemeta",{configurable:!0,value:{name:"Edit",filename:"node_modules/gatsby-theme-docz/src/components/Icons/index.js"}}),"undefined"!=typeof Github&&Github&&Github===Object(Github)&&Object.isExtensible(Github)&&!Object.prototype.hasOwnProperty.call(Github,"__filemeta")&&Object.defineProperty(Github,"__filemeta",{configurable:!0,value:{name:"Github",filename:"node_modules/gatsby-theme-docz/src/components/Icons/index.js"}}),"undefined"!=typeof Github&&Github&&Github===Object(Github)&&Object.isExtensible(Github)&&!Object.prototype.hasOwnProperty.call(Github,"__filemeta")&&Object.defineProperty(Github,"__filemeta",{configurable:!0,value:{name:"Github",filename:"node_modules/gatsby-theme-docz/src/components/Icons/index.js"}}),"undefined"!=typeof Menu&&Menu&&Menu===Object(Menu)&&Object.isExtensible(Menu)&&!Object.prototype.hasOwnProperty.call(Menu,"__filemeta")&&Object.defineProperty(Menu,"__filemeta",{configurable:!0,value:{name:"Menu",filename:"node_modules/gatsby-theme-docz/src/components/Icons/index.js"}}),"undefined"!=typeof Menu&&Menu&&Menu===Object(Menu)&&Object.isExtensible(Menu)&&!Object.prototype.hasOwnProperty.call(Menu,"__filemeta")&&Object.defineProperty(Menu,"__filemeta",{configurable:!0,value:{name:"Menu",filename:"node_modules/gatsby-theme-docz/src/components/Icons/index.js"}}),"undefined"!=typeof Search&&Search&&Search===Object(Search)&&Object.isExtensible(Search)&&!Object.prototype.hasOwnProperty.call(Search,"__filemeta")&&Object.defineProperty(Search,"__filemeta",{configurable:!0,value:{name:"Search",filename:"node_modules/gatsby-theme-docz/src/components/Icons/index.js"}}),"undefined"!=typeof Search&&Search&&Search===Object(Search)&&Object.isExtensible(Search)&&!Object.prototype.hasOwnProperty.call(Search,"__filemeta")&&Object.defineProperty(Search,"__filemeta",{configurable:!0,value:{name:"Search",filename:"node_modules/gatsby-theme-docz/src/components/Icons/index.js"}}),"undefined"!=typeof Sun&&Sun&&Sun===Object(Sun)&&Object.isExtensible(Sun)&&!Object.prototype.hasOwnProperty.call(Sun,"__filemeta")&&Object.defineProperty(Sun,"__filemeta",{configurable:!0,value:{name:"Sun",filename:"node_modules/gatsby-theme-docz/src/components/Icons/index.js"}}),"undefined"!=typeof Sun&&Sun&&Sun===Object(Sun)&&Object.isExtensible(Sun)&&!Object.prototype.hasOwnProperty.call(Sun,"__filemeta")&&Object.defineProperty(Sun,"__filemeta",{configurable:!0,value:{name:"Sun",filename:"node_modules/gatsby-theme-docz/src/components/Icons/index.js"}});const Gn={letterSpacing:"-0.02em",fontWeight:600,fontSize:4};void 0!==Gn&&Gn&&Gn===Object(Gn)&&Object.isExtensible(Gn)&&!Object.prototype.hasOwnProperty.call(Gn,"__filemeta")&&Object.defineProperty(Gn,"__filemeta",{configurable:!0,value:{name:"logo",filename:"node_modules/gatsby-theme-docz/src/components/Logo/styles.js"}}),void 0!==Gn&&Gn&&Gn===Object(Gn)&&Object.isExtensible(Gn)&&!Object.prototype.hasOwnProperty.call(Gn,"__filemeta")&&Object.defineProperty(Gn,"__filemeta",{configurable:!0,value:{name:"logo",filename:"node_modules/gatsby-theme-docz/src/components/Logo/styles.js"}});const Hn={fontWeight:600,color:"header.text",textDecoration:"none",":hover":{color:"primary"}};void 0!==Hn&&Hn&&Hn===Object(Hn)&&Object.isExtensible(Hn)&&!Object.prototype.hasOwnProperty.call(Hn,"__filemeta")&&Object.defineProperty(Hn,"__filemeta",{configurable:!0,value:{name:"link",filename:"node_modules/gatsby-theme-docz/src/components/Logo/styles.js"}}),void 0!==Hn&&Hn&&Hn===Object(Hn)&&Object.isExtensible(Hn)&&!Object.prototype.hasOwnProperty.call(Hn,"__filemeta")&&Object.defineProperty(Hn,"__filemeta",{configurable:!0,value:{name:"link",filename:"node_modules/gatsby-theme-docz/src/components/Logo/styles.js"}});var Wn=n("zA3n"),Kn=n.n(Wn);function Yn(e,a){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);a&&(t=t.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),n.push.apply(n,t)}return n}function Zn(e){for(var a=1;a{const e=Object(p.e)();return Object(j.h)(j.c,{alignItems:"center",sx:Gn,"data-testid":"logo"},Object(j.h)(p.b,{to:"/",sx:Zn(Zn({},Hn),{},{display:"flex",flexDirection:"column",lineHeight:"1.2"})},Object(j.h)("div",{sx:{display:"inline-block"}},Object(j.h)("img",{src:Kn.a,alt:"That's my logo",sx:{maxHeight:"1.2em",marginRight:"0.2em",display:"inline-block",float:"left"}}),Object(j.h)("span",{sx:{display:"inline-block"}},"Grafana Tanka"),Object(j.h)("span",{sx:{fontSize:"0.7em",display:"block"}},e.description))))};void 0!==$n&&$n&&$n===Object($n)&&Object.isExtensible($n)&&!Object.prototype.hasOwnProperty.call($n,"__filemeta")&&Object.defineProperty($n,"__filemeta",{configurable:!0,value:{name:"Logo",filename:"src/gatsby-theme-docz/components/Logo/index.js"}}),void 0!==$n&&$n&&$n===Object($n)&&Object.isExtensible($n)&&!Object.prototype.hasOwnProperty.call($n,"__filemeta")&&Object.defineProperty($n,"__filemeta",{configurable:!0,value:{name:"Logo",filename:"src/gatsby-theme-docz/components/Logo/index.js"}});const Xn=["edit"],Qn=e=>{const{onOpen:a}=e,{repository:n,themeConfig:{showDarkModeSwitch:t,showMarkdownEditButton:d}}=Object(p.e)(),r=Object(p.f)(),{edit:o=!0}=r,s=Object(i.a)(r,Xn),[g,c]=Object(j.i)();return Object(j.h)("div",{sx:an,"data-testid":"header"},Object(j.h)(j.a,{sx:tn},Object(j.h)("button",{sx:dn,onClick:a},Object(j.h)(Ln,{size:25}))),Object(j.h)("div",{sx:nn},Object(j.h)($n,null),Object(j.h)(j.c,null,n&&Object(j.h)(j.a,{sx:{mr:2}},Object(j.h)("a",{href:n,sx:rn,target:"_blank",rel:"noopener noreferrer"},Object(j.h)(Cn,{size:15}))),t&&Object(j.h)("button",{sx:rn,onClick:()=>{c("light"===g?"dark":"light")},"aria-label":"Switch to "+g+" mode"},Object(j.h)(Un,{size:15}))),d&&o&&s.link&&Object(j.h)("a",{sx:on,href:s.link,target:"_blank",rel:"noopener noreferrer"},Object(j.h)(kn,{width:14}),Object(j.h)(j.a,{sx:{pl:2}},"Edit page"))))};void 0!==Qn&&Qn&&Qn===Object(Qn)&&Object.isExtensible(Qn)&&!Object.prototype.hasOwnProperty.call(Qn,"__filemeta")&&Object.defineProperty(Qn,"__filemeta",{configurable:!0,value:{name:"Header",filename:"node_modules/gatsby-theme-docz/src/components/Header/index.js"}}),void 0!==Qn&&Qn&&Qn===Object(Qn)&&Object.isExtensible(Qn)&&!Object.prototype.hasOwnProperty.call(Qn,"__filemeta")&&Object.defineProperty(Qn,"__filemeta",{configurable:!0,value:{name:"Header",filename:"node_modules/gatsby-theme-docz/src/components/Header/index.js"}});const Jn={body:{overflow:"hidden"}};void 0!==Jn&&Jn&&Jn===Object(Jn)&&Object.isExtensible(Jn)&&!Object.prototype.hasOwnProperty.call(Jn,"__filemeta")&&Object.defineProperty(Jn,"__filemeta",{configurable:!0,value:{name:"global",filename:"node_modules/gatsby-theme-docz/src/components/Sidebar/styles.js"}}),void 0!==Jn&&Jn&&Jn===Object(Jn)&&Object.isExtensible(Jn)&&!Object.prototype.hasOwnProperty.call(Jn,"__filemeta")&&Object.defineProperty(Jn,"__filemeta",{configurable:!0,value:{name:"global",filename:"node_modules/gatsby-theme-docz/src/components/Sidebar/styles.js"}});const et=e=>{let{open:a}=e;return{zIndex:999,position:"fixed",top:81,right:0,bottom:0,left:0,background:"rgba(0,0,0,0.6)",transition:"all .2s ease-out",visibility:a?"visible":"hidden",opacity:a?1:0}};void 0!==et&&et&&et===Object(et)&&Object.isExtensible(et)&&!Object.prototype.hasOwnProperty.call(et,"__filemeta")&&Object.defineProperty(et,"__filemeta",{configurable:!0,value:{name:"overlay",filename:"node_modules/gatsby-theme-docz/src/components/Sidebar/styles.js"}}),void 0!==et&&et&&et===Object(et)&&Object.isExtensible(et)&&!Object.prototype.hasOwnProperty.call(et,"__filemeta")&&Object.defineProperty(et,"__filemeta",{configurable:!0,value:{name:"overlay",filename:"node_modules/gatsby-theme-docz/src/components/Sidebar/styles.js"}});const at=e=>{let{open:a}=e;return{py:4,px:4,flexDirection:"column",position:"sticky",top:0,zIndex:1,minWidth:0,maxHeight:"100vh",borderRight:e=>"1px solid "+e.colors.border,overflow:"auto",WebkitOverflowScrolling:"touch",bg:"sidebar.bg",[Qa.tablet]:{zIndex:9999,display:"block",position:"fixed",top:81,left:0,bottom:0,width:256,px:4,bg:"background",transition:"transform .2s ease-out",transform:a?"translateX(0)":"translateX(-100%)"}}};void 0!==at&&at&&at===Object(at)&&Object.isExtensible(at)&&!Object.prototype.hasOwnProperty.call(at,"__filemeta")&&Object.defineProperty(at,"__filemeta",{configurable:!0,value:{name:"wrapper",filename:"node_modules/gatsby-theme-docz/src/components/Sidebar/styles.js"}}),void 0!==at&&at&&at===Object(at)&&Object.isExtensible(at)&&!Object.prototype.hasOwnProperty.call(at,"__filemeta")&&Object.defineProperty(at,"__filemeta",{configurable:!0,value:{name:"wrapper",filename:"node_modules/gatsby-theme-docz/src/components/Sidebar/styles.js"}});const nt={mb:3,display:"inline-flex",alignItems:"center"};void 0!==nt&&nt&&nt===Object(nt)&&Object.isExtensible(nt)&&!Object.prototype.hasOwnProperty.call(nt,"__filemeta")&&Object.defineProperty(nt,"__filemeta",{configurable:!0,value:{name:"wrapper",filename:"node_modules/gatsby-theme-docz/src/components/NavSearch/styles.js"}}),void 0!==nt&&nt&&nt===Object(nt)&&Object.isExtensible(nt)&&!Object.prototype.hasOwnProperty.call(nt,"__filemeta")&&Object.defineProperty(nt,"__filemeta",{configurable:!0,value:{name:"wrapper",filename:"node_modules/gatsby-theme-docz/src/components/NavSearch/styles.js"}});const tt={outline:"none",background:"none",border:"none",color:"text",fontSize:1};void 0!==tt&&tt&&tt===Object(tt)&&Object.isExtensible(tt)&&!Object.prototype.hasOwnProperty.call(tt,"__filemeta")&&Object.defineProperty(tt,"__filemeta",{configurable:!0,value:{name:"input",filename:"node_modules/gatsby-theme-docz/src/components/NavSearch/styles.js"}}),void 0!==tt&&tt&&tt===Object(tt)&&Object.isExtensible(tt)&&!Object.prototype.hasOwnProperty.call(tt,"__filemeta")&&Object.defineProperty(tt,"__filemeta",{configurable:!0,value:{name:"input",filename:"node_modules/gatsby-theme-docz/src/components/NavSearch/styles.js"}});const dt={color:"border",mr:2};void 0!==dt&&dt&&dt===Object(dt)&&Object.isExtensible(dt)&&!Object.prototype.hasOwnProperty.call(dt,"__filemeta")&&Object.defineProperty(dt,"__filemeta",{configurable:!0,value:{name:"icon",filename:"node_modules/gatsby-theme-docz/src/components/NavSearch/styles.js"}}),void 0!==dt&&dt&&dt===Object(dt)&&Object.isExtensible(dt)&&!Object.prototype.hasOwnProperty.call(dt,"__filemeta")&&Object.defineProperty(dt,"__filemeta",{configurable:!0,value:{name:"icon",filename:"node_modules/gatsby-theme-docz/src/components/NavSearch/styles.js"}});const rt=e=>Object(j.h)("div",{sx:nt,"data-testid":"nav-search"},Object(j.h)(Mn,{size:20,sx:dt}),Object(j.h)("input",Object(r.a)({},e,{sx:tt})));function ot(e,a){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);a&&(t=t.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),n.push.apply(n,t)}return n}function it(e){for(var a=1;a{const n=a.find(a=>a.route===e),t=g()("headings",n);return t?t.filter(e=>2===e.depth):[]})(s,d),u=n.route===o.route&&c&&c.length>0,R="undefined"==typeof window?"":window.location?decodeURI(window.location.hash):"";return Object(j.h)(l.Fragment,null,Object(j.h)(h.Link,Object(r.a)({},t,{to:s,sx:st,activeClassName:"active",ref:a})),u&&c.map(e=>Object(j.h)(h.Link,{key:e.slug,to:s+"#"+e.slug,sx:gt,className:R==="#"+e.slug?"active":""},e.value)))}));void 0!==ut&&ut&&ut===Object(ut)&&Object.isExtensible(ut)&&!Object.prototype.hasOwnProperty.call(ut,"__filemeta")&&Object.defineProperty(ut,"__filemeta",{configurable:!0,value:{name:"NavLink",filename:"node_modules/gatsby-theme-docz/src/components/NavLink/index.js"}}),void 0!==ut&&ut&&ut===Object(ut)&&Object.isExtensible(ut)&&!Object.prototype.hasOwnProperty.call(ut,"__filemeta")&&Object.defineProperty(ut,"__filemeta",{configurable:!0,value:{name:"NavLink",filename:"node_modules/gatsby-theme-docz/src/components/NavLink/index.js"}});const lt={my:3};void 0!==lt&<&<===Object(lt)&&Object.isExtensible(lt)&&!Object.prototype.hasOwnProperty.call(lt,"__filemeta")&&Object.defineProperty(lt,"__filemeta",{configurable:!0,value:{name:"wrapper",filename:"node_modules/gatsby-theme-docz/src/components/NavGroup/styles.js"}}),void 0!==lt&<&<===Object(lt)&&Object.isExtensible(lt)&&!Object.prototype.hasOwnProperty.call(lt,"__filemeta")&&Object.defineProperty(lt,"__filemeta",{configurable:!0,value:{name:"wrapper",filename:"node_modules/gatsby-theme-docz/src/components/NavGroup/styles.js"}});const Rt={ml:2};void 0!==Rt&&Rt&&Rt===Object(Rt)&&Object.isExtensible(Rt)&&!Object.prototype.hasOwnProperty.call(Rt,"__filemeta")&&Object.defineProperty(Rt,"__filemeta",{configurable:!0,value:{name:"sublinkWrapper",filename:"node_modules/gatsby-theme-docz/src/components/NavGroup/styles.js"}}),void 0!==Rt&&Rt&&Rt===Object(Rt)&&Object.isExtensible(Rt)&&!Object.prototype.hasOwnProperty.call(Rt,"__filemeta")&&Object.defineProperty(Rt,"__filemeta",{configurable:!0,value:{name:"sublinkWrapper",filename:"node_modules/gatsby-theme-docz/src/components/NavGroup/styles.js"}});const pt={mb:1,fontSize:2,fontWeight:500,color:"sidebar.navGroup",cursor:"pointer",display:"flex",justifyContent:"space-between",alignItems:"center"};void 0!==pt&&pt&&pt===Object(pt)&&Object.isExtensible(pt)&&!Object.prototype.hasOwnProperty.call(pt,"__filemeta")&&Object.defineProperty(pt,"__filemeta",{configurable:!0,value:{name:"title",filename:"node_modules/gatsby-theme-docz/src/components/NavGroup/styles.js"}}),void 0!==pt&&pt&&pt===Object(pt)&&Object.isExtensible(pt)&&!Object.prototype.hasOwnProperty.call(pt,"__filemeta")&&Object.defineProperty(pt,"__filemeta",{configurable:!0,value:{name:"title",filename:"node_modules/gatsby-theme-docz/src/components/NavGroup/styles.js"}});const ft=e=>{let{active:a}=e;return{ml:1,flexShrink:0,alignSelf:"baseline",transform:"rotateX("+(a?180:0)+"deg)",transformOrigin:"center",transition:"transform .3s ease-in-out"}};void 0!==ft&&ft&&ft===Object(ft)&&Object.isExtensible(ft)&&!Object.prototype.hasOwnProperty.call(ft,"__filemeta")&&Object.defineProperty(ft,"__filemeta",{configurable:!0,value:{name:"chevron",filename:"node_modules/gatsby-theme-docz/src/components/NavGroup/styles.js"}}),void 0!==ft&&ft&&ft===Object(ft)&&Object.isExtensible(ft)&&!Object.prototype.hasOwnProperty.call(ft,"__filemeta")&&Object.defineProperty(ft,"__filemeta",{configurable:!0,value:{name:"chevron",filename:"node_modules/gatsby-theme-docz/src/components/NavGroup/styles.js"}});const ht=e=>{let{item:a,sidebarRef:n}=e;const t=Object(p.f)(),d=Object(l.useRef)(),{name:r,menu:o}=a,{0:i,1:s}=Object(l.useState)(t.menu===r);return Object(l.useEffect)(()=>{n.current&&d.current&&n.current.scrollTo(0,d.current.offsetTop)},[]),Object(j.h)("div",{sx:lt,"data-testid":"nav-group"},Object(j.h)("div",{sx:pt,onClick:()=>s(!i)},a.name,Object(j.h)(un,{sx:ft({active:i})})),Object(j.h)("div",{sx:Rt,"data-testid":"nav-group-links"},o&&i&&o.map(e=>t.route===e.route?Object(j.h)(ut,{key:e.id,item:e,ref:d},e.name):Object(j.h)(ut,{key:e.id,item:e},e.name))))};void 0!==ht&&ht&&ht===Object(ht)&&Object.isExtensible(ht)&&!Object.prototype.hasOwnProperty.call(ht,"__filemeta")&&Object.defineProperty(ht,"__filemeta",{configurable:!0,value:{name:"NavGroup",filename:"node_modules/gatsby-theme-docz/src/components/NavGroup/index.js"}}),void 0!==ht&&ht&&ht===Object(ht)&&Object.isExtensible(ht)&&!Object.prototype.hasOwnProperty.call(ht,"__filemeta")&&Object.defineProperty(ht,"__filemeta",{configurable:!0,value:{name:"NavGroup",filename:"node_modules/gatsby-theme-docz/src/components/NavGroup/index.js"}});const mt=Object(l.forwardRef)((function(e,a){const{0:n,1:t}=Object(l.useState)(""),d=Object(p.h)({query:n}),r=Object(p.f)(),o=Object(l.useRef)();return Object(l.useEffect)(()=>{a.current&&o.current&&a.current.scrollTo(0,o.current.offsetTop)},[]),Object(j.h)(l.Fragment,null,Object(j.h)(j.a,{onClick:e.onClick,sx:et(e)},e.open&&Object(j.h)(Wa,{styles:Jn})),Object(j.h)(j.a,{ref:a,sx:at(e),"data-testid":"sidebar"},Object(j.h)(rt,{placeholder:"Type to search...",value:n,onChange:e=>{t(e.target.value)}}),d&&d.map(e=>e.route?e.route===r.route?Object(j.h)(ut,{key:e.id,item:e,ref:o},e.name):Object(j.h)(ut,{key:e.id,item:e},e.name):Object(j.h)(ht,{key:e.id,item:e,sidebarRef:a}))))}));void 0!==mt&&mt&&mt===Object(mt)&&Object.isExtensible(mt)&&!Object.prototype.hasOwnProperty.call(mt,"__filemeta")&&Object.defineProperty(mt,"__filemeta",{configurable:!0,value:{name:"Sidebar",filename:"node_modules/gatsby-theme-docz/src/components/Sidebar/index.js"}}),void 0!==mt&&mt&&mt===Object(mt)&&Object.isExtensible(mt)&&!Object.prototype.hasOwnProperty.call(mt,"__filemeta")&&Object.defineProperty(mt,"__filemeta",{configurable:!0,value:{name:"Sidebar",filename:"node_modules/gatsby-theme-docz/src/components/Sidebar/index.js"}});const bt={backgroundColor:"background",position:"relative",maxWidth:960,py:5,px:4,variant:"styles.Container",[Qa.tablet]:{py:4,px:4,pt:5}};void 0!==bt&&bt&&bt===Object(bt)&&Object.isExtensible(bt)&&!Object.prototype.hasOwnProperty.call(bt,"__filemeta")&&Object.defineProperty(bt,"__filemeta",{configurable:!0,value:{name:"container",filename:"node_modules/gatsby-theme-docz/src/components/MainContainer/styles.js"}}),void 0!==bt&&bt&&bt===Object(bt)&&Object.isExtensible(bt)&&!Object.prototype.hasOwnProperty.call(bt,"__filemeta")&&Object.defineProperty(bt,"__filemeta",{configurable:!0,value:{name:"container",filename:"node_modules/gatsby-theme-docz/src/components/MainContainer/styles.js"}});const yt=["children"],vt=e=>{let{children:a}=e,n=Object(i.a)(e,yt);return Object(j.h)(j.b,Object(r.a)({sx:bt},n),a)};void 0!==vt&&vt&&vt===Object(vt)&&Object.isExtensible(vt)&&!Object.prototype.hasOwnProperty.call(vt,"__filemeta")&&Object.defineProperty(vt,"__filemeta",{configurable:!0,value:{name:"MainContainer",filename:"node_modules/gatsby-theme-docz/src/components/MainContainer/index.js"}}),void 0!==vt&&vt&&vt===Object(vt)&&Object.isExtensible(vt)&&!Object.prototype.hasOwnProperty.call(vt,"__filemeta")&&Object.defineProperty(vt,"__filemeta",{configurable:!0,value:{name:"MainContainer",filename:"node_modules/gatsby-theme-docz/src/components/MainContainer/index.js"}});const jt={display:"flex",flexDirection:"column",minHeight:"100vh"};void 0!==jt&&jt&&jt===Object(jt)&&Object.isExtensible(jt)&&!Object.prototype.hasOwnProperty.call(jt,"__filemeta")&&Object.defineProperty(jt,"__filemeta",{configurable:!0,value:{name:"main",filename:"node_modules/gatsby-theme-docz/src/components/Layout/styles.js"}}),void 0!==jt&&jt&&jt===Object(jt)&&Object.isExtensible(jt)&&!Object.prototype.hasOwnProperty.call(jt,"__filemeta")&&Object.defineProperty(jt,"__filemeta",{configurable:!0,value:{name:"main",filename:"node_modules/gatsby-theme-docz/src/components/Layout/styles.js"}});const Ot={py:0,flex:1,display:"grid",gridTemplateColumns:"250px minmax(0, 1fr)",minHeight:"100vh",[Qa.tablet]:{display:"block"}};void 0!==Ot&&Ot&&Ot===Object(Ot)&&Object.isExtensible(Ot)&&!Object.prototype.hasOwnProperty.call(Ot,"__filemeta")&&Object.defineProperty(Ot,"__filemeta",{configurable:!0,value:{name:"wrapper",filename:"node_modules/gatsby-theme-docz/src/components/Layout/styles.js"}}),void 0!==Ot&&Ot&&Ot===Object(Ot)&&Object.isExtensible(Ot)&&!Object.prototype.hasOwnProperty.call(Ot,"__filemeta")&&Object.defineProperty(Ot,"__filemeta",{configurable:!0,value:{name:"wrapper",filename:"node_modules/gatsby-theme-docz/src/components/Layout/styles.js"}});const _t=e=>{let{children:a}=e;const{0:n,1:t}=Object(l.useState)(!1),d=Object(l.useRef)();return Object(j.h)(j.d,{sx:{"& > div":{flex:"1 1 auto"}},"data-testid":"layout"},Object(j.h)(Wa,{styles:Ka}),Object(j.h)(j.e,{sx:jt},Object(j.h)(Qn,{onOpen:()=>t(e=>!e)}),Object(j.h)("div",{sx:Ot},Object(j.h)(mt,{ref:d,open:n,onFocus:()=>t(!0),onBlur:()=>t(!1),onClick:()=>t(!1)}),Object(j.h)(vt,{"data-testid":"main-container"},a))))};void 0!==_t&&_t&&_t===Object(_t)&&Object.isExtensible(_t)&&!Object.prototype.hasOwnProperty.call(_t,"__filemeta")&&Object.defineProperty(_t,"__filemeta",{configurable:!0,value:{name:"Layout",filename:"node_modules/gatsby-theme-docz/src/components/Layout/index.js"}}),void 0!==_t&&_t&&_t===Object(_t)&&Object.isExtensible(_t)&&!Object.prototype.hasOwnProperty.call(_t,"__filemeta")&&Object.defineProperty(_t,"__filemeta",{configurable:!0,value:{name:"Layout",filename:"node_modules/gatsby-theme-docz/src/components/Layout/index.js"}});var xt=n("8Ppc"),wt=n.n(xt),Et=(n("U3f4"),function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,a=0,n={},t={util:{encode:function e(a){return a instanceof d?new d(a.type,e(a.content),a.alias):Array.isArray(a)?a.map(e):a.replace(/&/g,"&").replace(/=u.reach);_+=O.value.length,O=O.next){var x=O.value;if(n.length>a.length)return;if(!(x instanceof d)){var w,E=1;if(b){if(!(w=r(j,_,a,m))||w.index>=a.length)break;var k=w.index,S=w.index+w[0].length,D=_;for(D+=O.value.length;k>=D;)O=O.next,D+=O.value.length;if(D-=O.value.length,_=D,O.value instanceof d)continue;for(var A=O;A!==n.tail&&(Du.reach&&(u.reach=T);var L=O.prev;P&&(L=i(n,L,P),_+=P.length),s(n,L,E);var B=new d(l,h?t.tokenize(C,h):C,y,C);if(O=i(n,L,B),F&&i(n,O,F),E>1){var N={cause:l+","+p,reach:T};e(a,n,o,O.prev,_,N),u&&N.reach>u.reach&&(u.reach=N.reach)}}}}}}(e,c,a,c.head,0),function(e){var a=[],n=e.head.next;for(;n!==e.tail;)a.push(n.value),n=n.next;return a}(c)},hooks:{all:{},add:function(e,a){var n=t.hooks.all;n[e]=n[e]||[],n[e].push(a)},run:function(e,a){var n=t.hooks.all[e];if(n&&n.length)for(var d,r=0;d=n[r++];)d(a)}},Token:d};function d(e,a,n,t){this.type=e,this.content=a,this.alias=n,this.length=0|(t||"").length}function r(e,a,n,t){e.lastIndex=a;var d=e.exec(n);if(d&&t&&d[1]){var r=d[1].length;d.index+=r,d[0]=d[0].slice(r)}return d}function o(){var e={value:null,prev:null,next:null},a={value:null,prev:e,next:null};e.next=a,this.head=e,this.tail=a,this.length=0}function i(e,a,n){var t=a.next,d={value:n,prev:a,next:t};return a.next=d,t.prev=d,e.length++,d}function s(e,a,n){for(var t=a.next,d=0;d"+r.content+""},t}()),kt=Et;Et.default=Et,kt.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},kt.languages.markup.tag.inside["attr-value"].inside.entity=kt.languages.markup.entity,kt.languages.markup.doctype.inside["internal-subset"].inside=kt.languages.markup,kt.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(kt.languages.markup.tag,"addInlined",{value:function(e,a){var n={};n["language-"+a]={pattern:/(^$)/i,lookbehind:!0,inside:kt.languages[a]},n.cdata=/^$/i;var t={"included-cdata":{pattern://i,inside:n}};t["language-"+a]={pattern:/[\s\S]+/,inside:kt.languages[a]};var d={};d[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:t},kt.languages.insertBefore("markup","cdata",d)}}),Object.defineProperty(kt.languages.markup.tag,"addAttribute",{value:function(e,a){kt.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[a,"language-"+a],inside:kt.languages[a]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),kt.languages.html=kt.languages.markup,kt.languages.mathml=kt.languages.markup,kt.languages.svg=kt.languages.markup,kt.languages.xml=kt.languages.extend("markup",{}),kt.languages.ssml=kt.languages.xml,kt.languages.atom=kt.languages.xml,kt.languages.rss=kt.languages.xml,function(e){var a="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},t={bash:n,environment:{pattern:RegExp("\\$"+a),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+a),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+a),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:t},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:t},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:t.entity}}],environment:{pattern:RegExp("\\$?"+a),alias:"constant"},variable:t.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var d=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],r=t.variable[1].inside,o=0;o]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},kt.languages.c=kt.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),kt.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),kt.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},kt.languages.c.string],char:kt.languages.c.char,comment:kt.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:kt.languages.c}}}}),kt.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete kt.languages.c.boolean,function(e){var a=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!)\w+(?:\s*\.\s*\w+)*\b/.source.replace(//g,(function(){return a.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,(function(){return a.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:a,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/(?:\s*:\s*)?|:\s*/.source.replace(//g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(kt),function(e){var a=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+a.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+a.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+a.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:a,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(kt),function(e){var a,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:a={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=a,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var t={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},d={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:d,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,number:d})}(kt),kt.languages.javascript=kt.languages.extend("clike",{"class-name":[kt.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),kt.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,kt.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:kt.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:kt.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:kt.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:kt.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:kt.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),kt.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:kt.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),kt.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),kt.languages.markup&&(kt.languages.markup.tag.addInlined("script","javascript"),kt.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),kt.languages.js=kt.languages.javascript,function(e){var a=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:a,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:a,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(kt),function(e){var a=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,t="(?:"+n.source+"(?:[ \t]+"+a.source+")?|"+a.source+"(?:[ \t]+"+n.source+")?)",d=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),r=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function o(e,a){a=(a||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,(function(){return t})).replace(/<>/g,(function(){return e}));return RegExp(n,a)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,(function(){return t}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,(function(){return t})).replace(/<>/g,(function(){return"(?:"+d+"|"+r+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:o(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:o(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:o(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:o(r),lookbehind:!0,greedy:!0},number:{pattern:o(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:a,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(kt),function(e){var a=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(//g,(function(){return a})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var t=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,d=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return t})),r=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+d+r+"(?:"+d+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+d+r+")(?:"+d+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(t),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+d+")"+r+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+d+"$"),inside:{"table-header":{pattern:RegExp(t),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~))+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(a){["url","bold","italic","strike","code-snippet"].forEach((function(n){a!==n&&(e.languages.markdown[a].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(a){if(a&&"string"!=typeof a)for(var n=0,t=a.length;n",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(kt),kt.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:kt.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},kt.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var a=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n0)){var i=l(/^\{$/,/^\}$/);if(-1===i)continue;for(var s=n;s=0&&R(g,"variable-input")}}}}function c(e){return a[n+e]}function u(e,a){a=a||0;for(var n=0;n?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var a=e.languages.javascript["template-string"],n=a.pattern.source,t=a.inside.interpolation,d=t.inside["interpolation-punctuation"],r=t.pattern.source;function o(a,t){if(e.languages[a])return{pattern:RegExp("((?:"+t+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:a}}}}function i(e,a){return"___"+a.toUpperCase()+"_"+e+"___"}function s(a,n,t){var d={code:a,grammar:n,language:t};return e.hooks.run("before-tokenize",d),d.tokens=e.tokenize(d.code,d.grammar),e.hooks.run("after-tokenize",d),d.tokens}function g(a){var n={};n["interpolation-punctuation"]=d;var r=e.tokenize(a,n);if(3===r.length){var o=[1,1];o.push.apply(o,s(r[1],e.languages.javascript,"javascript")),r.splice.apply(r,o)}return new e.Token("interpolation",r,t.alias,a)}function c(a,n,t){var d=e.tokenize(a,{interpolation:{pattern:RegExp(r),lookbehind:!0}}),o=0,c={},u=s(d.map((function(e){if("string"==typeof e)return e;for(var n,d=e.content;-1!==a.indexOf(n=i(o++,t)););return c[n]=d,n})).join(""),n,t),l=Object.keys(c);return o=0,function e(a){for(var n=0;n=l.length)return;var t=a[n];if("string"==typeof t||"string"==typeof t.content){var d=l[o],r="string"==typeof t?t:t.content,i=r.indexOf(d);if(-1!==i){++o;var s=r.substring(0,i),u=g(c[d]),R=r.substring(i+d.length),p=[];if(s&&p.push(s),p.push(u),R){var f=[R];e(f),p.push.apply(p,f)}"string"==typeof t?(a.splice.apply(a,[n,1].concat(p)),n+=p.length-1):t.content=p}}else{var h=t.content;Array.isArray(h)?e(h):e([h])}}}(u),new e.Token(t,u,"language-"+t,a)}e.languages.javascript["template-string"]=[o("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),o("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),o("svg",/\bsvg/.source),o("markdown",/\b(?:markdown|md)/.source),o("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),o("sql",/\bsql/.source),a].filter(Boolean);var u={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function l(e){return"string"==typeof e?e:Array.isArray(e)?e.map(l).join(""):l(e.content)}e.hooks.add("after-tokenize",(function(a){a.language in u&&function a(n){for(var t=0,d=n.length;t]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var a=e.languages.extend("typescript",{});delete a["class-name"],e.languages.typescript["class-name"].inside=a,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:a}}}}),e.languages.ts=e.languages.typescript}(kt),function(e){function a(e,a){return RegExp(e.replace(//g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),a)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:a(/(\bimport\b\s*)(?:(?:\s*,\s*(?:\*\s*as\s+|\{[^{}]*\}))?|\*\s*as\s+|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:a(/(\bexport\b\s*)(?:\*(?:\s*as\s+)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:a(/(\.\s*)#?/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],t=0;t*\.{3}(?:[^{}]|)*\})/.source;function r(e,a){return e=e.replace(//g,(function(){return n})).replace(//g,(function(){return t})).replace(//g,(function(){return d})),RegExp(e,a)}d=r(d).source,e.languages.jsx=e.languages.extend("markup",a),e.languages.jsx.tag.pattern=r(/<\/?(?:[\w.:-]+(?:+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|))?|))**\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=a.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:r(//.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:r(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var o=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(o).join(""):""},i=function(a){for(var n=[],t=0;t0&&n[n.length-1].tagName===o(d.content[0].content[1])&&n.pop():"/>"===d.content[d.content.length-1].content||n.push({tagName:o(d.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===d.type&&"{"===d.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===d.type&&"}"===d.content?n[n.length-1].openedBraces--:r=!0),(r||"string"==typeof d)&&n.length>0&&0===n[n.length-1].openedBraces){var s=o(d);t0&&("string"==typeof a[t-1]||"plain-text"===a[t-1].type)&&(s=o(a[t-1])+s,a.splice(t-1,1),t--),a[t]=new e.Token("plain-text",s,null,s)}d.content&&"string"!=typeof d.content&&i(d.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||i(e.tokens)}))}(kt),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var a={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(a).forEach((function(n){var t=a[n],d=[];/^\w+$/.test(n)||d.push(/\w+/.exec(n)[0]),"diff"===n&&d.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+t+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:d,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:a})}(kt),kt.languages.git={comment:/^#.*/m,deleted:/^[-–].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},kt.languages.go=kt.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),kt.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete kt.languages.go["class-name"],function(e){function a(e,a){return"___"+e.toUpperCase()+a+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,t,d,r){if(n.language===t){var o=n.tokenStack=[];n.code=n.code.replace(d,(function(e){if("function"==typeof r&&!r(e))return e;for(var d,i=o.length;-1!==n.code.indexOf(d=a(t,i));)++i;return o[i]=e,d})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,t){if(n.language===t&&n.tokenStack){n.grammar=e.languages[t];var d=0,r=Object.keys(n.tokenStack);!function o(i){for(var s=0;s=r.length);s++){var g=i[s];if("string"==typeof g||g.content&&"string"==typeof g.content){var c=r[d],u=n.tokenStack[c],l="string"==typeof g?g:g.content,R=a(t,c),p=l.indexOf(R);if(p>-1){++d;var f=l.substring(0,p),h=new e.Token(t,e.tokenize(u,n.grammar),"language-"+t,u),m=l.substring(p+R.length),b=[];f&&b.push.apply(b,o([f])),b.push(h),m&&b.push.apply(b,o([m])),"string"==typeof g?i.splice.apply(i,[s,1].concat(b)):g.content=b}}else g.content&&o(g.content)}return i}(n.tokens)}}}})}(kt),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(a){e.languages["markup-templating"].buildPlaceholders(a,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(a){e.languages["markup-templating"].tokenizePlaceholders(a,"handlebars")})),e.languages.hbs=e.languages.handlebars}(kt),kt.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},kt.languages.webmanifest=kt.languages.json,kt.languages.less=kt.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),kt.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),kt.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},kt.languages.objectivec=kt.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete kt.languages.objectivec["class-name"],kt.languages.objc=kt.languages.objectivec,kt.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},kt.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},kt.languages.python["string-interpolation"].inside.interpolation.inside.rest=kt.languages.python,kt.languages.py=kt.languages.python,kt.languages.reason=kt.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),kt.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete kt.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var a=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:a,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:a,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(kt),kt.languages.scss=kt.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),kt.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),kt.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),kt.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),kt.languages.scss.atrule.inside.rest=kt.languages.scss,function(e){var a={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},t={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:a,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:a,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};t.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:t}},t.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:t}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:t}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:t}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:t}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:t.interpolation}},rest:t}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:t.interpolation,comment:t.comment,punctuation:/[{},]/}},func:t.func,string:t.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:t.interpolation,punctuation:/[{}()\[\];:.]/}}(kt),function(e){var a=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",a),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(kt),kt.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};var St=kt;function Dt(e,a,n){return a in e?Object.defineProperty(e,a,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[a]=n,e}function At(){return(At=Object.assign||function(e){for(var a=1;a0&&e[n-1]===a?e:e.concat(a)},Tt=function(e,a){var n=e.plain,t=Object.create(null),d=e.styles.reduce((function(e,n){var t=n.languages,d=n.style;return t&&!t.includes(a)||n.types.forEach((function(a){var n=At({},e[a],d);e[a]=n})),e}),t);return d.root=n,d.plain=At({},n,{backgroundColor:null}),d};function Lt(e,a){var n={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&-1===a.indexOf(t)&&(n[t]=e[t]);return n}var Bt=function(e){function a(){for(var a=this,n=[],t=arguments.length;t--;)n[t]=arguments[t];e.apply(this,n),Dt(this,"getThemeDict",(function(e){if(void 0!==a.themeDict&&e.theme===a.prevTheme&&e.language===a.prevLanguage)return a.themeDict;a.prevTheme=e.theme,a.prevLanguage=e.language;var n=e.theme?Tt(e.theme,e.language):void 0;return a.themeDict=n})),Dt(this,"getLineProps",(function(e){var n=e.key,t=e.className,d=e.style,r=At({},Lt(e,["key","className","style","line"]),{className:"token-line",style:void 0,key:void 0}),o=a.getThemeDict(a.props);return void 0!==o&&(r.style=o.plain),void 0!==d&&(r.style=void 0!==r.style?At({},r.style,d):d),void 0!==n&&(r.key=n),t&&(r.className+=" "+t),r})),Dt(this,"getStyleForToken",(function(e){var n=e.types,t=e.empty,d=n.length,r=a.getThemeDict(a.props);if(void 0!==r){if(1===d&&"plain"===n[0])return t?{display:"inline-block"}:void 0;if(1===d&&!t)return r[n[0]];var o=t?{display:"inline-block"}:{},i=n.map((function(e){return r[e]}));return Object.assign.apply(Object,[o].concat(i))}})),Dt(this,"getTokenProps",(function(e){var n=e.key,t=e.className,d=e.style,r=e.token,o=At({},Lt(e,["key","className","style","token"]),{className:"token "+r.types.join(" "),children:r.content,style:a.getStyleForToken(r),key:void 0});return void 0!==d&&(o.style=void 0!==o.style?At({},o.style,d):d),void 0!==n&&(o.key=n),t&&(o.className+=" "+t),o})),Dt(this,"tokenize",(function(e,a,n,t){var d={code:a,grammar:n,language:t,tokens:[]};e.hooks.run("before-tokenize",d);var r=d.tokens=e.tokenize(d.code,d.grammar,d.language);return e.hooks.run("after-tokenize",d),r}))}return e&&(a.__proto__=e),a.prototype=Object.create(e&&e.prototype),a.prototype.constructor=a,a.prototype.render=function(){var e=this.props,a=e.Prism,n=e.language,t=e.code,d=e.children,r=this.getThemeDict(this.props),o=a.languages[n];return d({tokens:function(e){for(var a=[[]],n=[e],t=[0],d=[e.length],r=0,o=0,i=[],s=[i];o>-1;){for(;(r=t[o]++)0?c:["plain"],g=u):(c=Ft(c,u.type),u.alias&&(c=Ft(c,u.alias)),g=u.content),"string"==typeof g){var l=g.split(Ct),R=l.length;i.push({types:c,content:l[0]});for(var p=1;p=0||(d[n]=e[n]);return d}var Ut={plain:{color:"#C5C8C6",backgroundColor:"#1D1F21"},styles:[{types:["prolog","comment","doctype","cdata"],style:{color:"hsl(30, 20%, 50%)"}},{types:["property","tag","boolean","number","constant","symbol"],style:{color:"hsl(350, 40%, 70%)"}},{types:["attr-name","string","char","builtin","insterted"],style:{color:"hsl(75, 70%, 60%)"}},{types:["operator","entity","url","string","variable","language-css"],style:{color:"hsl(40, 90%, 60%)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["regex","important"],style:{color:"#e90"}},{types:["atrule","attr-value","keyword"],style:{color:"hsl(350, 40%, 70%)"}},{types:["punctuation","symbol"],style:{opacity:"0.7"}}]},Gt=["style","theme","onChange"];function Ht(e,a){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);a&&(t=t.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),n.push.apply(n,t)}return n}function Wt(e){for(var a=1;a=a||n<0||u&&e-g>=r}function h(){var e=Hd();if(f(e))return m(e);i=setTimeout(h,function(e){var n=a-(e-s);return u?pr(n,r-(e-g)):n}(e))}function m(e){return i=void 0,l&&t?R(e):(t=d=void 0,o)}function b(){var e=Hd(),n=f(e);if(t=arguments,d=this,s=e,n){if(void 0===i)return p(s);if(u)return clearTimeout(i),i=setTimeout(h,a),R(s)}return void 0===i&&(i=setTimeout(h,a)),o}return a=lr(a)||0,qd(n)&&(c=!!n.leading,r=(u="maxWait"in n)?Rr(lr(n.maxWait)||0,a):r,l="trailing"in n?!!n.trailing:l),b.cancel=function(){void 0!==i&&clearTimeout(i),g=0,t=s=d=i=void 0},b.flush=function(){return void 0===i?o:m(Hd())},b};var hr=function(e,a,n){var t=!0,d=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return qd(n)&&(t="leading"in n?!!n.leading:t,d="trailing"in n?!!n.trailing:d),fr(e,a,{leading:t,maxWait:a,trailing:d})},mr={debounce:fr,throttle:hr},br=function(e){return"function"==typeof e},yr=function(){return"undefined"==typeof window};function vr(e){return(vr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function jr(e,a){if(!(e instanceof a))throw new TypeError("Cannot call a class as a function")}function Or(e,a){for(var n=0;n({p:2,background:e.plain.backgroundColor,borderTop:0,fontFamily:"monospace",fontSize:18,"* > textarea:focus":{outline:"none"},borderRadius:"inherit"});void 0!==zr&&zr&&zr===Object(zr)&&Object.isExtensible(zr)&&!Object.prototype.hasOwnProperty.call(zr,"__filemeta")&&Object.defineProperty(zr,"__filemeta",{configurable:!0,value:{name:"editor",filename:"node_modules/gatsby-theme-docz/src/components/Playground/styles.js"}}),void 0!==zr&&zr&&zr===Object(zr)&&Object.isExtensible(zr)&&!Object.prototype.hasOwnProperty.call(zr,"__filemeta")&&Object.defineProperty(zr,"__filemeta",{configurable:!0,value:{name:"editor",filename:"node_modules/gatsby-theme-docz/src/components/Playground/styles.js"}});const qr={m:0,py:2,px:3,bg:"#FF4757",fontSize:1,color:"white",whiteSpace:"pre-wrap"};void 0!==qr&&qr&&qr===Object(qr)&&Object.isExtensible(qr)&&!Object.prototype.hasOwnProperty.call(qr,"__filemeta")&&Object.defineProperty(qr,"__filemeta",{configurable:!0,value:{name:"error",filename:"node_modules/gatsby-theme-docz/src/components/Playground/styles.js"}}),void 0!==qr&&qr&&qr===Object(qr)&&Object.isExtensible(qr)&&!Object.prototype.hasOwnProperty.call(qr,"__filemeta")&&Object.defineProperty(qr,"__filemeta",{configurable:!0,value:{name:"error",filename:"node_modules/gatsby-theme-docz/src/components/Playground/styles.js"}});const Vr={position:"relative"};void 0!==Vr&&Vr&&Vr===Object(Vr)&&Object.isExtensible(Vr)&&!Object.prototype.hasOwnProperty.call(Vr,"__filemeta")&&Object.defineProperty(Vr,"__filemeta",{configurable:!0,value:{name:"previewWrapper",filename:"node_modules/gatsby-theme-docz/src/components/Playground/styles.js"}}),void 0!==Vr&&Vr&&Vr===Object(Vr)&&Object.isExtensible(Vr)&&!Object.prototype.hasOwnProperty.call(Vr,"__filemeta")&&Object.defineProperty(Vr,"__filemeta",{configurable:!0,value:{name:"previewWrapper",filename:"node_modules/gatsby-theme-docz/src/components/Playground/styles.js"}});const Ur=()=>({height:"auto",display:"block",minHeight:"100%",width:"calc(100% - 2px)",bg:"playground.bg"});void 0!==Ur&&Ur&&Ur===Object(Ur)&&Object.isExtensible(Ur)&&!Object.prototype.hasOwnProperty.call(Ur,"__filemeta")&&Object.defineProperty(Ur,"__filemeta",{configurable:!0,value:{name:"wrapper",filename:"node_modules/gatsby-theme-docz/src/components/Playground/styles.js"}}),void 0!==Ur&&Ur&&Ur===Object(Ur)&&Object.isExtensible(Ur)&&!Object.prototype.hasOwnProperty.call(Ur,"__filemeta")&&Object.defineProperty(Ur,"__filemeta",{configurable:!0,value:{name:"wrapper",filename:"node_modules/gatsby-theme-docz/src/components/Playground/styles.js"}});const Gr=(e,a)=>{let n=4;return a&&(n="preview"===e?"4px 4px 0 0":"0 0 4px 4px"),{border:e=>"1px solid "+e.colors.playground.border,borderTop:"editor"===e?0:void 0,borderRadius:n}};void 0!==Gr&&Gr&&Gr===Object(Gr)&&Object.isExtensible(Gr)&&!Object.prototype.hasOwnProperty.call(Gr,"__filemeta")&&Object.defineProperty(Gr,"__filemeta",{configurable:!0,value:{name:"wrapperBorder",filename:"node_modules/gatsby-theme-docz/src/components/Playground/styles.js"}}),void 0!==Gr&&Gr&&Gr===Object(Gr)&&Object.isExtensible(Gr)&&!Object.prototype.hasOwnProperty.call(Gr,"__filemeta")&&Object.defineProperty(Gr,"__filemeta",{configurable:!0,value:{name:"wrapperBorder",filename:"node_modules/gatsby-theme-docz/src/components/Playground/styles.js"}});const Hr={margin:0,padding:"20px"};void 0!==Hr&&Hr&&Hr===Object(Hr)&&Object.isExtensible(Hr)&&!Object.prototype.hasOwnProperty.call(Hr,"__filemeta")&&Object.defineProperty(Hr,"__filemeta",{configurable:!0,value:{name:"preview",filename:"node_modules/gatsby-theme-docz/src/components/Playground/styles.js"}}),void 0!==Hr&&Hr&&Hr===Object(Hr)&&Object.isExtensible(Hr)&&!Object.prototype.hasOwnProperty.call(Hr,"__filemeta")&&Object.defineProperty(Hr,"__filemeta",{configurable:!0,value:{name:"preview",filename:"node_modules/gatsby-theme-docz/src/components/Playground/styles.js"}});const Wr={zIndex:9,display:"flex",position:"absolute",bottom:-20,right:4};void 0!==Wr&&Wr&&Wr===Object(Wr)&&Object.isExtensible(Wr)&&!Object.prototype.hasOwnProperty.call(Wr,"__filemeta")&&Object.defineProperty(Wr,"__filemeta",{configurable:!0,value:{name:"buttons",filename:"node_modules/gatsby-theme-docz/src/components/Playground/styles.js"}}),void 0!==Wr&&Wr&&Wr===Object(Wr)&&Object.isExtensible(Wr)&&!Object.prototype.hasOwnProperty.call(Wr,"__filemeta")&&Object.defineProperty(Wr,"__filemeta",{configurable:!0,value:{name:"buttons",filename:"node_modules/gatsby-theme-docz/src/components/Playground/styles.js"}});const Kr=Mr(Mr({},Za),{},{display:"flex",alignItems:"center",py:1,p:2,bg:"border",color:"muted",borderRadius:"0 0 3px 3px","& ~ &":{ml:1}});void 0!==Kr&&Kr&&Kr===Object(Kr)&&Object.isExtensible(Kr)&&!Object.prototype.hasOwnProperty.call(Kr,"__filemeta")&&Object.defineProperty(Kr,"__filemeta",{configurable:!0,value:{name:"button",filename:"node_modules/gatsby-theme-docz/src/components/Playground/styles.js"}}),void 0!==Kr&&Kr&&Kr===Object(Kr)&&Object.isExtensible(Kr)&&!Object.prototype.hasOwnProperty.call(Kr,"__filemeta")&&Object.defineProperty(Kr,"__filemeta",{configurable:!0,value:{name:"button",filename:"node_modules/gatsby-theme-docz/src/components/Playground/styles.js"}});const Yr={py:0,ml:1,height:22};function Zr(e,a){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);a&&(t=t.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),n.push.apply(n,t)}return n}function $r(e){for(var a=1;a{let{children:a,style:n}=e;const{0:t,1:d}=Object(l.useState)();return Object(j.h)(Id.a,{initialContent:"
    ",sx:$r($r({},{height:"auto",display:"block",minHeight:"100%",width:"calc(100% - 2px)",bg:"playground.bg"}),{},{style:n,height:t})},a,Object(j.h)(Nr,{handleHeight:!0,onResize:e=>{let{height:a}=e;d(a)}}))},Qr=e=>{let{children:a,style:n}=e;return Object(j.h)("div",{sx:$r($r({},{height:"auto",display:"block",minHeight:"100%",width:"calc(100% - 2px)",bg:"playground.bg"}),n)},a)},Jr=e=>{let{children:a,content:n,useScoping:t,showingCode:d}=e;const{themeConfig:{useScopingInPlayground:r}}=Object(p.e)(),o=t||r?Xr:Qr;return Object(j.h)(o,{style:Gr(n,d)},a)};void 0!==Jr&&Jr&&Jr===Object(Jr)&&Object.isExtensible(Jr)&&!Object.prototype.hasOwnProperty.call(Jr,"__filemeta")&&Object.defineProperty(Jr,"__filemeta",{configurable:!0,value:{name:"Wrapper",filename:"node_modules/gatsby-theme-docz/src/components/Playground/Wrapper.js"}}),void 0!==Jr&&Jr&&Jr===Object(Jr)&&Object.isExtensible(Jr)&&!Object.prototype.hasOwnProperty.call(Jr,"__filemeta")&&Object.defineProperty(Jr,"__filemeta",{configurable:!0,value:{name:"Wrapper",filename:"node_modules/gatsby-theme-docz/src/components/Playground/Wrapper.js"}});var eo=n("nRzq"),ao=n.n(eo),no=n("xXH7"),to=n.n(no);const ro=e=>a=>g()("theme."+e,a);void 0!==ro&&ro&&ro===Object(ro)&&Object.isExtensible(ro)&&!Object.prototype.hasOwnProperty.call(ro,"__filemeta")&&Object.defineProperty(ro,"__filemeta",{configurable:!0,value:{name:"themeProp",filename:"node_modules/gatsby-theme-docz/src/utils/theme.js"}}),void 0!==ro&&ro&&ro===Object(ro)&&Object.isExtensible(ro)&&!Object.prototype.hasOwnProperty.call(ro,"__filemeta")&&Object.defineProperty(ro,"__filemeta",{configurable:!0,value:{name:"themeProp",filename:"node_modules/gatsby-theme-docz/src/utils/theme.js"}});const oo=()=>{const{theme:e,colorMode:a}=Object(j.j)();return to()(g()("prismTheme"),ao()(g()("prism."+a,e)))(e)};void 0!==oo&&oo&&oo===Object(oo)&&Object.isExtensible(oo)&&!Object.prototype.hasOwnProperty.call(oo,"__filemeta")&&Object.defineProperty(oo,"__filemeta",{configurable:!0,value:{name:"usePrismTheme",filename:"node_modules/gatsby-theme-docz/src/utils/theme.js"}}),void 0!==oo&&oo&&oo===Object(oo)&&Object.isExtensible(oo)&&!Object.prototype.hasOwnProperty.call(oo,"__filemeta")&&Object.defineProperty(oo,"__filemeta",{configurable:!0,value:{name:"usePrismTheme",filename:"node_modules/gatsby-theme-docz/src/utils/theme.js"}});const io=e=>e.startsWith("()")||e.startsWith("class")?e:""+e+"",so=e=>{let{code:a,scope:n,language:t,useScoping:d=!1}=e;const{themeConfig:{showPlaygroundEditor:o,showLiveError:i,showLivePreview:s}}=Object(p.e)(),{0:g}=Object(l.useState)(n),c=oo(),{0:u,1:R}=Object(l.useState)(o),{0:f,1:h}=Object(l.useState)("100%"),m=((e,a)=>({minWidth:260,maxWidth:"100%",size:{width:e,height:"auto"},style:{margin:0,marginRight:"auto"},enable:{top:!1,right:!0,bottom:!1,left:!1,topRight:!1,bottomRight:!1,bottomLeft:!1,topLeft:!1},onResizeStop:(e,n,t)=>{a(t.style.width)}}))(f,h);return Object(j.h)(Td,Object(r.a)({},m,{"data-testid":"playground"}),Object(j.h)(gd,{code:a,scope:g,transformCode:io,language:t,theme:c},Object(j.h)("div",{sx:Vr},Object(j.h)(Jr,{content:"preview",useScoping:d,showingCode:u},s&&Object(j.h)(Rd,{sx:Hr,"data-testid":"live-preview"})),Object(j.h)("div",{sx:Wr},Object(j.h)("button",{sx:Kr,onClick:()=>Bd()(a)},Object(j.h)(yn,{size:12})),Object(j.h)("button",{sx:Kr,onClick:()=>R(e=>!e)},Object(j.h)(_n,{size:12})))),u&&Object(j.h)(Jr,{content:"editor",useScoping:d,showingCode:u},Object(j.h)("div",{sx:zr(c)},Object(j.h)(cd,{"data-testid":"live-editor"}))),i&&Object(j.h)(ud,{sx:qr,"data-testid":"live-error"})))};function go(e,a){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);a&&(t=t.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),n.push.apply(n,t)}return n}function co(e){for(var a=1;a"1px solid "+e.colors.border,borderRadius:"radius",overflow:"hidden",bg:"props.bg",color:"props.text",fontSize:3};void 0!==uo&&uo&&uo===Object(uo)&&Object.isExtensible(uo)&&!Object.prototype.hasOwnProperty.call(uo,"__filemeta")&&Object.defineProperty(uo,"__filemeta",{configurable:!0,value:{name:"container",filename:"node_modules/gatsby-theme-docz/src/components/Props/styles.js"}}),void 0!==uo&&uo&&uo===Object(uo)&&Object.isExtensible(uo)&&!Object.prototype.hasOwnProperty.call(uo,"__filemeta")&&Object.defineProperty(uo,"__filemeta",{configurable:!0,value:{name:"container",filename:"node_modules/gatsby-theme-docz/src/components/Props/styles.js"}});const lo={position:"relative",display:"flex",flexDirection:"column",["@media (min-width: "+Xa.tablet+"px)"]:{flexWrap:"nowrap",flexDirection:"row"}};void 0!==lo&&lo&&lo===Object(lo)&&Object.isExtensible(lo)&&!Object.prototype.hasOwnProperty.call(lo,"__filemeta")&&Object.defineProperty(lo,"__filemeta",{configurable:!0,value:{name:"content",filename:"node_modules/gatsby-theme-docz/src/components/Props/styles.js"}}),void 0!==lo&&lo&&lo===Object(lo)&&Object.isExtensible(lo)&&!Object.prototype.hasOwnProperty.call(lo,"__filemeta")&&Object.defineProperty(lo,"__filemeta",{configurable:!0,value:{name:"content",filename:"node_modules/gatsby-theme-docz/src/components/Props/styles.js"}});const Ro={pt:2,"& + &":{borderTop:e=>"1px solid "+e.colors.border}};void 0!==Ro&&Ro&&Ro===Object(Ro)&&Object.isExtensible(Ro)&&!Object.prototype.hasOwnProperty.call(Ro,"__filemeta")&&Object.defineProperty(Ro,"__filemeta",{configurable:!0,value:{name:"line",filename:"node_modules/gatsby-theme-docz/src/components/Props/styles.js"}}),void 0!==Ro&&Ro&&Ro===Object(Ro)&&Object.isExtensible(Ro)&&!Object.prototype.hasOwnProperty.call(Ro,"__filemeta")&&Object.defineProperty(Ro,"__filemeta",{configurable:!0,value:{name:"line",filename:"node_modules/gatsby-theme-docz/src/components/Props/styles.js"}});const po={minWidth:0,pb:2,px:3,"& ~ &":{bg:"red"}},fo=co(co({},po),{},{color:"props.highlight"});void 0!==fo&&fo&&fo===Object(fo)&&Object.isExtensible(fo)&&!Object.prototype.hasOwnProperty.call(fo,"__filemeta")&&Object.defineProperty(fo,"__filemeta",{configurable:!0,value:{name:"propName",filename:"node_modules/gatsby-theme-docz/src/components/Props/styles.js"}}),void 0!==fo&&fo&&fo===Object(fo)&&Object.isExtensible(fo)&&!Object.prototype.hasOwnProperty.call(fo,"__filemeta")&&Object.defineProperty(fo,"__filemeta",{configurable:!0,value:{name:"propName",filename:"node_modules/gatsby-theme-docz/src/components/Props/styles.js"}});const ho=co(co({},po),{},{color:"props.text"});void 0!==ho&&ho&&ho===Object(ho)&&Object.isExtensible(ho)&&!Object.prototype.hasOwnProperty.call(ho,"__filemeta")&&Object.defineProperty(ho,"__filemeta",{configurable:!0,value:{name:"propType",filename:"node_modules/gatsby-theme-docz/src/components/Props/styles.js"}}),void 0!==ho&&ho&&ho===Object(ho)&&Object.isExtensible(ho)&&!Object.prototype.hasOwnProperty.call(ho,"__filemeta")&&Object.defineProperty(ho,"__filemeta",{configurable:!0,value:{name:"propType",filename:"node_modules/gatsby-theme-docz/src/components/Props/styles.js"}});const mo=co(co({},po),{},{color:"props.defaultValue"});void 0!==mo&&mo&&mo===Object(mo)&&Object.isExtensible(mo)&&!Object.prototype.hasOwnProperty.call(mo,"__filemeta")&&Object.defineProperty(mo,"__filemeta",{configurable:!0,value:{name:"defaultValue",filename:"node_modules/gatsby-theme-docz/src/components/Props/styles.js"}}),void 0!==mo&&mo&&mo===Object(mo)&&Object.isExtensible(mo)&&!Object.prototype.hasOwnProperty.call(mo,"__filemeta")&&Object.defineProperty(mo,"__filemeta",{configurable:!0,value:{name:"defaultValue",filename:"node_modules/gatsby-theme-docz/src/components/Props/styles.js"}});const bo={display:"flex",alignItems:"center",justifyContent:"flex-end",px:3,flex:1,["@media (max-width: "+Xa.tablet+"px)"]:{position:"absolute",top:0,right:0}};void 0!==bo&&bo&&bo===Object(bo)&&Object.isExtensible(bo)&&!Object.prototype.hasOwnProperty.call(bo,"__filemeta")&&Object.defineProperty(bo,"__filemeta",{configurable:!0,value:{name:"right",filename:"node_modules/gatsby-theme-docz/src/components/Props/styles.js"}}),void 0!==bo&&bo&&bo===Object(bo)&&Object.isExtensible(bo)&&!Object.prototype.hasOwnProperty.call(bo,"__filemeta")&&Object.defineProperty(bo,"__filemeta",{configurable:!0,value:{name:"right",filename:"node_modules/gatsby-theme-docz/src/components/Props/styles.js"}});const yo={color:"props.text",fontSize:1,opacity:.5};void 0!==yo&&yo&&yo===Object(yo)&&Object.isExtensible(yo)&&!Object.prototype.hasOwnProperty.call(yo,"__filemeta")&&Object.defineProperty(yo,"__filemeta",{configurable:!0,value:{name:"propRequired",filename:"node_modules/gatsby-theme-docz/src/components/Props/styles.js"}}),void 0!==yo&&yo&&yo===Object(yo)&&Object.isExtensible(yo)&&!Object.prototype.hasOwnProperty.call(yo,"__filemeta")&&Object.defineProperty(yo,"__filemeta",{configurable:!0,value:{name:"propRequired",filename:"node_modules/gatsby-theme-docz/src/components/Props/styles.js"}});const vo=co(co({},Za),{},{mt:0,ml:3,color:"props.defaultValue"});void 0!==vo&&vo&&vo===Object(vo)&&Object.isExtensible(vo)&&!Object.prototype.hasOwnProperty.call(vo,"__filemeta")&&Object.defineProperty(vo,"__filemeta",{configurable:!0,value:{name:"openDescBtn",filename:"node_modules/gatsby-theme-docz/src/components/Props/styles.js"}}),void 0!==vo&&vo&&vo===Object(vo)&&Object.isExtensible(vo)&&!Object.prototype.hasOwnProperty.call(vo,"__filemeta")&&Object.defineProperty(vo,"__filemeta",{configurable:!0,value:{name:"openDescBtn",filename:"node_modules/gatsby-theme-docz/src/components/Props/styles.js"}});const jo={fontSize:2,m:0,py:2,px:3,borderTop:e=>"1px solid "+e.colors.border,color:"props.descriptionText",bg:"props.descriptionBg"};void 0!==jo&&jo&&jo===Object(jo)&&Object.isExtensible(jo)&&!Object.prototype.hasOwnProperty.call(jo,"__filemeta")&&Object.defineProperty(jo,"__filemeta",{configurable:!0,value:{name:"description",filename:"node_modules/gatsby-theme-docz/src/components/Props/styles.js"}}),void 0!==jo&&jo&&jo===Object(jo)&&Object.isExtensible(jo)&&!Object.prototype.hasOwnProperty.call(jo,"__filemeta")&&Object.defineProperty(jo,"__filemeta",{configurable:!0,value:{name:"description",filename:"node_modules/gatsby-theme-docz/src/components/Props/styles.js"}});const Oo=e=>{let{defaultValue:a,type:n,flowType:t}=e;const d=t||n;return a&&a.value?"''"===a.value?"[Empty string]":d&&"string"===d.name?a.value.replace(/\'/g,'"'):"object"==typeof a.value&&a.value.toString?a.value.toString():a.value:null};void 0!==Oo&&Oo&&Oo===Object(Oo)&&Object.isExtensible(Oo)&&!Object.prototype.hasOwnProperty.call(Oo,"__filemeta")&&Object.defineProperty(Oo,"__filemeta",{configurable:!0,value:{name:"getDefaultValue",filename:"node_modules/gatsby-theme-docz/src/components/Props/index.js"}}),void 0!==Oo&&Oo&&Oo===Object(Oo)&&Object.isExtensible(Oo)&&!Object.prototype.hasOwnProperty.call(Oo,"__filemeta")&&Object.defineProperty(Oo,"__filemeta",{configurable:!0,value:{name:"getDefaultValue",filename:"node_modules/gatsby-theme-docz/src/components/Props/index.js"}});const _o=e=>{let{propName:a,prop:n,getPropType:t,isToggle:d}=e;const{0:r,1:o}=Object(l.useState)(d||!1);if(!n.type&&!n.flowType)return null;return Object(j.h)("div",{sx:Ro,"data-testid":"prop"},Object(j.h)("div",{sx:lo},Object(j.h)("div",{sx:fo,"data-testid":"prop-name"},a),Object(j.h)("div",{sx:ho,"data-testid":"prop-type"},t(n)),n.defaultValue&&Object(j.h)("div",{sx:mo,"data-testid":"prop-default-value"},Object(j.h)("em",null,Oo(n))),Object(j.h)("div",{sx:bo},n.required&&Object(j.h)("div",{sx:yo,"data-testid":"prop-required"},Object(j.h)("strong",null,"required")),n.description&&Object(j.h)("button",{sx:vo,onClick:()=>o(e=>!e),"data-testid":"prop-toggle-description"},r?Object(j.h)(fn,{size:20}):Object(j.h)(un,{size:20})))),r&&n.description&&Object(j.h)("div",{sx:jo,"data-testid":"prop-description"},n.description))};void 0!==_o&&_o&&_o===Object(_o)&&Object.isExtensible(_o)&&!Object.prototype.hasOwnProperty.call(_o,"__filemeta")&&Object.defineProperty(_o,"__filemeta",{configurable:!0,value:{name:"Prop",filename:"node_modules/gatsby-theme-docz/src/components/Props/index.js"}}),void 0!==_o&&_o&&_o===Object(_o)&&Object.isExtensible(_o)&&!Object.prototype.hasOwnProperty.call(_o,"__filemeta")&&Object.defineProperty(_o,"__filemeta",{configurable:!0,value:{name:"Prop",filename:"node_modules/gatsby-theme-docz/src/components/Props/index.js"}});const xo=e=>{let{props:a,getPropType:n,isToggle:t}=e;const d=Object.entries(a);return Object(j.h)("div",{sx:uo,"data-testid":"props"},d.map(e=>{let[a,d]=e;return Object(j.h)(_o,{key:a,propName:a,prop:d,getPropType:n,isToggle:t})}))};void 0!==xo&&xo&&xo===Object(xo)&&Object.isExtensible(xo)&&!Object.prototype.hasOwnProperty.call(xo,"__filemeta")&&Object.defineProperty(xo,"__filemeta",{configurable:!0,value:{name:"Props",filename:"node_modules/gatsby-theme-docz/src/components/Props/index.js"}}),void 0!==xo&&xo&&xo===Object(xo)&&Object.isExtensible(xo)&&!Object.prototype.hasOwnProperty.call(xo,"__filemeta")&&Object.defineProperty(xo,"__filemeta",{configurable:!0,value:{name:"Props",filename:"node_modules/gatsby-theme-docz/src/components/Props/index.js"}});n("XDiy"),n("75zu");function wo(e,a){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);a&&(t=t.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),n.push.apply(n,t)}return n}function Eo(e){for(var a=1;aObject(j.h)("code",{sx:Eo(Eo({},e.style),{},{fontFamily:"Fira Mono, monospace",fontSize:"1rem"})},e.children);void 0!==ko&&ko&&ko===Object(ko)&&Object.isExtensible(ko)&&!Object.prototype.hasOwnProperty.call(ko,"__filemeta")&&Object.defineProperty(ko,"__filemeta",{configurable:!0,value:{name:"Code",filename:"src/gatsby-theme-docz/components/codeblock.js"}}),void 0!==ko&&ko&&ko===Object(ko)&&Object.isExtensible(ko)&&!Object.prototype.hasOwnProperty.call(ko,"__filemeta")&&Object.defineProperty(ko,"__filemeta",{configurable:!0,value:{name:"Code",filename:"src/gatsby-theme-docz/components/codeblock.js"}});const So=e=>{const a=R.a.Children.toArray(e.children).reduce((e,a)=>{var n;return"vscode-highlight-line"===(null==a||null===(n=a.props)||void 0===n?void 0:n.className)?e+1:e},0);return Object(j.h)(ko,null,a>20?Object(j.h)(Ao,null,e.children):e.children)};void 0!==So&&So&&So===Object(So)&&Object.isExtensible(So)&&!Object.prototype.hasOwnProperty.call(So,"__filemeta")&&Object.defineProperty(So,"__filemeta",{configurable:!0,value:{name:"CodeBlock",filename:"src/gatsby-theme-docz/components/codeblock.js"}}),void 0!==So&&So&&So===Object(So)&&Object.isExtensible(So)&&!Object.prototype.hasOwnProperty.call(So,"__filemeta")&&Object.defineProperty(So,"__filemeta",{configurable:!0,value:{name:"CodeBlock",filename:"src/gatsby-theme-docz/components/codeblock.js"}});const Do=e=>Object(j.h)("pre",Object(r.a)({},e,{sx:Eo(Eo({},Re.pre),{},{fontSize:"1rem",lineHeight:1.4,overflowX:"auto"})}));void 0!==Do&&Do&&Do===Object(Do)&&Object.isExtensible(Do)&&!Object.prototype.hasOwnProperty.call(Do,"__filemeta")&&Object.defineProperty(Do,"__filemeta",{configurable:!0,value:{name:"Pre",filename:"src/gatsby-theme-docz/components/codeblock.js"}}),void 0!==Do&&Do&&Do===Object(Do)&&Object.isExtensible(Do)&&!Object.prototype.hasOwnProperty.call(Do,"__filemeta")&&Object.defineProperty(Do,"__filemeta",{configurable:!0,value:{name:"Pre",filename:"src/gatsby-theme-docz/components/codeblock.js"}});const Ao=e=>{const{0:a,1:n}=Object(l.useState)(!1);return Object(j.h)(R.a.Fragment,null,a?e.children:R.a.Children.map(e.children,(e,a)=>{if(a<40)return e}),Object(j.h)(Co,{toggled:a,onClick:()=>n(!a)}))},Co=e=>Object(j.h)("button",{onClick:e.onClick,sx:{background:"inherit",border:"none",color:"inherit",fontFamily:"inherit",fontSize:"inherit",textDecoration:"underline",cursor:"pointer",":hover":{textDecoration:"none"},display:"flex",padding:0,width:"100%",justifyContent:"center"}},Object(j.h)("div",{sx:{display:"flex",alignItems:"center"}},e.toggled?Object(j.h)(fn,null):Object(j.h)(un,null),"Show ",e.toggled?"less":"more"));function Po(e,a){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);a&&(t=t.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),n.push.apply(n,t)}return n}function Fo(e){for(var a=1;aObject(j.h)(ko,{style:{background:To}},e.children),Bo=Fo(Fo({},d),{},{playground:so,layout:_t,props:xo,code:So,pre:Do,blockquote:e=>Object(j.h)("div",{sx:{borderLeft:".25em solid black",borderColor:"text",padding:".25em",paddingLeft:"1em",background:To,marginBottom:"1rem"}},R.a.Children.map(e.children,(a,n)=>n===R.a.Children.toArray(e.children).length-1?R.a.cloneElement(a,{style:{marginBottom:0}}):a)),table:e=>Object(j.h)("div",{sx:{overflowX:"auto"}},Object(j.h)("table",Object(r.a)({},e,{sx:Fo({},Re.table)}))),inlineCode:Lo});var No=Bo;void 0!==Bo&&Bo&&Bo===Object(Bo)&&Object.isExtensible(Bo)&&!Object.prototype.hasOwnProperty.call(Bo,"__filemeta")&&Object.defineProperty(Bo,"__filemeta",{configurable:!0,value:{name:"__DOCZ_DUMMY_EXPORT_DEFAULT",filename:"src/gatsby-theme-docz/components/index.js"}}),void 0!==Lo&&Lo&&Lo===Object(Lo)&&Object.isExtensible(Lo)&&!Object.prototype.hasOwnProperty.call(Lo,"__filemeta")&&Object.defineProperty(Lo,"__filemeta",{configurable:!0,value:{name:"inlineCode",filename:"src/gatsby-theme-docz/components/index.js"}}),"undefined"!=typeof table&&table&&table===Object(table)&&Object.isExtensible(table)&&!Object.prototype.hasOwnProperty.call(table,"__filemeta")&&Object.defineProperty(table,"__filemeta",{configurable:!0,value:{name:"table",filename:"src/gatsby-theme-docz/components/index.js"}}),"undefined"!=typeof blockquote&&blockquote&&blockquote===Object(blockquote)&&Object.isExtensible(blockquote)&&!Object.prototype.hasOwnProperty.call(blockquote,"__filemeta")&&Object.defineProperty(blockquote,"__filemeta",{configurable:!0,value:{name:"blockquote",filename:"src/gatsby-theme-docz/components/index.js"}}),"undefined"!=typeof pre&&pre&&pre===Object(pre)&&Object.isExtensible(pre)&&!Object.prototype.hasOwnProperty.call(pre,"__filemeta")&&Object.defineProperty(pre,"__filemeta",{configurable:!0,value:{name:"pre",filename:"src/gatsby-theme-docz/components/index.js"}}),"undefined"!=typeof code&&code&&code===Object(code)&&Object.isExtensible(code)&&!Object.prototype.hasOwnProperty.call(code,"__filemeta")&&Object.defineProperty(code,"__filemeta",{configurable:!0,value:{name:"code",filename:"src/gatsby-theme-docz/components/index.js"}}),"undefined"!=typeof props&&props&&props===Object(props)&&Object.isExtensible(props)&&!Object.prototype.hasOwnProperty.call(props,"__filemeta")&&Object.defineProperty(props,"__filemeta",{configurable:!0,value:{name:"props",filename:"src/gatsby-theme-docz/components/index.js"}}),"undefined"!=typeof layout&&layout&&layout===Object(layout)&&Object.isExtensible(layout)&&!Object.prototype.hasOwnProperty.call(layout,"__filemeta")&&Object.defineProperty(layout,"__filemeta",{configurable:!0,value:{name:"layout",filename:"src/gatsby-theme-docz/components/index.js"}}),"undefined"!=typeof playground&&playground&&playground===Object(playground)&&Object.isExtensible(playground)&&!Object.prototype.hasOwnProperty.call(playground,"__filemeta")&&Object.defineProperty(playground,"__filemeta",{configurable:!0,value:{name:"playground",filename:"src/gatsby-theme-docz/components/index.js"}});const Io=Object(p.c)(be)(e=>{let{children:a}=e;const n=Object(p.e)();return Object(j.h)(j.g,{theme:n.themeConfig},Object(j.h)(p.a,{components:No},Object(j.h)(j.f.root,null,a)))});var Mo=Io;void 0!==Io&&Io&&Io===Object(Io)&&Object.isExtensible(Io)&&!Object.prototype.hasOwnProperty.call(Io,"__filemeta")&&Object.defineProperty(Io,"__filemeta",{configurable:!0,value:{name:"__DOCZ_DUMMY_EXPORT_DEFAULT",filename:"node_modules/gatsby-theme-docz/src/index.js"}}),void 0!==Io&&Io&&Io===Object(Io)&&Object.isExtensible(Io)&&!Object.prototype.hasOwnProperty.call(Io,"__filemeta")&&Object.defineProperty(Io,"__filemeta",{configurable:!0,value:{name:"__DOCZ_DUMMY_EXPORT_DEFAULT",filename:"node_modules/gatsby-theme-docz/src/index.js"}});var zo=n("rid2");const qo=e=>{let{description:a,lang:n,meta:t,keywords:d,title:r}=e;const o=m(),i=r||o.config.title,s=a||o.config.description;return Object(b.d)(zo.Helmet,{title:i,titleTemplate:"%s | "+o.config.title,htmlAttributes:{lang:n},meta:[{name:"description",content:s},{property:"og:title",content:i},{property:"og:description",content:s},{property:"og:type",content:"website"},{name:"twitter:card",content:"summary"},{name:"twitter:title",content:i},{name:"twitter:description",content:s}].concat(d.length>0?{name:"keywords",content:d.join(", ")}:[]).concat(t)})};qo.defaultProps={lang:"en",meta:[],keywords:[]};var Vo=qo;void 0!==qo&&qo&&qo===Object(qo)&&Object.isExtensible(qo)&&!Object.prototype.hasOwnProperty.call(qo,"__filemeta")&&Object.defineProperty(qo,"__filemeta",{configurable:!0,value:{name:"SEO",filename:"node_modules/gatsby-theme-docz/src/base/Seo.js"}}),void 0!==qo&&qo&&qo===Object(qo)&&Object.isExtensible(qo)&&!Object.prototype.hasOwnProperty.call(qo,"__filemeta")&&Object.defineProperty(qo,"__filemeta",{configurable:!0,value:{name:"SEO",filename:"node_modules/gatsby-theme-docz/src/base/Seo.js"}});const Uo=["children","entry","isTransclusion"],Go=["children"];function Ho(e,a){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);a&&(t=t.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),n.push.apply(n,t)}return n}function Wo(e){for(var a=1;a{let{children:a,entry:n,isTransclusion:t}=e,d=Object(i.a)(e,Uo);const r=Object(p.d)(),o=r.notFound,s=r.layout,g=Wo(Wo({},d),{},{doc:n});return n||t?t?a:Object(b.d)(f.a,{components:r},Object(b.d)(v,null,Object(b.d)(s,g,a))):Object(b.d)(o,null)},Yo=e=>{let{children:a}=e,n=Object(i.a)(e,Go);const{pageContext:t}=n,d=m(),o=((e,a)=>{const n=a&&a.frontmatter&&"/"===a.frontmatter.route,t=u()("value.route","/");if(a&&!a.entry&&n)return e.entries.find(t);const d=g()("entry.filepath",a);return e.entries.find(u()("value.filepath",d))})(d,t),s=((e,a)=>{const{entries:n}=e,t=g()("_frontmatter.__filemeta.filename",a);return!a.pageContext&&n.includes(n.find(u()("value.filepath",t)))})(d,n);return Object(b.d)(R.a.Fragment,null,o&&Object(b.d)(Vo,Object(r.a)({title:o.value.name},o.value)),Object(b.d)(Mo,{db:d,currentEntry:o},Object(b.d)(Ko,Object(r.a)({},n,{entry:o,isTransclusion:s}),a)))};a.a=Yo;void 0!==Yo&&Yo&&Yo===Object(Yo)&&Object.isExtensible(Yo)&&!Object.prototype.hasOwnProperty.call(Yo,"__filemeta")&&Object.defineProperty(Yo,"__filemeta",{configurable:!0,value:{name:"Layout",filename:"node_modules/gatsby-theme-docz/src/base/Layout.js"}}),void 0!==Yo&&Yo&&Yo===Object(Yo)&&Object.isExtensible(Yo)&&!Object.prototype.hasOwnProperty.call(Yo,"__filemeta")&&Object.defineProperty(Yo,"__filemeta",{configurable:!0,value:{name:"Layout",filename:"node_modules/gatsby-theme-docz/src/base/Layout.js"}})},hqbx:function(e,a,n){"use strict";var t=n("TqRt");a.__esModule=!0,a.default=function(e,a,n){var t=f(n,a);return e.addEventListener("click",t),function(){return e.removeEventListener("click",t)}},a.routeThroughBrowserOrApp=a.hashShouldBeFollowed=a.pathIsNotHandledByApp=a.urlsAreOnSameOrigin=a.authorIsForcingNavigation=a.anchorsTargetIsEquivalentToSelf=a.findClosestAnchor=a.navigationWasHandledElsewhere=a.slashedPathname=a.userIsForcingNavigation=void 0;var d=t(n("oxjq")),r=n("Wbzz"),o=function(e){return 0!==e.button||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey};a.userIsForcingNavigation=o;var i=function(e){return"/"===e[0]?e:"/"+e};a.slashedPathname=i;var s=function(e){return e.defaultPrevented};a.navigationWasHandledElsewhere=s;var g=function(e){for(;e.parentNode;e=e.parentNode)if("a"===e.nodeName.toLowerCase())return e;return null};a.findClosestAnchor=g;var c=function(e){return!1===e.hasAttribute("target")||null==e.target||["_self",""].includes(e.target)||"_parent"===e.target&&(!e.ownerDocument.defaultView.parent||e.ownerDocument.defaultView.parent===e.ownerDocument.defaultView)||"_top"===e.target&&(!e.ownerDocument.defaultView.top||e.ownerDocument.defaultView.top===e.ownerDocument.defaultView)};a.anchorsTargetIsEquivalentToSelf=c;var u=function(e){return!0===e.hasAttribute("download")||!1===c(e)};a.authorIsForcingNavigation=u;var l=function(e,a){return e.protocol===a.protocol&&e.host===a.host};a.urlsAreOnSameOrigin=l;var R=function(e,a){return!1===a.test(i(e.pathname))||-1!==e.pathname.search(/^.*\.((?!htm)[a-z0-9]{1,5})$/i)};a.pathIsNotHandledByApp=R;var p=function(e,a){return""!==a.hash&&(""===a.pathname||a.pathname===e.pathname)};a.hashShouldBeFollowed=p;var f=function(e,a){return function(n){if(window.___failedResources)return!0;if(o(n))return!0;if(s(n))return!0;var t=g(n.target);if(null==t)return!0;if(u(t))return!0;var c=document.createElement("a");""!==t.href&&(c.href=t.href),"SVGAnimatedString"in window&&t.href instanceof SVGAnimatedString&&(c.href=t.href.animVal);var f=document.createElement("a");if(f.href=window.location.href,!1===l(f,c))return!0;var h=new RegExp("^"+(0,d.default)((0,r.withPrefix)("/")));if(R(c,h))return!0;if(p(f,c))return!0;if(a.excludePattern&&new RegExp(a.excludePattern).test(c.pathname))return!0;n.preventDefault();var m=i(c.pathname).replace(h,"/");return e(""+m+c.search+c.hash),!1}};a.routeThroughBrowserOrApp=f},hxO4:function(e,a,n){var t=n("sZCt")("merge",n("QkVN"));t.placeholder=n("wuTn"),e.exports=t},hxiM:function(e,a,n){var t=n("XGnz"),d=n("ut/Y"),r=n("EA7m"),o=n("LGYb"),i=n("3L66"),s=n("RBan"),g=r((function(e){var a=s(e);return i(a)&&(a=void 0),o(t(e,1,i,!0),d(a,2))}));e.exports=g},hy24:function(e,a,n){const t=n("dVj6")();t.addRange(1792,1805).addRange(1807,1866).addRange(1869,1871).addRange(2144,2154),e.exports=t},hypo:function(e,a,n){var t=n("O0oS");e.exports=function(e,a,n){"__proto__"==a&&t?t(e,a,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[a]=n}},i1w3:function(e,a,n){const t=n("dVj6")();t.addRange(66736,66771).addRange(66776,66811),e.exports=t},i6W2:function(e,a,n){const t=n("dVj6")(12343,65392,127488);t.addRange(12289,12291).addRange(12296,12305).addRange(12307,12319).addRange(12336,12341).addRange(12348,12349).addRange(12353,12438).addRange(12441,12448).addRange(12539,12540).addRange(65093,65094).addRange(65377,65381).addRange(65438,65439).addRange(110593,110879).addRange(110928,110930),e.exports=t},iGAk:function(e,a){a.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"},a.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]},a.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]},a.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2},a.iterateeRearg={mapKeys:[1],reduceRight:[1,0]},a.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]},a.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}},a.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}},a.realToAlias=function(){var e=Object.prototype.hasOwnProperty,n=a.aliasToReal,t={};for(var d in n){var r=n[d];e.call(t,r)?t[r].push(d):t[r]=[d]}return t}(),a.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"},a.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0},a.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}},iJwc:function(e,a,n){const t=n("dVj6")();t.addRange(66816,66855),e.exports=t},iSVu:function(e,a,n){var t=n("4zBA"),d=n("Fib7"),r=n("xs3f"),o=t(Function.toString);d(r.inspectSource)||(r.inspectSource=function(e){return o(e)}),e.exports=r.inspectSource},idKo:function(e,a,n){const t=n("dVj6")(2385,7383,7385,7392);t.addRange(7388,7389).addRange(70016,70111),e.exports=t},ieoY:function(e,a,n){var t=n("EldB"),d=n("Kz5y");e.exports=function(e,a,n){var r=1&a,o=t(e);return function a(){var t=this&&this!==d&&this instanceof a?o:e;return t.apply(r?n:this,arguments)}}},isMi:function(e,a,n){const t=n("dVj6")();t.addRange(6688,6750).addRange(6752,6780).addRange(6783,6793).addRange(6800,6809).addRange(6816,6829),e.exports=t},itsj:function(e,a){e.exports=function(e,a){if(("constructor"!==a||"function"!=typeof e[a])&&"__proto__"!=a)return e[a]}},"j/kN":function(e,a,n){var t=n("sZCt")("unionBy",n("hxiM"));t.placeholder=n("wuTn"),e.exports=t},jLBR:function(e,a,n){const t=n("dVj6")();t.addRange(4352,4607).addRange(12334,12335).addRange(12593,12686).addRange(12800,12830).addRange(12896,12926).addRange(43360,43388).addRange(44032,55203).addRange(55216,55238).addRange(55243,55291).addRange(65440,65470).addRange(65474,65479).addRange(65482,65487).addRange(65490,65495).addRange(65498,65500),e.exports=t},"jM+1":function(e,a,n){const t=n("dVj6")();t.addRange(69840,69864).addRange(69872,69881),e.exports=t},"jO/C":function(e,a){function n(e){return e?Array.isArray(e)?e.join("."):e:""}e.exports=function(e,a,t,d,r){if(null===(o=e)||"object"!=typeof o&&"function"!=typeof o||!a)return e;var o;if(a=n(a),t&&(a+="."+n(t)),d&&(a+="."+n(d)),r&&(a+="."+n(r)),a in e)return e[a];for(var i=a.split("."),s=i.length,g=-1;e&&++g-1}},jca9:function(e,a,n){const t=n("dVj6")(6149);t.addRange(6146,6147).addRange(43072,43127),e.exports=t},jdFt:function(e,a,n){const t=n("dVj6")();t.addRange(73440,73464),e.exports=t},jeLo:function(e,a,n){var t=n("juv8"),d=n("mTTR");e.exports=function(e){return t(e,d(e))}},jq6q:function(e,a,n){const t=n("dVj6")(183,1600,2042,2901,3654,3782,6154,6211,6823,7222,7291,12293,40981,42508,43471,43494,43632,43741,65392,70493,72344,94179);t.addRange(720,721).addRange(12337,12341).addRange(12445,12446).addRange(12540,12542).addRange(43763,43764).addRange(67457,67458).addRange(71110,71112).addRange(92994,92995).addRange(94176,94177).addRange(123196,123197).addRange(125252,125254),e.exports=t},jqES:function(e,a){var n="object"==typeof document&&document.all,t=void 0===n&&void 0!==n;e.exports={all:n,IS_HTMLDDA:t}},juuj:function(e,a,n){const t=n("dVj6")();t.addRange(113664,113770).addRange(113776,113788).addRange(113792,113800).addRange(113808,113817).addRange(113820,113823),e.exports=t},juv8:function(e,a,n){var t=n("MrPd"),d=n("hypo");e.exports=function(e,a,n,r){var o=!n;n||(n={});for(var i=-1,s=a.length;++i>1,c=-7,u=n?d-1:0,l=n?-1:1,R=e[a+u];for(u+=l,r=R&(1<<-c)-1,R>>=-c,c+=i;c>0;r=256*r+e[a+u],u+=l,c-=8);for(o=r&(1<<-c)-1,r>>=-c,c+=t;c>0;o=256*o+e[a+u],u+=l,c-=8);if(0===r)r=1-g;else{if(r===s)return o?NaN:1/0*(R?-1:1);o+=Math.pow(2,t),r-=g}return(R?-1:1)*o*Math.pow(2,r-t)},a.write=function(e,a,n,t,d,r){var o,i,s,g=8*r-d-1,c=(1<>1,l=23===d?Math.pow(2,-24)-Math.pow(2,-77):0,R=t?0:r-1,p=t?1:-1,f=a<0||0===a&&1/a<0?1:0;for(a=Math.abs(a),isNaN(a)||a===1/0?(i=isNaN(a)?1:0,o=c):(o=Math.floor(Math.log(a)/Math.LN2),a*(s=Math.pow(2,-o))<1&&(o--,s*=2),(a+=o+u>=1?l/s:l*Math.pow(2,1-u))*s>=2&&(o++,s/=2),o+u>=c?(i=0,o=c):o+u>=1?(i=(a*s-1)*Math.pow(2,d),o+=u):(i=a*Math.pow(2,u-1)*Math.pow(2,d),o=0));d>=8;e[n+R]=255&i,R+=p,i/=256,d-=8);for(o=o<0;e[n+R]=255&o,R+=p,o/=256,g-=8);e[n+R-p]|=128*f}},kcLn:function(e,a,n){const t=n("dVj6")(66463);t.addRange(66432,66461),e.exports=t},kd9n:function(e,a,n){const t=n("dVj6")();t.addRange(93952,94026).addRange(94031,94087).addRange(94095,94111),e.exports=t},kekF:function(e,a){e.exports=function(e,a){return function(n){return e(a(n))}}},"ki+i":function(e,a,n){var t=n("B2PW"),d=n("TGkP"),r=function(e){return d(e)[1]},o=function(e){return d(e)[0]},i={baseFontSize:"16px",baseLineHeight:1.5,rhythmUnit:"rem",defaultRhythmBorderWidth:"1px",defaultRhythmBorderStyle:"solid",roundToNearestHalfLine:!0,minLinePadding:"2px"},s=function(e,a){var n,d=t(a.baseFontSize),r=o(d(e,"px")),i=o(a.baseLineHeightInPx),s=o(d(a.minLinePadding,"px"));return(n=a.roundToNearestHalfLine?Math.ceil(2*r/i)/2:Math.ceil(r/i))*i-r<2*s&&(n+=a.roundToNearestHalfLine?.5:1),n},g=function(e){var a=t(e.baseFontSize);return function(n,t,d){null==n&&(n=1),null==t&&(t=e.baseFontSize),null==d&&(d=0);var i=n*o(e.baseLineHeightInPx)-d+"px",s=a(i,e.rhythmUnit,t);return"px"===r(s)&&(s=Math.floor(o(s))+r(s)),parseFloat(o(s).toFixed(5))+r(s)}};e.exports=function(e){var a=JSON.parse(JSON.stringify(i)),n=Object.assign({},a,e),d=t(n.baseFontSize);return r(n.baseLineHeight)?(o(d(n.baseFontSize,"px")),n.baseLineHeightInPx=d(n.baseLineHeight,"px")):n.baseLineHeightInPx=o(n.baseFontSize)*n.baseLineHeight+"px",{rhythm:g(n),establishBaseline:function(){return function(e){return t(e.baseFontSize),{fontSize:o(e.baseFontSize)/16*100+"%",lineHeight:e.baseLineHeight.toString()}}(n)},linesForFontSize:function(e){return s(e,n)},adjustFontSizeTo:function(e,a,d){return null==a&&(a="auto"),function(e,a,n,d){null==n&&(n=d.baseFontSize),"%"===r(e)&&(e=o(d.baseFontSize)*(o(e)/100)+"px");var i=t(d.baseFontSize);e=i(e,"px",n=i(n,"px"));var c=g(d);return"auto"===a&&(a=s(e,d)),{fontSize:i(e,d.rhythmUnit,n),lineHeight:c(a,n)}}(e,a,d,n)}}}},kiIX:function(e,a,n){const t=n("dVj6")();t.addRange(4096,4255).addRange(43488,43518).addRange(43616,43647),e.exports=t},"kp9+":function(e,a,n){const t=n("dVj6")(1155);t.addRange(66384,66426),e.exports=t},ktc5:function(e,a,n){(function(e,t){var d;!function(r){var o=a,i=(e&&e.exports,"object"==typeof t&&t);i.global!==i&&i.window;var s=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,g=/[\x01-\x7F]/g,c=/[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g,u=/<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g,l={"­":"shy","‌":"zwnj","‍":"zwj","‎":"lrm","⁣":"ic","⁢":"it","⁡":"af","‏":"rlm","​":"ZeroWidthSpace","⁠":"NoBreak","̑":"DownBreve","⃛":"tdot","⃜":"DotDot","\t":"Tab","\n":"NewLine"," ":"puncsp"," ":"MediumSpace"," ":"thinsp"," ":"hairsp"," ":"emsp13"," ":"ensp"," ":"emsp14"," ":"emsp"," ":"numsp"," ":"nbsp","  ":"ThickSpace","‾":"oline",_:"lowbar","‐":"dash","–":"ndash","—":"mdash","―":"horbar",",":"comma",";":"semi","⁏":"bsemi",":":"colon","⩴":"Colone","!":"excl","¡":"iexcl","?":"quest","¿":"iquest",".":"period","‥":"nldr","…":"mldr","·":"middot","'":"apos","‘":"lsquo","’":"rsquo","‚":"sbquo","‹":"lsaquo","›":"rsaquo",'"':"quot","“":"ldquo","”":"rdquo","„":"bdquo","«":"laquo","»":"raquo","(":"lpar",")":"rpar","[":"lsqb","]":"rsqb","{":"lcub","}":"rcub","⌈":"lceil","⌉":"rceil","⌊":"lfloor","⌋":"rfloor","⦅":"lopar","⦆":"ropar","⦋":"lbrke","⦌":"rbrke","⦍":"lbrkslu","⦎":"rbrksld","⦏":"lbrksld","⦐":"rbrkslu","⦑":"langd","⦒":"rangd","⦓":"lparlt","⦔":"rpargt","⦕":"gtlPar","⦖":"ltrPar","⟦":"lobrk","⟧":"robrk","⟨":"lang","⟩":"rang","⟪":"Lang","⟫":"Rang","⟬":"loang","⟭":"roang","❲":"lbbrk","❳":"rbbrk","‖":"Vert","§":"sect","¶":"para","@":"commat","*":"ast","/":"sol",undefined:null,"&":"amp","#":"num","%":"percnt","‰":"permil","‱":"pertenk","†":"dagger","‡":"Dagger","•":"bull","⁃":"hybull","′":"prime","″":"Prime","‴":"tprime","⁗":"qprime","‵":"bprime","⁁":"caret","`":"grave","´":"acute","˜":"tilde","^":"Hat","¯":"macr","˘":"breve","˙":"dot","¨":"die","˚":"ring","˝":"dblac","¸":"cedil","˛":"ogon","ˆ":"circ","ˇ":"caron","°":"deg","©":"copy","®":"reg","℗":"copysr","℘":"wp","℞":"rx","℧":"mho","℩":"iiota","←":"larr","↚":"nlarr","→":"rarr","↛":"nrarr","↑":"uarr","↓":"darr","↔":"harr","↮":"nharr","↕":"varr","↖":"nwarr","↗":"nearr","↘":"searr","↙":"swarr","↝":"rarrw","↝̸":"nrarrw","↞":"Larr","↟":"Uarr","↠":"Rarr","↡":"Darr","↢":"larrtl","↣":"rarrtl","↤":"mapstoleft","↥":"mapstoup","↦":"map","↧":"mapstodown","↩":"larrhk","↪":"rarrhk","↫":"larrlp","↬":"rarrlp","↭":"harrw","↰":"lsh","↱":"rsh","↲":"ldsh","↳":"rdsh","↵":"crarr","↶":"cularr","↷":"curarr","↺":"olarr","↻":"orarr","↼":"lharu","↽":"lhard","↾":"uharr","↿":"uharl","⇀":"rharu","⇁":"rhard","⇂":"dharr","⇃":"dharl","⇄":"rlarr","⇅":"udarr","⇆":"lrarr","⇇":"llarr","⇈":"uuarr","⇉":"rrarr","⇊":"ddarr","⇋":"lrhar","⇌":"rlhar","⇐":"lArr","⇍":"nlArr","⇑":"uArr","⇒":"rArr","⇏":"nrArr","⇓":"dArr","⇔":"iff","⇎":"nhArr","⇕":"vArr","⇖":"nwArr","⇗":"neArr","⇘":"seArr","⇙":"swArr","⇚":"lAarr","⇛":"rAarr","⇝":"zigrarr","⇤":"larrb","⇥":"rarrb","⇵":"duarr","⇽":"loarr","⇾":"roarr","⇿":"hoarr","∀":"forall","∁":"comp","∂":"part","∂̸":"npart","∃":"exist","∄":"nexist","∅":"empty","∇":"Del","∈":"in","∉":"notin","∋":"ni","∌":"notni","϶":"bepsi","∏":"prod","∐":"coprod","∑":"sum","+":"plus","±":"pm","÷":"div","×":"times","<":"lt","≮":"nlt","<⃒":"nvlt","=":"equals","≠":"ne","=⃥":"bne","⩵":"Equal",">":"gt","≯":"ngt",">⃒":"nvgt","¬":"not","|":"vert","¦":"brvbar","−":"minus","∓":"mp","∔":"plusdo","⁄":"frasl","∖":"setmn","∗":"lowast","∘":"compfn","√":"Sqrt","∝":"prop","∞":"infin","∟":"angrt","∠":"ang","∠⃒":"nang","∡":"angmsd","∢":"angsph","∣":"mid","∤":"nmid","∥":"par","∦":"npar","∧":"and","∨":"or","∩":"cap","∩︀":"caps","∪":"cup","∪︀":"cups","∫":"int","∬":"Int","∭":"tint","⨌":"qint","∮":"oint","∯":"Conint","∰":"Cconint","∱":"cwint","∲":"cwconint","∳":"awconint","∴":"there4","∵":"becaus","∶":"ratio","∷":"Colon","∸":"minusd","∺":"mDDot","∻":"homtht","∼":"sim","≁":"nsim","∼⃒":"nvsim","∽":"bsim","∽̱":"race","∾":"ac","∾̳":"acE","∿":"acd","≀":"wr","≂":"esim","≂̸":"nesim","≃":"sime","≄":"nsime","≅":"cong","≇":"ncong","≆":"simne","≈":"ap","≉":"nap","≊":"ape","≋":"apid","≋̸":"napid","≌":"bcong","≍":"CupCap","≭":"NotCupCap","≍⃒":"nvap","≎":"bump","≎̸":"nbump","≏":"bumpe","≏̸":"nbumpe","≐":"doteq","≐̸":"nedot","≑":"eDot","≒":"efDot","≓":"erDot","≔":"colone","≕":"ecolon","≖":"ecir","≗":"cire","≙":"wedgeq","≚":"veeeq","≜":"trie","≟":"equest","≡":"equiv","≢":"nequiv","≡⃥":"bnequiv","≤":"le","≰":"nle","≤⃒":"nvle","≥":"ge","≱":"nge","≥⃒":"nvge","≦":"lE","≦̸":"nlE","≧":"gE","≧̸":"ngE","≨︀":"lvnE","≨":"lnE","≩":"gnE","≩︀":"gvnE","≪":"ll","≪̸":"nLtv","≪⃒":"nLt","≫":"gg","≫̸":"nGtv","≫⃒":"nGt","≬":"twixt","≲":"lsim","≴":"nlsim","≳":"gsim","≵":"ngsim","≶":"lg","≸":"ntlg","≷":"gl","≹":"ntgl","≺":"pr","⊀":"npr","≻":"sc","⊁":"nsc","≼":"prcue","⋠":"nprcue","≽":"sccue","⋡":"nsccue","≾":"prsim","≿":"scsim","≿̸":"NotSucceedsTilde","⊂":"sub","⊄":"nsub","⊂⃒":"vnsub","⊃":"sup","⊅":"nsup","⊃⃒":"vnsup","⊆":"sube","⊈":"nsube","⊇":"supe","⊉":"nsupe","⊊︀":"vsubne","⊊":"subne","⊋︀":"vsupne","⊋":"supne","⊍":"cupdot","⊎":"uplus","⊏":"sqsub","⊏̸":"NotSquareSubset","⊐":"sqsup","⊐̸":"NotSquareSuperset","⊑":"sqsube","⋢":"nsqsube","⊒":"sqsupe","⋣":"nsqsupe","⊓":"sqcap","⊓︀":"sqcaps","⊔":"sqcup","⊔︀":"sqcups","⊕":"oplus","⊖":"ominus","⊗":"otimes","⊘":"osol","⊙":"odot","⊚":"ocir","⊛":"oast","⊝":"odash","⊞":"plusb","⊟":"minusb","⊠":"timesb","⊡":"sdotb","⊢":"vdash","⊬":"nvdash","⊣":"dashv","⊤":"top","⊥":"bot","⊧":"models","⊨":"vDash","⊭":"nvDash","⊩":"Vdash","⊮":"nVdash","⊪":"Vvdash","⊫":"VDash","⊯":"nVDash","⊰":"prurel","⊲":"vltri","⋪":"nltri","⊳":"vrtri","⋫":"nrtri","⊴":"ltrie","⋬":"nltrie","⊴⃒":"nvltrie","⊵":"rtrie","⋭":"nrtrie","⊵⃒":"nvrtrie","⊶":"origof","⊷":"imof","⊸":"mumap","⊹":"hercon","⊺":"intcal","⊻":"veebar","⊽":"barvee","⊾":"angrtvb","⊿":"lrtri","⋀":"Wedge","⋁":"Vee","⋂":"xcap","⋃":"xcup","⋄":"diam","⋅":"sdot","⋆":"Star","⋇":"divonx","⋈":"bowtie","⋉":"ltimes","⋊":"rtimes","⋋":"lthree","⋌":"rthree","⋍":"bsime","⋎":"cuvee","⋏":"cuwed","⋐":"Sub","⋑":"Sup","⋒":"Cap","⋓":"Cup","⋔":"fork","⋕":"epar","⋖":"ltdot","⋗":"gtdot","⋘":"Ll","⋘̸":"nLl","⋙":"Gg","⋙̸":"nGg","⋚︀":"lesg","⋚":"leg","⋛":"gel","⋛︀":"gesl","⋞":"cuepr","⋟":"cuesc","⋦":"lnsim","⋧":"gnsim","⋨":"prnsim","⋩":"scnsim","⋮":"vellip","⋯":"ctdot","⋰":"utdot","⋱":"dtdot","⋲":"disin","⋳":"isinsv","⋴":"isins","⋵":"isindot","⋵̸":"notindot","⋶":"notinvc","⋷":"notinvb","⋹":"isinE","⋹̸":"notinE","⋺":"nisd","⋻":"xnis","⋼":"nis","⋽":"notnivc","⋾":"notnivb","⌅":"barwed","⌆":"Barwed","⌌":"drcrop","⌍":"dlcrop","⌎":"urcrop","⌏":"ulcrop","⌐":"bnot","⌒":"profline","⌓":"profsurf","⌕":"telrec","⌖":"target","⌜":"ulcorn","⌝":"urcorn","⌞":"dlcorn","⌟":"drcorn","⌢":"frown","⌣":"smile","⌭":"cylcty","⌮":"profalar","⌶":"topbot","⌽":"ovbar","⌿":"solbar","⍼":"angzarr","⎰":"lmoust","⎱":"rmoust","⎴":"tbrk","⎵":"bbrk","⎶":"bbrktbrk","⏜":"OverParenthesis","⏝":"UnderParenthesis","⏞":"OverBrace","⏟":"UnderBrace","⏢":"trpezium","⏧":"elinters","␣":"blank","─":"boxh","│":"boxv","┌":"boxdr","┐":"boxdl","└":"boxur","┘":"boxul","├":"boxvr","┤":"boxvl","┬":"boxhd","┴":"boxhu","┼":"boxvh","═":"boxH","║":"boxV","╒":"boxdR","╓":"boxDr","╔":"boxDR","╕":"boxdL","╖":"boxDl","╗":"boxDL","╘":"boxuR","╙":"boxUr","╚":"boxUR","╛":"boxuL","╜":"boxUl","╝":"boxUL","╞":"boxvR","╟":"boxVr","╠":"boxVR","╡":"boxvL","╢":"boxVl","╣":"boxVL","╤":"boxHd","╥":"boxhD","╦":"boxHD","╧":"boxHu","╨":"boxhU","╩":"boxHU","╪":"boxvH","╫":"boxVh","╬":"boxVH","▀":"uhblk","▄":"lhblk","█":"block","░":"blk14","▒":"blk12","▓":"blk34","□":"squ","▪":"squf","▫":"EmptyVerySmallSquare","▭":"rect","▮":"marker","▱":"fltns","△":"xutri","▴":"utrif","▵":"utri","▸":"rtrif","▹":"rtri","▽":"xdtri","▾":"dtrif","▿":"dtri","◂":"ltrif","◃":"ltri","◊":"loz","○":"cir","◬":"tridot","◯":"xcirc","◸":"ultri","◹":"urtri","◺":"lltri","◻":"EmptySmallSquare","◼":"FilledSmallSquare","★":"starf","☆":"star","☎":"phone","♀":"female","♂":"male","♠":"spades","♣":"clubs","♥":"hearts","♦":"diams","♪":"sung","✓":"check","✗":"cross","✠":"malt","✶":"sext","❘":"VerticalSeparator","⟈":"bsolhsub","⟉":"suphsol","⟵":"xlarr","⟶":"xrarr","⟷":"xharr","⟸":"xlArr","⟹":"xrArr","⟺":"xhArr","⟼":"xmap","⟿":"dzigrarr","⤂":"nvlArr","⤃":"nvrArr","⤄":"nvHarr","⤅":"Map","⤌":"lbarr","⤍":"rbarr","⤎":"lBarr","⤏":"rBarr","⤐":"RBarr","⤑":"DDotrahd","⤒":"UpArrowBar","⤓":"DownArrowBar","⤖":"Rarrtl","⤙":"latail","⤚":"ratail","⤛":"lAtail","⤜":"rAtail","⤝":"larrfs","⤞":"rarrfs","⤟":"larrbfs","⤠":"rarrbfs","⤣":"nwarhk","⤤":"nearhk","⤥":"searhk","⤦":"swarhk","⤧":"nwnear","⤨":"toea","⤩":"tosa","⤪":"swnwar","⤳":"rarrc","⤳̸":"nrarrc","⤵":"cudarrr","⤶":"ldca","⤷":"rdca","⤸":"cudarrl","⤹":"larrpl","⤼":"curarrm","⤽":"cularrp","⥅":"rarrpl","⥈":"harrcir","⥉":"Uarrocir","⥊":"lurdshar","⥋":"ldrushar","⥎":"LeftRightVector","⥏":"RightUpDownVector","⥐":"DownLeftRightVector","⥑":"LeftUpDownVector","⥒":"LeftVectorBar","⥓":"RightVectorBar","⥔":"RightUpVectorBar","⥕":"RightDownVectorBar","⥖":"DownLeftVectorBar","⥗":"DownRightVectorBar","⥘":"LeftUpVectorBar","⥙":"LeftDownVectorBar","⥚":"LeftTeeVector","⥛":"RightTeeVector","⥜":"RightUpTeeVector","⥝":"RightDownTeeVector","⥞":"DownLeftTeeVector","⥟":"DownRightTeeVector","⥠":"LeftUpTeeVector","⥡":"LeftDownTeeVector","⥢":"lHar","⥣":"uHar","⥤":"rHar","⥥":"dHar","⥦":"luruhar","⥧":"ldrdhar","⥨":"ruluhar","⥩":"rdldhar","⥪":"lharul","⥫":"llhard","⥬":"rharul","⥭":"lrhard","⥮":"udhar","⥯":"duhar","⥰":"RoundImplies","⥱":"erarr","⥲":"simrarr","⥳":"larrsim","⥴":"rarrsim","⥵":"rarrap","⥶":"ltlarr","⥸":"gtrarr","⥹":"subrarr","⥻":"suplarr","⥼":"lfisht","⥽":"rfisht","⥾":"ufisht","⥿":"dfisht","⦚":"vzigzag","⦜":"vangrt","⦝":"angrtvbd","⦤":"ange","⦥":"range","⦦":"dwangle","⦧":"uwangle","⦨":"angmsdaa","⦩":"angmsdab","⦪":"angmsdac","⦫":"angmsdad","⦬":"angmsdae","⦭":"angmsdaf","⦮":"angmsdag","⦯":"angmsdah","⦰":"bemptyv","⦱":"demptyv","⦲":"cemptyv","⦳":"raemptyv","⦴":"laemptyv","⦵":"ohbar","⦶":"omid","⦷":"opar","⦹":"operp","⦻":"olcross","⦼":"odsold","⦾":"olcir","⦿":"ofcir","⧀":"olt","⧁":"ogt","⧂":"cirscir","⧃":"cirE","⧄":"solb","⧅":"bsolb","⧉":"boxbox","⧍":"trisb","⧎":"rtriltri","⧏":"LeftTriangleBar","⧏̸":"NotLeftTriangleBar","⧐":"RightTriangleBar","⧐̸":"NotRightTriangleBar","⧜":"iinfin","⧝":"infintie","⧞":"nvinfin","⧣":"eparsl","⧤":"smeparsl","⧥":"eqvparsl","⧫":"lozf","⧴":"RuleDelayed","⧶":"dsol","⨀":"xodot","⨁":"xoplus","⨂":"xotime","⨄":"xuplus","⨆":"xsqcup","⨍":"fpartint","⨐":"cirfnint","⨑":"awint","⨒":"rppolint","⨓":"scpolint","⨔":"npolint","⨕":"pointint","⨖":"quatint","⨗":"intlarhk","⨢":"pluscir","⨣":"plusacir","⨤":"simplus","⨥":"plusdu","⨦":"plussim","⨧":"plustwo","⨩":"mcomma","⨪":"minusdu","⨭":"loplus","⨮":"roplus","⨯":"Cross","⨰":"timesd","⨱":"timesbar","⨳":"smashp","⨴":"lotimes","⨵":"rotimes","⨶":"otimesas","⨷":"Otimes","⨸":"odiv","⨹":"triplus","⨺":"triminus","⨻":"tritime","⨼":"iprod","⨿":"amalg","⩀":"capdot","⩂":"ncup","⩃":"ncap","⩄":"capand","⩅":"cupor","⩆":"cupcap","⩇":"capcup","⩈":"cupbrcap","⩉":"capbrcup","⩊":"cupcup","⩋":"capcap","⩌":"ccups","⩍":"ccaps","⩐":"ccupssm","⩓":"And","⩔":"Or","⩕":"andand","⩖":"oror","⩗":"orslope","⩘":"andslope","⩚":"andv","⩛":"orv","⩜":"andd","⩝":"ord","⩟":"wedbar","⩦":"sdote","⩪":"simdot","⩭":"congdot","⩭̸":"ncongdot","⩮":"easter","⩯":"apacir","⩰":"apE","⩰̸":"napE","⩱":"eplus","⩲":"pluse","⩳":"Esim","⩷":"eDDot","⩸":"equivDD","⩹":"ltcir","⩺":"gtcir","⩻":"ltquest","⩼":"gtquest","⩽":"les","⩽̸":"nles","⩾":"ges","⩾̸":"nges","⩿":"lesdot","⪀":"gesdot","⪁":"lesdoto","⪂":"gesdoto","⪃":"lesdotor","⪄":"gesdotol","⪅":"lap","⪆":"gap","⪇":"lne","⪈":"gne","⪉":"lnap","⪊":"gnap","⪋":"lEg","⪌":"gEl","⪍":"lsime","⪎":"gsime","⪏":"lsimg","⪐":"gsiml","⪑":"lgE","⪒":"glE","⪓":"lesges","⪔":"gesles","⪕":"els","⪖":"egs","⪗":"elsdot","⪘":"egsdot","⪙":"el","⪚":"eg","⪝":"siml","⪞":"simg","⪟":"simlE","⪠":"simgE","⪡":"LessLess","⪡̸":"NotNestedLessLess","⪢":"GreaterGreater","⪢̸":"NotNestedGreaterGreater","⪤":"glj","⪥":"gla","⪦":"ltcc","⪧":"gtcc","⪨":"lescc","⪩":"gescc","⪪":"smt","⪫":"lat","⪬":"smte","⪬︀":"smtes","⪭":"late","⪭︀":"lates","⪮":"bumpE","⪯":"pre","⪯̸":"npre","⪰":"sce","⪰̸":"nsce","⪳":"prE","⪴":"scE","⪵":"prnE","⪶":"scnE","⪷":"prap","⪸":"scap","⪹":"prnap","⪺":"scnap","⪻":"Pr","⪼":"Sc","⪽":"subdot","⪾":"supdot","⪿":"subplus","⫀":"supplus","⫁":"submult","⫂":"supmult","⫃":"subedot","⫄":"supedot","⫅":"subE","⫅̸":"nsubE","⫆":"supE","⫆̸":"nsupE","⫇":"subsim","⫈":"supsim","⫋︀":"vsubnE","⫋":"subnE","⫌︀":"vsupnE","⫌":"supnE","⫏":"csub","⫐":"csup","⫑":"csube","⫒":"csupe","⫓":"subsup","⫔":"supsub","⫕":"subsub","⫖":"supsup","⫗":"suphsub","⫘":"supdsub","⫙":"forkv","⫚":"topfork","⫛":"mlcp","⫤":"Dashv","⫦":"Vdashl","⫧":"Barv","⫨":"vBar","⫩":"vBarv","⫫":"Vbar","⫬":"Not","⫭":"bNot","⫮":"rnmid","⫯":"cirmid","⫰":"midcir","⫱":"topcir","⫲":"nhpar","⫳":"parsim","⫽":"parsl","⫽⃥":"nparsl","♭":"flat","♮":"natur","♯":"sharp","¤":"curren","¢":"cent",$:"dollar","£":"pound","¥":"yen","€":"euro","¹":"sup1","½":"half","⅓":"frac13","¼":"frac14","⅕":"frac15","⅙":"frac16","⅛":"frac18","²":"sup2","⅔":"frac23","⅖":"frac25","³":"sup3","¾":"frac34","⅗":"frac35","⅜":"frac38","⅘":"frac45","⅚":"frac56","⅝":"frac58","⅞":"frac78","𝒶":"ascr","𝕒":"aopf","𝔞":"afr","𝔸":"Aopf","𝔄":"Afr","𝒜":"Ascr","ª":"ordf","á":"aacute","Á":"Aacute","à":"agrave","À":"Agrave","ă":"abreve","Ă":"Abreve","â":"acirc","Â":"Acirc","å":"aring","Å":"angst","ä":"auml","Ä":"Auml","ã":"atilde","Ã":"Atilde","ą":"aogon","Ą":"Aogon","ā":"amacr","Ā":"Amacr","æ":"aelig","Æ":"AElig","𝒷":"bscr","𝕓":"bopf","𝔟":"bfr","𝔹":"Bopf","ℬ":"Bscr","𝔅":"Bfr","𝔠":"cfr","𝒸":"cscr","𝕔":"copf","ℭ":"Cfr","𝒞":"Cscr","ℂ":"Copf","ć":"cacute","Ć":"Cacute","ĉ":"ccirc","Ĉ":"Ccirc","č":"ccaron","Č":"Ccaron","ċ":"cdot","Ċ":"Cdot","ç":"ccedil","Ç":"Ccedil","℅":"incare","𝔡":"dfr","ⅆ":"dd","𝕕":"dopf","𝒹":"dscr","𝒟":"Dscr","𝔇":"Dfr","ⅅ":"DD","𝔻":"Dopf","ď":"dcaron","Ď":"Dcaron","đ":"dstrok","Đ":"Dstrok","ð":"eth","Ð":"ETH","ⅇ":"ee","ℯ":"escr","𝔢":"efr","𝕖":"eopf","ℰ":"Escr","𝔈":"Efr","𝔼":"Eopf","é":"eacute","É":"Eacute","è":"egrave","È":"Egrave","ê":"ecirc","Ê":"Ecirc","ě":"ecaron","Ě":"Ecaron","ë":"euml","Ë":"Euml","ė":"edot","Ė":"Edot","ę":"eogon","Ę":"Eogon","ē":"emacr","Ē":"Emacr","𝔣":"ffr","𝕗":"fopf","𝒻":"fscr","𝔉":"Ffr","𝔽":"Fopf","ℱ":"Fscr","ff":"fflig","ffi":"ffilig","ffl":"ffllig","fi":"filig",fj:"fjlig","fl":"fllig","ƒ":"fnof","ℊ":"gscr","𝕘":"gopf","𝔤":"gfr","𝒢":"Gscr","𝔾":"Gopf","𝔊":"Gfr","ǵ":"gacute","ğ":"gbreve","Ğ":"Gbreve","ĝ":"gcirc","Ĝ":"Gcirc","ġ":"gdot","Ġ":"Gdot","Ģ":"Gcedil","𝔥":"hfr","ℎ":"planckh","𝒽":"hscr","𝕙":"hopf","ℋ":"Hscr","ℌ":"Hfr","ℍ":"Hopf","ĥ":"hcirc","Ĥ":"Hcirc","ℏ":"hbar","ħ":"hstrok","Ħ":"Hstrok","𝕚":"iopf","𝔦":"ifr","𝒾":"iscr","ⅈ":"ii","𝕀":"Iopf","ℐ":"Iscr","ℑ":"Im","í":"iacute","Í":"Iacute","ì":"igrave","Ì":"Igrave","î":"icirc","Î":"Icirc","ï":"iuml","Ï":"Iuml","ĩ":"itilde","Ĩ":"Itilde","İ":"Idot","į":"iogon","Į":"Iogon","ī":"imacr","Ī":"Imacr","ij":"ijlig","IJ":"IJlig","ı":"imath","𝒿":"jscr","𝕛":"jopf","𝔧":"jfr","𝒥":"Jscr","𝔍":"Jfr","𝕁":"Jopf","ĵ":"jcirc","Ĵ":"Jcirc","ȷ":"jmath","𝕜":"kopf","𝓀":"kscr","𝔨":"kfr","𝒦":"Kscr","𝕂":"Kopf","𝔎":"Kfr","ķ":"kcedil","Ķ":"Kcedil","𝔩":"lfr","𝓁":"lscr","ℓ":"ell","𝕝":"lopf","ℒ":"Lscr","𝔏":"Lfr","𝕃":"Lopf","ĺ":"lacute","Ĺ":"Lacute","ľ":"lcaron","Ľ":"Lcaron","ļ":"lcedil","Ļ":"Lcedil","ł":"lstrok","Ł":"Lstrok","ŀ":"lmidot","Ŀ":"Lmidot","𝔪":"mfr","𝕞":"mopf","𝓂":"mscr","𝔐":"Mfr","𝕄":"Mopf","ℳ":"Mscr","𝔫":"nfr","𝕟":"nopf","𝓃":"nscr","ℕ":"Nopf","𝒩":"Nscr","𝔑":"Nfr","ń":"nacute","Ń":"Nacute","ň":"ncaron","Ň":"Ncaron","ñ":"ntilde","Ñ":"Ntilde","ņ":"ncedil","Ņ":"Ncedil","№":"numero","ŋ":"eng","Ŋ":"ENG","𝕠":"oopf","𝔬":"ofr","ℴ":"oscr","𝒪":"Oscr","𝔒":"Ofr","𝕆":"Oopf","º":"ordm","ó":"oacute","Ó":"Oacute","ò":"ograve","Ò":"Ograve","ô":"ocirc","Ô":"Ocirc","ö":"ouml","Ö":"Ouml","ő":"odblac","Ő":"Odblac","õ":"otilde","Õ":"Otilde","ø":"oslash","Ø":"Oslash","ō":"omacr","Ō":"Omacr","œ":"oelig","Œ":"OElig","𝔭":"pfr","𝓅":"pscr","𝕡":"popf","ℙ":"Popf","𝔓":"Pfr","𝒫":"Pscr","𝕢":"qopf","𝔮":"qfr","𝓆":"qscr","𝒬":"Qscr","𝔔":"Qfr","ℚ":"Qopf","ĸ":"kgreen","𝔯":"rfr","𝕣":"ropf","𝓇":"rscr","ℛ":"Rscr","ℜ":"Re","ℝ":"Ropf","ŕ":"racute","Ŕ":"Racute","ř":"rcaron","Ř":"Rcaron","ŗ":"rcedil","Ŗ":"Rcedil","𝕤":"sopf","𝓈":"sscr","𝔰":"sfr","𝕊":"Sopf","𝔖":"Sfr","𝒮":"Sscr","Ⓢ":"oS","ś":"sacute","Ś":"Sacute","ŝ":"scirc","Ŝ":"Scirc","š":"scaron","Š":"Scaron","ş":"scedil","Ş":"Scedil","ß":"szlig","𝔱":"tfr","𝓉":"tscr","𝕥":"topf","𝒯":"Tscr","𝔗":"Tfr","𝕋":"Topf","ť":"tcaron","Ť":"Tcaron","ţ":"tcedil","Ţ":"Tcedil","™":"trade","ŧ":"tstrok","Ŧ":"Tstrok","𝓊":"uscr","𝕦":"uopf","𝔲":"ufr","𝕌":"Uopf","𝔘":"Ufr","𝒰":"Uscr","ú":"uacute","Ú":"Uacute","ù":"ugrave","Ù":"Ugrave","ŭ":"ubreve","Ŭ":"Ubreve","û":"ucirc","Û":"Ucirc","ů":"uring","Ů":"Uring","ü":"uuml","Ü":"Uuml","ű":"udblac","Ű":"Udblac","ũ":"utilde","Ũ":"Utilde","ų":"uogon","Ų":"Uogon","ū":"umacr","Ū":"Umacr","𝔳":"vfr","𝕧":"vopf","𝓋":"vscr","𝔙":"Vfr","𝕍":"Vopf","𝒱":"Vscr","𝕨":"wopf","𝓌":"wscr","𝔴":"wfr","𝒲":"Wscr","𝕎":"Wopf","𝔚":"Wfr","ŵ":"wcirc","Ŵ":"Wcirc","𝔵":"xfr","𝓍":"xscr","𝕩":"xopf","𝕏":"Xopf","𝔛":"Xfr","𝒳":"Xscr","𝔶":"yfr","𝓎":"yscr","𝕪":"yopf","𝒴":"Yscr","𝔜":"Yfr","𝕐":"Yopf","ý":"yacute","Ý":"Yacute","ŷ":"ycirc","Ŷ":"Ycirc","ÿ":"yuml","Ÿ":"Yuml","𝓏":"zscr","𝔷":"zfr","𝕫":"zopf","ℨ":"Zfr","ℤ":"Zopf","𝒵":"Zscr","ź":"zacute","Ź":"Zacute","ž":"zcaron","Ž":"Zcaron","ż":"zdot","Ż":"Zdot","Ƶ":"imped","þ":"thorn","Þ":"THORN","ʼn":"napos","α":"alpha","Α":"Alpha","β":"beta","Β":"Beta","γ":"gamma","Γ":"Gamma","δ":"delta","Δ":"Delta","ε":"epsi","ϵ":"epsiv","Ε":"Epsilon","ϝ":"gammad","Ϝ":"Gammad","ζ":"zeta","Ζ":"Zeta","η":"eta","Η":"Eta","θ":"theta","ϑ":"thetav","Θ":"Theta","ι":"iota","Ι":"Iota","κ":"kappa","ϰ":"kappav","Κ":"Kappa","λ":"lambda","Λ":"Lambda","μ":"mu","µ":"micro","Μ":"Mu","ν":"nu","Ν":"Nu","ξ":"xi","Ξ":"Xi","ο":"omicron","Ο":"Omicron","π":"pi","ϖ":"piv","Π":"Pi","ρ":"rho","ϱ":"rhov","Ρ":"Rho","σ":"sigma","Σ":"Sigma","ς":"sigmaf","τ":"tau","Τ":"Tau","υ":"upsi","Υ":"Upsilon","ϒ":"Upsi","φ":"phi","ϕ":"phiv","Φ":"Phi","χ":"chi","Χ":"Chi","ψ":"psi","Ψ":"Psi","ω":"omega","Ω":"ohm","а":"acy","А":"Acy","б":"bcy","Б":"Bcy","в":"vcy","В":"Vcy","г":"gcy","Г":"Gcy","ѓ":"gjcy","Ѓ":"GJcy","д":"dcy","Д":"Dcy","ђ":"djcy","Ђ":"DJcy","е":"iecy","Е":"IEcy","ё":"iocy","Ё":"IOcy","є":"jukcy","Є":"Jukcy","ж":"zhcy","Ж":"ZHcy","з":"zcy","З":"Zcy","ѕ":"dscy","Ѕ":"DScy","и":"icy","И":"Icy","і":"iukcy","І":"Iukcy","ї":"yicy","Ї":"YIcy","й":"jcy","Й":"Jcy","ј":"jsercy","Ј":"Jsercy","к":"kcy","К":"Kcy","ќ":"kjcy","Ќ":"KJcy","л":"lcy","Л":"Lcy","љ":"ljcy","Љ":"LJcy","м":"mcy","М":"Mcy","н":"ncy","Н":"Ncy","њ":"njcy","Њ":"NJcy","о":"ocy","О":"Ocy","п":"pcy","П":"Pcy","р":"rcy","Р":"Rcy","с":"scy","С":"Scy","т":"tcy","Т":"Tcy","ћ":"tshcy","Ћ":"TSHcy","у":"ucy","У":"Ucy","ў":"ubrcy","Ў":"Ubrcy","ф":"fcy","Ф":"Fcy","х":"khcy","Х":"KHcy","ц":"tscy","Ц":"TScy","ч":"chcy","Ч":"CHcy","џ":"dzcy","Џ":"DZcy","ш":"shcy","Ш":"SHcy","щ":"shchcy","Щ":"SHCHcy","ъ":"hardcy","Ъ":"HARDcy","ы":"ycy","Ы":"Ycy","ь":"softcy","Ь":"SOFTcy","э":"ecy","Э":"Ecy","ю":"yucy","Ю":"YUcy","я":"yacy","Я":"YAcy","ℵ":"aleph","ℶ":"beth","ℷ":"gimel","ℸ":"daleth"},R=/["&'<>`]/g,p={'"':""","&":"&","'":"'","<":"<",">":">","`":"`"},f=/&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/,h=/[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,m=/&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g,b={aacute:"á",Aacute:"Á",abreve:"ă",Abreve:"Ă",ac:"∾",acd:"∿",acE:"∾̳",acirc:"â",Acirc:"Â",acute:"´",acy:"а",Acy:"А",aelig:"æ",AElig:"Æ",af:"⁡",afr:"𝔞",Afr:"𝔄",agrave:"à",Agrave:"À",alefsym:"ℵ",aleph:"ℵ",alpha:"α",Alpha:"Α",amacr:"ā",Amacr:"Ā",amalg:"⨿",amp:"&",AMP:"&",and:"∧",And:"⩓",andand:"⩕",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsd:"∡",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",aogon:"ą",Aogon:"Ą",aopf:"𝕒",Aopf:"𝔸",ap:"≈",apacir:"⩯",ape:"≊",apE:"⩰",apid:"≋",apos:"'",ApplyFunction:"⁡",approx:"≈",approxeq:"≊",aring:"å",Aring:"Å",ascr:"𝒶",Ascr:"𝒜",Assign:"≔",ast:"*",asymp:"≈",asympeq:"≍",atilde:"ã",Atilde:"Ã",auml:"ä",Auml:"Ä",awconint:"∳",awint:"⨑",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",Backslash:"∖",Barv:"⫧",barvee:"⊽",barwed:"⌅",Barwed:"⌆",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",bcy:"б",Bcy:"Б",bdquo:"„",becaus:"∵",because:"∵",Because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",Bernoullis:"ℬ",beta:"β",Beta:"Β",beth:"ℶ",between:"≬",bfr:"𝔟",Bfr:"𝔅",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bnot:"⌐",bNot:"⫭",bopf:"𝕓",Bopf:"𝔹",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxbox:"⧉",boxdl:"┐",boxdL:"╕",boxDl:"╖",boxDL:"╗",boxdr:"┌",boxdR:"╒",boxDr:"╓",boxDR:"╔",boxh:"─",boxH:"═",boxhd:"┬",boxhD:"╥",boxHd:"╤",boxHD:"╦",boxhu:"┴",boxhU:"╨",boxHu:"╧",boxHU:"╩",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxul:"┘",boxuL:"╛",boxUl:"╜",boxUL:"╝",boxur:"└",boxuR:"╘",boxUr:"╙",boxUR:"╚",boxv:"│",boxV:"║",boxvh:"┼",boxvH:"╪",boxVh:"╫",boxVH:"╬",boxvl:"┤",boxvL:"╡",boxVl:"╢",boxVL:"╣",boxvr:"├",boxvR:"╞",boxVr:"╟",boxVR:"╠",bprime:"‵",breve:"˘",Breve:"˘",brvbar:"¦",bscr:"𝒷",Bscr:"ℬ",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsol:"\\",bsolb:"⧅",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpe:"≏",bumpE:"⪮",bumpeq:"≏",Bumpeq:"≎",cacute:"ć",Cacute:"Ć",cap:"∩",Cap:"⋒",capand:"⩄",capbrcup:"⩉",capcap:"⩋",capcup:"⩇",capdot:"⩀",CapitalDifferentialD:"ⅅ",caps:"∩︀",caret:"⁁",caron:"ˇ",Cayleys:"ℭ",ccaps:"⩍",ccaron:"č",Ccaron:"Č",ccedil:"ç",Ccedil:"Ç",ccirc:"ĉ",Ccirc:"Ĉ",Cconint:"∰",ccups:"⩌",ccupssm:"⩐",cdot:"ċ",Cdot:"Ċ",cedil:"¸",Cedilla:"¸",cemptyv:"⦲",cent:"¢",centerdot:"·",CenterDot:"·",cfr:"𝔠",Cfr:"ℭ",chcy:"ч",CHcy:"Ч",check:"✓",checkmark:"✓",chi:"χ",Chi:"Χ",cir:"○",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",CircleDot:"⊙",circledR:"®",circledS:"Ⓢ",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",cire:"≗",cirE:"⧃",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",clubs:"♣",clubsuit:"♣",colon:":",Colon:"∷",colone:"≔",Colone:"⩴",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",Congruent:"≡",conint:"∮",Conint:"∯",ContourIntegral:"∮",copf:"𝕔",Copf:"ℂ",coprod:"∐",Coproduct:"∐",copy:"©",COPY:"©",copysr:"℗",CounterClockwiseContourIntegral:"∳",crarr:"↵",cross:"✗",Cross:"⨯",cscr:"𝒸",Cscr:"𝒞",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",cup:"∪",Cup:"⋓",cupbrcap:"⩈",cupcap:"⩆",CupCap:"≍",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",dagger:"†",Dagger:"‡",daleth:"ℸ",darr:"↓",dArr:"⇓",Darr:"↡",dash:"‐",dashv:"⊣",Dashv:"⫤",dbkarow:"⤏",dblac:"˝",dcaron:"ď",Dcaron:"Ď",dcy:"д",Dcy:"Д",dd:"ⅆ",DD:"ⅅ",ddagger:"‡",ddarr:"⇊",DDotrahd:"⤑",ddotseq:"⩷",deg:"°",Del:"∇",delta:"δ",Delta:"Δ",demptyv:"⦱",dfisht:"⥿",dfr:"𝔡",Dfr:"𝔇",dHar:"⥥",dharl:"⇃",dharr:"⇂",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",diam:"⋄",diamond:"⋄",Diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",DifferentialD:"ⅆ",digamma:"ϝ",disin:"⋲",div:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",djcy:"ђ",DJcy:"Ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",dopf:"𝕕",Dopf:"𝔻",dot:"˙",Dot:"¨",DotDot:"⃜",doteq:"≐",doteqdot:"≑",DotEqual:"≐",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",downarrow:"↓",Downarrow:"⇓",DownArrow:"↓",DownArrowBar:"⤓",DownArrowUpArrow:"⇵",DownBreve:"̑",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVector:"↽",DownLeftVectorBar:"⥖",DownRightTeeVector:"⥟",DownRightVector:"⇁",DownRightVectorBar:"⥗",DownTee:"⊤",DownTeeArrow:"↧",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",dscr:"𝒹",Dscr:"𝒟",dscy:"ѕ",DScy:"Ѕ",dsol:"⧶",dstrok:"đ",Dstrok:"Đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",dzcy:"џ",DZcy:"Џ",dzigrarr:"⟿",eacute:"é",Eacute:"É",easter:"⩮",ecaron:"ě",Ecaron:"Ě",ecir:"≖",ecirc:"ê",Ecirc:"Ê",ecolon:"≕",ecy:"э",Ecy:"Э",eDDot:"⩷",edot:"ė",eDot:"≑",Edot:"Ė",ee:"ⅇ",efDot:"≒",efr:"𝔢",Efr:"𝔈",eg:"⪚",egrave:"è",Egrave:"È",egs:"⪖",egsdot:"⪘",el:"⪙",Element:"∈",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",emacr:"ē",Emacr:"Ē",empty:"∅",emptyset:"∅",EmptySmallSquare:"◻",emptyv:"∅",EmptyVerySmallSquare:"▫",emsp:" ",emsp13:" ",emsp14:" ",eng:"ŋ",ENG:"Ŋ",ensp:" ",eogon:"ę",Eogon:"Ę",eopf:"𝕖",Eopf:"𝔼",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",epsilon:"ε",Epsilon:"Ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",Equal:"⩵",equals:"=",EqualTilde:"≂",equest:"≟",Equilibrium:"⇌",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erarr:"⥱",erDot:"≓",escr:"ℯ",Escr:"ℰ",esdot:"≐",esim:"≂",Esim:"⩳",eta:"η",Eta:"Η",eth:"ð",ETH:"Ð",euml:"ë",Euml:"Ë",euro:"€",excl:"!",exist:"∃",Exists:"∃",expectation:"ℰ",exponentiale:"ⅇ",ExponentialE:"ⅇ",fallingdotseq:"≒",fcy:"ф",Fcy:"Ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",ffr:"𝔣",Ffr:"𝔉",filig:"fi",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",fopf:"𝕗",Fopf:"𝔽",forall:"∀",ForAll:"∀",fork:"⋔",forkv:"⫙",Fouriertrf:"ℱ",fpartint:"⨍",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",fscr:"𝒻",Fscr:"ℱ",gacute:"ǵ",gamma:"γ",Gamma:"Γ",gammad:"ϝ",Gammad:"Ϝ",gap:"⪆",gbreve:"ğ",Gbreve:"Ğ",Gcedil:"Ģ",gcirc:"ĝ",Gcirc:"Ĝ",gcy:"г",Gcy:"Г",gdot:"ġ",Gdot:"Ġ",ge:"≥",gE:"≧",gel:"⋛",gEl:"⪌",geq:"≥",geqq:"≧",geqslant:"⩾",ges:"⩾",gescc:"⪩",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",gfr:"𝔤",Gfr:"𝔊",gg:"≫",Gg:"⋙",ggg:"⋙",gimel:"ℷ",gjcy:"ѓ",GJcy:"Ѓ",gl:"≷",gla:"⪥",glE:"⪒",glj:"⪤",gnap:"⪊",gnapprox:"⪊",gne:"⪈",gnE:"≩",gneq:"⪈",gneqq:"≩",gnsim:"⋧",gopf:"𝕘",Gopf:"𝔾",grave:"`",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",gscr:"ℊ",Gscr:"𝒢",gsim:"≳",gsime:"⪎",gsiml:"⪐",gt:">",Gt:"≫",GT:">",gtcc:"⪧",gtcir:"⩺",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",Hacek:"ˇ",hairsp:" ",half:"½",hamilt:"ℋ",hardcy:"ъ",HARDcy:"Ъ",harr:"↔",hArr:"⇔",harrcir:"⥈",harrw:"↭",Hat:"^",hbar:"ℏ",hcirc:"ĥ",Hcirc:"Ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",hfr:"𝔥",Hfr:"ℌ",HilbertSpace:"ℋ",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",hopf:"𝕙",Hopf:"ℍ",horbar:"―",HorizontalLine:"─",hscr:"𝒽",Hscr:"ℋ",hslash:"ℏ",hstrok:"ħ",Hstrok:"Ħ",HumpDownHump:"≎",HumpEqual:"≏",hybull:"⁃",hyphen:"‐",iacute:"í",Iacute:"Í",ic:"⁣",icirc:"î",Icirc:"Î",icy:"и",Icy:"И",Idot:"İ",iecy:"е",IEcy:"Е",iexcl:"¡",iff:"⇔",ifr:"𝔦",Ifr:"ℑ",igrave:"ì",Igrave:"Ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",ijlig:"ij",IJlig:"IJ",Im:"ℑ",imacr:"ī",Imacr:"Ī",image:"ℑ",ImaginaryI:"ⅈ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",imof:"⊷",imped:"Ƶ",Implies:"⇒",in:"∈",incare:"℅",infin:"∞",infintie:"⧝",inodot:"ı",int:"∫",Int:"∬",intcal:"⊺",integers:"ℤ",Integral:"∫",intercal:"⊺",Intersection:"⋂",intlarhk:"⨗",intprod:"⨼",InvisibleComma:"⁣",InvisibleTimes:"⁢",iocy:"ё",IOcy:"Ё",iogon:"į",Iogon:"Į",iopf:"𝕚",Iopf:"𝕀",iota:"ι",Iota:"Ι",iprod:"⨼",iquest:"¿",iscr:"𝒾",Iscr:"ℐ",isin:"∈",isindot:"⋵",isinE:"⋹",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",itilde:"ĩ",Itilde:"Ĩ",iukcy:"і",Iukcy:"І",iuml:"ï",Iuml:"Ï",jcirc:"ĵ",Jcirc:"Ĵ",jcy:"й",Jcy:"Й",jfr:"𝔧",Jfr:"𝔍",jmath:"ȷ",jopf:"𝕛",Jopf:"𝕁",jscr:"𝒿",Jscr:"𝒥",jsercy:"ј",Jsercy:"Ј",jukcy:"є",Jukcy:"Є",kappa:"κ",Kappa:"Κ",kappav:"ϰ",kcedil:"ķ",Kcedil:"Ķ",kcy:"к",Kcy:"К",kfr:"𝔨",Kfr:"𝔎",kgreen:"ĸ",khcy:"х",KHcy:"Х",kjcy:"ќ",KJcy:"Ќ",kopf:"𝕜",Kopf:"𝕂",kscr:"𝓀",Kscr:"𝒦",lAarr:"⇚",lacute:"ĺ",Lacute:"Ĺ",laemptyv:"⦴",lagran:"ℒ",lambda:"λ",Lambda:"Λ",lang:"⟨",Lang:"⟪",langd:"⦑",langle:"⟨",lap:"⪅",Laplacetrf:"ℒ",laquo:"«",larr:"←",lArr:"⇐",Larr:"↞",larrb:"⇤",larrbfs:"⤟",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",lat:"⪫",latail:"⤙",lAtail:"⤛",late:"⪭",lates:"⪭︀",lbarr:"⤌",lBarr:"⤎",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",lcaron:"ľ",Lcaron:"Ľ",lcedil:"ļ",Lcedil:"Ļ",lceil:"⌈",lcub:"{",lcy:"л",Lcy:"Л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",le:"≤",lE:"≦",LeftAngleBracket:"⟨",leftarrow:"←",Leftarrow:"⇐",LeftArrow:"←",LeftArrowBar:"⇤",LeftArrowRightArrow:"⇆",leftarrowtail:"↢",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVector:"⇃",LeftDownVectorBar:"⥙",LeftFloor:"⌊",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",leftrightarrow:"↔",Leftrightarrow:"⇔",LeftRightArrow:"↔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",LeftRightVector:"⥎",LeftTee:"⊣",LeftTeeArrow:"↤",LeftTeeVector:"⥚",leftthreetimes:"⋋",LeftTriangle:"⊲",LeftTriangleBar:"⧏",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVector:"↿",LeftUpVectorBar:"⥘",LeftVector:"↼",LeftVectorBar:"⥒",leg:"⋚",lEg:"⪋",leq:"≤",leqq:"≦",leqslant:"⩽",les:"⩽",lescc:"⪨",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",lessgtr:"≶",LessLess:"⪡",lesssim:"≲",LessSlantEqual:"⩽",LessTilde:"≲",lfisht:"⥼",lfloor:"⌊",lfr:"𝔩",Lfr:"𝔏",lg:"≶",lgE:"⪑",lHar:"⥢",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",ljcy:"љ",LJcy:"Љ",ll:"≪",Ll:"⋘",llarr:"⇇",llcorner:"⌞",Lleftarrow:"⇚",llhard:"⥫",lltri:"◺",lmidot:"ŀ",Lmidot:"Ŀ",lmoust:"⎰",lmoustache:"⎰",lnap:"⪉",lnapprox:"⪉",lne:"⪇",lnE:"≨",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",longleftarrow:"⟵",Longleftarrow:"⟸",LongLeftArrow:"⟵",longleftrightarrow:"⟷",Longleftrightarrow:"⟺",LongLeftRightArrow:"⟷",longmapsto:"⟼",longrightarrow:"⟶",Longrightarrow:"⟹",LongRightArrow:"⟶",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",lopf:"𝕝",Lopf:"𝕃",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",LowerLeftArrow:"↙",LowerRightArrow:"↘",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",lscr:"𝓁",Lscr:"ℒ",lsh:"↰",Lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",lstrok:"ł",Lstrok:"Ł",lt:"<",Lt:"≪",LT:"<",ltcc:"⪦",ltcir:"⩹",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltri:"◃",ltrie:"⊴",ltrif:"◂",ltrPar:"⦖",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",macr:"¯",male:"♂",malt:"✠",maltese:"✠",map:"↦",Map:"⤅",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",mcy:"м",Mcy:"М",mdash:"—",mDDot:"∺",measuredangle:"∡",MediumSpace:" ",Mellintrf:"ℳ",mfr:"𝔪",Mfr:"𝔐",mho:"℧",micro:"µ",mid:"∣",midast:"*",midcir:"⫰",middot:"·",minus:"−",minusb:"⊟",minusd:"∸",minusdu:"⨪",MinusPlus:"∓",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",mopf:"𝕞",Mopf:"𝕄",mp:"∓",mscr:"𝓂",Mscr:"ℳ",mstpos:"∾",mu:"μ",Mu:"Μ",multimap:"⊸",mumap:"⊸",nabla:"∇",nacute:"ń",Nacute:"Ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natur:"♮",natural:"♮",naturals:"ℕ",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",ncaron:"ň",Ncaron:"Ň",ncedil:"ņ",Ncedil:"Ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",ncy:"н",Ncy:"Н",ndash:"–",ne:"≠",nearhk:"⤤",nearr:"↗",neArr:"⇗",nearrow:"↗",nedot:"≐̸",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",nequiv:"≢",nesear:"⤨",nesim:"≂̸",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",nexist:"∄",nexists:"∄",nfr:"𝔫",Nfr:"𝔑",nge:"≱",ngE:"≧̸",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",nGg:"⋙̸",ngsim:"≵",ngt:"≯",nGt:"≫⃒",ngtr:"≯",nGtv:"≫̸",nharr:"↮",nhArr:"⇎",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",njcy:"њ",NJcy:"Њ",nlarr:"↚",nlArr:"⇍",nldr:"‥",nle:"≰",nlE:"≦̸",nleftarrow:"↚",nLeftarrow:"⇍",nleftrightarrow:"↮",nLeftrightarrow:"⇎",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nLl:"⋘̸",nlsim:"≴",nlt:"≮",nLt:"≪⃒",nltri:"⋪",nltrie:"⋬",nLtv:"≪̸",nmid:"∤",NoBreak:"⁠",NonBreakingSpace:" ",nopf:"𝕟",Nopf:"ℕ",not:"¬",Not:"⫬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",notin:"∉",notindot:"⋵̸",notinE:"⋹̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",NotLeftTriangle:"⋪",NotLeftTriangleBar:"⧏̸",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangle:"⋫",NotRightTriangleBar:"⧐̸",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",npar:"∦",nparallel:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",npre:"⪯̸",nprec:"⊀",npreceq:"⪯̸",nrarr:"↛",nrArr:"⇏",nrarrc:"⤳̸",nrarrw:"↝̸",nrightarrow:"↛",nRightarrow:"⇏",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",nscr:"𝓃",Nscr:"𝒩",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsube:"⊈",nsubE:"⫅̸",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupe:"⊉",nsupE:"⫆̸",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",ntilde:"ñ",Ntilde:"Ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",nu:"ν",Nu:"Ν",num:"#",numero:"№",numsp:" ",nvap:"≍⃒",nvdash:"⊬",nvDash:"⊭",nVdash:"⊮",nVDash:"⊯",nvge:"≥⃒",nvgt:">⃒",nvHarr:"⤄",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwarhk:"⤣",nwarr:"↖",nwArr:"⇖",nwarrow:"↖",nwnear:"⤧",oacute:"ó",Oacute:"Ó",oast:"⊛",ocir:"⊚",ocirc:"ô",Ocirc:"Ô",ocy:"о",Ocy:"О",odash:"⊝",odblac:"ő",Odblac:"Ő",odiv:"⨸",odot:"⊙",odsold:"⦼",oelig:"œ",OElig:"Œ",ofcir:"⦿",ofr:"𝔬",Ofr:"𝔒",ogon:"˛",ograve:"ò",Ograve:"Ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",omacr:"ō",Omacr:"Ō",omega:"ω",Omega:"Ω",omicron:"ο",Omicron:"Ο",omid:"⦶",ominus:"⊖",oopf:"𝕠",Oopf:"𝕆",opar:"⦷",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",operp:"⦹",oplus:"⊕",or:"∨",Or:"⩔",orarr:"↻",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oS:"Ⓢ",oscr:"ℴ",Oscr:"𝒪",oslash:"ø",Oslash:"Ø",osol:"⊘",otilde:"õ",Otilde:"Õ",otimes:"⊗",Otimes:"⨷",otimesas:"⨶",ouml:"ö",Ouml:"Ö",ovbar:"⌽",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",par:"∥",para:"¶",parallel:"∥",parsim:"⫳",parsl:"⫽",part:"∂",PartialD:"∂",pcy:"п",Pcy:"П",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",pfr:"𝔭",Pfr:"𝔓",phi:"φ",Phi:"Φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",pi:"π",Pi:"Π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plus:"+",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plusdo:"∔",plusdu:"⨥",pluse:"⩲",PlusMinus:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",Poincareplane:"ℌ",pointint:"⨕",popf:"𝕡",Popf:"ℙ",pound:"£",pr:"≺",Pr:"⪻",prap:"⪷",prcue:"≼",pre:"⪯",prE:"⪳",prec:"≺",precapprox:"⪷",preccurlyeq:"≼",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",precsim:"≾",prime:"′",Prime:"″",primes:"ℙ",prnap:"⪹",prnE:"⪵",prnsim:"⋨",prod:"∏",Product:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",Proportion:"∷",Proportional:"∝",propto:"∝",prsim:"≾",prurel:"⊰",pscr:"𝓅",Pscr:"𝒫",psi:"ψ",Psi:"Ψ",puncsp:" ",qfr:"𝔮",Qfr:"𝔔",qint:"⨌",qopf:"𝕢",Qopf:"ℚ",qprime:"⁗",qscr:"𝓆",Qscr:"𝒬",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",quot:'"',QUOT:'"',rAarr:"⇛",race:"∽̱",racute:"ŕ",Racute:"Ŕ",radic:"√",raemptyv:"⦳",rang:"⟩",Rang:"⟫",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",rarr:"→",rArr:"⇒",Rarr:"↠",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",rarrtl:"↣",Rarrtl:"⤖",rarrw:"↝",ratail:"⤚",rAtail:"⤜",ratio:"∶",rationals:"ℚ",rbarr:"⤍",rBarr:"⤏",RBarr:"⤐",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",rcaron:"ř",Rcaron:"Ř",rcedil:"ŗ",Rcedil:"Ŗ",rceil:"⌉",rcub:"}",rcy:"р",Rcy:"Р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",Re:"ℜ",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",rect:"▭",reg:"®",REG:"®",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",rfisht:"⥽",rfloor:"⌋",rfr:"𝔯",Rfr:"ℜ",rHar:"⥤",rhard:"⇁",rharu:"⇀",rharul:"⥬",rho:"ρ",Rho:"Ρ",rhov:"ϱ",RightAngleBracket:"⟩",rightarrow:"→",Rightarrow:"⇒",RightArrow:"→",RightArrowBar:"⇥",RightArrowLeftArrow:"⇄",rightarrowtail:"↣",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVector:"⇂",RightDownVectorBar:"⥕",RightFloor:"⌋",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",RightTee:"⊢",RightTeeArrow:"↦",RightTeeVector:"⥛",rightthreetimes:"⋌",RightTriangle:"⊳",RightTriangleBar:"⧐",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVector:"↾",RightUpVectorBar:"⥔",RightVector:"⇀",RightVectorBar:"⥓",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoust:"⎱",rmoustache:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",ropf:"𝕣",Ropf:"ℝ",roplus:"⨮",rotimes:"⨵",RoundImplies:"⥰",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",Rrightarrow:"⇛",rsaquo:"›",rscr:"𝓇",Rscr:"ℛ",rsh:"↱",Rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",RuleDelayed:"⧴",ruluhar:"⥨",rx:"℞",sacute:"ś",Sacute:"Ś",sbquo:"‚",sc:"≻",Sc:"⪼",scap:"⪸",scaron:"š",Scaron:"Š",sccue:"≽",sce:"⪰",scE:"⪴",scedil:"ş",Scedil:"Ş",scirc:"ŝ",Scirc:"Ŝ",scnap:"⪺",scnE:"⪶",scnsim:"⋩",scpolint:"⨓",scsim:"≿",scy:"с",Scy:"С",sdot:"⋅",sdotb:"⊡",sdote:"⩦",searhk:"⤥",searr:"↘",seArr:"⇘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",sfr:"𝔰",Sfr:"𝔖",sfrown:"⌢",sharp:"♯",shchcy:"щ",SHCHcy:"Щ",shcy:"ш",SHcy:"Ш",ShortDownArrow:"↓",ShortLeftArrow:"←",shortmid:"∣",shortparallel:"∥",ShortRightArrow:"→",ShortUpArrow:"↑",shy:"­",sigma:"σ",Sigma:"Σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",SmallCircle:"∘",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",softcy:"ь",SOFTcy:"Ь",sol:"/",solb:"⧄",solbar:"⌿",sopf:"𝕤",Sopf:"𝕊",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",Sqrt:"√",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",squ:"□",square:"□",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",squarf:"▪",squf:"▪",srarr:"→",sscr:"𝓈",Sscr:"𝒮",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",star:"☆",Star:"⋆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",sub:"⊂",Sub:"⋐",subdot:"⪽",sube:"⊆",subE:"⫅",subedot:"⫃",submult:"⫁",subne:"⊊",subnE:"⫋",subplus:"⪿",subrarr:"⥹",subset:"⊂",Subset:"⋐",subseteq:"⊆",subseteqq:"⫅",SubsetEqual:"⊆",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succ:"≻",succapprox:"⪸",succcurlyeq:"≽",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",SuchThat:"∋",sum:"∑",Sum:"∑",sung:"♪",sup:"⊃",Sup:"⋑",sup1:"¹",sup2:"²",sup3:"³",supdot:"⪾",supdsub:"⫘",supe:"⊇",supE:"⫆",supedot:"⫄",Superset:"⊃",SupersetEqual:"⊇",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supne:"⊋",supnE:"⫌",supplus:"⫀",supset:"⊃",Supset:"⋑",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swarhk:"⤦",swarr:"↙",swArr:"⇙",swarrow:"↙",swnwar:"⤪",szlig:"ß",Tab:"\t",target:"⌖",tau:"τ",Tau:"Τ",tbrk:"⎴",tcaron:"ť",Tcaron:"Ť",tcedil:"ţ",Tcedil:"Ţ",tcy:"т",Tcy:"Т",tdot:"⃛",telrec:"⌕",tfr:"𝔱",Tfr:"𝔗",there4:"∴",therefore:"∴",Therefore:"∴",theta:"θ",Theta:"Θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",ThickSpace:"  ",thinsp:" ",ThinSpace:" ",thkap:"≈",thksim:"∼",thorn:"þ",THORN:"Þ",tilde:"˜",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",times:"×",timesb:"⊠",timesbar:"⨱",timesd:"⨰",tint:"∭",toea:"⤨",top:"⊤",topbot:"⌶",topcir:"⫱",topf:"𝕥",Topf:"𝕋",topfork:"⫚",tosa:"⤩",tprime:"‴",trade:"™",TRADE:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",TripleDot:"⃛",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",tscr:"𝓉",Tscr:"𝒯",tscy:"ц",TScy:"Ц",tshcy:"ћ",TSHcy:"Ћ",tstrok:"ŧ",Tstrok:"Ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",uacute:"ú",Uacute:"Ú",uarr:"↑",uArr:"⇑",Uarr:"↟",Uarrocir:"⥉",ubrcy:"ў",Ubrcy:"Ў",ubreve:"ŭ",Ubreve:"Ŭ",ucirc:"û",Ucirc:"Û",ucy:"у",Ucy:"У",udarr:"⇅",udblac:"ű",Udblac:"Ű",udhar:"⥮",ufisht:"⥾",ufr:"𝔲",Ufr:"𝔘",ugrave:"ù",Ugrave:"Ù",uHar:"⥣",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",umacr:"ū",Umacr:"Ū",uml:"¨",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",uogon:"ų",Uogon:"Ų",uopf:"𝕦",Uopf:"𝕌",uparrow:"↑",Uparrow:"⇑",UpArrow:"↑",UpArrowBar:"⤒",UpArrowDownArrow:"⇅",updownarrow:"↕",Updownarrow:"⇕",UpDownArrow:"↕",UpEquilibrium:"⥮",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",UpperLeftArrow:"↖",UpperRightArrow:"↗",upsi:"υ",Upsi:"ϒ",upsih:"ϒ",upsilon:"υ",Upsilon:"Υ",UpTee:"⊥",UpTeeArrow:"↥",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",uring:"ů",Uring:"Ů",urtri:"◹",uscr:"𝓊",Uscr:"𝒰",utdot:"⋰",utilde:"ũ",Utilde:"Ũ",utri:"▵",utrif:"▴",uuarr:"⇈",uuml:"ü",Uuml:"Ü",uwangle:"⦧",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",varr:"↕",vArr:"⇕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",vBar:"⫨",Vbar:"⫫",vBarv:"⫩",vcy:"в",Vcy:"В",vdash:"⊢",vDash:"⊨",Vdash:"⊩",VDash:"⊫",Vdashl:"⫦",vee:"∨",Vee:"⋁",veebar:"⊻",veeeq:"≚",vellip:"⋮",verbar:"|",Verbar:"‖",vert:"|",Vert:"‖",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",vfr:"𝔳",Vfr:"𝔙",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",vopf:"𝕧",Vopf:"𝕍",vprop:"∝",vrtri:"⊳",vscr:"𝓋",Vscr:"𝒱",vsubne:"⊊︀",vsubnE:"⫋︀",vsupne:"⊋︀",vsupnE:"⫌︀",Vvdash:"⊪",vzigzag:"⦚",wcirc:"ŵ",Wcirc:"Ŵ",wedbar:"⩟",wedge:"∧",Wedge:"⋀",wedgeq:"≙",weierp:"℘",wfr:"𝔴",Wfr:"𝔚",wopf:"𝕨",Wopf:"𝕎",wp:"℘",wr:"≀",wreath:"≀",wscr:"𝓌",Wscr:"𝒲",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",xfr:"𝔵",Xfr:"𝔛",xharr:"⟷",xhArr:"⟺",xi:"ξ",Xi:"Ξ",xlarr:"⟵",xlArr:"⟸",xmap:"⟼",xnis:"⋻",xodot:"⨀",xopf:"𝕩",Xopf:"𝕏",xoplus:"⨁",xotime:"⨂",xrarr:"⟶",xrArr:"⟹",xscr:"𝓍",Xscr:"𝒳",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",yacute:"ý",Yacute:"Ý",yacy:"я",YAcy:"Я",ycirc:"ŷ",Ycirc:"Ŷ",ycy:"ы",Ycy:"Ы",yen:"¥",yfr:"𝔶",Yfr:"𝔜",yicy:"ї",YIcy:"Ї",yopf:"𝕪",Yopf:"𝕐",yscr:"𝓎",Yscr:"𝒴",yucy:"ю",YUcy:"Ю",yuml:"ÿ",Yuml:"Ÿ",zacute:"ź",Zacute:"Ź",zcaron:"ž",Zcaron:"Ž",zcy:"з",Zcy:"З",zdot:"ż",Zdot:"Ż",zeetrf:"ℨ",ZeroWidthSpace:"​",zeta:"ζ",Zeta:"Ζ",zfr:"𝔷",Zfr:"ℨ",zhcy:"ж",ZHcy:"Ж",zigrarr:"⇝",zopf:"𝕫",Zopf:"ℤ",zscr:"𝓏",Zscr:"𝒵",zwj:"‍",zwnj:"‌"},y={aacute:"á",Aacute:"Á",acirc:"â",Acirc:"Â",acute:"´",aelig:"æ",AElig:"Æ",agrave:"à",Agrave:"À",amp:"&",AMP:"&",aring:"å",Aring:"Å",atilde:"ã",Atilde:"Ã",auml:"ä",Auml:"Ä",brvbar:"¦",ccedil:"ç",Ccedil:"Ç",cedil:"¸",cent:"¢",copy:"©",COPY:"©",curren:"¤",deg:"°",divide:"÷",eacute:"é",Eacute:"É",ecirc:"ê",Ecirc:"Ê",egrave:"è",Egrave:"È",eth:"ð",ETH:"Ð",euml:"ë",Euml:"Ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",GT:">",iacute:"í",Iacute:"Í",icirc:"î",Icirc:"Î",iexcl:"¡",igrave:"ì",Igrave:"Ì",iquest:"¿",iuml:"ï",Iuml:"Ï",laquo:"«",lt:"<",LT:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",ntilde:"ñ",Ntilde:"Ñ",oacute:"ó",Oacute:"Ó",ocirc:"ô",Ocirc:"Ô",ograve:"ò",Ograve:"Ò",ordf:"ª",ordm:"º",oslash:"ø",Oslash:"Ø",otilde:"õ",Otilde:"Õ",ouml:"ö",Ouml:"Ö",para:"¶",plusmn:"±",pound:"£",quot:'"',QUOT:'"',raquo:"»",reg:"®",REG:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",thorn:"þ",THORN:"Þ",times:"×",uacute:"ú",Uacute:"Ú",ucirc:"û",Ucirc:"Û",ugrave:"ù",Ugrave:"Ù",uml:"¨",uuml:"ü",Uuml:"Ü",yacute:"ý",Yacute:"Ý",yen:"¥",yuml:"ÿ"},v={0:"�",128:"€",130:"‚",131:"ƒ",132:"„",133:"…",134:"†",135:"‡",136:"ˆ",137:"‰",138:"Š",139:"‹",140:"Œ",142:"Ž",145:"‘",146:"’",147:"“",148:"”",149:"•",150:"–",151:"—",152:"˜",153:"™",154:"š",155:"›",156:"œ",158:"ž",159:"Ÿ"},j=[1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65e3,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111],O=String.fromCharCode,_={}.hasOwnProperty,x=function(e,a){return _.call(e,a)},w=function(e,a){if(!e)return a;var n,t={};for(n in a)t[n]=x(e,n)?e[n]:a[n];return t},E=function(e,a){var n="";return e>=55296&&e<=57343||e>1114111?(a&&D("character reference outside the permissible Unicode range"),"�"):x(v,e)?(a&&D("disallowed character reference"),v[e]):(a&&function(e,a){for(var n=-1,t=e.length;++n65535&&(n+=O((e-=65536)>>>10&1023|55296),e=56320|1023&e),n+=O(e))},k=function(e){return"&#x"+e.toString(16).toUpperCase()+";"},S=function(e){return"&#"+e+";"},D=function(e){throw Error("Parse error: "+e)},A=function(e,a){(a=w(a,A.options)).strict&&h.test(e)&&D("forbidden code point");var n=a.encodeEverything,t=a.useNamedReferences,d=a.allowUnsafeSymbols,r=a.decimal?S:k,o=function(e){return r(e.charCodeAt(0))};return n?(e=e.replace(g,(function(e){return t&&x(l,e)?"&"+l[e]+";":o(e)})),t&&(e=e.replace(/>\u20D2/g,">⃒").replace(/<\u20D2/g,"<⃒").replace(/fj/g,"fj")),t&&(e=e.replace(u,(function(e){return"&"+l[e]+";"})))):t?(d||(e=e.replace(R,(function(e){return"&"+l[e]+";"}))),e=(e=e.replace(/>\u20D2/g,">⃒").replace(/<\u20D2/g,"<⃒")).replace(u,(function(e){return"&"+l[e]+";"}))):d||(e=e.replace(R,o)),e.replace(s,(function(e){var a=e.charCodeAt(0),n=e.charCodeAt(1);return r(1024*(a-55296)+n-56320+65536)})).replace(c,o)};A.options={allowUnsafeSymbols:!1,encodeEverything:!1,strict:!1,useNamedReferences:!1,decimal:!1};var C=function(e,a){var n=(a=w(a,C.options)).strict;return n&&f.test(e)&&D("malformed character reference"),e.replace(m,(function(e,t,d,r,o,i,s,g,c){var u,l,R,p,f,h;return t?b[f=t]:d?(f=d,(h=r)&&a.isAttributeValue?(n&&"="==h&&D("`&` did not start a character reference"),e):(n&&D("named character reference was not terminated by a semicolon"),y[f]+(h||""))):o?(R=o,l=i,n&&!l&&D("character reference was not terminated by a semicolon"),u=parseInt(R,10),E(u,n)):s?(p=s,l=g,n&&!l&&D("character reference was not terminated by a semicolon"),u=parseInt(p,16),E(u,n)):(n&&D("named character reference was not terminated by a semicolon"),e)}))};C.options={isAttributeValue:!1,strict:!1};var P={version:"1.2.0",encode:A,decode:C,escape:function(e){return e.replace(R,(function(e){return p[e]}))},unescape:C};void 0===(d=function(){return P}.call(a,n,a,e))||(e.exports=d)}()}).call(this,n("YuTi")(e),n("yLpj"))},"l/XR":function(e,a,n){const t=n("dVj6")(185,6618,8304,8585,11517);t.addRange(178,179).addRange(188,190).addRange(2548,2553).addRange(2930,2935).addRange(3056,3058).addRange(3192,3198).addRange(3416,3422).addRange(3440,3448).addRange(3882,3891).addRange(4969,4988).addRange(6128,6137).addRange(8308,8313).addRange(8320,8329).addRange(8528,8543).addRange(9312,9371).addRange(9450,9471).addRange(10102,10131).addRange(12690,12693).addRange(12832,12841).addRange(12872,12879).addRange(12881,12895).addRange(12928,12937).addRange(12977,12991).addRange(43056,43061).addRange(65799,65843).addRange(65909,65912).addRange(65930,65931).addRange(66273,66299).addRange(66336,66339).addRange(67672,67679).addRange(67705,67711).addRange(67751,67759).addRange(67835,67839).addRange(67862,67867).addRange(68028,68029).addRange(68032,68047).addRange(68050,68095).addRange(68160,68168).addRange(68221,68222).addRange(68253,68255).addRange(68331,68335).addRange(68440,68447).addRange(68472,68479).addRange(68521,68527).addRange(68858,68863).addRange(69216,69246).addRange(69405,69414).addRange(69457,69460).addRange(69573,69579).addRange(69714,69733).addRange(70113,70132),t.addRange(71482,71483).addRange(71914,71922).addRange(72794,72812).addRange(73664,73684).addRange(93019,93025).addRange(93824,93846).addRange(119520,119539).addRange(119648,119672).addRange(125127,125135).addRange(126065,126123).addRange(126125,126127).addRange(126129,126132).addRange(126209,126253).addRange(126255,126269).addRange(127232,127244),e.exports=t},lBvs:function(e,a,n){const t=n("dVj6")();t.addRange(66928,66938).addRange(66940,66954).addRange(66956,66962).addRange(66964,66965).addRange(66967,66977).addRange(66979,66993).addRange(66995,67001).addRange(67003,67004),e.exports=t},lERh:function(e,a,n){const t=n("dVj6")();t.addRange(68416,68437).addRange(68440,68447),e.exports=t},lFV7:function(e,a,n){const t=n("dVj6")();t.addRange(65799,65843).addRange(67072,67382).addRange(67392,67413).addRange(67424,67431),e.exports=t},lMq5:function(e,a,n){var t=n("0Dky"),d=n("Fib7"),r=/#|\.prototype\./,o=function(e,a){var n=s[i(e)];return n==c||n!=g&&(d(a)?t(a):!!a)},i=o.normalize=function(e){return String(e).replace(r,".").toLowerCase()},s=o.data={},g=o.NATIVE="N",c=o.POLYFILL="P";e.exports=o},lSCD:function(e,a,n){var t=n("NykK"),d=n("GoyQ");e.exports=function(e){if(!d(e))return!1;var a=t(e);return"[object Function]"==a||"[object GeneratorFunction]"==a||"[object AsyncFunction]"==a||"[object Proxy]"==a}},lazI:function(e,a,n){const t=n("dVj6")();t.addRange(66352,66378),e.exports=t},ljhN:function(e,a){e.exports=function(e,a){return e===a||e!=e&&a!=a}},"lm/5":function(e,a,n){var t=n("fmRc"),d=n("wF/u");e.exports=function(e,a,n,r){var o=n.length,i=o,s=!r;if(null==e)return!i;for(e=Object(e);o--;){var g=n[o];if(s&&g[2]?g[1]!==e[g[0]]:!(g[0]in e))return!1}for(;++o0&&a.test(e)}}return e||{}}n.words=function(e,a){(a=r(a)).preserve||(e=e.toLowerCase());for(var o,i=0,s=/[^0-9a-zA-Z\u00C0-\u017F\u0400-\u04FF]+|$/g,g="",c=0;o=s.exec(e);){var u=o[0],l=s.lastIndex-u.length;if(!t.test(e[l])||!d.test(e[l+1])){var R=e.substring(i,s.lastIndex-u.length);if(t.test(R[0])&&(g+=R[0],R=R.substring(1)),"function"==typeof a.skipWord&&a.skipWord(R,c)?g+=R:g+=n(R,a),g+=u,c++,(i=s.lastIndex)==e.length)break}}return g},e.exports=n},m7G6:function(e,a,n){const t=n("dVj6")();t.addRange(43136,43205).addRange(43214,43225),e.exports=t},mCz8:function(e,a,n){const t=n("dVj6")(32,133,160,5760,8239,8287,12288);t.addRange(9,13).addRange(8192,8202).addRange(8232,8233),e.exports=t},mJRM:function(e,a,n){const t=n("dVj6")();t.addRange(120832,121483).addRange(121499,121503).addRange(121505,121519),e.exports=t},mTTR:function(e,a,n){var t=n("b80T"),d=n("QcOe"),r=n("MMmD");e.exports=function(e){return r(e)?t(e,!0):d(e)}},mc0g:function(e,a){e.exports=function(e){return function(a,n,t){for(var d=-1,r=Object(a),o=t(a),i=o.length;i--;){var s=o[e?i:++d];if(!1===n(r[s],s,r))break}return a}}},mdLn:function(e,a,n){const t=n("dVj6")(1567,1600);t.addRange(125184,125259).addRange(125264,125273).addRange(125278,125279),e.exports=t},mdPL:function(e,a,n){(function(e){var t=n("WFqU"),d=a&&!a.nodeType&&a,r=d&&"object"==typeof e&&e&&!e.nodeType&&e,o=r&&r.exports===d&&t.process,i=function(){try{var e=r&&r.require&&r.require("util").types;return e||o&&o.binding&&o.binding("util")}catch(a){}}();e.exports=i}).call(this,n("YuTi")(e))},mdlW:function(e,a,n){const t=n("dVj6")(2972,3024,3031,73727);t.addRange(2946,2947).addRange(2949,2954).addRange(2958,2960).addRange(2962,2965).addRange(2969,2970).addRange(2974,2975).addRange(2979,2980).addRange(2984,2986).addRange(2990,3001).addRange(3006,3010).addRange(3014,3016).addRange(3018,3021).addRange(3046,3066).addRange(73664,73713),e.exports=t},msqZ:function(e,a,n){var t=n("sZCt")("set",n("D1y2"));t.placeholder=n("wuTn"),e.exports=t},"mv/X":function(e,a,n){var t=n("ljhN"),d=n("MMmD"),r=n("wJg7"),o=n("GoyQ");e.exports=function(e,a,n){if(!o(n))return!1;var i=typeof a;return!!("number"==i?d(n)&&r(a,n.length):"string"==i&&a in n)&&t(n[a],e)}},mwIZ:function(e,a,n){var t=n("ZWtO");e.exports=function(e,a,n){var d=null==e?void 0:t(e,a);return void 0===d?n:d}},mzUC:function(e,a,n){const t=n("dVj6")(35,42,8205,8419,65039);t.addRange(48,57).addRange(127462,127487).addRange(127995,127999).addRange(129456,129459).addRange(917536,917631),e.exports=t},"n+Zh":function(e,a,n){const t=n("dVj6")(67903);t.addRange(67872,67897),e.exports=t},n1Oh:function(e,a,n){const t=n("dVj6")(1600);t.addRange(68288,68326).addRange(68331,68342),e.exports=t},n4XR:function(e,a,n){const t=n("dVj6")(94176);t.addRange(94208,100343).addRange(100352,101119).addRange(101632,101640),e.exports=t},n75q:function(e,a,n){const t=n("dVj6")();t.addRange(71424,71450).addRange(71453,71467).addRange(71472,71494),e.exports=t},n7sV:function(e,a,n){const t=n("dVj6")();t.addRange(123536,123566),e.exports=t},"nFf/":function(e,a,n){const t=n("dVj6")();t.addRange(6480,6509).addRange(6512,6516),e.exports=t},nRzq:function(e,a,n){var t=n("sZCt")("defaultTo",n("Fl1y"));t.placeholder=n("wuTn"),e.exports=t},nmnc:function(e,a,n){var t=n("Kz5y").Symbol;e.exports=t},noZS:function(e,a,n){var t=n("hypo"),d=n("JC6p"),r=n("ut/Y");e.exports=function(e,a){var n={};return a=r(a,3),d(e,(function(e,d,r){t(n,d,a(e,d,r))})),n}},npZl:function(e,a,n){"use strict";var t=n("TqRt");n("Wbzz"),t(n("9hXx"))},nqlD:function(e,a,n){const{createContext:t}=n("q1tI");e.exports=t,e.exports.default=t},nwfO:function(e,a,n){const t=n("dVj6")();t.addRange(68448,68466).addRange(68472,68479),e.exports=t},o3Hh:function(e,a,n){const t=n("dVj6")();t.addRange(994,1007).addRange(11392,11507).addRange(11513,11519).addRange(66272,66299),e.exports=t},"oCl/":function(e,a,n){var t=n("CH3K"),d=n("LcsW"),r=n("MvSz"),o=n("0ycA"),i=Object.getOwnPropertySymbols?function(e){for(var a=[];e;)t(a,r(e)),e=d(e);return a}:o;e.exports=i},oEtG:function(e,a,n){var t=n("wE6v"),d=n("2bX/");e.exports=function(e){var a=t(e,"string");return d(a)?a:a+""}},oOya:function(e,a,n){const t=n("dVj6")(8232);e.exports=t},oSFm:function(e,a,n){const t=n("dVj6")();t.addRange(69488,69513),e.exports=t},oT1F:function(e,a,n){const t=n("dVj6")(4696,4800);t.addRange(4608,4680).addRange(4682,4685).addRange(4688,4694).addRange(4698,4701).addRange(4704,4744).addRange(4746,4749).addRange(4752,4784).addRange(4786,4789).addRange(4792,4798).addRange(4802,4805).addRange(4808,4822).addRange(4824,4880).addRange(4882,4885).addRange(4888,4954).addRange(4957,4988).addRange(4992,5017).addRange(11648,11670).addRange(11680,11686).addRange(11688,11694).addRange(11696,11702).addRange(11704,11710).addRange(11712,11718).addRange(11720,11726).addRange(11728,11734).addRange(11736,11742).addRange(43777,43782).addRange(43785,43790).addRange(43793,43798).addRange(43808,43814).addRange(43816,43822).addRange(124896,124902).addRange(124904,124907).addRange(124909,124910).addRange(124912,124926),e.exports=t},oasZ:function(e,a,n){var t=n("sZCt")("matchesProperty",n("3pNy"));t.placeholder=n("wuTn"),e.exports=t},oeGF:function(e,a,n){const t=n("dVj6")(42,44,92,161,167,191,894,903,1417,1472,1475,1478,1563,1748,2142,2416,2557,2678,2800,3191,3204,3572,3663,3860,3973,4347,5742,7379,8275,11632,11787,11803,11841,12349,12539,42611,42622,43260,43359,44011,65049,65072,65128,65290,65292,65340,65377,66463,66512,66927,67671,67871,67903,68223,70093,70107,70313,70749,70854,71353,71739,72162,73727,92917,92996,94178,113823);t.addRange(33,35).addRange(37,39).addRange(46,47).addRange(58,59).addRange(63,64).addRange(182,183).addRange(1370,1375).addRange(1523,1524).addRange(1545,1546).addRange(1548,1549).addRange(1565,1567).addRange(1642,1645).addRange(1792,1805).addRange(2039,2041).addRange(2096,2110).addRange(2404,2405).addRange(3674,3675).addRange(3844,3858).addRange(4048,4052).addRange(4057,4058).addRange(4170,4175).addRange(4960,4968).addRange(5867,5869).addRange(5941,5942).addRange(6100,6102).addRange(6104,6106).addRange(6144,6149).addRange(6151,6154).addRange(6468,6469).addRange(6686,6687).addRange(6816,6822).addRange(6824,6829).addRange(7002,7008).addRange(7037,7038).addRange(7164,7167).addRange(7227,7231).addRange(7294,7295).addRange(7360,7367).addRange(8214,8215).addRange(8224,8231).addRange(8240,8248).addRange(8251,8254).addRange(8257,8259).addRange(8263,8273).addRange(8277,8286).addRange(11513,11516).addRange(11518,11519).addRange(11776,11777).addRange(11782,11784).addRange(11790,11798).addRange(11800,11801),t.addRange(11806,11807).addRange(11818,11822).addRange(11824,11833).addRange(11836,11839).addRange(11843,11855).addRange(11858,11860).addRange(12289,12291).addRange(42238,42239).addRange(42509,42511).addRange(42738,42743).addRange(43124,43127).addRange(43214,43215).addRange(43256,43258).addRange(43310,43311).addRange(43457,43469).addRange(43486,43487).addRange(43612,43615).addRange(43742,43743).addRange(43760,43761).addRange(65040,65046).addRange(65093,65094).addRange(65097,65100).addRange(65104,65106).addRange(65108,65111).addRange(65119,65121).addRange(65130,65131).addRange(65281,65283).addRange(65285,65287).addRange(65294,65295).addRange(65306,65307).addRange(65311,65312).addRange(65380,65381).addRange(65792,65794).addRange(68176,68184).addRange(68336,68342).addRange(68409,68415).addRange(68505,68508).addRange(69461,69465).addRange(69510,69513).addRange(69703,69709).addRange(69819,69820).addRange(69822,69825).addRange(69952,69955).addRange(70004,70005).addRange(70085,70088).addRange(70109,70111).addRange(70200,70205).addRange(70731,70735).addRange(70746,70747).addRange(71105,71127).addRange(71233,71235),t.addRange(71264,71276).addRange(71484,71486).addRange(72004,72006).addRange(72255,72262).addRange(72346,72348).addRange(72350,72354).addRange(72769,72773).addRange(72816,72817).addRange(73463,73464).addRange(74864,74868).addRange(77809,77810).addRange(92782,92783).addRange(92983,92987).addRange(93847,93850).addRange(121479,121483).addRange(125278,125279),e.exports=t},of3k:function(e,a,n){"use strict";n.r(a),n.d(a,"_frontmatter",(function(){return s})),n.d(a,"default",(function(){return u}));var t=n("wx14"),d=n("Ff2n"),r=(n("q1tI"),n("7ljp")),o=n("hhGP");n("qKvR");const i=["components"],s={};void 0!==s&&s&&s===Object(s)&&Object.isExtensible(s)&&!Object.prototype.hasOwnProperty.call(s,"__filemeta")&&Object.defineProperty(s,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"src/components/install/jb/osx.mdx"}});const g={_frontmatter:s},c=o.a;function u(e){let{components:a}=e,n=Object(d.a)(e,i);return Object(r.b)(c,Object(t.a)({},g,n,{components:a,mdxType:"MDXLayout"}),Object(r.b)("p",null,"On macOS, Jsonnet Bundler is best installed using ",Object(r.b)("a",{parentName:"p",href:"https://brew.sh"},Object(r.b)("inlineCode",{parentName:"a"},"brew")),":"),Object(r.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(r.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(r.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(r.b)("span",{parentName:"span",className:"mtk1"},"$ brew install jsonnet-bundler")))),Object(r.b)("p",null,"This downloads the most recent version of Jsonnet Bundler and installs it.",Object(r.b)("br",{parentName:"p"}),"\n","Also, Jsonnet Bundler is automatically kept up to date as part of ",Object(r.b)("inlineCode",{parentName:"p"},"brew upgrade"),"."),Object(r.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==u&&u&&u===Object(u)&&Object.isExtensible(u)&&!Object.prototype.hasOwnProperty.call(u,"__filemeta")&&Object.defineProperty(u,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"src/components/install/jb/osx.mdx"}}),u.isMDXComponent=!0},ojcp:function(e,a,n){const t=n("dVj6")(908,1470,1472,1475,1478,1563,1758,1769,1808,1969,2074,2084,2088,2142,2363,2482,2493,2510,2563,2654,2678,2691,2761,2768,2809,2877,2880,2947,2972,3007,3024,3133,3165,3389,3517,3716,3749,3773,3782,3894,3896,3967,3973,4145,4152,4295,4301,4696,4800,5909,6070,6314,6464,6743,6753,6971,7082,7143,7150,7379,7393,7418,8025,8027,8029,11559,11565,42611,42963,43597,43697,43712,43714,64285,64318,64975,65952,67592,67644,67903,69293,69632,69749,69932,70197,70280,70461,70463,70480,70725,70749,70841,70846,70849,71102,71230,71340,71350,71462,71736,71739,71945,71997,72192,72272,72343,72766,72873,72881,72884,73030,73110,73112,73648,92917,113820,113823,119142,119365,119970,119995,120134,123647,125259,126500,126503,126521,126523,126530,126535,126537,126539,126548,126551,126553,126555,126557,126559,126564,126590,129008);t.addRange(32,126).addRange(160,172).addRange(174,767).addRange(880,887).addRange(890,895).addRange(900,906).addRange(910,929).addRange(931,1154).addRange(1162,1327).addRange(1329,1366).addRange(1369,1418).addRange(1421,1423).addRange(1488,1514).addRange(1519,1524).addRange(1542,1551).addRange(1565,1610).addRange(1632,1647).addRange(1649,1749).addRange(1765,1766).addRange(1774,1805).addRange(1810,1839).addRange(1869,1957).addRange(1984,2026).addRange(2036,2042).addRange(2046,2069).addRange(2096,2110).addRange(2112,2136).addRange(2144,2154).addRange(2160,2190).addRange(2208,2249).addRange(2307,2361).addRange(2365,2368).addRange(2377,2380).addRange(2382,2384).addRange(2392,2401).addRange(2404,2432).addRange(2434,2435).addRange(2437,2444).addRange(2447,2448).addRange(2451,2472).addRange(2474,2480).addRange(2486,2489).addRange(2495,2496).addRange(2503,2504).addRange(2507,2508).addRange(2524,2525).addRange(2527,2529).addRange(2534,2557).addRange(2565,2570).addRange(2575,2576).addRange(2579,2600),t.addRange(2602,2608).addRange(2610,2611).addRange(2613,2614).addRange(2616,2617).addRange(2622,2624).addRange(2649,2652).addRange(2662,2671).addRange(2674,2676).addRange(2693,2701).addRange(2703,2705).addRange(2707,2728).addRange(2730,2736).addRange(2738,2739).addRange(2741,2745).addRange(2749,2752).addRange(2763,2764).addRange(2784,2785).addRange(2790,2801).addRange(2818,2819).addRange(2821,2828).addRange(2831,2832).addRange(2835,2856).addRange(2858,2864).addRange(2866,2867).addRange(2869,2873).addRange(2887,2888).addRange(2891,2892).addRange(2908,2909).addRange(2911,2913).addRange(2918,2935).addRange(2949,2954).addRange(2958,2960).addRange(2962,2965).addRange(2969,2970).addRange(2974,2975).addRange(2979,2980).addRange(2984,2986).addRange(2990,3001).addRange(3009,3010).addRange(3014,3016).addRange(3018,3020).addRange(3046,3066).addRange(3073,3075).addRange(3077,3084).addRange(3086,3088).addRange(3090,3112).addRange(3114,3129).addRange(3137,3140).addRange(3160,3162).addRange(3168,3169).addRange(3174,3183),t.addRange(3191,3200).addRange(3202,3212).addRange(3214,3216).addRange(3218,3240).addRange(3242,3251).addRange(3253,3257).addRange(3261,3262).addRange(3264,3265).addRange(3267,3268).addRange(3271,3272).addRange(3274,3275).addRange(3293,3294).addRange(3296,3297).addRange(3302,3311).addRange(3313,3314).addRange(3330,3340).addRange(3342,3344).addRange(3346,3386).addRange(3391,3392).addRange(3398,3400).addRange(3402,3404).addRange(3406,3407).addRange(3412,3414).addRange(3416,3425).addRange(3430,3455).addRange(3458,3459).addRange(3461,3478).addRange(3482,3505).addRange(3507,3515).addRange(3520,3526).addRange(3536,3537).addRange(3544,3550).addRange(3558,3567).addRange(3570,3572).addRange(3585,3632).addRange(3634,3635).addRange(3647,3654).addRange(3663,3675).addRange(3713,3714).addRange(3718,3722).addRange(3724,3747).addRange(3751,3760).addRange(3762,3763).addRange(3776,3780).addRange(3792,3801).addRange(3804,3807).addRange(3840,3863).addRange(3866,3892).addRange(3898,3911).addRange(3913,3948).addRange(3976,3980),t.addRange(4030,4037).addRange(4039,4044).addRange(4046,4058).addRange(4096,4140).addRange(4155,4156).addRange(4159,4183).addRange(4186,4189).addRange(4193,4208).addRange(4213,4225).addRange(4227,4228).addRange(4231,4236).addRange(4238,4252).addRange(4254,4293).addRange(4304,4680).addRange(4682,4685).addRange(4688,4694).addRange(4698,4701).addRange(4704,4744).addRange(4746,4749).addRange(4752,4784).addRange(4786,4789).addRange(4792,4798).addRange(4802,4805).addRange(4808,4822).addRange(4824,4880).addRange(4882,4885).addRange(4888,4954).addRange(4960,4988).addRange(4992,5017).addRange(5024,5109).addRange(5112,5117).addRange(5120,5788).addRange(5792,5880).addRange(5888,5905).addRange(5919,5937).addRange(5940,5942).addRange(5952,5969).addRange(5984,5996).addRange(5998,6e3).addRange(6016,6067).addRange(6078,6085).addRange(6087,6088).addRange(6100,6108).addRange(6112,6121).addRange(6128,6137).addRange(6144,6154).addRange(6160,6169).addRange(6176,6264).addRange(6272,6276).addRange(6279,6312).addRange(6320,6389),t.addRange(6400,6430).addRange(6435,6438).addRange(6441,6443).addRange(6448,6449).addRange(6451,6456).addRange(6468,6509).addRange(6512,6516).addRange(6528,6571).addRange(6576,6601).addRange(6608,6618).addRange(6622,6678).addRange(6681,6682).addRange(6686,6741).addRange(6755,6756).addRange(6765,6770).addRange(6784,6793).addRange(6800,6809).addRange(6816,6829).addRange(6916,6963).addRange(6973,6977).addRange(6979,6988).addRange(6992,7018).addRange(7028,7038).addRange(7042,7073).addRange(7078,7079).addRange(7086,7141).addRange(7146,7148).addRange(7154,7155).addRange(7164,7211).addRange(7220,7221).addRange(7227,7241).addRange(7245,7304).addRange(7312,7354).addRange(7357,7367).addRange(7401,7404).addRange(7406,7411).addRange(7413,7415).addRange(7424,7615).addRange(7680,7957).addRange(7960,7965).addRange(7968,8005).addRange(8008,8013).addRange(8016,8023).addRange(8031,8061).addRange(8064,8116).addRange(8118,8132).addRange(8134,8147).addRange(8150,8155).addRange(8157,8175).addRange(8178,8180).addRange(8182,8190),t.addRange(8192,8202).addRange(8208,8231).addRange(8239,8287).addRange(8304,8305).addRange(8308,8334).addRange(8336,8348).addRange(8352,8384).addRange(8448,8587).addRange(8592,9254).addRange(9280,9290).addRange(9312,11123).addRange(11126,11157).addRange(11159,11502).addRange(11506,11507).addRange(11513,11557).addRange(11568,11623).addRange(11631,11632).addRange(11648,11670).addRange(11680,11686).addRange(11688,11694).addRange(11696,11702).addRange(11704,11710).addRange(11712,11718).addRange(11720,11726).addRange(11728,11734).addRange(11736,11742).addRange(11776,11869).addRange(11904,11929).addRange(11931,12019).addRange(12032,12245).addRange(12272,12283).addRange(12288,12329).addRange(12336,12351).addRange(12353,12438).addRange(12443,12543).addRange(12549,12591).addRange(12593,12686).addRange(12688,12771).addRange(12784,12830).addRange(12832,42124).addRange(42128,42182).addRange(42192,42539).addRange(42560,42606).addRange(42622,42653).addRange(42656,42735).addRange(42738,42743).addRange(42752,42954).addRange(42960,42961).addRange(42965,42969).addRange(42994,43009).addRange(43011,43013),t.addRange(43015,43018).addRange(43020,43044).addRange(43047,43051).addRange(43056,43065).addRange(43072,43127).addRange(43136,43203).addRange(43214,43225).addRange(43250,43262).addRange(43264,43301).addRange(43310,43334).addRange(43346,43347).addRange(43359,43388).addRange(43395,43442).addRange(43444,43445).addRange(43450,43451).addRange(43454,43469).addRange(43471,43481).addRange(43486,43492).addRange(43494,43518).addRange(43520,43560).addRange(43567,43568).addRange(43571,43572).addRange(43584,43586).addRange(43588,43595).addRange(43600,43609).addRange(43612,43643).addRange(43645,43695).addRange(43701,43702).addRange(43705,43709).addRange(43739,43755).addRange(43758,43765).addRange(43777,43782).addRange(43785,43790).addRange(43793,43798).addRange(43808,43814).addRange(43816,43822).addRange(43824,43883).addRange(43888,44004).addRange(44006,44007).addRange(44009,44012).addRange(44016,44025).addRange(44032,55203).addRange(55216,55238).addRange(55243,55291).addRange(63744,64109).addRange(64112,64217).addRange(64256,64262).addRange(64275,64279).addRange(64287,64310).addRange(64312,64316).addRange(64320,64321),t.addRange(64323,64324).addRange(64326,64450).addRange(64467,64911).addRange(64914,64967).addRange(65008,65023).addRange(65040,65049).addRange(65072,65106).addRange(65108,65126).addRange(65128,65131).addRange(65136,65140).addRange(65142,65276).addRange(65281,65437).addRange(65440,65470).addRange(65474,65479).addRange(65482,65487).addRange(65490,65495).addRange(65498,65500).addRange(65504,65510).addRange(65512,65518).addRange(65532,65533).addRange(65536,65547).addRange(65549,65574).addRange(65576,65594).addRange(65596,65597).addRange(65599,65613).addRange(65616,65629).addRange(65664,65786).addRange(65792,65794).addRange(65799,65843).addRange(65847,65934).addRange(65936,65948).addRange(66e3,66044).addRange(66176,66204).addRange(66208,66256).addRange(66273,66299).addRange(66304,66339).addRange(66349,66378).addRange(66384,66421).addRange(66432,66461).addRange(66463,66499).addRange(66504,66517).addRange(66560,66717).addRange(66720,66729).addRange(66736,66771).addRange(66776,66811).addRange(66816,66855).addRange(66864,66915).addRange(66927,66938).addRange(66940,66954).addRange(66956,66962).addRange(66964,66965),t.addRange(66967,66977).addRange(66979,66993).addRange(66995,67001).addRange(67003,67004).addRange(67072,67382).addRange(67392,67413).addRange(67424,67431).addRange(67456,67461).addRange(67463,67504).addRange(67506,67514).addRange(67584,67589).addRange(67594,67637).addRange(67639,67640).addRange(67647,67669).addRange(67671,67742).addRange(67751,67759).addRange(67808,67826).addRange(67828,67829).addRange(67835,67867).addRange(67871,67897).addRange(67968,68023).addRange(68028,68047).addRange(68050,68096).addRange(68112,68115).addRange(68117,68119).addRange(68121,68149).addRange(68160,68168).addRange(68176,68184).addRange(68192,68255).addRange(68288,68324).addRange(68331,68342).addRange(68352,68405).addRange(68409,68437).addRange(68440,68466).addRange(68472,68497).addRange(68505,68508).addRange(68521,68527).addRange(68608,68680).addRange(68736,68786).addRange(68800,68850).addRange(68858,68899).addRange(68912,68921).addRange(69216,69246).addRange(69248,69289).addRange(69296,69297).addRange(69376,69415).addRange(69424,69445).addRange(69457,69465).addRange(69488,69505).addRange(69510,69513).addRange(69552,69579),t.addRange(69600,69622).addRange(69634,69687).addRange(69703,69709).addRange(69714,69743).addRange(69745,69746).addRange(69762,69810).addRange(69815,69816).addRange(69819,69820).addRange(69822,69825).addRange(69840,69864).addRange(69872,69881).addRange(69891,69926).addRange(69942,69959).addRange(69968,70002).addRange(70004,70006).addRange(70018,70069).addRange(70079,70088).addRange(70093,70094).addRange(70096,70111).addRange(70113,70132).addRange(70144,70161).addRange(70163,70190).addRange(70194,70195).addRange(70200,70205).addRange(70272,70278).addRange(70282,70285).addRange(70287,70301).addRange(70303,70313).addRange(70320,70366).addRange(70368,70370).addRange(70384,70393).addRange(70402,70403).addRange(70405,70412).addRange(70415,70416).addRange(70419,70440).addRange(70442,70448).addRange(70450,70451).addRange(70453,70457).addRange(70465,70468).addRange(70471,70472).addRange(70475,70477).addRange(70493,70499).addRange(70656,70711).addRange(70720,70721).addRange(70727,70747).addRange(70751,70753).addRange(70784,70831).addRange(70833,70834).addRange(70843,70844).addRange(70852,70855).addRange(70864,70873),t.addRange(71040,71086).addRange(71088,71089).addRange(71096,71099).addRange(71105,71131).addRange(71168,71218).addRange(71227,71228).addRange(71233,71236).addRange(71248,71257).addRange(71264,71276).addRange(71296,71338).addRange(71342,71343).addRange(71352,71353).addRange(71360,71369).addRange(71424,71450).addRange(71456,71457).addRange(71472,71494).addRange(71680,71726).addRange(71840,71922).addRange(71935,71942).addRange(71948,71955).addRange(71957,71958).addRange(71960,71983).addRange(71985,71989).addRange(71991,71992).addRange(71999,72002).addRange(72004,72006).addRange(72016,72025).addRange(72096,72103).addRange(72106,72147).addRange(72156,72159).addRange(72161,72164).addRange(72203,72242).addRange(72249,72250).addRange(72255,72262).addRange(72279,72280).addRange(72284,72329).addRange(72346,72354).addRange(72368,72440).addRange(72704,72712).addRange(72714,72751).addRange(72768,72773).addRange(72784,72812).addRange(72816,72847).addRange(72960,72966).addRange(72968,72969).addRange(72971,73008).addRange(73040,73049).addRange(73056,73061).addRange(73063,73064).addRange(73066,73102).addRange(73107,73108),t.addRange(73120,73129).addRange(73440,73458).addRange(73461,73464).addRange(73664,73713).addRange(73727,74649).addRange(74752,74862).addRange(74864,74868).addRange(74880,75075).addRange(77712,77810).addRange(77824,78894).addRange(82944,83526).addRange(92160,92728).addRange(92736,92766).addRange(92768,92777).addRange(92782,92862).addRange(92864,92873).addRange(92880,92909).addRange(92928,92975).addRange(92983,92997).addRange(93008,93017).addRange(93019,93025).addRange(93027,93047).addRange(93053,93071).addRange(93760,93850).addRange(93952,94026).addRange(94032,94087).addRange(94099,94111).addRange(94176,94179).addRange(94192,94193).addRange(94208,100343).addRange(100352,101589).addRange(101632,101640).addRange(110576,110579).addRange(110581,110587).addRange(110589,110590).addRange(110592,110882).addRange(110928,110930).addRange(110948,110951).addRange(110960,111355).addRange(113664,113770).addRange(113776,113788).addRange(113792,113800).addRange(113808,113817).addRange(118608,118723).addRange(118784,119029).addRange(119040,119078).addRange(119081,119140).addRange(119146,119149).addRange(119171,119172).addRange(119180,119209).addRange(119214,119274),t.addRange(119296,119361).addRange(119520,119539).addRange(119552,119638).addRange(119648,119672).addRange(119808,119892).addRange(119894,119964).addRange(119966,119967).addRange(119973,119974).addRange(119977,119980).addRange(119982,119993).addRange(119997,120003).addRange(120005,120069).addRange(120071,120074).addRange(120077,120084).addRange(120086,120092).addRange(120094,120121).addRange(120123,120126).addRange(120128,120132).addRange(120138,120144).addRange(120146,120485).addRange(120488,120779).addRange(120782,121343).addRange(121399,121402).addRange(121453,121460).addRange(121462,121475).addRange(121477,121483).addRange(122624,122654).addRange(123136,123180).addRange(123191,123197).addRange(123200,123209).addRange(123214,123215).addRange(123536,123565).addRange(123584,123627).addRange(123632,123641).addRange(124896,124902).addRange(124904,124907).addRange(124909,124910).addRange(124912,124926).addRange(124928,125124).addRange(125127,125135).addRange(125184,125251).addRange(125264,125273).addRange(125278,125279).addRange(126065,126132).addRange(126209,126269).addRange(126464,126467).addRange(126469,126495).addRange(126497,126498).addRange(126505,126514).addRange(126516,126519).addRange(126541,126543),t.addRange(126545,126546).addRange(126561,126562).addRange(126567,126570).addRange(126572,126578).addRange(126580,126583).addRange(126585,126588).addRange(126592,126601).addRange(126603,126619).addRange(126625,126627).addRange(126629,126633).addRange(126635,126651).addRange(126704,126705).addRange(126976,127019).addRange(127024,127123).addRange(127136,127150).addRange(127153,127167).addRange(127169,127183).addRange(127185,127221).addRange(127232,127405).addRange(127462,127490).addRange(127504,127547).addRange(127552,127560).addRange(127568,127569).addRange(127584,127589).addRange(127744,128727).addRange(128733,128748).addRange(128752,128764).addRange(128768,128883).addRange(128896,128984).addRange(128992,129003).addRange(129024,129035).addRange(129040,129095).addRange(129104,129113).addRange(129120,129159).addRange(129168,129197).addRange(129200,129201).addRange(129280,129619).addRange(129632,129645).addRange(129648,129652).addRange(129656,129660).addRange(129664,129670).addRange(129680,129708).addRange(129712,129722).addRange(129728,129733).addRange(129744,129753).addRange(129760,129767).addRange(129776,129782).addRange(129792,129938).addRange(129940,129994).addRange(130032,130041).addRange(131072,173791),t.addRange(173824,177976).addRange(177984,178205).addRange(178208,183969).addRange(183984,191456).addRange(194560,195101).addRange(196608,201546),e.exports=t},ojjd:function(e,a,n){const t=n("dVj6")();t.addRange(70784,70855).addRange(70864,70873),e.exports=t},olBg:function(e,a,n){const t=n("dVj6")(2768);t.addRange(2385,2386).addRange(2404,2405).addRange(2689,2691).addRange(2693,2701).addRange(2703,2705).addRange(2707,2728).addRange(2730,2736).addRange(2738,2739).addRange(2741,2745).addRange(2748,2757).addRange(2759,2761).addRange(2763,2765).addRange(2784,2787).addRange(2790,2801).addRange(2809,2815).addRange(43056,43065),e.exports=t},oml3:function(e,a,n){const t=n("dVj6")();t.addRange(69376,69415),e.exports=t},or5M:function(e,a,n){var t=n("1hJj"),d=n("QoRX"),r=n("xYSL");e.exports=function(e,a,n,o,i,s){var g=1&n,c=e.length,u=a.length;if(c!=u&&!(g&&u>c))return!1;var l=s.get(e),R=s.get(a);if(l&&R)return l==a&&R==e;var p=-1,f=!0,h=2&n?new t:void 0;for(s.set(e,a),s.set(a,e);++p{let{title:a,children:n}=e;return Object(t.d)("div",{css:d},Object(t.d)("h3",{css:r},a),n)};var i={name:"g7yz65",styles:"display:flex;flex-direction:row;width:100%;flex-wrap:wrap;margin-left:-2em;margin-bottom:2em;"};const s=e=>{let{elems:a}=e;return Object(t.d)("div",{css:i},Object.keys(a).map(e=>Object(t.d)(o,{key:e,title:e},a[e])))};void 0!==s&&s&&s===Object(s)&&Object.isExtensible(s)&&!Object.prototype.hasOwnProperty.call(s,"__filemeta")&&Object.defineProperty(s,"__filemeta",{configurable:!0,value:{name:"Highlights",filename:"docs/home.js"}}),void 0!==s&&s&&s===Object(s)&&Object.isExtensible(s)&&!Object.prototype.hasOwnProperty.call(s,"__filemeta")&&Object.defineProperty(s,"__filemeta",{configurable:!0,value:{name:"Highlights",filename:"docs/home.js"}})},"otv/":function(e,a,n){var t=n("nmnc"),d=t?t.prototype:void 0,r=d?d.valueOf:void 0;e.exports=function(e){return r?Object(r.call(e)):{}}},owBG:function(e,a,n){const t=n("dVj6")(43,124,126,172,177,215,247,1014,8260,8274,8472,8523,8608,8611,8614,8622,8658,8660,9084,9655,9665,9839,64297,65122,65291,65372,65374,65506,120513,120539,120571,120597,120629,120655,120687,120713,120745,120771);t.addRange(60,62).addRange(1542,1544).addRange(8314,8316).addRange(8330,8332).addRange(8512,8516).addRange(8592,8596).addRange(8602,8603).addRange(8654,8655).addRange(8692,8959).addRange(8992,8993).addRange(9115,9139).addRange(9180,9185).addRange(9720,9727).addRange(10176,10180).addRange(10183,10213).addRange(10224,10239).addRange(10496,10626).addRange(10649,10711).addRange(10716,10747).addRange(10750,11007).addRange(11056,11076).addRange(11079,11084).addRange(65124,65126).addRange(65308,65310).addRange(65513,65516).addRange(126704,126705),e.exports=t},owni:function(e,a,n){const t=n("dVj6")();t.addRange(6528,6571).addRange(6576,6601).addRange(6608,6618).addRange(6622,6623),e.exports=t},oxjq:function(e,a,n){"use strict";var t=/[|\\{}()[\]^$+*?.]/g;e.exports=function(e){if("string"!=typeof e)throw new TypeError("Expected a string");return e.replace(t,"\\$&")}},"p+Yj":function(e,a,n){"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.codeRenderer=o,a.default=function(e,a){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=new t.default.Renderer;function i(e,a){for(var n=e.children;;){if(!n.length||n[n.length-1].level===a)return n;n=n[n.length-1].children}}function s(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=a.split(/(\{\{.*?\}\})/),t=n.map((function(a){var n=a.match(/\{\{(.*)\}\}/);return n?(e.tree.splice(e.tree.indexOf(e.elements[n[1]]),1),e.elements[n[1]]):""!==a?d.default.decode(a):null}));return t}function g(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},d=arguments.length>2?arguments[2]:void 0,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:n,o=e.nextElementId++,i=null,g=a.elements&&a.elements[r];return d&&(i=Array.isArray(d)?d.map(s):s(d)),e.elements[o]=a.createElement(g||n,Object.assign({key:o},t,g?{context:e.context}:{}),i),e.tree.push(e.elements[o]),"{{".concat(o,"}}")}return r.code=n.code||o(e,a),r.html=n.html||function(n){var t=e.nextElementId++;e.tree.push(a.createElement("div",{key:t,dangerouslySetInnerHTML:{__html:n}}))},r.paragraph=n.paragraph||function(e){return g("p",null,e)},r.blockquote=n.blockquote||function(e){return g("blockquote",null,e)},r.link=n.link||function(e,a,n){return g("a",{href:e,title:a},n)},r.br=n.br||function(){return g("br")},r.hr=n.hr||function(){return g("hr")},r.strong=n.strong||function(e){return g("strong",null,e)},r.del=n.del||function(e){return g("del",null,e)},r.em=n.em||function(e){return g("em",null,e)},r.heading=n.heading||function(a,n){e.currentId=e.currentId.slice(0,n-1),e.currentId.push(a.replace(/\s/g,"-").toLowerCase());var t=e.currentId.join("-"),d=e.toc[e.toc.length-1];!d||d.level>n?e.toc.push({id:t,title:a,level:n,children:[]}):i(d,n).push({id:t,title:a,level:n,children:[]});return g("h".concat(n),{id:t},a)},r.list=n.list||function(e,a){return g(a?"ol":"ul",null,e)},r.listitem=n.listitem||function(e){return g("li",null,e)},r.table=n.table||function(e,a){return g("table",null,[g("thead",null,e),g("tbody",null,a)])},r.thead=n.thead||function(e){return g("thead",null,e)},r.tbody=n.tbody||function(e){return g("tbody",null,e)},r.tablerow=n.tablerow||function(e){return g("tr",null,e)},r.tablecell=n.tablecell||function(e,a){return g(a.header?"th":"td",{className:a.align?"text-".concat(a.align):void 0},e)},r.codespan=n.codespan||function(e){return g("code",null,e,"codespan")},r.image=n.image||function(e,a,n){return g("img",{src:e,alt:n})},r};var t=r(n("DlQD")),d=r(n("ktc5"));function r(e){return e&&e.__esModule?e:{default:e}}function o(e,a){function n(e){var n;try{n=a.createElement("code",{className:"language-".concat(e.language),dangerouslySetInnerHTML:a.highlight?{__html:a.highlight(e.language,e.code)}:null},a.highlight?null:e.code)}catch(t){console.warn("".concat(e.language," is not supported by your defined highlighter.")),n=a.createElement("code",null,e.code)}return a.createElement("pre",null,n)}return function(t,d){var r=e.nextElementId++;return e.elements[r]=a.createElement(a.elements&&a.elements.code||n,{key:r,code:t,language:d}),e.tree.push(e.elements[r]),"{{".concat(r,"}}")}}},p1v9:function(e,a,n){const t=n("dVj6")(73018);t.addRange(72960,72966).addRange(72968,72969).addRange(72971,73014).addRange(73020,73021).addRange(73023,73031).addRange(73040,73049),e.exports=t},p6v3:function(e,a,n){const t=n("dVj6")(4295,4301,11559,11565);t.addRange(4256,4293).addRange(4304,4351).addRange(7312,7354).addRange(7357,7359).addRange(11520,11557),e.exports=t},pFRH:function(e,a,n){var t=n("cvCv"),d=n("O0oS"),r=n("zZ0H"),o=d?function(e,a){return d(e,"toString",{configurable:!0,enumerable:!1,value:t(a),writable:!0})}:r;e.exports=o},pLr0:function(e,a,n){const t=n("dVj6")(32,133);t.addRange(9,13).addRange(8206,8207).addRange(8232,8233),e.exports=t},pNPk:function(e,a,n){"use strict";const t=n("IAl6").generate,d=n("JfBC").parse,r=n("dVj6"),o=n("s7ZY"),i=n("orRV"),s=n("15JJ"),g=n("RDjL"),c=r().addRange(0,1114111),u=(r().addRange(0,65535),c.clone().remove(10,13,8232,8233)),l=(e,a,n)=>a?n?g.UNICODE_IGNORE_CASE.get(e):g.UNICODE.get(e):g.REGULAR.get(e),R=(e,a)=>{const t=a?"".concat(e,"/").concat(a):"Binary_Property/".concat(e);try{return n("PML8")("./".concat(t,".js"))}catch(d){throw new Error("Failed to recognize value `".concat(a,"` for property ")+"`".concat(e,"`."))}},p=(e,a)=>{const n=e.split("="),t=n[0];let d;if(1==n.length)d=(e=>{try{const a="General_Category",n=i(a,e);return R(a,n)}catch(n){}const a=o(e);return R(a)})(t);else{const e=o(t),a=i(e,n[1]);d=R(e,a)}return a?c.clone().remove(d):d.clone()};r.prototype.iuAddRange=function(e,a){const n=this;do{const a=m(e);a&&n.add(a)}while(++e<=a);return n};const f=(e,a)=>{let n=d(a,v.useUnicodeFlag?"u":"");switch(n.type){case"characterClass":case"group":case"value":break;default:n=h(n,a)}Object.assign(e,n)},h=(e,a)=>({type:"group",behavior:"ignore",body:[e],raw:"(?:".concat(a,")")}),m=e=>s.get(e)||!1,b=(e,a)=>{delete e.name,e.matchIndex=a},y=(e,a,n)=>{switch(e.type){case"dot":if(v.useDotAllFlag)break;v.unicode?f(e,(t=v.dotAll,t?c:u).toString(a)):v.dotAll&&f(e,"[\\s\\S]");break;case"characterClass":e=((e,a)=>{const n=r();for(const t of e.body)switch(t.type){case"value":if(n.add(t.codePoint),v.ignoreCase&&v.unicode&&!v.useUnicodeFlag){const e=m(t.codePoint);e&&n.add(e)}break;case"characterClassRange":const e=t.min.codePoint,a=t.max.codePoint;n.addRange(e,a),v.ignoreCase&&v.unicode&&!v.useUnicodeFlag&&n.iuAddRange(e,a);break;case"characterClassEscape":n.add(l(t.value,v.unicode,v.ignoreCase));break;case"unicodePropertyEscape":n.add(p(t.value,t.negative));break;default:throw new Error("Unknown term type: ".concat(t.type))}return e.negative?f(e,"(?!".concat(n.toString(a),")[\\s\\S]")):f(e,n.toString(a)),e})(e,a);break;case"unicodePropertyEscape":v.unicodePropertyEscape&&f(e,p(e.value,e.negative).toString(a));break;case"characterClassEscape":f(e,l(e.value,v.unicode,v.ignoreCase).toString(a));break;case"group":if("normal"==e.behavior&&n.lastIndex++,e.name&&v.namedGroup){const a=e.name.value;if(n.names[a])throw new Error("Multiple groups with the same name (".concat(a,") are not allowed."));const t=n.lastIndex;delete e.name,n.names[a]=t,n.onNamedGroup&&n.onNamedGroup.call(null,a,t),n.unmatchedReferences[a]&&(n.unmatchedReferences[a].forEach(e=>{b(e,t)}),delete n.unmatchedReferences[a])}case"alternative":case"disjunction":case"quantifier":e.body=e.body.map(e=>y(e,a,n));break;case"value":const d=e.codePoint,o=r(d);if(v.ignoreCase&&v.unicode&&!v.useUnicodeFlag){const e=m(d);e&&o.add(e)}f(e,o.toString(a));break;case"reference":if(e.name){const a=e.name.value,t=n.names[a];if(t){b(e,t);break}n.unmatchedReferences[a]||(n.unmatchedReferences[a]=[]),n.unmatchedReferences[a].push(e)}break;case"anchor":case"empty":case"group":break;default:throw new Error("Unknown term type: ".concat(e.type))}var t;return e},v={ignoreCase:!1,unicode:!1,dotAll:!1,useDotAllFlag:!1,useUnicodeFlag:!1,unicodePropertyEscape:!1,namedGroup:!1};e.exports=(e,a,n)=>{v.unicode=a&&a.includes("u");const r={unicodePropertyEscape:v.unicode,namedGroups:!0,lookbehind:n&&n.lookbehind};v.ignoreCase=a&&a.includes("i");const o=n&&n.dotAllFlag;if(v.dotAll=o&&a&&a.includes("s"),v.namedGroup=n&&n.namedGroup,v.useDotAllFlag=n&&n.useDotAllFlag,v.useUnicodeFlag=n&&n.useUnicodeFlag,v.unicodePropertyEscape=n&&n.unicodePropertyEscape,o&&v.useDotAllFlag)throw new Error("`useDotAllFlag` and `dotAllFlag` cannot both be true!");const i={hasUnicodeFlag:v.useUnicodeFlag,bmpOnly:!v.unicode},s={onNamedGroup:n&&n.onNamedGroup,lastIndex:0,names:Object.create(null),unmatchedReferences:Object.create(null)},g=d(e,a,r);return y(g,i,s),(e=>{const a=Object.keys(e.unmatchedReferences);if(a.length>0)throw new Error("Unknown group names: ".concat(a))})(s),t(g)}},pPeY:function(e,a,n){const t=n("dVj6")();t.addRange(2048,2093).addRange(2096,2110),e.exports=t},pSRY:function(e,a,n){var t=n("QkVE");e.exports=function(e){return t(this,e).has(e)}},pVnL:function(e,a){function n(){return e.exports=n=Object.assign?Object.assign.bind():function(e){for(var a=1;at&&(t=(a=a.trim()).charCodeAt(0)),t){case 38:return a.replace(f,"$1"+e.trim());case 58:return e.trim()+a.replace(f,"$1"+e.trim());default:if(0<1*n&&0s.charCodeAt(8))break;case 115:o=o.replace(s,"-webkit-"+s)+";"+o;break;case 207:case 102:o=o.replace(s,"-webkit-"+(102i.charCodeAt(0)&&(i=i.trim()),i=[i],0R)&&(M=(V=V.replace(" ",":")).length),0=4;++t,d-=4)a=1540483477*(65535&(a=255&e.charCodeAt(t)|(255&e.charCodeAt(++t))<<8|(255&e.charCodeAt(++t))<<16|(255&e.charCodeAt(++t))<<24))+(59797*(a>>>16)<<16),n=1540483477*(65535&(a^=a>>>24))+(59797*(a>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(d){case 3:n^=(255&e.charCodeAt(t+2))<<16;case 2:n^=(255&e.charCodeAt(t+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(t)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)},p={animationIterationCount:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1};var f=/[A-Z]|^ms/g,h=/_EMO_([^_]+?)_([^]*?)_EMO_/g,m=function(e){return 45===e.charCodeAt(1)},b=function(e){return null!=e&&"boolean"!=typeof e},y=function(e){var a={};return function(n){return void 0===a[n]&&(a[n]=e(n)),a[n]}}((function(e){return m(e)?e:e.replace(f,"-$&").toLowerCase()})),v=function(e,a){switch(e){case"animation":case"animationName":if("string"==typeof a)return a.replace(h,(function(e,a,n){return O={name:a,styles:n,next:O},a}))}return 1===p[e]||m(e)||"number"!=typeof a||0===a?a:a+"px"};function j(e,a,n,t){if(null==n)return"";if(void 0!==n.__emotion_styles)return n;switch(typeof n){case"boolean":return"";case"object":if(1===n.anim)return O={name:n.name,styles:n.styles,next:O},n.name;if(void 0!==n.styles){var d=n.next;if(void 0!==d)for(;void 0!==d;)O={name:d.name,styles:d.styles,next:O},d=d.next;return n.styles+";"}return function(e,a,n){var t="";if(Array.isArray(n))for(var d=0;d0;)e[t]=e[--t];t!==r++&&(e[t]=n)}return e},i=function(e,a,n,t){for(var d=a.length,r=n.length,o=0,i=0;o=0||(d[n]=e[n]);return d}var m={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},b={rel:["amphtml","canonical","alternate"]},y={type:["application/ld+json"]},v={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},j=Object.keys(m).map((function(e){return m[e]})),O={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},_=Object.keys(O).reduce((function(e,a){return e[O[a]]=a,e}),{}),x=function(e,a){for(var n=e.length-1;n>=0;n-=1){var t=e[n];if(Object.prototype.hasOwnProperty.call(t,a))return t[a]}return null},w=function(e){var a=x(e,m.TITLE),n=x(e,"titleTemplate");if(Array.isArray(a)&&(a=a.join("")),n&&a)return n.replace(/%s/g,(function(){return a}));var t=x(e,"defaultTitle");return a||t||void 0},E=function(e){return x(e,"onChangeClientState")||function(){}},k=function(e,a){return a.filter((function(a){return void 0!==a[e]})).map((function(a){return a[e]})).reduce((function(e,a){return R({},e,a)}),{})},S=function(e,a){return a.filter((function(e){return void 0!==e[m.BASE]})).map((function(e){return e[m.BASE]})).reverse().reduce((function(a,n){if(!a.length)for(var t=Object.keys(n),d=0;d/g,">").replace(/"/g,""").replace(/'/g,"'")},B=function(e){return Object.keys(e).reduce((function(a,n){var t=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return a?a+" "+t:t}),"")},N=function(e,a){return void 0===a&&(a={}),Object.keys(e).reduce((function(a,n){return a[O[n]||n]=e[n],a}),a)},I=function(e,a){return a.map((function(a,n){var t,r=((t={key:n})["data-rh"]=!0,t);return Object.keys(a).forEach((function(e){var n=O[e]||e;"innerHTML"===n||"cssText"===n?r.dangerouslySetInnerHTML={__html:a.innerHTML||a.cssText}:r[n]=a[e]})),d.a.createElement(e,r)}))},M=function(e,a,n){switch(e){case m.TITLE:return{toComponent:function(){return n=a.titleAttributes,(t={key:e=a.title})["data-rh"]=!0,r=N(n,t),[d.a.createElement(m.TITLE,r,e)];var e,n,t,r},toString:function(){return function(e,a,n,t){var d=B(n),r=C(a);return d?"<"+e+' data-rh="true" '+d+">"+L(r,t)+"":"<"+e+' data-rh="true">'+L(r,t)+""}(e,a.title,a.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return N(a)},toString:function(){return B(a)}};default:return{toComponent:function(){return I(e,a)},toString:function(){return function(e,a,n){return a.reduce((function(a,t){var d=Object.keys(t).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,a){var d=void 0===t[a]?a:a+'="'+L(t[a],n)+'"';return e?e+" "+d:d}),""),r=t.innerHTML||t.cssText||"",o=-1===T.indexOf(e);return a+"<"+e+' data-rh="true" '+d+(o?"/>":">"+r+"")}),"")}(e,a,n)}}}},z=function(e){var a=e.baseTag,n=e.bodyAttributes,t=e.encode,d=e.htmlAttributes,r=e.noscriptTags,o=e.styleTags,i=e.title,s=void 0===i?"":i,g=e.titleAttributes,c=e.linkTags,u=e.metaTags,l=e.scriptTags,R={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var p=function(e){var a=e.linkTags,n=e.scriptTags,t=e.encode,d=P(e.metaTags,v),r=P(a,b),o=P(n,y);return{priorityMethods:{toComponent:function(){return[].concat(I(m.META,d.priority),I(m.LINK,r.priority),I(m.SCRIPT,o.priority))},toString:function(){return M(m.META,d.priority,t)+" "+M(m.LINK,r.priority,t)+" "+M(m.SCRIPT,o.priority,t)}},metaTags:d.default,linkTags:r.default,scriptTags:o.default}}(e);R=p.priorityMethods,c=p.linkTags,u=p.metaTags,l=p.scriptTags}return{priority:R,base:M(m.BASE,a,t),bodyAttributes:M("bodyAttributes",n,t),htmlAttributes:M("htmlAttributes",d,t),link:M(m.LINK,c,t),meta:M(m.META,u,t),noscript:M(m.NOSCRIPT,r,t),script:M(m.SCRIPT,l,t),style:M(m.STYLE,o,t),title:M(m.TITLE,{title:s,titleAttributes:g},t)}},q=[],V=function(e,a){var n=this;void 0===a&&(a="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?q:n.instances},add:function(e){(n.canUseDOM?q:n.instances).push(e)},remove:function(e){var a=(n.canUseDOM?q:n.instances).indexOf(e);(n.canUseDOM?q:n.instances).splice(a,1)}}},this.context=e,this.canUseDOM=a,a||(e.helmet=z({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},U=d.a.createContext({}),G=o.a.shape({setHelmet:o.a.func,helmetInstances:o.a.shape({get:o.a.func,add:o.a.func,remove:o.a.func})}),H="undefined"!=typeof document,W=function(e){function a(n){var t;return(t=e.call(this,n)||this).helmetData=new V(t.props.context,a.canUseDOM),t}return p(a,e),a.prototype.render=function(){return d.a.createElement(U.Provider,{value:this.helmetData.value},this.props.children)},a}(t.Component);W.canUseDOM=H,W.propTypes={context:o.a.shape({helmet:o.a.shape()}),children:o.a.node.isRequired},W.defaultProps={context:{}},W.displayName="HelmetProvider";var K=function(e,a){var n,t=document.head||document.querySelector(m.HEAD),d=t.querySelectorAll(e+"[data-rh]"),r=[].slice.call(d),o=[];return a&&a.length&&a.forEach((function(a){var t=document.createElement(e);for(var d in a)Object.prototype.hasOwnProperty.call(a,d)&&("innerHTML"===d?t.innerHTML=a.innerHTML:"cssText"===d?t.styleSheet?t.styleSheet.cssText=a.cssText:t.appendChild(document.createTextNode(a.cssText)):t.setAttribute(d,void 0===a[d]?"":a[d]));t.setAttribute("data-rh","true"),r.some((function(e,a){return n=a,t.isEqualNode(e)}))?r.splice(n,1):o.push(t)})),r.forEach((function(e){return e.parentNode.removeChild(e)})),o.forEach((function(e){return t.appendChild(e)})),{oldTags:r,newTags:o}},Y=function(e,a){var n=document.getElementsByTagName(e)[0];if(n){for(var t=n.getAttribute("data-rh"),d=t?t.split(","):[],r=[].concat(d),o=Object.keys(a),i=0;i=0;u-=1)n.removeAttribute(r[u]);d.length===r.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==o.join(",")&&n.setAttribute("data-rh",o.join(","))}},Z=function(e,a){var n=e.baseTag,t=e.htmlAttributes,d=e.linkTags,r=e.metaTags,o=e.noscriptTags,i=e.onChangeClientState,s=e.scriptTags,g=e.styleTags,c=e.title,u=e.titleAttributes;Y(m.BODY,e.bodyAttributes),Y(m.HTML,t),function(e,a){void 0!==e&&document.title!==e&&(document.title=C(e)),Y(m.TITLE,a)}(c,u);var l={baseTag:K(m.BASE,n),linkTags:K(m.LINK,d),metaTags:K(m.META,r),noscriptTags:K(m.NOSCRIPT,o),scriptTags:K(m.SCRIPT,s),styleTags:K(m.STYLE,g)},R={},p={};Object.keys(l).forEach((function(e){var a=l[e],n=a.newTags,t=a.oldTags;n.length&&(R[e]=n),t.length&&(p[e]=l[e].oldTags)})),a&&a(),i(e,R,p)},$=null,X=function(e){function a(){for(var a,n=arguments.length,t=new Array(n),d=0;d elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var a,n=e.child,t=e.arrayTypeChildren;return R({},t,((a={})[n.type]=[].concat(t[n.type]||[],[R({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),a))},n.mapObjectTypeChildren=function(e){var a,n,t=e.child,d=e.newProps,r=e.newChildProps,o=e.nestedChildren;switch(t.type){case m.TITLE:return R({},d,((a={})[t.type]=o,a.titleAttributes=R({},r),a));case m.BODY:return R({},d,{bodyAttributes:R({},r)});case m.HTML:return R({},d,{htmlAttributes:R({},r)});default:return R({},d,((n={})[t.type]=R({},r),n))}},n.mapArrayTypeChildrenToProps=function(e,a){var n=R({},a);return Object.keys(e).forEach((function(a){var t;n=R({},n,((t={})[a]=e[a],t))})),n},n.warnOnInvalidChildren=function(e,a){return c()(j.some((function(a){return e.type===a})),"function"==typeof e.type?"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+j.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),c()(!a||"string"==typeof a||Array.isArray(a)&&!a.some((function(e){return"string"!=typeof e})),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``} ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,a){var n=this,t={};return d.a.Children.forEach(e,(function(e){if(e&&e.props){var d=e.props,r=d.children,o=h(d,Q),i=Object.keys(o).reduce((function(e,a){return e[_[a]||a]=o[a],e}),{}),s=e.type;switch("symbol"==typeof s?s=s.toString():n.warnOnInvalidChildren(e,r),s){case m.FRAGMENT:a=n.mapChildrenToProps(r,a);break;case m.LINK:case m.META:case m.NOSCRIPT:case m.SCRIPT:case m.STYLE:t=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:t,newChildProps:i,nestedChildren:r});break;default:a=n.mapObjectTypeChildren({child:e,newProps:a,newChildProps:i,nestedChildren:r})}}})),this.mapArrayTypeChildrenToProps(t,a)},n.render=function(){var e=this.props,a=e.children,n=h(e,J),t=R({},n),r=n.helmetData;return a&&(t=this.mapChildrenToProps(a,t)),!r||r instanceof V||(r=new V(r.context,r.instances)),r?d.a.createElement(X,R({},t,{context:r.value,helmetData:void 0})):d.a.createElement(U.Consumer,null,(function(e){return d.a.createElement(X,R({},t,{context:e}))}))},a}(t.Component);ee.propTypes={base:o.a.object,bodyAttributes:o.a.object,children:o.a.oneOfType([o.a.arrayOf(o.a.node),o.a.node]),defaultTitle:o.a.string,defer:o.a.bool,encodeSpecialCharacters:o.a.bool,htmlAttributes:o.a.object,link:o.a.arrayOf(o.a.object),meta:o.a.arrayOf(o.a.object),noscript:o.a.arrayOf(o.a.object),onChangeClientState:o.a.func,script:o.a.arrayOf(o.a.object),style:o.a.arrayOf(o.a.object),title:o.a.string,titleAttributes:o.a.object,titleTemplate:o.a.string,prioritizeSeoTags:o.a.bool,helmetData:o.a.object},ee.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},ee.displayName="Helmet"},rlJZ:function(e,a,n){var t=n("JBh7");e.exports=t},rqE6:function(e,a,n){const t=n("dVj6")(256,258,260,262,264,266,268,270,272,274,276,278,280,282,284,286,288,290,292,294,296,298,300,302,304,306,308,310,313,315,317,319,321,323,325,327,330,332,334,336,338,340,342,344,346,348,350,352,354,356,358,360,362,364,366,368,370,372,374,379,381,388,418,420,425,428,437,444,452,455,458,461,463,465,467,469,471,473,475,478,480,482,484,486,488,490,492,494,497,500,506,508,510,512,514,516,518,520,522,524,526,528,530,532,534,536,538,540,542,544,546,548,550,552,554,556,558,560,562,577,584,586,588,590,880,882,886,895,902,908,975,984,986,988,990,992,994,996,998,1e3,1002,1004,1006,1012,1015,1120,1122,1124,1126,1128,1130,1132,1134,1136,1138,1140,1142,1144,1146,1148,1150,1152,1162,1164,1166,1168,1170,1172,1174,1176,1178,1180,1182,1184,1186,1188,1190,1192,1194,1196,1198,1200,1202,1204,1206,1208,1210,1212,1214,1219,1221,1223,1225,1227,1229,1232,1234,1236,1238,1240,1242,1244,1246,1248,1250,1252,1254,1256,1258,1260,1262,1264,1266,1268,1270,1272,1274,1276,1278,1280,1282,1284,1286,1288,1290,1292,1294,1296,1298,1300,1302,1304,1306,1308,1310,1312,1314,1316,1318,1320,1322,1324,1326,4295,4301,7680,7682,7684,7686,7688,7690,7692,7694,7696,7698,7700,7702,7704,7706,7708,7710,7712,7714,7716,7718,7720,7722,7724,7726,7728,7730,7732,7734,7736,7738,7740,7742,7744,7746,7748,7750,7752,7754,7756,7758,7760,7762,7764,7766,7768,7770,7772,7774,7776,7778,7780,7782,7784,7786,7788,7790,7792,7794,7796,7798,7800,7802,7804,7806,7808,7810,7812,7814,7816,7818,7820,7822,7824,7826,7828,7838,7840,7842,7844,7846,7848,7850,7852,7854,7856,7858,7860,7862,7864,7866,7868,7870,7872,7874,7876,7878,7880,7882,7884,7886,7888,7890,7892,7894,7896,7898,7900,7902,7904,7906,7908,7910,7912,7914,7916,7918,7920,7922,7924,7926,7928,7930,7932,7934,8025,8027,8029,8031,8450,8455,8469,8484,8486,8488,8517,8579,11360,11367,11369,11371,11378,11381,11394,11396,11398,11400,11402,11404,11406,11408,11410,11412,11414,11416,11418,11420,11422,11424,11426,11428,11430,11432,11434,11436,11438,11440,11442,11444,11446,11448,11450,11452,11454,11456,11458,11460,11462,11464,11466,11468,11470,11472,11474,11476,11478,11480,11482,11484,11486,11488,11490,11499,11501,11506,42560,42562,42564,42566,42568,42570,42572,42574,42576,42578,42580,42582,42584,42586,42588,42590,42592,42594,42596,42598,42600,42602,42604,42624,42626,42628,42630,42632,42634,42636,42638,42640,42642,42644,42646,42648,42650,42786,42788,42790,42792,42794,42796,42798,42802,42804,42806,42808,42810,42812,42814,42816,42818,42820,42822,42824,42826,42828,42830,42832,42834,42836,42838,42840,42842,42844,42846,42848,42850,42852,42854,42856,42858,42860,42862,42873,42875,42880,42882,42884,42886,42891,42893,42896,42898,42902,42904,42906,42908,42910,42912,42914,42916,42918,42920,42934,42936,42938,42940,42942,42944,42946,42953,42960,42966,42968,42997,119964,119970,120134,120778);t.addRange(65,90).addRange(192,214).addRange(216,222).addRange(376,377).addRange(385,386).addRange(390,391).addRange(393,395).addRange(398,401).addRange(403,404).addRange(406,408).addRange(412,413).addRange(415,416).addRange(422,423).addRange(430,431).addRange(433,435).addRange(439,440).addRange(502,504).addRange(570,571).addRange(573,574).addRange(579,582).addRange(904,906).addRange(910,911).addRange(913,929).addRange(931,939).addRange(978,980).addRange(1017,1018).addRange(1021,1071).addRange(1216,1217).addRange(1329,1366).addRange(4256,4293).addRange(5024,5109).addRange(7312,7354).addRange(7357,7359).addRange(7944,7951).addRange(7960,7965).addRange(7976,7983).addRange(7992,7999).addRange(8008,8013).addRange(8040,8047).addRange(8120,8123).addRange(8136,8139).addRange(8152,8155).addRange(8168,8172).addRange(8184,8187).addRange(8459,8461).addRange(8464,8466).addRange(8473,8477).addRange(8490,8493).addRange(8496,8499).addRange(8510,8511).addRange(11264,11311),t.addRange(11362,11364).addRange(11373,11376).addRange(11390,11392).addRange(42877,42878).addRange(42922,42926).addRange(42928,42932).addRange(42948,42951).addRange(65313,65338).addRange(66560,66599).addRange(66736,66771).addRange(66928,66938).addRange(66940,66954).addRange(66956,66962).addRange(66964,66965).addRange(68736,68786).addRange(71840,71871).addRange(93760,93791).addRange(119808,119833).addRange(119860,119885).addRange(119912,119937).addRange(119966,119967).addRange(119973,119974).addRange(119977,119980).addRange(119982,119989).addRange(120016,120041).addRange(120068,120069).addRange(120071,120074).addRange(120077,120084).addRange(120086,120092).addRange(120120,120121).addRange(120123,120126).addRange(120128,120132).addRange(120138,120144).addRange(120172,120197).addRange(120224,120249).addRange(120276,120301).addRange(120328,120353).addRange(120380,120405).addRange(120432,120457).addRange(120488,120512).addRange(120546,120570).addRange(120604,120628).addRange(120662,120686).addRange(120720,120744).addRange(125184,125217),e.exports=t},rtlb:function(e,a,n){var t=n("g6v/"),d=n("0Dky");e.exports=t&&d((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},rzlk:function(e,a,n){"use strict";n.r(a);var t=n("rePB"),d=n("q1tI"),r=n.n(d),o=n("emEt"),i=n("IOVJ");function s(e,a){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);a&&(t=t.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),n.push.apply(n,t)}return n}a.default=e=>{let{location:a}=e;const n=o.default.loadPageSync(a.pathname);return n?r.a.createElement(i.a,function(e){for(var a=1;a=a||n<0||h&&e-p>=c}function j(){var e=d();if(v(e))return O(e);l=setTimeout(j,function(e){var n=a-(e-R);return h?i(n,c-(e-p)):n}(e))}function O(e){return l=void 0,m&&s?b(e):(s=g=void 0,u)}function _(){var e=d(),n=v(e);if(s=arguments,g=this,R=e,n){if(void 0===l)return y(R);if(h)return clearTimeout(l),l=setTimeout(j,a),b(R)}return void 0===l&&(l=setTimeout(j,a)),u}return a=r(a)||0,t(n)&&(f=!!n.leading,c=(h="maxWait"in n)?o(r(n.maxWait)||0,a):c,m="trailing"in n?!!n.trailing:m),_.cancel=function(){void 0!==l&&clearTimeout(l),p=0,s=R=g=l=void 0},_.flush=function(){return void 0===l?u:O(d())},_}},sI65:function(e,a,n){const t=n("dVj6")();t.addRange(5984,5996).addRange(5998,6e3).addRange(6002,6003),e.exports=t},sMr2:function(e,a,n){const t=n("dVj6")(67871);t.addRange(67840,67867),e.exports=t},sR9r:function(e,a,n){const t=n("dVj6")(7376,7378,7386,7410,7412);t.addRange(2385,2386).addRange(2404,2405).addRange(3200,3212).addRange(3214,3216).addRange(3218,3240).addRange(3242,3251).addRange(3253,3257).addRange(3260,3268).addRange(3270,3272).addRange(3274,3277).addRange(3285,3286).addRange(3293,3294).addRange(3296,3299).addRange(3302,3311).addRange(3313,3314).addRange(43056,43061),e.exports=t},sUPn:function(e,a,n){"use strict";n.r(a),n.d(a,"_frontmatter",(function(){return s})),n.d(a,"default",(function(){return u}));var t=n("wx14"),d=n("Ff2n"),r=(n("q1tI"),n("7ljp")),o=n("hhGP");n("qKvR");const i=["components"],s={};void 0!==s&&s&&s===Object(s)&&Object.isExtensible(s)&&!Object.prototype.hasOwnProperty.call(s,"__filemeta")&&Object.defineProperty(s,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"src/components/install/tk/osx.mdx"}});const g={_frontmatter:s},c=o.a;function u(e){let{components:a}=e,n=Object(d.a)(e,i);return Object(r.b)(c,Object(t.a)({},g,n,{components:a,mdxType:"MDXLayout"}),Object(r.b)("p",null,"On macOS, Tanka is best installed using ",Object(r.b)("a",{parentName:"p",href:"https://brew.sh"},Object(r.b)("inlineCode",{parentName:"a"},"brew")),":"),Object(r.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(r.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(r.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(r.b)("span",{parentName:"span",className:"mtk1"},"$ brew install tanka")))),Object(r.b)("p",null,"This downloads the most recent version of Tanka and installs it.",Object(r.b)("br",{parentName:"p"}),"\n","Also, Tanka is automatically kept up to date as part of ",Object(r.b)("inlineCode",{parentName:"p"},"brew upgrade"),"."),Object(r.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==u&&u&&u===Object(u)&&Object.isExtensible(u)&&!Object.prototype.hasOwnProperty.call(u,"__filemeta")&&Object.defineProperty(u,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"src/components/install/tk/osx.mdx"}}),u.isMDXComponent=!0},sZCt:function(e,a,n){var t=n("ttrC"),d=n("Ig5p");e.exports=function(e,a,n){return t(d,e,a,n)}},sceD:function(e,a,n){const t=n("dVj6")();t.addRange(43520,43574).addRange(43584,43597).addRange(43600,43609).addRange(43612,43615),e.exports=t},seXi:function(e,a,n){var t=n("qZTm"),d=Object.prototype.hasOwnProperty;e.exports=function(e,a,n,r,o,i){var s=1&n,g=t(e),c=g.length;if(c!=t(a).length&&!s)return!1;for(var u=c;u--;){var l=g[u];if(!(s?l in a:d.call(a,l)))return!1}var R=i.get(e),p=i.get(a);if(R&&p)return R==a&&p==e;var f=!0;i.set(e,a),i.set(a,e);for(var h=s;++u-1&&e%1==0&&e<=9007199254740991}},suAS:function(e,a,n){const t=n("dVj6")(94180);t.addRange(101120,101589),e.exports=t},t2Dn:function(e,a,n){var t=n("hypo"),d=n("ljhN");e.exports=function(e,a,n){(void 0!==n&&!d(e[a],n)||void 0===n&&!(a in e))&&t(e,a,n)}},t2dP:function(e,a){e.exports=function(e,a){for(var n=e.length,t=0;n--;)e[n]===a&&++t;return t}},t4pw:function(e,a,n){const t=n("dVj6")();t.addRange(5792,5866).addRange(5870,5880),e.exports=t},t4zZ:function(e,a,n){const t=n("dVj6")();t.addRange(40960,42124).addRange(42128,42182),e.exports=t},tC4l:function(e,a){var n=Math.ceil,t=Math.floor;e.exports=Math.trunc||function(e){var a=+e;return(a>0?t:n)(a)}},tCnl:function(e,a,n){var t=n("sZCt")("flow",n("56YH"));t.placeholder=n("wuTn"),e.exports=t},tF1p:function(e,a,n){const t=n("dVj6")();t.addRange(7168,7223).addRange(7227,7241).addRange(7245,7247),e.exports=t},tLB3:function(e,a,n){var t=n("jXQH"),d=n("GoyQ"),r=n("/9aa"),o=/^[-+]0x[0-9a-f]+$/i,i=/^0b[01]+$/i,s=/^0o[0-7]+$/i,g=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(r(e))return NaN;if(d(e)){var a="function"==typeof e.valueOf?e.valueOf():e;e=d(a)?a+"":a}if("string"!=typeof e)return 0===e?e:+e;e=t(e);var n=i.test(e);return n||s.test(e)?g(e.slice(2),n?2:8):o.test(e)?NaN:+e}},tMB7:function(e,a,n){var t=n("y1pI");e.exports=function(e){var a=this.__data__,n=t(a,e);return n<0?void 0:a[n][1]}},tUQf:function(e,a,n){const t=n("dVj6")(6148);t.addRange(6144,6145).addRange(6150,6169).addRange(6176,6264).addRange(6272,6314).addRange(71264,71276),e.exports=t},tadb:function(e,a,n){var t=n("Cwc5")(n("Kz5y"),"DataView");e.exports=t},tgrt:function(e,a,n){const t=n("dVj6")(66463);t.addRange(66432,66461),e.exports=t},tiKp:function(e,a,n){var t=n("2oRo"),d=n("VpIT"),r=n("Gi26"),o=n("kOOl"),i=n("BPiQ"),s=n("/b8u"),g=t.Symbol,c=d("wks"),u=s?g.for||g:g&&g.withoutSetter||o;e.exports=function(e){return r(c,e)||(c[e]=i&&r(g,e)?g[e]:u("Symbol."+e)),c[e]}},ttrC:function(e,a,n){var t=n("iGAk"),d=n("wuTn"),r=Array.prototype.push;function o(e,a){return 2==a?function(a,n){return e(a,n)}:function(a){return e(a)}}function i(e){for(var a=e?e.length:0,n=Array(a);a--;)n[a]=e[a];return n}function s(e,a){return function(){var n=arguments.length;if(n){for(var t=Array(n);n--;)t[n]=arguments[n];var d=t[0]=a.apply(void 0,t);return e.apply(void 0,t),d}}}e.exports=function e(a,n,g,c){var u="function"==typeof n,l=n===Object(n);if(l&&(c=g,g=n,n=void 0),null==g)throw new TypeError;c||(c={});var R=!("cap"in c)||c.cap,p=!("curry"in c)||c.curry,f=!("fixed"in c)||c.fixed,h=!("immutable"in c)||c.immutable,m=!("rearg"in c)||c.rearg,b=u?g:d,y="curry"in c&&c.curry,v="fixed"in c&&c.fixed,j="rearg"in c&&c.rearg,O=u?g.runInContext():void 0,_=u?g:{ary:a.ary,assign:a.assign,clone:a.clone,curry:a.curry,forEach:a.forEach,isArray:a.isArray,isError:a.isError,isFunction:a.isFunction,isWeakMap:a.isWeakMap,iteratee:a.iteratee,keys:a.keys,rearg:a.rearg,toInteger:a.toInteger,toPath:a.toPath},x=_.ary,w=_.assign,E=_.clone,k=_.curry,S=_.forEach,D=_.isArray,A=_.isError,C=_.isFunction,P=_.isWeakMap,F=_.keys,T=_.rearg,L=_.toInteger,B=_.toPath,N=F(t.aryMethod),I={castArray:function(e){return function(){var a=arguments[0];return D(a)?e(i(a)):e.apply(void 0,arguments)}},iteratee:function(e){return function(){var a=arguments[0],n=arguments[1],t=e(a,n),d=t.length;return R&&"number"==typeof n?(n=n>2?n-2:1,d&&d<=n?t:o(t,n)):t}},mixin:function(e){return function(a){var n=this;if(!C(n))return e(n,Object(a));var t=[];return S(F(a),(function(e){C(a[e])&&t.push([e,n.prototype[e]])})),e(n,Object(a)),S(t,(function(e){var a=e[1];C(a)?n.prototype[e[0]]=a:delete n.prototype[e[0]]})),n}},nthArg:function(e){return function(a){var n=a<0?1:L(a)+1;return k(e(a),n)}},rearg:function(e){return function(a,n){var t=n?n.length:0;return k(e(a,n),t)}},runInContext:function(n){return function(t){return e(a,n(t),c)}}};function M(e,a){if(R){var n=t.iterateeRearg[e];if(n)return function(e,a){return G(e,(function(e){var n=a.length;return function(e,a){return 2==a?function(a,n){return e.apply(void 0,arguments)}:function(a){return e.apply(void 0,arguments)}}(T(o(e,n),a),n)}))}(a,n);var d=!u&&t.iterateeAry[e];if(d)return function(e,a){return G(e,(function(e){return"function"==typeof e?o(e,a):e}))}(a,d)}return a}function z(e,a,n){if(f&&(v||!t.skipFixed[e])){var d=t.methodSpread[e],o=d&&d.start;return void 0===o?x(a,n):function(e,a){return function(){for(var n=arguments.length,t=n-1,d=Array(n);n--;)d[n]=arguments[n];var o=d[a],i=d.slice(0,a);return o&&r.apply(i,o),a!=t&&r.apply(i,d.slice(a+1)),e.apply(this,i)}}(a,o)}return a}function q(e,a,n){return m&&n>1&&(j||!t.skipRearg[e])?T(a,t.methodRearg[e]||t.aryRearg[n]):a}function V(e,a){for(var n=-1,t=(a=B(a)).length,d=t-1,r=E(Object(e)),o=r;null!=o&&++n1?k(a,n):a}(0,d=M(r,d),e),!1}})),!d})),d||(d=o),d==a&&(d=y?k(d,1):function(){return a.apply(this,arguments)}),d.convert=U(r,a),d.placeholder=a.placeholder=n,d}if(!l)return H(n,g,b);var W=g,K=[];return S(N,(function(e){S(t.aryMethod[e],(function(e){var a=W[t.remap[e]||e];a&&K.push([e,H(e,a,W)])}))})),S(F(W),(function(e){var a=W[e];if("function"==typeof a){for(var n=K.length;n--;)if(K[n][0]==e)return;a.convert=U(e,a),K.push([e,a])}})),S(K,(function(e){W[e[0]]=e[1]})),W.convert=function(e){return W.runInContext.convert(e)(void 0)},W.placeholder=W,S(F(W),(function(e){S(t.realToAlias[e]||[],(function(a){W[a]=W[e]}))})),W}},twGC:function(e,a,n){const t=n("dVj6")();t.addRange(68224,68255),e.exports=t},txSG:function(e,a,n){"use strict";n.d(a,"h",(function(){return _})),n.d(a,"g",(function(){return de})),n.d(a,"j",(function(){return U})),n.d(a,"i",(function(){return ee})),n.d(a,"f",(function(){return M})),n.d(a,"a",(function(){return re})),n.d(a,"c",(function(){return oe})),n.d(a,"d",(function(){return ie})),n.d(a,"e",(function(){return se})),n.d(a,"b",(function(){return ge}));var t=n("7ljp"),d=n("PE4B"),r=n.n(d);var o=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,i=function(e){var a={};return function(n){return void 0===a[n]&&(a[n]=e(n)),a[n]}}((function(e){return o.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91})),s=n("ITVs"),g=n("q1tI"),c=n("qKvR");function u(){return(u=Object.assign||function(e){for(var a=1;a=0)return l(e,a,a);var n=Math.abs(a),t=l(e,n,n);return"string"==typeof t?"-"+t:-1*t},y=["margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","top","bottom","left","right"].reduce((function(e,a){var n;return u({},e,((n={})[a]=b,n))}),{}),v=function e(a){return function(n){void 0===n&&(n={});var t=u({},p,{},n.theme||n),d={},r=function(e){return function(a){var n={},t=l(a,"breakpoints",R),d=[null].concat(t.map((function(e){return"@media screen and (min-width: "+e+")"})));for(var r in e){var o="function"==typeof e[r]?e[r](a):e[r];if(null!=o)if(Array.isArray(o))for(var i=0;i2?t-2:0),r=2;r=0||(d[n]=e[n]);return d}(e,a);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(d[n]=e[n])}return d}function D(e,a){return function(e){if(Array.isArray(e))return e}(e)||function(e,a){if(!(Symbol.iterator in Object(e))&&"[object Arguments]"!==Object.prototype.toString.call(e))return;var n=[],t=!0,d=!1,r=void 0;try{for(var o,i=e[Symbol.iterator]();!(t=(o=i.next()).done)&&(n.push(o.value),!a||n.length!==a);t=!0);}catch(s){d=!0,r=s}finally{try{t||null==i.return||i.return()}finally{if(d)throw r}}return n}(e,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}var A="function"==typeof Symbol&&Symbol.for,C=A?Symbol.for("react.element"):60103,P=A?Symbol.for("react.forward_ref"):60103,F=function(e){return!!e&&"object"===x(e)&&e.$$typeof!==C&&e.$$typeof!==P},T=function(e,a,n){return a},L=function(e,a){return r()(e,a,{isMergeableObject:F,arrayMerge:T})};L.all=function(){for(var e=arguments,a=arguments.length,n=new Array(a),t=0;t0&&void 0!==arguments[0]?arguments[0]:{},a={};return Object.keys(e).forEach((function(n){a[n]=B(e[n])(N(n))})),a},V=Object(g.createContext)({emotionVersion:s.a,theme:null,components:z}),U=function(){return Object(g.useContext)(V)},G=function(e){return"--theme-ui-".concat(e)},H=function(e,a){return"var(".concat(G(e),", ").concat(a,")")},W=function(){for(var e=arguments,a=arguments.length,n=new Array(a),t=0;t-1&&e%1==0&&e{if(!n.plugin[e])return;a.getResourcesForPathnameSync=r,a.getResourcesForPathname=d,a.getResourceURLsForPathname=o,a.loadPage=i,a.loadPageSync=s;const t=n.plugin[e](a,n.options);return t&&g&&(a=g({args:a,result:t,plugin:n})),t});return c=c.filter(e=>void 0!==e),c.length>0?c:n?[n]:[]},a.apiRunnerAsync=(e,a,n)=>t.reduce((n,t)=>t.plugin[e]?n.then(()=>t.plugin[e](a,t.options)):n,Promise.resolve())},y1pI:function(e,a,n){var t=n("ljhN");e.exports=function(e,a){for(var n=e.length;n--;)if(t(e[n][0],a))return n;return-1}},y4QH:function(e,a){var n=Math.max;e.exports=function(e,a,t,d){for(var r=-1,o=e.length,i=t.length,s=-1,g=a.length,c=n(o-i,0),u=Array(g+c),l=!d;++sg;)d(t,n=a[g++])&&(~o(c,n)||s(c,n));return c}},yxwC:function(e,a,n){const t=n("dVj6")(1471,1479,1648,1809,2045,2492,2519,2558,2620,2641,2677,2748,2876,2946,3031,3132,3260,3415,3530,3542,3633,3761,3893,3895,3897,4038,4239,6109,6159,6313,6783,7405,7412,11647,43010,43014,43019,43052,43263,43493,43587,43696,43713,64286,66045,66272,68159,69744,69826,70003,70206,70487,70750,72e3,72164,72263,73018,73031,94031,94180,121461,121476,123566);t.addRange(768,879).addRange(1155,1161).addRange(1425,1469).addRange(1473,1474).addRange(1476,1477).addRange(1552,1562).addRange(1611,1631).addRange(1750,1756).addRange(1759,1764).addRange(1767,1768).addRange(1770,1773).addRange(1840,1866).addRange(1958,1968).addRange(2027,2035).addRange(2070,2073).addRange(2075,2083).addRange(2085,2087).addRange(2089,2093).addRange(2137,2139).addRange(2200,2207).addRange(2250,2273).addRange(2275,2307).addRange(2362,2364).addRange(2366,2383).addRange(2385,2391).addRange(2402,2403).addRange(2433,2435).addRange(2494,2500).addRange(2503,2504).addRange(2507,2509).addRange(2530,2531).addRange(2561,2563).addRange(2622,2626).addRange(2631,2632).addRange(2635,2637).addRange(2672,2673).addRange(2689,2691).addRange(2750,2757).addRange(2759,2761).addRange(2763,2765).addRange(2786,2787).addRange(2810,2815).addRange(2817,2819).addRange(2878,2884).addRange(2887,2888).addRange(2891,2893).addRange(2901,2903).addRange(2914,2915).addRange(3006,3010).addRange(3014,3016).addRange(3018,3021),t.addRange(3072,3076).addRange(3134,3140).addRange(3142,3144).addRange(3146,3149).addRange(3157,3158).addRange(3170,3171).addRange(3201,3203).addRange(3262,3268).addRange(3270,3272).addRange(3274,3277).addRange(3285,3286).addRange(3298,3299).addRange(3328,3331).addRange(3387,3388).addRange(3390,3396).addRange(3398,3400).addRange(3402,3405).addRange(3426,3427).addRange(3457,3459).addRange(3535,3540).addRange(3544,3551).addRange(3570,3571).addRange(3636,3642).addRange(3655,3662).addRange(3764,3772).addRange(3784,3789).addRange(3864,3865).addRange(3902,3903).addRange(3953,3972).addRange(3974,3975).addRange(3981,3991).addRange(3993,4028).addRange(4139,4158).addRange(4182,4185).addRange(4190,4192).addRange(4194,4196).addRange(4199,4205).addRange(4209,4212).addRange(4226,4237).addRange(4250,4253).addRange(4957,4959).addRange(5906,5909).addRange(5938,5940).addRange(5970,5971).addRange(6002,6003).addRange(6068,6099).addRange(6155,6157).addRange(6277,6278).addRange(6432,6443).addRange(6448,6459).addRange(6679,6683),t.addRange(6741,6750).addRange(6752,6780).addRange(6832,6862).addRange(6912,6916).addRange(6964,6980).addRange(7019,7027).addRange(7040,7042).addRange(7073,7085).addRange(7142,7155).addRange(7204,7223).addRange(7376,7378).addRange(7380,7400).addRange(7415,7417).addRange(7616,7679).addRange(8400,8432).addRange(11503,11505).addRange(11744,11775).addRange(12330,12335).addRange(12441,12442).addRange(42607,42610).addRange(42612,42621).addRange(42654,42655).addRange(42736,42737).addRange(43043,43047).addRange(43136,43137).addRange(43188,43205).addRange(43232,43249).addRange(43302,43309).addRange(43335,43347).addRange(43392,43395).addRange(43443,43456).addRange(43561,43574).addRange(43596,43597).addRange(43643,43645).addRange(43698,43700).addRange(43703,43704).addRange(43710,43711).addRange(43755,43759).addRange(43765,43766).addRange(44003,44010).addRange(44012,44013).addRange(65024,65039).addRange(65056,65071).addRange(66422,66426).addRange(68097,68099).addRange(68101,68102).addRange(68108,68111).addRange(68152,68154).addRange(68325,68326).addRange(68900,68903).addRange(69291,69292),t.addRange(69446,69456).addRange(69506,69509).addRange(69632,69634).addRange(69688,69702).addRange(69747,69748).addRange(69759,69762).addRange(69808,69818).addRange(69888,69890).addRange(69927,69940).addRange(69957,69958).addRange(70016,70018).addRange(70067,70080).addRange(70089,70092).addRange(70094,70095).addRange(70188,70199).addRange(70367,70378).addRange(70400,70403).addRange(70459,70460).addRange(70462,70468).addRange(70471,70472).addRange(70475,70477).addRange(70498,70499).addRange(70502,70508).addRange(70512,70516).addRange(70709,70726).addRange(70832,70851).addRange(71087,71093).addRange(71096,71104).addRange(71132,71133).addRange(71216,71232).addRange(71339,71351).addRange(71453,71467).addRange(71724,71738).addRange(71984,71989).addRange(71991,71992).addRange(71995,71998).addRange(72002,72003).addRange(72145,72151).addRange(72154,72160).addRange(72193,72202).addRange(72243,72249).addRange(72251,72254).addRange(72273,72283).addRange(72330,72345).addRange(72751,72758).addRange(72760,72767).addRange(72850,72871).addRange(72873,72886).addRange(73009,73014).addRange(73020,73021).addRange(73023,73029),t.addRange(73098,73102).addRange(73104,73105).addRange(73107,73111).addRange(73459,73462).addRange(92912,92916).addRange(92976,92982).addRange(94033,94087).addRange(94095,94098).addRange(94192,94193).addRange(113821,113822).addRange(118528,118573).addRange(118576,118598).addRange(119141,119145).addRange(119149,119154).addRange(119163,119170).addRange(119173,119179).addRange(119210,119213).addRange(119362,119364).addRange(121344,121398).addRange(121403,121452).addRange(121499,121503).addRange(121505,121519).addRange(122880,122886).addRange(122888,122904).addRange(122907,122913).addRange(122915,122916).addRange(122918,122922).addRange(123184,123190).addRange(123628,123631).addRange(125136,125142).addRange(125252,125258).addRange(917760,917999),e.exports=t},yy0I:function(e,a,n){var t=n("Fib7"),d=n("m/L8"),r=n("E9LY"),o=n("Y3Q8");e.exports=function(e,a,n,i){i||(i={});var s=i.enumerable,g=void 0!==i.name?i.name:a;if(t(n)&&r(n,g,i),i.global)s?e[a]=n:o(a,n);else{try{i.unsafe?e[a]&&(s=!0):delete e[a]}catch(c){}s?e[a]=n:d.f(e,a,{value:n,enumerable:!1,configurable:!i.nonConfigurable,writable:!i.nonWritable})}return e}},yyEx:function(e,a,n){const t=n("dVj6")();t.addRange(48,57).addRange(1632,1641).addRange(1776,1785).addRange(1984,1993).addRange(2406,2415).addRange(2534,2543).addRange(2662,2671).addRange(2790,2799).addRange(2918,2927).addRange(3046,3055).addRange(3174,3183).addRange(3302,3311).addRange(3430,3439).addRange(3558,3567).addRange(3664,3673).addRange(3792,3801).addRange(3872,3881).addRange(4160,4169).addRange(4240,4249).addRange(6112,6121).addRange(6160,6169).addRange(6470,6479).addRange(6608,6617).addRange(6784,6793).addRange(6800,6809).addRange(6992,7001).addRange(7088,7097).addRange(7232,7241).addRange(7248,7257).addRange(42528,42537).addRange(43216,43225).addRange(43264,43273).addRange(43472,43481).addRange(43504,43513).addRange(43600,43609).addRange(44016,44025).addRange(65296,65305).addRange(66720,66729).addRange(68912,68921).addRange(69734,69743).addRange(69872,69881).addRange(69942,69951).addRange(70096,70105).addRange(70384,70393).addRange(70736,70745).addRange(70864,70873).addRange(71248,71257).addRange(71360,71369).addRange(71472,71481).addRange(71904,71913).addRange(72016,72025),t.addRange(72784,72793).addRange(73040,73049).addRange(73120,73129).addRange(92768,92777).addRange(92864,92873).addRange(93008,93017).addRange(120782,120831).addRange(123200,123209).addRange(123632,123641).addRange(125264,125273).addRange(130032,130041),e.exports=t},z0Ef:function(e,a,n){const t=n("dVj6")();t.addRange(93760,93850),e.exports=t},z8DC:function(e,a,n){const t=n("dVj6")();t.addRange(2404,2415).addRange(43056,43065).addRange(69968,70006),e.exports=t},z8l3:function(e,a,n){"use strict";n.r(a),n.d(a,"_frontmatter",(function(){return s})),n.d(a,"default",(function(){return u}));var t=n("wx14"),d=n("Ff2n"),r=(n("q1tI"),n("7ljp")),o=n("hhGP");n("qKvR");const i=["components"],s={};void 0!==s&&s&&s===Object(s)&&Object.isExtensible(s)&&!Object.prototype.hasOwnProperty.call(s,"__filemeta")&&Object.defineProperty(s,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"src/components/install/tk/arch.mdx"}});const g={_frontmatter:s},c=o.a;function u(e){let{components:a}=e,n=Object(d.a)(e,i);return Object(r.b)(c,Object(t.a)({},g,n,{components:a,mdxType:"MDXLayout"}),Object(r.b)("p",null,"We maintain two AUR packages, one building ",Object(r.b)("a",{parentName:"p",href:"https://aur.archlinux.org/packages/tanka/"},"from\nsource")," and another one using a\n",Object(r.b)("a",{parentName:"p",href:"https://aur.archlinux.org/packages/tanka-bin/"},"pre-compiled binary"),"."),Object(r.b)("p",null,"These can be installed using any AUR helper, e.g. ",Object(r.b)("a",{parentName:"p",href:"https://github.com/Jguer/yay"},Object(r.b)("inlineCode",{parentName:"a"},"yay")),":"),Object(r.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(r.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(r.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(r.b)("span",{parentName:"span",className:"mtk3 mtki"},"# from source:")),"\n",Object(r.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(r.b)("span",{parentName:"span",className:"mtk1"},"$ yay tanka")),"\n",Object(r.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(r.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(r.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(r.b)("span",{parentName:"span",className:"mtk3 mtki"},"# using pre-compiled binary:")),"\n",Object(r.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(r.b)("span",{parentName:"span",className:"mtk1"},"$ yay tanka-bin")))),Object(r.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==u&&u&&u===Object(u)&&Object.isExtensible(u)&&!Object.prototype.hasOwnProperty.call(u,"__filemeta")&&Object.defineProperty(u,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"src/components/install/tk/arch.mdx"}}),u.isMDXComponent=!0},zA3n:function(e,a){e.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAxNDQgNjguNSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTQ0IDY4LjU7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDp1cmwoI1NWR0lEXzFfKTt9Cgkuc3Qxe2ZpbGw6I0ZGRkZGRjt9Cgkuc3Qye2ZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MztzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTA7fQo8L3N0eWxlPgo8bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjcxLjQxNjMiIHkxPSItNTMuNTkiIHgyPSI3Mi4xNzAzIiB5Mj0iOTAuNDE0NCI+Cgk8c3RvcCAgb2Zmc2V0PSIwLjM5ODQiIHN0eWxlPSJzdG9wLWNvbG9yOiNGQUNBMTAiLz4KCTxzdG9wICBvZmZzZXQ9IjAuNjQ5OCIgc3R5bGU9InN0b3AtY29sb3I6I0Y0OEMyMCIvPgoJPHN0b3AgIG9mZnNldD0iMC44NjIyIiBzdHlsZT0ic3RvcC1jb2xvcjojRjA1QjJEIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNDQsNTcuOWMwLDEtMC44LDEuNy0xLjcsMS43SDEuN2MtMSwwLTEuNy0wLjgtMS43LTEuN3MwLjgtMS43LDEuNy0xLjdoMTQwLjVDMTQzLjIsNTYuMSwxNDQsNTYuOSwxNDQsNTcuOXoKCSBNMTUuNiw1MC4xaDEwMS42bDEzLjMtMzMuNWwtNTYuNiw0Ljh2LTguM0gyNS4xdjEyLjRMOC42LDI2LjlMMTUuNiw1MC4xeiBNNjYuNCw4LjloLTM0VjBoMzQuMUw2Ni40LDguOXogTTEyNC44LDY1SDE5LjIKCWMtMSwwLTEuNywwLjgtMS43LDEuN3MwLjgsMS43LDEuNywxLjdoMTA1LjVjMSwwLDEuNy0wLjgsMS43LTEuN1MxMjUuNyw2NSwxMjQuOCw2NXoiLz4KPC9zdmc+Cg=="},zBJ4:function(e,a,n){var t=n("2oRo"),d=n("hh1v"),r=t.document,o=d(r)&&d(r.createElement);e.exports=function(e){return o?r.createElement(e):{}}},zEVN:function(e,a,n){var t=n("Gi0A"),d=n("sEf8"),r=n("mdPL"),o=r&&r.isMap,i=o?d(o):t;e.exports=i},zIrX:function(e,a,n){const t=n("dVj6")();t.addRange(77824,78894).addRange(78896,78904),e.exports=t},zKZe:function(e,a,n){var t=n("I+eb"),d=n("YNrV");t({target:"Object",stat:!0,arity:2,forced:Object.assign!==d},{assign:d})},zMEA:function(e,a,n){const t=n("dVj6")();t.addRange(66208,66256),e.exports=t},zSGR:function(e,a,n){const t=n("dVj6")();t.addRange(7104,7155).addRange(7164,7167),e.exports=t},zWlK:function(e,a,n){const t=n("dVj6")();t.addRange(2048,2093).addRange(2096,2110),e.exports=t},zYVL:function(e,a,n){const t=n("dVj6")(6159);t.addRange(6155,6157).addRange(65024,65039).addRange(917760,917999),e.exports=t},zZ0H:function(e,a){e.exports=function(e){return e}},zc4i:function(e,a,n){var t=n("2oRo"),d=n("Fib7"),r=t.WeakMap;e.exports=d(r)&&/native code/.test(String(r))},zoYe:function(e,a,n){var t=n("nmnc"),d=n("eUgh"),r=n("Z0cm"),o=n("/9aa"),i=t?t.prototype:void 0,s=i?i.toString:void 0;e.exports=function e(a){if("string"==typeof a)return a;if(r(a))return d(a,e)+"";if(o(a))return s?s.call(a):"";var n=a+"";return"0"==n&&1/a==-1/0?"-0":n}},zyj0:function(e,a,n){const t=n("dVj6")(2405,6464);t.addRange(6400,6430).addRange(6432,6443).addRange(6448,6459).addRange(6468,6479),e.exports=t}},[["UxWs",0,36,38,35]]]); -//# sourceMappingURL=app-432e6e5ddac89ddf1392.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/app-432e6e5ddac89ddf1392.js.LICENSE.txt b/pr-preview/pr-1029/app-432e6e5ddac89ddf1392.js.LICENSE.txt deleted file mode 100644 index 042d4da8f..000000000 --- a/pr-preview/pr-1029/app-432e6e5ddac89ddf1392.js.LICENSE.txt +++ /dev/null @@ -1,46 +0,0 @@ -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ - -/*! - * array-sort - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -/*! - * domready (c) Dustin Diaz 2014 - License MIT - * ie10 fix - Mikael Kristiansson 2019 - */ - -/*! - * get-value - * - * Copyright (c) 2014-2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -/*! - * regjsgen 0.5.2 - * Copyright 2014-2020 Benjamin Tan - * Available under the MIT license - */ - -/*! https://mths.be/he v1.2.0 by @mathias | MIT license */ - -/*! https://mths.be/regenerate v1.4.2 by @mathias | MIT license */ - -/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ - -/** @license React v16.13.1 - * react-is.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ diff --git a/pr-preview/pr-1029/app-432e6e5ddac89ddf1392.js.map b/pr-preview/pr-1029/app-432e6e5ddac89ddf1392.js.map deleted file mode 100644 index b65379b25..000000000 --- a/pr-preview/pr-1029/app-432e6e5ddac89ddf1392.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Dash.js","webpack:///./node_modules/lodash/_listCacheHas.js","webpack:///./node_modules/lodash/_cloneArrayBuffer.js","webpack:///./node_modules/core-js/internals/to-positive-integer.js","webpack:///./node_modules/lodash/_baseMerge.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Khudawadi.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Tamil.js","webpack:///./node_modules/gatsby-link/index.js","webpack:///./node_modules/lodash/property.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Emoji_Modifier_Base.js","webpack:///./node_modules/lodash/_initCloneObject.js","webpack:///./node_modules/lodash/fp/throttle.js","webpack:///./node_modules/lodash/isSymbol.js","webpack:///./node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Gunjala_Gondi.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Hanifi_Rohingya.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/ID_Start.js","webpack:///./node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Symbol.js","webpack:///./node_modules/gatsby-react-router-scroll/session-storage.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Nko.js","webpack:///./node_modules/lodash/_updateWrapDetails.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Manichaean.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Lycian.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Letter_Number.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Armenian.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Medefaidrin.js","webpack:///./node_modules/lodash/isArguments.js","webpack:///./node_modules/lodash/_createPartial.js","webpack:///./node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/lodash/toPath.js","webpack:///./node_modules/lodash/_stackSet.js","webpack:///./node_modules/core-js/internals/fails.js","webpack:///./node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Siddham.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Zanabazar_Square.js","webpack:///./node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Gothic.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Emoji_Modifier.js","webpack:///./node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Number.js","webpack:///./node_modules/lodash/stubArray.js","webpack:///./node_modules/lodash/isSet.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Emoji.js","webpack:///./node_modules/regexpu-core/data/iu-mappings.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Yezidi.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Logical_Order_Exception.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Cherokee.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Changes_When_Casemapped.js","webpack:///./node_modules/lodash/_SetCache.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Osage.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Bhaiksuki.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Arabic.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Old_Permic.js","webpack:///./node_modules/@babel/runtime/helpers/interopRequireWildcard.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Latin.js","webpack:///./node_modules/magic-string/dist/magic-string.es.js","webpack:///./node_modules/regenerate-unicode-properties/Script/SignWriting.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Ogham.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Assigned.js","webpack:///./node_modules/core-js/internals/engine-is-ie-or-edge.js","webpack:///./node_modules/lodash/_baseIsNaN.js","webpack:///./node_modules/core-js/internals/is-symbol.js","webpack:///./node_modules/lodash/_coreJsData.js","webpack:///./node_modules/lodash/_insertWrapDetails.js","webpack:///./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack:///./node_modules/core-js/internals/global.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Common.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Bhaiksuki.js","webpack:///./.cache/normalize-page-path.js","webpack:///./.cache/find-path.js","webpack:///./node_modules/core-js/internals/object-keys.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Phoenician.js","webpack:///./node_modules/lodash/_setCacheHas.js","webpack:///./node_modules/lodash/curry.js","webpack:///./node_modules/core-js/internals/get-method.js","webpack:///./node_modules/lodash/_toSource.js","webpack:///./node_modules/lodash/isArrayLikeObject.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Titlecase_Letter.js","webpack:///./node_modules/lodash/_basePropertyOf.js","webpack:///./node_modules/lodash/matchesProperty.js","webpack:///./node_modules/gatsby-react-router-scroll/use-scroll-restoration.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Default_Ignorable_Code_Point.js","webpack:///./node_modules/lodash/_basePropertyDeep.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Kaithi.js","webpack:///./node_modules/lodash/memoize.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Javanese.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/lodash/_customOmitClone.js","webpack:///./node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Hex_Digit.js","webpack:///./node_modules/lodash/_Hash.js","webpack:///./node_modules/lodash/_hasPath.js","webpack:///./node_modules/lodash/_castPath.js","webpack:///./node_modules/core-js/internals/function-uncurry-this.js","webpack:///./node_modules/tslib/tslib.es6.js","webpack:///./node_modules/pascal-case/node_modules/lower-case/dist.es2015/index.js","webpack:///./node_modules/pascal-case/node_modules/no-case/dist.es2015/index.js","webpack:///./node_modules/pascal-case/dist.es2015/index.js","webpack:///./node_modules/ulid/dist/index.esm.js","webpack:///./node_modules/match-sorter/dist/match-sorter.esm.js","webpack:///./node_modules/docz/dist/index.esm.js","webpack:///./node_modules/lodash/flow.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Vai.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Cherokee.js","webpack:///./node_modules/lodash/_cloneBuffer.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Lepcha.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Mro.js","webpack:///./src/components/install/jb/go.mdx","webpack:///./node_modules/lodash/_createRecurry.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Linear_A.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Newa.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Other_Symbol.js","webpack:///./.cache/emitter.js","webpack:///./node_modules/mitt/dist/mitt.es.js","webpack:///./node_modules/lodash/flattenDepth.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Imperial_Aramaic.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Tai_Le.js","webpack:///./node_modules/core-js/internals/array-buffer-view-core.js","webpack:///./node_modules/lodash/fp/propEq.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Cypro_Minoan.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Bamum.js","webpack:///./node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Soyombo.js","webpack:///./node_modules/lodash/_replaceHolders.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Hatran.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Braille.js","webpack:///./node_modules/lodash/_createWrap.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Join_Control.js","webpack:///./node_modules/lodash/_LodashWrapper.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Cyrillic.js","webpack:///./node_modules/lodash/fp/first.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Hebrew.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Dogra.js","webpack:///./node_modules/lodash/words.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Modifier_Letter.js","webpack:///./node_modules/lodash/_isPrototype.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Egyptian_Hieroglyphs.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Khojki.js","webpack:///./node_modules/lodash/_baseProperty.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Vithkuqi.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Kharoshthi.js","webpack:///./node_modules/lodash/_stackClear.js","webpack:///./node_modules/default-compare/node_modules/kind-of/index.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Tai_Tham.js","webpack:///./node_modules/lodash/keys.js","webpack:///./node_modules/lodash/_nativeKeysIn.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Bamum.js","webpack:///./node_modules/core-js/internals/define-built-in-accessor.js","webpack:///./node_modules/lodash/_mapToArray.js","webpack:///./node_modules/gatsby-react-router-scroll/index.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Mende_Kikakui.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/XID_Continue.js","webpack:///./node_modules/@mdx-js/react/dist/esm.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Lao.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Sinhala.js","webpack:///./node_modules/lodash/_shortOut.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Hanunoo.js","webpack:///./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Cuneiform.js","webpack:///./node_modules/react-simple-code-editor/lib/index.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Marchen.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Imperial_Aramaic.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Yezidi.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Tagalog.js","webpack:///./node_modules/core-js/internals/shared-key.js","webpack:///./.cache/react-lifecycles-compat.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Pau_Cin_Hau.js","webpack:///./node_modules/lodash/_setData.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Tagalog.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Han.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Chakma.js","webpack:///./node_modules/regenerate-unicode-properties/unicode-version.js","webpack:///./node_modules/lodash/_toKey.js","webpack:///./node_modules/lodash/_unicodeWords.js","webpack:///./.cache/caches/gatsby-plugin-mdx/mdx-scopes-dir/3b068767123dfcea6b5f82a6b8c79d55.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Sogdian.js","webpack:///./node_modules/@reach/router/es/lib/history.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Nandinagari.js","webpack:///./node_modules/core-js/internals/classof.js","webpack:///./node_modules/lodash/_isKey.js","webpack:///./node_modules/gatsby-plugin-manifest/get-manifest-pathname.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Gurmukhi.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Thai.js","webpack:///./node_modules/react-frame-component/lib/Content.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Old_Uyghur.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Greek.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Spacing_Mark.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Common.js","webpack:///./node_modules/lodash/_baseKeys.js","webpack:///./node_modules/core-js/internals/to-string-tag-support.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Siddham.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Rejang.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Bengali.js","webpack:///./node_modules/core-js/internals/length-of-array-like.js","webpack:///./node_modules/convert-css-length/dist/index.js","webpack:///./node_modules/lodash/stubFalse.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Other.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Bidi_Control.js","webpack:///./node_modules/core-js/internals/engine-ff-version.js","webpack:///./node_modules/gatsby-plugin-catch-links/gatsby-browser.js","webpack:///./node_modules/core-js/internals/symbol-constructor-detection.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Deseret.js","webpack:///./node_modules/lodash/fp/omit.js","webpack:///./node_modules/lodash/_isFlattenable.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Cham.js","webpack:///./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Space_Separator.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Old_Hungarian.js","webpack:///./node_modules/lodash/_arrayPush.js","webpack:///./.cache/caches/gatsby-plugin-mdx/mdx-scopes-dir/3448244fd83aacee0962c5fab74909b8.js","webpack:///./node_modules/lodash/_isStrictComparable.js","webpack:///./node_modules/lodash/_strictIndexOf.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Cyrillic.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/XID_Start.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Punctuation.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Yi.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Tagbanwa.js","webpack:///./node_modules/lodash/_getNative.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Dogra.js","webpack:///./node_modules/lodash/set.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Thaana.js","webpack:///./node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/lodash/isBuffer.js","webpack:///./node_modules/core-js/internals/try-to-string.js","webpack:///./node_modules/marked/lib/marked.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Runic.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Nyiakeng_Puachue_Hmong.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Initial_Punctuation.js","webpack:///./node_modules/lodash/_baseAssignIn.js","webpack:///./node_modules/lodash/throttle.js","webpack:///./node_modules/lodash/_isMasked.js","webpack:///./node_modules/core-js/internals/make-built-in.js","webpack:///./node_modules/lodash/_baseRest.js","webpack:///./node_modules/lodash/_copySymbolsIn.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Pahawh_Hmong.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Wancho.js","webpack:///./src/components/home/index.js","webpack:///./node_modules/lodash/fp/assoc.js","webpack:///./node_modules/lodash/_getFuncName.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Osmanya.js","webpack:///./node_modules/typography-breakpoint-constants/dist/index.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Kayah_Li.js","webpack:///./node_modules/lodash/_createCtor.js","webpack:///./node_modules/gatsby-react-router-scroll/scroll-handler.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Khojki.js","webpack:///./node_modules/lodash/_isKeyable.js","webpack:///./node_modules/lodash/fp/_falseOptions.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Old_South_Arabian.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Old_South_Arabian.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Ol_Chiki.js","webpack:///./node_modules/array-sort/index.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Caucasian_Albanian.js","webpack:///./node_modules/lodash/_baseSet.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./node_modules/core-js/internals/is-callable.js","webpack:///./node_modules/lodash/defaultTo.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Arabic.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Miao.js","webpack:///./node_modules/lodash/_getAllKeysIn.js","webpack:///./node_modules/core-js/internals/to-offset.js","webpack:///./node_modules/lodash/_baseMatchesProperty.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Khudawadi.js","webpack:///./node_modules/lodash/_stringToPath.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Private_Use.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Avestan.js","webpack:///./node_modules/lodash/_baseIsMap.js","webpack:///./node_modules/core-js/internals/has-own-property.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Ahom.js","webpack:///./node_modules/shallowequal/index.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/lodash/_mapCacheSet.js","webpack:///./node_modules/node-libs-browser/node_modules/buffer/index.js","webpack:///./node_modules/lodash/_equalByTag.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Coptic.js","webpack:///./src/components/install/tk/go.mdx","webpack:///./node_modules/regenerate-unicode-properties/Script/Bopomofo.js","webpack:///./node_modules/lodash/_Promise.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Syriac.js","webpack:///./node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Malayalam.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Separator.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Meroitic_Cursive.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Dives_Akuru.js","webpack:///./node_modules/lodash/_hashDelete.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Modi.js","webpack:///./node_modules/core-js/internals/export.js","webpack:///./node_modules/lodash/_memoizeCapped.js","webpack:///./node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Wancho.js","webpack:///./node_modules/regjsgen/regjsgen.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Old_Hungarian.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Changes_When_Titlecased.js","webpack:///./.cache/page-renderer.js","webpack:///./node_modules/lodash/_matchesStrictComparable.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Noncharacter_Code_Point.js","webpack:///./node_modules/core-js/modules/es.typed-array.sort.js","webpack:///./node_modules/lodash/fp/_util.js","webpack:///./node_modules/react-frame-component/lib/index.js","webpack:///./node_modules/lodash/_overRest.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Tai_Viet.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Meetei_Mayek.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Kharoshthi.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Connector_Punctuation.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Masaram_Gondi.js","webpack:///./node_modules/core-js/es/object/assign.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/lodash/_baseForOwn.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Warang_Citi.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Buginese.js","webpack:///./node_modules/lodash/_Uint8Array.js","webpack:///./node_modules/lodash/_mapCacheGet.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Bopomofo.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Nushu.js","webpack:///./node_modules/lodash/_hashSet.js","webpack:///./.cache/caches/gatsby-plugin-mdx/mdx-scopes-dir/e92f8988d65cf25c087d226e6c0ef06f.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Cased_Letter.js","webpack:///./node_modules/lodash/_baseIsArguments.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Warang_Citi.js","webpack:///./node_modules/lodash/_realNames.js","webpack:///./node_modules/regjsparser/parser.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Open_Punctuation.js","webpack:///./node_modules/lodash/_baseHasIn.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Batak.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Kaithi.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Final_Punctuation.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Elymaic.js","webpack:///./node_modules/lodash/_getData.js","webpack:///./node_modules/lodash/_listCacheClear.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Bassa_Vah.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/wrapperLodash.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/IDS_Binary_Operator.js","webpack:///./node_modules/lodash/fp/head.js","webpack:///./node_modules/lodash/_baseFindIndex.js","webpack:///./node_modules/lodash/_baseSlice.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_stackDelete.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Balinese.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Syloti_Nagri.js","webpack:///./node_modules/lodash/_baseUniq.js","webpack:///./node_modules/core-js/internals/engine-v8-version.js","webpack:///./node_modules/lodash/_arrayFilter.js","webpack:///./node_modules/@reach/router/es/lib/utils.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Sinhala.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Close_Punctuation.js","webpack:///./node_modules/lodash/_getPrototype.js","webpack:///./.cache/api-runner-browser-plugins.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Marchen.js","webpack:///./node_modules/lodash/_createAssigner.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Old_Persian.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Oriya.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Tifinagh.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Multani.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Anatolian_Hieroglyphs.js","webpack:///./node_modules/@mikaelkristiansson/domready/ready.js","webpack:///./node_modules/lodash/_composeArgsRight.js","webpack:///./node_modules/lodash/isArrayLike.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Pau_Cin_Hau.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Takri.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Tibetan.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Cypriot.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Katakana.js","webpack:///./node_modules/lodash/_assignValue.js","webpack:///./node_modules/lodash/_getSymbols.js","webpack:///./src/components/install/jb/arch.mdx","webpack:///./node_modules/lodash/kebabCase.js","webpack:///./node_modules/lodash/_isLaziable.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Gunjala_Gondi.js","webpack:///./node_modules/lodash/_createFlow.js","webpack:///./node_modules/core-js/internals/engine-user-agent.js","webpack:///./node_modules/lodash/_baseIsNative.js","webpack:///./.cache/register-service-worker.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Ol_Chiki.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Sharada.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Sora_Sompeng.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Phags_Pa.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Sogdian.js","webpack:///./node_modules/lodash/_getValue.js","webpack:///./.cache/_this_is_virtual_fs_path_/$virtual/async-requires.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/_defineProperty.js","webpack:///./node_modules/core-js/internals/a-possible-prototype.js","webpack:///./node_modules/lodash/_getMatchData.js","webpack:///./node_modules/lodash/_baseClone.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Modifier_Symbol.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Thai.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Dash_Punctuation.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Deseret.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Canadian_Aboriginal.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Nandinagari.js","webpack:///./node_modules/lodash/_WeakMap.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Format.js","webpack:///./node_modules/core-js/internals/object-is-prototype-of.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Hanunoo.js","webpack:///./node_modules/deepmerge/dist/cjs.js","webpack:///./node_modules/core-js/modules/es.typed-array.set.js","webpack:///./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack:///./node_modules/regenerate-unicode-properties sync ^\\.\\/.*\\.js$","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Lao.js","webpack:///./src/components/home/snippet.mdx","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Letter.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Cypriot.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Alphabetic.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Lowercase_Letter.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Cuneiform.js","webpack:///./.cache/caches/gatsby-plugin-mdx/mdx-scopes-dir/f46d506c1bb0c0f8de171a434f695927.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Meetei_Mayek.js","webpack:///./node_modules/lodash/isError.js","webpack:///./node_modules/lodash/omit.js","webpack:///./node_modules/lodash/_copyArray.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Toto.js","webpack:///./node_modules/lodash/now.js","webpack:///./node_modules/invariant/browser.js","webpack:///./node_modules/core-js/internals/function-bind-native.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Khmer.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Unassigned.js","webpack:///./node_modules/lodash/_baseKeysIn.js","webpack:///./node_modules/lodash/_getMapData.js","webpack:///./node_modules/lodash/merge.js","webpack:///./node_modules/core-js/internals/path.js","webpack:///./node_modules/lodash/_arraySome.js","webpack:///./node_modules/lodash/_getTag.js","webpack:///./node_modules/lodash/_baseIndexOf.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Changes_When_Uppercased.js","webpack:///./node_modules/lodash/last.js","webpack:///./node_modules/regexpu-core/data/character-class-escape-sets.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Hangul.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Shavian.js","webpack:///./node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Pahawh_Hmong.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Makasar.js","webpack:///./node_modules/core-js/internals/function-uncurry-this-clause.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Lowercase.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Takri.js","webpack:///./node_modules/lodash/_baseLodash.js","webpack:///./node_modules/lodash/_createCurry.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Balinese.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Currency_Symbol.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Nushu.js","webpack:///./node_modules/lodash/_baseUnset.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Elymaic.js","webpack:///./node_modules/core-js/internals/ordinary-to-primitive.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Terminal_Punctuation.js","webpack:///./node_modules/unicode-property-aliases-ecmascript/index.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Osmanya.js","webpack:///./node_modules/lodash/_hashClear.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Chorasmian.js","webpack:///./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack:///./node_modules/core-js/internals/array-buffer-basic-detection.js","webpack:///./node_modules/lodash/toInteger.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Psalter_Pahlavi.js","webpack:///./node_modules/lodash/_baseMergeDeep.js","webpack:///./node_modules/lodash/_setWrapToString.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Greek.js","webpack:///./node_modules/parse-unit/index.js","webpack:///./node_modules/lodash/deburr.js","webpack:///./node_modules/lodash/_trimmedEndIndex.js","webpack:///./node_modules/react-is/index.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Soft_Dotted.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Gurmukhi.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/ASCII.js","webpack:///./node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/lodash/flatten.js","webpack:///./node_modules/core-js/internals/array-slice-simple.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Inherited.js","webpack:///./src/components/install/jb/binary.mdx","webpack:///./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Paragraph_Separator.js","webpack:///./node_modules/core-js/modules/es.regexp.flags.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Meroitic_Cursive.js","webpack:///./node_modules/core-js/internals/to-length.js","webpack:///./node_modules/lodash/_baseTimes.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Mro.js","webpack:///./node_modules/core-js/internals/engine-webkit-version.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Palmyrene.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Inherited.js","webpack:///./.cache/route-announcer-props.js","webpack:///./.cache/navigation.js","webpack:///./node_modules/shallow-compare/es/index.js","webpack:///./.cache/ensure-resources.js","webpack:///./.cache/production-app.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Nabataean.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Katakana.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Grapheme_Extend.js","webpack:///./node_modules/lodash/_nativeKeys.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Radical.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Carian.js","webpack:///./node_modules/lodash/_getHolder.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Tangsa.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Old_Italic.js","webpack:///./node_modules/lodash/_copySymbols.js","webpack:///./node_modules/lodash/_stackHas.js","webpack:///./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Ideographic.js","webpack:///./node_modules/core-js/internals/shared.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Han.js","webpack:///./node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Meroitic_Hieroglyphs.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Mongolian.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Linear_B.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Caucasian_Albanian.js","webpack:///./node_modules/core-js/internals/to-integer-or-infinity.js","webpack:///./node_modules/copy-text-to-clipboard/index.js","webpack:///./.cache/gatsby-browser-entry.js","webpack:///./node_modules/core-js/internals/a-callable.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Multani.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Shavian.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Adlam.js","webpack:///./node_modules/lodash/_baseAssign.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Syloti_Nagri.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Tangut.js","webpack:///./node_modules/lodash/_baseFlatten.js","webpack:///./node_modules/core-js/internals/create-property-descriptor.js","webpack:///./src/components/install/index.js","webpack:///./node_modules/lodash/_cloneDataView.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Old_North_Arabian.js","webpack:///./node_modules/gatsby-theme-docz/gatsby-browser.js","webpack:///./node_modules/unicode-canonical-property-names-ecmascript/index.js","webpack:///./node_modules/modularscale/dist/index.js","webpack:///./node_modules/lodash/_ListCache.js","webpack:///./src/components/install/tk/binary.mdx","webpack:///./node_modules/core-js/internals/function-name.js","webpack:///./node_modules/lodash-es/_freeGlobal.js","webpack:///./node_modules/lodash/_arrayIncludesWith.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Zanabazar_Square.js","webpack:///./node_modules/core-js/actual/object/assign.js","webpack:///./node_modules/core-js/internals/define-global-property.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Bidi_Mirrored.js","webpack:///./node_modules/lodash/_nativeCreate.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Case_Ignorable.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Pattern_Syntax.js","webpack:///./node_modules/core-js/internals/object-assign.js","webpack:///./node_modules/lodash/isPlainObject.js","webpack:///./node_modules/gatsby/dist/internal-plugins/bundle-optimisations/polyfills/object-assign.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Thaana.js","webpack:///./node_modules/lodash/_LazyWrapper.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Avestan.js","webpack:///./node_modules/@reach/router/es/index.js","webpack:///./docs/tutorial/TutorialButtons.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Cypro_Minoan.js","webpack:///./node_modules/lodash/isArray.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/ID_Continue.js","webpack:///./node_modules/react-frame-component/lib/Context.js","webpack:///./node_modules/lodash/_listCacheSet.js","webpack:///./node_modules/lodash.isnumber/index.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Tifinagh.js","webpack:///./node_modules/lodash/toFinite.js","webpack:///./node_modules/lodash/_baseMatches.js","webpack:///./node_modules/marksy/lib/index.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Control.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Soyombo.js","webpack:///./node_modules/lodash/_baseGet.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Old_Turkic.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/New_Tai_Lue.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Math.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Kayah_Li.js","webpack:///./node_modules/lodash/_createHybrid.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Telugu.js","webpack:///./node_modules/lodash/_metaMap.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Grantha.js","webpack:///./node_modules/regenerate-unicode-properties/index.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Enclosing_Mark.js","webpack:///./node_modules/core-js/full/object/assign.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Lisu.js","webpack:///./node_modules/fast-deep-equal/index.js","webpack:///./node_modules/gray-percentage/index.js","webpack:///./node_modules/lodash/_listCacheDelete.js","webpack:///./node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/gatsby-plugin-react-helmet-async/gatsby-browser.js","webpack:///./node_modules/lodash/_arrayReduce.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Changes_When_NFKC_Casefolded.js","webpack:///./node_modules/lodash/_cloneRegExp.js","webpack:///./node_modules/lodash/fp/mapValues.js","webpack:///./node_modules/lodash/_arrayLikeKeys.js","webpack:///./node_modules/lodash/fp/flattenDepth.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Quotation_Mark.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Mandaic.js","webpack:///./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack:///./node_modules/lodash/rearg.js","webpack:///./node_modules/react-fast-compare/index.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Brahmi.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Myanmar.js","webpack:///./node_modules/react-frame-component/lib/Frame.js","webpack:///./node_modules/lodash/isTypedArray.js","webpack:///./node_modules/@babel/runtime/helpers/typeof.js","webpack:///./.cache/strip-prefix.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Modi.js","webpack:///./node_modules/lodash/iteratee.js","webpack:///./node_modules/core-js/internals/is-null-or-undefined.js","webpack:///./node_modules/core-js/internals/function-uncurry-this-accessor.js","webpack:///./node_modules/lodash/_baseFor.js","webpack:///./node_modules/gatsby-link/parse-path.js","webpack:///./node_modules/lodash/constant.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Vai.js","webpack:///./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Rejang.js","webpack:///./node_modules/lodash/_baseIsTypedArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Latin.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Anatolian_Hieroglyphs.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Khitan_Small_Script.js","webpack:///./node_modules/lodash/_createSet.js","webpack:///./node_modules/lodash/_baseCreate.js","webpack:///./node_modules/regenerate/regenerate.js","webpack:///./node_modules/lodash/_asciiWords.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Hanifi_Rohingya.js","webpack:///./node_modules/lodash/toString.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Hatran.js","webpack:///./node_modules/lodash/fp/get.js","webpack:///./node_modules/gatsby-plugin-offline/gatsby-browser.js","webpack:///./node_modules/lodash/_MapCache.js","webpack:///./node_modules/lodash/_baseIsEqualDeep.js","webpack:///./node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Glagolitic.js","webpack:///./node_modules/lodash/_arrayMap.js","webpack:///./node_modules/sourcemap-codec/dist/sourcemap-codec.es.js","webpack:///./node_modules/default-compare/index.js","webpack:///./node_modules/lodash/_Map.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Ethiopic.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Hiragana.js","webpack:///./node_modules/lodash/_hashHas.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:///./.cache/prefetch.js","webpack:///./.cache/loader.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Emoji_Presentation.js","webpack:///./node_modules/core-js/internals/to-object.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Nonspacing_Mark.js","webpack:///./node_modules/lodash/_mapCacheClear.js","webpack:///./node_modules/lodash/_baseGetAllKeys.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Ogham.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Bengali.js","webpack:///./node_modules/gatsby-plugin-mdx/context.js","webpack:///./node_modules/gatsby-plugin-mdx/loaders/mdx-scopes.js","webpack:///./node_modules/gatsby-plugin-mdx/wrap-root-element.js","webpack:///./node_modules/gatsby-plugin-mdx/gatsby-browser.js","webpack:///./node_modules/lodash/_Stack.js","webpack:///./node_modules/lodash/_hasUnicodeWord.js","webpack:///./node_modules/lodash/_setCacheAdd.js","webpack:///./node_modules/core-js/features/object/assign.js","webpack:///./node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/lodash/_stackGet.js","webpack:///./node_modules/lodash/_arrayEach.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Regional_Indicator.js","webpack:///./node_modules/gatsby-plugin-mdx/loaders/mdx-components.js","webpack:///./node_modules/core-js/internals/an-object.js","webpack:///./node_modules/lodash/_parent.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Grantha.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Extended_Pictographic.js","webpack:///./node_modules/lodash/isWeakMap.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Georgian.js","webpack:///./node_modules/core-js/internals/create-property.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Cased.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Tibetan.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Devanagari.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Glagolitic.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Kannada.js","webpack:///./node_modules/gatsby-react-router-scroll/scroll-container.js","webpack:///./node_modules/lodash/_apply.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Any.js","webpack:///./node_modules/lodash/hasIn.js","webpack:///./node_modules/core-js/internals/is-object.js","webpack:///./node_modules/gatsby-theme-docz/src/hooks/useDbQuery.js","webpack:///./node_modules/gatsby-theme-docz/src/wrapper.js","webpack:///./node_modules/@theme-ui/typography/dist/index.esm.js","webpack:///./node_modules/gatsby-theme-docz/src/theme/colors.js","webpack:///./node_modules/gatsby-theme-docz/src/theme/prism/dark.js","webpack:///./node_modules/gatsby-theme-docz/src/theme/prism/light.js","webpack:///./node_modules/gatsby-theme-docz/src/theme/modes.js","webpack:///./node_modules/gatsby-theme-docz/src/theme/prism/index.js","webpack:///./node_modules/gatsby-theme-docz/src/theme/styles.js","webpack:///./node_modules/gatsby-theme-docz/src/theme/index.js","webpack:///./node_modules/gatsby-theme-docz/src/components/Headings/index.js","webpack:///./node_modules/@emotion/react/node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js","webpack:///./node_modules/stylis/dist/stylis.mjs","webpack:///./node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","webpack:///./node_modules/@emotion/react/node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","webpack:///./node_modules/@emotion/react/node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","webpack:///./node_modules/@emotion/react/node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","webpack:///./node_modules/@emotion/react/node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","webpack:///./node_modules/@emotion/react/node_modules/@emotion/hash/dist/emotion-hash.esm.js","webpack:///./node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","webpack:///./node_modules/@emotion/react/dist/emotion-element-c39617d8.browser.esm.js","webpack:///./node_modules/@emotion/react/dist/emotion-react.browser.esm.js","webpack:///./node_modules/gatsby-theme-docz/src/theme/global.js","webpack:///./node_modules/gatsby-theme-docz/src/utils/mixins.js","webpack:///./node_modules/gatsby-theme-docz/src/theme/breakpoints.js","webpack:///./node_modules/gatsby-theme-docz/src/components/Header/styles.js","webpack:///./node_modules/react-feather/dist/icons/chevron-down.js","webpack:///./node_modules/react-feather/dist/icons/chevron-up.js","webpack:///./node_modules/react-feather/dist/icons/clipboard.js","webpack:///./node_modules/react-feather/dist/icons/code.js","webpack:///./node_modules/react-feather/dist/icons/edit-2.js","webpack:///./node_modules/react-feather/dist/icons/github.js","webpack:///./node_modules/react-feather/dist/icons/menu.js","webpack:///./node_modules/react-feather/dist/icons/search.js","webpack:///./node_modules/react-feather/dist/icons/sun.js","webpack:///./node_modules/gatsby-theme-docz/src/components/Icons/index.js","webpack:///./node_modules/gatsby-theme-docz/src/components/Logo/styles.js","webpack:///./src/gatsby-theme-docz/components/Logo/index.js","webpack:///./node_modules/gatsby-theme-docz/src/components/Header/index.js","webpack:///./node_modules/gatsby-theme-docz/src/components/Sidebar/styles.js","webpack:///./node_modules/gatsby-theme-docz/src/components/NavSearch/styles.js","webpack:///./node_modules/gatsby-theme-docz/src/components/NavSearch/index.js","webpack:///./node_modules/gatsby-theme-docz/src/components/NavLink/styles.js","webpack:///./node_modules/gatsby-theme-docz/src/components/NavLink/index.js","webpack:///./node_modules/gatsby-theme-docz/src/components/NavGroup/styles.js","webpack:///./node_modules/gatsby-theme-docz/src/components/NavGroup/index.js","webpack:///./node_modules/gatsby-theme-docz/src/components/Sidebar/index.js","webpack:///./node_modules/gatsby-theme-docz/src/components/MainContainer/styles.js","webpack:///./node_modules/gatsby-theme-docz/src/components/MainContainer/index.js","webpack:///./node_modules/gatsby-theme-docz/src/components/Layout/styles.js","webpack:///./node_modules/gatsby-theme-docz/src/components/Layout/index.js","webpack:///./node_modules/prism-react-renderer/prism/index.js","webpack:///./node_modules/prism-react-renderer/dist/index.js","webpack:///./node_modules/react-live/dist/react-live.es.js","webpack:///./node_modules/re-resizable/lib/resizer.js","webpack:///./node_modules/re-resizable/lib/index.js","webpack:///./node_modules/raf-schd/dist/raf-schd.esm.js","webpack:///./node_modules/lodash-es/isObject.js","webpack:///./node_modules/lodash-es/_root.js","webpack:///./node_modules/lodash-es/now.js","webpack:///./node_modules/lodash-es/_trimmedEndIndex.js","webpack:///./node_modules/lodash-es/_baseTrim.js","webpack:///./node_modules/lodash-es/_Symbol.js","webpack:///./node_modules/lodash-es/_getRawTag.js","webpack:///./node_modules/lodash-es/_objectToString.js","webpack:///./node_modules/lodash-es/_baseGetTag.js","webpack:///./node_modules/lodash-es/isObjectLike.js","webpack:///./node_modules/lodash-es/isSymbol.js","webpack:///./node_modules/lodash-es/toNumber.js","webpack:///./node_modules/lodash-es/debounce.js","webpack:///./node_modules/lodash-es/throttle.js","webpack:///./node_modules/react-resize-detector/lib/esm/lib/utils.js","webpack:///./node_modules/react-resize-detector/lib/esm/components/ChildWrapper.js","webpack:///./node_modules/react-resize-detector/lib/esm/components/ResizeDetector.js","webpack:///./node_modules/react-resize-detector/lib/esm/index.js","webpack:///./node_modules/gatsby-theme-docz/src/components/Playground/styles.js","webpack:///./node_modules/gatsby-theme-docz/src/components/Playground/Wrapper.js","webpack:///./node_modules/gatsby-theme-docz/src/utils/theme.js","webpack:///./node_modules/gatsby-theme-docz/src/components/Playground/index.js","webpack:///./node_modules/gatsby-theme-docz/src/components/Props/styles.js","webpack:///./node_modules/gatsby-theme-docz/src/components/Props/index.js","webpack:///./src/gatsby-theme-docz/components/codeblock.js","webpack:///./src/gatsby-theme-docz/components/index.js","webpack:///./node_modules/gatsby-theme-docz/src/index.js","webpack:///./node_modules/gatsby-theme-docz/src/base/Seo.js","webpack:///./node_modules/gatsby-theme-docz/src/base/Layout.js","webpack:///./node_modules/gatsby-plugin-catch-links/catch-links.js","webpack:///./node_modules/lodash/fp/merge.js","webpack:///./node_modules/lodash/unionBy.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Syriac.js","webpack:///./node_modules/lodash/_baseAssignValue.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Osage.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Hiragana.js","webpack:///./node_modules/lodash/fp/_mapping.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Elbasan.js","webpack:///./node_modules/core-js/internals/inspect-source.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Sharada.js","webpack:///./node_modules/lodash/_createBind.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Tai_Tham.js","webpack:///./node_modules/lodash/_safeGet.js","webpack:///./node_modules/lodash/fp/unionBy.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Hangul.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Sora_Sompeng.js","webpack:///./node_modules/get-value/index.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Khmer.js","webpack:///./node_modules/typography-theme-moraga/dist/index.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Old_Sogdian.js","webpack:///./node_modules/lodash/_baseTrim.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Brahmi.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Linear_B.js","webpack:///./node_modules/lodash/_arrayIncludes.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Phags_Pa.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Makasar.js","webpack:///./node_modules/lodash/toPlainObject.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Extender.js","webpack:///./node_modules/core-js/internals/document-all.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Duployan.js","webpack:///./node_modules/lodash/_copyObject.js","webpack:///./node_modules/lodash/fp/kebabCase.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Chorasmian.js","webpack:///./node_modules/lodash/_mapCacheDelete.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Old_Persian.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Bassa_Vah.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Palmyrene.js","webpack:///./node_modules/core-js/internals/uid.js","webpack:///./node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Ugaritic.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Miao.js","webpack:///./node_modules/lodash/_overArg.js","webpack:///./node_modules/compass-vertical-rhythm/dist/index.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Myanmar.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Old_Permic.js","webpack:///./node_modules/he/he.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Other_Number.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Vithkuqi.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Inscriptional_Parthian.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Linear_A.js","webpack:///./node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/lodash/isFunction.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Gothic.js","webpack:///./node_modules/lodash/eq.js","webpack:///./node_modules/lodash/_baseIsMatch.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Braille.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Unified_Ideograph.js","webpack:///./.cache/public-page-renderer.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Lydian.js","webpack:///./node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Inscriptional_Pahlavi.js","webpack:///./node_modules/capitalize/index.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Saurashtra.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/White_Space.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/SignWriting.js","webpack:///./node_modules/lodash/keysIn.js","webpack:///./node_modules/lodash/_createBaseFor.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Adlam.js","webpack:///./node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Tamil.js","webpack:///./node_modules/lodash/fp/set.js","webpack:///./node_modules/lodash/_isIterateeCall.js","webpack:///./node_modules/lodash/get.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Emoji_Component.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Lydian.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Manichaean.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Tangut.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Ahom.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Toto.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Tai_Le.js","webpack:///./node_modules/lodash/fp/defaultTo.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/mapValues.js","webpack:///./node_modules/gatsby-plugin-manifest/gatsby-browser.js","webpack:///./.cache/create-react-context.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Inscriptional_Pahlavi.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Coptic.js","webpack:///./node_modules/lodash/_getSymbolsIn.js","webpack:///./node_modules/core-js/internals/to-property-key.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Line_Separator.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Old_Uyghur.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Ethiopic.js","webpack:///./node_modules/lodash/fp/matchesProperty.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Other_Punctuation.js","webpack:///./src/components/install/jb/osx.mdx","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Grapheme_Base.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Tirhuta.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Gujarati.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Old_Sogdian.js","webpack:///./node_modules/lodash/_equalArrays.js","webpack:///./node_modules/unicode-match-property-value-ecmascript/index.js","webpack:///./docs/home.js","webpack:///./node_modules/lodash/_cloneSymbol.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Math_Symbol.js","webpack:///./node_modules/regenerate-unicode-properties/Script/New_Tai_Lue.js","webpack:///./node_modules/escape-string-regexp/index.js","webpack:///./node_modules/marksy/lib/createRenderer.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Masaram_Gondi.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Georgian.js","webpack:///./node_modules/lodash/_baseSetToString.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Pattern_White_Space.js","webpack:///./node_modules/regexpu-core/rewrite-pattern.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Samaritan.js","webpack:///./node_modules/lodash/_mapCacheHas.js","webpack:///./node_modules/@babel/runtime/helpers/extends.js","webpack:///./node_modules/lodash/head.js","webpack:///./node_modules/unicode-match-property-value-ecmascript/data/mappings.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Nabataean.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Sundanese.js","webpack:///./node_modules/lodash/_reorder.js","webpack:///./node_modules/lodash/_mergeData.js","webpack:///./node_modules/@emotion/sheet/dist/sheet.browser.esm.js","webpack:///./node_modules/@emotion/stylis/dist/stylis.browser.esm.js","webpack:///./node_modules/@emotion/cache/dist/cache.browser.esm.js","webpack:///./node_modules/@emotion/utils/dist/utils.browser.esm.js","webpack:///./node_modules/@emotion/hash/dist/hash.browser.esm.js","webpack:///./node_modules/@emotion/unitless/dist/unitless.browser.esm.js","webpack:///./node_modules/@emotion/serialize/node_modules/@emotion/memoize/dist/memoize.browser.esm.js","webpack:///./node_modules/@emotion/serialize/dist/serialize.browser.esm.js","webpack:///./node_modules/@emotion/core/dist/emotion-element-04d85134.browser.esm.js","webpack:///./node_modules/@emotion/css/dist/css.browser.esm.js","webpack:///./node_modules/@emotion/core/dist/core.browser.esm.js","webpack:///./node_modules/lodash/_deburrLetter.js","webpack:///./node_modules/react-is/cjs/react-is.production.min.js","webpack:///./node_modules/lodash/_getAllKeys.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Dives_Akuru.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Lisu.js","webpack:///./node_modules/lodash/_setToArray.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Buginese.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/ASCII_Hex_Digit.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Duployan.js","webpack:///./node_modules/core-js/internals/regexp-flags.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/IDS_Trinary_Operator.js","webpack:///./node_modules/core-js/internals/array-sort.js","webpack:///./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack:///./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///./node_modules/react-helmet-async/lib/index.module.js","webpack:///./node_modules/core-js/stable/object/assign.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Uppercase_Letter.js","webpack:///./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack:///./.cache/public-page-renderer-prod.js","webpack:///./node_modules/lodash/_baseSetData.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Diacritic.js","webpack:///./node_modules/unicode-match-property-ecmascript/index.js","webpack:///./node_modules/array-sort/node_modules/kind-of/index.js","webpack:///./node_modules/lodash/_baseUnary.js","webpack:///./node_modules/lodash/debounce.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Tagbanwa.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Phoenician.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Kannada.js","webpack:///./src/components/install/tk/osx.mdx","webpack:///./node_modules/lodash/fp/convert.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Cham.js","webpack:///./node_modules/lodash/_equalObjects.js","webpack:///./node_modules/lodash/_createCompounder.js","webpack:///./node_modules/lodash/isLength.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Khitan_Small_Script.js","webpack:///./node_modules/lodash/_assignMergeValue.js","webpack:///./node_modules/lodash/_countHolders.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Runic.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Yi.js","webpack:///./node_modules/core-js/internals/math-trunc.js","webpack:///./node_modules/lodash/fp/flow.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Lepcha.js","webpack:///./node_modules/lodash/toNumber.js","webpack:///./node_modules/lodash/_listCacheGet.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Mongolian.js","webpack:///./node_modules/lodash/_DataView.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Ugaritic.js","webpack:///./node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/lodash/fp/_baseConvert.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Old_North_Arabian.js","webpack:///./node_modules/@emotion/is-prop-valid/node_modules/@emotion/memoize/dist/memoize.browser.esm.js","webpack:///./node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js","webpack:///./node_modules/@styled-system/css/dist/index.esm.js","webpack:///./node_modules/theme-ui/dist/index.esm.js","webpack:///./node_modules/lodash/_hashGet.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Limbu.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Oriya.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Devanagari.js","webpack:///./node_modules/lodash/clone.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Canadian_Aboriginal.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Hebrew.js","webpack:///./node_modules/lodash/_getWrapDetails.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Mandaic.js","webpack:///./node_modules/lodash/_baseIteratee.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Mahajani.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Other_Letter.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Armenian.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Newa.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Changes_When_Lowercased.js","webpack:///./node_modules/lodash/ary.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Inscriptional_Parthian.js","webpack:///./node_modules/lodash/noop.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Tangsa.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Surrogate.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Chakma.js","webpack:///./node_modules/lodash/_baseIsSet.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Tai_Viet.js","webpack:///./node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/lodash/_baseIsEqual.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Uppercase.js","webpack:///./node_modules/lodash/_isIndex.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Saurashtra.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Gujarati.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Deprecated.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Buhid.js","webpack:///./node_modules/lodash/_setToString.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Meroitic_Hieroglyphs.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Nko.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Tirhuta.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Buhid.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Lycian.js","webpack:///./node_modules/lodash/_initCloneByTag.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Malayalam.js","webpack:///./node_modules/lodash/fp/placeholder.js","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Changes_When_Casefolded.js","webpack:///./node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Mende_Kikakui.js","webpack:///./node_modules/lodash/_wrapperClone.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Elbasan.js","webpack:///./node_modules/lodash/fp/pipe.js","webpack:///./node_modules/lodash/_cacheHas.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Old_Italic.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Telugu.js","webpack:///./node_modules/core-js/internals/function-call.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Javanese.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Old_Turkic.js","webpack:///./node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/lodash/_flatRest.js","webpack:///./node_modules/core-js/internals/shared-store.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Sundanese.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Nyiakeng_Puachue_Hmong.js","webpack:///./.cache/api-runner-browser.js","webpack:///./node_modules/lodash/_assocIndexOf.js","webpack:///./node_modules/lodash/_composeArgs.js","webpack:///./node_modules/lodash/_Set.js","webpack:///./node_modules/lodash/_initCloneArray.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Sentence_Terminal.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Psalter_Pahlavi.js","webpack:///./node_modules/lodash/_cloneTypedArray.js","webpack:///./node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Mark.js","webpack:///./node_modules/core-js/internals/define-built-in.js","webpack:///./node_modules/regenerate-unicode-properties/General_Category/Decimal_Number.js","webpack:///./node_modules/regenerate-unicode-properties/Script/Medefaidrin.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Mahajani.js","webpack:///./src/components/install/tk/arch.mdx","webpack:///./img/logo.svg","webpack:///./node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/lodash/isMap.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Egyptian_Hieroglyphs.js","webpack:///./node_modules/core-js/modules/es.object.assign.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Carian.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Batak.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Samaritan.js","webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Variation_Selector.js","webpack:///./node_modules/lodash/identity.js","webpack:///./node_modules/core-js/internals/weak-map-basic-detection.js","webpack:///./node_modules/lodash/_baseToString.js","webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Limbu.js"],"names":["set","addRange","module","exports","assocIndexOf","key","this","__data__","Uint8Array","arrayBuffer","result","constructor","byteLength","toIntegerOrInfinity","$RangeError","RangeError","it","Stack","assignMergeValue","baseFor","baseMergeDeep","isObject","keysIn","safeGet","baseMerge","object","source","srcIndex","customizer","stack","srcValue","newValue","undefined","_interopRequireDefault","__esModule","withPrefix","withAssetPrefix","path","getGlobalPathPrefix","navigateTo","replace","push","navigate","default","_objectWithoutPropertiesLoose2","_assertThisInitialized2","_inheritsLoose2","_extends2","_propTypes","_react","_router","_utils","_parsePath","parsePath","isAbsolutePath","startsWith","prefix","_ref","_prefix","getGlobalBasePrefix","isLocalLink","base","endsWith","slice","rewriteLinkPath","relativeTo","current","resolve","absolutify","NavLinkPropTypes","activeClassName","string","activeStyle","partiallyActive","bool","GatsbyLinkLocationWrapper","props","createElement","Location","_ref2","location","GatsbyLink","_location","_React$Component","_this","call","defaultGetProps","_ref3","isPartiallyCurrent","isCurrent","className","filter","Boolean","join","style","IOSupported","window","IntersectionObserver","state","handleRef","bind","_proto","prototype","_prefetch","currentPath","pathname","rewrittenPath","to","newPathName","___loader","enqueue","componentDidUpdate","prevProps","prevState","componentDidMount","componentWillUnmount","io","_this$io","instance","el","unobserve","disconnect","ref","cb","_this2","innerRef","hasOwnProperty","entries","forEach","entry","target","isIntersecting","intersectionRatio","observe","render","_this3","_this$props","_this$props$getProps","getProps","_onClick","onClick","_onMouseEnter","onMouseEnter","rest","prefixedTo","Link","e","hovering","button","defaultPrevented","metaKey","altKey","ctrlKey","shiftKey","preventDefault","shouldReplace","encodeURI","___navigate","href","Component","propTypes","func","isRequired","showDeprecationWarning","functionName","altFunctionName","version","console","warn","_default","forwardRef","options","___push","___replace","baseProperty","basePropertyDeep","isKey","toKey","baseCreate","getPrototype","isPrototype","convert","placeholder","baseGetTag","isObjectLike","value","IndexedObject","requireObjectCoercible","NATIVE_SYMBOL","Symbol","sham","iterator","SessionStorage","read","stateKey","getStateKey","sessionStorage","getItem","JSON","parse","save","storedValue","stringify","setItem","stateKeyBase","arrayEach","arrayIncludes","wrapFlags","details","bitmask","pair","sort","baseIsArguments","objectProto","Object","propertyIsEnumerable","isArguments","arguments","apply","createCtor","root","thisArg","partials","isBind","Ctor","wrapper","argsIndex","argsLength","length","leftIndex","leftLength","args","Array","fn","arrayMap","copyArray","isArray","isSymbol","stringToPath","toString","ListCache","Map","MapCache","data","pairs","LARGE_ARRAY_SIZE","size","exec","error","global","isCallable","aFunction","argument","namespace","method","$propertyIsEnumerable","getOwnPropertyDescriptor","NASHORN_BUG","1","f","V","descriptor","enumerable","uncurryThisAccessor","anObject","aPossiblePrototype","setPrototypeOf","setter","CORRECT_SETTER","test","O","proto","__proto__","baseIsSet","baseUnary","nodeUtil","nodeIsSet","isSet","setCacheAdd","setCacheHas","SetCache","values","index","add","has","_typeof","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","cache","get","newObj","hasPropertyDescriptor","defineProperty","desc","BitSet","arg","bits","n","Chunk","start","end","content","original","intro","outro","storeName","edited","defineProperties","previous","writable","next","appendLeft","appendRight","clone","chunk","contains","eachNext","eachPrevious","edit","contentOnly","prependLeft","prependRight","split","sliceIndex","originalBefore","originalAfter","newChunk","trimEnd","rx","trimmed","trimStart","btoa","Error","str","unescape","encodeURIComponent","Buffer","from","SourceMap","properties","file","sources","sourcesContent","names","mappings","guessIndent","code","lines","tabbed","line","spaced","min","reduce","numSpaces","Math","Infinity","getRelativePath","fromParts","toParts","pop","shift","i","concat","toUrl","thing","getLocator","originalLines","lineOffsets","pos","j","m","column","Mappings","hires","generatedCodeLine","generatedCodeColumn","raw","rawSegments","pending","addEdit","sourceIndex","loc","nameIndex","segment","advance","addUneditedChunk","sourcemapLocations","originalCharIndex","first","warned","insertLeft","insertRight","MagicString","firstChunk","lastChunk","lastSearchedChunk","byStart","byEnd","filename","indentExclusionRanges","storedNames","indentStr","addSourcemapLocation","char","append","TypeError","_split","cloned","originalChunk","clonedChunk","nextOriginalChunk","nextClonedChunk","generateDecodedMap","this$1$1","keys","locate","indexOf","includeContent","generateMap","getIndentString","indent","pattern","isExcluded","exclude","exclusion","shouldIndentNextCharacter","indentStart","replacer","match","charIndex","_splitChunk","insert","move","last","oldLeft","oldRight","newRight","newLeft","overwrite","prepend","remove","lastChar","lastLine","lineIndex","lastIndexOf","substr","lineStr","startChunk","containsEnd","sliceStart","sliceEnd","snip","searchForward","isEmpty","trim","trimLines","charType","trimEndAborted","RegExp","aborted","trimStartAborted","hasOwnProp","Bundle","separator","uniqueSources","uniqueSourceIndexByFilename","addSource","option","uniqueSource","bundle","name","magicString","map","indentStringCounts","a","b","trailingNewline","body","some","UA","getBuiltIn","isPrototypeOf","USE_SYMBOL_AS_UID","$Object","$Symbol","coreJsData","reWrapComment","lastIndex","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","type","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","Memo","getOwnPropertyNames","getOwnPropertySymbols","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","check","globalThis","self","Function","charAt","pathCache","matchPaths","trimPathname","rawPathname","decodeURIComponent","stripPrefix","__BASE_PATH__","URL","setMatchPaths","findMatchPath","trimmedPathname","cleanPath","pickPaths","matchPath","originalPath","pick","normalizePagePath","route","grabMatchParams","params","findPath","foundPath","internalObjectKeys","enumBugKeys","createWrap","curry","guard","aCallable","isNullOrUndefined","P","funcToString","isArrayLike","baseClone","baseMatchesProperty","useScrollRestoration","identifier","useLocation","useContext","_scrollHandler","ScrollContext","useRef","useLayoutEffect","position","scrollTo","onScroll","scrollTop","baseGet","memoize","resolver","memoized","Cache","arr","isPlainObject","hasOwn","toObject","sharedKey","CORRECT_PROTOTYPE_GETTER","IE_PROTO","ObjectPrototype","fails","F","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","clear","castPath","isIndex","isLength","hasFunc","NATIVE_BIND","FunctionPrototype","uncurryThisWithBind","__assign","assign","t","s","p","__rest","create","lowerCase","toLowerCase","DEFAULT_SPLIT_REGEXP","DEFAULT_STRIP_REGEXP","input","re","pascalCaseTransform","firstChar","lowerChars","toUpperCase","pascalCase","_a","splitRegexp","_b","stripRegexp","_c","transform","_d","delimiter","noCase","createError","message","err","ENCODING","ENCODING_LEN","TIME_MAX","pow","randomChar","prng","rand","floor","encodeTime","now","len","isNaN","Number","isInteger","mod","encodeRandom","detectPrng","allowInsecure","browserCrypto","crypto","msCrypto","buffer","getRandomValues","nodeCrypto","randomBytes","readUInt8","random","currPrng","ulid","seedTime","Date","characterMap","chars","allAccents","firstAccent","removeAccents","removeAccents_1","_extends","rankings","CASE_SENSITIVE_EQUAL","EQUAL","STARTS_WITH","WORD_STARTS_WITH","STRING_CASE","STRING_CASE_ACRONYM","CONTAINS","ACRONYM","MATCHES","NO_MATCH","caseRankings","CAMEL","PASCAL","KEBAB","SNAKE","NO_CASE","matchSorter","items","_options$threshold","threshold","matchedItems","matches","item","_getHighestRanking","getHighestRanking","rankedItem","rank","keyIndex","_getHighestRanking$ke","keyThreshold","sortRankedItems","allVals","itemObj","nestedKey","getItemValues","itemValue","attributes","getKeyAttributes","getAllValuesToRank","newRank","getMatchRanking","minRanking","maxRanking","testString","stringToRank","prepareValueForComparison","acronym","caseRank","containsUpperCase","containsDash","containsUnderscore","getCaseRanking","isPartial","caseRanking","testIndex","isPartialOfCase","isCasedAcronym","splitValue","splitTestString","correct","splitItem","isCaseAcronym","wordInString","splitByHyphenWord","matchingInOrderCharCount","charNumber","findMatchingCharacter","matchChar","firstIndex","spread","inOrderPercentage","getRanking","getClosenessRanking","aRankedItem","aRank","aKeyIndex","bRankedItem","bRank","bKeyIndex","String","localeCompare","_ref4","keepDiacritics","isExtensible","configurable","defaultComponents","layout","children","Fragment","notFound","playground","ComponentsProvider","components","themeComponents","Provider","useComponents","doczState","initial","ctx","listeners","Set","context","listener","dispatch","_Component","setState","useConfig","config","themeConfig","newConfig","transformed","useComponentProps","componentName","fileName","stateProps","found","find","includes","componentMatcher","firstDefinition","definition","compile","elements","prop","tree","parseDescs","useCurrentDoc","updateState","ev","payload","useDataServer","url","socket","WebSocket","onmessage","close","reverse","useDocs","_ref5","noMenu","menu","entriesOfMenu","fromMenu","menusFromEntries","entriesWithoutMenu","menus","parseMenu","normalize","selected","parseItemStr","id","parent","normalizeAndClean","mergeMenus","entriesMenu","configMenu","second","foundMenu","findPos","orderedList","findIndex","sortByName","sortMenus","list","useMenus","opts","query","_ref6","sorted","merged","val","flattened","flattenedDeduplicated","search","usePrevious","defaultValue","isClient","getSize","initialWidth","initialHeight","innerHeight","innerWidth","outerHeight","outerWidth","useWindowSize","throttleMs","_initialWidth","0","windowSize","setWindowSize","tSetWindowResize","addEventListener","removeEventListener","Playground","_ref7","__scope","__position","__code","language","useScoping","PlaygroundComponent","scope","RE_OBJECTOF","getTypeStr","computed","v","shape","rst","humanize","getPropType","propName","flowType","isEnum","Props","title","isToggle","isRaw","of","PropsComponent","theme","c","WrappedComponent","Theme","db","currentEntry","flow","createFlow","freeExports","nodeType","freeModule","allocUnsafe","isDeep","copy","_frontmatter","layoutProps","MDXLayout","DefaultLayout","MDXContent","_objectWithoutProperties","_excluded","mdx","mdxType","parentName","isMDXComponent","isLaziable","setData","setWrapToString","wrapFunc","holders","argPos","ary","isCurry","newData","emitter","all","on","handler","off","splice","emit","evt","mitt","baseFlatten","toInteger","array","depth","NAME","Constructor","Prototype","NATIVE_ARRAY_BUFFER","DESCRIPTORS","classof","tryToString","createNonEnumerableProperty","defineBuiltIn","defineBuiltInAccessor","wellKnownSymbol","uid","InternalStateModule","enforceInternalState","enforce","getInternalState","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","TO_STRING_TAG","TYPED_ARRAY_TAG","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQUIRED","TypedArrayConstructorsList","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","getTypedArrayConstructor","isTypedArray","klass","aTypedArray","aTypedArrayConstructor","C","exportTypedArrayMethod","KEY","property","forced","ARRAY","TypedArrayConstructor","error2","exportTypedArrayStaticMethod","isView","ownKeys","getOwnPropertyDescriptorModule","definePropertyModule","exceptions","resIndex","baseSetData","createBind","createCurry","createHybrid","createPartial","getData","mergeData","nativeMax","max","isBindKey","partialsRight","holdersRight","baseLodash","LodashWrapper","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","asciiWords","hasUnicodeWord","unicodeWords","isBuffer","arrayLikeKeys","baseKeys","makeBuiltIn","getter","ScrollContainer","ScrollHandler","_scrollContainer","_useScrollRestoration","_defineProperty","enumerableOnly","symbols","sym","_objectSpread2","getOwnPropertyDescriptors","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","MDXContext","createContext","withMDXComponents","allComponents","useMDXComponents","contextComponents","MDXProvider","DEFAULTS","inlineCode","MDXCreateElement","propComponents","originalType","etc","createElementArgArray","newProps","nativeNow","count","lastCalled","stamp","remaining","extendStatics","__extends","d","__","__createBinding","o","k","k2","__setModuleDefault","__importStar","React","isWindows","navigator","platform","isMacLike","cssText","Editor","_super","capture","_recordCurrentState","_input","selectionStart","selectionEnd","_recordChange","_getLines","text","substring","record","_history","offset","extras","timestamp","_updateInput","onValueChange","_applyEdits","_undoEdit","_redoEdit","_handleKeyDown","tabSize","insertSpaces","ignoreTabKey","onKeyDown","keyCode","currentTarget","blur","tabCharacter","repeat","startLine_1","linesBeforeCaret","endLine_1","nextValue","startLineText","startLine_2","endLine_2","updatedSelection","hasSelection","_handleChange","history","session","padding","highlight","textareaId","textareaClassName","autoFocus","disabled","form","maxLength","minLength","readOnly","required","onFocus","onBlur","onKeyUp","preClassName","contentStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","highlighted","styles","container","editor","textarea","onChange","autoCapitalize","autoComplete","autoCorrect","spellCheck","dangerouslySetInnerHTML","__html","textAlign","boxSizing","overflow","top","left","height","width","resize","color","MozOsxFontSmoothing","WebkitFontSmoothing","WebkitTextFillColor","pointerEvents","margin","border","background","display","fontFamily","fontSize","fontStyle","fontVariantLigatures","fontWeight","letterSpacing","lineHeight","textIndent","textRendering","textTransform","whiteSpace","wordBreak","overflowWrap","shared","polyfill","shortOut","rsBreakRange","rsMathOpRange","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","reOptMod","rsModifier","rsSeq","rsEmoji","reUnicodeWord","PlatformInstall","Tanka","Jb","getLocation","_source$location","hash","origin","protocol","host","hostname","port","canUseDOM","decodeURI","createHistory","transitioning","resolveTransition","_onTransitionComplete","listen","popstateListener","action","_ref$replace","go","replaceState","pushState","transition","Promise","res","createMemorySource","initialPath","searchIndex","initialLocation","states","_","uri","_uri$split","_uri$split$","_uri$split2","_uri$split2$","newIndex","document","globalHistory","TO_STRING_TAG_SUPPORT","classofRaw","CORRECT_ARGUMENTS","tag","tryGet","reIsDeepProp","reIsPlainProp","localizedManifests","localizedManifest","app","start_url","lang","_createClass","protoProps","staticProps","_propTypes2","_classCallCheck","_possibleConstructorReturn","ReferenceError","Content","subClass","superClass","_inherits","contentDidMount","contentDidUpdate","Children","only","element","nativeKeys","nativeObjectToString","symToStringTag","toStringTag","isOwn","unmasked","toLength","r","u","l","parseFloat","toFixed","firefox","require","_gatsby","_catchLinks","onClientEntry","pluginOptions","V8_VERSION","$String","symbol","spreadableSymbol","isConcatSpreadable","propertyIsEnumerableModule","createPropertyDescriptor","toIndexedObject","toPropertyKey","IE8_DOM_DEFINE","$getOwnPropertyDescriptor","Highlights","Catcher","fromIndex","baseIsNative","getValue","baseSet","stubFalse","block","newline","fences","noop","hr","heading","nptable","blockquote","html","def","table","lheading","paragraph","Lexer","tokens","links","marked","defaults","rules","normal","gfm","tables","_label","_title","getRegex","bullet","_tag","merge","lex","src","token","loose","cap","bull","space","isordered","pedantic","header","align","cells","ordered","smartLists","sanitize","pre","sanitizer","charCodeAt","inline","escape","autolink","link","reflink","nolink","strong","em","br","del","InlineLexer","renderer","Renderer","breaks","TextRenderer","Parser","encode","fromCharCode","parseInt","regex","opt","resolveUrl","baseUrls","_scheme","_email","_inside","_href","_backpedal","output","out","mangle","inLink","outputLink","codespan","smartypants","image","ch","escaped","langPrefix","quote","level","headerPrefix","xhtml","listitem","tablerow","tablecell","flags","prot","baseUrl","originIndependentUrl","inlineText","tok","peek","parseText","row","cell","callback","done","silent","setOptions","parser","lexer","inlineLexer","copyObject","debounce","wait","leading","trailing","maskSrcKey","uncurryThis","CONFIGURABLE_FUNCTION_NAME","CONFIGURABLE","inspectSource","stringSlice","CONFIGURABLE_LENGTH","TEMPLATE","identity","overRest","setToString","getSymbolsIn","elemCss","flexGrow","flexDirection","flexBasis","justifyContent","marginBottom","marginLeft","___EmotionJSX","css","Button","_css","_objectSpread","overflowX","marginTop","Snip","realNames","otherFunc","LARGER_DISPLAY_WIDTH","LARGE_DISPLAY_WIDTH","DEFAULT_WIDTH","TABLET_WIDTH","MOBILE_WIDTH","LARGER_DISPLAY_MEDIA_QUERY","LARGE_DISPLAY_MEDIA_QUERY","DEFAULT_MEDIA_QUERY","TABLET_MEDIA_QUERY","MOBILE_MEDIA_QUERY","MIN_LARGER_DISPLAY_MEDIA_QUERY","MIN_LARGE_DISPLAY_MEDIA_QUERY","MIN_DEFAULT_MEDIA_QUERY","MIN_TABLET_MEDIA_QUERY","MIN_MOBILE_MEDIA_QUERY","thisBinding","_interopRequireWildcard","_sessionStorage","_len","_key","_stateStorage","scrollListener","scrollY","windowScroll","shouldUpdateScroll","scrollToHash","node","getElementById","scrollIntoView","prevRouterProps","routerProps","scrollPosition","_this$props$location","_this$props$location2","defaultCompare","typeOf","sortBy","flatten","assignValue","nested","objValue","$documentAll","documentAll","IS_HTMLDDA","baseGetAllKeys","toPositiveInteger","BYTES","baseIsEqual","hasIn","isStrictComparable","matchesStrictComparable","COMPARE_PARTIAL_FLAG","memoizeCapped","rePropName","reEscapeChar","number","subString","getTag","objA","objB","compareContext","ret","keysA","keysB","bHasOwnProperty","idx","valueA","valueB","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","Arr","_byteLength","curByte","revLookup","fromByteArray","uint8","extraBytes","parts","len2","encodeChunk","lookup","num","getMapData","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","encodingOrOffset","ArrayBuffer","byteOffset","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","write","fromString","checked","fromObject","assertSize","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","indexSize","arrLength","valLength","buf","readUInt16BE","foundIndex","hexWrite","strLen","parsed","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","species","fill","allocUnsafeSlow","_isBuffer","x","y","swap16","swap32","swap64","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","isFinite","toJSON","_arr","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","stringtrim","base64clean","dst","eq","equalArrays","mapToArray","setToArray","symbolProto","symbolValueOf","valueOf","other","equalFunc","stacked","getNative","$TypeError","defineGlobalProperty","copyConstructorProperties","isForced","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","dontCallGetSet","integer","objectTypes","hasFreeModule","freeGlobal","fromCodePoint","highSurrogate","lowSurrogate","assertTypeRegexMap","assertType","expected","generate","generators","generateSequence","generator","terms","term","kind","generateClassAtom","generateIdentifier","generateTerm","negative","behavior","behaviour","quantifier","greedy","generateAtom","matchIndex","regjsgen","PageRenderer","_inheritsLoose","pageResources","json","pageContext","__params","pathContext","replacementElement","apiRunner","loader","publicLoader","pageElement","page","internalSort","ArrayBufferViewCore","FF","IE_OR_EDGE","V8","WEBKIT","nativeSort","ACCEPT_INCORRECT_ARGUMENTS","STABLE_SORT","comparefn","getSortCompare","FrameContextConsumer","FrameContext","_Context","_Frame","_Frame2","otherArgs","hiddenKeys","iteratee","nativeCreate","stringFromCharCode","regjsparser","MAX_SIZE","codeUnits","features","addRaw","range","updateRawStart","createAnchor","rawLength","createValue","createEscaped","fromOffset","createCharacter","_char","hasUnicodeFlag","lookahead","createQuantifier","createCharacterClass","contents","createClassRange","bail","flattenBody","incr","amount","skip","matchReg","regExp","parseDisjunction","parseAlternative","alternatives","createDisjunction","parseTerm","createAlternative","anchor","parseGroup","atom","parseAtomEscape","parseCharacterClass","lookbehind","namedGroups","parseIdentifier","group","finishGroup","parseAtomAndExtendedAtom","pos_backup","parseQuantifier","matchA","typeA","matchB","typeB","disjunction","createGroup","firstIteration","closedCaptureCounter","parseUnicodeSurrogatePairEscape","firstEscape","prevPos","secondEscape","parseClassEscape","insideCharacterClass","refIdx","backrefDenied","parseDecimalEscape","createNamedReference","parseNamedReference","parseCharacterClassEscape","parseCharacterEscape","unicodePropertyEscape","hasUnicodeSetFlag","parseRegExpUnicodeEscapeSequence","parseIdentifierAtom","esc","isIdentifierStart","isIdentifierPart","parseClassRanges","operand","parseClassOperand","parseClassContents","parseClassAtom","parseHelperClassRanges","atomTo","dash","classRanges","parseNonemptyClassRangesNoDash","parseClassAtomNoDash","allowRanges","parseClassCharacterEscapedHelper","parseClassCharacterUnescapedHelper","parseClassString","strings","createClassStrings","parseClassStrings","parseClassCharacter","codePointAt","characters","createClassString","contextStart","contextEnd","pointer","SyntaxError","unicodeSet","metaMap","LazyWrapper","wrapperClone","lodash","predicate","fromRight","freeSelf","arrayIncludesWith","cacheHas","createSet","comparator","isCommon","seen","outer","seenIndex","userAgent","process","Deno","versions","v8","routes","default_","uriPathname","uriSegments","segmentize","isRootUri","ranked","rankRoutes","missed","routeSegments","routeSegment","uriSegment","isSplat","dynamicMatch","paramRe","reservedNames","_to$split","toPathname","toQuery","basePathname","toSegments","baseSegments","addQuery","allSegments","segments","insertParams","_path$split","pathBase","_path$split$","constructedPath","_params$location","_params$location$sear","searchSplit","validateRedirect","isDynamic","rankRoute","score","isRootSegment","SEGMENT_POINTS","q","shallowCompare","obj1","obj2","obj1Keys","every","overArg","plugin","baseRest","isIterateeCall","assigner","ie10","appVersion","fns","doc","hack","documentElement","doScroll","loaded","readyState","setTimeout","isCurried","holdersIndex","holdersLength","rightIndex","rightLength","rangeLength","isUncurried","isFunction","baseAssignValue","arrayFilter","stubArray","nativeGetSymbols","getSymbols","kebabCase","createCompounder","word","getFuncName","funcName","flatRest","funcs","prereq","thru","plant","isMasked","toSource","reIsHostCtor","funcProto","reIsNative","serviceWorker","register","then","reg","installingWorker","installing","log","controller","___swUpdated","___failedResources","reload","catch","component---cache-caches-gatsby-plugin-offline-app-shell-js","component---docs-completion-md","component---docs-config-md","component---docs-diff-strategy-md","component---docs-directory-structure-md","component---docs-env-vars-md","component---docs-exporting-md","component---docs-faq-md","component---docs-formatting-md","component---docs-garbage-collection-md","component---docs-helm-mdx","component---docs-inline-environments-mdx","component---docs-installation-mdx","component---docs-introduction-mdx","component---docs-jsonnet-injecting-values-md","component---docs-jsonnet-main-md","component---docs-jsonnet-native-functions-md","component---docs-jsonnet-overview-md","component---docs-known-issues-md","component---docs-kustomize-mdx","component---docs-libraries-import-paths-md","component---docs-libraries-install-publish-md","component---docs-libraries-overriding-md","component---docs-namespaces-md","component---docs-server-side-apply-md","component---docs-targets-md","component---docs-tutorial-abstraction-mdx","component---docs-tutorial-environments-mdx","component---docs-tutorial-jsonnet-mdx","component---docs-tutorial-k-lib-mdx","component---docs-tutorial-overview-mdx","component---docs-tutorial-parameterizing-mdx","component---docs-tutorial-refresher-mdx","component---src-components-home-snippet-mdx","component---src-components-install-jb-arch-mdx","component---src-components-install-jb-binary-mdx","component---src-components-install-jb-go-mdx","component---src-components-install-jb-osx-mdx","component---src-components-install-tk-arch-mdx","component---src-components-install-tk-binary-mdx","component---src-components-install-tk-go-mdx","component---src-components-install-tk-osx-mdx","getRawTag","objectToString","baseAssign","baseAssignIn","cloneBuffer","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","initCloneArray","initCloneByTag","initCloneObject","isMap","cloneableTags","isFlat","isFull","isArr","isFunc","subValue","isMergeableObject","isNonNullObject","stringValue","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","for","cloneUnlessOtherwiseSpecified","deepmerge","defaultArrayMerge","getKeys","getEnumerableOwnPropertySymbols","propertyIsOnObject","mergeObject","destination","propertyIsUnsafe","customMerge","getMergeFunction","arrayMerge","sourceIsArray","prev","deepmerge_1","lengthOfArrayLike","toOffset","$set","WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS","TO_OBJECT_BUG","arrayLike","webpackContext","req","webpackContextResolve","__webpack_require__","TutorialButtons","baseUnset","customOmitClone","omit","paths","CLONE_DEEP_FLAG","condition","format","argIndex","framesToPop","nativeKeysIn","isProto","isKeyable","createAssigner","DataView","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ctorString","baseFindIndex","baseIsNaN","strictIndexOf","regenerate","REGULAR","UNICODE","UNICODE_IGNORE_CASE","createRecurry","getHolder","replaceHolders","pref","_setPrototypeOf","toFinite","remainder","cloneTypedArray","isArrayLikeObject","toPlainObject","mergeFunc","isBuff","isTyped","getWrapDetails","insertWrapDetails","updateWrapDetails","reference","deburrLetter","reLatin","reComboMark","reWhitespace","toAbsoluteIndex","createMethod","IS_INCLUDES","$this","createProperty","$Array","fin","regExpFlags","RegExpPrototype","INDICES_SUPPORT","calls","addGetter","chr","dotAll","ignoreCase","multiline","sticky","hasIndices","webkit","RouteAnnouncerProps","clip","redirectMap","redirectIgnoreCaseMap","maybeRedirect","redirect","toPath","redirects","fromPath","onPreRouteUpdate","prevLocation","onRouteUpdate","timeoutId","loadPage","status","PageResourceStatus","clearTimeout","webpackCompilationHash","___webpackCompilationHash","postMessage","gatsbyApi","reachNavigate","results","getSavedScrollPosition","oldPathname","RouteAnnouncer","announcementRef","createRef","nextProps","requestAnimationFrame","pageName","pageHeadings","querySelectorAll","textContent","newAnnouncement","innerText","compareLocationProps","nextLocation","_prevLocation$state","_nextLocation$state","RouteUpdates","_React$Component2","_proto2","shouldComponentUpdate","shallowDiffers","_i","EnsureResources","loadPageSync","loadResources","rawPath","nextState","ProdLoader","asyncRequires","setLoader","setApiRunner","___emitter","apiRunnerAsync","RouteHandler","BaseContext","baseuri","basepath","DataContext","GatsbyRoot","staticQueryResults","getStaticQueryResults","StaticQueryContext","LocationHandler","Consumer","Router","pagePath","browserLoc","SiteRoot","App","ReactDOM","hydrate","domReady","IS_PURE","store","mode","copyright","license","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","trunc","copyTextToClipboard","previouslyFocusedElement","activeElement","setAttribute","contain","selection","getSelection","originalRange","rangeCount","getRangeAt","select","isSuccess","execCommand","removeAllRanges","focus","prefetchPathname","StaticQueryDataRenderer","staticQueryData","finalData","StaticQuery","useStaticQuery","_context$query","graphql","arrayPush","isFlattenable","isStrict","bitmap","macOS","Osx","ArchLinux","Arch","Binary","Go","JbOsx","JbArch","JbBinary","JbGo","elems","setCurrent","useState","borderRadius","outline","cursor","cloneArrayBuffer","dataView","isNumber","ratios","sqrt","ratio","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","getDescriptor","EXISTS","PROPER","objectKeys","$assign","A","B","T","argumentsLength","S","objectCtorString","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","webpackPolyfill","deprecate","createNamedContext","Ctx","LocationContext","LocationProvider","_temp","getContext","refs","unlisten","_props$history","componentDidCatch","info","isRedirect","_navigate","unmounted","ServerLocation","baseContext","locationContext","RouterImpl","_React$PureComponent","_props","_navigate2","primary","_props$component","domProps","toArray","child","createRoute","cloneElement","FocusWrapper","FocusHandler","wrapperProps","PureComponent","FocusContext","requestFocus","FocusHandlerImpl","initialRender","focusHandlerCount","_temp2","_this4","_len2","_key2","shouldFocus","myURIChanged","navigatedUpToMe","_this5","_props2","_props2$component","Comp","tabIndex","_props$getProps","anchorProps","encodedHref","event","shouldNavigate","_location$state","restState","RedirectRequest","redirectTo","RedirectImpl","_React$Component3","_props3","_props3$replace","noThrow","resolvedTo","_props4","Redirect","Match","_ref8","_ref9","_ref10","resolvedPath","useNavigate","useParams","useMatch","stripSlashes","elementPath","alone","jsx","sx","flexShrink","textDecoration","flexWrap","FrameContextProvider","_react2","win","toNumber","baseIsMatch","getMatchData","matchData","marksy","_marked","_createRenderer","isNativeReflectConstruct","Reflect","construct","Proxy","_construct","Parent","Class","_toConsumableArray","arr2","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","tracker","nextElementId","toc","currentIdLevel","currentId","_code","elementId","componentProps","codeRenderer","markedOptions","composeArgs","composeArgsRight","countHolders","reorder","isAry","isFlip","holdersCount","newHolders","keyList","hasProp","equal","arrA","arrB","dateA","dateB","getTime","regexpA","regexpB","isNumeric","lightness","hue","darkBackground","saturation","opacity","NATIVE_WEAK_MAP","metadata","facade","STATE","getterFor","TYPE","__importDefault","wrapRootElement","react_1","react_helmet_async_1","HelmetProvider","accumulator","initAccum","reFlags","regexp","baseTimes","inherited","isArg","isType","skipIndexes","MapShim","getIndex","class_1","__entries__","delete","isBrowser","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","delay","leadingCall","trailingCall","lastCallTime","resolvePending","proxy","timeoutCallback","timeStamp","throttle","addObserver","observer","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","childList","characterData","subtree","propertyName","getInstance","instance_","defineConfigurable","getWindowOf","ownerDocument","defaultView","emptyRect","createRectInit","toFloat","getBordersSize","positions","getHTMLElementContentRect","clientWidth","clientHeight","getComputedStyle","paddings","positions_1","getPaddings","horizPad","right","vertPad","bottom","round","isDocumentElement","vertScrollbar","horizScrollbar","abs","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","getContentRect","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","rect","broadcastRect","ResizeObserverEntry","rectInit","Constr","contentRect","DOMRectReadOnly","ResizeObserverSPI","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","Element","observations","clearActive","observation","ResizeObserver","rearg","indexes","hasElementType","hasMap","hasSet","hasArrayBuffer","_reactDom2","_Content2","Frame","handleLoad","forceUpdate","_isMounted","getDoc","contentDocument","mountTarget","querySelector","parentView","open","initialContent","getMountTarget","createPortal","head","renderFrameContents","oneOfType","arrayOf","baseIsTypedArray","nodeIsTypedArray","baseIteratee","createBaseFor","hashIndex","typedArrayTags","objectCreate","ERRORS","regexNull","pad","totalCharacters","hex","dataRemove","dataRemoveRange","rangeStart","rangeEnd","dataAdd","dataAddData","dataA","dataB","dataAddRange","dataRemoveData","added","dataContains","dataIsEmpty","dataIsSingleton","dataToArray","codePointToString","codePointToStringUnicode","symbolToCodePoint","createBMPCharacterClasses","optimizeByLowSurrogates","surrogateMappings","innerIndex","mapping","lowSurrogates","lowSurrogateStart","lowSurrogateEnd","otherMapping","otherLowSurrogates","otherLowSurrogateStart","otherLowSurrogateEnd","surrogateSet","startHigh","startLow","endHigh","endLow","endsWithHighestLowSurrogate","complete","LOW_SURROGATE_MAX","nextMapping","highSurrogates","nextHighSurrogates","nextLowSurrogates","tmpLow","addLow","optimizeSurrogateMappings","createCharacterClassesFromData","bmpOnly","createUnicodeCharacterClasses","loneHighSurrogates","loneLowSurrogates","bmp","astral","HIGH_SURROGATE_MAX","splitAtBMP","hasLoneHighSurrogates","hasLoneLowSurrogates","surrogateMapping","createSurrogateCharacterClasses","extend","startCodePoint","endCodePoint","isStart","dataFromCodePoints","dataIntersection","reAsciiWord","baseToString","registerServiceWorker","whiteListLinkRels","prefetchedPathnames","setPathResources","getResourceURLsForPathname","resources","onServiceWorkerActive","active","nodes","headerResources","tagName","getAttribute","prefetchedResources","resource","rel","onload","onerror","appendChild","onPostPrefetchPathname","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","equalByTag","equalObjects","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","charToInteger","decoded","sourceFileIndex","sourceCodeLine","sourceCodeColumn","lineMappings","line_1","segmentMappings","encodeInteger","clamped","_arrayLikeToArray","minLen","supportedPrefetchStrategy","feature","fakeLink","relList","supports","support","reject","getElementsByTagName","getElementsByName","parentNode","XMLHttpRequest","send","preFetched","prefetch","Success","preferDefault","createPageDataUrl","__PATH_PREFIX__","doFetch","onreadystatechange","toPageResources","pageData","componentChunkName","staticQueryHashes","BaseLoader","loadComponent","inFlightNetworkRequests","pageDb","inFlightDb","staticQueryDb","pageDataDb","prefetchTriggered","prefetchCompleted","memoizedGet","inFlightPromise","response","prefetchDisabled","fetchPageDataJson","loadObj","retries","responseText","jsonPayload","loadPageDataJson","_findMatchPath","loadAppData","allData","finalResult","componentChunkPromise","createdAt","staticQueryBatchPromise","staticQueryHash","staticQueryResultsMap","shouldPrefetch","doesConnectionSupportPrefetch","connection","effectiveType","saveData","realPath","doPrefetch","pageDataUrl","prefetchHelper","crossOrigin","as","createComponentUrls","isPageNotFound","appData","___chunkMapping","_BaseLoader","chunkName","componentUrls","_loader","getResourcesForPathname","getResourcesForPathnameSync","keysFunc","symbolsFunc","GatsbyMDXScopeContext","useMDXScope","contextScope","MDXScopeProvider","__mdxScope","scope_0","scope_1","scope_2","scope_3","__DOCZ_DUMMY_EXPORT_DEFAULT","componentsAndGuards","componentFromGuards","mdxPlugins","guards","acc","MDXConsumer","componentsFromContext","scopeContexts","WrapRootElement","wrap","stackClear","stackDelete","stackGet","stackHas","stackSet","reHasUnicodeWord","plugins","baseSlice","propertyKey","_reactDom","scrollKey","ScrollContainerImplementation","findDOMNode","baseHasIn","hasPath","useDbQuery","doczDb","Wrapper","img","maxWidth","h1","h2","h3","h4","h5","h6","ul","listStylePosition","listStyleImage","ml","ol","li","mb","pl","my","borderCollapse","th","borderBottom","px","py","pr","td","mt","mx","baseFontSize","baseLineHeight","headerLineHeight","scaleRatio","googleFonts","headerFontFamily","bodyFontFamily","headerWeight","bodyWeight","boldWeight","includeNormalize","blockMarginBottom","toUnitless","getSpace","rhythm","genericFontFamilies","wrapFontFamily","stackFonts","fonts","getFonts","getFontSizes","scale","getLineHeights","getFontWeights","bold","white","grayUltraLight","grayExtraLight","grayLight","gray","grayDark","grayExtraDark","dark","blueLight","blue","skyBlue","plain","backgroundColor","types","light","colors","muted","sidebar","bg","navGroup","navLink","navLinkActive","tocLink","tocLinkActive","descriptionText","descriptionBg","prism","prismLight","prismDark","Container","borderLeft","variant","borderSpacing","borderColor","borderBottomStyle","verticalAlign","borderBottomWidth","moraga","typography","_opts","rhythmUnit","typo","fontSizes","fontWeights","lineHeights","toTheme","_merge","initialColorMode","showLiveError","showLivePreview","showPlaygroundEditor","showDarkModeSwitch","showMarkdownEditButton","useScopingInPlayground","modes","monospace","letterSpacings","caps","radii","square","radius","rounded","Tag","StyleSheet","_insertTag","before","tags","insertionPoint","nextSibling","firstChild","insertBefore","isSpeedy","speedy","ctr","nonce","rule","createTextNode","createStyleElement","sheet","styleSheets","ownerNode","sheetForTag","insertRule","cssRules","flush","removeChild","h","g","z","M","D","E","G","H","I","J","return","K","Q","R","U","W","X","Z","ee","ae","ne","ce","se","w","$","ue","ie","te","oe","le","pe","begin","points","character","fixedElements","compat","isImplicitRule","parentRules","removeLabel","defaultStylisPlugins","ssrStyles","stylisPlugins","_insert","inserted","nodesToHydrate","attrib","omnipresentPlugins","currentSheet","finalizingPlugins","serializer","selector","serialized","shouldCache","stylis","registered","registerStyles","isStringTag","insertStyles","unitlessKeys","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexPositive","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","order","orphans","widows","zIndex","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","p1","p2","handleInterpolation","mergedProps","interpolation","__emotion_styles","anim","interpolated","createStringFromObject","previousCursor","cached","labelPattern","stringMode","identifierName","useInsertionEffect","useInsertionEffectWithLayoutFallback","EmotionCacheContext","HTMLElement","ThemeContext","Global","sheetRef","rehydrating","sheetRefCurrent","nextElementSibling","centerAlign","alignItems","ghostButton","mountMedia","breakpoints","mobile","tablet","desktop","media","innerContainer","menuIcon","menuButton","headerButton","editButton","_ref$color","_ref$size","xmlns","viewBox","stroke","strokeLinecap","strokeLinejoin","ry","Edit2","GitHub","x1","y1","x2","y2","cx","cy","ChevronDown","ChevronUp","Clipboard","Code","Edit","Github","Menu","Search","Sun","logo","Logo","Flex","data-testid","alt","maxHeight","marginRight","float","description","Header","onOpen","repository","_useCurrentDoc","colorMode","setColorMode","useColorMode","Box","mr","toggleColorMode","aria-label","overlay","visibility","minWidth","borderRight","WebkitOverflowScrolling","icon","NavSearch","smallLink","NavLink","docs","hidden","headings","getHeadings","_get","showHeadings","currentHash","slug","sublinkWrapper","chevron","alignSelf","transformOrigin","NavGroup","sidebarRef","currentDoc","currentDocRef","subheadingsVisible","setShowsubheadings","useEffect","offsetTop","toggleSubheadings","Sidebar","setQuery","pt","MainContainer","main","minHeight","gridTemplateColumns","Layout","setOpen","nav","BaseLayout","Main","Prism","uniqueId","plainTextGrammar","util","Token","alias","objId","deepClone","visited","getLanguage","parentElement","setLanguage","classList","defaultActivation","no","languages","plaintext","txt","redef","inside","grammar","newToken","old","DFS","propertyType","env","hooks","run","tokenize","tokenList","LinkedList","addAfter","matchGrammar","startNode","startPos","rematch","patterns","cause","patternObj","currentNode","tail","reach","removeCount","matchPattern","matchStr","after","removeFrom","removeRange","wrapped","nestedRematch","callbacks","matchedStr","lookbehindLength","newNode","classes","aliases","markup","includedCdataInside","attrName","mathml","svg","xml","ssml","rss","envVars","commandAfterHeredoc","insideString","bash","entity","variable","toBeCopied","shell","clike","keyword","modName","cpp","addInlined","addAttribute","selectorInside","unit","javascript","js","comment","coffeescript","coffee","anchorOrAlias","plainKey","createValuePattern","yaml","yml","inner","createInline","tableCell","tableRow","tableLine","markdown","punctuation","walkTokens","codeLang","codeBlock","cls","tagPattern","known","KNOWN_ENTITY_NAMES","autoloader","loadLanguages","ele","innerHTML","md","validTokens","currentIndex","startToken","inputVariables","isTokenType","getToken","definitionEnd","findClosingBracket","addAlias","mutationEnd","varToken","stackHeight","sql","templateString","templateLiteralPattern","interpolationObject","interpolationPunctuationObject","interpolationPattern","createTemplate","getPlaceholder","counter","tokenizeWithHooks","tokenizeInterpolationExpression","expression","tempGrammar","tokenizeEmbedded","_tokens","placeholderCounter","placeholderMap","embeddedTokens","interpolationExpression","placeholders","middle","replacement","afterTokens","supportedLanguages","stringContent","findTemplateStrings","embedded","typescript","typeInside","ts","withId","unshift","maybeClassNameTokens","braces","stringifyToken","openedTags","notTagNorBrace","openedBraces","plainText","diff","PREFIXES","git","buildPlaceholders","placeholderPattern","replaceFilter","tokenStack","tokenizePlaceholders","handlebars","hbs","webmanifest","less","makefile","objectivec","objc","ocaml","python","reason","function","sass","atrule","operator","important","scss","stylus","tsx","wasm","newlineRe","normalizeEmptyLines","empty","appendTypes","typesSize","themeToDict","themeDict","themeEntry","accStyle","Highlight","this$1","prevTheme","prevLanguage","getThemeDict","baseStyle","typeStyles","getStyleForToken","typeArrStack","tokenArrStack","tokenArrIndexStack","tokenArrSizeStack","stackIndex","currentLine","splitByNewlines","newlineCount","i$1","normalizeTokens","getLineProps","getTokenProps","_excluded$1","ownKeys$3","_objectSpread$3","_useState","prevCodeProp","theme$1","baseTheme","LiveContext$1","ownKeys$2","_objectSpread$2","_poly","transpileOptions","objectAssign","transforms","dangerousForOf","dangerousTaggedTemplateString","errorBoundary$1","errorCallback","ErrorBoundary","isValidElement","_isNativeReflectConstruct","evalCode$1","scopeKeys","scopeValues","ownKeys$1","_objectSpread$1","LiveProvider","transformCode","_ref$noInline","noInline","transpile","newCode","renderElement","resultCallback","_ref2$code","_ref2$scope","renderElementAsync","_ref$code","_ref$scope","codeTrimmed","generateElement","onError","LiveEditor","_useContext","LiveError","LivePreview","rowSizeBase","colSizeBase","edgeBase","topRight","bottomRight","bottomLeft","topLeft","Resizer","onMouseDown","onResizeStart","direction","onTouchStart","userSelect","replaceStyles","DEFAULT_SIZE","clamp","snap","hasDirection","isTouchEvent","touches","findClosestSnap","snapArray","snapGap","closestGapIndex","curr","gap","getStringSize","getPixelSize","parentSize","definedProps","Resizable","resizable","parentLeft","parentTop","resizableLeft","resizableRight","resizableTop","resizableBottom","targetLeft","targetTop","appendBase","removeBase","isResizing","propsSize","backgroundStyle","onMouseMove","onMouseUp","defaultSize","orgWidth","offsetWidth","orgHeight","offsetHeight","orgPosition","getParentSize","wrapChanged","bindEvents","passive","unbindEvents","computedStyle","createSizeForCssProperty","newSize","calculateNewMaxFromBoundary","boundWidth","boundHeight","boundsByDirection","widthByDirection","heightByDirection","bounds","parent_1","calculateNewSizeFromDirection","clientX","clientY","resizeRatio","lockAspectRatio","lockAspectRatioExtraHeight","lockAspectRatioExtraWidth","newWidth","newHeight","extraHeight","extraWidth","calculateNewSizeFromAspectRatio","computedMinWidth","computedMaxWidth","computedMinHeight","computedMaxHeight","extraMinWidth","extraMaxWidth","extraMinHeight","extraMaxHeight","lockedMinWidth","lockedMaxWidth","lockedMinHeight","lockedMaxHeight","setBoundingClientRect","parent_2","parentRect","getBoundingClientRect","targetRect","top_1","nativeEvent","isMouseEvent","parent_3","flexDir","TouchEvent","stopPropagation","calculateNewMax","boundaryMax","grid","newGridWidth","newGridHeight","delta","newState","onResize","onResizeStop","updateSize","renderResizer","enable","handleStyles","handleClasses","handleWrapperStyle","handleWrapperClass","handleComponent","resizers","extendsProps","sizeStyle","lastArgs","frameId","wrapperFn","cancel","cancelAnimationFrame","reTrimStart","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","isBinary","nativeMin","lastThis","maxWait","timerId","lastInvokeTime","maxing","invokeFunc","time","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","listHandle","isSSR","_defineProperties","_assertThisInitialized","_getPrototypeOf","_PureComponent","ChildWrapper","Derived","Super","NewTarget","ResizeDetector","resizeHandler","raf","getElement","resizeObserver","targetDomEl","HTMLDocument","currentElement","rafClean","_this$state","widthCurrent","heightCurrent","_this$props2","handleWidth","handleHeight","updater","createUpdater","isSizeChanged","skipOnMount","_this$props3","_this$props4","_this$state2","childProps","getRenderType","refreshMode","refreshRate","refreshOptions","handle","createResizeHandler","toggleObserver","cancelHandler","onRef","getTargetComponent","borderTop","previewWrapper","wrapperBorder","showingCode","preview","buttons","IframeWrapper","containerHeight","setHeight","Iframe","ReactResizeDetector","NormalWrapper","themeProp","usePrismTheme","useThemeUI","_pipe","_defaultTo","getTheme","scopeOnMount","setShowingCode","setWidth","resizableProps","getResizableProps","copyCode","Icons","toggleCode","pb","propType","propRequired","openDescBtn","getDefaultValue","Prop","showing","setShowing","toggle","CodeBlock","_c$props","LongCode","Pre","ThemeStyles","toggled","setToggled","Expand","localStyles","defaultTheme","ThemeProvider","Styled","SEO","meta","keywords","initialTitle","metaDescription","Helmet","titleTemplate","htmlAttributes","Route","isTransclusion","NotFound","_excluded2","findEntry","frontmatter","eqIndex","_propEq","filepath","includesTransclusion","clickHandler","routeThroughBrowserOrApp","hashShouldBeFollowed","pathIsNotHandledByApp","urlsAreOnSameOrigin","authorIsForcingNavigation","anchorsTargetIsEquivalentToSelf","findClosestAnchor","navigationWasHandledElsewhere","slashedPathname","userIsForcingNavigation","_escapeStringRegexp","nodeName","hasAttribute","pathStartRegEx","hrefHandler","clickedAnchor","SVGAnimatedString","animVal","excludePattern","destinationPathname","baseUniq","unionBy","arrays","aliasToReal","aryMethod","aryRearg","iterateeAry","iterateeRearg","methodRearg","methodSpread","mutate","realToAlias","remap","skipFixed","skipRearg","functionToString","segs","_grayPercentage2","_typographyBreakpointConstants","_compassVerticalRhythm2","headerColor","bodyColor","overrideStyles","vr","establishBaseline","trimmedEndIndex","baseIndexOf","isNew","postfix","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","LN2","defaultRhythmBorderWidth","defaultRhythmBorderStyle","roundToNearestHalfLine","minLinePadding","baseLineHeightInPx","ceil","linesForFontSize","adjustFontSizeTo","regexAstralSymbols","regexAsciiWhitelist","regexBmpWhitelist","regexEncodeNonAscii","encodeMap","'","regexEscape","escapeMap","regexInvalidEntity","regexInvalidRawCodePoint","regexDecode","decodeMap","decodeMapLegacy","decodeMapNumeric","invalidReferenceCodePoints","codePointToSymbol","strict","parseError","hexEscape","decEscape","encodeEverything","useNamedReferences","allowUnsafeSymbols","escapeCodePoint","decimal","escapeBmpSymbol","$0","high","low","decode","$1","$2","$3","$4","$5","$6","$7","$8","semicolon","decDigits","hexDigits","isAttributeValue","he","detection","POLYFILL","NATIVE","noCustomizer","V8_PROTOTYPE_DEFINE_BUG","$defineProperty","Attributes","capitalize","normalizeOptions","preserve","QUOTE","WORD","skipWord","rgx","words","startOfWord","nonWord","sep","sepStart","baseKeysIn","iterable","freeProcess","binding","baseForOwn","toPrimitive","arraySome","othLength","arrStacked","othStacked","arrValue","othValue","compared","othIndex","propertyToValueAliases","aliasToValue","canonicalValue","matchOperatorsRe","overrides","getTocPosition","currentLevel","populateInlineContent","contentArray","extractedElements","elementIdMatch","_he","addElement","inlineContent","elementType","lastToc","thead","tbody","flag","CodeComponent","constant","baseSetToString","unicodeMatchProperty","unicodeMatchPropertyValue","iuMappings","ESCAPE_SETS","UNICODE_SET","DOT_SET_UNICODE","getCharacterClassEscapeSet","unicode","getUnicodePropertyValueSet","exception","getUnicodePropertyEscapeSet","isNegative","firstPart","category","handleLoneUnicodePropertyNameOrValue","iuAddRange","folded","caseFold","update","useUnicodeFlag","updateNamedReference","processTerm","regenerateOptions","groups","useDotAllFlag","characterClassItem","processCharacterClass","namedGroup","onNamedGroup","unmatchedReferences","regjsparserFeatures","supportDotAllFlag","dotAllFlag","unmatchedReferencesNames","assertNoUnmatchedReferences","oldArray","srcBitmask","newBitmask","isCombo","isImportRule","ia","L","ja","ka","aa","ba","la","ma","na","ea","oa","N","ca","da","fa","Y","ha","use","toSheet","Sheet","ruleSheet","selectors","parents","ns","at","stylisOptions","getRegisteredStyles","registeredStyles","classNames","rawClassName","couldBeSelectorInterpolation","typePropName","createEmotionProps","Noop","cssProp","possiblyStyleElement","Emotion","InnerGlobal","classnames","toAdd","basePropertyOf","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","unicodeSets","arraySlice","mergeSort","insertionSort","llength","rlength","lindex","rindex","_toPropertyKey","hint","prim","BASE","BODY","HEAD","HTML","LINK","META","NOSCRIPT","SCRIPT","STYLE","TITLE","FRAGMENT","charset","accesskey","class","contenteditable","contextmenu","itemprop","tabindex","priority","toComponent","titleAttributes","baseTag","bodyAttributes","noscriptTags","styleTags","linkTags","metaTags","scriptTags","prioritizeSeoTags","priorityMethods","noscript","script","instances","setHelmet","helmet","helmetInstances","encodeSpecialCharacters","helmetData","styleSheet","isEqualNode","oldTags","newTags","removeAttribute","onChangeClientState","rendered","emitChange","defer","init","mapNestedChildrenToProps","flattenArrayTypeChildren","arrayTypeChildren","newChildProps","nestedChildren","mapObjectTypeChildren","mapArrayTypeChildrenToProps","warnOnInvalidChildren","mapChildrenToProps","defaultTitle","ProdPageRenderer","InternalPageRenderer","canonicalProperties","propertyAliases","baseConvert","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","arrayReduce","deburr","reApos","baseTrim","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","fallbackHolder","baseAry","cloneArray","wrapImmutable","cloner","isLib","isObj","fixed","immutable","defaultHolder","forceCurry","forceFixed","forceRearg","pristine","runInContext","helpers","isError","isWeakMap","each","aryMethodKeys","wrappers","castArray","mixin","nthArg","castCap","baseArity","castFixed","flatSpread","castRearg","cloneByPath","createConverter","realName","methodName","oldOptions","newUtil","newFunc","newOptions","createCloner","aryKey","otherName","afterRearg","castCurry","reactPropsRegex","undef","defaultBreakpoints","multiples","marginX","marginY","paddingX","paddingY","scales","gridGap","gridColumnGap","gridRowGap","columnGap","rowGap","borderWidth","borderStyle","borderTopRightRadius","borderTopLeftRadius","borderBottomRightRadius","borderBottomLeftRadius","borderTopWidth","borderTopColor","borderTopStyle","borderBottomColor","borderLeftWidth","borderLeftColor","borderLeftStyle","borderRightWidth","borderRightColor","borderRightStyle","outlineColor","boxShadow","textShadow","positiveOrNegative","absolute","mediaQueries","responsive","scaleName","dirs","parseProps","css$$1","jsx$1","arguments$1","_slicedToArray","_arrayWithHoles","_n","_e","_s","_iterableToArrayLimit","_nonIterableRest","canUseSymbol","REACT_ELEMENT","FORWARD_REF","destinationArray","sourceArray","shouldForwardProps","thematicBreak","createComponents","Context","emotionVersion","toVarName","toVarValue","numberScales","reservedKeys","useCustomProperties","initialColorModeName","toPixel","HAS_STORAGE","Storage","storage","localStorage","_useState2","getName","setMode","stored","darkQuery","mql","matchMedia","useColorSchemeMediaQuery","_useThemeUI","components$$1","toCustomProperties","themeKey","_ref2$theme","propsTheme","propsThemeObject","_useColorState2","__THEME_UI__","NestedProvider","scoped","reWrapDetails","reSplitDetails","baseMatches","getMethod","ordinaryToPrimitive","TO_PRIMITIVE","exoticToPrim","baseIsEqualDeep","reIsUint","cloneDataView","cloneRegExp","cloneSymbol","api","defaultReturn","argTransform","typedArray","simple","unsafe","nonConfigurable","nonWritable","baseIsMap","nodeIsMap","symbolToString"],"mappings":"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,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAClpCD,EAAIC,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,KAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAC7tCD,EAAIC,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OACvvCD,EAAIC,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OACvvCD,EAAIC,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OACxwCD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAC51CD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAC51CD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAC51CD,EAAIC,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS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,MAAS,CAAC,IAAO,KAAQ,CAAC,IAAO,MAAQ,CAAC,IAAO,KAAQ,CAAC,IAAO,KAAQ,CAAC,KAAO,KAAQ,CAAC,KAAO,KAAQ,CAAC,KAAO,CAAC,IAAO,IAAO,MAAS,CAAC,KAAO,KAAQ,CAAC,KAAO,MAAS,CAAC,KAAO,MAAS,CAAC,KAAO,MAAS,CAAC,KAAO,MAAS,CAAC,KAAO,MAAS,CAAC,KAAO,MAAS,CAAC,KAAO,MAAS,CAAC,KAAQ,MAAQ,CAAC,KAAQ,MAAQ,CAAC,KAAQ,MAAQ,CAAC,KAAQ,MAAQ,CAAC,KAAQ,MAAS,CAAC,KAAQ,CAAC,KAAO,OAAU,CAAC,KAAQ,MAAQ,CAAC,KAAQ,MAAQ,CAAC,KAAQ,OAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,KAAO,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,CAAC,IAAO,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,CAAC,IAAO,MAAS,CAAC,KAAQ,IAAO,CAAC,KAAQ,CAAC,IAAM,MAAQ,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,MAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,MAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,KAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU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AAS,IAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAChpCD,EAAIC,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAClpCD,EAAIC,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MACvqCD,EAAIC,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,KAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MACvvCD,EAAIC,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OACvvCD,EAAIC,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OACvvCD,EAAIC,SAAS,MAAQ,OAAQA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,KAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAC11CD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAC51CD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAC51CD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAC51CD,EAAIC,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAC51CD,EAAIC,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS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AAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,IACN,KAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,IACN,KAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,IACN,KAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,IACN,KAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,KAAM,IACN,KAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,IACN,KAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,IACN,KAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,IACN,KAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,IACN,KAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,IACN,KAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,IACN,KAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,IAAK,IACL,IAAK,IACL,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,K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,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MACvoCD,EAAIC,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAClpCD,EAAIC,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAClpCD,EAAIC,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,KAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAC3tCD,EAAIC,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MACvvCD,EAAIC,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OACvvCD,EAAIC,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OACvvCD,EAAIC,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OACp1CD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAC51CD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAC51CD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAC51CD,EAAIC,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAC51CD,EAAIC,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS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AAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAC7oCD,EAAIC,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAC3qCD,EAAIC,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MACvvCD,EAAIC,SAAS,KAAQ,MAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OACvvCD,EAAIC,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OACx0CD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAC51CD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAC51CD,EAAIC,SAAS,MAAS,OAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS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AOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MACzoCD,EAAIC,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAClpCD,EAAIC,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,KAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MACjuCD,EAAIC,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OACvvCD,EAAIC,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OACvvCD,EAAIC,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAC1wCD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAC51CD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAC51CD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAC51CD,EAAIC,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS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AO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OACxmIA,EAAIC,SAAS,GAAM,KAAMA,SAAS,IAAM,KAAMA,SAAS,IAAM,KAAMA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS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AAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MACzoCD,EAAIC,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAClpCD,EAAIC,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,KAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAC7tCD,EAAIC,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OACvvCD,EAAIC,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OACvvCD,EAAIC,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OACtwCD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAC51CD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAC51CD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,Q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KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MACzoCD,EAAIC,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAClpCD,EAAIC,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAClpCD,EAAIC,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,KAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MACjuCD,EAAIC,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MACvvCD,EAAIC,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OACvvCD,EAAIC,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAChwCD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAC51CD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAC51CD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAC51CD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAC51CD,EAAIC,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAC1rCC,EAAOC,QAAUH,G,qBCbjB,MAAMA,EAAM,EAAQ,OAAR,CAAsB,IAAM,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAA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OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QACr8DA,EAAIC,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAClpCD,EAAIC,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MACjrCD,EAAIC,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OACvvCD,EAAIC,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OACvvCD,EAAIC,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OACp1CD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAC51CD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAC51CD,EAAIC,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAC51CD,EAAIC,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAA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O,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAA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,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ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MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAClpCD,EAAIC,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAC7tCD,EAAIC,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAC9xCD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAC51CD,EAAIC,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAC7kBC,EAAOC,QAAUH,G,qBCNjB,IAGIuvC,EAHU,EAAQ,OAGLupB,CAAQxrD,OAAO4M,KAAM5M,QAEtCpN,EAAOC,QAAUovC,G,qBCLjB,MAAMvvC,EAAM,EAAQ,OAAR,GACZA,EAAIC,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OACvEC,EAAOC,QAAUH,G,qBCFjB,MAAMA,EAAM,EAAQ,OAAR,GACZA,EAAIC,SAAS,MAAS,OACtBC,EAAOC,QAAUH,G,mBCUjBE,EAAOC,QALP,SAAmB8J,GAEjB,OADaA,EACCqB,c,qBCThB,MAAMtL,EAAM,EAAQ,OAAR,GACZA,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OACjDC,EAAOC,QAAUH,G,uBCFjB,MAAMA,EAAM,EAAQ,OAAR,GACZA,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OACjDC,EAAOC,QAAUH,G,qBCFjB,IAAIw4C,EAAa,EAAQ,QACrBiiB,EAAa,EAAQ,QAczBv6D,EAAOC,QAJP,SAAqBuB,EAAQD,GAC3B,OAAO+2C,EAAW92C,EAAQ+4D,EAAW/4D,GAASD,K,mBCChDvB,EAAOC,QAJP,SAAkBE,GAChB,OAAOC,KAAKC,SAASqR,IAAIvR,K,qBCV3B,IAAIqQ,EAAiB,EAAQ,QAM7BxQ,EAAOC,QALP,SAAwB4uC,EAAUC,GAChCD,EAASzoC,UAAYgH,OAAO+Y,OAAO2oB,EAAW1oC,WAC9CyoC,EAASzoC,UAAU3F,YAAcouC,EACjCr+B,EAAeq+B,EAAUC,IAEM9uC,EAAOC,QAAQ+B,YAAa,EAAMhC,EAAOC,QAAiB,QAAID,EAAOC,S,qBCNtG,MAAMH,EAAM,EAAQ,OAAR,CAAsB,OAClCA,EAAIC,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QACndC,EAAOC,QAAUH,G,qBCFjB,IAAImrE,EAAU,EAAQ,QAClBC,EAAQ,EAAQ,SAEnBlrE,EAAOC,QAAU,SAAUE,EAAKoL,GAC/B,OAAO2/D,EAAM/qE,KAAS+qE,EAAM/qE,QAAiB2B,IAAVyJ,EAAsBA,EAAQ,MAChE,WAAY,IAAIhJ,KAAK,CACtB6H,QAAS,SACT+gE,KAAMF,EAAU,OAAS,SACzBG,UAAW,4CACXC,QAAS,2DACT7pE,OAAQ,yC,qBCVV,MAAM1B,EAAM,EAAQ,OAAR,CAAsB,MAAQ,MAAQ,OAClDA,EAAIC,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QACn2BC,EAAOC,QAAUH,G,qBCFjB,IAAIoe,EAAa,EAAQ,QACrB06B,EAAc,EAAQ,QACtB0yB,EAA4B,EAAQ,QACpCC,EAA8B,EAAQ,QACtCj7D,EAAW,EAAQ,QAEnBsG,EAASgiC,EAAY,GAAGhiC,QAG5B5W,EAAOC,QAAUie,EAAW,UAAW,YAAc,SAAiBpd,GACpE,IAAIkZ,EAAOsxD,EAA0Br7D,EAAEK,EAASxP,IAC5Cqf,EAAwBorD,EAA4Bt7D,EACxD,OAAOkQ,EAAwBvJ,EAAOoD,EAAMmG,EAAsBrf,IAAOkZ,I,qBCZ3E,MAAMla,EAAM,EAAQ,OAAR,GACZA,EAAIC,SAAS,MAAS,OACtBC,EAAOC,QAAUH,G,sBCFjB,YACA,IAAI6qD,EAA8B,iBAAVp7C,GAAsBA,GAAUA,EAAOnC,SAAWA,QAAUmC,EAEpFvP,EAAOC,QAAU0qD,I,2CCHjB,MAAM7qD,EAAM,EAAQ,OAAR,CAAsB,MAClCA,EAAIC,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,MAAS,OACjGC,EAAOC,QAAUH,G,qBCFjB,MAAMA,EAAM,EAAQ,OAAR,GACZA,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OACxLC,EAAOC,QAAUH,G,qBCFjB,MAAMA,EAAM,EAAQ,OAAR,CAAsB,OAClCA,EAAIC,SAAS,MAAS,OACtBC,EAAOC,QAAUH,G,qBCFjB,IAAI0rE,EAAQ,EAAQ,QAIpBxrE,EAAOC,QAAU,SAAUyP,GACzB,IAAIquC,GAAUruC,EAEd,OAAOquC,GAAWA,GAAqB,IAAXA,EAAe,EAAIytB,EAAMztB,K,kCCLvD,MAAM0tB,EAAsB,SAAUjlD,GACpC,IAAI,OACFxe,EAASulC,SAASxvB,MAChBxQ,UAAUW,OAAS,QAAsBpM,IAAjByL,UAAU,GAAmBA,UAAU,GAAK,GACxE,MAAM6hC,EAAU7B,SAAS5oC,cAAc,YACjC+mE,EAA2Bn+B,SAASo+B,cAC1Cv8B,EAAQ7jC,MAAQib,EAGhB4oB,EAAQw8B,aAAa,WAAY,IACjCx8B,EAAQxpC,MAAMimE,QAAU,SACxBz8B,EAAQxpC,MAAMge,SAAW,WACzBwrB,EAAQxpC,MAAMsiC,KAAO,UACrBkH,EAAQxpC,MAAMojC,SAAW,OAEzB,MAAM8iC,EAAYv+B,SAASw+B,eAC3B,IAAIC,GAAgB,EAChBF,EAAUG,WAAa,IACzBD,EAAgBF,EAAUI,WAAW,IAEvClkE,EAAOsR,OAAO81B,GACdA,EAAQ+8B,SAGR/8B,EAAQ5L,eAAiB,EACzB4L,EAAQ3L,aAAejd,EAAMtY,OAC7B,IAAIk+D,GAAY,EAChB,IACEA,EAAY7+B,SAAS8+B,YAAY,QACjC,MAAOr/B,IAWT,OAVAoC,EAAQ1zB,SACJswD,IACFF,EAAUQ,kBACVR,EAAU/rE,SAASisE,IAIjBN,GACFA,EAAyBa,QAEpBH,GAETpsE,EAAOC,QAAUwrE,EAEjBzrE,EAAOC,QAAQwC,QAAUgpE,G,kCC9CzB,62BAeA,MAAMe,EAAmB3f,UAAOjmD,QAE1B0jE,EAAqBznC,IAAM7B,cAAc,IAE/C,SAASyrC,EAAuBlpE,GAA4C,IAA3C,gBAAEmpE,EAAe,KAAEz9D,EAAI,MAAEulB,EAAK,OAAEpsB,GAAQ7E,EACvE,MAAMopE,EAAY19D,EACdA,EAAKA,KACLy9D,EAAgBl4C,IAAUk4C,EAAgBl4C,GAAOvlB,KAErD,OACE6qC,YAACjX,IAAMnT,SAAQ,KACZi9C,GAAavkE,EAAOukE,IACnBA,GAAa7yB,YAAA,WAAK,0BAK1B,MAAM8yB,EAAcloE,IAClB,MAAM,KAAEuK,EAAI,MAAEulB,EAAK,OAAEpsB,EAAM,SAAEqnB,GAAa/qB,EAE1C,OACEo1C,YAACwwB,EAAmBE,SAAQ,KACzBkC,GACC5yB,YAAC2yB,EAAuB,CACtBx9D,KAAMA,EACNulB,MAAOA,EACPpsB,OAAQA,GAAUqnB,EAClBi9C,gBAAiBA,MAOrBG,EAAiBr4C,IAAU,IAADs4C,EAErBjqC,IAAMtf,WAQf,MAAMgN,EAAUsS,IAAMtf,WAAW+mD,GAKjC,GAAIhiD,MAAMC,OAAOiM,IACf,MAAM,IAAI1f,MAAM,8KAIM0f,EAAK,SAI7B,GAAkB,QAAlBs4C,EAAIv8C,EAAQiE,UAAM,IAAAs4C,GAAdA,EAAgB79D,KAClB,OAAOshB,EAAQiE,GAAOvlB,KAEtB,MAAM,IAAI6F,MACR,yMAcN,SAASi4D,IACP,MAAM,IAAIj4D,MACR,gV,qBC7FJ,IAAItF,EAAa,EAAQ,QACrB0rB,EAAc,EAAQ,QAEtB2uB,EAAatwC,UAGjBvZ,EAAOC,QAAU,SAAUyP,GACzB,GAAIF,EAAWE,GAAW,OAAOA,EACjC,MAAMm6C,EAAW3uB,EAAYxrB,GAAY,wB,qBCR3C,MAAM5P,EAAM,EAAQ,OAAR,CAAsB,OAClCA,EAAIC,SAAS,KAAO,MAAOA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAC9HC,EAAOC,QAAUH,G,qBCFjB,MAAMA,EAAM,EAAQ,OAAR,GACZA,EAAIC,SAAS,MAAS,OACtBC,EAAOC,QAAUH,G,uBCFjB,MAAMA,EAAM,EAAQ,OAAR,GACZA,EAAIC,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAC5EC,EAAOC,QAAUH,G,qBCFjB,IAAIw4C,EAAa,EAAQ,QACrBt+B,EAAO,EAAQ,QAenBha,EAAOC,QAJP,SAAoBsB,EAAQC,GAC1B,OAAOD,GAAU+2C,EAAW92C,EAAQwY,EAAKxY,GAASD,K,qBCbpD,MAAMzB,EAAM,EAAQ,OAAR,GACZA,EAAIC,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,MAAQ,OACnEC,EAAOC,QAAUH,G,qBCFjB,MAAMA,EAAM,EAAQ,OAAR,CAAsB,OAClCA,EAAIC,SAAS,MAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAC5EC,EAAOC,QAAUH,G,4CCFjB,IAAIktE,EAAY,EAAQ,QACpBC,EAAgB,EAAQ,QAoC5BjtE,EAAOC,QAvBP,SAASu6B,EAAYE,EAAOC,EAAOo6B,EAAWmY,EAAU1sE,GACtD,IAAIgR,GAAS,EACTtD,EAASwsB,EAAMxsB,OAKnB,IAHA6mD,IAAcA,EAAYkY,GAC1BzsE,IAAWA,EAAS,MAEXgR,EAAQtD,GAAQ,CACvB,IAAI3C,EAAQmvB,EAAMlpB,GACdmpB,EAAQ,GAAKo6B,EAAUxpD,GACrBovB,EAAQ,EAEVH,EAAYjvB,EAAOovB,EAAQ,EAAGo6B,EAAWmY,EAAU1sE,GAEnDwsE,EAAUxsE,EAAQ+K,GAEV2hE,IACV1sE,EAAOA,EAAO0N,QAAU3C,GAG5B,OAAO/K,I,mBClCTR,EAAOC,QAAU,SAAUktE,EAAQ5hE,GACjC,MAAO,CACL6E,aAAuB,EAAT+8D,GACd79C,eAAyB,EAAT69C,GAChB55D,WAAqB,EAAT45D,GACZ5hE,MAAOA,K,oQCOJ,MAAM0/B,EAAQ,CACnBmiC,MAAOtzB,YAACuzB,UAAG,MACXC,UAAWxzB,YAACyzB,UAAI,MAChBC,OAAQ1zB,YAAC0zB,UAAM,MACfC,GAAI3zB,YAAC2zB,UAAE,YACR,IAAAxiC,UAAA79B,OAAA69B,IAAA79B,OAAAiiB,aAAA4b,KAAA79B,OAAAhH,UAAAwB,eAAAzC,KAAA8lC,EAAA,eAAA79B,OAAAkF,eAAA24B,EAAA,cAAA3b,cAAA,EAAA/jB,MAAA,CAAAiS,KAAA,QAAAxE,SAAA,8CAAAiyB,UAAA79B,OAAA69B,IAAA79B,OAAAiiB,aAAA4b,KAAA79B,OAAAhH,UAAAwB,eAAAzC,KAAA8lC,EAAA,eAAA79B,OAAAkF,eAAA24B,EAAA,cAAA3b,cAAA,EAAA/jB,MAAA,CAAAiS,KAAA,QAAAxE,SAAA,qCAEM,MAAMkyB,EAAK,CAChBkiC,MAAOtzB,YAAC4zB,UAAK,MACbJ,UAAWxzB,YAAC6zB,UAAM,MAClBH,OAAQ1zB,YAAC8zB,UAAQ,MACjBH,GAAI3zB,YAAC+zB,UAAI,YACV,IAAA3iC,UAAA99B,OAAA89B,IAAA99B,OAAAiiB,aAAA6b,KAAA99B,OAAAhH,UAAAwB,eAAAzC,KAAA+lC,EAAA,eAAA99B,OAAAkF,eAAA44B,EAAA,cAAA5b,cAAA,EAAA/jB,MAAA,CAAAiS,KAAA,KAAAxE,SAAA,8CAAAkyB,UAAA99B,OAAA89B,IAAA99B,OAAAiiB,aAAA6b,KAAA99B,OAAAhH,UAAAwB,eAAAzC,KAAA+lC,EAAA,eAAA99B,OAAAkF,eAAA44B,EAAA,cAAA5b,cAAA,EAAA/jB,MAAA,CAAAiS,KAAA,KAAAxE,SAAA,yCAAAnU,EAAA,CAAA2Y,KAAA,SAAA2pB,OAAA,uCAAA9hC,EAAA,CAAAmY,KAAA,UAAA2pB,OAAA,oEAAAhY,EAAA,CAAA3R,KAAA,SAAA2pB,OAAA,4EAEM,MAAM6D,EAAkBznC,IAAqB,IAApB,MAAEuqE,EAAK,IAAE57B,GAAK3uC,EAC5C,MAAM,EAACS,EAAQ,EAAC+pE,GAAcC,mBAAS97B,GAEvC,OACE4H,YAAA,OAAKC,IAAGl1C,GACNi1C,YAAA,OACEC,IAAG10C,GAOF+H,OAAO4M,KAAK8zD,GAAOpwD,IAAI1U,GACtB8wC,YAAA,UACE35C,IAAK6I,EACL+wC,IAAGE,YAAE,CACHpR,WAAY,OACZP,MAAO,UACPU,SAAU,MACVD,WAAY,UACZjD,QAAS,sBACT+T,WAAY,OACZD,aAAc,OACdhR,OAAO,cAAe5/B,IAAMhF,EAAW,UAAc,WACrDiqE,aAAc,MACdC,QAAS,OACT,SAAU,CACRtlC,OAAQ,oBACRulC,OAAQ,YAEX,OACDzlE,QAASA,KACPqlE,EAAW/kE,KAGZA,KAIP8wC,YAAA,OACEC,IAAG5qB,GAOF2+C,EAAM9pE,WAId,IAAAgnC,UAAA59B,OAAA49B,IAAA59B,OAAAiiB,aAAA2b,KAAA59B,OAAAhH,UAAAwB,eAAAzC,KAAA6lC,EAAA,eAAA59B,OAAAkF,eAAA04B,EAAA,cAAA1b,cAAA,EAAA/jB,MAAA,CAAAiS,KAAA,kBAAAxE,SAAA,8CAAAgyB,UAAA59B,OAAA49B,IAAA59B,OAAAiiB,aAAA2b,KAAA59B,OAAAhH,UAAAwB,eAAAzC,KAAA6lC,EAAA,eAAA59B,OAAAkF,eAAA04B,EAAA,cAAA1b,cAAA,EAAA/jB,MAAA,CAAAiS,KAAA,kBAAAxE,SAAA,sC,qBC9ED,IAAIo1D,EAAmB,EAAQ,QAe/BpuE,EAAOC,QALP,SAAuBouE,EAAU51C,GAC/B,IAAIzP,EAASyP,EAAS21C,EAAiBC,EAASrlD,QAAUqlD,EAASrlD,OACnE,OAAO,IAAIqlD,EAAS5tE,YAAYuoB,EAAQqlD,EAAS7tB,WAAY6tB,EAAS3tE,c,qBCZxE,MAAMZ,EAAM,EAAQ,OAAR,GACZA,EAAIC,SAAS,MAAS,OACtBC,EAAOC,QAAUH,G,kCCFjB,kB,mBCAAE,EAAOC,QAAU,IAAIqwB,IAAI,CAEzB,mBAAoB,SAAU,oBAE9B,aAAc,MAAO,QAAS,kBAAmB,WAAY,eAAgB,gBAAiB,iBAAkB,QAAS,0BAA2B,0BAA2B,0BAA2B,+BAAgC,0BAA2B,0BAA2B,OAAQ,+BAAgC,aAAc,YAAa,QAAS,kBAAmB,iBAAkB,sBAAuB,qBAAsB,wBAAyB,WAAY,gBAAiB,kBAAmB,YAAa,cAAe,WAAY,cAAe,sBAAuB,uBAAwB,eAAgB,0BAA2B,YAAa,OAAQ,0BAA2B,iBAAkB,sBAAuB,iBAAkB,UAAW,qBAAsB,oBAAqB,cAAe,uBAAwB,oBAAqB,YAAa,qBAAsB,cAAe,eAAgB,e,sBCHv7B,WACE,IAAIg+C,EAAUC,EACdD,EAAW,EAAQ,QACnBC,EAAS,CACP,eAAgB,GAAK,GACrB,eAAgB,EAAI,EACpB,cAAe,IACf,cAAe,EAAI,EACnB,mBAAoBn4D,KAAKo4D,KAAK,GAC9B,gBAAiB,IACjB,cAAe,IACf,OAAU,cACV,IAAO,cACP,cAAe,EAAI,EACnB,gBAAiB,GAAK,EACtB,gBAAiB,GAAK,EACtB,OAAU,EACV,cAAe,IACf,iBAAkB,EAAI,EACtB,gBAAiB,EACjB,gBAAiB,GAEnBxuE,EAAOC,QAAU,SAAUsL,EAAOkjE,GAChC,IAAI7+B,EAcJ,OAba,MAATrkC,IACFA,EAAQ,GAEG,MAATkjE,IACFA,EAAQ,UAGR7+B,EADE0+B,EAASG,GACPA,EACsB,MAAjBF,EAAOE,GACZF,EAAOE,GAEPF,EAAe,OAEdn4D,KAAK0R,IAAI8nB,EAAGrkC,MAEpBpG,KAAK/E,O,qBCxCR,IAAIsuE,EAAiB,EAAQ,QACzBC,EAAkB,EAAQ,QAC1BC,EAAe,EAAQ,QACvBC,EAAe,EAAQ,QACvBC,EAAe,EAAQ,QAS3B,SAAShgE,EAAUjH,GACjB,IAAI2J,GAAS,EACTtD,EAAoB,MAAXrG,EAAkB,EAAIA,EAAQqG,OAG3C,IADA9N,KAAKilB,UACI7T,EAAQtD,GAAQ,CACvB,IAAInG,EAAQF,EAAQ2J,GACpBpR,KAAKN,IAAIiI,EAAM,GAAIA,EAAM,KAK7B+G,EAAU1I,UAAUif,MAAQqpD,EAC5B5/D,EAAU1I,UAAkB,OAAIuoE,EAChC7/D,EAAU1I,UAAU+L,IAAMy8D,EAC1B9/D,EAAU1I,UAAUsL,IAAMm9D,EAC1B//D,EAAU1I,UAAUtG,IAAMgvE,EAE1B9uE,EAAOC,QAAU6O,G,+NCzBJ6pB,EAAe,QAAG,IAAAA,UAAAvrB,OAAAurB,IAAAvrB,OAAAiiB,aAAAsJ,KAAAvrB,OAAAhH,UAAAwB,eAAAzC,KAAAwzB,EAAA,eAAAvrB,OAAAkF,eAAAqmB,EAAA,cAAArJ,cAAA,EAAA/jB,MAAA,CAAAiS,KAAA,eAAAxE,SAAA,0CAC/B,MAAM4f,EAAc,CAClBD,gBAEIE,EAAYC,IACH,SAASC,EAAUx1B,GAG/B,IAHgC,WACjCusB,GAEDvsB,EADImB,EAAKs0B,YAAAz1B,EAAA01B,GAER,OAAOC,YAACL,EAAS7O,YAAA,GAAK4O,EAAiBl0B,EAAK,CAAEorB,WAAYA,EAAYqJ,QAAQ,cAG5ED,YAAA,4FACFA,YAAA,KAAGE,WAAW,IACR,KAAQ,6CAA2C,mBAC3B,KAC5BF,YAAA,4FACFA,YAAA,cAAYE,WAAW,KAAG,SAAuB,aAAcF,YAAA,cAAYE,WAAW,KAAG,qBAAmC,KAC1HF,YAAA,MACE,GAAM,eAAa,gBAErBA,YAAA,qGAAgGA,YAAA,cAAYE,WAAW,KAAG,SAAuB,gCACjJF,YAAA,OACE,UAAa,yCACb,gBAAiB,QAChBA,YAAA,QAAME,WAAW,MAChB,UAAa,yBACZF,YAAA,QAAME,WAAW,OAChB,UAAa,yBACZF,YAAA,QAAME,WAAW,OAChB,UAAa,aAAW,mBACS,KAC3CF,YAAA,QAAME,WAAW,OACT,UAAa,yBACZF,YAAA,QAAME,WAAW,OAChB,UAAa,QAAM,6GACwG,KACrIF,YAAA,QAAME,WAAW,OACT,UAAa,yBACZF,YAAA,QAAME,WAAW,OAChB,UAAa,QAAM,qCACgC,KAC7DF,YAAA,QAAME,WAAW,OACT,UAAa,yBACZF,YAAA,QAAME,WAAW,OAChB,UAAa,UACE,KACzBF,YAAA,QAAME,WAAW,OACT,UAAa,yBACZF,YAAA,QAAME,WAAW,OAChB,UAAa,aAAW,4CACkC,KACpEF,YAAA,QAAME,WAAW,OACT,UAAa,yBACZF,YAAA,QAAME,WAAW,OAChB,UAAa,QAAM,2GACsG,KACnIF,YAAA,QAAME,WAAW,OACT,UAAa,yBACZF,YAAA,QAAME,WAAW,OAChB,UAAa,QAAM,6GACwG,KACrIF,YAAA,QAAME,WAAW,OACT,UAAa,yBACZF,YAAA,QAAME,WAAW,OAChB,UAAa,QAAM,qCACgC,KAC7DF,YAAA,QAAME,WAAW,OACT,UAAa,yBACZF,YAAA,QAAME,WAAW,OAChB,UAAa,UACE,KACzBF,YAAA,QAAME,WAAW,OACT,UAAa,yBACZF,YAAA,QAAME,WAAW,OAChB,UAAa,aAAW,aACG,KACrCF,YAAA,QAAME,WAAW,OACT,UAAa,yBACZF,YAAA,QAAME,WAAW,OAChB,UAAa,QAAM,8GACyG,KACtIF,YAAA,QAAME,WAAW,OACT,UAAa,yBACZF,YAAA,QAAME,WAAW,OAChB,UAAa,QAAM,uCAG3BF,YAAA,SACE,UAAa,2BAAyB,glCA6B3C,IAAAH,UAAA3rB,OAAA2rB,IAAA3rB,OAAAiiB,aAAA0J,KAAA3rB,OAAAhH,UAAAwB,eAAAzC,KAAA4zB,EAAA,eAAA3rB,OAAAkF,eAAAymB,EAAA,cAAAzJ,cAAA,EAAA/jB,MAAA,CAAAiS,KAAA,aAAAxE,SAAA,0CAED+f,EAAWM,gBAAiB,G,qBC9H5B,IAAI2B,EAAc,EAAQ,QACtBzW,EAAS,EAAQ,QAEjBoB,EAAoB3E,SAAS5a,UAE7B2oE,EAAgB/zC,GAAe5tB,OAAO0C,yBAEtCk/D,EAASzqD,EAAOoB,EAAmB,QAEnCspD,EAASD,GAA0D,cAAhD,aAAuCxxD,KAC1Ds7B,EAAek2B,KAAYh0C,GAAgBA,GAAe+zC,EAAcppD,EAAmB,QAAQ2J,cAEvGtvB,EAAOC,QAAU,CACf+uE,OAAQA,EACRC,OAAQA,EACRn2B,aAAcA,I,mCCfhB,YACA,IAAI6R,EAA8B,iBAAVp7C,GAAsBA,GAAUA,EAAOnC,SAAWA,QAAUmC,EACrE,Q,2CCmBfvP,EAAOC,QAZP,SAA2By6B,EAAOnvB,EAAO8pD,GAIvC,IAHA,IAAI7jD,GAAS,EACTtD,EAAkB,MAATwsB,EAAgB,EAAIA,EAAMxsB,SAE9BsD,EAAQtD,GACf,GAAImnD,EAAW9pD,EAAOmvB,EAAMlpB,IAC1B,OAAO,EAGX,OAAO,I,qBClBT,MAAM1R,EAAM,EAAQ,OAAR,GACZA,EAAIC,SAAS,MAAS,OACtBC,EAAOC,QAAUH,G,qBCFjB,IAAI2zB,EAAS,EAAQ,QAErBzzB,EAAOC,QAAUwzB,G,qBCFjB,IAAIlkB,EAAS,EAAQ,QAGjB+C,EAAiBlF,OAAOkF,eAE5BtS,EAAOC,QAAU,SAAUE,EAAKoL,GAC9B,IACE+G,EAAe/C,EAAQpP,EAAK,CAAEoL,MAAOA,EAAO+jB,cAAc,EAAM/b,UAAU,IAC1E,MAAOjE,GACPC,EAAOpP,GAAOoL,EACd,OAAOA,I,qBCVX,MAAMzL,EAAM,EAAQ,OAAR,CAAsB,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,QAC9TA,EAAIC,SAAS,GAAM,IAAMA,SAAS,KAAO,MAAOA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OACjvCD,EAAIC,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAC7mBC,EAAOC,QAAUH,G,qBCHjB,IAGIsuD,EAHY,EAAQ,OAGLxE,CAAUx8C,OAAQ,UAErCpN,EAAOC,QAAUmuD,G,qBCLjB,MAAMtuD,EAAM,EAAQ,OAAR,CAAsB,GAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAO,IAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,OAAS,OAAS,OAAS,QAC7xCA,EAAIC,SAAS,IAAM,KAAMA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAChpCD,EAAIC,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MACjuCD,EAAIC,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,KAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OACvvCD,EAAIC,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OACl1CD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAA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,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MACvoCD,EAAIC,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAClpCD,EAAIC,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAClpCD,EAAIC,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,KAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAC3tCD,EAAIC,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MACvvCD,EAAIC,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OACvvCD,EAAIC,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OACvvCD,EAAIC,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OACt1CD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAC51CD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAC51CD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAC51CD,EAAIC,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAC51CD,EAAIC,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS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AO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QACnmJA,EAAIC,SAAS,GAAM,IAAMA,SAAS,IAAM,KAAMA,SAAS,IAAM,KAAMA,SAAS,IAAM,KAAMA,SAAS,IAAM,KAAMA,SAAS,IAAM,KAAMA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,IAAO,KAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MACtoCD,EAAIC,SAAS,KAAO,MAAOA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,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A,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAClyCD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAC51CD,EAAIC,SAAS,OAAS,QAASA,SAAS,OAAS,QAAS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AAU,QACV,IAAU,QACV,IAAU,QACV,KAAgB,SAChB,IAAU,OACV,IAAU,OACV,IAAU,OACV,IAAU,OACV,IAAU,SACV,IAAU,SACV,IAAU,aACV,IAAU,WACV,IAAU,MACV,IAAU,aACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,QACV,IAAU,MACV,IAAU,MACV,IAAU,OACV,IAAU,OACV,IAAU,QACV,IAAU,SACV,IAAU,SACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,OACV,IAAU,QACV,IAAU,OACV,IAAU,OACV,IAAU,QACV,IAAU,OACV,IAAU,MACV,IAAU,QACV,IAAU,OACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,UACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,SACV,IAAU,OACV,IAAU,OACV,KAAgB,QAChB,IAAU,QACV,IAAU,SACV,IAAU,QACV,IAAU,MACV,IAAU,KACV,IAAU,QACV,IAAU,KACV,IAAU,QACV,IAAU,QACV,IAAU,OACV,IAAU,SACV,IAAU,MACV,IAAK,OACL,IAAQ,KACR,IAAQ,MACR,IAAQ,QACR,IAAK,KACL,IAAU,MACV,KAAW,OACX,IAAK,SACL,IAAU,KACV,KAAW,MACX,IAAU,QACV,IAAK,KACL,IAAU,MACV,KAAW,OACX,IAAQ,MACR,IAAK,OACL,IAAQ,SACR,IAAU,QACV,IAAU,KACV,IAAU,SACV,IAAU,QACV,IAAU,QACV,IAAU,SACV,IAAU,SACV,IAAU,OACV,IAAU,OACV,IAAU,QACV,IAAU,QACV,IAAU,MACV,KAAgB,OAChB,IAAU,SACV,IAAU,SACV,IAAU,MACV,IAAU,OACV,IAAU,MACV,IAAU,OACV,IAAU,MACV,IAAU,KACV,IAAU,MACV,KAAgB,OAChB,IAAU,MACV,KAAgB,OAChB,IAAU,MACV,IAAU,MACV,IAAU,OACV,IAAU,OACV,IAAU,OACV,IAAU,SACV,IAAU,UACV,IAAU,QACV,IAAU,WACV,IAAU,WACV,IAAU,SACV,IAAU,SACV,IAAU,QACV,IAAU,QACV,IAAU,SACV,IAAU,QACV,IAAU,SACV,IAAU,MACV,IAAU,OACV,KAAgB,QAChB,IAAU,OACV,KAAgB,OAChB,IAAU,KACV,KAAgB,MAChB,IAAU,MACV,IAAU,KACV,IAAU,OACV,KAAgB,QAChB,IAAU,OACV,IAAU,QACV,IAAU,OACV,IAAU,QACV,IAAU,QACV,IAAU,KACV,IAAU,MACV,IAAU,MACV,IAAU,OACV,KAAgB,QAChB,IAAU,QACV,IAAU,SACV,IAAU,YACV,KAAgB,OAChB,IAAU,OACV,KAAgB,QAChB,IAAU,QACV,KAAgB,SAChB,IAAU,QACV,KAAgB,QAChB,IAAU,OACV,IAAU,QACV,IAAU,QACV,IAAU,SACV,IAAU,SACV,IAAU,OACV,IAAU,OACV,IAAU,SACV,IAAU,QACV,IAAU,OACV,IAAU,SACV,IAAU,QACV,IAAU,SACV,KAAgB,UAChB,IAAU,KACV,IAAU,MACV,KAAgB,OAChB,IAAU,KACV,IAAU,MACV,KAAgB,OAChB,IAAU,KACV,KAAgB,MAChB,IAAU,KACV,KAAgB,MAChB,KAAgB,OAChB,IAAU,MACV,IAAU,MACV,KAAgB,OAChB,IAAU,KACV,KAAgB,OAChB,KAAgB,MAChB,IAAU,KACV,KAAgB,OAChB,KAAgB,MAChB,IAAU,QACV,IAAU,OACV,IAAU,QACV,IAAU,OACV,IAAU,QACV,IAAU,KACV,IAAU,OACV,IAAU,KACV,IAAU,OACV,IAAU,KACV,IAAU,MACV,IAAU,KACV,IAAU,MACV,IAAU,QACV,IAAU,SACV,IAAU,QACV,IAAU,SACV,IAAU,QACV,IAAU,QACV,KAAgB,mBAChB,IAAU,MACV,IAAU,OACV,KAAgB,QAChB,IAAU,MACV,IAAU,OACV,KAAgB,QAChB,IAAU,OACV,IAAU,QACV,IAAU,OACV,IAAU,QACV,KAAgB,SAChB,IAAU,QACV,KAAgB,SAChB,IAAU,QACV,IAAU,SACV,IAAU,QACV,IAAU,QACV,KAAgB,kBAChB,IAAU,QACV,KAAgB,oBAChB,IAAU,SACV,IAAU,UACV,IAAU,SACV,IAAU,UACV,IAAU,QACV,KAAgB,SAChB,IAAU,QACV,KAAgB,SAChB,IAAU,QACV,IAAU,SACV,IAAU,SACV,IAAU,OACV,IAAU,OACV,IAAU,OACV,IAAU,OACV,IAAU,QACV,IAAU,QACV,IAAU,SACV,IAAU,SACV,IAAU,QACV,IAAU,QACV,IAAU,SACV,IAAU,QACV,IAAU,MACV,IAAU,MACV,IAAU,SACV,IAAU,QACV,IAAU,SACV,IAAU,QACV,IAAU,SACV,IAAU,SACV,IAAU,QACV,IAAU,SACV,IAAU,SACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,SACV,KAAgB,UAChB,IAAU,QACV,IAAU,SACV,KAAgB,UAChB,IAAU,SACV,IAAU,OACV,IAAU,QACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,UACV,IAAU,QACV,IAAU,QACV,IAAU,MACV,IAAU,OACV,IAAU,OACV,IAAU,OACV,IAAU,OACV,IAAU,OACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,MACV,IAAU,MACV,IAAU,MACV,IAAU,MACV,IAAU,OACV,IAAU,OACV,IAAU,QACV,IAAU,QACV,IAAU,KACV,KAAgB,MAChB,IAAU,KACV,KAAgB,MAChB,KAAgB,OAChB,IAAU,MACV,IAAU,MACV,KAAgB,OAChB,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,SACV,IAAU,QACV,IAAU,UACV,KAAgB,WAChB,IAAU,UACV,IAAU,UACV,IAAU,QACV,KAAgB,SAChB,IAAU,OACV,IAAU,OACV,IAAU,MACV,IAAU,UACV,IAAU,UACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,OACV,IAAU,WACV,IAAU,WACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,QACV,IAAU,QACV,IAAU,SACV,IAAU,WACV,IAAU,SACV,IAAU,QACV,IAAU,SACV,IAAU,UACV,IAAU,SACV,IAAU,SACV,IAAU,OACV,IAAU,OACV,IAAU,WACV,IAAU,kBACV,IAAU,mBACV,IAAU,YACV,IAAU,aACV,IAAU,WACV,IAAU,WACV,IAAU,QACV,IAAU,OACV,IAAU,OACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,OACV,IAAU,OACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,MACV,IAAU,OACV,IAAU,uBACV,IAAU,OACV,IAAU,SACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,OACV,IAAU,QACV,IAAU,OACV,IAAU,QACV,IAAU,QACV,IAAU,OACV,IAAU,QACV,IAAU,OACV,IAAU,MACV,IAAU,MACV,IAAU,SACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,mBACV,IAAU,oBACV,IAAU,QACV,IAAU,OACV,IAAU,QACV,IAAU,SACV,IAAU,OACV,IAAU,SACV,IAAU,QACV,IAAU,SACV,IAAU,QACV,IAAU,OACV,IAAU,QACV,IAAU,QACV,IAAU,OACV,IAAU,OACV,IAAU,oBACV,IAAU,WACV,IAAU,UACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,OACV,IAAU,WACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,MACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,WACV,IAAU,aACV,IAAU,eACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,UACV,IAAU,UACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,OACV,IAAU,OACV,IAAU,SACV,IAAU,QACV,KAAgB,SAChB,IAAU,UACV,IAAU,OACV,IAAU,OACV,IAAU,UACV,IAAU,SACV,IAAU,UACV,IAAU,UACV,IAAU,SACV,IAAU,UACV,IAAU,WACV,IAAU,WACV,IAAU,WACV,IAAU,kBACV,IAAU,oBACV,IAAU,sBACV,IAAU,mBACV,IAAU,gBACV,IAAU,iBACV,IAAU,mBACV,IAAU,qBACV,IAAU,oBACV,IAAU,qBACV,IAAU,kBACV,IAAU,oBACV,IAAU,gBACV,IAAU,iBACV,IAAU,mBACV,IAAU,qBACV,IAAU,oBACV,IAAU,qBACV,IAAU,kBACV,IAAU,oBACV,IAAU,OACV,IAAU,OACV,IAAU,OACV,IAAU,OACV,IAAU,UACV,IAAU,UACV,IAAU,UACV,IAAU,UACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,QACV,IAAU,QACV,IAAU,eACV,IAAU,QACV,IAAU,UACV,IAAU,UACV,IAAU,UACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,UACV,IAAU,UACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,UACV,IAAU,SACV,IAAU,WACV,IAAU,OACV,IAAU,QACV,IAAU,UACV,IAAU,UACV,IAAU,WACV,IAAU,WACV,IAAU,WACV,IAAU,WACV,IAAU,WACV,IAAU,WACV,IAAU,WACV,IAAU,WACV,IAAU,UACV,IAAU,UACV,IAAU,UACV,IAAU,WACV,IAAU,WACV,IAAU,QACV,IAAU,OACV,IAAU,OACV,IAAU,QACV,IAAU,UACV,IAAU,SACV,IAAU,QACV,IAAU,QACV,IAAU,MACV,IAAU,MACV,IAAU,UACV,IAAU,OACV,IAAU,OACV,IAAU,QACV,IAAU,SACV,IAAU,QACV,IAAU,WACV,IAAU,kBACV,KAAgB,qBAChB,IAAU,mBACV,KAAgB,sBAChB,IAAU,SACV,IAAU,WACV,IAAU,UACV,IAAU,SACV,IAAU,WACV,IAAU,WACV,IAAU,OACV,IAAU,cACV,IAAU,OACV,IAAU,QACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,WACV,IAAU,WACV,IAAU,QACV,IAAU,WACV,IAAU,WACV,IAAU,UACV,IAAU,WACV,IAAU,UACV,IAAU,WACV,IAAU,UACV,IAAU,WACV,IAAU,UACV,IAAU,SACV,IAAU,UACV,IAAU,UACV,IAAU,SACV,IAAU,UACV,IAAU,SACV,IAAU,SACV,IAAU,QACV,IAAU,SACV,IAAU,WACV,IAAU,SACV,IAAU,UACV,IAAU,UACV,IAAU,WACV,IAAU,SACV,IAAU,OACV,IAAU,UACV,IAAU,WACV,IAAU,UACV,IAAU,QACV,IAAU,QACV,IAAU,SACV,IAAU,OACV,IAAU,OACV,IAAU,SACV,IAAU,QACV,IAAU,SACV,IAAU,SACV,IAAU,WACV,IAAU,WACV,IAAU,SACV,IAAU,SACV,IAAU,QACV,IAAU,QACV,IAAU,UACV,IAAU,MACV,IAAU,KACV,IAAU,SACV,IAAU,OACV,IAAU,UACV,IAAU,WACV,IAAU,OACV,IAAU,MACV,IAAU,OACV,IAAU,MACV,IAAU,SACV,IAAU,QACV,IAAU,SACV,IAAU,UACV,KAAgB,WAChB,IAAU,SACV,IAAU,SACV,IAAU,MACV,KAAgB,OAChB,IAAU,QACV,IAAU,QACV,IAAU,OACV,IAAU,QACV,IAAU,UACV,IAAU,QACV,IAAU,QACV,IAAU,UACV,IAAU,UACV,IAAU,MACV,KAAgB,OAChB,IAAU,MACV,KAAgB,OAChB,IAAU,SACV,IAAU,SACV,IAAU,UACV,IAAU,UACV,IAAU,WACV,IAAU,WACV,IAAU,MACV,IAAU,MACV,IAAU,MACV,IAAU,MACV,IAAU,OACV,IAAU,OACV,IAAU,MACV,IAAU,MACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,QACV,IAAU,MACV,IAAU,MACV,IAAU,SACV,IAAU,SACV,IAAU,MACV,IAAU,MACV,IAAU,SACV,IAAU,SACV,IAAU,KACV,IAAU,KACV,IAAU,OACV,IAAU,OACV,IAAU,QACV,IAAU,QACV,IAAU,WACV,KAAgB,oBAChB,IAAU,iBACV,KAAgB,0BAChB,IAAU,MACV,IAAU,MACV,IAAU,OACV,IAAU,OACV,IAAU,QACV,IAAU,QACV,IAAU,MACV,IAAU,MACV,IAAU,OACV,KAAgB,QAChB,IAAU,OACV,KAAgB,QAChB,IAAU,QACV,IAAU,MACV,KAAgB,OAChB,IAAU,MACV,KAAgB,OAChB,IAAU,MACV,IAAU,MACV,IAAU,OACV,IAAU,OACV,IAAU,OACV,IAAU,OACV,IAAU,QACV,IAAU,QACV,IAAU,KACV,IAAU,KACV,IAAU,SACV,IAAU,SACV,IAAU,UACV,IAAU,UACV,IAAU,UACV,IAAU,UACV,IAAU,UACV,IAAU,UACV,IAAU,OACV,KAAgB,QAChB,IAAU,OACV,KAAgB,QAChB,IAAU,SACV,IAAU,SACV,KAAgB,SAChB,IAAU,QACV,KAAgB,SAChB,IAAU,QACV,IAAU,OACV,IAAU,OACV,IAAU,QACV,IAAU,QACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,UACV,IAAU,UACV,IAAU,QACV,IAAU,UACV,IAAU,OACV,IAAU,QACV,IAAU,SACV,IAAU,OACV,IAAU,OACV,IAAU,QACV,IAAU,OACV,IAAU,MACV,IAAU,OACV,IAAU,QACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,QACV,IAAU,SACV,IAAU,QACV,KAAgB,SAChB,IAAU,OACV,IAAU,QACV,IAAU,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,IAAU,OACV,IAAU,MACV,IAAU,MACV,IAAU,OACV,IAAU,OACV,IAAU,OACV,IAAU,OACV,IAAU,OACV,IAAU,OACV,IAAU,QACV,IAAU,QACV,IAAU,OACV,IAAU,OACV,IAAU,MACV,IAAU,MACV,IAAU,OACV,IAAU,OACV,IAAU,MACV,IAAU,MACV,IAAU,QACV,IAAU,QACV,IAAU,OACV,IAAU,OACV,IAAU,MACV,IAAU,MACV,IAAU,SACV,IAAU,SACV,IAAU,MACV,IAAU,MACV,IAAU,OACV,IAAU,OACV,IAAU,MACV,IAAU,MACV,IAAU,OACV,IAAU,OACV,IAAU,MACV,IAAU,MACV,IAAU,MACV,IAAU,MACV,IAAU,OACV,IAAU,OACV,IAAU,MACV,IAAU,MACV,IAAU,MACV,IAAU,MACV,IAAU,MACV,IAAU,MACV,IAAU,MACV,IAAU,MACV,IAAU,MACV,IAAU,MACV,IAAU,QACV,IAAU,QACV,IAAU,MACV,IAAU,MACV,IAAU,QACV,IAAU,QACV,IAAU,MACV,IAAU,MACV,IAAU,OACV,IAAU,OACV,IAAU,OACV,IAAU,OACV,IAAU,OACV,IAAU,OACV,IAAU,OACV,IAAU,OACV,IAAU,OACV,IAAU,OACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,SACV,IAAU,MACV,IAAU,MACV,IAAU,SACV,IAAU,SACV,IAAU,MACV,IAAU,MACV,IAAU,OACV,IAAU,OACV,IAAU,OACV,IAAU,OACV,IAAU,QACV,IAAU,OACV,IAAU,QACV,IAAU,UAERC,EAAc,YACdC,EAAY,CACd,IAAK,SACL,IAAK,QACLF,IAAM,SACN,IAAK,OAKL,IAAK,OAKL,IAAK,UAEHG,EAAqB,kCACrBC,EAA2B,qPAC3BC,EAAc,i8gBACdC,EAAY,CACd,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,GAAM,IACN,IAAO,IACP,IAAO,KACP,MAAS,IACT,MAAS,IACT,MAAS,IACT,IAAO,IACP,IAAO,IACP,MAAS,IACT,MAAS,IACT,GAAM,IACN,IAAO,KACP,IAAO,KACP,OAAU,IACV,OAAU,IACV,QAA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,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAClpCD,EAAIC,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAClpCD,EAAIC,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,KAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MACjvCD,EAAIC,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MACvvCD,EAAIC,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OACvvCD,EAAIC,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OACvvCD,EAAIC,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,KAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OACpzCD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAC51CD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAC51CD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAC51CD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAC51CD,EAAIC,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QA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,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ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MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAClpCD,EAAIC,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MACzpCD,EAAIC,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,KAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MACvvCD,EAAIC,SAAS,KAAQ,MAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OACvvCD,EAAIC,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAClyCD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAC51CD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAC51CD,EAAIC,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QACxhCC,EAAOC,QAAUH,G,qBCTjB,MAAMA,EAAM,EAAQ,OAAR,GACZA,EAAIC,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,MAAQ,OAC1FC,EAAOC,QAAUH,G,qBCFjB,MAAMA,EAAM,EAAQ,OAAR,GACZA,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OACjDC,EAAOC,QAAUH,G,qBCFjB,MAAMA,EAAM,EAAQ,OAAR,CAAsB,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAA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O,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAA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AAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,IAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAO,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,M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SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OACtwCD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAC51CD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAC31BC,EAAOC,QAAUH,G,qBCNjB,IAAI0P,EAAa,EAAQ,QACrB0uB,EAAuB,EAAQ,QAC/B6B,EAAc,EAAQ,QACtB+pB,EAAuB,EAAQ,QAEnC9pD,EAAOC,QAAU,SAAU2Q,EAAGzQ,EAAKoL,EAAOd,GACnCA,IAASA,EAAU,IACxB,IAAIu9H,EAASv9H,EAAQ2F,WACjBoN,OAAwB1b,IAAjB2I,EAAQ+S,KAAqB/S,EAAQ+S,KAAOrd,EAEvD,GADIqP,EAAWjE,IAAQw0B,EAAYx0B,EAAOiS,EAAM/S,GAC5CA,EAAQ8E,OACNy4H,EAAQp3H,EAAEzQ,GAAOoL,EAChBu+C,EAAqB3pD,EAAKoL,OAC1B,CACL,IACOd,EAAQw9H,OACJr3H,EAAEzQ,KAAM6nI,GAAS,UADEp3H,EAAEzQ,GAE9B,MAAOmP,IACL04H,EAAQp3H,EAAEzQ,GAAOoL,EAChB2yB,EAAqBjuB,EAAEW,EAAGzQ,EAAK,CAClCoL,MAAOA,EACP6E,YAAY,EACZkf,cAAe7kB,EAAQy9H,gBACvB30H,UAAW9I,EAAQ09H,cAErB,OAAOv3H,I,qBCzBX,MAAM9Q,EAAM,EAAQ,OAAR,GACZA,EAAIC,SAAS,GAAM,IAAMA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAO,MAAOA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAQ,OAAQA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAC9uCD,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,MAAS,OAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QAASA,SAAS,OAAS,QACpSC,EAAOC,QAAUH,G,qBCHjB,MAAMA,EAAM,EAAQ,OAAR,GACZA,EAAIC,SAAS,MAAS,OACtBC,EAAOC,QAAUH,G,qBCFjB,MAAMA,EAAM,EAAQ,OAAR,GACZA,EAAIC,SAAS,KAAO,MAAOA,SAAS,MAAQ,OAAQA,SAAS,MAAS,OACtEC,EAAOC,QAAUH,G,+NCIJ64B,EAAe,QAAG,IAAAA,UAAAvrB,OAAAurB,IAAAvrB,OAAAiiB,aAAAsJ,KAAAvrB,OAAAhH,UAAAwB,eAAAzC,KAAAwzB,EAAA,eAAAvrB,OAAAkF,eAAAqmB,EAAA,cAAArJ,cAAA,EAAA/jB,MAAA,CAAAiS,KAAA,eAAAxE,SAAA,wCAC/B,MAAM4f,EAAc,CAClBD,gBAEIE,EAAYC,IACH,SAASC,EAAUx1B,GAG/B,IAHgC,WACjCusB,GAEDvsB,EADImB,EAAKs0B,YAAAz1B,EAAA01B,GAER,OAAOC,YAACL,EAAS7O,YAAA,GAAK4O,EAAiBl0B,EAAK,CAAEorB,WAAYA,EAAYqJ,QAAQ,cAG5ED,YAAA,uDAAkDA,YAAA,KAAGE,WAAW,IAC5D,KAAQ,6CAA2C,gBAE/C,6BACVF,YAAA,KAAGE,WAAW,IACR,KAAQ,iDAA+C,uBAC3B,KAChCF,YAAA,8DAAyDA,YAAA,KAAGE,WAAW,IACnE,KAAQ,gCACPF,YAAA,cAAYE,WAAW,KAAG,QAAyB,KACxDF,YAAA,OACE,UAAa,yCACb,gBAAiB,QAChBA,YAAA,QAAME,WAAW,MAChB,UAAa,yBACZF,YAAA,QAAME,WAAW,OAChB,UAAa,yBACZF,YAAA,QAAME,WAAW,OAChB,UAAa,aAAW,mBACS,KAC3CF,YAAA,QAAME,WAAW,OACT,UAAa,yBACZF,YAAA,QAAME,WAAW,OAChB,UAAa,QAAM,gBACW,KACxCF,YAAA,QAAME,WAAW,OACT,UAAa,yBACZF,YAAA,QAAME,WAAW,OAChB,UAAa,UACE,KACzBF,YAAA,QAAME,WAAW,OACT,UAAa,yBACZF,YAAA,QAAME,WAAW,OAChB,UAAa,aAAW,iCACuB,KACzDF,YAAA,QAAME,WAAW,OACT,UAAa,yBACZF,YAAA,QAAME,WAAW,OAChB,UAAa,QAAM,sBAG3BF,YAAA,SACE,UAAa,2BAAyB,glCA6B3C,IAAAH,UAAA3rB,OAAA2rB,IAAA3rB,OAAAiiB,aAAA0J,KAAA3rB,OAAAhH,UAAAwB,eAAAzC,KAAA4zB,EAAA,eAAA3rB,OAAAkF,eAAAymB,EAAA,cAAAzJ,cAAA,EAAA/jB,MAAA,CAAAiS,KAAA,aAAAxE,SAAA,wCAED+f,EAAWM,gBAAiB,G,mBC3F5Br5B,EAAOC,QAAU,kkD,qBCAjB,IAAIsP,EAAS,EAAQ,QACjBpO,EAAW,EAAQ,QAEnBosC,EAAWh+B,EAAOg+B,SAElByhC,EAAS7tE,EAASosC,IAAapsC,EAASosC,EAAS5oC,eAErD3E,EAAOC,QAAU,SAAUa,GACzB,OAAOkuE,EAASzhC,EAAS5oC,cAAc7D,GAAM,K,qBCR/C,IAAIsnI,EAAY,EAAQ,QACpBp3H,EAAY,EAAQ,QACpBC,EAAW,EAAQ,QAGnBo3H,EAAYp3H,GAAYA,EAASwuD,MAmBjCA,EAAQ4oE,EAAYr3H,EAAUq3H,GAAaD,EAE/CpoI,EAAOC,QAAUw/D,G,qBC1BjB,MAAM3/D,EAAM,EAAQ,OAAR,GACZA,EAAIC,SAAS,MAAS,OAASA,SAAS,MAAS,OACjDC,EAAOC,QAAUH,G,qBCFjB,IAAIi7F,EAAI,EAAQ,QACZj1E,EAAS,EAAQ,QAKrBi1E,EAAE,CAAE/yF,OAAQ,SAAUsiD,MAAM,EAAM7qC,MAAO,EAAGie,OAAQtwB,OAAO0Y,SAAWA,GAAU,CAC9EA,OAAQA,K,qBCPV,MAAMhmB,EAAM,EAAQ,OAAR,GACZA,EAAIC,SAAS,MAAS,OACtBC,EAAOC,QAAUH,G,qBCFjB,MAAMA,EAAM,EAAQ,OAAR,GACZA,EAAIC,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAC9CC,EAAOC,QAAUH,G,qBCFjB,MAAMA,EAAM,EAAQ,OAAR,GACZA,EAAIC,SAAS,KAAO,MAAOA,SAAS,KAAO,MAC3CC,EAAOC,QAAUH,G,qBCFjB,MAAMA,EAAM,EAAQ,OAAR,CAAsB,MAClCA,EAAIC,SAAS,KAAQ,MAAQA,SAAS,MAAQ,OAAQA,SAAS,OAAS,QACxEC,EAAOC,QAAUH,G,mBCkBjBE,EAAOC,QAJP,SAAkBsL,GAChB,OAAOA,I,qBCjBT,IAAIgE,EAAS,EAAQ,QACjBC,EAAa,EAAQ,QAErBsC,EAAUvC,EAAOuC,QAErB9R,EAAOC,QAAUuP,EAAWsC,IAAY,cAAcnB,KAAKse,OAAOnd,K,qBCLlE,IAAInG,EAAS,EAAQ,QACjB6C,EAAW,EAAQ,QACnBE,EAAU,EAAQ,QAClBC,EAAW,EAAQ,QAMnB26C,EAAc39C,EAASA,EAAOvF,eAAYtE,EAC1CwmI,EAAiBh/E,EAAcA,EAAYz6C,cAAW/M,EA0B1D9B,EAAOC,QAhBP,SAASymF,EAAan7E,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAImD,EAAQnD,GAEV,OAAOiD,EAASjD,EAAOm7E,GAAgB,GAEzC,GAAI/3E,EAASpD,GACX,OAAO+8H,EAAiBA,EAAenjI,KAAKoG,GAAS,GAEvD,IAAI/K,EAAU+K,EAAQ,GACtB,MAAkB,KAAV/K,GAAkB,EAAI+K,IA3BjB,IA2BwC,KAAO/K,I,qBCjC9D,MAAMV,EAAM,EAAQ,OAAR,CAAsB,KAAO,MACzCA,EAAIC,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAAQA,SAAS,KAAQ,MAChGC,EAAOC,QAAUH,I","file":"app-432e6e5ddac89ddf1392.js","sourcesContent":["const set = require('regenerate')(0x2D, 0x58A, 0x5BE, 0x1400, 0x1806, 0x2053, 0x207B, 0x208B, 0x2212, 0x2E17, 0x2E1A, 0x2E40, 0x2E5D, 0x301C, 0x3030, 0x30A0, 0xFE58, 0xFE63, 0xFF0D, 0x10EAD);\nset.addRange(0x2010, 0x2015).addRange(0x2E3A, 0x2E3B).addRange(0xFE31, 0xFE32);\nmodule.exports = set;","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n var result = toIntegerOrInfinity(it);\n if (result < 0) throw $RangeError(\"The argument can't be less than 0\");\n return result;\n};\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","const set = require('regenerate')();\nset.addRange(0x112B0, 0x112EA).addRange(0x112F0, 0x112F9);\nmodule.exports = set;","const set = require('regenerate')(0xB9C, 0xBD0, 0xBD7, 0x1CDA, 0xA8F3, 0x11301, 0x11303, 0x11FFF);\nset.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0xB82, 0xB83).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xBBE, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCD).addRange(0xBE6, 0xBFA).addRange(0x1133B, 0x1133C).addRange(0x11FC0, 0x11FF1);\nmodule.exports = set;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.withPrefix = withPrefix;\nexports.withAssetPrefix = withAssetPrefix;\nexports.navigateTo = exports.replace = exports.push = exports.navigate = exports.default = void 0;\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _router = require(\"@reach/router\");\n\nvar _utils = require(\"@reach/router/lib/utils\");\n\nvar _parsePath = require(\"./parse-path\");\n\nexports.parsePath = _parsePath.parsePath;\n\nvar isAbsolutePath = function isAbsolutePath(path) {\n return path === null || path === void 0 ? void 0 : path.startsWith(\"/\");\n};\n\nfunction withPrefix(path, prefix) {\n var _ref, _prefix;\n\n if (prefix === void 0) {\n prefix = getGlobalBasePrefix();\n }\n\n if (!isLocalLink(path)) {\n return path;\n }\n\n if (path.startsWith(\"./\") || path.startsWith(\"../\")) {\n return path;\n }\n\n var base = (_ref = (_prefix = prefix) !== null && _prefix !== void 0 ? _prefix : getGlobalPathPrefix()) !== null && _ref !== void 0 ? _ref : \"/\";\n return \"\" + ((base === null || base === void 0 ? void 0 : base.endsWith(\"/\")) ? base.slice(0, -1) : base) + (path.startsWith(\"/\") ? path : \"/\" + path);\n} // These global values are wrapped in typeof clauses to ensure the values exist.\n// This is especially problematic in unit testing of this component.\n\n\nvar getGlobalPathPrefix = function getGlobalPathPrefix() {\n return process.env.NODE_ENV !== \"production\" ? typeof __PATH_PREFIX__ !== \"undefined\" ? __PATH_PREFIX__ : undefined : __PATH_PREFIX__;\n};\n\nvar getGlobalBasePrefix = function getGlobalBasePrefix() {\n return process.env.NODE_ENV !== \"production\" ? typeof __BASE_PATH__ !== \"undefined\" ? __BASE_PATH__ : undefined : __BASE_PATH__;\n};\n\nvar isLocalLink = function isLocalLink(path) {\n return path && !path.startsWith(\"http://\") && !path.startsWith(\"https://\") && !path.startsWith(\"//\");\n};\n\nfunction withAssetPrefix(path) {\n return withPrefix(path, getGlobalPathPrefix());\n}\n\nfunction absolutify(path, current) {\n // If it's already absolute, return as-is\n if (isAbsolutePath(path)) {\n return path;\n }\n\n return (0, _utils.resolve)(path, current);\n}\n\nvar rewriteLinkPath = function rewriteLinkPath(path, relativeTo) {\n if (typeof path === \"number\") {\n return path;\n }\n\n if (!isLocalLink(path)) {\n return path;\n }\n\n return isAbsolutePath(path) ? withPrefix(path) : absolutify(path, relativeTo);\n};\n\nvar NavLinkPropTypes = {\n activeClassName: _propTypes.default.string,\n activeStyle: _propTypes.default.object,\n partiallyActive: _propTypes.default.bool\n}; // Set up IntersectionObserver\n\nvar createIntersectionObserver = function createIntersectionObserver(el, cb) {\n var io = new window.IntersectionObserver(function (entries) {\n entries.forEach(function (entry) {\n if (el === entry.target) {\n // Check if element is within viewport, remove listener, destroy observer, and run link callback.\n // MSEdge doesn't currently support isIntersecting, so also test for an intersectionRatio > 0\n if (entry.isIntersecting || entry.intersectionRatio > 0) {\n io.unobserve(el);\n io.disconnect();\n cb();\n }\n }\n });\n }); // Add element to the observer\n\n io.observe(el);\n return {\n instance: io,\n el: el\n };\n};\n\nfunction GatsbyLinkLocationWrapper(props) {\n return /*#__PURE__*/_react.default.createElement(_router.Location, null, function (_ref2) {\n var location = _ref2.location;\n return /*#__PURE__*/_react.default.createElement(GatsbyLink, (0, _extends2.default)({}, props, {\n _location: location\n }));\n });\n}\n\nvar GatsbyLink = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(GatsbyLink, _React$Component);\n\n function GatsbyLink(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this; // Default to no support for IntersectionObserver\n\n _this.defaultGetProps = function (_ref3) {\n var isPartiallyCurrent = _ref3.isPartiallyCurrent,\n isCurrent = _ref3.isCurrent;\n\n if (_this.props.partiallyActive ? isPartiallyCurrent : isCurrent) {\n return {\n className: [_this.props.className, _this.props.activeClassName].filter(Boolean).join(\" \"),\n style: (0, _extends2.default)({}, _this.props.style, _this.props.activeStyle)\n };\n }\n\n return null;\n };\n\n var IOSupported = false;\n\n if (typeof window !== \"undefined\" && window.IntersectionObserver) {\n IOSupported = true;\n }\n\n _this.state = {\n IOSupported: IOSupported\n };\n _this.handleRef = _this.handleRef.bind((0, _assertThisInitialized2.default)(_this));\n return _this;\n }\n\n var _proto = GatsbyLink.prototype;\n\n _proto._prefetch = function _prefetch() {\n var currentPath = window.location.pathname; // reach router should have the correct state\n\n if (this.props._location && this.props._location.pathname) {\n currentPath = this.props._location.pathname;\n }\n\n var rewrittenPath = rewriteLinkPath(this.props.to, currentPath);\n var newPathName = (0, _parsePath.parsePath)(rewrittenPath).pathname; // Prefech is used to speed up next navigations. When you use it on the current navigation,\n // there could be a race-condition where Chrome uses the stale data instead of waiting for the network to complete\n\n if (currentPath !== newPathName) {\n ___loader.enqueue(newPathName);\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // Preserve non IO functionality if no support\n if (this.props.to !== prevProps.to && !this.state.IOSupported) {\n this._prefetch();\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n // Preserve non IO functionality if no support\n if (!this.state.IOSupported) {\n this._prefetch();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (!this.io) {\n return;\n }\n\n var _this$io = this.io,\n instance = _this$io.instance,\n el = _this$io.el;\n instance.unobserve(el);\n instance.disconnect();\n };\n\n _proto.handleRef = function handleRef(ref) {\n var _this2 = this;\n\n if (this.props.innerRef && this.props.innerRef.hasOwnProperty(\"current\")) {\n this.props.innerRef.current = ref;\n } else if (this.props.innerRef) {\n this.props.innerRef(ref);\n }\n\n if (this.state.IOSupported && ref) {\n // If IO supported and element reference found, setup Observer functionality\n this.io = createIntersectionObserver(ref, function () {\n _this2._prefetch();\n });\n }\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n var _this$props = this.props,\n to = _this$props.to,\n _this$props$getProps = _this$props.getProps,\n getProps = _this$props$getProps === void 0 ? this.defaultGetProps : _this$props$getProps,\n _onClick = _this$props.onClick,\n _onMouseEnter = _this$props.onMouseEnter,\n $activeClassName = _this$props.activeClassName,\n $activeStyle = _this$props.activeStyle,\n $innerRef = _this$props.innerRef,\n partiallyActive = _this$props.partiallyActive,\n state = _this$props.state,\n replace = _this$props.replace,\n _location = _this$props._location,\n rest = (0, _objectWithoutPropertiesLoose2.default)(_this$props, [\"to\", \"getProps\", \"onClick\", \"onMouseEnter\", \"activeClassName\", \"activeStyle\", \"innerRef\", \"partiallyActive\", \"state\", \"replace\", \"_location\"]);\n\n if (process.env.NODE_ENV !== \"production\" && !isLocalLink(to)) {\n console.warn(\"External link \" + to + \" was detected in a Link component. Use the Link component only for internal links. See: https://gatsby.dev/internal-links\");\n }\n\n var prefixedTo = rewriteLinkPath(to, _location.pathname);\n\n if (!isLocalLink(prefixedTo)) {\n return /*#__PURE__*/_react.default.createElement(\"a\", (0, _extends2.default)({\n href: prefixedTo\n }, rest));\n }\n\n return /*#__PURE__*/_react.default.createElement(_router.Link, (0, _extends2.default)({\n to: prefixedTo,\n state: state,\n getProps: getProps,\n innerRef: this.handleRef,\n onMouseEnter: function onMouseEnter(e) {\n if (_onMouseEnter) {\n _onMouseEnter(e);\n }\n\n ___loader.hovering((0, _parsePath.parsePath)(prefixedTo).pathname);\n },\n onClick: function onClick(e) {\n if (_onClick) {\n _onClick(e);\n }\n\n if (e.button === 0 && // ignore right clicks\n !_this3.props.target && // let browser handle \"target=_blank\"\n !e.defaultPrevented && // onClick prevented default\n !e.metaKey && // ignore clicks with modifier keys...\n !e.altKey && !e.ctrlKey && !e.shiftKey) {\n e.preventDefault();\n var shouldReplace = replace;\n\n var isCurrent = encodeURI(prefixedTo) === _location.pathname;\n\n if (typeof replace !== \"boolean\" && isCurrent) {\n shouldReplace = true;\n } // Make sure the necessary scripts and data are\n // loaded before continuing.\n\n\n window.___navigate(prefixedTo, {\n state: state,\n replace: shouldReplace\n });\n }\n\n return true;\n }\n }, rest));\n };\n\n return GatsbyLink;\n}(_react.default.Component);\n\nGatsbyLink.propTypes = (0, _extends2.default)({}, NavLinkPropTypes, {\n onClick: _propTypes.default.func,\n to: _propTypes.default.string.isRequired,\n replace: _propTypes.default.bool,\n state: _propTypes.default.object\n});\n\nvar showDeprecationWarning = function showDeprecationWarning(functionName, altFunctionName, version) {\n return console.warn(\"The \\\"\" + functionName + \"\\\" method is now deprecated and will be removed in Gatsby v\" + version + \". Please use \\\"\" + altFunctionName + \"\\\" instead.\");\n};\n\nvar _default = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {\n return /*#__PURE__*/_react.default.createElement(GatsbyLinkLocationWrapper, (0, _extends2.default)({\n innerRef: ref\n }, props));\n});\n\nexports.default = _default;\n\nvar navigate = function navigate(to, options) {\n window.___navigate(rewriteLinkPath(to, window.location.pathname), options);\n};\n\nexports.navigate = navigate;\n\nvar push = function push(to) {\n showDeprecationWarning(\"push\", \"navigate\", 3);\n\n window.___push(rewriteLinkPath(to, window.location.pathname));\n};\n\nexports.push = push;\n\nvar replace = function replace(to) {\n showDeprecationWarning(\"replace\", \"navigate\", 3);\n\n window.___replace(rewriteLinkPath(to, window.location.pathname));\n}; // TODO: Remove navigateTo for Gatsby v3\n\n\nexports.replace = replace;\n\nvar navigateTo = function navigateTo(to) {\n showDeprecationWarning(\"navigateTo\", \"navigate\", 3);\n return push(to);\n};\n\nexports.navigateTo = navigateTo;","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","const set = require('regenerate')(0x261D, 0x26F9, 0x1F385, 0x1F3C7, 0x1F47C, 0x1F48F, 0x1F491, 0x1F4AA, 0x1F57A, 0x1F590, 0x1F6A3, 0x1F6C0, 0x1F6CC, 0x1F90C, 0x1F90F, 0x1F926, 0x1F977, 0x1F9BB);\nset.addRange(0x270A, 0x270D).addRange(0x1F3C2, 0x1F3C4).addRange(0x1F3CA, 0x1F3CC).addRange(0x1F442, 0x1F443).addRange(0x1F446, 0x1F450).addRange(0x1F466, 0x1F478).addRange(0x1F481, 0x1F483).addRange(0x1F485, 0x1F487).addRange(0x1F574, 0x1F575).addRange(0x1F595, 0x1F596).addRange(0x1F645, 0x1F647).addRange(0x1F64B, 0x1F64F).addRange(0x1F6B4, 0x1F6B6).addRange(0x1F918, 0x1F91F).addRange(0x1F930, 0x1F939).addRange(0x1F93C, 0x1F93E).addRange(0x1F9B5, 0x1F9B6).addRange(0x1F9B8, 0x1F9B9).addRange(0x1F9CD, 0x1F9CF).addRange(0x1F9D1, 0x1F9DD).addRange(0x1FAC3, 0x1FAC5).addRange(0x1FAF0, 0x1FAF6);\nmodule.exports = set;","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var convert = require('./convert'),\n func = convert('throttle', require('../throttle'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","const set = require('regenerate')();\nset.addRange(0x964, 0x965).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D8E).addRange(0x11D90, 0x11D91).addRange(0x11D93, 0x11D98).addRange(0x11DA0, 0x11DA9);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x10D00, 0x10D27).addRange(0x10D30, 0x10D39);\nmodule.exports = set;","const set = require('regenerate')(0xAA, 0xB5, 0xBA, 0x2EC, 0x2EE, 0x37F, 0x386, 0x38C, 0x559, 0x6D5, 0x6FF, 0x710, 0x7B1, 0x7FA, 0x81A, 0x824, 0x828, 0x93D, 0x950, 0x9B2, 0x9BD, 0x9CE, 0x9FC, 0xA5E, 0xABD, 0xAD0, 0xAF9, 0xB3D, 0xB71, 0xB83, 0xB9C, 0xBD0, 0xC3D, 0xC5D, 0xC80, 0xCBD, 0xD3D, 0xD4E, 0xDBD, 0xE84, 0xEA5, 0xEBD, 0xEC6, 0xF00, 0x103F, 0x1061, 0x108E, 0x10C7, 0x10CD, 0x1258, 0x12C0, 0x17D7, 0x17DC, 0x18AA, 0x1AA7, 0x1CFA, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2071, 0x207F, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x214E, 0x2D27, 0x2D2D, 0x2D6F, 0xA7D3, 0xA8FB, 0xA9CF, 0xAA7A, 0xAAB1, 0xAAC0, 0xAAC2, 0xFB1D, 0xFB3E, 0x10808, 0x1083C, 0x10A00, 0x10F27, 0x11075, 0x11144, 0x11147, 0x11176, 0x111DA, 0x111DC, 0x11288, 0x1133D, 0x11350, 0x114C7, 0x11644, 0x116B8, 0x11909, 0x1193F, 0x11941, 0x119E1, 0x119E3, 0x11A00, 0x11A3A, 0x11A50, 0x11A9D, 0x11C40, 0x11D46, 0x11D98, 0x11FB0, 0x16F50, 0x16FE3, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1E14E, 0x1E94B, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);\nset.addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x2C1).addRange(0x2C6, 0x2D1).addRange(0x2E0, 0x2E4).addRange(0x370, 0x374).addRange(0x376, 0x377).addRange(0x37A, 0x37D).addRange(0x388, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3F5).addRange(0x3F7, 0x481).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x560, 0x588).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F2).addRange(0x620, 0x64A).addRange(0x66E, 0x66F).addRange(0x671, 0x6D3).addRange(0x6E5, 0x6E6).addRange(0x6EE, 0x6EF).addRange(0x6FA, 0x6FC).addRange(0x712, 0x72F).addRange(0x74D, 0x7A5).addRange(0x7CA, 0x7EA).addRange(0x7F4, 0x7F5).addRange(0x800, 0x815).addRange(0x840, 0x858).addRange(0x860, 0x86A).addRange(0x870, 0x887).addRange(0x889, 0x88E).addRange(0x8A0, 0x8C9).addRange(0x904, 0x939).addRange(0x958, 0x961).addRange(0x971, 0x980).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E1).addRange(0x9F0, 0x9F1).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33);\nset.addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA59, 0xA5C).addRange(0xA72, 0xA74).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xAE0, 0xAE1).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB61).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xC05, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC61).addRange(0xC85, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE1).addRange(0xCF1, 0xCF2).addRange(0xD04, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD3A).addRange(0xD54, 0xD56).addRange(0xD5F, 0xD61).addRange(0xD7A, 0xD7F).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6);\nset.addRange(0xE01, 0xE30).addRange(0xE32, 0xE33).addRange(0xE40, 0xE46).addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEB0).addRange(0xEB2, 0xEB3).addRange(0xEC0, 0xEC4).addRange(0xEDC, 0xEDF).addRange(0xF40, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF88, 0xF8C).addRange(0x1000, 0x102A).addRange(0x1050, 0x1055).addRange(0x105A, 0x105D).addRange(0x1065, 0x1066).addRange(0x106E, 0x1070).addRange(0x1075, 0x1081).addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FC, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x1380, 0x138F).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1401, 0x166C).addRange(0x166F, 0x167F).addRange(0x1681, 0x169A).addRange(0x16A0, 0x16EA).addRange(0x16EE, 0x16F8).addRange(0x1700, 0x1711).addRange(0x171F, 0x1731).addRange(0x1740, 0x1751).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1780, 0x17B3).addRange(0x1820, 0x1878).addRange(0x1880, 0x18A8);\nset.addRange(0x18B0, 0x18F5).addRange(0x1900, 0x191E).addRange(0x1950, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x1A00, 0x1A16).addRange(0x1A20, 0x1A54).addRange(0x1B05, 0x1B33).addRange(0x1B45, 0x1B4C).addRange(0x1B83, 0x1BA0).addRange(0x1BAE, 0x1BAF).addRange(0x1BBA, 0x1BE5).addRange(0x1C00, 0x1C23).addRange(0x1C4D, 0x1C4F).addRange(0x1C5A, 0x1C7D).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1CE9, 0x1CEC).addRange(0x1CEE, 0x1CF3).addRange(0x1CF5, 0x1CF6).addRange(0x1D00, 0x1DBF).addRange(0x1E00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FBC).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FCC).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FE0, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFC).addRange(0x2090, 0x209C).addRange(0x210A, 0x2113).addRange(0x2118, 0x211D).addRange(0x212A, 0x2139).addRange(0x213C, 0x213F).addRange(0x2145, 0x2149).addRange(0x2160, 0x2188).addRange(0x2C00, 0x2CE4).addRange(0x2CEB, 0x2CEE).addRange(0x2CF2, 0x2CF3).addRange(0x2D00, 0x2D25).addRange(0x2D30, 0x2D67).addRange(0x2D80, 0x2D96);\nset.addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x3005, 0x3007).addRange(0x3021, 0x3029).addRange(0x3031, 0x3035).addRange(0x3038, 0x303C).addRange(0x3041, 0x3096).addRange(0x309B, 0x309F).addRange(0x30A1, 0x30FA).addRange(0x30FC, 0x30FF).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x31A0, 0x31BF).addRange(0x31F0, 0x31FF).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0xA48C).addRange(0xA4D0, 0xA4FD).addRange(0xA500, 0xA60C).addRange(0xA610, 0xA61F).addRange(0xA62A, 0xA62B).addRange(0xA640, 0xA66E).addRange(0xA67F, 0xA69D).addRange(0xA6A0, 0xA6EF).addRange(0xA717, 0xA71F).addRange(0xA722, 0xA788).addRange(0xA78B, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA801).addRange(0xA803, 0xA805).addRange(0xA807, 0xA80A).addRange(0xA80C, 0xA822).addRange(0xA840, 0xA873).addRange(0xA882, 0xA8B3).addRange(0xA8F2, 0xA8F7).addRange(0xA8FD, 0xA8FE).addRange(0xA90A, 0xA925).addRange(0xA930, 0xA946).addRange(0xA960, 0xA97C).addRange(0xA984, 0xA9B2).addRange(0xA9E0, 0xA9E4).addRange(0xA9E6, 0xA9EF).addRange(0xA9FA, 0xA9FE).addRange(0xAA00, 0xAA28).addRange(0xAA40, 0xAA42);\nset.addRange(0xAA44, 0xAA4B).addRange(0xAA60, 0xAA76).addRange(0xAA7E, 0xAAAF).addRange(0xAAB5, 0xAAB6).addRange(0xAAB9, 0xAABD).addRange(0xAADB, 0xAADD).addRange(0xAAE0, 0xAAEA).addRange(0xAAF2, 0xAAF4).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB69).addRange(0xAB70, 0xABE2).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1F, 0xFB28).addRange(0xFB2A, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBB1).addRange(0xFBD3, 0xFD3D).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFB).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0xFF66, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10140, 0x10174).addRange(0x10280, 0x1029C);\nset.addRange(0x102A0, 0x102D0).addRange(0x10300, 0x1031F).addRange(0x1032D, 0x1034A).addRange(0x10350, 0x10375).addRange(0x10380, 0x1039D).addRange(0x103A0, 0x103C3).addRange(0x103C8, 0x103CF).addRange(0x103D1, 0x103D5).addRange(0x10400, 0x1049D).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10860, 0x10876).addRange(0x10880, 0x1089E).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x10900, 0x10915).addRange(0x10920, 0x10939).addRange(0x10980, 0x109B7).addRange(0x109BE, 0x109BF).addRange(0x10A10, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A60, 0x10A7C).addRange(0x10A80, 0x10A9C).addRange(0x10AC0, 0x10AC7).addRange(0x10AC9, 0x10AE4).addRange(0x10B00, 0x10B35).addRange(0x10B40, 0x10B55).addRange(0x10B60, 0x10B72).addRange(0x10B80, 0x10B91).addRange(0x10C00, 0x10C48);\nset.addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10D00, 0x10D23).addRange(0x10E80, 0x10EA9).addRange(0x10EB0, 0x10EB1).addRange(0x10F00, 0x10F1C).addRange(0x10F30, 0x10F45).addRange(0x10F70, 0x10F81).addRange(0x10FB0, 0x10FC4).addRange(0x10FE0, 0x10FF6).addRange(0x11003, 0x11037).addRange(0x11071, 0x11072).addRange(0x11083, 0x110AF).addRange(0x110D0, 0x110E8).addRange(0x11103, 0x11126).addRange(0x11150, 0x11172).addRange(0x11183, 0x111B2).addRange(0x111C1, 0x111C4).addRange(0x11200, 0x11211).addRange(0x11213, 0x1122B).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A8).addRange(0x112B0, 0x112DE).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1135D, 0x11361).addRange(0x11400, 0x11434).addRange(0x11447, 0x1144A).addRange(0x1145F, 0x11461).addRange(0x11480, 0x114AF).addRange(0x114C4, 0x114C5).addRange(0x11580, 0x115AE).addRange(0x115D8, 0x115DB).addRange(0x11600, 0x1162F).addRange(0x11680, 0x116AA).addRange(0x11700, 0x1171A).addRange(0x11740, 0x11746).addRange(0x11800, 0x1182B).addRange(0x118A0, 0x118DF).addRange(0x118FF, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x1192F).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D0);\nset.addRange(0x11A0B, 0x11A32).addRange(0x11A5C, 0x11A89).addRange(0x11AB0, 0x11AF8).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C2E).addRange(0x11C72, 0x11C8F).addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D30).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D89).addRange(0x11EE0, 0x11EF2).addRange(0x12000, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12480, 0x12543).addRange(0x12F90, 0x12FF0).addRange(0x13000, 0x1342E).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A70, 0x16ABE).addRange(0x16AD0, 0x16AED).addRange(0x16B00, 0x16B2F).addRange(0x16B40, 0x16B43).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16E40, 0x16E7F).addRange(0x16F00, 0x16F4A).addRange(0x16F93, 0x16F9F).addRange(0x16FE0, 0x16FE1).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B000, 0x1B122).addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167).addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9);\nset.addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6FA).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D734).addRange(0x1D736, 0x1D74E).addRange(0x1D750, 0x1D76E).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D7A8).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7CB).addRange(0x1DF00, 0x1DF1E).addRange(0x1E100, 0x1E12C).addRange(0x1E137, 0x1E13D).addRange(0x1E290, 0x1E2AD).addRange(0x1E2C0, 0x1E2EB).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE).addRange(0x1E800, 0x1E8C4).addRange(0x1E900, 0x1E943).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B738);\nset.addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A);\nmodule.exports = set;","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","const set = require('regenerate')(0x24, 0x2B, 0x5E, 0x60, 0x7C, 0x7E, 0xAC, 0xB4, 0xB8, 0xD7, 0xF7, 0x2ED, 0x375, 0x3F6, 0x482, 0x60B, 0x6DE, 0x6E9, 0x7F6, 0x888, 0xAF1, 0xB70, 0xC7F, 0xD4F, 0xD79, 0xE3F, 0xF13, 0xF34, 0xF36, 0xF38, 0x166D, 0x17DB, 0x1940, 0x1FBD, 0x2044, 0x2052, 0x2114, 0x2125, 0x2127, 0x2129, 0x212E, 0x214F, 0x3004, 0x3020, 0x3250, 0xAB5B, 0xFB29, 0xFDCF, 0xFE62, 0xFE69, 0xFF04, 0xFF0B, 0xFF3E, 0xFF40, 0xFF5C, 0xFF5E, 0x101A0, 0x10AC8, 0x1173F, 0x16B45, 0x1BC9C, 0x1D245, 0x1D6C1, 0x1D6DB, 0x1D6FB, 0x1D715, 0x1D735, 0x1D74F, 0x1D76F, 0x1D789, 0x1D7A9, 0x1D7C3, 0x1E14F, 0x1E2FF, 0x1ECAC, 0x1ECB0, 0x1ED2E, 0x1F7F0);\nset.addRange(0x3C, 0x3E).addRange(0xA2, 0xA6).addRange(0xA8, 0xA9).addRange(0xAE, 0xB1).addRange(0x2C2, 0x2C5).addRange(0x2D2, 0x2DF).addRange(0x2E5, 0x2EB).addRange(0x2EF, 0x2FF).addRange(0x384, 0x385).addRange(0x58D, 0x58F).addRange(0x606, 0x608).addRange(0x60E, 0x60F).addRange(0x6FD, 0x6FE).addRange(0x7FE, 0x7FF).addRange(0x9F2, 0x9F3).addRange(0x9FA, 0x9FB).addRange(0xBF3, 0xBFA).addRange(0xF01, 0xF03).addRange(0xF15, 0xF17).addRange(0xF1A, 0xF1F).addRange(0xFBE, 0xFC5).addRange(0xFC7, 0xFCC).addRange(0xFCE, 0xFCF).addRange(0xFD5, 0xFD8).addRange(0x109E, 0x109F).addRange(0x1390, 0x1399).addRange(0x19DE, 0x19FF).addRange(0x1B61, 0x1B6A).addRange(0x1B74, 0x1B7C).addRange(0x1FBF, 0x1FC1).addRange(0x1FCD, 0x1FCF).addRange(0x1FDD, 0x1FDF).addRange(0x1FED, 0x1FEF).addRange(0x1FFD, 0x1FFE).addRange(0x207A, 0x207C).addRange(0x208A, 0x208C).addRange(0x20A0, 0x20C0).addRange(0x2100, 0x2101).addRange(0x2103, 0x2106).addRange(0x2108, 0x2109).addRange(0x2116, 0x2118).addRange(0x211E, 0x2123).addRange(0x213A, 0x213B).addRange(0x2140, 0x2144).addRange(0x214A, 0x214D).addRange(0x218A, 0x218B).addRange(0x2190, 0x2307).addRange(0x230C, 0x2328).addRange(0x232B, 0x2426).addRange(0x2440, 0x244A).addRange(0x249C, 0x24E9);\nset.addRange(0x2500, 0x2767).addRange(0x2794, 0x27C4).addRange(0x27C7, 0x27E5).addRange(0x27F0, 0x2982).addRange(0x2999, 0x29D7).addRange(0x29DC, 0x29FB).addRange(0x29FE, 0x2B73).addRange(0x2B76, 0x2B95).addRange(0x2B97, 0x2BFF).addRange(0x2CE5, 0x2CEA).addRange(0x2E50, 0x2E51).addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5).addRange(0x2FF0, 0x2FFB).addRange(0x3012, 0x3013).addRange(0x3036, 0x3037).addRange(0x303E, 0x303F).addRange(0x309B, 0x309C).addRange(0x3190, 0x3191).addRange(0x3196, 0x319F).addRange(0x31C0, 0x31E3).addRange(0x3200, 0x321E).addRange(0x322A, 0x3247).addRange(0x3260, 0x327F).addRange(0x328A, 0x32B0).addRange(0x32C0, 0x33FF).addRange(0x4DC0, 0x4DFF).addRange(0xA490, 0xA4C6).addRange(0xA700, 0xA716).addRange(0xA720, 0xA721).addRange(0xA789, 0xA78A).addRange(0xA828, 0xA82B).addRange(0xA836, 0xA839).addRange(0xAA77, 0xAA79).addRange(0xAB6A, 0xAB6B).addRange(0xFBB2, 0xFBC2).addRange(0xFD40, 0xFD4F).addRange(0xFDFC, 0xFDFF).addRange(0xFE64, 0xFE66).addRange(0xFF1C, 0xFF1E).addRange(0xFFE0, 0xFFE6).addRange(0xFFE8, 0xFFEE).addRange(0xFFFC, 0xFFFD).addRange(0x10137, 0x1013F).addRange(0x10179, 0x10189).addRange(0x1018C, 0x1018E).addRange(0x10190, 0x1019C).addRange(0x101D0, 0x101FC).addRange(0x10877, 0x10878).addRange(0x11FD5, 0x11FF1);\nset.addRange(0x16B3C, 0x16B3F).addRange(0x1CF50, 0x1CFC3).addRange(0x1D000, 0x1D0F5).addRange(0x1D100, 0x1D126).addRange(0x1D129, 0x1D164).addRange(0x1D16A, 0x1D16C).addRange(0x1D183, 0x1D184).addRange(0x1D18C, 0x1D1A9).addRange(0x1D1AE, 0x1D1EA).addRange(0x1D200, 0x1D241).addRange(0x1D300, 0x1D356).addRange(0x1D800, 0x1D9FF).addRange(0x1DA37, 0x1DA3A).addRange(0x1DA6D, 0x1DA74).addRange(0x1DA76, 0x1DA83).addRange(0x1DA85, 0x1DA86).addRange(0x1EEF0, 0x1EEF1).addRange(0x1F000, 0x1F02B).addRange(0x1F030, 0x1F093).addRange(0x1F0A0, 0x1F0AE).addRange(0x1F0B1, 0x1F0BF).addRange(0x1F0C1, 0x1F0CF).addRange(0x1F0D1, 0x1F0F5).addRange(0x1F10D, 0x1F1AD).addRange(0x1F1E6, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x1F260, 0x1F265).addRange(0x1F300, 0x1F6D7).addRange(0x1F6DD, 0x1F6EC).addRange(0x1F6F0, 0x1F6FC).addRange(0x1F700, 0x1F773).addRange(0x1F780, 0x1F7D8).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F800, 0x1F80B).addRange(0x1F810, 0x1F847).addRange(0x1F850, 0x1F859).addRange(0x1F860, 0x1F887).addRange(0x1F890, 0x1F8AD).addRange(0x1F8B0, 0x1F8B1).addRange(0x1F900, 0x1FA53).addRange(0x1FA60, 0x1FA6D).addRange(0x1FA70, 0x1FA74).addRange(0x1FA78, 0x1FA7C).addRange(0x1FA80, 0x1FA86).addRange(0x1FA90, 0x1FAAC).addRange(0x1FAB0, 0x1FABA).addRange(0x1FAC0, 0x1FAC5).addRange(0x1FAD0, 0x1FAD9).addRange(0x1FAE0, 0x1FAE7);\nset.addRange(0x1FAF0, 0x1FAF6).addRange(0x1FB00, 0x1FB92).addRange(0x1FB94, 0x1FBCA);\nmodule.exports = set;","\"use strict\";\n\nexports.__esModule = true;\nexports.SessionStorage = void 0;\nvar STATE_KEY_PREFIX = \"@@scroll|\";\nvar GATSBY_ROUTER_SCROLL_STATE = \"___GATSBY_REACT_ROUTER_SCROLL\";\n\nvar SessionStorage = /*#__PURE__*/function () {\n function SessionStorage() {}\n\n var _proto = SessionStorage.prototype;\n\n _proto.read = function read(location, key) {\n var stateKey = this.getStateKey(location, key);\n\n try {\n var value = window.sessionStorage.getItem(stateKey);\n return value ? JSON.parse(value) : 0;\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to access sessionStorage; sessionStorage is not available.\");\n }\n\n if (window && window[GATSBY_ROUTER_SCROLL_STATE] && window[GATSBY_ROUTER_SCROLL_STATE][stateKey]) {\n return window[GATSBY_ROUTER_SCROLL_STATE][stateKey];\n }\n\n return 0;\n }\n };\n\n _proto.save = function save(location, key, value) {\n var stateKey = this.getStateKey(location, key);\n var storedValue = JSON.stringify(value);\n\n try {\n window.sessionStorage.setItem(stateKey, storedValue);\n } catch (e) {\n if (window && window[GATSBY_ROUTER_SCROLL_STATE]) {\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n } else {\n window[GATSBY_ROUTER_SCROLL_STATE] = {};\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to save state in sessionStorage; sessionStorage is not available.\");\n }\n }\n };\n\n _proto.getStateKey = function getStateKey(location, key) {\n var stateKeyBase = \"\" + STATE_KEY_PREFIX + location.pathname;\n return key === null || typeof key === \"undefined\" ? stateKeyBase : stateKeyBase + \"|\" + key;\n };\n\n return SessionStorage;\n}();\n\nexports.SessionStorage = SessionStorage;","const set = require('regenerate')(0x60C, 0x61B, 0x61F);\nset.addRange(0x7C0, 0x7FA).addRange(0x7FD, 0x7FF).addRange(0xFD3E, 0xFD3F);\nmodule.exports = set;","var arrayEach = require('./_arrayEach'),\n arrayIncludes = require('./_arrayIncludes');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n/** Used to associate wrap methods with their bit flags. */\nvar wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n];\n\n/**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\nfunction updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n}\n\nmodule.exports = updateWrapDetails;\n","const set = require('regenerate')();\nset.addRange(0x10AC0, 0x10AE6).addRange(0x10AEB, 0x10AF6);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x10280, 0x1029C);\nmodule.exports = set;","const set = require('regenerate')(0x3007, 0x10341, 0x1034A);\nset.addRange(0x16EE, 0x16F0).addRange(0x2160, 0x2182).addRange(0x2185, 0x2188).addRange(0x3021, 0x3029).addRange(0x3038, 0x303A).addRange(0xA6E6, 0xA6EF).addRange(0x10140, 0x10174).addRange(0x103D1, 0x103D5).addRange(0x12400, 0x1246E);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x531, 0x556).addRange(0x559, 0x58A).addRange(0x58D, 0x58F).addRange(0xFB13, 0xFB17);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x16E40, 0x16E9A);\nmodule.exports = set;","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var apply = require('./_apply'),\n createCtor = require('./_createCtor'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n}\n\nmodule.exports = createPartial;\n","module.exports = {};\n","var arrayMap = require('./_arrayMap'),\n copyArray = require('./_copyArray'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol'),\n stringToPath = require('./_stringToPath'),\n toKey = require('./_toKey'),\n toString = require('./toString');\n\n/**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\nfunction toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n}\n\nmodule.exports = toPath;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","const set = require('regenerate')();\nset.addRange(0x11580, 0x115B5).addRange(0x115B8, 0x115DD);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x11A00, 0x11A47);\nmodule.exports = set;","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","const set = require('regenerate')();\nset.addRange(0x10330, 0x1034A);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x1F3FB, 0x1F3FF);\nmodule.exports = set;","/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","const set = require('regenerate')(0xB9, 0x2070, 0x2CFD, 0x3007, 0x10341, 0x1034A);\nset.addRange(0x30, 0x39).addRange(0xB2, 0xB3).addRange(0xBC, 0xBE).addRange(0x660, 0x669).addRange(0x6F0, 0x6F9).addRange(0x7C0, 0x7C9).addRange(0x966, 0x96F).addRange(0x9E6, 0x9EF).addRange(0x9F4, 0x9F9).addRange(0xA66, 0xA6F).addRange(0xAE6, 0xAEF).addRange(0xB66, 0xB6F).addRange(0xB72, 0xB77).addRange(0xBE6, 0xBF2).addRange(0xC66, 0xC6F).addRange(0xC78, 0xC7E).addRange(0xCE6, 0xCEF).addRange(0xD58, 0xD5E).addRange(0xD66, 0xD78).addRange(0xDE6, 0xDEF).addRange(0xE50, 0xE59).addRange(0xED0, 0xED9).addRange(0xF20, 0xF33).addRange(0x1040, 0x1049).addRange(0x1090, 0x1099).addRange(0x1369, 0x137C).addRange(0x16EE, 0x16F0).addRange(0x17E0, 0x17E9).addRange(0x17F0, 0x17F9).addRange(0x1810, 0x1819).addRange(0x1946, 0x194F).addRange(0x19D0, 0x19DA).addRange(0x1A80, 0x1A89).addRange(0x1A90, 0x1A99).addRange(0x1B50, 0x1B59).addRange(0x1BB0, 0x1BB9).addRange(0x1C40, 0x1C49).addRange(0x1C50, 0x1C59).addRange(0x2074, 0x2079).addRange(0x2080, 0x2089).addRange(0x2150, 0x2182).addRange(0x2185, 0x2189).addRange(0x2460, 0x249B).addRange(0x24EA, 0x24FF).addRange(0x2776, 0x2793).addRange(0x3021, 0x3029).addRange(0x3038, 0x303A).addRange(0x3192, 0x3195).addRange(0x3220, 0x3229).addRange(0x3248, 0x324F).addRange(0x3251, 0x325F);\nset.addRange(0x3280, 0x3289).addRange(0x32B1, 0x32BF).addRange(0xA620, 0xA629).addRange(0xA6E6, 0xA6EF).addRange(0xA830, 0xA835).addRange(0xA8D0, 0xA8D9).addRange(0xA900, 0xA909).addRange(0xA9D0, 0xA9D9).addRange(0xA9F0, 0xA9F9).addRange(0xAA50, 0xAA59).addRange(0xABF0, 0xABF9).addRange(0xFF10, 0xFF19).addRange(0x10107, 0x10133).addRange(0x10140, 0x10178).addRange(0x1018A, 0x1018B).addRange(0x102E1, 0x102FB).addRange(0x10320, 0x10323).addRange(0x103D1, 0x103D5).addRange(0x104A0, 0x104A9).addRange(0x10858, 0x1085F).addRange(0x10879, 0x1087F).addRange(0x108A7, 0x108AF).addRange(0x108FB, 0x108FF).addRange(0x10916, 0x1091B).addRange(0x109BC, 0x109BD).addRange(0x109C0, 0x109CF).addRange(0x109D2, 0x109FF).addRange(0x10A40, 0x10A48).addRange(0x10A7D, 0x10A7E).addRange(0x10A9D, 0x10A9F).addRange(0x10AEB, 0x10AEF).addRange(0x10B58, 0x10B5F).addRange(0x10B78, 0x10B7F).addRange(0x10BA9, 0x10BAF).addRange(0x10CFA, 0x10CFF).addRange(0x10D30, 0x10D39).addRange(0x10E60, 0x10E7E).addRange(0x10F1D, 0x10F26).addRange(0x10F51, 0x10F54).addRange(0x10FC5, 0x10FCB).addRange(0x11052, 0x1106F).addRange(0x110F0, 0x110F9).addRange(0x11136, 0x1113F).addRange(0x111D0, 0x111D9).addRange(0x111E1, 0x111F4).addRange(0x112F0, 0x112F9).addRange(0x11450, 0x11459).addRange(0x114D0, 0x114D9).addRange(0x11650, 0x11659).addRange(0x116C0, 0x116C9).addRange(0x11730, 0x1173B);\nset.addRange(0x118E0, 0x118F2).addRange(0x11950, 0x11959).addRange(0x11C50, 0x11C6C).addRange(0x11D50, 0x11D59).addRange(0x11DA0, 0x11DA9).addRange(0x11FC0, 0x11FD4).addRange(0x12400, 0x1246E).addRange(0x16A60, 0x16A69).addRange(0x16AC0, 0x16AC9).addRange(0x16B50, 0x16B59).addRange(0x16B5B, 0x16B61).addRange(0x16E80, 0x16E96).addRange(0x1D2E0, 0x1D2F3).addRange(0x1D360, 0x1D378).addRange(0x1D7CE, 0x1D7FF).addRange(0x1E140, 0x1E149).addRange(0x1E2F0, 0x1E2F9).addRange(0x1E8C7, 0x1E8CF).addRange(0x1E950, 0x1E959).addRange(0x1EC71, 0x1ECAB).addRange(0x1ECAD, 0x1ECAF).addRange(0x1ECB1, 0x1ECB4).addRange(0x1ED01, 0x1ED2D).addRange(0x1ED2F, 0x1ED3D).addRange(0x1F100, 0x1F10C).addRange(0x1FBF0, 0x1FBF9);\nmodule.exports = set;","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","const set = require('regenerate')(0x23, 0x2A, 0xA9, 0xAE, 0x203C, 0x2049, 0x2122, 0x2139, 0x2328, 0x23CF, 0x24C2, 0x25B6, 0x25C0, 0x260E, 0x2611, 0x2618, 0x261D, 0x2620, 0x2626, 0x262A, 0x2640, 0x2642, 0x2663, 0x2668, 0x267B, 0x2699, 0x26A7, 0x26C8, 0x26D1, 0x26FD, 0x2702, 0x2705, 0x270F, 0x2712, 0x2714, 0x2716, 0x271D, 0x2721, 0x2728, 0x2744, 0x2747, 0x274C, 0x274E, 0x2757, 0x27A1, 0x27B0, 0x27BF, 0x2B50, 0x2B55, 0x3030, 0x303D, 0x3297, 0x3299, 0x1F004, 0x1F0CF, 0x1F18E, 0x1F21A, 0x1F22F, 0x1F587, 0x1F590, 0x1F5A8, 0x1F5BC, 0x1F5E1, 0x1F5E3, 0x1F5E8, 0x1F5EF, 0x1F5F3, 0x1F6E9, 0x1F6F0, 0x1F7F0);\nset.addRange(0x30, 0x39).addRange(0x2194, 0x2199).addRange(0x21A9, 0x21AA).addRange(0x231A, 0x231B).addRange(0x23E9, 0x23F3).addRange(0x23F8, 0x23FA).addRange(0x25AA, 0x25AB).addRange(0x25FB, 0x25FE).addRange(0x2600, 0x2604).addRange(0x2614, 0x2615).addRange(0x2622, 0x2623).addRange(0x262E, 0x262F).addRange(0x2638, 0x263A).addRange(0x2648, 0x2653).addRange(0x265F, 0x2660).addRange(0x2665, 0x2666).addRange(0x267E, 0x267F).addRange(0x2692, 0x2697).addRange(0x269B, 0x269C).addRange(0x26A0, 0x26A1).addRange(0x26AA, 0x26AB).addRange(0x26B0, 0x26B1).addRange(0x26BD, 0x26BE).addRange(0x26C4, 0x26C5).addRange(0x26CE, 0x26CF).addRange(0x26D3, 0x26D4).addRange(0x26E9, 0x26EA).addRange(0x26F0, 0x26F5).addRange(0x26F7, 0x26FA).addRange(0x2708, 0x270D).addRange(0x2733, 0x2734).addRange(0x2753, 0x2755).addRange(0x2763, 0x2764).addRange(0x2795, 0x2797).addRange(0x2934, 0x2935).addRange(0x2B05, 0x2B07).addRange(0x2B1B, 0x2B1C).addRange(0x1F170, 0x1F171).addRange(0x1F17E, 0x1F17F).addRange(0x1F191, 0x1F19A).addRange(0x1F1E6, 0x1F1FF).addRange(0x1F201, 0x1F202).addRange(0x1F232, 0x1F23A).addRange(0x1F250, 0x1F251).addRange(0x1F300, 0x1F321).addRange(0x1F324, 0x1F393).addRange(0x1F396, 0x1F397).addRange(0x1F399, 0x1F39B).addRange(0x1F39E, 0x1F3F0).addRange(0x1F3F3, 0x1F3F5).addRange(0x1F3F7, 0x1F4FD);\nset.addRange(0x1F4FF, 0x1F53D).addRange(0x1F549, 0x1F54E).addRange(0x1F550, 0x1F567).addRange(0x1F56F, 0x1F570).addRange(0x1F573, 0x1F57A).addRange(0x1F58A, 0x1F58D).addRange(0x1F595, 0x1F596).addRange(0x1F5A4, 0x1F5A5).addRange(0x1F5B1, 0x1F5B2).addRange(0x1F5C2, 0x1F5C4).addRange(0x1F5D1, 0x1F5D3).addRange(0x1F5DC, 0x1F5DE).addRange(0x1F5FA, 0x1F64F).addRange(0x1F680, 0x1F6C5).addRange(0x1F6CB, 0x1F6D2).addRange(0x1F6D5, 0x1F6D7).addRange(0x1F6DD, 0x1F6E5).addRange(0x1F6EB, 0x1F6EC).addRange(0x1F6F3, 0x1F6FC).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F90C, 0x1F93A).addRange(0x1F93C, 0x1F945).addRange(0x1F947, 0x1F9FF).addRange(0x1FA70, 0x1FA74).addRange(0x1FA78, 0x1FA7C).addRange(0x1FA80, 0x1FA86).addRange(0x1FA90, 0x1FAAC).addRange(0x1FAB0, 0x1FABA).addRange(0x1FAC0, 0x1FAC5).addRange(0x1FAD0, 0x1FAD9).addRange(0x1FAE0, 0x1FAE7).addRange(0x1FAF0, 0x1FAF6);\nmodule.exports = set;","module.exports = new Map([[0x4B, 0x212A], [0x53, 0x17F], [0x6B, 0x212A], [0x73, 0x17F], [0xB5, 0x39C], [0xC5, 0x212B], [0xDF, 0x1E9E], [0xE5, 0x212B], [0x17F, 0x53], [0x1C4, 0x1C5], [0x1C5, 0x1C4], [0x1C7, 0x1C8], [0x1C8, 0x1C7], [0x1CA, 0x1CB], [0x1CB, 0x1CA], [0x1F1, 0x1F2], [0x1F2, 0x1F1], [0x345, 0x1FBE], [0x392, 0x3D0], [0x395, 0x3F5], [0x398, 0x3F4], [0x399, 0x1FBE], [0x39A, 0x3F0], [0x39C, 0xB5], [0x3A0, 0x3D6], [0x3A1, 0x3F1], [0x3A3, 0x3C2], [0x3A6, 0x3D5], [0x3A9, 0x2126], [0x3B8, 0x3F4], [0x3C2, 0x3A3], [0x3C9, 0x2126], [0x3D0, 0x392], [0x3D1, 0x3F4], [0x3D5, 0x3A6], [0x3D6, 0x3A0], [0x3F0, 0x39A], [0x3F1, 0x3A1], [0x3F4, [0x398, 0x3D1, 0x3B8]], [0x3F5, 0x395], [0x412, 0x1C80], [0x414, 0x1C81], [0x41E, 0x1C82], [0x421, 0x1C83], [0x422, 0x1C85], [0x42A, 0x1C86], [0x462, 0x1C87], [0x1C80, 0x412], [0x1C81, 0x414], [0x1C82, 0x41E], [0x1C83, 0x421], [0x1C84, 0x1C85], [0x1C85, [0x422, 0x1C84]], [0x1C86, 0x42A], [0x1C87, 0x462], [0x1C88, 0xA64A], [0x1E60, 0x1E9B], [0x1E9B, 0x1E60], [0x1E9E, 0xDF], [0x1F80, 0x1F88], [0x1F81, 0x1F89], [0x1F82, 0x1F8A], [0x1F83, 0x1F8B], [0x1F84, 0x1F8C], [0x1F85, 0x1F8D], [0x1F86, 0x1F8E], [0x1F87, 0x1F8F], [0x1F88, 0x1F80], [0x1F89, 0x1F81], [0x1F8A, 0x1F82], [0x1F8B, 0x1F83], [0x1F8C, 0x1F84], [0x1F8D, 0x1F85], [0x1F8E, 0x1F86], [0x1F8F, 0x1F87], [0x1F90, 0x1F98], [0x1F91, 0x1F99], [0x1F92, 0x1F9A], [0x1F93, 0x1F9B], [0x1F94, 0x1F9C], [0x1F95, 0x1F9D], [0x1F96, 0x1F9E], [0x1F97, 0x1F9F], [0x1F98, 0x1F90], [0x1F99, 0x1F91], [0x1F9A, 0x1F92], [0x1F9B, 0x1F93], [0x1F9C, 0x1F94], [0x1F9D, 0x1F95], [0x1F9E, 0x1F96], [0x1F9F, 0x1F97], [0x1FA0, 0x1FA8], [0x1FA1, 0x1FA9], [0x1FA2, 0x1FAA], [0x1FA3, 0x1FAB], [0x1FA4, 0x1FAC], [0x1FA5, 0x1FAD], [0x1FA6, 0x1FAE], [0x1FA7, 0x1FAF], [0x1FA8, 0x1FA0], [0x1FA9, 0x1FA1], [0x1FAA, 0x1FA2], [0x1FAB, 0x1FA3], [0x1FAC, 0x1FA4], [0x1FAD, 0x1FA5], [0x1FAE, 0x1FA6], [0x1FAF, 0x1FA7], [0x1FB3, 0x1FBC], [0x1FBC, 0x1FB3], [0x1FBE, [0x345, 0x399]], [0x1FC3, 0x1FCC], [0x1FCC, 0x1FC3], [0x1FF3, 0x1FFC], [0x1FFC, 0x1FF3], [0x2126, [0x3A9, 0x3C9]], [0x212A, 0x4B], [0x212B, [0xC5, 0xE5]], [0x2C2F, 0x2C5F], [0x2C5F, 0x2C2F], [0xA64A, 0x1C88], [0xA7C0, 0xA7C1], [0xA7C1, 0xA7C0], [0xA7D0, 0xA7D1], [0xA7D1, 0xA7D0], [0xA7D6, 0xA7D7], [0xA7D7, 0xA7D6], [0xA7D8, 0xA7D9], [0xA7D9, 0xA7D8], [0x10400, 0x10428], [0x10401, 0x10429], [0x10402, 0x1042A], [0x10403, 0x1042B], [0x10404, 0x1042C], [0x10405, 0x1042D], [0x10406, 0x1042E], [0x10407, 0x1042F], [0x10408, 0x10430], [0x10409, 0x10431], [0x1040A, 0x10432], [0x1040B, 0x10433], [0x1040C, 0x10434], [0x1040D, 0x10435], [0x1040E, 0x10436], [0x1040F, 0x10437], [0x10410, 0x10438], [0x10411, 0x10439], [0x10412, 0x1043A], [0x10413, 0x1043B], [0x10414, 0x1043C], [0x10415, 0x1043D], [0x10416, 0x1043E], [0x10417, 0x1043F], [0x10418, 0x10440], [0x10419, 0x10441], [0x1041A, 0x10442], [0x1041B, 0x10443], [0x1041C, 0x10444], [0x1041D, 0x10445], [0x1041E, 0x10446], [0x1041F, 0x10447], [0x10420, 0x10448], [0x10421, 0x10449], [0x10422, 0x1044A], [0x10423, 0x1044B], [0x10424, 0x1044C], [0x10425, 0x1044D], [0x10426, 0x1044E], [0x10427, 0x1044F], [0x10428, 0x10400], [0x10429, 0x10401], [0x1042A, 0x10402], [0x1042B, 0x10403], [0x1042C, 0x10404], [0x1042D, 0x10405], [0x1042E, 0x10406], [0x1042F, 0x10407], [0x10430, 0x10408], [0x10431, 0x10409], [0x10432, 0x1040A], [0x10433, 0x1040B], [0x10434, 0x1040C], [0x10435, 0x1040D], [0x10436, 0x1040E], [0x10437, 0x1040F], [0x10438, 0x10410], [0x10439, 0x10411], [0x1043A, 0x10412], [0x1043B, 0x10413], [0x1043C, 0x10414], [0x1043D, 0x10415], [0x1043E, 0x10416], [0x1043F, 0x10417], [0x10440, 0x10418], [0x10441, 0x10419], [0x10442, 0x1041A], [0x10443, 0x1041B], [0x10444, 0x1041C], [0x10445, 0x1041D], [0x10446, 0x1041E], [0x10447, 0x1041F], [0x10448, 0x10420], [0x10449, 0x10421], [0x1044A, 0x10422], [0x1044B, 0x10423], [0x1044C, 0x10424], [0x1044D, 0x10425], [0x1044E, 0x10426], [0x1044F, 0x10427], [0x104B0, 0x104D8], [0x104B1, 0x104D9], [0x104B2, 0x104DA], [0x104B3, 0x104DB], [0x104B4, 0x104DC], [0x104B5, 0x104DD], [0x104B6, 0x104DE], [0x104B7, 0x104DF], [0x104B8, 0x104E0], [0x104B9, 0x104E1], [0x104BA, 0x104E2], [0x104BB, 0x104E3], [0x104BC, 0x104E4], [0x104BD, 0x104E5], [0x104BE, 0x104E6], [0x104BF, 0x104E7], [0x104C0, 0x104E8], [0x104C1, 0x104E9], [0x104C2, 0x104EA], [0x104C3, 0x104EB], [0x104C4, 0x104EC], [0x104C5, 0x104ED], [0x104C6, 0x104EE], [0x104C7, 0x104EF], [0x104C8, 0x104F0], [0x104C9, 0x104F1], [0x104CA, 0x104F2], [0x104CB, 0x104F3], [0x104CC, 0x104F4], [0x104CD, 0x104F5], [0x104CE, 0x104F6], [0x104CF, 0x104F7], [0x104D0, 0x104F8], [0x104D1, 0x104F9], [0x104D2, 0x104FA], [0x104D3, 0x104FB], [0x104D8, 0x104B0], [0x104D9, 0x104B1], [0x104DA, 0x104B2], [0x104DB, 0x104B3], [0x104DC, 0x104B4], [0x104DD, 0x104B5], [0x104DE, 0x104B6], [0x104DF, 0x104B7], [0x104E0, 0x104B8], [0x104E1, 0x104B9], [0x104E2, 0x104BA], [0x104E3, 0x104BB], [0x104E4, 0x104BC], [0x104E5, 0x104BD], [0x104E6, 0x104BE], [0x104E7, 0x104BF], [0x104E8, 0x104C0], [0x104E9, 0x104C1], [0x104EA, 0x104C2], [0x104EB, 0x104C3], [0x104EC, 0x104C4], [0x104ED, 0x104C5], [0x104EE, 0x104C6], [0x104EF, 0x104C7], [0x104F0, 0x104C8], [0x104F1, 0x104C9], [0x104F2, 0x104CA], [0x104F3, 0x104CB], [0x104F4, 0x104CC], [0x104F5, 0x104CD], [0x104F6, 0x104CE], [0x104F7, 0x104CF], [0x104F8, 0x104D0], [0x104F9, 0x104D1], [0x104FA, 0x104D2], [0x104FB, 0x104D3], [0x10570, 0x10597], [0x10571, 0x10598], [0x10572, 0x10599], [0x10573, 0x1059A], [0x10574, 0x1059B], [0x10575, 0x1059C], [0x10576, 0x1059D], [0x10577, 0x1059E], [0x10578, 0x1059F], [0x10579, 0x105A0], [0x1057A, 0x105A1], [0x1057C, 0x105A3], [0x1057D, 0x105A4], [0x1057E, 0x105A5], [0x1057F, 0x105A6], [0x10580, 0x105A7], [0x10581, 0x105A8], [0x10582, 0x105A9], [0x10583, 0x105AA], [0x10584, 0x105AB], [0x10585, 0x105AC], [0x10586, 0x105AD], [0x10587, 0x105AE], [0x10588, 0x105AF], [0x10589, 0x105B0], [0x1058A, 0x105B1], [0x1058C, 0x105B3], [0x1058D, 0x105B4], [0x1058E, 0x105B5], [0x1058F, 0x105B6], [0x10590, 0x105B7], [0x10591, 0x105B8], [0x10592, 0x105B9], [0x10594, 0x105BB], [0x10595, 0x105BC], [0x10597, 0x10570], [0x10598, 0x10571], [0x10599, 0x10572], [0x1059A, 0x10573], [0x1059B, 0x10574], [0x1059C, 0x10575], [0x1059D, 0x10576], [0x1059E, 0x10577], [0x1059F, 0x10578], [0x105A0, 0x10579], [0x105A1, 0x1057A], [0x105A3, 0x1057C], [0x105A4, 0x1057D], [0x105A5, 0x1057E], [0x105A6, 0x1057F], [0x105A7, 0x10580], [0x105A8, 0x10581], [0x105A9, 0x10582], [0x105AA, 0x10583], [0x105AB, 0x10584], [0x105AC, 0x10585], [0x105AD, 0x10586], [0x105AE, 0x10587], [0x105AF, 0x10588], [0x105B0, 0x10589], [0x105B1, 0x1058A], [0x105B3, 0x1058C], [0x105B4, 0x1058D], [0x105B5, 0x1058E], [0x105B6, 0x1058F], [0x105B7, 0x10590], [0x105B8, 0x10591], [0x105B9, 0x10592], [0x105BB, 0x10594], [0x105BC, 0x10595], [0x10C80, 0x10CC0], [0x10C81, 0x10CC1], [0x10C82, 0x10CC2], [0x10C83, 0x10CC3], [0x10C84, 0x10CC4], [0x10C85, 0x10CC5], [0x10C86, 0x10CC6], [0x10C87, 0x10CC7], [0x10C88, 0x10CC8], [0x10C89, 0x10CC9], [0x10C8A, 0x10CCA], [0x10C8B, 0x10CCB], [0x10C8C, 0x10CCC], [0x10C8D, 0x10CCD], [0x10C8E, 0x10CCE], [0x10C8F, 0x10CCF], [0x10C90, 0x10CD0], [0x10C91, 0x10CD1], [0x10C92, 0x10CD2], [0x10C93, 0x10CD3], [0x10C94, 0x10CD4], [0x10C95, 0x10CD5], [0x10C96, 0x10CD6], [0x10C97, 0x10CD7], [0x10C98, 0x10CD8], [0x10C99, 0x10CD9], [0x10C9A, 0x10CDA], [0x10C9B, 0x10CDB], [0x10C9C, 0x10CDC], [0x10C9D, 0x10CDD], [0x10C9E, 0x10CDE], [0x10C9F, 0x10CDF], [0x10CA0, 0x10CE0], [0x10CA1, 0x10CE1], [0x10CA2, 0x10CE2], [0x10CA3, 0x10CE3], [0x10CA4, 0x10CE4], [0x10CA5, 0x10CE5], [0x10CA6, 0x10CE6], [0x10CA7, 0x10CE7], [0x10CA8, 0x10CE8], [0x10CA9, 0x10CE9], [0x10CAA, 0x10CEA], [0x10CAB, 0x10CEB], [0x10CAC, 0x10CEC], [0x10CAD, 0x10CED], [0x10CAE, 0x10CEE], [0x10CAF, 0x10CEF], [0x10CB0, 0x10CF0], [0x10CB1, 0x10CF1], [0x10CB2, 0x10CF2], [0x10CC0, 0x10C80], [0x10CC1, 0x10C81], [0x10CC2, 0x10C82], [0x10CC3, 0x10C83], [0x10CC4, 0x10C84], [0x10CC5, 0x10C85], [0x10CC6, 0x10C86], [0x10CC7, 0x10C87], [0x10CC8, 0x10C88], [0x10CC9, 0x10C89], [0x10CCA, 0x10C8A], [0x10CCB, 0x10C8B], [0x10CCC, 0x10C8C], [0x10CCD, 0x10C8D], [0x10CCE, 0x10C8E], [0x10CCF, 0x10C8F], [0x10CD0, 0x10C90], [0x10CD1, 0x10C91], [0x10CD2, 0x10C92], [0x10CD3, 0x10C93], [0x10CD4, 0x10C94], [0x10CD5, 0x10C95], [0x10CD6, 0x10C96], [0x10CD7, 0x10C97], [0x10CD8, 0x10C98], [0x10CD9, 0x10C99], [0x10CDA, 0x10C9A], [0x10CDB, 0x10C9B], [0x10CDC, 0x10C9C], [0x10CDD, 0x10C9D], [0x10CDE, 0x10C9E], [0x10CDF, 0x10C9F], [0x10CE0, 0x10CA0], [0x10CE1, 0x10CA1], [0x10CE2, 0x10CA2], [0x10CE3, 0x10CA3], [0x10CE4, 0x10CA4], [0x10CE5, 0x10CA5], [0x10CE6, 0x10CA6], [0x10CE7, 0x10CA7], [0x10CE8, 0x10CA8], [0x10CE9, 0x10CA9], [0x10CEA, 0x10CAA], [0x10CEB, 0x10CAB], [0x10CEC, 0x10CAC], [0x10CED, 0x10CAD], [0x10CEE, 0x10CAE], [0x10CEF, 0x10CAF], [0x10CF0, 0x10CB0], [0x10CF1, 0x10CB1], [0x10CF2, 0x10CB2], [0x118A0, 0x118C0], [0x118A1, 0x118C1], [0x118A2, 0x118C2], [0x118A3, 0x118C3], [0x118A4, 0x118C4], [0x118A5, 0x118C5], [0x118A6, 0x118C6], [0x118A7, 0x118C7], [0x118A8, 0x118C8], [0x118A9, 0x118C9], [0x118AA, 0x118CA], [0x118AB, 0x118CB], [0x118AC, 0x118CC], [0x118AD, 0x118CD], [0x118AE, 0x118CE], [0x118AF, 0x118CF], [0x118B0, 0x118D0], [0x118B1, 0x118D1], [0x118B2, 0x118D2], [0x118B3, 0x118D3], [0x118B4, 0x118D4], [0x118B5, 0x118D5], [0x118B6, 0x118D6], [0x118B7, 0x118D7], [0x118B8, 0x118D8], [0x118B9, 0x118D9], [0x118BA, 0x118DA], [0x118BB, 0x118DB], [0x118BC, 0x118DC], [0x118BD, 0x118DD], [0x118BE, 0x118DE], [0x118BF, 0x118DF], [0x118C0, 0x118A0], [0x118C1, 0x118A1], [0x118C2, 0x118A2], [0x118C3, 0x118A3], [0x118C4, 0x118A4], [0x118C5, 0x118A5], [0x118C6, 0x118A6], [0x118C7, 0x118A7], [0x118C8, 0x118A8], [0x118C9, 0x118A9], [0x118CA, 0x118AA], [0x118CB, 0x118AB], [0x118CC, 0x118AC], [0x118CD, 0x118AD], [0x118CE, 0x118AE], [0x118CF, 0x118AF], [0x118D0, 0x118B0], [0x118D1, 0x118B1], [0x118D2, 0x118B2], [0x118D3, 0x118B3], [0x118D4, 0x118B4], [0x118D5, 0x118B5], [0x118D6, 0x118B6], [0x118D7, 0x118B7], [0x118D8, 0x118B8], [0x118D9, 0x118B9], [0x118DA, 0x118BA], [0x118DB, 0x118BB], [0x118DC, 0x118BC], [0x118DD, 0x118BD], [0x118DE, 0x118BE], [0x118DF, 0x118BF], [0x16E40, 0x16E60], [0x16E41, 0x16E61], [0x16E42, 0x16E62], [0x16E43, 0x16E63], [0x16E44, 0x16E64], [0x16E45, 0x16E65], [0x16E46, 0x16E66], [0x16E47, 0x16E67], [0x16E48, 0x16E68], [0x16E49, 0x16E69], [0x16E4A, 0x16E6A], [0x16E4B, 0x16E6B], [0x16E4C, 0x16E6C], [0x16E4D, 0x16E6D], [0x16E4E, 0x16E6E], [0x16E4F, 0x16E6F], [0x16E50, 0x16E70], [0x16E51, 0x16E71], [0x16E52, 0x16E72], [0x16E53, 0x16E73], [0x16E54, 0x16E74], [0x16E55, 0x16E75], [0x16E56, 0x16E76], [0x16E57, 0x16E77], [0x16E58, 0x16E78], [0x16E59, 0x16E79], [0x16E5A, 0x16E7A], [0x16E5B, 0x16E7B], [0x16E5C, 0x16E7C], [0x16E5D, 0x16E7D], [0x16E5E, 0x16E7E], [0x16E5F, 0x16E7F], [0x16E60, 0x16E40], [0x16E61, 0x16E41], [0x16E62, 0x16E42], [0x16E63, 0x16E43], [0x16E64, 0x16E44], [0x16E65, 0x16E45], [0x16E66, 0x16E46], [0x16E67, 0x16E47], [0x16E68, 0x16E48], [0x16E69, 0x16E49], [0x16E6A, 0x16E4A], [0x16E6B, 0x16E4B], [0x16E6C, 0x16E4C], [0x16E6D, 0x16E4D], [0x16E6E, 0x16E4E], [0x16E6F, 0x16E4F], [0x16E70, 0x16E50], [0x16E71, 0x16E51], [0x16E72, 0x16E52], [0x16E73, 0x16E53], [0x16E74, 0x16E54], [0x16E75, 0x16E55], [0x16E76, 0x16E56], [0x16E77, 0x16E57], [0x16E78, 0x16E58], [0x16E79, 0x16E59], [0x16E7A, 0x16E5A], [0x16E7B, 0x16E5B], [0x16E7C, 0x16E5C], [0x16E7D, 0x16E5D], [0x16E7E, 0x16E5E], [0x16E7F, 0x16E5F], [0x1E900, 0x1E922], [0x1E901, 0x1E923], [0x1E902, 0x1E924], [0x1E903, 0x1E925], [0x1E904, 0x1E926], [0x1E905, 0x1E927], [0x1E906, 0x1E928], [0x1E907, 0x1E929], [0x1E908, 0x1E92A], [0x1E909, 0x1E92B], [0x1E90A, 0x1E92C], [0x1E90B, 0x1E92D], [0x1E90C, 0x1E92E], [0x1E90D, 0x1E92F], [0x1E90E, 0x1E930], [0x1E90F, 0x1E931], [0x1E910, 0x1E932], [0x1E911, 0x1E933], [0x1E912, 0x1E934], [0x1E913, 0x1E935], [0x1E914, 0x1E936], [0x1E915, 0x1E937], [0x1E916, 0x1E938], [0x1E917, 0x1E939], [0x1E918, 0x1E93A], [0x1E919, 0x1E93B], [0x1E91A, 0x1E93C], [0x1E91B, 0x1E93D], [0x1E91C, 0x1E93E], [0x1E91D, 0x1E93F], [0x1E91E, 0x1E940], [0x1E91F, 0x1E941], [0x1E920, 0x1E942], [0x1E921, 0x1E943], [0x1E922, 0x1E900], [0x1E923, 0x1E901], [0x1E924, 0x1E902], [0x1E925, 0x1E903], [0x1E926, 0x1E904], [0x1E927, 0x1E905], [0x1E928, 0x1E906], [0x1E929, 0x1E907], [0x1E92A, 0x1E908], [0x1E92B, 0x1E909], [0x1E92C, 0x1E90A], [0x1E92D, 0x1E90B], [0x1E92E, 0x1E90C], [0x1E92F, 0x1E90D], [0x1E930, 0x1E90E], [0x1E931, 0x1E90F], [0x1E932, 0x1E910], [0x1E933, 0x1E911], [0x1E934, 0x1E912], [0x1E935, 0x1E913], [0x1E936, 0x1E914], [0x1E937, 0x1E915], [0x1E938, 0x1E916], [0x1E939, 0x1E917], [0x1E93A, 0x1E918], [0x1E93B, 0x1E919], [0x1E93C, 0x1E91A], [0x1E93D, 0x1E91B], [0x1E93E, 0x1E91C], [0x1E93F, 0x1E91D], [0x1E940, 0x1E91E], [0x1E941, 0x1E91F], [0x1E942, 0x1E920], [0x1E943, 0x1E921]]);","const set = require('regenerate')();\nset.addRange(0x10E80, 0x10EA9).addRange(0x10EAB, 0x10EAD).addRange(0x10EB0, 0x10EB1);\nmodule.exports = set;","const set = require('regenerate')(0x19BA, 0xAAB9);\nset.addRange(0xE40, 0xE44).addRange(0xEC0, 0xEC4).addRange(0x19B5, 0x19B7).addRange(0xAAB5, 0xAAB6).addRange(0xAABB, 0xAABC);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0xAB70, 0xABBF);\nmodule.exports = set;","const set = require('regenerate')(0xB5, 0x1BF, 0x259, 0x263, 0x26F, 0x275, 0x27D, 0x280, 0x292, 0x345, 0x37F, 0x386, 0x38C, 0x10C7, 0x10CD, 0x1D79, 0x1D7D, 0x1D8E, 0x1E9E, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2126, 0x2132, 0x214E, 0x2D27, 0x2D2D, 0xAB53);\nset.addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x137).addRange(0x139, 0x18C).addRange(0x18E, 0x19A).addRange(0x19C, 0x1A9).addRange(0x1AC, 0x1B9).addRange(0x1BC, 0x1BD).addRange(0x1C4, 0x220).addRange(0x222, 0x233).addRange(0x23A, 0x254).addRange(0x256, 0x257).addRange(0x25B, 0x25C).addRange(0x260, 0x261).addRange(0x265, 0x266).addRange(0x268, 0x26C).addRange(0x271, 0x272).addRange(0x282, 0x283).addRange(0x287, 0x28C).addRange(0x29D, 0x29E).addRange(0x370, 0x373).addRange(0x376, 0x377).addRange(0x37B, 0x37D).addRange(0x388, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3D1).addRange(0x3D5, 0x3F5).addRange(0x3F7, 0x3FB).addRange(0x3FD, 0x481).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x561, 0x587).addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FD, 0x10FF).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1E00, 0x1E9B).addRange(0x1EA0, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FBC);\nset.addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FCC).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FE0, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFC).addRange(0x212A, 0x212B).addRange(0x2160, 0x217F).addRange(0x2183, 0x2184).addRange(0x24B6, 0x24E9).addRange(0x2C00, 0x2C70).addRange(0x2C72, 0x2C73).addRange(0x2C75, 0x2C76).addRange(0x2C7E, 0x2CE3).addRange(0x2CEB, 0x2CEE).addRange(0x2CF2, 0x2CF3).addRange(0x2D00, 0x2D25).addRange(0xA640, 0xA66D).addRange(0xA680, 0xA69B).addRange(0xA722, 0xA72F).addRange(0xA732, 0xA76F).addRange(0xA779, 0xA787).addRange(0xA78B, 0xA78D).addRange(0xA790, 0xA794).addRange(0xA796, 0xA7AE).addRange(0xA7B0, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D6, 0xA7D9).addRange(0xA7F5, 0xA7F6).addRange(0xAB70, 0xABBF).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0x10400, 0x1044F).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x118A0, 0x118DF).addRange(0x16E40, 0x16E7F).addRange(0x1E900, 0x1E943);\nset;\nmodule.exports = set;","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","const set = require('regenerate')();\nset.addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C36).addRange(0x11C38, 0x11C45).addRange(0x11C50, 0x11C6C);\nmodule.exports = set;","const set = require('regenerate')(0xFDCF, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);\nset.addRange(0x600, 0x604).addRange(0x606, 0x6DC).addRange(0x6DE, 0x6FF).addRange(0x750, 0x77F).addRange(0x870, 0x88E).addRange(0x890, 0x891).addRange(0x898, 0x8E1).addRange(0x8E3, 0x8FF).addRange(0xFB50, 0xFBC2).addRange(0xFBD3, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFF).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0x102E0, 0x102FB).addRange(0x10E60, 0x10E7E).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1EEF0, 0x1EEF1);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x10350, 0x1037A);\nmodule.exports = set;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj[\"default\"] = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nmodule.exports = _interopRequireWildcard, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","const set = require('regenerate')(0xAA, 0xBA, 0x10FB, 0x202F, 0x2071, 0x207F, 0x20F0, 0x2132, 0x214E, 0xA7D3, 0xA92E);\nset.addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x2B8).addRange(0x2E0, 0x2E4).addRange(0x363, 0x36F).addRange(0x485, 0x486).addRange(0x951, 0x952).addRange(0x1D00, 0x1D25).addRange(0x1D2C, 0x1D5C).addRange(0x1D62, 0x1D65).addRange(0x1D6B, 0x1D77).addRange(0x1D79, 0x1DBE).addRange(0x1E00, 0x1EFF).addRange(0x2090, 0x209C).addRange(0x212A, 0x212B).addRange(0x2160, 0x2188).addRange(0x2C60, 0x2C7F).addRange(0xA700, 0xA707).addRange(0xA722, 0xA787).addRange(0xA78B, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA7FF).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB64).addRange(0xAB66, 0xAB69).addRange(0xFB00, 0xFB06).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x1DF00, 0x1DF1E);\nmodule.exports = set;","import { encode } from 'sourcemap-codec';\nvar BitSet = function BitSet(arg) {\n this.bits = arg instanceof BitSet ? arg.bits.slice() : [];\n};\nBitSet.prototype.add = function add(n) {\n this.bits[n >> 5] |= 1 << (n & 31);\n};\nBitSet.prototype.has = function has(n) {\n return !!(this.bits[n >> 5] & 1 << (n & 31));\n};\nvar Chunk = function Chunk(start, end, content) {\n this.start = start;\n this.end = end;\n this.original = content;\n this.intro = '';\n this.outro = '';\n this.content = content;\n this.storeName = false;\n this.edited = false;\n\n // we make these non-enumerable, for sanity while debugging\n Object.defineProperties(this, {\n previous: {\n writable: true,\n value: null\n },\n next: {\n writable: true,\n value: null\n }\n });\n};\nChunk.prototype.appendLeft = function appendLeft(content) {\n this.outro += content;\n};\nChunk.prototype.appendRight = function appendRight(content) {\n this.intro = this.intro + content;\n};\nChunk.prototype.clone = function clone() {\n var chunk = new Chunk(this.start, this.end, this.original);\n chunk.intro = this.intro;\n chunk.outro = this.outro;\n chunk.content = this.content;\n chunk.storeName = this.storeName;\n chunk.edited = this.edited;\n return chunk;\n};\nChunk.prototype.contains = function contains(index) {\n return this.start < index && index < this.end;\n};\nChunk.prototype.eachNext = function eachNext(fn) {\n var chunk = this;\n while (chunk) {\n fn(chunk);\n chunk = chunk.next;\n }\n};\nChunk.prototype.eachPrevious = function eachPrevious(fn) {\n var chunk = this;\n while (chunk) {\n fn(chunk);\n chunk = chunk.previous;\n }\n};\nChunk.prototype.edit = function edit(content, storeName, contentOnly) {\n this.content = content;\n if (!contentOnly) {\n this.intro = '';\n this.outro = '';\n }\n this.storeName = storeName;\n this.edited = true;\n return this;\n};\nChunk.prototype.prependLeft = function prependLeft(content) {\n this.outro = content + this.outro;\n};\nChunk.prototype.prependRight = function prependRight(content) {\n this.intro = content + this.intro;\n};\nChunk.prototype.split = function split(index) {\n var sliceIndex = index - this.start;\n var originalBefore = this.original.slice(0, sliceIndex);\n var originalAfter = this.original.slice(sliceIndex);\n this.original = originalBefore;\n var newChunk = new Chunk(index, this.end, originalAfter);\n newChunk.outro = this.outro;\n this.outro = '';\n this.end = index;\n if (this.edited) {\n // TODO is this block necessary?...\n newChunk.edit('', false);\n this.content = '';\n } else {\n this.content = originalBefore;\n }\n newChunk.next = this.next;\n if (newChunk.next) {\n newChunk.next.previous = newChunk;\n }\n newChunk.previous = this;\n this.next = newChunk;\n return newChunk;\n};\nChunk.prototype.toString = function toString() {\n return this.intro + this.content + this.outro;\n};\nChunk.prototype.trimEnd = function trimEnd(rx) {\n this.outro = this.outro.replace(rx, '');\n if (this.outro.length) {\n return true;\n }\n var trimmed = this.content.replace(rx, '');\n if (trimmed.length) {\n if (trimmed !== this.content) {\n this.split(this.start + trimmed.length).edit('', undefined, true);\n }\n return true;\n } else {\n this.edit('', undefined, true);\n this.intro = this.intro.replace(rx, '');\n if (this.intro.length) {\n return true;\n }\n }\n};\nChunk.prototype.trimStart = function trimStart(rx) {\n this.intro = this.intro.replace(rx, '');\n if (this.intro.length) {\n return true;\n }\n var trimmed = this.content.replace(rx, '');\n if (trimmed.length) {\n if (trimmed !== this.content) {\n this.split(this.end - trimmed.length);\n this.edit('', undefined, true);\n }\n return true;\n } else {\n this.edit('', undefined, true);\n this.outro = this.outro.replace(rx, '');\n if (this.outro.length) {\n return true;\n }\n }\n};\nvar btoa = function () {\n throw new Error('Unsupported environment: `window.btoa` or `Buffer` should be supported.');\n};\nif (typeof window !== 'undefined' && typeof window.btoa === 'function') {\n btoa = function (str) {\n return window.btoa(unescape(encodeURIComponent(str)));\n };\n} else if (typeof Buffer === 'function') {\n btoa = function (str) {\n return Buffer.from(str, 'utf-8').toString('base64');\n };\n}\nvar SourceMap = function SourceMap(properties) {\n this.version = 3;\n this.file = properties.file;\n this.sources = properties.sources;\n this.sourcesContent = properties.sourcesContent;\n this.names = properties.names;\n this.mappings = encode(properties.mappings);\n};\nSourceMap.prototype.toString = function toString() {\n return JSON.stringify(this);\n};\nSourceMap.prototype.toUrl = function toUrl() {\n return 'data:application/json;charset=utf-8;base64,' + btoa(this.toString());\n};\nfunction guessIndent(code) {\n var lines = code.split('\\n');\n var tabbed = lines.filter(function (line) {\n return /^\\t+/.test(line);\n });\n var spaced = lines.filter(function (line) {\n return /^ {2,}/.test(line);\n });\n if (tabbed.length === 0 && spaced.length === 0) {\n return null;\n }\n\n // More lines tabbed than spaced? Assume tabs, and\n // default to tabs in the case of a tie (or nothing\n // to go on)\n if (tabbed.length >= spaced.length) {\n return '\\t';\n }\n\n // Otherwise, we need to guess the multiple\n var min = spaced.reduce(function (previous, current) {\n var numSpaces = /^ +/.exec(current)[0].length;\n return Math.min(numSpaces, previous);\n }, Infinity);\n return new Array(min + 1).join(' ');\n}\nfunction getRelativePath(from, to) {\n var fromParts = from.split(/[/\\\\]/);\n var toParts = to.split(/[/\\\\]/);\n fromParts.pop(); // get dirname\n\n while (fromParts[0] === toParts[0]) {\n fromParts.shift();\n toParts.shift();\n }\n if (fromParts.length) {\n var i = fromParts.length;\n while (i--) {\n fromParts[i] = '..';\n }\n }\n return fromParts.concat(toParts).join('/');\n}\nvar toString = Object.prototype.toString;\nfunction isObject(thing) {\n return toString.call(thing) === '[object Object]';\n}\nfunction getLocator(source) {\n var originalLines = source.split('\\n');\n var lineOffsets = [];\n for (var i = 0, pos = 0; i < originalLines.length; i++) {\n lineOffsets.push(pos);\n pos += originalLines[i].length + 1;\n }\n return function locate(index) {\n var i = 0;\n var j = lineOffsets.length;\n while (i < j) {\n var m = i + j >> 1;\n if (index < lineOffsets[m]) {\n j = m;\n } else {\n i = m + 1;\n }\n }\n var line = i - 1;\n var column = index - lineOffsets[line];\n return {\n line: line,\n column: column\n };\n };\n}\nvar Mappings = function Mappings(hires) {\n this.hires = hires;\n this.generatedCodeLine = 0;\n this.generatedCodeColumn = 0;\n this.raw = [];\n this.rawSegments = this.raw[this.generatedCodeLine] = [];\n this.pending = null;\n};\nMappings.prototype.addEdit = function addEdit(sourceIndex, content, loc, nameIndex) {\n if (content.length) {\n var segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n if (nameIndex >= 0) {\n segment.push(nameIndex);\n }\n this.rawSegments.push(segment);\n } else if (this.pending) {\n this.rawSegments.push(this.pending);\n }\n this.advance(content);\n this.pending = null;\n};\nMappings.prototype.addUneditedChunk = function addUneditedChunk(sourceIndex, chunk, original, loc, sourcemapLocations) {\n var originalCharIndex = chunk.start;\n var first = true;\n while (originalCharIndex < chunk.end) {\n if (this.hires || first || sourcemapLocations.has(originalCharIndex)) {\n this.rawSegments.push([this.generatedCodeColumn, sourceIndex, loc.line, loc.column]);\n }\n if (original[originalCharIndex] === '\\n') {\n loc.line += 1;\n loc.column = 0;\n this.generatedCodeLine += 1;\n this.raw[this.generatedCodeLine] = this.rawSegments = [];\n this.generatedCodeColumn = 0;\n first = true;\n } else {\n loc.column += 1;\n this.generatedCodeColumn += 1;\n first = false;\n }\n originalCharIndex += 1;\n }\n this.pending = null;\n};\nMappings.prototype.advance = function advance(str) {\n if (!str) {\n return;\n }\n var lines = str.split('\\n');\n if (lines.length > 1) {\n for (var i = 0; i < lines.length - 1; i++) {\n this.generatedCodeLine++;\n this.raw[this.generatedCodeLine] = this.rawSegments = [];\n }\n this.generatedCodeColumn = 0;\n }\n this.generatedCodeColumn += lines[lines.length - 1].length;\n};\nvar n = '\\n';\nvar warned = {\n insertLeft: false,\n insertRight: false,\n storeName: false\n};\nvar MagicString = function MagicString(string, options) {\n if (options === void 0) options = {};\n var chunk = new Chunk(0, string.length, string);\n Object.defineProperties(this, {\n original: {\n writable: true,\n value: string\n },\n outro: {\n writable: true,\n value: ''\n },\n intro: {\n writable: true,\n value: ''\n },\n firstChunk: {\n writable: true,\n value: chunk\n },\n lastChunk: {\n writable: true,\n value: chunk\n },\n lastSearchedChunk: {\n writable: true,\n value: chunk\n },\n byStart: {\n writable: true,\n value: {}\n },\n byEnd: {\n writable: true,\n value: {}\n },\n filename: {\n writable: true,\n value: options.filename\n },\n indentExclusionRanges: {\n writable: true,\n value: options.indentExclusionRanges\n },\n sourcemapLocations: {\n writable: true,\n value: new BitSet()\n },\n storedNames: {\n writable: true,\n value: {}\n },\n indentStr: {\n writable: true,\n value: guessIndent(string)\n }\n });\n this.byStart[0] = chunk;\n this.byEnd[string.length] = chunk;\n};\nMagicString.prototype.addSourcemapLocation = function addSourcemapLocation(char) {\n this.sourcemapLocations.add(char);\n};\nMagicString.prototype.append = function append(content) {\n if (typeof content !== 'string') {\n throw new TypeError('outro content must be a string');\n }\n this.outro += content;\n return this;\n};\nMagicString.prototype.appendLeft = function appendLeft(index, content) {\n if (typeof content !== 'string') {\n throw new TypeError('inserted content must be a string');\n }\n this._split(index);\n var chunk = this.byEnd[index];\n if (chunk) {\n chunk.appendLeft(content);\n } else {\n this.intro += content;\n }\n return this;\n};\nMagicString.prototype.appendRight = function appendRight(index, content) {\n if (typeof content !== 'string') {\n throw new TypeError('inserted content must be a string');\n }\n this._split(index);\n var chunk = this.byStart[index];\n if (chunk) {\n chunk.appendRight(content);\n } else {\n this.outro += content;\n }\n return this;\n};\nMagicString.prototype.clone = function clone() {\n var cloned = new MagicString(this.original, {\n filename: this.filename\n });\n var originalChunk = this.firstChunk;\n var clonedChunk = cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone();\n while (originalChunk) {\n cloned.byStart[clonedChunk.start] = clonedChunk;\n cloned.byEnd[clonedChunk.end] = clonedChunk;\n var nextOriginalChunk = originalChunk.next;\n var nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone();\n if (nextClonedChunk) {\n clonedChunk.next = nextClonedChunk;\n nextClonedChunk.previous = clonedChunk;\n clonedChunk = nextClonedChunk;\n }\n originalChunk = nextOriginalChunk;\n }\n cloned.lastChunk = clonedChunk;\n if (this.indentExclusionRanges) {\n cloned.indentExclusionRanges = this.indentExclusionRanges.slice();\n }\n cloned.sourcemapLocations = new BitSet(this.sourcemapLocations);\n cloned.intro = this.intro;\n cloned.outro = this.outro;\n return cloned;\n};\nMagicString.prototype.generateDecodedMap = function generateDecodedMap(options) {\n var this$1$1 = this;\n options = options || {};\n var sourceIndex = 0;\n var names = Object.keys(this.storedNames);\n var mappings = new Mappings(options.hires);\n var locate = getLocator(this.original);\n if (this.intro) {\n mappings.advance(this.intro);\n }\n this.firstChunk.eachNext(function (chunk) {\n var loc = locate(chunk.start);\n if (chunk.intro.length) {\n mappings.advance(chunk.intro);\n }\n if (chunk.edited) {\n mappings.addEdit(sourceIndex, chunk.content, loc, chunk.storeName ? names.indexOf(chunk.original) : -1);\n } else {\n mappings.addUneditedChunk(sourceIndex, chunk, this$1$1.original, loc, this$1$1.sourcemapLocations);\n }\n if (chunk.outro.length) {\n mappings.advance(chunk.outro);\n }\n });\n return {\n file: options.file ? options.file.split(/[/\\\\]/).pop() : null,\n sources: [options.source ? getRelativePath(options.file || '', options.source) : null],\n sourcesContent: options.includeContent ? [this.original] : [null],\n names: names,\n mappings: mappings.raw\n };\n};\nMagicString.prototype.generateMap = function generateMap(options) {\n return new SourceMap(this.generateDecodedMap(options));\n};\nMagicString.prototype.getIndentString = function getIndentString() {\n return this.indentStr === null ? '\\t' : this.indentStr;\n};\nMagicString.prototype.indent = function indent(indentStr, options) {\n var pattern = /^[^\\r\\n]/gm;\n if (isObject(indentStr)) {\n options = indentStr;\n indentStr = undefined;\n }\n indentStr = indentStr !== undefined ? indentStr : this.indentStr || '\\t';\n if (indentStr === '') {\n return this;\n } // noop\n\n options = options || {};\n\n // Process exclusion ranges\n var isExcluded = {};\n if (options.exclude) {\n var exclusions = typeof options.exclude[0] === 'number' ? [options.exclude] : options.exclude;\n exclusions.forEach(function (exclusion) {\n for (var i = exclusion[0]; i < exclusion[1]; i += 1) {\n isExcluded[i] = true;\n }\n });\n }\n var shouldIndentNextCharacter = options.indentStart !== false;\n var replacer = function (match) {\n if (shouldIndentNextCharacter) {\n return \"\" + indentStr + match;\n }\n shouldIndentNextCharacter = true;\n return match;\n };\n this.intro = this.intro.replace(pattern, replacer);\n var charIndex = 0;\n var chunk = this.firstChunk;\n while (chunk) {\n var end = chunk.end;\n if (chunk.edited) {\n if (!isExcluded[charIndex]) {\n chunk.content = chunk.content.replace(pattern, replacer);\n if (chunk.content.length) {\n shouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === '\\n';\n }\n }\n } else {\n charIndex = chunk.start;\n while (charIndex < end) {\n if (!isExcluded[charIndex]) {\n var char = this.original[charIndex];\n if (char === '\\n') {\n shouldIndentNextCharacter = true;\n } else if (char !== '\\r' && shouldIndentNextCharacter) {\n shouldIndentNextCharacter = false;\n if (charIndex === chunk.start) {\n chunk.prependRight(indentStr);\n } else {\n this._splitChunk(chunk, charIndex);\n chunk = chunk.next;\n chunk.prependRight(indentStr);\n }\n }\n }\n charIndex += 1;\n }\n }\n charIndex = chunk.end;\n chunk = chunk.next;\n }\n this.outro = this.outro.replace(pattern, replacer);\n return this;\n};\nMagicString.prototype.insert = function insert() {\n throw new Error('magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)');\n};\nMagicString.prototype.insertLeft = function insertLeft(index, content) {\n if (!warned.insertLeft) {\n console.warn('magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead'); // eslint-disable-line no-console\n warned.insertLeft = true;\n }\n return this.appendLeft(index, content);\n};\nMagicString.prototype.insertRight = function insertRight(index, content) {\n if (!warned.insertRight) {\n console.warn('magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead'); // eslint-disable-line no-console\n warned.insertRight = true;\n }\n return this.prependRight(index, content);\n};\nMagicString.prototype.move = function move(start, end, index) {\n if (index >= start && index <= end) {\n throw new Error('Cannot move a selection inside itself');\n }\n this._split(start);\n this._split(end);\n this._split(index);\n var first = this.byStart[start];\n var last = this.byEnd[end];\n var oldLeft = first.previous;\n var oldRight = last.next;\n var newRight = this.byStart[index];\n if (!newRight && last === this.lastChunk) {\n return this;\n }\n var newLeft = newRight ? newRight.previous : this.lastChunk;\n if (oldLeft) {\n oldLeft.next = oldRight;\n }\n if (oldRight) {\n oldRight.previous = oldLeft;\n }\n if (newLeft) {\n newLeft.next = first;\n }\n if (newRight) {\n newRight.previous = last;\n }\n if (!first.previous) {\n this.firstChunk = last.next;\n }\n if (!last.next) {\n this.lastChunk = first.previous;\n this.lastChunk.next = null;\n }\n first.previous = newLeft;\n last.next = newRight || null;\n if (!newLeft) {\n this.firstChunk = first;\n }\n if (!newRight) {\n this.lastChunk = last;\n }\n return this;\n};\nMagicString.prototype.overwrite = function overwrite(start, end, content, options) {\n if (typeof content !== 'string') {\n throw new TypeError('replacement content must be a string');\n }\n while (start < 0) {\n start += this.original.length;\n }\n while (end < 0) {\n end += this.original.length;\n }\n if (end > this.original.length) {\n throw new Error('end is out of bounds');\n }\n if (start === end) {\n throw new Error('Cannot overwrite a zero-length range – use appendLeft or prependRight instead');\n }\n this._split(start);\n this._split(end);\n if (options === true) {\n if (!warned.storeName) {\n console.warn('The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string'); // eslint-disable-line no-console\n warned.storeName = true;\n }\n options = {\n storeName: true\n };\n }\n var storeName = options !== undefined ? options.storeName : false;\n var contentOnly = options !== undefined ? options.contentOnly : false;\n if (storeName) {\n var original = this.original.slice(start, end);\n Object.defineProperty(this.storedNames, original, {\n writable: true,\n value: true,\n enumerable: true\n });\n }\n var first = this.byStart[start];\n var last = this.byEnd[end];\n if (first) {\n var chunk = first;\n while (chunk !== last) {\n if (chunk.next !== this.byStart[chunk.end]) {\n throw new Error('Cannot overwrite across a split point');\n }\n chunk = chunk.next;\n chunk.edit('', false);\n }\n first.edit(content, storeName, contentOnly);\n } else {\n // must be inserting at the end\n var newChunk = new Chunk(start, end, '').edit(content, storeName);\n\n // TODO last chunk in the array may not be the last chunk, if it's moved...\n last.next = newChunk;\n newChunk.previous = last;\n }\n return this;\n};\nMagicString.prototype.prepend = function prepend(content) {\n if (typeof content !== 'string') {\n throw new TypeError('outro content must be a string');\n }\n this.intro = content + this.intro;\n return this;\n};\nMagicString.prototype.prependLeft = function prependLeft(index, content) {\n if (typeof content !== 'string') {\n throw new TypeError('inserted content must be a string');\n }\n this._split(index);\n var chunk = this.byEnd[index];\n if (chunk) {\n chunk.prependLeft(content);\n } else {\n this.intro = content + this.intro;\n }\n return this;\n};\nMagicString.prototype.prependRight = function prependRight(index, content) {\n if (typeof content !== 'string') {\n throw new TypeError('inserted content must be a string');\n }\n this._split(index);\n var chunk = this.byStart[index];\n if (chunk) {\n chunk.prependRight(content);\n } else {\n this.outro = content + this.outro;\n }\n return this;\n};\nMagicString.prototype.remove = function remove(start, end) {\n while (start < 0) {\n start += this.original.length;\n }\n while (end < 0) {\n end += this.original.length;\n }\n if (start === end) {\n return this;\n }\n if (start < 0 || end > this.original.length) {\n throw new Error('Character is out of bounds');\n }\n if (start > end) {\n throw new Error('end must be greater than start');\n }\n this._split(start);\n this._split(end);\n var chunk = this.byStart[start];\n while (chunk) {\n chunk.intro = '';\n chunk.outro = '';\n chunk.edit('');\n chunk = end > chunk.end ? this.byStart[chunk.end] : null;\n }\n return this;\n};\nMagicString.prototype.lastChar = function lastChar() {\n if (this.outro.length) {\n return this.outro[this.outro.length - 1];\n }\n var chunk = this.lastChunk;\n do {\n if (chunk.outro.length) {\n return chunk.outro[chunk.outro.length - 1];\n }\n if (chunk.content.length) {\n return chunk.content[chunk.content.length - 1];\n }\n if (chunk.intro.length) {\n return chunk.intro[chunk.intro.length - 1];\n }\n } while (chunk = chunk.previous);\n if (this.intro.length) {\n return this.intro[this.intro.length - 1];\n }\n return '';\n};\nMagicString.prototype.lastLine = function lastLine() {\n var lineIndex = this.outro.lastIndexOf(n);\n if (lineIndex !== -1) {\n return this.outro.substr(lineIndex + 1);\n }\n var lineStr = this.outro;\n var chunk = this.lastChunk;\n do {\n if (chunk.outro.length > 0) {\n lineIndex = chunk.outro.lastIndexOf(n);\n if (lineIndex !== -1) {\n return chunk.outro.substr(lineIndex + 1) + lineStr;\n }\n lineStr = chunk.outro + lineStr;\n }\n if (chunk.content.length > 0) {\n lineIndex = chunk.content.lastIndexOf(n);\n if (lineIndex !== -1) {\n return chunk.content.substr(lineIndex + 1) + lineStr;\n }\n lineStr = chunk.content + lineStr;\n }\n if (chunk.intro.length > 0) {\n lineIndex = chunk.intro.lastIndexOf(n);\n if (lineIndex !== -1) {\n return chunk.intro.substr(lineIndex + 1) + lineStr;\n }\n lineStr = chunk.intro + lineStr;\n }\n } while (chunk = chunk.previous);\n lineIndex = this.intro.lastIndexOf(n);\n if (lineIndex !== -1) {\n return this.intro.substr(lineIndex + 1) + lineStr;\n }\n return this.intro + lineStr;\n};\nMagicString.prototype.slice = function slice(start, end) {\n if (start === void 0) start = 0;\n if (end === void 0) end = this.original.length;\n while (start < 0) {\n start += this.original.length;\n }\n while (end < 0) {\n end += this.original.length;\n }\n var result = '';\n\n // find start chunk\n var chunk = this.firstChunk;\n while (chunk && (chunk.start > start || chunk.end <= start)) {\n // found end chunk before start\n if (chunk.start < end && chunk.end >= end) {\n return result;\n }\n chunk = chunk.next;\n }\n if (chunk && chunk.edited && chunk.start !== start) {\n throw new Error(\"Cannot use replaced character \" + start + \" as slice start anchor.\");\n }\n var startChunk = chunk;\n while (chunk) {\n if (chunk.intro && (startChunk !== chunk || chunk.start === start)) {\n result += chunk.intro;\n }\n var containsEnd = chunk.start < end && chunk.end >= end;\n if (containsEnd && chunk.edited && chunk.end !== end) {\n throw new Error(\"Cannot use replaced character \" + end + \" as slice end anchor.\");\n }\n var sliceStart = startChunk === chunk ? start - chunk.start : 0;\n var sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length;\n result += chunk.content.slice(sliceStart, sliceEnd);\n if (chunk.outro && (!containsEnd || chunk.end === end)) {\n result += chunk.outro;\n }\n if (containsEnd) {\n break;\n }\n chunk = chunk.next;\n }\n return result;\n};\n\n// TODO deprecate this? not really very useful\nMagicString.prototype.snip = function snip(start, end) {\n var clone = this.clone();\n clone.remove(0, start);\n clone.remove(end, clone.original.length);\n return clone;\n};\nMagicString.prototype._split = function _split(index) {\n if (this.byStart[index] || this.byEnd[index]) {\n return;\n }\n var chunk = this.lastSearchedChunk;\n var searchForward = index > chunk.end;\n while (chunk) {\n if (chunk.contains(index)) {\n return this._splitChunk(chunk, index);\n }\n chunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start];\n }\n};\nMagicString.prototype._splitChunk = function _splitChunk(chunk, index) {\n if (chunk.edited && chunk.content.length) {\n // zero-length edited chunks are a special case (overlapping replacements)\n var loc = getLocator(this.original)(index);\n throw new Error(\"Cannot split a chunk that has already been edited (\" + loc.line + \":\" + loc.column + \" – \\\"\" + chunk.original + \"\\\")\");\n }\n var newChunk = chunk.split(index);\n this.byEnd[index] = chunk;\n this.byStart[index] = newChunk;\n this.byEnd[newChunk.end] = newChunk;\n if (chunk === this.lastChunk) {\n this.lastChunk = newChunk;\n }\n this.lastSearchedChunk = chunk;\n return true;\n};\nMagicString.prototype.toString = function toString() {\n var str = this.intro;\n var chunk = this.firstChunk;\n while (chunk) {\n str += chunk.toString();\n chunk = chunk.next;\n }\n return str + this.outro;\n};\nMagicString.prototype.isEmpty = function isEmpty() {\n var chunk = this.firstChunk;\n do {\n if (chunk.intro.length && chunk.intro.trim() || chunk.content.length && chunk.content.trim() || chunk.outro.length && chunk.outro.trim()) {\n return false;\n }\n } while (chunk = chunk.next);\n return true;\n};\nMagicString.prototype.length = function length() {\n var chunk = this.firstChunk;\n var length = 0;\n do {\n length += chunk.intro.length + chunk.content.length + chunk.outro.length;\n } while (chunk = chunk.next);\n return length;\n};\nMagicString.prototype.trimLines = function trimLines() {\n return this.trim('[\\\\r\\\\n]');\n};\nMagicString.prototype.trim = function trim(charType) {\n return this.trimStart(charType).trimEnd(charType);\n};\nMagicString.prototype.trimEndAborted = function trimEndAborted(charType) {\n var rx = new RegExp((charType || '\\\\s') + '+$');\n this.outro = this.outro.replace(rx, '');\n if (this.outro.length) {\n return true;\n }\n var chunk = this.lastChunk;\n do {\n var end = chunk.end;\n var aborted = chunk.trimEnd(rx);\n\n // if chunk was trimmed, we have a new lastChunk\n if (chunk.end !== end) {\n if (this.lastChunk === chunk) {\n this.lastChunk = chunk.next;\n }\n this.byEnd[chunk.end] = chunk;\n this.byStart[chunk.next.start] = chunk.next;\n this.byEnd[chunk.next.end] = chunk.next;\n }\n if (aborted) {\n return true;\n }\n chunk = chunk.previous;\n } while (chunk);\n return false;\n};\nMagicString.prototype.trimEnd = function trimEnd(charType) {\n this.trimEndAborted(charType);\n return this;\n};\nMagicString.prototype.trimStartAborted = function trimStartAborted(charType) {\n var rx = new RegExp('^' + (charType || '\\\\s') + '+');\n this.intro = this.intro.replace(rx, '');\n if (this.intro.length) {\n return true;\n }\n var chunk = this.firstChunk;\n do {\n var end = chunk.end;\n var aborted = chunk.trimStart(rx);\n if (chunk.end !== end) {\n // special case...\n if (chunk === this.lastChunk) {\n this.lastChunk = chunk.next;\n }\n this.byEnd[chunk.end] = chunk;\n this.byStart[chunk.next.start] = chunk.next;\n this.byEnd[chunk.next.end] = chunk.next;\n }\n if (aborted) {\n return true;\n }\n chunk = chunk.next;\n } while (chunk);\n return false;\n};\nMagicString.prototype.trimStart = function trimStart(charType) {\n this.trimStartAborted(charType);\n return this;\n};\nvar hasOwnProp = Object.prototype.hasOwnProperty;\nvar Bundle = function Bundle(options) {\n if (options === void 0) options = {};\n this.intro = options.intro || '';\n this.separator = options.separator !== undefined ? options.separator : '\\n';\n this.sources = [];\n this.uniqueSources = [];\n this.uniqueSourceIndexByFilename = {};\n};\nBundle.prototype.addSource = function addSource(source) {\n if (source instanceof MagicString) {\n return this.addSource({\n content: source,\n filename: source.filename,\n separator: this.separator\n });\n }\n if (!isObject(source) || !source.content) {\n throw new Error('bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`');\n }\n ['filename', 'indentExclusionRanges', 'separator'].forEach(function (option) {\n if (!hasOwnProp.call(source, option)) {\n source[option] = source.content[option];\n }\n });\n if (source.separator === undefined) {\n // TODO there's a bunch of this sort of thing, needs cleaning up\n source.separator = this.separator;\n }\n if (source.filename) {\n if (!hasOwnProp.call(this.uniqueSourceIndexByFilename, source.filename)) {\n this.uniqueSourceIndexByFilename[source.filename] = this.uniqueSources.length;\n this.uniqueSources.push({\n filename: source.filename,\n content: source.content.original\n });\n } else {\n var uniqueSource = this.uniqueSources[this.uniqueSourceIndexByFilename[source.filename]];\n if (source.content.original !== uniqueSource.content) {\n throw new Error(\"Illegal source: same filename (\" + source.filename + \"), different contents\");\n }\n }\n }\n this.sources.push(source);\n return this;\n};\nBundle.prototype.append = function append(str, options) {\n this.addSource({\n content: new MagicString(str),\n separator: options && options.separator || ''\n });\n return this;\n};\nBundle.prototype.clone = function clone() {\n var bundle = new Bundle({\n intro: this.intro,\n separator: this.separator\n });\n this.sources.forEach(function (source) {\n bundle.addSource({\n filename: source.filename,\n content: source.content.clone(),\n separator: source.separator\n });\n });\n return bundle;\n};\nBundle.prototype.generateDecodedMap = function generateDecodedMap(options) {\n var this$1$1 = this;\n if (options === void 0) options = {};\n var names = [];\n this.sources.forEach(function (source) {\n Object.keys(source.content.storedNames).forEach(function (name) {\n if (!~names.indexOf(name)) {\n names.push(name);\n }\n });\n });\n var mappings = new Mappings(options.hires);\n if (this.intro) {\n mappings.advance(this.intro);\n }\n this.sources.forEach(function (source, i) {\n if (i > 0) {\n mappings.advance(this$1$1.separator);\n }\n var sourceIndex = source.filename ? this$1$1.uniqueSourceIndexByFilename[source.filename] : -1;\n var magicString = source.content;\n var locate = getLocator(magicString.original);\n if (magicString.intro) {\n mappings.advance(magicString.intro);\n }\n magicString.firstChunk.eachNext(function (chunk) {\n var loc = locate(chunk.start);\n if (chunk.intro.length) {\n mappings.advance(chunk.intro);\n }\n if (source.filename) {\n if (chunk.edited) {\n mappings.addEdit(sourceIndex, chunk.content, loc, chunk.storeName ? names.indexOf(chunk.original) : -1);\n } else {\n mappings.addUneditedChunk(sourceIndex, chunk, magicString.original, loc, magicString.sourcemapLocations);\n }\n } else {\n mappings.advance(chunk.content);\n }\n if (chunk.outro.length) {\n mappings.advance(chunk.outro);\n }\n });\n if (magicString.outro) {\n mappings.advance(magicString.outro);\n }\n });\n return {\n file: options.file ? options.file.split(/[/\\\\]/).pop() : null,\n sources: this.uniqueSources.map(function (source) {\n return options.file ? getRelativePath(options.file, source.filename) : source.filename;\n }),\n sourcesContent: this.uniqueSources.map(function (source) {\n return options.includeContent ? source.content : null;\n }),\n names: names,\n mappings: mappings.raw\n };\n};\nBundle.prototype.generateMap = function generateMap(options) {\n return new SourceMap(this.generateDecodedMap(options));\n};\nBundle.prototype.getIndentString = function getIndentString() {\n var indentStringCounts = {};\n this.sources.forEach(function (source) {\n var indentStr = source.content.indentStr;\n if (indentStr === null) {\n return;\n }\n if (!indentStringCounts[indentStr]) {\n indentStringCounts[indentStr] = 0;\n }\n indentStringCounts[indentStr] += 1;\n });\n return Object.keys(indentStringCounts).sort(function (a, b) {\n return indentStringCounts[a] - indentStringCounts[b];\n })[0] || '\\t';\n};\nBundle.prototype.indent = function indent(indentStr) {\n var this$1$1 = this;\n if (!arguments.length) {\n indentStr = this.getIndentString();\n }\n if (indentStr === '') {\n return this;\n } // noop\n\n var trailingNewline = !this.intro || this.intro.slice(-1) === '\\n';\n this.sources.forEach(function (source, i) {\n var separator = source.separator !== undefined ? source.separator : this$1$1.separator;\n var indentStart = trailingNewline || i > 0 && /\\r?\\n$/.test(separator);\n source.content.indent(indentStr, {\n exclude: source.indentExclusionRanges,\n indentStart: indentStart //: trailingNewline || /\\r?\\n$/.test( separator ) //true///\\r?\\n/.test( separator )\n });\n\n trailingNewline = source.content.lastChar() === '\\n';\n });\n if (this.intro) {\n this.intro = indentStr + this.intro.replace(/^[^\\n]/gm, function (match, index) {\n return index > 0 ? indentStr + match : match;\n });\n }\n return this;\n};\nBundle.prototype.prepend = function prepend(str) {\n this.intro = str + this.intro;\n return this;\n};\nBundle.prototype.toString = function toString() {\n var this$1$1 = this;\n var body = this.sources.map(function (source, i) {\n var separator = source.separator !== undefined ? source.separator : this$1$1.separator;\n var str = (i > 0 ? separator : '') + source.content.toString();\n return str;\n }).join('');\n return this.intro + body;\n};\nBundle.prototype.isEmpty = function isEmpty() {\n if (this.intro.length && this.intro.trim()) {\n return false;\n }\n if (this.sources.some(function (source) {\n return !source.content.isEmpty();\n })) {\n return false;\n }\n return true;\n};\nBundle.prototype.length = function length() {\n return this.sources.reduce(function (length, source) {\n return length + source.content.length();\n }, this.intro.length);\n};\nBundle.prototype.trimLines = function trimLines() {\n return this.trim('[\\\\r\\\\n]');\n};\nBundle.prototype.trim = function trim(charType) {\n return this.trimStart(charType).trimEnd(charType);\n};\nBundle.prototype.trimStart = function trimStart(charType) {\n var rx = new RegExp('^' + (charType || '\\\\s') + '+');\n this.intro = this.intro.replace(rx, '');\n if (!this.intro) {\n var source;\n var i = 0;\n do {\n source = this.sources[i++];\n if (!source) {\n break;\n }\n } while (!source.content.trimStartAborted(charType));\n }\n return this;\n};\nBundle.prototype.trimEnd = function trimEnd(charType) {\n var rx = new RegExp((charType || '\\\\s') + '+$');\n var source;\n var i = this.sources.length - 1;\n do {\n source = this.sources[i--];\n if (!source) {\n this.intro = this.intro.replace(rx, '');\n break;\n }\n } while (!source.content.trimEndAborted(charType));\n return this;\n};\nexport { Bundle, SourceMap, MagicString as default };","const set = require('regenerate')();\nset.addRange(0x1D800, 0x1DA8B).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x1680, 0x169C);\nmodule.exports = set;","const set = require('regenerate')(0x38C, 0x85E, 0x9B2, 0x9D7, 0xA3C, 0xA51, 0xA5E, 0xAD0, 0xB9C, 0xBD0, 0xBD7, 0xC5D, 0xDBD, 0xDCA, 0xDD6, 0xE84, 0xEA5, 0xEC6, 0x10C7, 0x10CD, 0x1258, 0x12C0, 0x1940, 0x1F59, 0x1F5B, 0x1F5D, 0x2D27, 0x2D2D, 0xA7D3, 0xFB3E, 0xFDCF, 0xFEFF, 0x101A0, 0x10808, 0x1083C, 0x1093F, 0x110CD, 0x11288, 0x11350, 0x11357, 0x11909, 0x11D3A, 0x11FB0, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1E2FF, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E, 0x1F7F0, 0xE0001);\nset.addRange(0x0, 0x377).addRange(0x37A, 0x37F).addRange(0x384, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x52F).addRange(0x531, 0x556).addRange(0x559, 0x58A).addRange(0x58D, 0x58F).addRange(0x591, 0x5C7).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F4).addRange(0x600, 0x70D).addRange(0x70F, 0x74A).addRange(0x74D, 0x7B1).addRange(0x7C0, 0x7FA).addRange(0x7FD, 0x82D).addRange(0x830, 0x83E).addRange(0x840, 0x85B).addRange(0x860, 0x86A).addRange(0x870, 0x88E).addRange(0x890, 0x891).addRange(0x898, 0x983).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9BC, 0x9C4).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CE).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E3).addRange(0x9E6, 0x9FE).addRange(0xA01, 0xA03).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33).addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA3E, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA59, 0xA5C).addRange(0xA66, 0xA76).addRange(0xA81, 0xA83).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0);\nset.addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xABC, 0xAC5).addRange(0xAC7, 0xAC9).addRange(0xACB, 0xACD).addRange(0xAE0, 0xAE3).addRange(0xAE6, 0xAF1).addRange(0xAF9, 0xAFF).addRange(0xB01, 0xB03).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB3C, 0xB44).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4D).addRange(0xB55, 0xB57).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB63).addRange(0xB66, 0xB77).addRange(0xB82, 0xB83).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xBBE, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCD).addRange(0xBE6, 0xBFA).addRange(0xC00, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC3C, 0xC44).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC63).addRange(0xC66, 0xC6F).addRange(0xC77, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9);\nset.addRange(0xCBC, 0xCC4).addRange(0xCC6, 0xCC8).addRange(0xCCA, 0xCCD).addRange(0xCD5, 0xCD6).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE3).addRange(0xCE6, 0xCEF).addRange(0xCF1, 0xCF2).addRange(0xD00, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD44).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4F).addRange(0xD54, 0xD63).addRange(0xD66, 0xD7F).addRange(0xD81, 0xD83).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6).addRange(0xDCF, 0xDD4).addRange(0xDD8, 0xDDF).addRange(0xDE6, 0xDEF).addRange(0xDF2, 0xDF4).addRange(0xE01, 0xE3A).addRange(0xE3F, 0xE5B).addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEBD).addRange(0xEC0, 0xEC4).addRange(0xEC8, 0xECD).addRange(0xED0, 0xED9).addRange(0xEDC, 0xEDF).addRange(0xF00, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF71, 0xF97).addRange(0xF99, 0xFBC).addRange(0xFBE, 0xFCC).addRange(0xFCE, 0xFDA).addRange(0x1000, 0x10C5).addRange(0x10D0, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5);\nset.addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x135D, 0x137C).addRange(0x1380, 0x1399).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1400, 0x169C).addRange(0x16A0, 0x16F8).addRange(0x1700, 0x1715).addRange(0x171F, 0x1736).addRange(0x1740, 0x1753).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1772, 0x1773).addRange(0x1780, 0x17DD).addRange(0x17E0, 0x17E9).addRange(0x17F0, 0x17F9).addRange(0x1800, 0x1819).addRange(0x1820, 0x1878).addRange(0x1880, 0x18AA).addRange(0x18B0, 0x18F5).addRange(0x1900, 0x191E).addRange(0x1920, 0x192B).addRange(0x1930, 0x193B).addRange(0x1944, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x19D0, 0x19DA).addRange(0x19DE, 0x1A1B).addRange(0x1A1E, 0x1A5E).addRange(0x1A60, 0x1A7C).addRange(0x1A7F, 0x1A89).addRange(0x1A90, 0x1A99).addRange(0x1AA0, 0x1AAD).addRange(0x1AB0, 0x1ACE).addRange(0x1B00, 0x1B4C).addRange(0x1B50, 0x1B7E).addRange(0x1B80, 0x1BF3).addRange(0x1BFC, 0x1C37).addRange(0x1C3B, 0x1C49).addRange(0x1C4D, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CC7).addRange(0x1CD0, 0x1CFA).addRange(0x1D00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D);\nset.addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FC4).addRange(0x1FC6, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FDD, 0x1FEF).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFE).addRange(0x2000, 0x2064).addRange(0x2066, 0x2071).addRange(0x2074, 0x208E).addRange(0x2090, 0x209C).addRange(0x20A0, 0x20C0).addRange(0x20D0, 0x20F0).addRange(0x2100, 0x218B).addRange(0x2190, 0x2426).addRange(0x2440, 0x244A).addRange(0x2460, 0x2B73).addRange(0x2B76, 0x2B95).addRange(0x2B97, 0x2CF3).addRange(0x2CF9, 0x2D25).addRange(0x2D30, 0x2D67).addRange(0x2D6F, 0x2D70).addRange(0x2D7F, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x2DE0, 0x2E5D).addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5).addRange(0x2FF0, 0x2FFB).addRange(0x3000, 0x303F).addRange(0x3041, 0x3096).addRange(0x3099, 0x30FF).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x3190, 0x31E3).addRange(0x31F0, 0x321E).addRange(0x3220, 0xA48C).addRange(0xA490, 0xA4C6).addRange(0xA4D0, 0xA62B).addRange(0xA640, 0xA6F7).addRange(0xA700, 0xA7CA).addRange(0xA7D0, 0xA7D1);\nset.addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA82C).addRange(0xA830, 0xA839).addRange(0xA840, 0xA877).addRange(0xA880, 0xA8C5).addRange(0xA8CE, 0xA8D9).addRange(0xA8E0, 0xA953).addRange(0xA95F, 0xA97C).addRange(0xA980, 0xA9CD).addRange(0xA9CF, 0xA9D9).addRange(0xA9DE, 0xA9FE).addRange(0xAA00, 0xAA36).addRange(0xAA40, 0xAA4D).addRange(0xAA50, 0xAA59).addRange(0xAA5C, 0xAAC2).addRange(0xAADB, 0xAAF6).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xAB30, 0xAB6B).addRange(0xAB70, 0xABED).addRange(0xABF0, 0xABF9).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xD800, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1D, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBC2).addRange(0xFBD3, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFE19).addRange(0xFE20, 0xFE52).addRange(0xFE54, 0xFE66).addRange(0xFE68, 0xFE6B).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0xFF01, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0xFFE0, 0xFFE6).addRange(0xFFE8, 0xFFEE);\nset.addRange(0xFFF9, 0xFFFD).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10100, 0x10102).addRange(0x10107, 0x10133).addRange(0x10137, 0x1018E).addRange(0x10190, 0x1019C).addRange(0x101D0, 0x101FD).addRange(0x10280, 0x1029C).addRange(0x102A0, 0x102D0).addRange(0x102E0, 0x102FB).addRange(0x10300, 0x10323).addRange(0x1032D, 0x1034A).addRange(0x10350, 0x1037A).addRange(0x10380, 0x1039D).addRange(0x1039F, 0x103C3).addRange(0x103C8, 0x103D5).addRange(0x10400, 0x1049D).addRange(0x104A0, 0x104A9).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x1056F, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10857, 0x1089E).addRange(0x108A7, 0x108AF).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x108FB, 0x1091B);\nset.addRange(0x1091F, 0x10939).addRange(0x10980, 0x109B7).addRange(0x109BC, 0x109CF).addRange(0x109D2, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A38, 0x10A3A).addRange(0x10A3F, 0x10A48).addRange(0x10A50, 0x10A58).addRange(0x10A60, 0x10A9F).addRange(0x10AC0, 0x10AE6).addRange(0x10AEB, 0x10AF6).addRange(0x10B00, 0x10B35).addRange(0x10B39, 0x10B55).addRange(0x10B58, 0x10B72).addRange(0x10B78, 0x10B91).addRange(0x10B99, 0x10B9C).addRange(0x10BA9, 0x10BAF).addRange(0x10C00, 0x10C48).addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10CFA, 0x10D27).addRange(0x10D30, 0x10D39).addRange(0x10E60, 0x10E7E).addRange(0x10E80, 0x10EA9).addRange(0x10EAB, 0x10EAD).addRange(0x10EB0, 0x10EB1).addRange(0x10F00, 0x10F27).addRange(0x10F30, 0x10F59).addRange(0x10F70, 0x10F89).addRange(0x10FB0, 0x10FCB).addRange(0x10FE0, 0x10FF6).addRange(0x11000, 0x1104D).addRange(0x11052, 0x11075).addRange(0x1107F, 0x110C2).addRange(0x110D0, 0x110E8).addRange(0x110F0, 0x110F9).addRange(0x11100, 0x11134).addRange(0x11136, 0x11147).addRange(0x11150, 0x11176).addRange(0x11180, 0x111DF).addRange(0x111E1, 0x111F4).addRange(0x11200, 0x11211).addRange(0x11213, 0x1123E).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A9).addRange(0x112B0, 0x112EA);\nset.addRange(0x112F0, 0x112F9).addRange(0x11300, 0x11303).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1133B, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134D).addRange(0x1135D, 0x11363).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x11400, 0x1145B).addRange(0x1145D, 0x11461).addRange(0x11480, 0x114C7).addRange(0x114D0, 0x114D9).addRange(0x11580, 0x115B5).addRange(0x115B8, 0x115DD).addRange(0x11600, 0x11644).addRange(0x11650, 0x11659).addRange(0x11660, 0x1166C).addRange(0x11680, 0x116B9).addRange(0x116C0, 0x116C9).addRange(0x11700, 0x1171A).addRange(0x1171D, 0x1172B).addRange(0x11730, 0x11746).addRange(0x11800, 0x1183B).addRange(0x118A0, 0x118F2).addRange(0x118FF, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x11935).addRange(0x11937, 0x11938).addRange(0x1193B, 0x11946).addRange(0x11950, 0x11959).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D7).addRange(0x119DA, 0x119E4).addRange(0x11A00, 0x11A47).addRange(0x11A50, 0x11AA2).addRange(0x11AB0, 0x11AF8).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C36).addRange(0x11C38, 0x11C45).addRange(0x11C50, 0x11C6C).addRange(0x11C70, 0x11C8F).addRange(0x11C92, 0x11CA7).addRange(0x11CA9, 0x11CB6).addRange(0x11D00, 0x11D06);\nset.addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D47).addRange(0x11D50, 0x11D59).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D8E).addRange(0x11D90, 0x11D91).addRange(0x11D93, 0x11D98).addRange(0x11DA0, 0x11DA9).addRange(0x11EE0, 0x11EF8).addRange(0x11FC0, 0x11FF1).addRange(0x11FFF, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12470, 0x12474).addRange(0x12480, 0x12543).addRange(0x12F90, 0x12FF2).addRange(0x13000, 0x1342E).addRange(0x13430, 0x13438).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A60, 0x16A69).addRange(0x16A6E, 0x16ABE).addRange(0x16AC0, 0x16AC9).addRange(0x16AD0, 0x16AED).addRange(0x16AF0, 0x16AF5).addRange(0x16B00, 0x16B45).addRange(0x16B50, 0x16B59).addRange(0x16B5B, 0x16B61).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16E40, 0x16E9A).addRange(0x16F00, 0x16F4A).addRange(0x16F4F, 0x16F87).addRange(0x16F8F, 0x16F9F).addRange(0x16FE0, 0x16FE4).addRange(0x16FF0, 0x16FF1).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B000, 0x1B122).addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167).addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C);\nset.addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1BC9C, 0x1BCA3).addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1CF50, 0x1CFC3).addRange(0x1D000, 0x1D0F5).addRange(0x1D100, 0x1D126).addRange(0x1D129, 0x1D1EA).addRange(0x1D200, 0x1D245).addRange(0x1D2E0, 0x1D2F3).addRange(0x1D300, 0x1D356).addRange(0x1D360, 0x1D378).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D7CB).addRange(0x1D7CE, 0x1DA8B).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF).addRange(0x1DF00, 0x1DF1E).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A).addRange(0x1E100, 0x1E12C).addRange(0x1E130, 0x1E13D).addRange(0x1E140, 0x1E149).addRange(0x1E14E, 0x1E14F).addRange(0x1E290, 0x1E2AE).addRange(0x1E2C0, 0x1E2F9).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE).addRange(0x1E800, 0x1E8C4).addRange(0x1E8C7, 0x1E8D6);\nset.addRange(0x1E900, 0x1E94B).addRange(0x1E950, 0x1E959).addRange(0x1E95E, 0x1E95F).addRange(0x1EC71, 0x1ECB4).addRange(0x1ED01, 0x1ED3D).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1EEF0, 0x1EEF1).addRange(0x1F000, 0x1F02B).addRange(0x1F030, 0x1F093).addRange(0x1F0A0, 0x1F0AE).addRange(0x1F0B1, 0x1F0BF).addRange(0x1F0C1, 0x1F0CF).addRange(0x1F0D1, 0x1F0F5).addRange(0x1F100, 0x1F1AD).addRange(0x1F1E6, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x1F260, 0x1F265).addRange(0x1F300, 0x1F6D7).addRange(0x1F6DD, 0x1F6EC).addRange(0x1F6F0, 0x1F6FC).addRange(0x1F700, 0x1F773).addRange(0x1F780, 0x1F7D8).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F800, 0x1F80B).addRange(0x1F810, 0x1F847).addRange(0x1F850, 0x1F859).addRange(0x1F860, 0x1F887).addRange(0x1F890, 0x1F8AD).addRange(0x1F8B0, 0x1F8B1).addRange(0x1F900, 0x1FA53).addRange(0x1FA60, 0x1FA6D).addRange(0x1FA70, 0x1FA74).addRange(0x1FA78, 0x1FA7C);\nset.addRange(0x1FA80, 0x1FA86).addRange(0x1FA90, 0x1FAAC).addRange(0x1FAB0, 0x1FABA).addRange(0x1FAC0, 0x1FAC5).addRange(0x1FAD0, 0x1FAD9).addRange(0x1FAE0, 0x1FAE7).addRange(0x1FAF0, 0x1FAF6).addRange(0x1FB00, 0x1FB92).addRange(0x1FB94, 0x1FBCA).addRange(0x1FBF0, 0x1FBF9).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B738).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A).addRange(0xE0020, 0xE007F).addRange(0xE0100, 0xE01EF).addRange(0xF0000, 0xFFFFD).addRange(0x100000, 0x10FFFD);\nmodule.exports = set;","var UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/** Used to match wrap detail comments. */\nvar reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/;\n\n/**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\nfunction insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n}\n\nmodule.exports = insertWrapDetails;\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n var keys = getOwnPropertyNames(sourceComponent);\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n return targetComponent;\n}\nmodule.exports = hoistNonReactStatics;","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || this || Function('return this')();\n","const set = require('regenerate')(0xD7, 0xF7, 0x374, 0x37E, 0x385, 0x387, 0x605, 0x6DD, 0x8E2, 0xE3F, 0x3000, 0x3004, 0x3012, 0x3020, 0x3036, 0x327F, 0x33FF, 0xAB5B, 0xFEFF, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1F7F0, 0xE0001);\nset.addRange(0x0, 0x40).addRange(0x5B, 0x60).addRange(0x7B, 0xA9).addRange(0xAB, 0xB9).addRange(0xBB, 0xBF).addRange(0x2B9, 0x2DF).addRange(0x2E5, 0x2E9).addRange(0x2EC, 0x2FF).addRange(0xFD5, 0xFD8).addRange(0x16EB, 0x16ED).addRange(0x2000, 0x200B).addRange(0x200E, 0x202E).addRange(0x2030, 0x2064).addRange(0x2066, 0x2070).addRange(0x2074, 0x207E).addRange(0x2080, 0x208E).addRange(0x20A0, 0x20C0).addRange(0x2100, 0x2125).addRange(0x2127, 0x2129).addRange(0x212C, 0x2131).addRange(0x2133, 0x214D).addRange(0x214F, 0x215F).addRange(0x2189, 0x218B).addRange(0x2190, 0x2426).addRange(0x2440, 0x244A).addRange(0x2460, 0x27FF).addRange(0x2900, 0x2B73).addRange(0x2B76, 0x2B95).addRange(0x2B97, 0x2BFF).addRange(0x2E00, 0x2E42).addRange(0x2E44, 0x2E5D).addRange(0x2FF0, 0x2FFB).addRange(0x3248, 0x325F).addRange(0x32B1, 0x32BF).addRange(0x32CC, 0x32CF).addRange(0x3371, 0x337A).addRange(0x3380, 0x33DF).addRange(0x4DC0, 0x4DFF).addRange(0xA708, 0xA721).addRange(0xA788, 0xA78A).addRange(0xAB6A, 0xAB6B).addRange(0xFE10, 0xFE19).addRange(0xFE30, 0xFE44).addRange(0xFE47, 0xFE52).addRange(0xFE54, 0xFE66).addRange(0xFE68, 0xFE6B).addRange(0xFF01, 0xFF20).addRange(0xFF3B, 0xFF40).addRange(0xFF5B, 0xFF60).addRange(0xFFE0, 0xFFE6).addRange(0xFFE8, 0xFFEE);\nset.addRange(0xFFF9, 0xFFFD).addRange(0x10190, 0x1019C).addRange(0x101D0, 0x101FC).addRange(0x1CF50, 0x1CFC3).addRange(0x1D000, 0x1D0F5).addRange(0x1D100, 0x1D126).addRange(0x1D129, 0x1D166).addRange(0x1D16A, 0x1D17A).addRange(0x1D183, 0x1D184).addRange(0x1D18C, 0x1D1A9).addRange(0x1D1AE, 0x1D1EA).addRange(0x1D2E0, 0x1D2F3).addRange(0x1D300, 0x1D356).addRange(0x1D372, 0x1D378).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D7CB).addRange(0x1D7CE, 0x1D7FF).addRange(0x1EC71, 0x1ECB4).addRange(0x1ED01, 0x1ED3D).addRange(0x1F000, 0x1F02B).addRange(0x1F030, 0x1F093).addRange(0x1F0A0, 0x1F0AE).addRange(0x1F0B1, 0x1F0BF).addRange(0x1F0C1, 0x1F0CF).addRange(0x1F0D1, 0x1F0F5).addRange(0x1F100, 0x1F1AD).addRange(0x1F1E6, 0x1F1FF).addRange(0x1F201, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F260, 0x1F265).addRange(0x1F300, 0x1F6D7).addRange(0x1F6DD, 0x1F6EC).addRange(0x1F6F0, 0x1F6FC).addRange(0x1F700, 0x1F773).addRange(0x1F780, 0x1F7D8);\nset.addRange(0x1F7E0, 0x1F7EB).addRange(0x1F800, 0x1F80B).addRange(0x1F810, 0x1F847).addRange(0x1F850, 0x1F859).addRange(0x1F860, 0x1F887).addRange(0x1F890, 0x1F8AD).addRange(0x1F8B0, 0x1F8B1).addRange(0x1F900, 0x1FA53).addRange(0x1FA60, 0x1FA6D).addRange(0x1FA70, 0x1FA74).addRange(0x1FA78, 0x1FA7C).addRange(0x1FA80, 0x1FA86).addRange(0x1FA90, 0x1FAAC).addRange(0x1FAB0, 0x1FABA).addRange(0x1FAC0, 0x1FAC5).addRange(0x1FAD0, 0x1FAD9).addRange(0x1FAE0, 0x1FAE7).addRange(0x1FAF0, 0x1FAF6).addRange(0x1FB00, 0x1FB92).addRange(0x1FB94, 0x1FBCA).addRange(0x1FBF0, 0x1FBF9).addRange(0xE0020, 0xE007F);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C36).addRange(0x11C38, 0x11C45).addRange(0x11C50, 0x11C6C);\nmodule.exports = set;","export default path => {\n if (path === undefined) {\n return path\n }\n if (path === `/`) {\n return `/`\n }\n if (path.charAt(path.length - 1) === `/`) {\n return path.slice(0, -1)\n }\n return path\n}\n","import { pick } from \"@reach/router/lib/utils\"\nimport stripPrefix from \"./strip-prefix\"\nimport normalizePagePath from \"./normalize-page-path\"\n\nconst pathCache = new Map()\nlet matchPaths = []\n\nconst trimPathname = rawPathname => {\n const pathname = decodeURIComponent(rawPathname)\n // Remove the pathPrefix from the pathname.\n const trimmedPathname = stripPrefix(pathname, __BASE_PATH__)\n // Remove any hashfragment\n .split(`#`)[0]\n // Remove search query\n .split(`?`)[0]\n\n return trimmedPathname\n}\n\nfunction absolutify(path) {\n // If it's already absolute, return as-is\n if (\n path.startsWith(`/`) ||\n path.startsWith(`https://`) ||\n path.startsWith(`http://`)\n ) {\n return path\n }\n // Calculate path relative to current location, adding a trailing slash to\n // match behavior of @reach/router\n return new URL(\n path,\n window.location.href + (window.location.href.endsWith(`/`) ? `` : `/`)\n ).pathname\n}\n\n/**\n * Set list of matchPaths\n *\n * @param {Array<{path: string, matchPath: string}>} value collection of matchPaths\n */\nexport const setMatchPaths = value => {\n matchPaths = value\n}\n\n/**\n * Return a matchpath url\n * if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n * `/foo?bar=far` => `/page1`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string|null}\n */\nexport const findMatchPath = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return normalizePagePath(path.route.originalPath)\n }\n\n return null\n}\n\n/**\n * Return a matchpath params from reach/router rules\n * if `match-paths.json` contains `{ \":bar/*foo\" }`, and the path is /baz/zaz/zoo\n * then it returns\n * { bar: baz, foo: zaz/zoo }\n *\n * @param {string} rawPathname A raw pathname\n * @return {object}\n */\nexport const grabMatchParams = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return path.params\n }\n\n return {}\n}\n\n// Given a raw URL path, returns the cleaned version of it (trim off\n// `#` and query params), or if it matches an entry in\n// `match-paths.json`, its matched path is returned\n//\n// E.g. `/foo?bar=far` => `/foo`\n//\n// Or if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n// `/foo?bar=far` => `/page1`\nexport const findPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n if (pathCache.has(trimmedPathname)) {\n return pathCache.get(trimmedPathname)\n }\n\n let foundPath = findMatchPath(trimmedPathname)\n\n if (!foundPath) {\n foundPath = cleanPath(rawPathname)\n }\n\n pathCache.set(trimmedPathname, foundPath)\n\n return foundPath\n}\n\n/**\n * Clean a url and converts /index.html => /\n * E.g. `/foo?bar=far` => `/foo`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string}\n */\nexport const cleanPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n\n let foundPath = trimmedPathname\n if (foundPath === `/index.html`) {\n foundPath = `/`\n }\n\n foundPath = normalizePagePath(foundPath)\n\n return foundPath\n}\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","const set = require('regenerate')(0x1091F);\nset.addRange(0x10900, 0x1091B);\nmodule.exports = set;","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var createWrap = require('./_createWrap');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_FLAG = 8;\n\n/**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\nfunction curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n}\n\n// Assign default placeholders.\ncurry.placeholder = {};\n\nmodule.exports = curry;\n","var aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","const set = require('regenerate')(0x1C5, 0x1C8, 0x1CB, 0x1F2, 0x1FBC, 0x1FCC, 0x1FFC);\nset.addRange(0x1F88, 0x1F8F).addRange(0x1F98, 0x1F9F).addRange(0x1FA8, 0x1FAF);\nmodule.exports = set;","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\n","var baseClone = require('./_baseClone'),\n baseMatchesProperty = require('./_baseMatchesProperty');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\nfunction matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n}\n\nmodule.exports = matchesProperty;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = useScrollRestoration;\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nvar _react = require(\"react\");\n\nvar _router = require(\"@reach/router\");\n\nfunction useScrollRestoration(identifier) {\n var location = (0, _router.useLocation)();\n var state = (0, _react.useContext)(_scrollHandler.ScrollContext);\n var ref = (0, _react.useRef)();\n (0, _react.useLayoutEffect)(function () {\n if (ref.current) {\n var position = state.read(location, identifier);\n ref.current.scrollTo(0, position || 0);\n }\n }, []);\n return {\n ref: ref,\n onScroll: function onScroll() {\n if (ref.current) {\n state.save(location, identifier, ref.current.scrollTop);\n }\n }\n };\n}","const set = require('regenerate')(0xAD, 0x34F, 0x61C, 0x3164, 0xFEFF, 0xFFA0);\nset.addRange(0x115F, 0x1160).addRange(0x17B4, 0x17B5).addRange(0x180B, 0x180F).addRange(0x200B, 0x200F).addRange(0x202A, 0x202E).addRange(0x2060, 0x206F).addRange(0xFE00, 0xFE0F).addRange(0xFFF0, 0xFFF8).addRange(0x1BCA0, 0x1BCA3).addRange(0x1D173, 0x1D17A).addRange(0xE0000, 0xE0FFF);\nmodule.exports = set;","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","const set = require('regenerate')(0x110CD);\nset.addRange(0x11080, 0x110C2);\nmodule.exports = set;","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","const set = require('regenerate')();\nset.addRange(0xA980, 0xA9CD).addRange(0xA9D0, 0xA9D9).addRange(0xA9DE, 0xA9DF);\nmodule.exports = set;","var toString = {}.toString;\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};","var isPlainObject = require('./isPlainObject');\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n}\n\nmodule.exports = customOmitClone;\n","var hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","const set = require('regenerate')();\nset.addRange(0x30, 0x39).addRange(0x41, 0x46).addRange(0x61, 0x66).addRange(0xFF10, 0xFF19).addRange(0xFF21, 0xFF26).addRange(0xFF41, 0xFF46);\nmodule.exports = set;","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n/* global Reflect, Promise */\n\nvar extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n};\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\nexport var __assign = function () {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\nexport function __param(paramIndex, decorator) {\n return function (target, key) {\n decorator(target, key, paramIndex);\n };\n}\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) {\n if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\");\n return f;\n }\n var kind = contextIn.kind,\n key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _,\n done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) {\n if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\");\n extraInitializers.push(accept(f || null));\n };\n var result = (0, decorators[i])(kind === \"accessor\" ? {\n get: descriptor.get,\n set: descriptor.set\n } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n } else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n}\n;\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n}\n;\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n}\n;\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", {\n configurable: true,\n value: prefix ? \"\".concat(prefix, \" \", name) : name\n });\n}\n;\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\nexport function __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nexport var __createBinding = Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = {\n enumerable: true,\n get: function () {\n return m[k];\n }\n };\n }\n Object.defineProperty(o, k2, desc);\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n};\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];\n return r;\n}\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []),\n i,\n q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i;\n function verb(n) {\n if (g[n]) i[n] = function (v) {\n return new Promise(function (a, b) {\n q.push([n, v, a, b]) > 1 || resume(n, v);\n });\n };\n }\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\n }\n function step(r) {\n r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n }\n function fulfill(value) {\n resume(\"next\", value);\n }\n function reject(value) {\n resume(\"throw\", value);\n }\n function settle(f, v) {\n if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n }\n}\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) {\n throw e;\n }), verb(\"return\"), i[Symbol.iterator] = function () {\n return this;\n }, i;\n function verb(n, f) {\n i[n] = o[n] ? function (v) {\n return (p = !p) ? {\n value: __await(o[n](v)),\n done: false\n } : f ? f(v) : v;\n } : f;\n }\n}\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator],\n i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i);\n function verb(n) {\n i[n] = o[n] && function (v) {\n return new Promise(function (resolve, reject) {\n v = o[n](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function (v) {\n resolve({\n value: v,\n done: d\n });\n }, reject);\n }\n}\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n}\n;\nvar __setModuleDefault = Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n};\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\nexport function __importDefault(mod) {\n return mod && mod.__esModule ? mod : {\n default: mod\n };\n}\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;\n}\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || typeof receiver !== \"object\" && typeof receiver !== \"function\") throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn\n};","/**\n * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt\n */\nvar SUPPORTED_LOCALE = {\n tr: {\n regexp: /\\u0130|\\u0049|\\u0049\\u0307/g,\n map: {\n İ: \"\\u0069\",\n I: \"\\u0131\",\n İ: \"\\u0069\"\n }\n },\n az: {\n regexp: /\\u0130/g,\n map: {\n İ: \"\\u0069\",\n I: \"\\u0131\",\n İ: \"\\u0069\"\n }\n },\n lt: {\n regexp: /\\u0049|\\u004A|\\u012E|\\u00CC|\\u00CD|\\u0128/g,\n map: {\n I: \"\\u0069\\u0307\",\n J: \"\\u006A\\u0307\",\n Į: \"\\u012F\\u0307\",\n Ì: \"\\u0069\\u0307\\u0300\",\n Í: \"\\u0069\\u0307\\u0301\",\n Ĩ: \"\\u0069\\u0307\\u0303\"\n }\n }\n};\n/**\n * Localized lower case.\n */\nexport function localeLowerCase(str, locale) {\n var lang = SUPPORTED_LOCALE[locale.toLowerCase()];\n if (lang) return lowerCase(str.replace(lang.regexp, function (m) {\n return lang.map[m];\n }));\n return lowerCase(str);\n}\n/**\n * Lower case as a function.\n */\nexport function lowerCase(str) {\n return str.toLowerCase();\n}","import { lowerCase } from \"lower-case\";\n// Support camel case (\"camelCase\" -> \"camel Case\" and \"CAMELCase\" -> \"CAMEL Case\").\nvar DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];\n// Remove all non-word characters.\nvar DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;\n/**\n * Normalize the string into something other libraries can manipulate easier.\n */\nexport function noCase(input, options) {\n if (options === void 0) {\n options = {};\n }\n var _a = options.splitRegexp,\n splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a,\n _b = options.stripRegexp,\n stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b,\n _c = options.transform,\n transform = _c === void 0 ? lowerCase : _c,\n _d = options.delimiter,\n delimiter = _d === void 0 ? \" \" : _d;\n var result = replace(replace(input, splitRegexp, \"$1\\0$2\"), stripRegexp, \"\\0\");\n var start = 0;\n var end = result.length;\n // Trim the delimiter from around the output string.\n while (result.charAt(start) === \"\\0\") start++;\n while (result.charAt(end - 1) === \"\\0\") end--;\n // Transform each token independently.\n return result.slice(start, end).split(\"\\0\").map(transform).join(delimiter);\n}\n/**\n * Replace `re` in the input string with the replacement value.\n */\nfunction replace(input, re, value) {\n if (re instanceof RegExp) return input.replace(re, value);\n return re.reduce(function (input, re) {\n return input.replace(re, value);\n }, input);\n}","import { __assign } from \"tslib\";\nimport { noCase } from \"no-case\";\nexport function pascalCaseTransform(input, index) {\n var firstChar = input.charAt(0);\n var lowerChars = input.substr(1).toLowerCase();\n if (index > 0 && firstChar >= \"0\" && firstChar <= \"9\") {\n return \"_\" + firstChar + lowerChars;\n }\n return \"\" + firstChar.toUpperCase() + lowerChars;\n}\nexport function pascalCaseTransformMerge(input) {\n return input.charAt(0).toUpperCase() + input.slice(1).toLowerCase();\n}\nexport function pascalCase(input, options) {\n if (options === void 0) {\n options = {};\n }\n return noCase(input, __assign({\n delimiter: \"\",\n transform: pascalCaseTransform\n }, options));\n}","import \"core-js/modules/es.typed-array.set.js\";\nimport \"core-js/modules/es.typed-array.sort.js\";\nfunction createError(message) {\n var err = new Error(message);\n err.source = \"ulid\";\n return err;\n}\n// These values should NEVER change. If\n// they do, we're no longer making ulids!\nvar ENCODING = \"0123456789ABCDEFGHJKMNPQRSTVWXYZ\"; // Crockford's Base32\nvar ENCODING_LEN = ENCODING.length;\nvar TIME_MAX = Math.pow(2, 48) - 1;\nvar TIME_LEN = 10;\nvar RANDOM_LEN = 16;\nfunction replaceCharAt(str, index, char) {\n if (index > str.length - 1) {\n return str;\n }\n return str.substr(0, index) + char + str.substr(index + 1);\n}\nfunction incrementBase32(str) {\n var done = undefined;\n var index = str.length;\n var char = void 0;\n var charIndex = void 0;\n var maxCharIndex = ENCODING_LEN - 1;\n while (!done && index-- >= 0) {\n char = str[index];\n charIndex = ENCODING.indexOf(char);\n if (charIndex === -1) {\n throw createError(\"incorrectly encoded string\");\n }\n if (charIndex === maxCharIndex) {\n str = replaceCharAt(str, index, ENCODING[0]);\n continue;\n }\n done = replaceCharAt(str, index, ENCODING[charIndex + 1]);\n }\n if (typeof done === \"string\") {\n return done;\n }\n throw createError(\"cannot increment this string\");\n}\nfunction randomChar(prng) {\n var rand = Math.floor(prng() * ENCODING_LEN);\n if (rand === ENCODING_LEN) {\n rand = ENCODING_LEN - 1;\n }\n return ENCODING.charAt(rand);\n}\nfunction encodeTime(now, len) {\n if (isNaN(now)) {\n throw new Error(now + \" must be a number\");\n }\n if (now > TIME_MAX) {\n throw createError(\"cannot encode time greater than \" + TIME_MAX);\n }\n if (now < 0) {\n throw createError(\"time must be positive\");\n }\n if (Number.isInteger(now) === false) {\n throw createError(\"time must be an integer\");\n }\n var mod = void 0;\n var str = \"\";\n for (; len > 0; len--) {\n mod = now % ENCODING_LEN;\n str = ENCODING.charAt(mod) + str;\n now = (now - mod) / ENCODING_LEN;\n }\n return str;\n}\nfunction encodeRandom(len, prng) {\n var str = \"\";\n for (; len > 0; len--) {\n str = randomChar(prng) + str;\n }\n return str;\n}\nfunction decodeTime(id) {\n if (id.length !== TIME_LEN + RANDOM_LEN) {\n throw createError(\"malformed ulid\");\n }\n var time = id.substr(0, TIME_LEN).split(\"\").reverse().reduce(function (carry, char, index) {\n var encodingIndex = ENCODING.indexOf(char);\n if (encodingIndex === -1) {\n throw createError(\"invalid character found: \" + char);\n }\n return carry += encodingIndex * Math.pow(ENCODING_LEN, index);\n }, 0);\n if (time > TIME_MAX) {\n throw createError(\"malformed ulid, timestamp too large\");\n }\n return time;\n}\nfunction detectPrng() {\n var allowInsecure = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var root = arguments[1];\n if (!root) {\n root = typeof window !== \"undefined\" ? window : null;\n }\n var browserCrypto = root && (root.crypto || root.msCrypto);\n if (browserCrypto) {\n return function () {\n var buffer = new Uint8Array(1);\n browserCrypto.getRandomValues(buffer);\n return buffer[0] / 0xff;\n };\n } else {\n try {\n var nodeCrypto = require(\"crypto\");\n return function () {\n return nodeCrypto.randomBytes(1).readUInt8() / 0xff;\n };\n } catch (e) {}\n }\n if (allowInsecure) {\n try {\n console.error(\"secure crypto unusable, falling back to insecure Math.random()!\");\n } catch (e) {}\n return function () {\n return Math.random();\n };\n }\n throw createError(\"secure crypto unusable, insecure Math.random not allowed\");\n}\nfunction factory(currPrng) {\n if (!currPrng) {\n currPrng = detectPrng();\n }\n return function ulid(seedTime) {\n if (isNaN(seedTime)) {\n seedTime = Date.now();\n }\n return encodeTime(seedTime, TIME_LEN) + encodeRandom(RANDOM_LEN, currPrng);\n };\n}\nfunction monotonicFactory(currPrng) {\n if (!currPrng) {\n currPrng = detectPrng();\n }\n var lastTime = 0;\n var lastRandom = void 0;\n return function ulid(seedTime) {\n if (isNaN(seedTime)) {\n seedTime = Date.now();\n }\n if (seedTime <= lastTime) {\n var incrementedRandom = lastRandom = incrementBase32(lastRandom);\n return encodeTime(lastTime, TIME_LEN) + incrementedRandom;\n }\n lastTime = seedTime;\n var newRandom = lastRandom = encodeRandom(RANDOM_LEN, currPrng);\n return encodeTime(seedTime, TIME_LEN) + newRandom;\n };\n}\nvar ulid = factory();\nexport { replaceCharAt, incrementBase32, randomChar, encodeTime, encodeRandom, decodeTime, detectPrng, factory, monotonicFactory, ulid };","var characterMap = {\n \"À\": \"A\",\n \"Á\": \"A\",\n \"Â\": \"A\",\n \"Ã\": \"A\",\n \"Ä\": \"A\",\n \"Å\": \"A\",\n \"Ấ\": \"A\",\n \"Ắ\": \"A\",\n \"Ẳ\": \"A\",\n \"Ẵ\": \"A\",\n \"Ặ\": \"A\",\n \"Æ\": \"AE\",\n \"Ầ\": \"A\",\n \"Ằ\": \"A\",\n \"Ȃ\": \"A\",\n \"Ç\": \"C\",\n \"Ḉ\": \"C\",\n \"È\": \"E\",\n \"É\": \"E\",\n \"Ê\": \"E\",\n \"Ë\": \"E\",\n \"Ế\": \"E\",\n \"Ḗ\": \"E\",\n \"Ề\": \"E\",\n \"Ḕ\": \"E\",\n \"Ḝ\": \"E\",\n \"Ȇ\": \"E\",\n \"Ì\": \"I\",\n \"Í\": \"I\",\n \"Î\": \"I\",\n \"Ï\": \"I\",\n \"Ḯ\": \"I\",\n \"Ȋ\": \"I\",\n \"Ð\": \"D\",\n \"Ñ\": \"N\",\n \"Ò\": \"O\",\n \"Ó\": \"O\",\n \"Ô\": \"O\",\n \"Õ\": \"O\",\n \"Ö\": \"O\",\n \"Ø\": \"O\",\n \"Ố\": \"O\",\n \"Ṍ\": \"O\",\n \"Ṓ\": \"O\",\n \"Ȏ\": \"O\",\n \"Ù\": \"U\",\n \"Ú\": \"U\",\n \"Û\": \"U\",\n \"Ü\": \"U\",\n \"Ý\": \"Y\",\n \"à\": \"a\",\n \"á\": \"a\",\n \"â\": \"a\",\n \"ã\": \"a\",\n \"ä\": \"a\",\n \"å\": \"a\",\n \"ấ\": \"a\",\n \"ắ\": \"a\",\n \"ẳ\": \"a\",\n \"ẵ\": \"a\",\n \"ặ\": \"a\",\n \"æ\": \"ae\",\n \"ầ\": \"a\",\n \"ằ\": \"a\",\n \"ȃ\": \"a\",\n \"ç\": \"c\",\n \"ḉ\": \"c\",\n \"è\": \"e\",\n \"é\": \"e\",\n \"ê\": \"e\",\n \"ë\": \"e\",\n \"ế\": \"e\",\n \"ḗ\": \"e\",\n \"ề\": \"e\",\n \"ḕ\": \"e\",\n \"ḝ\": \"e\",\n \"ȇ\": \"e\",\n \"ì\": \"i\",\n \"í\": \"i\",\n \"î\": \"i\",\n \"ï\": \"i\",\n \"ḯ\": \"i\",\n \"ȋ\": \"i\",\n \"ð\": \"d\",\n \"ñ\": \"n\",\n \"ò\": \"o\",\n \"ó\": \"o\",\n \"ô\": \"o\",\n \"õ\": \"o\",\n \"ö\": \"o\",\n \"ø\": \"o\",\n \"ố\": \"o\",\n \"ṍ\": \"o\",\n \"ṓ\": \"o\",\n \"ȏ\": \"o\",\n \"ù\": \"u\",\n \"ú\": \"u\",\n \"û\": \"u\",\n \"ü\": \"u\",\n \"ý\": \"y\",\n \"ÿ\": \"y\",\n \"Ā\": \"A\",\n \"ā\": \"a\",\n \"Ă\": \"A\",\n \"ă\": \"a\",\n \"Ą\": \"A\",\n \"ą\": \"a\",\n \"Ć\": \"C\",\n \"ć\": \"c\",\n \"Ĉ\": \"C\",\n \"ĉ\": \"c\",\n \"Ċ\": \"C\",\n \"ċ\": \"c\",\n \"Č\": \"C\",\n \"č\": \"c\",\n \"C̆\": \"C\",\n \"c̆\": \"c\",\n \"Ď\": \"D\",\n \"ď\": \"d\",\n \"Đ\": \"D\",\n \"đ\": \"d\",\n \"Ē\": \"E\",\n \"ē\": \"e\",\n \"Ĕ\": \"E\",\n \"ĕ\": \"e\",\n \"Ė\": \"E\",\n \"ė\": \"e\",\n \"Ę\": \"E\",\n \"ę\": \"e\",\n \"Ě\": \"E\",\n \"ě\": \"e\",\n \"Ĝ\": \"G\",\n \"Ǵ\": \"G\",\n \"ĝ\": \"g\",\n \"ǵ\": \"g\",\n \"Ğ\": \"G\",\n \"ğ\": \"g\",\n \"Ġ\": \"G\",\n \"ġ\": \"g\",\n \"Ģ\": \"G\",\n \"ģ\": \"g\",\n \"Ĥ\": \"H\",\n \"ĥ\": \"h\",\n \"Ħ\": \"H\",\n \"ħ\": \"h\",\n \"Ḫ\": \"H\",\n \"ḫ\": \"h\",\n \"Ĩ\": \"I\",\n \"ĩ\": \"i\",\n \"Ī\": \"I\",\n \"ī\": \"i\",\n \"Ĭ\": \"I\",\n \"ĭ\": \"i\",\n \"Į\": \"I\",\n \"į\": \"i\",\n \"İ\": \"I\",\n \"ı\": \"i\",\n \"IJ\": \"IJ\",\n \"ij\": \"ij\",\n \"Ĵ\": \"J\",\n \"ĵ\": \"j\",\n \"Ķ\": \"K\",\n \"ķ\": \"k\",\n \"Ḱ\": \"K\",\n \"ḱ\": \"k\",\n \"K̆\": \"K\",\n \"k̆\": \"k\",\n \"Ĺ\": \"L\",\n \"ĺ\": \"l\",\n \"Ļ\": \"L\",\n \"ļ\": \"l\",\n \"Ľ\": \"L\",\n \"ľ\": \"l\",\n \"Ŀ\": \"L\",\n \"ŀ\": \"l\",\n \"Ł\": \"l\",\n \"ł\": \"l\",\n \"Ḿ\": \"M\",\n \"ḿ\": \"m\",\n \"M̆\": \"M\",\n \"m̆\": \"m\",\n \"Ń\": \"N\",\n \"ń\": \"n\",\n \"Ņ\": \"N\",\n \"ņ\": \"n\",\n \"Ň\": \"N\",\n \"ň\": \"n\",\n \"ʼn\": \"n\",\n \"N̆\": \"N\",\n \"n̆\": \"n\",\n \"Ō\": \"O\",\n \"ō\": \"o\",\n \"Ŏ\": \"O\",\n \"ŏ\": \"o\",\n \"Ő\": \"O\",\n \"ő\": \"o\",\n \"Œ\": \"OE\",\n \"œ\": \"oe\",\n \"P̆\": \"P\",\n \"p̆\": \"p\",\n \"Ŕ\": \"R\",\n \"ŕ\": \"r\",\n \"Ŗ\": \"R\",\n \"ŗ\": \"r\",\n \"Ř\": \"R\",\n \"ř\": \"r\",\n \"R̆\": \"R\",\n \"r̆\": \"r\",\n \"Ȓ\": \"R\",\n \"ȓ\": \"r\",\n \"Ś\": \"S\",\n \"ś\": \"s\",\n \"Ŝ\": \"S\",\n \"ŝ\": \"s\",\n \"Ş\": \"S\",\n \"Ș\": \"S\",\n \"ș\": \"s\",\n \"ş\": \"s\",\n \"Š\": \"S\",\n \"š\": \"s\",\n \"Ţ\": \"T\",\n \"ţ\": \"t\",\n \"ț\": \"t\",\n \"Ț\": \"T\",\n \"Ť\": \"T\",\n \"ť\": \"t\",\n \"Ŧ\": \"T\",\n \"ŧ\": \"t\",\n \"T̆\": \"T\",\n \"t̆\": \"t\",\n \"Ũ\": \"U\",\n \"ũ\": \"u\",\n \"Ū\": \"U\",\n \"ū\": \"u\",\n \"Ŭ\": \"U\",\n \"ŭ\": \"u\",\n \"Ů\": \"U\",\n \"ů\": \"u\",\n \"Ű\": \"U\",\n \"ű\": \"u\",\n \"Ų\": \"U\",\n \"ų\": \"u\",\n \"Ȗ\": \"U\",\n \"ȗ\": \"u\",\n \"V̆\": \"V\",\n \"v̆\": \"v\",\n \"Ŵ\": \"W\",\n \"ŵ\": \"w\",\n \"Ẃ\": \"W\",\n \"ẃ\": \"w\",\n \"X̆\": \"X\",\n \"x̆\": \"x\",\n \"Ŷ\": \"Y\",\n \"ŷ\": \"y\",\n \"Ÿ\": \"Y\",\n \"Y̆\": \"Y\",\n \"y̆\": \"y\",\n \"Ź\": \"Z\",\n \"ź\": \"z\",\n \"Ż\": \"Z\",\n \"ż\": \"z\",\n \"Ž\": \"Z\",\n \"ž\": \"z\",\n \"ſ\": \"s\",\n \"ƒ\": \"f\",\n \"Ơ\": \"O\",\n \"ơ\": \"o\",\n \"Ư\": \"U\",\n \"ư\": \"u\",\n \"Ǎ\": \"A\",\n \"ǎ\": \"a\",\n \"Ǐ\": \"I\",\n \"ǐ\": \"i\",\n \"Ǒ\": \"O\",\n \"ǒ\": \"o\",\n \"Ǔ\": \"U\",\n \"ǔ\": \"u\",\n \"Ǖ\": \"U\",\n \"ǖ\": \"u\",\n \"Ǘ\": \"U\",\n \"ǘ\": \"u\",\n \"Ǚ\": \"U\",\n \"ǚ\": \"u\",\n \"Ǜ\": \"U\",\n \"ǜ\": \"u\",\n \"Ứ\": \"U\",\n \"ứ\": \"u\",\n \"Ṹ\": \"U\",\n \"ṹ\": \"u\",\n \"Ǻ\": \"A\",\n \"ǻ\": \"a\",\n \"Ǽ\": \"AE\",\n \"ǽ\": \"ae\",\n \"Ǿ\": \"O\",\n \"ǿ\": \"o\",\n \"Þ\": \"TH\",\n \"þ\": \"th\",\n \"Ṕ\": \"P\",\n \"ṕ\": \"p\",\n \"Ṥ\": \"S\",\n \"ṥ\": \"s\",\n \"X́\": \"X\",\n \"x́\": \"x\",\n \"Ѓ\": \"Г\",\n \"ѓ\": \"г\",\n \"Ќ\": \"К\",\n \"ќ\": \"к\",\n \"A̋\": \"A\",\n \"a̋\": \"a\",\n \"E̋\": \"E\",\n \"e̋\": \"e\",\n \"I̋\": \"I\",\n \"i̋\": \"i\",\n \"Ǹ\": \"N\",\n \"ǹ\": \"n\",\n \"Ồ\": \"O\",\n \"ồ\": \"o\",\n \"Ṑ\": \"O\",\n \"ṑ\": \"o\",\n \"Ừ\": \"U\",\n \"ừ\": \"u\",\n \"Ẁ\": \"W\",\n \"ẁ\": \"w\",\n \"Ỳ\": \"Y\",\n \"ỳ\": \"y\",\n \"Ȁ\": \"A\",\n \"ȁ\": \"a\",\n \"Ȅ\": \"E\",\n \"ȅ\": \"e\",\n \"Ȉ\": \"I\",\n \"ȉ\": \"i\",\n \"Ȍ\": \"O\",\n \"ȍ\": \"o\",\n \"Ȑ\": \"R\",\n \"ȑ\": \"r\",\n \"Ȕ\": \"U\",\n \"ȕ\": \"u\",\n \"B̌\": \"B\",\n \"b̌\": \"b\",\n \"Č̣\": \"C\",\n \"č̣\": \"c\",\n \"Ê̌\": \"E\",\n \"ê̌\": \"e\",\n \"F̌\": \"F\",\n \"f̌\": \"f\",\n \"Ǧ\": \"G\",\n \"ǧ\": \"g\",\n \"Ȟ\": \"H\",\n \"ȟ\": \"h\",\n \"J̌\": \"J\",\n \"ǰ\": \"j\",\n \"Ǩ\": \"K\",\n \"ǩ\": \"k\",\n \"M̌\": \"M\",\n \"m̌\": \"m\",\n \"P̌\": \"P\",\n \"p̌\": \"p\",\n \"Q̌\": \"Q\",\n \"q̌\": \"q\",\n \"Ř̩\": \"R\",\n \"ř̩\": \"r\",\n \"Ṧ\": \"S\",\n \"ṧ\": \"s\",\n \"V̌\": \"V\",\n \"v̌\": \"v\",\n \"W̌\": \"W\",\n \"w̌\": \"w\",\n \"X̌\": \"X\",\n \"x̌\": \"x\",\n \"Y̌\": \"Y\",\n \"y̌\": \"y\",\n \"A̧\": \"A\",\n \"a̧\": \"a\",\n \"B̧\": \"B\",\n \"b̧\": \"b\",\n \"Ḑ\": \"D\",\n \"ḑ\": \"d\",\n \"Ȩ\": \"E\",\n \"ȩ\": \"e\",\n \"Ɛ̧\": \"E\",\n \"ɛ̧\": \"e\",\n \"Ḩ\": \"H\",\n \"ḩ\": \"h\",\n \"I̧\": \"I\",\n \"i̧\": \"i\",\n \"Ɨ̧\": \"I\",\n \"ɨ̧\": \"i\",\n \"M̧\": \"M\",\n \"m̧\": \"m\",\n \"O̧\": \"O\",\n \"o̧\": \"o\",\n \"Q̧\": \"Q\",\n \"q̧\": \"q\",\n \"U̧\": \"U\",\n \"u̧\": \"u\",\n \"X̧\": \"X\",\n \"x̧\": \"x\",\n \"Z̧\": \"Z\",\n \"z̧\": \"z\"\n};\nvar chars = Object.keys(characterMap).join('|');\nvar allAccents = new RegExp(chars, 'g');\nvar firstAccent = new RegExp(chars, '');\nvar removeAccents = function (string) {\n return string.replace(allAccents, function (match) {\n return characterMap[match];\n });\n};\nvar hasAccents = function (string) {\n return !!string.match(firstAccent);\n};\nvar removeAccents_1 = removeAccents;\nvar has = hasAccents;\nvar remove = removeAccents;\nremoveAccents_1.has = has;\nremoveAccents_1.remove = remove;\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\n\n/**\n * @name match-sorter\n * @license MIT license.\n * @copyright (c) 2017 Kent C. Dodds\n * @author Kent C. Dodds \n */\n\nvar rankings = {\n CASE_SENSITIVE_EQUAL: 9,\n EQUAL: 8,\n STARTS_WITH: 7,\n WORD_STARTS_WITH: 6,\n STRING_CASE: 5,\n STRING_CASE_ACRONYM: 4,\n CONTAINS: 3,\n ACRONYM: 2,\n MATCHES: 1,\n NO_MATCH: 0\n};\nvar caseRankings = {\n CAMEL: 0.8,\n PASCAL: 0.6,\n KEBAB: 0.4,\n SNAKE: 0.2,\n NO_CASE: 0\n};\nmatchSorter.rankings = rankings;\nmatchSorter.caseRankings = caseRankings;\n\n/**\n * Takes an array of items and a value and returns a new array with the items that match the given value\n * @param {Array} items - the items to sort\n * @param {String} value - the value to use for ranking\n * @param {Object} options - Some options to configure the sorter\n * @return {Array} - the new sorted array\n */\nfunction matchSorter(items, value) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n // not performing any search/sort if value(search term) is empty\n if (!value) return items;\n var keys = options.keys,\n _options$threshold = options.threshold,\n threshold = _options$threshold === undefined ? rankings.MATCHES : _options$threshold;\n var matchedItems = items.reduce(function (matches, item, index) {\n var _getHighestRanking = getHighestRanking(item, keys, value, options),\n rankedItem = _getHighestRanking.rankedItem,\n rank = _getHighestRanking.rank,\n keyIndex = _getHighestRanking.keyIndex,\n _getHighestRanking$ke = _getHighestRanking.keyThreshold,\n keyThreshold = _getHighestRanking$ke === undefined ? threshold : _getHighestRanking$ke;\n if (rank >= keyThreshold) {\n matches.push({\n rankedItem: rankedItem,\n item: item,\n rank: rank,\n index: index,\n keyIndex: keyIndex\n });\n }\n return matches;\n }, []);\n return matchedItems.sort(sortRankedItems).map(function (_ref) {\n var item = _ref.item;\n return item;\n });\n}\n\n/**\n * Gets the highest ranking for value for the given item based on its values for the given keys\n * @param {*} item - the item to rank\n * @param {Array} keys - the keys to get values from the item for the ranking\n * @param {String} value - the value to rank against\n * @param {Object} options - options to control the ranking\n * @return {{rank: Number, keyIndex: Number, keyThreshold: Number}} - the highest ranking\n */\nfunction getHighestRanking(item, keys, value, options) {\n if (!keys) {\n return {\n // ends up being duplicate of 'item' in matches but consistent\n rankedItem: item,\n rank: getMatchRanking(item, value, options),\n keyIndex: -1,\n keyThreshold: options.threshold\n };\n }\n var valuesToRank = getAllValuesToRank(item, keys);\n return valuesToRank.reduce(function (_ref2, _ref3, i) {\n var rank = _ref2.rank,\n keyIndex = _ref2.keyIndex,\n keyThreshold = _ref2.keyThreshold;\n var itemValue = _ref3.itemValue,\n attributes = _ref3.attributes;\n var newRank = getMatchRanking(itemValue, value, options);\n var minRanking = attributes.minRanking,\n maxRanking = attributes.maxRanking,\n threshold = attributes.threshold;\n if (newRank < minRanking && newRank >= rankings.MATCHES) {\n newRank = minRanking;\n } else if (newRank > maxRanking) {\n newRank = maxRanking;\n }\n if (newRank > rank) {\n rank = newRank;\n keyIndex = i;\n keyThreshold = threshold;\n }\n return {\n rankedItem: itemValue,\n rank: rank,\n keyIndex: keyIndex,\n keyThreshold: keyThreshold\n };\n }, {\n rank: rankings.NO_MATCH,\n keyIndex: -1,\n keyThreshold: options.threshold\n });\n}\n\n/**\n * Gives a rankings score based on how well the two strings match.\n * @param {String} testString - the string to test against\n * @param {String} stringToRank - the string to rank\n * @param {Object} options - options for the match (like keepDiacritics for comparison)\n * @returns {Number} the ranking for how well stringToRank matches testString\n */\nfunction getMatchRanking(testString, stringToRank, options) {\n /* eslint complexity:[2, 12] */\n testString = prepareValueForComparison(testString, options);\n stringToRank = prepareValueForComparison(stringToRank, options);\n\n // too long\n if (stringToRank.length > testString.length) {\n return rankings.NO_MATCH;\n }\n\n // case sensitive equals\n if (testString === stringToRank) {\n return rankings.CASE_SENSITIVE_EQUAL;\n }\n var caseRank = getCaseRanking(testString);\n var isPartial = isPartialOfCase(testString, stringToRank, caseRank);\n var isCasedAcronym = isCaseAcronym(testString, stringToRank, caseRank);\n\n // Lower casing before further comparison\n testString = testString.toLowerCase();\n stringToRank = stringToRank.toLowerCase();\n\n // case insensitive equals\n if (testString === stringToRank) {\n return rankings.EQUAL + caseRank;\n }\n\n // starts with\n if (testString.indexOf(stringToRank) === 0) {\n return rankings.STARTS_WITH + caseRank;\n }\n\n // word starts with\n if (testString.indexOf(' ' + stringToRank) !== -1) {\n return rankings.WORD_STARTS_WITH + caseRank;\n }\n\n // is a part inside a cased string\n if (isPartial) {\n return rankings.STRING_CASE + caseRank;\n }\n\n // is acronym for a cased string\n if (caseRank > 0 && isCasedAcronym) {\n return rankings.STRING_CASE_ACRONYM + caseRank;\n }\n\n // contains\n if (testString.indexOf(stringToRank) !== -1) {\n return rankings.CONTAINS + caseRank;\n } else if (stringToRank.length === 1) {\n // If the only character in the given stringToRank\n // isn't even contained in the testString, then\n // it's definitely not a match.\n return rankings.NO_MATCH;\n }\n\n // acronym\n if (getAcronym(testString).indexOf(stringToRank) !== -1) {\n return rankings.ACRONYM + caseRank;\n }\n\n // will return a number between rankings.MATCHES and\n // rankings.MATCHES + 1 depending on how close of a match it is.\n return getClosenessRanking(testString, stringToRank);\n}\n\n/**\n * Generates an acronym for a string.\n *\n * @param {String} string the string for which to produce the acronym\n * @returns {String} the acronym\n */\nfunction getAcronym(string) {\n var acronym = '';\n var wordsInString = string.split(' ');\n wordsInString.forEach(function (wordInString) {\n var splitByHyphenWords = wordInString.split('-');\n splitByHyphenWords.forEach(function (splitByHyphenWord) {\n acronym += splitByHyphenWord.substr(0, 1);\n });\n });\n return acronym;\n}\n\n/**\n * Returns a score base on the case of the testString\n * @param {String} testString - the string to test against\n * @returns {Number} the number of the ranking,\n * based on the case between 0 and 1 for how the testString matches the case\n */\nfunction getCaseRanking(testString) {\n var containsUpperCase = testString.toLowerCase() !== testString;\n var containsDash = testString.indexOf('-') >= 0;\n var containsUnderscore = testString.indexOf('_') >= 0;\n if (!containsUpperCase && !containsUnderscore && containsDash) {\n return caseRankings.KEBAB;\n }\n if (!containsUpperCase && containsUnderscore && !containsDash) {\n return caseRankings.SNAKE;\n }\n if (containsUpperCase && !containsDash && !containsUnderscore) {\n var startsWithUpperCase = testString[0].toUpperCase() === testString[0];\n if (startsWithUpperCase) {\n return caseRankings.PASCAL;\n }\n return caseRankings.CAMEL;\n }\n return caseRankings.NO_CASE;\n}\n\n/**\n * Returns whether the stringToRank is one of the case parts in the testString (works with any string case)\n * @example\n * // returns true\n * isPartialOfCase('helloWorld', 'world', caseRankings.CAMEL)\n * @example\n * // returns false\n * isPartialOfCase('helloWorld', 'oworl', caseRankings.CAMEL)\n * @param {String} testString - the string to test against\n * @param {String} stringToRank - the string to rank\n * @param {Number} caseRanking - the ranking score based on case of testString\n * @returns {Boolean} whether the stringToRank is one of the case parts in the testString\n */\nfunction isPartialOfCase(testString, stringToRank, caseRanking) {\n var testIndex = testString.toLowerCase().indexOf(stringToRank.toLowerCase());\n switch (caseRanking) {\n case caseRankings.SNAKE:\n return testString[testIndex - 1] === '_';\n case caseRankings.KEBAB:\n return testString[testIndex - 1] === '-';\n case caseRankings.PASCAL:\n case caseRankings.CAMEL:\n return testIndex !== -1 && testString[testIndex] === testString[testIndex].toUpperCase();\n default:\n return false;\n }\n}\n\n/**\n * Check if stringToRank is an acronym for a partial case\n * @example\n * // returns true\n * isCaseAcronym('super_duper_file', 'sdf', caseRankings.SNAKE)\n * @param {String} testString - the string to test against\n * @param {String} stringToRank - the acronym to test\n * @param {Number} caseRank - the ranking of the case\n * @returns {Boolean} whether the stringToRank is an acronym for the testString\n */\nfunction isCaseAcronym(testString, stringToRank, caseRank) {\n var splitValue = null;\n switch (caseRank) {\n case caseRankings.SNAKE:\n splitValue = '_';\n break;\n case caseRankings.KEBAB:\n splitValue = '-';\n break;\n case caseRankings.PASCAL:\n case caseRankings.CAMEL:\n splitValue = /(?=[A-Z])/;\n break;\n default:\n splitValue = null;\n }\n var splitTestString = testString.split(splitValue);\n return stringToRank.toLowerCase().split('').reduce(function (correct, char, charIndex) {\n var splitItem = splitTestString[charIndex];\n return correct && splitItem && splitItem[0].toLowerCase() === char;\n }, true);\n}\n\n/**\n * Returns a score based on how spread apart the\n * characters from the stringToRank are within the testString.\n * A number close to rankings.MATCHES represents a loose match. A number close\n * to rankings.MATCHES + 1 represents a tighter match.\n * @param {String} testString - the string to test against\n * @param {String} stringToRank - the string to rank\n * @returns {Number} the number between rankings.MATCHES and\n * rankings.MATCHES + 1 for how well stringToRank matches testString\n */\nfunction getClosenessRanking(testString, stringToRank) {\n var matchingInOrderCharCount = 0;\n var charNumber = 0;\n function findMatchingCharacter(matchChar, string, index) {\n for (var j = index; j < string.length; j++) {\n var stringChar = string[j];\n if (stringChar === matchChar) {\n matchingInOrderCharCount += 1;\n return j + 1;\n }\n }\n return -1;\n }\n function getRanking(spread) {\n var inOrderPercentage = matchingInOrderCharCount / stringToRank.length;\n var ranking = rankings.MATCHES + inOrderPercentage * (1 / spread);\n return ranking;\n }\n var firstIndex = findMatchingCharacter(stringToRank[0], testString, 0);\n if (firstIndex < 0) {\n return rankings.NO_MATCH;\n }\n charNumber = firstIndex;\n for (var i = 1; i < stringToRank.length; i++) {\n var matchChar = stringToRank[i];\n charNumber = findMatchingCharacter(matchChar, testString, charNumber);\n var found = charNumber > -1;\n if (!found) {\n return rankings.NO_MATCH;\n }\n }\n var spread = charNumber - firstIndex;\n return getRanking(spread);\n}\n\n/**\n * Sorts items that have a rank, index, and keyIndex\n * @param {Object} a - the first item to sort\n * @param {Object} b - the second item to sort\n * @return {Number} -1 if a should come first, 1 if b should come first\n * Note: will never return 0\n */\nfunction sortRankedItems(a, b) {\n var aFirst = -1;\n var bFirst = 1;\n var aRankedItem = a.rankedItem,\n aRank = a.rank,\n aKeyIndex = a.keyIndex;\n var bRankedItem = b.rankedItem,\n bRank = b.rank,\n bKeyIndex = b.keyIndex;\n if (aRank === bRank) {\n if (aKeyIndex === bKeyIndex) {\n return String(aRankedItem).localeCompare(bRankedItem);\n } else {\n return aKeyIndex < bKeyIndex ? aFirst : bFirst;\n }\n } else {\n return aRank > bRank ? aFirst : bFirst;\n }\n}\n\n/**\n * Prepares value for comparison by stringifying it, removing diacritics (if specified)\n * @param {String} value - the value to clean\n * @param {Object} options - {keepDiacritics: whether to remove diacritics}\n * @return {String} the prepared value\n */\nfunction prepareValueForComparison(value, _ref4) {\n var keepDiacritics = _ref4.keepDiacritics;\n value = '' + value; // toString\n if (!keepDiacritics) {\n value = removeAccents_1(value);\n }\n return value;\n}\n\n/**\n * Gets value for key in item at arbitrarily nested keypath\n * @param {Object} item - the item\n * @param {Object|Function} key - the potentially nested keypath or property callback\n * @return {Array} - an array containing the value(s) at the nested keypath\n */\nfunction getItemValues(item, key) {\n if ((typeof key === 'undefined' ? 'undefined' : _typeof(key)) === 'object') {\n key = key.key;\n }\n var value = void 0;\n if (typeof key === 'function') {\n value = key(item);\n // eslint-disable-next-line no-negated-condition\n } else if (key.indexOf('.') !== -1) {\n // handle nested keys\n value = key.split('.').reduce(function (itemObj, nestedKey) {\n return itemObj ? itemObj[nestedKey] : null;\n }, item);\n } else {\n value = item[key];\n }\n // concat because `value` can be a string or an array\n // eslint-disable-next-line\n return value != null ? [].concat(value) : null;\n}\n\n/**\n * Gets all the values for the given keys in the given item and returns an array of those values\n * @param {Object} item - the item from which the values will be retrieved\n * @param {Array} keys - the keys to use to retrieve the values\n * @return {Array} objects with {itemValue, attributes}\n */\nfunction getAllValuesToRank(item, keys) {\n return keys.reduce(function (allVals, key) {\n var values = getItemValues(item, key);\n if (values) {\n values.forEach(function (itemValue) {\n allVals.push({\n itemValue: itemValue,\n attributes: getKeyAttributes(key)\n });\n });\n }\n return allVals;\n }, []);\n}\n\n/**\n * Gets all the attributes for the given key\n * @param {Object|String} key - the key from which the attributes will be retrieved\n * @return {Object} object containing the key's attributes\n */\nfunction getKeyAttributes(key) {\n if (typeof key === 'string') {\n key = {\n key: key\n };\n }\n return _extends({\n maxRanking: Infinity,\n minRanking: -Infinity\n }, key);\n}\nexport default matchSorter;\nexport { rankings };","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nexport { Link } from 'gatsby';\nif (typeof Link !== 'undefined' && Link && Link === Object(Link) && Object.isExtensible(Link) && !Object.prototype.hasOwnProperty.call(Link, '__filemeta')) {\n Object.defineProperty(Link, '__filemeta', {\n configurable: true,\n value: {\n name: \"Link\",\n filename: \"node_modules/docz/dist/index.esm.js\"\n }\n });\n}\nimport React, { createContext, useContext, Component, useMemo, createElement, useEffect, useRef, useState, memo } from 'react';\nimport _merge from 'lodash/fp/merge';\nimport equal from 'fast-deep-equal';\nimport _kebabCase from 'lodash/fp/kebabCase';\nimport _mapValues from 'lodash/fp/mapValues';\nimport _get from 'lodash/fp/get';\nimport _first from 'lodash/fp/first';\nimport _assoc from 'lodash/fp/assoc';\nimport { pascalCase } from 'pascal-case';\nimport marksy from 'marksy';\nimport sort from 'array-sort';\nimport _unionBy from 'lodash/fp/unionBy';\nimport _flattenDepth from 'lodash/fp/flattenDepth';\nimport _omit from 'lodash/fp/omit';\nimport _pipe from 'lodash/fp/pipe';\nimport { ulid } from 'ulid';\nimport match from 'match-sorter';\nimport _throttle from 'lodash/fp/throttle';\nimport { __rest } from 'tslib';\nimport capitalize from 'capitalize';\nconst DefNotFound = () => /*#__PURE__*/React.createElement(React.Fragment, null, \"Not found\");\nconst DefLayout = _ref => {\n let {\n children\n } = _ref;\n return /*#__PURE__*/React.createElement(React.Fragment, null, children);\n};\nconst DefPlayground = _ref2 => {\n let {\n component,\n code\n } = _ref2;\n return /*#__PURE__*/React.createElement(\"div\", null, component, /*#__PURE__*/React.createElement(\"pre\", null, code));\n};\nconst defaultComponents = {\n layout: DefLayout,\n notFound: DefNotFound,\n playground: DefPlayground\n};\nconst ctx = /*#__PURE__*/createContext(defaultComponents);\nconst ComponentsProvider = _ref3 => {\n let {\n components: themeComponents = {},\n children\n } = _ref3;\n return /*#__PURE__*/React.createElement(ctx.Provider, {\n value: Object.assign(Object.assign({}, defaultComponents), themeComponents)\n }, children);\n};\nconst useComponents = () => {\n return useContext(ctx);\n};\nfunction create(initial) {\n var _a;\n const ctx = /*#__PURE__*/createContext(initial);\n const listeners = new Set();\n const dispatch = fn => {\n listeners.forEach(listener => listener(fn));\n };\n return {\n context: ctx,\n set: fn => dispatch(fn),\n Provider: (_a = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Provider, _Component);\n function Provider() {\n var _this;\n _this = _Component.apply(this, arguments) || this;\n _this.state = _this.props.initial || initial || {};\n return _this;\n }\n Provider.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n if (!equal(props.initial, state)) return props.initial;\n return null;\n };\n var _proto = Provider.prototype;\n _proto.componentDidMount = function componentDidMount() {\n listeners.add(fn => this.setState(fn));\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n listeners.clear();\n };\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(ctx.Provider, {\n value: this.state\n }, this.props.children);\n };\n return Provider;\n }(Component), _a.displayName = 'DoczStateProvider', _a)\n };\n}\nconst doczState = create({});\nconst useConfig = () => {\n const state = useContext(doczState.context);\n const {\n transform,\n config,\n themeConfig = {}\n } = state;\n const newConfig = _merge(themeConfig, config ? config.themeConfig : {});\n const transformed = transform ? transform(newConfig) : newConfig;\n return Object.assign(Object.assign({}, config), {\n themeConfig: transformed\n });\n};\nconst useComponentProps = _ref4 => {\n let {\n componentName,\n fileName\n } = _ref4;\n const components = useComponents();\n const {\n props: stateProps\n } = useContext(doczState.context);\n const componentMatcher = (componentName, item) => {\n const matchingPatterns = [fileName, \"/\" + componentName + \".\", \"/\" + _kebabCase(componentName) + \".\", \"/\" + pascalCase(componentName) + \".\"];\n return !!matchingPatterns.find(pattern => item.key.includes(pattern));\n };\n const found = stateProps && stateProps.length > 0 && stateProps.find(item => componentMatcher(componentName, item));\n const value = _get('value', found) || [];\n const firstDefinition = _first(value);\n const definition = value.find(i => i.displayName === componentName);\n const compile = useMemo(() => marksy({\n createElement,\n elements: components\n }), [components]);\n const props = useMemo(() => {\n const props = _get('props', definition || firstDefinition);\n const parseDescs = _mapValues(prop => {\n const desc = _get('description', prop);\n return !desc ? prop : _assoc('description', compile(desc).tree, prop);\n });\n return parseDescs(props);\n }, [compile, definition || firstDefinition]);\n return props;\n};\nconst useCurrentDoc = () => {\n const state = useContext(doczState.context);\n return _get('currentEntry.value', state);\n};\nconst updateState = ev => {\n const {\n type,\n payload\n } = JSON.parse(ev.data);\n const prop = type.startsWith('state.') && type.split('.')[1];\n if (prop) {\n doczState.set(state => Object.assign(Object.assign({}, state), {\n [prop]: payload\n }));\n }\n};\nconst useDataServer = url => {\n useEffect(() => {\n if (!url) return;\n const socket = new WebSocket(url);\n socket.onmessage = updateState;\n return () => socket.close();\n }, []);\n};\nfunction flatArrFromObject(arr, prop) {\n const reducer = (arr, obj) => {\n const value = _get(prop)(obj);\n return value ? arr.concat([value]) : arr;\n };\n return Array.from(new Set(arr.reduce(reducer, [])));\n}\nfunction compare(a, b, reverse) {\n if (a < b) return reverse ? 1 : -1;\n if (a > b) return reverse ? -1 : 1;\n return 0;\n}\nconst useDocs = () => {\n const {\n entries = []\n } = useContext(doczState.context);\n const arr = entries.map(_ref5 => {\n let {\n value\n } = _ref5;\n return value;\n });\n return sort(arr, (a, b) => compare(a.name, b.name));\n};\nconst noMenu = entry => !entry.menu;\nconst fromMenu = menu => entry => entry.menu === menu;\nconst entriesOfMenu = (menu, entries) => entries.filter(fromMenu(menu));\nconst parseMenu = entries => name => ({\n name,\n menu: entriesOfMenu(name, entries)\n});\nconst menusFromEntries = entries => {\n const entriesWithoutMenu = entries.filter(noMenu);\n const menus = flatArrFromObject(entries, 'menu').map(parseMenu(entries));\n return _unionBy('name', menus, entriesWithoutMenu);\n};\nconst parseItemStr = item => typeof item === 'string' ? {\n name: item\n} : item;\nconst normalize = item => {\n const selected = parseItemStr(item);\n return Object.assign(Object.assign({}, selected), {\n id: selected.id || ulid(),\n parent: _get('parent', selected) || _get('parent', item),\n menu: Array.isArray(selected.menu) ? selected.menu.map(normalize) : selected.menu\n });\n};\nconst clean = item => item.href || item.route ? _omit('menu', item) : item;\nconst normalizeAndClean = _pipe(normalize, clean);\nconst mergeMenus = (entriesMenu, configMenu) => {\n const first = entriesMenu.map(normalizeAndClean);\n const second = configMenu.map(normalizeAndClean);\n const merged = _unionBy('name', first, second);\n return merged.map(item => {\n if (!item.menu) return item;\n const found = second.find(i => i.name === item.name);\n const foundMenu = found && found.menu;\n return Object.assign(Object.assign({}, item), {\n menu: foundMenu ? mergeMenus(item.menu, foundMenu) : item.menu || found.menu\n });\n });\n};\nconst UNKNOWN_POS = Infinity;\nconst findPos = function (item, orderedList) {\n if (orderedList === void 0) {\n orderedList = [];\n }\n const name = typeof item !== 'string' ? _get('name', item) : item;\n const pos = orderedList.findIndex(item => item === name);\n return pos !== -1 ? pos : UNKNOWN_POS;\n};\nconst compareWithMenu = function (to) {\n if (to === void 0) {\n to = [];\n }\n return (a, b) => {\n const list = to.map(i => i.name || i);\n return compare(findPos(a, list), findPos(b, list));\n };\n};\nconst sortByName = (a, b) => {\n return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;\n};\nconst sortMenus = function (first, second) {\n if (second === void 0) {\n second = [];\n }\n const sorted = sort(first, compareWithMenu(second), sortByName);\n return sorted.map(item => {\n if (!item.menu) return item;\n const found = second.find(menu => menu.name === item.name);\n const foundMenu = found && found.menu;\n return Object.assign(Object.assign({}, item), {\n menu: foundMenu ? sortMenus(item.menu, foundMenu) : sort(item.menu, sortByName)\n });\n });\n};\nconst search = (val, menu) => {\n const items = menu.map(item => [item].concat(item.menu || []));\n const flattened = _flattenDepth(2, items);\n const flattenedDeduplicated = Array.from(new Set(flattened));\n return match(flattenedDeduplicated, val, {\n keys: ['name']\n });\n};\nconst filterMenus = (items, filter) => {\n if (!filter) return items;\n return items.filter(filter).map(item => {\n if (!item.menu) return item;\n return Object.assign(Object.assign({}, item), {\n menu: item.menu.filter(filter)\n });\n });\n};\nconst useMenus = opts => {\n const {\n query = ''\n } = opts || {};\n const {\n entries,\n config\n } = useContext(doczState.context);\n if (!entries) return null;\n const arr = entries.map(_ref6 => {\n let {\n value\n } = _ref6;\n return value;\n });\n const entriesMenu = menusFromEntries(arr);\n const sorted = useMemo(() => {\n const merged = mergeMenus(entriesMenu, config.menu);\n const result = sortMenus(merged, config.menu);\n return filterMenus(result, opts && opts.filter);\n }, [entries, config]);\n return query && query.length > 0 ? search(query, sorted) : sorted;\n};\nconst usePrevious = (value, defaultValue) => {\n const ref = useRef(defaultValue);\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n};\nconst isClient = typeof window === 'object';\nconst getSize = (initialWidth, initialHeight) => ({\n innerHeight: isClient ? window.innerHeight : initialHeight,\n innerWidth: isClient ? window.innerWidth : initialWidth,\n outerHeight: isClient ? window.outerHeight : initialHeight,\n outerWidth: isClient ? window.outerWidth : initialWidth\n});\nconst useWindowSize = function (throttleMs, _initialWidth, initialHeight) {\n if (throttleMs === void 0) {\n throttleMs = 300;\n }\n if (_initialWidth === void 0) {\n _initialWidth = Infinity;\n }\n if (initialHeight === void 0) {\n initialHeight = Infinity;\n }\n const {\n 0: windowSize,\n 1: setWindowSize\n } = useState(getSize(initialHeight, initialHeight));\n const tSetWindowResize = _throttle(throttleMs, () => setWindowSize(getSize(initialHeight, initialHeight)));\n useEffect(() => {\n window.addEventListener('resize', tSetWindowResize);\n return () => void window.removeEventListener('resize', tSetWindowResize);\n }, []);\n return windowSize;\n};\nconst Playground = _ref7 => {\n let {\n className,\n children,\n style,\n wrapper,\n __scope,\n __position,\n __code,\n language,\n useScoping\n } = _ref7;\n const components = useComponents();\n const PlaygroundComponent = components.playground;\n if (!PlaygroundComponent) return null;\n return /*#__PURE__*/React.createElement(PlaygroundComponent, {\n components: components,\n component: children,\n className: className,\n style: style,\n wrapper: wrapper,\n scope: __scope,\n position: __position,\n code: __code,\n language: language,\n useScoping: useScoping\n });\n};\nconst RE_OBJECTOF = /(?:React\\.)?(?:PropTypes\\.)?objectOf\\((?:React\\.)?(?:PropTypes\\.)?(\\w+)\\)/;\nconst getTypeStr = type => {\n switch (type.name.toLowerCase()) {\n case 'instanceof':\n return \"Class(\" + type.value + \")\";\n case 'enum':\n if (type.computed) return type.value;\n return type.value ? type.value.map(v => \"\" + v.value).join(' │ ') : type.raw;\n case 'union':\n return type.value ? type.value.map(t => \"\" + getTypeStr(t)).join(' │ ') : type.raw;\n case 'array':\n return type.raw;\n case 'arrayof':\n return \"Array<\" + getTypeStr(type.value) + \">\";\n case 'custom':\n if (type.raw.indexOf('function') !== -1 || type.raw.indexOf('=>') !== -1) return 'Custom(Function)';else if (type.raw.toLowerCase().indexOf('objectof') !== -1) {\n const m = type.raw.match(RE_OBJECTOF);\n if (m && m[1]) return \"ObjectOf(\" + capitalize(m[1]) + \")\";\n return 'ObjectOf';\n }\n return 'Custom';\n case 'bool':\n return 'Boolean';\n case 'func':\n return 'Function';\n case 'shape':\n const shape = type.value;\n const rst = {};\n Object.keys(shape).forEach(key => {\n rst[key] = getTypeStr(shape[key]);\n });\n return JSON.stringify(rst, null, 2);\n default:\n return type.name;\n }\n};\nconst humanize = type => getTypeStr(type);\nconst getPropType = prop => {\n const propName = _get('name', prop.flowType || prop.type);\n if (!propName) return null;\n const isEnum = propName.startsWith('\"') || propName === 'enum';\n const name = isEnum ? 'enum' : propName;\n const value = _get('type.value', prop);\n if (!name) return null;\n if (isEnum && typeof value === 'string' || !prop.flowType && !isEnum && !value || prop.flowType && !prop.flowType.elements) {\n return name;\n }\n return prop.flowType ? humanize(prop.flowType) : humanize(prop.type);\n};\nconst Props = _a => {\n var {\n title,\n isToggle,\n isRaw,\n of: component\n } = _a,\n rest = __rest(_a, [\"title\", \"isToggle\", \"isRaw\", \"of\"]);\n const components = useComponents();\n const PropsComponent = components.props;\n const fileName = _get('__filemeta.filename', component);\n const filemetaName = _get('__filemeta.name', component);\n const componentName = filemetaName || _get('displayName', component) || _get('name', component);\n const props = useComponentProps({\n componentName,\n fileName\n });\n if (!PropsComponent) return null;\n return /*#__PURE__*/React.createElement(PropsComponent, Object.assign({\n title: title,\n isRaw: isRaw,\n isToggle: isToggle,\n props: props,\n getPropType: getPropType,\n of: component\n }, rest));\n};\nfunction theme(themeConfig, transform) {\n if (transform === void 0) {\n transform = c => c;\n }\n return WrappedComponent => {\n const Theme = /*#__PURE__*/memo(props => {\n const {\n db,\n currentEntry,\n children\n } = props;\n const initial = Object.assign(Object.assign({}, db), {\n currentEntry,\n themeConfig,\n transform\n });\n return /*#__PURE__*/React.createElement(doczState.Provider, {\n initial: initial\n }, /*#__PURE__*/React.createElement(WrappedComponent, null, children));\n });\n Theme.displayName = WrappedComponent.displayName || 'DoczTheme';\n return Theme;\n };\n}\nexport { ComponentsProvider, Playground, Props, doczState, theme, useComponentProps, useComponents, useConfig, useCurrentDoc, useDataServer, useDocs, useMenus, usePrevious, useWindowSize };\nif (typeof useWindowSize !== 'undefined' && useWindowSize && useWindowSize === Object(useWindowSize) && Object.isExtensible(useWindowSize) && !Object.prototype.hasOwnProperty.call(useWindowSize, '__filemeta')) {\n Object.defineProperty(useWindowSize, '__filemeta', {\n configurable: true,\n value: {\n name: \"useWindowSize\",\n filename: \"node_modules/docz/dist/index.esm.js\"\n }\n });\n}\nif (typeof usePrevious !== 'undefined' && usePrevious && usePrevious === Object(usePrevious) && Object.isExtensible(usePrevious) && !Object.prototype.hasOwnProperty.call(usePrevious, '__filemeta')) {\n Object.defineProperty(usePrevious, '__filemeta', {\n configurable: true,\n value: {\n name: \"usePrevious\",\n filename: \"node_modules/docz/dist/index.esm.js\"\n }\n });\n}\nif (typeof useMenus !== 'undefined' && useMenus && useMenus === Object(useMenus) && Object.isExtensible(useMenus) && !Object.prototype.hasOwnProperty.call(useMenus, '__filemeta')) {\n Object.defineProperty(useMenus, '__filemeta', {\n configurable: true,\n value: {\n name: \"useMenus\",\n filename: \"node_modules/docz/dist/index.esm.js\"\n }\n });\n}\nif (typeof useDocs !== 'undefined' && useDocs && useDocs === Object(useDocs) && Object.isExtensible(useDocs) && !Object.prototype.hasOwnProperty.call(useDocs, '__filemeta')) {\n Object.defineProperty(useDocs, '__filemeta', {\n configurable: true,\n value: {\n name: \"useDocs\",\n filename: \"node_modules/docz/dist/index.esm.js\"\n }\n });\n}\nif (typeof useDataServer !== 'undefined' && useDataServer && useDataServer === Object(useDataServer) && Object.isExtensible(useDataServer) && !Object.prototype.hasOwnProperty.call(useDataServer, '__filemeta')) {\n Object.defineProperty(useDataServer, '__filemeta', {\n configurable: true,\n value: {\n name: \"useDataServer\",\n filename: \"node_modules/docz/dist/index.esm.js\"\n }\n });\n}\nif (typeof useCurrentDoc !== 'undefined' && useCurrentDoc && useCurrentDoc === Object(useCurrentDoc) && Object.isExtensible(useCurrentDoc) && !Object.prototype.hasOwnProperty.call(useCurrentDoc, '__filemeta')) {\n Object.defineProperty(useCurrentDoc, '__filemeta', {\n configurable: true,\n value: {\n name: \"useCurrentDoc\",\n filename: \"node_modules/docz/dist/index.esm.js\"\n }\n });\n}\nif (typeof useConfig !== 'undefined' && useConfig && useConfig === Object(useConfig) && Object.isExtensible(useConfig) && !Object.prototype.hasOwnProperty.call(useConfig, '__filemeta')) {\n Object.defineProperty(useConfig, '__filemeta', {\n configurable: true,\n value: {\n name: \"useConfig\",\n filename: \"node_modules/docz/dist/index.esm.js\"\n }\n });\n}\nif (typeof useComponents !== 'undefined' && useComponents && useComponents === Object(useComponents) && Object.isExtensible(useComponents) && !Object.prototype.hasOwnProperty.call(useComponents, '__filemeta')) {\n Object.defineProperty(useComponents, '__filemeta', {\n configurable: true,\n value: {\n name: \"useComponents\",\n filename: \"node_modules/docz/dist/index.esm.js\"\n }\n });\n}\nif (typeof useComponentProps !== 'undefined' && useComponentProps && useComponentProps === Object(useComponentProps) && Object.isExtensible(useComponentProps) && !Object.prototype.hasOwnProperty.call(useComponentProps, '__filemeta')) {\n Object.defineProperty(useComponentProps, '__filemeta', {\n configurable: true,\n value: {\n name: \"useComponentProps\",\n filename: \"node_modules/docz/dist/index.esm.js\"\n }\n });\n}\nif (typeof theme !== 'undefined' && theme && theme === Object(theme) && Object.isExtensible(theme) && !Object.prototype.hasOwnProperty.call(theme, '__filemeta')) {\n Object.defineProperty(theme, '__filemeta', {\n configurable: true,\n value: {\n name: \"theme\",\n filename: \"node_modules/docz/dist/index.esm.js\"\n }\n });\n}\nif (typeof doczState !== 'undefined' && doczState && doczState === Object(doczState) && Object.isExtensible(doczState) && !Object.prototype.hasOwnProperty.call(doczState, '__filemeta')) {\n Object.defineProperty(doczState, '__filemeta', {\n configurable: true,\n value: {\n name: \"doczState\",\n filename: \"node_modules/docz/dist/index.esm.js\"\n }\n });\n}\nif (typeof Props !== 'undefined' && Props && Props === Object(Props) && Object.isExtensible(Props) && !Object.prototype.hasOwnProperty.call(Props, '__filemeta')) {\n Object.defineProperty(Props, '__filemeta', {\n configurable: true,\n value: {\n name: \"Props\",\n filename: \"node_modules/docz/dist/index.esm.js\"\n }\n });\n}\nif (typeof Playground !== 'undefined' && Playground && Playground === Object(Playground) && Object.isExtensible(Playground) && !Object.prototype.hasOwnProperty.call(Playground, '__filemeta')) {\n Object.defineProperty(Playground, '__filemeta', {\n configurable: true,\n value: {\n name: \"Playground\",\n filename: \"node_modules/docz/dist/index.esm.js\"\n }\n });\n}\nif (typeof ComponentsProvider !== 'undefined' && ComponentsProvider && ComponentsProvider === Object(ComponentsProvider) && Object.isExtensible(ComponentsProvider) && !Object.prototype.hasOwnProperty.call(ComponentsProvider, '__filemeta')) {\n Object.defineProperty(ComponentsProvider, '__filemeta', {\n configurable: true,\n value: {\n name: \"ComponentsProvider\",\n filename: \"node_modules/docz/dist/index.esm.js\"\n }\n });\n}","var createFlow = require('./_createFlow');\n\n/**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\nvar flow = createFlow();\n\nmodule.exports = flow;\n","const set = require('regenerate')();\nset.addRange(0xA500, 0xA62B);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0xAB70, 0xABBF);\nmodule.exports = set;","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","const set = require('regenerate')();\nset.addRange(0x1C00, 0x1C37).addRange(0x1C3B, 0x1C49).addRange(0x1C4D, 0x1C4F);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x16A40, 0x16A5E).addRange(0x16A60, 0x16A69).addRange(0x16A6E, 0x16A6F);\nmodule.exports = set;","import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n
    \n
    {`$ `}{`cd`}{` /tmp`}{`\n`}{`$ go install github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb@latest`}
    \n\n \n ;\n}\n;\nMDXContent.isMDXComponent = true;\n ","var isLaziable = require('./_isLaziable'),\n setData = require('./_setData'),\n setWrapToString = require('./_setWrapToString');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n}\n\nmodule.exports = createRecurry;\n","const set = require('regenerate')();\nset.addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x11400, 0x1145B).addRange(0x1145D, 0x11461);\nmodule.exports = set;","const set = require('regenerate')(0xA6, 0xA9, 0xAE, 0xB0, 0x482, 0x6DE, 0x6E9, 0x7F6, 0x9FA, 0xB70, 0xBFA, 0xC7F, 0xD4F, 0xD79, 0xF13, 0xF34, 0xF36, 0xF38, 0x166D, 0x1940, 0x2114, 0x2125, 0x2127, 0x2129, 0x212E, 0x214A, 0x214F, 0x21D3, 0x3004, 0x3020, 0x3250, 0xA839, 0xFDCF, 0xFFE4, 0xFFE8, 0x101A0, 0x10AC8, 0x1173F, 0x16B45, 0x1BC9C, 0x1D245, 0x1E14F, 0x1ECAC, 0x1ED2E, 0x1F7F0);\nset.addRange(0x58D, 0x58E).addRange(0x60E, 0x60F).addRange(0x6FD, 0x6FE).addRange(0xBF3, 0xBF8).addRange(0xF01, 0xF03).addRange(0xF15, 0xF17).addRange(0xF1A, 0xF1F).addRange(0xFBE, 0xFC5).addRange(0xFC7, 0xFCC).addRange(0xFCE, 0xFCF).addRange(0xFD5, 0xFD8).addRange(0x109E, 0x109F).addRange(0x1390, 0x1399).addRange(0x19DE, 0x19FF).addRange(0x1B61, 0x1B6A).addRange(0x1B74, 0x1B7C).addRange(0x2100, 0x2101).addRange(0x2103, 0x2106).addRange(0x2108, 0x2109).addRange(0x2116, 0x2117).addRange(0x211E, 0x2123).addRange(0x213A, 0x213B).addRange(0x214C, 0x214D).addRange(0x218A, 0x218B).addRange(0x2195, 0x2199).addRange(0x219C, 0x219F).addRange(0x21A1, 0x21A2).addRange(0x21A4, 0x21A5).addRange(0x21A7, 0x21AD).addRange(0x21AF, 0x21CD).addRange(0x21D0, 0x21D1).addRange(0x21D5, 0x21F3).addRange(0x2300, 0x2307).addRange(0x230C, 0x231F).addRange(0x2322, 0x2328).addRange(0x232B, 0x237B).addRange(0x237D, 0x239A).addRange(0x23B4, 0x23DB).addRange(0x23E2, 0x2426).addRange(0x2440, 0x244A).addRange(0x249C, 0x24E9).addRange(0x2500, 0x25B6).addRange(0x25B8, 0x25C0).addRange(0x25C2, 0x25F7).addRange(0x2600, 0x266E).addRange(0x2670, 0x2767).addRange(0x2794, 0x27BF).addRange(0x2800, 0x28FF).addRange(0x2B00, 0x2B2F).addRange(0x2B45, 0x2B46).addRange(0x2B4D, 0x2B73);\nset.addRange(0x2B76, 0x2B95).addRange(0x2B97, 0x2BFF).addRange(0x2CE5, 0x2CEA).addRange(0x2E50, 0x2E51).addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5).addRange(0x2FF0, 0x2FFB).addRange(0x3012, 0x3013).addRange(0x3036, 0x3037).addRange(0x303E, 0x303F).addRange(0x3190, 0x3191).addRange(0x3196, 0x319F).addRange(0x31C0, 0x31E3).addRange(0x3200, 0x321E).addRange(0x322A, 0x3247).addRange(0x3260, 0x327F).addRange(0x328A, 0x32B0).addRange(0x32C0, 0x33FF).addRange(0x4DC0, 0x4DFF).addRange(0xA490, 0xA4C6).addRange(0xA828, 0xA82B).addRange(0xA836, 0xA837).addRange(0xAA77, 0xAA79).addRange(0xFD40, 0xFD4F).addRange(0xFDFD, 0xFDFF).addRange(0xFFED, 0xFFEE).addRange(0xFFFC, 0xFFFD).addRange(0x10137, 0x1013F).addRange(0x10179, 0x10189).addRange(0x1018C, 0x1018E).addRange(0x10190, 0x1019C).addRange(0x101D0, 0x101FC).addRange(0x10877, 0x10878).addRange(0x11FD5, 0x11FDC).addRange(0x11FE1, 0x11FF1).addRange(0x16B3C, 0x16B3F).addRange(0x1CF50, 0x1CFC3).addRange(0x1D000, 0x1D0F5).addRange(0x1D100, 0x1D126).addRange(0x1D129, 0x1D164).addRange(0x1D16A, 0x1D16C).addRange(0x1D183, 0x1D184).addRange(0x1D18C, 0x1D1A9).addRange(0x1D1AE, 0x1D1EA).addRange(0x1D200, 0x1D241).addRange(0x1D300, 0x1D356).addRange(0x1D800, 0x1D9FF).addRange(0x1DA37, 0x1DA3A).addRange(0x1DA6D, 0x1DA74).addRange(0x1DA76, 0x1DA83);\nset.addRange(0x1DA85, 0x1DA86).addRange(0x1F000, 0x1F02B).addRange(0x1F030, 0x1F093).addRange(0x1F0A0, 0x1F0AE).addRange(0x1F0B1, 0x1F0BF).addRange(0x1F0C1, 0x1F0CF).addRange(0x1F0D1, 0x1F0F5).addRange(0x1F10D, 0x1F1AD).addRange(0x1F1E6, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x1F260, 0x1F265).addRange(0x1F300, 0x1F3FA).addRange(0x1F400, 0x1F6D7).addRange(0x1F6DD, 0x1F6EC).addRange(0x1F6F0, 0x1F6FC).addRange(0x1F700, 0x1F773).addRange(0x1F780, 0x1F7D8).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F800, 0x1F80B).addRange(0x1F810, 0x1F847).addRange(0x1F850, 0x1F859).addRange(0x1F860, 0x1F887).addRange(0x1F890, 0x1F8AD).addRange(0x1F8B0, 0x1F8B1).addRange(0x1F900, 0x1FA53).addRange(0x1FA60, 0x1FA6D).addRange(0x1FA70, 0x1FA74).addRange(0x1FA78, 0x1FA7C).addRange(0x1FA80, 0x1FA86).addRange(0x1FA90, 0x1FAAC).addRange(0x1FAB0, 0x1FABA).addRange(0x1FAC0, 0x1FAC5).addRange(0x1FAD0, 0x1FAD9).addRange(0x1FAE0, 0x1FAE7).addRange(0x1FAF0, 0x1FAF6).addRange(0x1FB00, 0x1FB92).addRange(0x1FB94, 0x1FBCA);\nmodule.exports = set;","import mitt from \"mitt\"\n\nconst emitter = mitt()\nexport default emitter\n","// \n// An event handler can take an optional event argument\n// and should not return a value\n \n \n\n// An array of all currently registered event handlers for a type\n \n \n// A map of event types and their corresponding event handlers.\n \n \n \n \n\n/** Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nfunction mitt(all ) {\n\tall = all || Object.create(null);\n\n\treturn {\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to listen for, or `\"*\"` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton: function on(type , handler ) {\n\t\t\t(all[type] || (all[type] = [])).push(handler);\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to unregister `handler` from, or `\"*\"`\n\t\t * @param {Function} handler Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff: function off(type , handler ) {\n\t\t\tif (all[type]) {\n\t\t\t\tall[type].splice(all[type].indexOf(handler) >>> 0, 1);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `\"*\"` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * @param {String} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit: function emit(type , evt ) {\n\t\t\t(all[type] || []).slice().map(function (handler) { handler(evt); });\n\t\t\t(all['*'] || []).slice().map(function (handler) { handler(type, evt); });\n\t\t}\n\t};\n}\n\nexport default mitt;\n//# sourceMappingURL=mitt.es.js.map\n","var baseFlatten = require('./_baseFlatten'),\n toInteger = require('./toInteger');\n\n/**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\nfunction flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n}\n\nmodule.exports = flattenDepth;\n","const set = require('regenerate')();\nset.addRange(0x10840, 0x10855).addRange(0x10857, 0x1085F);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x1040, 0x1049).addRange(0x1950, 0x196D).addRange(0x1970, 0x1974);\nmodule.exports = set;","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = global.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar getTypedArrayConstructor = function (it) {\n var proto = getPrototypeOf(it);\n if (!isObject(proto)) return;\n var state = getInternalState(proto);\n return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n throw TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n delete TypedArrayConstructor.prototype[KEY];\n } catch (error) {\n // old WebKit bug - some methods are non-configurable\n try {\n TypedArrayConstructor.prototype[KEY] = property;\n } catch (error2) { /* empty */ }\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n delete TypedArrayConstructor[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n defineBuiltIn(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQUIRED = true;\n defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {\n configurable: true,\n get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n }\n });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n getTypedArrayConstructor: getTypedArrayConstructor,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","module.exports = require('./matchesProperty');\n","const set = require('regenerate')();\nset.addRange(0x10100, 0x10101).addRange(0x12F90, 0x12FF2);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0xA6A0, 0xA6F7).addRange(0x16800, 0x16A38);\nmodule.exports = set;","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","const set = require('regenerate')();\nset.addRange(0x11A50, 0x11AA2);\nmodule.exports = set;","/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\nfunction replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n}\n\nmodule.exports = replaceHolders;\n","const set = require('regenerate')();\nset.addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x108FB, 0x108FF);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x2800, 0x28FF);\nmodule.exports = set;","var baseSetData = require('./_baseSetData'),\n createBind = require('./_createBind'),\n createCurry = require('./_createCurry'),\n createHybrid = require('./_createHybrid'),\n createPartial = require('./_createPartial'),\n getData = require('./_getData'),\n mergeData = require('./_mergeData'),\n setData = require('./_setData'),\n setWrapToString = require('./_setWrapToString'),\n toInteger = require('./toInteger');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n}\n\nmodule.exports = createWrap;\n","const set = require('regenerate')();\nset.addRange(0x200C, 0x200D);\nmodule.exports = set;","var baseCreate = require('./_baseCreate'),\n baseLodash = require('./_baseLodash');\n\n/**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\nfunction LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n}\n\nLodashWrapper.prototype = baseCreate(baseLodash.prototype);\nLodashWrapper.prototype.constructor = LodashWrapper;\n\nmodule.exports = LodashWrapper;\n","const set = require('regenerate')(0x1D2B, 0x1D78);\nset.addRange(0x400, 0x484).addRange(0x487, 0x52F).addRange(0x1C80, 0x1C88).addRange(0x2DE0, 0x2DFF).addRange(0xA640, 0xA69F).addRange(0xFE2E, 0xFE2F);\nmodule.exports = set;","module.exports = require('./head');\n","const set = require('regenerate')(0xFB3E);\nset.addRange(0x591, 0x5C7).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F4).addRange(0xFB1D, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFB4F);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x964, 0x96F).addRange(0xA830, 0xA839).addRange(0x11800, 0x1183B);\nmodule.exports = set;","var asciiWords = require('./_asciiWords'),\n hasUnicodeWord = require('./_hasUnicodeWord'),\n toString = require('./toString'),\n unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n","const set = require('regenerate')(0x2EC, 0x2EE, 0x374, 0x37A, 0x559, 0x640, 0x7FA, 0x81A, 0x824, 0x828, 0x8C9, 0x971, 0xE46, 0xEC6, 0x10FC, 0x17D7, 0x1843, 0x1AA7, 0x1D78, 0x2071, 0x207F, 0x2D6F, 0x2E2F, 0x3005, 0x303B, 0xA015, 0xA60C, 0xA67F, 0xA770, 0xA788, 0xA9CF, 0xA9E6, 0xAA70, 0xAADD, 0xAB69, 0xFF70, 0x16FE3, 0x1E94B);\nset.addRange(0x2B0, 0x2C1).addRange(0x2C6, 0x2D1).addRange(0x2E0, 0x2E4).addRange(0x6E5, 0x6E6).addRange(0x7F4, 0x7F5).addRange(0x1C78, 0x1C7D).addRange(0x1D2C, 0x1D6A).addRange(0x1D9B, 0x1DBF).addRange(0x2090, 0x209C).addRange(0x2C7C, 0x2C7D).addRange(0x3031, 0x3035).addRange(0x309D, 0x309E).addRange(0x30FC, 0x30FE).addRange(0xA4F8, 0xA4FD).addRange(0xA69C, 0xA69D).addRange(0xA717, 0xA71F).addRange(0xA7F2, 0xA7F4).addRange(0xA7F8, 0xA7F9).addRange(0xAAF3, 0xAAF4).addRange(0xAB5C, 0xAB5F).addRange(0xFF9E, 0xFF9F).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x16B40, 0x16B43).addRange(0x16F93, 0x16F9F).addRange(0x16FE0, 0x16FE1).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1E137, 0x1E13D);\nmodule.exports = set;","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","const set = require('regenerate')();\nset.addRange(0x13000, 0x1342E).addRange(0x13430, 0x13438);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0xAE6, 0xAEF).addRange(0xA830, 0xA839).addRange(0x11200, 0x11211).addRange(0x11213, 0x1123E);\nmodule.exports = set;","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","const set = require('regenerate')();\nset.addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x10A00, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A38, 0x10A3A).addRange(0x10A3F, 0x10A48).addRange(0x10A50, 0x10A58);\nmodule.exports = set;","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","var toString = Object.prototype.toString;\n\n/**\n * Get the native `typeof` a value.\n *\n * @param {*} `val`\n * @return {*} Native javascript type\n */\n\nmodule.exports = function kindOf(val) {\n var type = typeof val;\n\n // primitivies\n if (type === 'undefined') {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n if (val === true || val === false || val instanceof Boolean) {\n return 'boolean';\n }\n if (type === 'string' || val instanceof String) {\n return 'string';\n }\n if (type === 'number' || val instanceof Number) {\n return 'number';\n }\n\n // functions\n if (type === 'function' || val instanceof Function) {\n if (typeof val.constructor.name !== 'undefined' && val.constructor.name.slice(0, 9) === 'Generator') {\n return 'generatorfunction';\n }\n return 'function';\n }\n\n // array\n if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) {\n return 'array';\n }\n\n // check for instances of RegExp and Date before calling `toString`\n if (val instanceof RegExp) {\n return 'regexp';\n }\n if (val instanceof Date) {\n return 'date';\n }\n\n // other objects\n type = toString.call(val);\n if (type === '[object RegExp]') {\n return 'regexp';\n }\n if (type === '[object Date]') {\n return 'date';\n }\n if (type === '[object Arguments]') {\n return 'arguments';\n }\n if (type === '[object Error]') {\n return 'error';\n }\n if (type === '[object Promise]') {\n return 'promise';\n }\n\n // buffer\n if (isBuffer(val)) {\n return 'buffer';\n }\n\n // es6: Map, WeakMap, Set, WeakSet\n if (type === '[object Set]') {\n return 'set';\n }\n if (type === '[object WeakSet]') {\n return 'weakset';\n }\n if (type === '[object Map]') {\n return 'map';\n }\n if (type === '[object WeakMap]') {\n return 'weakmap';\n }\n if (type === '[object Symbol]') {\n return 'symbol';\n }\n if (type === '[object Map Iterator]') {\n return 'mapiterator';\n }\n if (type === '[object Set Iterator]') {\n return 'setiterator';\n }\n if (type === '[object String Iterator]') {\n return 'stringiterator';\n }\n if (type === '[object Array Iterator]') {\n return 'arrayiterator';\n }\n\n // typed arrays\n if (type === '[object Int8Array]') {\n return 'int8array';\n }\n if (type === '[object Uint8Array]') {\n return 'uint8array';\n }\n if (type === '[object Uint8ClampedArray]') {\n return 'uint8clampedarray';\n }\n if (type === '[object Int16Array]') {\n return 'int16array';\n }\n if (type === '[object Uint16Array]') {\n return 'uint16array';\n }\n if (type === '[object Int32Array]') {\n return 'int32array';\n }\n if (type === '[object Uint32Array]') {\n return 'uint32array';\n }\n if (type === '[object Float32Array]') {\n return 'float32array';\n }\n if (type === '[object Float64Array]') {\n return 'float64array';\n }\n\n // must be a plain object\n return 'object';\n};\n\n/**\n * If you need to support Safari 5-7 (8-10 yr-old browser),\n * take a look at https://github.com/feross/is-buffer\n */\n\nfunction isBuffer(val) {\n return val.constructor && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}","const set = require('regenerate')();\nset.addRange(0x1A20, 0x1A5E).addRange(0x1A60, 0x1A7C).addRange(0x1A7F, 0x1A89).addRange(0x1A90, 0x1A99).addRange(0x1AA0, 0x1AAD);\nmodule.exports = set;","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","const set = require('regenerate')();\nset.addRange(0xA6A0, 0xA6F7).addRange(0x16800, 0x16A38);\nmodule.exports = set;","var makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = exports.ScrollContainer = exports.ScrollContext = void 0;\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nexports.ScrollContext = _scrollHandler.ScrollHandler;\n\nvar _scrollContainer = require(\"./scroll-container\");\n\nexports.ScrollContainer = _scrollContainer.ScrollContainer;\n\nvar _useScrollRestoration = require(\"./use-scroll-restoration\");\n\nexports.useScrollRestoration = _useScrollRestoration.useScrollRestoration;","const set = require('regenerate')();\nset.addRange(0x1E800, 0x1E8C4).addRange(0x1E8C7, 0x1E8D6);\nmodule.exports = set;","const set = require('regenerate')(0x5F, 0xAA, 0xB5, 0xB7, 0xBA, 0x2EC, 0x2EE, 0x37F, 0x38C, 0x559, 0x5BF, 0x5C7, 0x6FF, 0x7FA, 0x7FD, 0x9B2, 0x9D7, 0x9FC, 0x9FE, 0xA3C, 0xA51, 0xA5E, 0xAD0, 0xB71, 0xB9C, 0xBD0, 0xBD7, 0xC5D, 0xDBD, 0xDCA, 0xDD6, 0xE84, 0xEA5, 0xEC6, 0xF00, 0xF35, 0xF37, 0xF39, 0xFC6, 0x10C7, 0x10CD, 0x1258, 0x12C0, 0x17D7, 0x1AA7, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2054, 0x2071, 0x207F, 0x20E1, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x214E, 0x2D27, 0x2D2D, 0x2D6F, 0xA7D3, 0xA82C, 0xA8FB, 0xFB3E, 0xFE71, 0xFE73, 0xFE77, 0xFE79, 0xFE7B, 0xFE7D, 0xFF3F, 0x101FD, 0x102E0, 0x10808, 0x1083C, 0x10A3F, 0x10F27, 0x110C2, 0x11176, 0x111DC, 0x1123E, 0x11288, 0x11350, 0x11357, 0x114C7, 0x11644, 0x11909, 0x11A47, 0x11A9D, 0x11D3A, 0x11FB0, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1DA75, 0x1DA84, 0x1E14E, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);\nset.addRange(0x30, 0x39).addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x2C1).addRange(0x2C6, 0x2D1).addRange(0x2E0, 0x2E4).addRange(0x300, 0x374).addRange(0x376, 0x377).addRange(0x37B, 0x37D).addRange(0x386, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3F5).addRange(0x3F7, 0x481).addRange(0x483, 0x487).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x560, 0x588).addRange(0x591, 0x5BD).addRange(0x5C1, 0x5C2).addRange(0x5C4, 0x5C5).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F2).addRange(0x610, 0x61A).addRange(0x620, 0x669).addRange(0x66E, 0x6D3).addRange(0x6D5, 0x6DC).addRange(0x6DF, 0x6E8).addRange(0x6EA, 0x6FC).addRange(0x710, 0x74A).addRange(0x74D, 0x7B1).addRange(0x7C0, 0x7F5).addRange(0x800, 0x82D).addRange(0x840, 0x85B).addRange(0x860, 0x86A).addRange(0x870, 0x887).addRange(0x889, 0x88E).addRange(0x898, 0x8E1).addRange(0x8E3, 0x963).addRange(0x966, 0x96F).addRange(0x971, 0x983).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9BC, 0x9C4).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CE).addRange(0x9DC, 0x9DD);\nset.addRange(0x9DF, 0x9E3).addRange(0x9E6, 0x9F1).addRange(0xA01, 0xA03).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33).addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA3E, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA59, 0xA5C).addRange(0xA66, 0xA75).addRange(0xA81, 0xA83).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xABC, 0xAC5).addRange(0xAC7, 0xAC9).addRange(0xACB, 0xACD).addRange(0xAE0, 0xAE3).addRange(0xAE6, 0xAEF).addRange(0xAF9, 0xAFF).addRange(0xB01, 0xB03).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB3C, 0xB44).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4D).addRange(0xB55, 0xB57).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB63).addRange(0xB66, 0xB6F).addRange(0xB82, 0xB83).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9);\nset.addRange(0xBBE, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCD).addRange(0xBE6, 0xBEF).addRange(0xC00, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC3C, 0xC44).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC63).addRange(0xC66, 0xC6F).addRange(0xC80, 0xC83).addRange(0xC85, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCBC, 0xCC4).addRange(0xCC6, 0xCC8).addRange(0xCCA, 0xCCD).addRange(0xCD5, 0xCD6).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE3).addRange(0xCE6, 0xCEF).addRange(0xCF1, 0xCF2).addRange(0xD00, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD44).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4E).addRange(0xD54, 0xD57).addRange(0xD5F, 0xD63).addRange(0xD66, 0xD6F).addRange(0xD7A, 0xD7F).addRange(0xD81, 0xD83).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6).addRange(0xDCF, 0xDD4).addRange(0xDD8, 0xDDF).addRange(0xDE6, 0xDEF).addRange(0xDF2, 0xDF3).addRange(0xE01, 0xE3A).addRange(0xE40, 0xE4E).addRange(0xE50, 0xE59).addRange(0xE81, 0xE82);\nset.addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEBD).addRange(0xEC0, 0xEC4).addRange(0xEC8, 0xECD).addRange(0xED0, 0xED9).addRange(0xEDC, 0xEDF).addRange(0xF18, 0xF19).addRange(0xF20, 0xF29).addRange(0xF3E, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF71, 0xF84).addRange(0xF86, 0xF97).addRange(0xF99, 0xFBC).addRange(0x1000, 0x1049).addRange(0x1050, 0x109D).addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FC, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x135D, 0x135F).addRange(0x1369, 0x1371).addRange(0x1380, 0x138F).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1401, 0x166C).addRange(0x166F, 0x167F).addRange(0x1681, 0x169A).addRange(0x16A0, 0x16EA).addRange(0x16EE, 0x16F8).addRange(0x1700, 0x1715).addRange(0x171F, 0x1734).addRange(0x1740, 0x1753).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1772, 0x1773).addRange(0x1780, 0x17D3).addRange(0x17DC, 0x17DD).addRange(0x17E0, 0x17E9);\nset.addRange(0x180B, 0x180D).addRange(0x180F, 0x1819).addRange(0x1820, 0x1878).addRange(0x1880, 0x18AA).addRange(0x18B0, 0x18F5).addRange(0x1900, 0x191E).addRange(0x1920, 0x192B).addRange(0x1930, 0x193B).addRange(0x1946, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x19D0, 0x19DA).addRange(0x1A00, 0x1A1B).addRange(0x1A20, 0x1A5E).addRange(0x1A60, 0x1A7C).addRange(0x1A7F, 0x1A89).addRange(0x1A90, 0x1A99).addRange(0x1AB0, 0x1ABD).addRange(0x1ABF, 0x1ACE).addRange(0x1B00, 0x1B4C).addRange(0x1B50, 0x1B59).addRange(0x1B6B, 0x1B73).addRange(0x1B80, 0x1BF3).addRange(0x1C00, 0x1C37).addRange(0x1C40, 0x1C49).addRange(0x1C4D, 0x1C7D).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1CD0, 0x1CD2).addRange(0x1CD4, 0x1CFA).addRange(0x1D00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FBC).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FCC).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FE0, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFC).addRange(0x203F, 0x2040).addRange(0x2090, 0x209C).addRange(0x20D0, 0x20DC).addRange(0x20E5, 0x20F0);\nset.addRange(0x210A, 0x2113).addRange(0x2118, 0x211D).addRange(0x212A, 0x2139).addRange(0x213C, 0x213F).addRange(0x2145, 0x2149).addRange(0x2160, 0x2188).addRange(0x2C00, 0x2CE4).addRange(0x2CEB, 0x2CF3).addRange(0x2D00, 0x2D25).addRange(0x2D30, 0x2D67).addRange(0x2D7F, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x2DE0, 0x2DFF).addRange(0x3005, 0x3007).addRange(0x3021, 0x302F).addRange(0x3031, 0x3035).addRange(0x3038, 0x303C).addRange(0x3041, 0x3096).addRange(0x3099, 0x309A).addRange(0x309D, 0x309F).addRange(0x30A1, 0x30FA).addRange(0x30FC, 0x30FF).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x31A0, 0x31BF).addRange(0x31F0, 0x31FF).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0xA48C).addRange(0xA4D0, 0xA4FD).addRange(0xA500, 0xA60C).addRange(0xA610, 0xA62B).addRange(0xA640, 0xA66F).addRange(0xA674, 0xA67D).addRange(0xA67F, 0xA6F1).addRange(0xA717, 0xA71F).addRange(0xA722, 0xA788).addRange(0xA78B, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA827).addRange(0xA840, 0xA873).addRange(0xA880, 0xA8C5).addRange(0xA8D0, 0xA8D9).addRange(0xA8E0, 0xA8F7);\nset.addRange(0xA8FD, 0xA92D).addRange(0xA930, 0xA953).addRange(0xA960, 0xA97C).addRange(0xA980, 0xA9C0).addRange(0xA9CF, 0xA9D9).addRange(0xA9E0, 0xA9FE).addRange(0xAA00, 0xAA36).addRange(0xAA40, 0xAA4D).addRange(0xAA50, 0xAA59).addRange(0xAA60, 0xAA76).addRange(0xAA7A, 0xAAC2).addRange(0xAADB, 0xAADD).addRange(0xAAE0, 0xAAEF).addRange(0xAAF2, 0xAAF6).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB69).addRange(0xAB70, 0xABEA).addRange(0xABEC, 0xABED).addRange(0xABF0, 0xABF9).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1D, 0xFB28).addRange(0xFB2A, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBB1).addRange(0xFBD3, 0xFC5D).addRange(0xFC64, 0xFD3D).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDF9).addRange(0xFE00, 0xFE0F).addRange(0xFE20, 0xFE2F).addRange(0xFE33, 0xFE34).addRange(0xFE4D, 0xFE4F).addRange(0xFE7F, 0xFEFC).addRange(0xFF10, 0xFF19).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0xFF66, 0xFFBE);\nset.addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10140, 0x10174).addRange(0x10280, 0x1029C).addRange(0x102A0, 0x102D0).addRange(0x10300, 0x1031F).addRange(0x1032D, 0x1034A).addRange(0x10350, 0x1037A).addRange(0x10380, 0x1039D).addRange(0x103A0, 0x103C3).addRange(0x103C8, 0x103CF).addRange(0x103D1, 0x103D5).addRange(0x10400, 0x1049D).addRange(0x104A0, 0x104A9).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10860, 0x10876).addRange(0x10880, 0x1089E).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x10900, 0x10915).addRange(0x10920, 0x10939);\nset.addRange(0x10980, 0x109B7).addRange(0x109BE, 0x109BF).addRange(0x10A00, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A38, 0x10A3A).addRange(0x10A60, 0x10A7C).addRange(0x10A80, 0x10A9C).addRange(0x10AC0, 0x10AC7).addRange(0x10AC9, 0x10AE6).addRange(0x10B00, 0x10B35).addRange(0x10B40, 0x10B55).addRange(0x10B60, 0x10B72).addRange(0x10B80, 0x10B91).addRange(0x10C00, 0x10C48).addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10D00, 0x10D27).addRange(0x10D30, 0x10D39).addRange(0x10E80, 0x10EA9).addRange(0x10EAB, 0x10EAC).addRange(0x10EB0, 0x10EB1).addRange(0x10F00, 0x10F1C).addRange(0x10F30, 0x10F50).addRange(0x10F70, 0x10F85).addRange(0x10FB0, 0x10FC4).addRange(0x10FE0, 0x10FF6).addRange(0x11000, 0x11046).addRange(0x11066, 0x11075).addRange(0x1107F, 0x110BA).addRange(0x110D0, 0x110E8).addRange(0x110F0, 0x110F9).addRange(0x11100, 0x11134).addRange(0x11136, 0x1113F).addRange(0x11144, 0x11147).addRange(0x11150, 0x11173).addRange(0x11180, 0x111C4).addRange(0x111C9, 0x111CC).addRange(0x111CE, 0x111DA).addRange(0x11200, 0x11211).addRange(0x11213, 0x11237).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A8).addRange(0x112B0, 0x112EA).addRange(0x112F0, 0x112F9).addRange(0x11300, 0x11303).addRange(0x11305, 0x1130C);\nset.addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1133B, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134D).addRange(0x1135D, 0x11363).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x11400, 0x1144A).addRange(0x11450, 0x11459).addRange(0x1145E, 0x11461).addRange(0x11480, 0x114C5).addRange(0x114D0, 0x114D9).addRange(0x11580, 0x115B5).addRange(0x115B8, 0x115C0).addRange(0x115D8, 0x115DD).addRange(0x11600, 0x11640).addRange(0x11650, 0x11659).addRange(0x11680, 0x116B8).addRange(0x116C0, 0x116C9).addRange(0x11700, 0x1171A).addRange(0x1171D, 0x1172B).addRange(0x11730, 0x11739).addRange(0x11740, 0x11746).addRange(0x11800, 0x1183A).addRange(0x118A0, 0x118E9).addRange(0x118FF, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x11935).addRange(0x11937, 0x11938).addRange(0x1193B, 0x11943).addRange(0x11950, 0x11959).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D7).addRange(0x119DA, 0x119E1).addRange(0x119E3, 0x119E4).addRange(0x11A00, 0x11A3E).addRange(0x11A50, 0x11A99).addRange(0x11AB0, 0x11AF8).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C36).addRange(0x11C38, 0x11C40).addRange(0x11C50, 0x11C59).addRange(0x11C72, 0x11C8F).addRange(0x11C92, 0x11CA7).addRange(0x11CA9, 0x11CB6).addRange(0x11D00, 0x11D06);\nset.addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D47).addRange(0x11D50, 0x11D59).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D8E).addRange(0x11D90, 0x11D91).addRange(0x11D93, 0x11D98).addRange(0x11DA0, 0x11DA9).addRange(0x11EE0, 0x11EF6).addRange(0x12000, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12480, 0x12543).addRange(0x12F90, 0x12FF0).addRange(0x13000, 0x1342E).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A60, 0x16A69).addRange(0x16A70, 0x16ABE).addRange(0x16AC0, 0x16AC9).addRange(0x16AD0, 0x16AED).addRange(0x16AF0, 0x16AF4).addRange(0x16B00, 0x16B36).addRange(0x16B40, 0x16B43).addRange(0x16B50, 0x16B59).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16E40, 0x16E7F).addRange(0x16F00, 0x16F4A).addRange(0x16F4F, 0x16F87).addRange(0x16F8F, 0x16F9F).addRange(0x16FE0, 0x16FE1).addRange(0x16FE3, 0x16FE4).addRange(0x16FF0, 0x16FF1).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B000, 0x1B122).addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167).addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99);\nset.addRange(0x1BC9D, 0x1BC9E).addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1D165, 0x1D169).addRange(0x1D16D, 0x1D172).addRange(0x1D17B, 0x1D182).addRange(0x1D185, 0x1D18B).addRange(0x1D1AA, 0x1D1AD).addRange(0x1D242, 0x1D244).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6FA).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D734).addRange(0x1D736, 0x1D74E).addRange(0x1D750, 0x1D76E).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D7A8).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7CB).addRange(0x1D7CE, 0x1D7FF).addRange(0x1DA00, 0x1DA36).addRange(0x1DA3B, 0x1DA6C).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF).addRange(0x1DF00, 0x1DF1E).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A).addRange(0x1E100, 0x1E12C).addRange(0x1E130, 0x1E13D).addRange(0x1E140, 0x1E149).addRange(0x1E290, 0x1E2AE);\nset.addRange(0x1E2C0, 0x1E2F9).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE).addRange(0x1E800, 0x1E8C4).addRange(0x1E8D0, 0x1E8D6).addRange(0x1E900, 0x1E94B).addRange(0x1E950, 0x1E959).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1FBF0, 0x1FBF9).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B738).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A).addRange(0xE0100, 0xE01EF);\nmodule.exports = set;","import React from 'react';\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nvar isFunction = function isFunction(obj) {\n return typeof obj === 'function';\n};\nvar MDXContext = /*#__PURE__*/React.createContext({});\nvar withMDXComponents = function withMDXComponents(Component) {\n return function (props) {\n var allComponents = useMDXComponents(props.components);\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n components: allComponents\n }));\n };\n};\nvar useMDXComponents = function useMDXComponents(components) {\n var contextComponents = React.useContext(MDXContext);\n var allComponents = contextComponents;\n if (components) {\n allComponents = isFunction(components) ? components(contextComponents) : _objectSpread2(_objectSpread2({}, contextComponents), components);\n }\n return allComponents;\n};\nvar MDXProvider = function MDXProvider(props) {\n var allComponents = useMDXComponents(props.components);\n return /*#__PURE__*/React.createElement(MDXContext.Provider, {\n value: allComponents\n }, props.children);\n};\nvar TYPE_PROP_NAME = 'mdxType';\nvar DEFAULTS = {\n inlineCode: 'code',\n wrapper: function wrapper(_ref) {\n var children = _ref.children;\n return /*#__PURE__*/React.createElement(React.Fragment, {}, children);\n }\n};\nvar MDXCreateElement = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var propComponents = props.components,\n mdxType = props.mdxType,\n originalType = props.originalType,\n parentName = props.parentName,\n etc = _objectWithoutProperties(props, [\"components\", \"mdxType\", \"originalType\", \"parentName\"]);\n var components = useMDXComponents(propComponents);\n var type = mdxType;\n var Component = components[\"\".concat(parentName, \".\").concat(type)] || components[type] || DEFAULTS[type] || originalType;\n if (propComponents) {\n return /*#__PURE__*/React.createElement(Component, _objectSpread2(_objectSpread2({\n ref: ref\n }, etc), {}, {\n components: propComponents\n }));\n }\n return /*#__PURE__*/React.createElement(Component, _objectSpread2({\n ref: ref\n }, etc));\n});\nMDXCreateElement.displayName = 'MDXCreateElement';\nfunction createElement(type, props) {\n var args = arguments;\n var mdxType = props && props.mdxType;\n if (typeof type === 'string' || mdxType) {\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = MDXCreateElement;\n var newProps = {};\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n newProps.originalType = type;\n newProps[TYPE_PROP_NAME] = typeof type === 'string' ? type : mdxType;\n createElementArgArray[1] = newProps;\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n }\n return React.createElement.apply(null, createElementArgArray);\n }\n return React.createElement.apply(null, args);\n}\nexport { MDXContext, MDXProvider, createElement as mdx, useMDXComponents, withMDXComponents };","const set = require('regenerate')(0xE84, 0xEA5, 0xEC6);\nset.addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEBD).addRange(0xEC0, 0xEC4).addRange(0xEC8, 0xECD).addRange(0xED0, 0xED9).addRange(0xEDC, 0xEDF);\nmodule.exports = set;","const set = require('regenerate')(0xDBD, 0xDCA, 0xDD6);\nset.addRange(0x964, 0x965).addRange(0xD81, 0xD83).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6).addRange(0xDCF, 0xDD4).addRange(0xDD8, 0xDDF).addRange(0xDE6, 0xDEF).addRange(0xDF2, 0xDF4).addRange(0x111E1, 0x111F4);\nmodule.exports = set;","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","const set = require('regenerate')();\nset.addRange(0x1720, 0x1736);\nmodule.exports = set;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","const set = require('regenerate')();\nset.addRange(0x12000, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12470, 0x12474).addRange(0x12480, 0x12543);\nmodule.exports = set;","\"use strict\";\n\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = {\n enumerable: true,\n get: function () {\n return m[k];\n }\n };\n }\n Object.defineProperty(o, k2, desc);\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\nvar __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar React = __importStar(require(\"react\"));\nvar KEYCODE_ENTER = 13;\nvar KEYCODE_TAB = 9;\nvar KEYCODE_BACKSPACE = 8;\nvar KEYCODE_Y = 89;\nvar KEYCODE_Z = 90;\nvar KEYCODE_M = 77;\nvar KEYCODE_PARENS = 57;\nvar KEYCODE_BRACKETS = 219;\nvar KEYCODE_QUOTE = 222;\nvar KEYCODE_BACK_QUOTE = 192;\nvar KEYCODE_ESCAPE = 27;\nvar HISTORY_LIMIT = 100;\nvar HISTORY_TIME_GAP = 3000;\nvar isWindows = typeof window !== 'undefined' && 'navigator' in window && /Win/i.test(navigator.platform);\nvar isMacLike = typeof window !== 'undefined' && 'navigator' in window && /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);\nvar className = 'npm__react-simple-code-editor__textarea';\nvar cssText = /* CSS */\"\\n/**\\n * Reset the text fill color so that placeholder is visible\\n */\\n.\".concat(className, \":empty {\\n -webkit-text-fill-color: inherit !important;\\n}\\n\\n/**\\n * Hack to apply on some CSS on IE10 and IE11\\n */\\n@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {\\n /**\\n * IE doesn't support '-webkit-text-fill-color'\\n * So we use 'color: transparent' to make the text transparent on IE\\n * Unlike other browsers, it doesn't affect caret color in IE\\n */\\n .\").concat(className, \" {\\n color: transparent !important;\\n }\\n\\n .\").concat(className, \"::selection {\\n background-color: #accef7 !important;\\n color: transparent !important;\\n }\\n}\\n\");\nvar Editor = /** @class */function (_super) {\n __extends(Editor, _super);\n function Editor() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n capture: true\n };\n _this._recordCurrentState = function () {\n var input = _this._input;\n if (!input) return;\n // Save current state of the input\n var value = input.value,\n selectionStart = input.selectionStart,\n selectionEnd = input.selectionEnd;\n _this._recordChange({\n value: value,\n selectionStart: selectionStart,\n selectionEnd: selectionEnd\n });\n };\n _this._getLines = function (text, position) {\n return text.substring(0, position).split('\\n');\n };\n _this._recordChange = function (record, overwrite) {\n var _a, _b, _c;\n if (overwrite === void 0) {\n overwrite = false;\n }\n var _d = _this._history,\n stack = _d.stack,\n offset = _d.offset;\n if (stack.length && offset > -1) {\n // When something updates, drop the redo operations\n _this._history.stack = stack.slice(0, offset + 1);\n // Limit the number of operations to 100\n var count = _this._history.stack.length;\n if (count > HISTORY_LIMIT) {\n var extras = count - HISTORY_LIMIT;\n _this._history.stack = stack.slice(extras, count);\n _this._history.offset = Math.max(_this._history.offset - extras, 0);\n }\n }\n var timestamp = Date.now();\n if (overwrite) {\n var last = _this._history.stack[_this._history.offset];\n if (last && timestamp - last.timestamp < HISTORY_TIME_GAP) {\n // A previous entry exists and was in short interval\n // Match the last word in the line\n var re = /[^a-z0-9]([a-z0-9]+)$/i;\n // Get the previous line\n var previous = (_a = _this._getLines(last.value, last.selectionStart).pop()) === null || _a === void 0 ? void 0 : _a.match(re);\n // Get the current line\n var current = (_b = _this._getLines(record.value, record.selectionStart).pop()) === null || _b === void 0 ? void 0 : _b.match(re);\n if ((previous === null || previous === void 0 ? void 0 : previous[1]) && ((_c = current === null || current === void 0 ? void 0 : current[1]) === null || _c === void 0 ? void 0 : _c.startsWith(previous[1]))) {\n // The last word of the previous line and current line match\n // Overwrite previous entry so that undo will remove whole word\n _this._history.stack[_this._history.offset] = __assign(__assign({}, record), {\n timestamp: timestamp\n });\n return;\n }\n }\n }\n // Add the new operation to the stack\n _this._history.stack.push(__assign(__assign({}, record), {\n timestamp: timestamp\n }));\n _this._history.offset++;\n };\n _this._updateInput = function (record) {\n var input = _this._input;\n if (!input) return;\n // Update values and selection state\n input.value = record.value;\n input.selectionStart = record.selectionStart;\n input.selectionEnd = record.selectionEnd;\n _this.props.onValueChange(record.value);\n };\n _this._applyEdits = function (record) {\n // Save last selection state\n var input = _this._input;\n var last = _this._history.stack[_this._history.offset];\n if (last && input) {\n _this._history.stack[_this._history.offset] = __assign(__assign({}, last), {\n selectionStart: input.selectionStart,\n selectionEnd: input.selectionEnd\n });\n }\n // Save the changes\n _this._recordChange(record);\n _this._updateInput(record);\n };\n _this._undoEdit = function () {\n var _a = _this._history,\n stack = _a.stack,\n offset = _a.offset;\n // Get the previous edit\n var record = stack[offset - 1];\n if (record) {\n // Apply the changes and update the offset\n _this._updateInput(record);\n _this._history.offset = Math.max(offset - 1, 0);\n }\n };\n _this._redoEdit = function () {\n var _a = _this._history,\n stack = _a.stack,\n offset = _a.offset;\n // Get the next edit\n var record = stack[offset + 1];\n if (record) {\n // Apply the changes and update the offset\n _this._updateInput(record);\n _this._history.offset = Math.min(offset + 1, stack.length - 1);\n }\n };\n _this._handleKeyDown = function (e) {\n var _a = _this.props,\n tabSize = _a.tabSize,\n insertSpaces = _a.insertSpaces,\n ignoreTabKey = _a.ignoreTabKey,\n onKeyDown = _a.onKeyDown;\n if (onKeyDown) {\n onKeyDown(e);\n if (e.defaultPrevented) {\n return;\n }\n }\n if (e.keyCode === KEYCODE_ESCAPE) {\n e.currentTarget.blur();\n }\n var _b = e.currentTarget,\n value = _b.value,\n selectionStart = _b.selectionStart,\n selectionEnd = _b.selectionEnd;\n var tabCharacter = (insertSpaces ? ' ' : '\\t').repeat(tabSize);\n if (e.keyCode === KEYCODE_TAB && !ignoreTabKey && _this.state.capture) {\n // Prevent focus change\n e.preventDefault();\n if (e.shiftKey) {\n // Unindent selected lines\n var linesBeforeCaret = _this._getLines(value, selectionStart);\n var startLine_1 = linesBeforeCaret.length - 1;\n var endLine_1 = _this._getLines(value, selectionEnd).length - 1;\n var nextValue = value.split('\\n').map(function (line, i) {\n if (i >= startLine_1 && i <= endLine_1 && line.startsWith(tabCharacter)) {\n return line.substring(tabCharacter.length);\n }\n return line;\n }).join('\\n');\n if (value !== nextValue) {\n var startLineText = linesBeforeCaret[startLine_1];\n _this._applyEdits({\n value: nextValue,\n // Move the start cursor if first line in selection was modified\n // It was modified only if it started with a tab\n selectionStart: (startLineText === null || startLineText === void 0 ? void 0 : startLineText.startsWith(tabCharacter)) ? selectionStart - tabCharacter.length : selectionStart,\n // Move the end cursor by total number of characters removed\n selectionEnd: selectionEnd - (value.length - nextValue.length)\n });\n }\n } else if (selectionStart !== selectionEnd) {\n // Indent selected lines\n var linesBeforeCaret = _this._getLines(value, selectionStart);\n var startLine_2 = linesBeforeCaret.length - 1;\n var endLine_2 = _this._getLines(value, selectionEnd).length - 1;\n var startLineText = linesBeforeCaret[startLine_2];\n _this._applyEdits({\n value: value.split('\\n').map(function (line, i) {\n if (i >= startLine_2 && i <= endLine_2) {\n return tabCharacter + line;\n }\n return line;\n }).join('\\n'),\n // Move the start cursor by number of characters added in first line of selection\n // Don't move it if it there was no text before cursor\n selectionStart: startLineText && /\\S/.test(startLineText) ? selectionStart + tabCharacter.length : selectionStart,\n // Move the end cursor by total number of characters added\n selectionEnd: selectionEnd + tabCharacter.length * (endLine_2 - startLine_2 + 1)\n });\n } else {\n var updatedSelection = selectionStart + tabCharacter.length;\n _this._applyEdits({\n // Insert tab character at caret\n value: value.substring(0, selectionStart) + tabCharacter + value.substring(selectionEnd),\n // Update caret position\n selectionStart: updatedSelection,\n selectionEnd: updatedSelection\n });\n }\n } else if (e.keyCode === KEYCODE_BACKSPACE) {\n var hasSelection = selectionStart !== selectionEnd;\n var textBeforeCaret = value.substring(0, selectionStart);\n if (textBeforeCaret.endsWith(tabCharacter) && !hasSelection) {\n // Prevent default delete behaviour\n e.preventDefault();\n var updatedSelection = selectionStart - tabCharacter.length;\n _this._applyEdits({\n // Remove tab character at caret\n value: value.substring(0, selectionStart - tabCharacter.length) + value.substring(selectionEnd),\n // Update caret position\n selectionStart: updatedSelection,\n selectionEnd: updatedSelection\n });\n }\n } else if (e.keyCode === KEYCODE_ENTER) {\n // Ignore selections\n if (selectionStart === selectionEnd) {\n // Get the current line\n var line = _this._getLines(value, selectionStart).pop();\n var matches = line === null || line === void 0 ? void 0 : line.match(/^\\s+/);\n if (matches === null || matches === void 0 ? void 0 : matches[0]) {\n e.preventDefault();\n // Preserve indentation on inserting a new line\n var indent = '\\n' + matches[0];\n var updatedSelection = selectionStart + indent.length;\n _this._applyEdits({\n // Insert indentation character at caret\n value: value.substring(0, selectionStart) + indent + value.substring(selectionEnd),\n // Update caret position\n selectionStart: updatedSelection,\n selectionEnd: updatedSelection\n });\n }\n }\n } else if (e.keyCode === KEYCODE_PARENS || e.keyCode === KEYCODE_BRACKETS || e.keyCode === KEYCODE_QUOTE || e.keyCode === KEYCODE_BACK_QUOTE) {\n var chars = void 0;\n if (e.keyCode === KEYCODE_PARENS && e.shiftKey) {\n chars = ['(', ')'];\n } else if (e.keyCode === KEYCODE_BRACKETS) {\n if (e.shiftKey) {\n chars = ['{', '}'];\n } else {\n chars = ['[', ']'];\n }\n } else if (e.keyCode === KEYCODE_QUOTE) {\n if (e.shiftKey) {\n chars = ['\"', '\"'];\n } else {\n chars = [\"'\", \"'\"];\n }\n } else if (e.keyCode === KEYCODE_BACK_QUOTE && !e.shiftKey) {\n chars = ['`', '`'];\n }\n // If text is selected, wrap them in the characters\n if (selectionStart !== selectionEnd && chars) {\n e.preventDefault();\n _this._applyEdits({\n value: value.substring(0, selectionStart) + chars[0] + value.substring(selectionStart, selectionEnd) + chars[1] + value.substring(selectionEnd),\n // Update caret position\n selectionStart: selectionStart,\n selectionEnd: selectionEnd + 2\n });\n }\n } else if ((isMacLike ?\n // Trigger undo with ⌘+Z on Mac\n e.metaKey && e.keyCode === KEYCODE_Z :\n // Trigger undo with Ctrl+Z on other platforms\n e.ctrlKey && e.keyCode === KEYCODE_Z) && !e.shiftKey && !e.altKey) {\n e.preventDefault();\n _this._undoEdit();\n } else if ((isMacLike ?\n // Trigger redo with ⌘+Shift+Z on Mac\n e.metaKey && e.keyCode === KEYCODE_Z && e.shiftKey : isWindows ?\n // Trigger redo with Ctrl+Y on Windows\n e.ctrlKey && e.keyCode === KEYCODE_Y :\n // Trigger redo with Ctrl+Shift+Z on other platforms\n e.ctrlKey && e.keyCode === KEYCODE_Z && e.shiftKey) && !e.altKey) {\n e.preventDefault();\n _this._redoEdit();\n } else if (e.keyCode === KEYCODE_M && e.ctrlKey && (isMacLike ? e.shiftKey : true)) {\n e.preventDefault();\n // Toggle capturing tab key so users can focus away\n _this.setState(function (state) {\n return {\n capture: !state.capture\n };\n });\n }\n };\n _this._handleChange = function (e) {\n var _a = e.currentTarget,\n value = _a.value,\n selectionStart = _a.selectionStart,\n selectionEnd = _a.selectionEnd;\n _this._recordChange({\n value: value,\n selectionStart: selectionStart,\n selectionEnd: selectionEnd\n }, true);\n _this.props.onValueChange(value);\n };\n _this._history = {\n stack: [],\n offset: -1\n };\n _this._input = null;\n return _this;\n }\n Editor.prototype.componentDidMount = function () {\n this._recordCurrentState();\n };\n Object.defineProperty(Editor.prototype, \"session\", {\n get: function () {\n return {\n history: this._history\n };\n },\n set: function (session) {\n this._history = session.history;\n },\n enumerable: false,\n configurable: true\n });\n Editor.prototype.render = function () {\n var _this = this;\n var _a = this.props,\n value = _a.value,\n style = _a.style,\n padding = _a.padding,\n highlight = _a.highlight,\n textareaId = _a.textareaId,\n textareaClassName = _a.textareaClassName,\n autoFocus = _a.autoFocus,\n disabled = _a.disabled,\n form = _a.form,\n maxLength = _a.maxLength,\n minLength = _a.minLength,\n name = _a.name,\n placeholder = _a.placeholder,\n readOnly = _a.readOnly,\n required = _a.required,\n onClick = _a.onClick,\n onFocus = _a.onFocus,\n onBlur = _a.onBlur,\n onKeyUp = _a.onKeyUp,\n /* eslint-disable @typescript-eslint/no-unused-vars */\n onKeyDown = _a.onKeyDown,\n onValueChange = _a.onValueChange,\n tabSize = _a.tabSize,\n insertSpaces = _a.insertSpaces,\n ignoreTabKey = _a.ignoreTabKey,\n /* eslint-enable @typescript-eslint/no-unused-vars */\n preClassName = _a.preClassName,\n rest = __rest(_a, [\"value\", \"style\", \"padding\", \"highlight\", \"textareaId\", \"textareaClassName\", \"autoFocus\", \"disabled\", \"form\", \"maxLength\", \"minLength\", \"name\", \"placeholder\", \"readOnly\", \"required\", \"onClick\", \"onFocus\", \"onBlur\", \"onKeyUp\", \"onKeyDown\", \"onValueChange\", \"tabSize\", \"insertSpaces\", \"ignoreTabKey\", \"preClassName\"]);\n var contentStyle = {\n paddingTop: padding,\n paddingRight: padding,\n paddingBottom: padding,\n paddingLeft: padding\n };\n var highlighted = highlight(value);\n return React.createElement(\"div\", __assign({}, rest, {\n style: __assign(__assign({}, styles.container), style)\n }), React.createElement(\"textarea\", {\n ref: function (c) {\n return _this._input = c;\n },\n style: __assign(__assign(__assign({}, styles.editor), styles.textarea), contentStyle),\n className: className + (textareaClassName ? \" \".concat(textareaClassName) : ''),\n id: textareaId,\n value: value,\n onChange: this._handleChange,\n onKeyDown: this._handleKeyDown,\n onClick: onClick,\n onKeyUp: onKeyUp,\n onFocus: onFocus,\n onBlur: onBlur,\n disabled: disabled,\n form: form,\n maxLength: maxLength,\n minLength: minLength,\n name: name,\n placeholder: placeholder,\n readOnly: readOnly,\n required: required,\n autoFocus: autoFocus,\n autoCapitalize: \"off\",\n autoComplete: \"off\",\n autoCorrect: \"off\",\n spellCheck: false,\n \"data-gramm\": false\n }), React.createElement(\"pre\", __assign({\n className: preClassName,\n \"aria-hidden\": \"true\",\n style: __assign(__assign(__assign({}, styles.editor), styles.highlight), contentStyle)\n }, typeof highlighted === 'string' ? {\n dangerouslySetInnerHTML: {\n __html: highlighted + '
    '\n }\n } : {\n children: highlighted\n })), React.createElement(\"style\", {\n type: \"text/css\",\n dangerouslySetInnerHTML: {\n __html: cssText\n }\n }));\n };\n Editor.defaultProps = {\n tabSize: 2,\n insertSpaces: true,\n ignoreTabKey: false,\n padding: 0\n };\n return Editor;\n}(React.Component);\nexports.default = Editor;\nvar styles = {\n container: {\n position: 'relative',\n textAlign: 'left',\n boxSizing: 'border-box',\n padding: 0,\n overflow: 'hidden'\n },\n textarea: {\n position: 'absolute',\n top: 0,\n left: 0,\n height: '100%',\n width: '100%',\n resize: 'none',\n color: 'inherit',\n overflow: 'hidden',\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n WebkitTextFillColor: 'transparent'\n },\n highlight: {\n position: 'relative',\n pointerEvents: 'none'\n },\n editor: {\n margin: 0,\n border: 0,\n background: 'none',\n boxSizing: 'inherit',\n display: 'inherit',\n fontFamily: 'inherit',\n fontSize: 'inherit',\n fontStyle: 'inherit',\n fontVariantLigatures: 'inherit',\n fontWeight: 'inherit',\n letterSpacing: 'inherit',\n lineHeight: 'inherit',\n tabSize: 'inherit',\n textIndent: 'inherit',\n textRendering: 'inherit',\n textTransform: 'inherit',\n whiteSpace: 'pre-wrap',\n wordBreak: 'keep-all',\n overflowWrap: 'break-word'\n }\n};","const set = require('regenerate')();\nset.addRange(0x11C70, 0x11C8F).addRange(0x11C92, 0x11CA7).addRange(0x11CA9, 0x11CB6);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x10840, 0x10855).addRange(0x10857, 0x1085F);\nmodule.exports = set;","const set = require('regenerate')(0x60C, 0x61B, 0x61F);\nset.addRange(0x660, 0x669).addRange(0x10E80, 0x10EA9).addRange(0x10EAB, 0x10EAD).addRange(0x10EB0, 0x10EB1);\nmodule.exports = set;","const set = require('regenerate')(0x171F);\nset.addRange(0x1700, 0x1715).addRange(0x1735, 0x1736);\nmodule.exports = set;","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","exports.polyfill = Component => Component\n","const set = require('regenerate')();\nset.addRange(0x11AC0, 0x11AF8);\nmodule.exports = set;","var baseSetData = require('./_baseSetData'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar setData = shortOut(baseSetData);\n\nmodule.exports = setData;\n","const set = require('regenerate')(0x171F);\nset.addRange(0x1700, 0x1715);\nmodule.exports = set;","const set = require('regenerate')(0x3005, 0x3007);\nset.addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5).addRange(0x3021, 0x3029).addRange(0x3038, 0x303B).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0x9FFF).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0x16FE2, 0x16FE3).addRange(0x16FF0, 0x16FF1).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B738).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x9E6, 0x9EF).addRange(0x1040, 0x1049).addRange(0x11100, 0x11134).addRange(0x11136, 0x11147);\nmodule.exports = set;","module.exports = '14.0.0';","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","import { PlatformInstall, Tanka, Jb } from \"../../../../src/components/install\";\nimport * as React from 'react';\nexport default {\n PlatformInstall,\n Tanka,\n Jb,\n React\n};","const set = require('regenerate')(0x640);\nset.addRange(0x10F30, 0x10F59);\nmodule.exports = set;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar getLocation = function getLocation(source) {\n var _source$location = source.location,\n search = _source$location.search,\n hash = _source$location.hash,\n href = _source$location.href,\n origin = _source$location.origin,\n protocol = _source$location.protocol,\n host = _source$location.host,\n hostname = _source$location.hostname,\n port = _source$location.port;\n var pathname = source.location.pathname;\n\n\n if (!pathname && href && canUseDOM) {\n var url = new URL(href);\n pathname = url.pathname;\n }\n\n return {\n pathname: encodeURI(decodeURI(pathname)),\n search: search,\n hash: hash,\n href: href,\n origin: origin,\n protocol: protocol,\n host: host,\n hostname: hostname,\n port: port,\n state: source.history.state,\n key: source.history.state && source.history.state.key || \"initial\"\n };\n};\n\nvar createHistory = function createHistory(source, options) {\n var listeners = [];\n var location = getLocation(source);\n var transitioning = false;\n var resolveTransition = function resolveTransition() {};\n\n return {\n get location() {\n return location;\n },\n\n get transitioning() {\n return transitioning;\n },\n\n _onTransitionComplete: function _onTransitionComplete() {\n transitioning = false;\n resolveTransition();\n },\n listen: function listen(listener) {\n listeners.push(listener);\n\n var popstateListener = function popstateListener() {\n location = getLocation(source);\n listener({ location: location, action: \"POP\" });\n };\n\n source.addEventListener(\"popstate\", popstateListener);\n\n return function () {\n source.removeEventListener(\"popstate\", popstateListener);\n listeners = listeners.filter(function (fn) {\n return fn !== listener;\n });\n };\n },\n navigate: function navigate(to) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n state = _ref.state,\n _ref$replace = _ref.replace,\n replace = _ref$replace === undefined ? false : _ref$replace;\n\n if (typeof to === \"number\") {\n source.history.go(to);\n } else {\n state = _extends({}, state, { key: Date.now() + \"\" });\n // try...catch iOS Safari limits to 100 pushState calls\n try {\n if (transitioning || replace) {\n source.history.replaceState(state, null, to);\n } else {\n source.history.pushState(state, null, to);\n }\n } catch (e) {\n source.location[replace ? \"replace\" : \"assign\"](to);\n }\n }\n\n location = getLocation(source);\n transitioning = true;\n var transition = new Promise(function (res) {\n return resolveTransition = res;\n });\n listeners.forEach(function (listener) {\n return listener({ location: location, action: \"PUSH\" });\n });\n return transition;\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Stores history entries in memory for testing or other platforms like Native\nvar createMemorySource = function createMemorySource() {\n var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n\n var searchIndex = initialPath.indexOf(\"?\");\n var initialLocation = {\n pathname: searchIndex > -1 ? initialPath.substr(0, searchIndex) : initialPath,\n search: searchIndex > -1 ? initialPath.substr(searchIndex) : \"\"\n };\n var index = 0;\n var stack = [initialLocation];\n var states = [null];\n\n return {\n get location() {\n return stack[index];\n },\n addEventListener: function addEventListener(name, fn) {},\n removeEventListener: function removeEventListener(name, fn) {},\n\n history: {\n get entries() {\n return stack;\n },\n get index() {\n return index;\n },\n get state() {\n return states[index];\n },\n pushState: function pushState(state, _, uri) {\n var _uri$split = uri.split(\"?\"),\n pathname = _uri$split[0],\n _uri$split$ = _uri$split[1],\n search = _uri$split$ === undefined ? \"\" : _uri$split$;\n\n index++;\n stack.push({ pathname: pathname, search: search.length ? \"?\" + search : search });\n states.push(state);\n },\n replaceState: function replaceState(state, _, uri) {\n var _uri$split2 = uri.split(\"?\"),\n pathname = _uri$split2[0],\n _uri$split2$ = _uri$split2[1],\n search = _uri$split2$ === undefined ? \"\" : _uri$split2$;\n\n stack[index] = { pathname: pathname, search: search };\n states[index] = state;\n },\n go: function go(to) {\n var newIndex = index + to;\n\n if (newIndex < 0 || newIndex > states.length - 1) {\n return;\n }\n\n index = newIndex;\n }\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// global history - uses window.history as the source if available, otherwise a\n// memory history\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nvar getSource = function getSource() {\n return canUseDOM ? window : createMemorySource();\n};\n\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate;\n\n////////////////////////////////////////////////////////////////////////////////\n\nexport { globalHistory, navigate, createHistory, createMemorySource };","const set = require('regenerate')();\nset.addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D7).addRange(0x119DA, 0x119E4);\nmodule.exports = set;","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\n/**\n * Get a manifest filename depending on localized pathname\n *\n * @param {string} pathname\n * @param {Array<{start_url: string, lang: string}>} localizedManifests\n * @return string\n */\nvar _default = function _default(pathname, localizedManifests) {\n var defaultFilename = \"manifest.webmanifest\";\n\n if (!Array.isArray(localizedManifests)) {\n return defaultFilename;\n }\n\n var localizedManifest = localizedManifests.find(function (app) {\n return pathname.startsWith(app.start_url);\n });\n\n if (!localizedManifest) {\n return defaultFilename;\n }\n\n return \"manifest_\" + localizedManifest.lang + \".webmanifest\";\n};\n\nexports.default = _default;","const set = require('regenerate')(0xA3C, 0xA51, 0xA5E);\nset.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0xA01, 0xA03).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33).addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA3E, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA59, 0xA5C).addRange(0xA66, 0xA76).addRange(0xA830, 0xA839);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0xE01, 0xE3A).addRange(0xE40, 0xE5B);\nmodule.exports = set;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\nvar _react = require('react');\nvar _react2 = _interopRequireDefault(_react);\nvar _propTypes = require('prop-types');\nvar _propTypes2 = _interopRequireDefault(_propTypes);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n} // eslint-disable-line no-unused-vars\n\nvar Content = function (_Component) {\n _inherits(Content, _Component);\n function Content() {\n _classCallCheck(this, Content);\n return _possibleConstructorReturn(this, (Content.__proto__ || Object.getPrototypeOf(Content)).apply(this, arguments));\n }\n _createClass(Content, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.props.contentDidMount();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this.props.contentDidUpdate();\n }\n }, {\n key: 'render',\n value: function render() {\n return _react.Children.only(this.props.children);\n }\n }]);\n return Content;\n}(_react.Component);\nContent.propTypes = {\n children: _propTypes2.default.element.isRequired,\n contentDidMount: _propTypes2.default.func.isRequired,\n contentDidUpdate: _propTypes2.default.func.isRequired\n};\nexports.default = Content;","const set = require('regenerate')(0x640, 0x10AF2);\nset.addRange(0x10F70, 0x10F89);\nmodule.exports = set;","const set = require('regenerate')(0x37F, 0x384, 0x386, 0x38C, 0x1DBF, 0x1F59, 0x1F5B, 0x1F5D, 0x2126, 0xAB65, 0x101A0);\nset.addRange(0x370, 0x373).addRange(0x375, 0x377).addRange(0x37A, 0x37D).addRange(0x388, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3E1).addRange(0x3F0, 0x3FF).addRange(0x1D26, 0x1D2A).addRange(0x1D5D, 0x1D61).addRange(0x1D66, 0x1D6A).addRange(0x1F00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FC4).addRange(0x1FC6, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FDD, 0x1FEF).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFE).addRange(0x10140, 0x1018E).addRange(0x1D200, 0x1D245);\nmodule.exports = set;","const set = require('regenerate')(0x903, 0x93B, 0x9D7, 0xA03, 0xA83, 0xAC9, 0xB3E, 0xB40, 0xB57, 0xBD7, 0xCBE, 0xD57, 0xF7F, 0x1031, 0x1038, 0x108F, 0x1715, 0x1734, 0x17B6, 0x1A55, 0x1A57, 0x1A61, 0x1B04, 0x1B35, 0x1B3B, 0x1B82, 0x1BA1, 0x1BAA, 0x1BE7, 0x1BEE, 0x1CE1, 0x1CF7, 0xA827, 0xA983, 0xAA4D, 0xAA7B, 0xAA7D, 0xAAEB, 0xAAF5, 0xABEC, 0x11000, 0x11002, 0x11082, 0x1112C, 0x11182, 0x111CE, 0x11235, 0x11357, 0x11445, 0x114B9, 0x114C1, 0x115BE, 0x1163E, 0x116AC, 0x116B6, 0x11726, 0x11838, 0x1193D, 0x11940, 0x11942, 0x119E4, 0x11A39, 0x11A97, 0x11C2F, 0x11C3E, 0x11CA9, 0x11CB1, 0x11CB4, 0x11D96);\nset.addRange(0x93E, 0x940).addRange(0x949, 0x94C).addRange(0x94E, 0x94F).addRange(0x982, 0x983).addRange(0x9BE, 0x9C0).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CC).addRange(0xA3E, 0xA40).addRange(0xABE, 0xAC0).addRange(0xACB, 0xACC).addRange(0xB02, 0xB03).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4C).addRange(0xBBE, 0xBBF).addRange(0xBC1, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCC).addRange(0xC01, 0xC03).addRange(0xC41, 0xC44).addRange(0xC82, 0xC83).addRange(0xCC0, 0xCC4).addRange(0xCC7, 0xCC8).addRange(0xCCA, 0xCCB).addRange(0xCD5, 0xCD6).addRange(0xD02, 0xD03).addRange(0xD3E, 0xD40).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4C).addRange(0xD82, 0xD83).addRange(0xDCF, 0xDD1).addRange(0xDD8, 0xDDF).addRange(0xDF2, 0xDF3).addRange(0xF3E, 0xF3F).addRange(0x102B, 0x102C).addRange(0x103B, 0x103C).addRange(0x1056, 0x1057).addRange(0x1062, 0x1064).addRange(0x1067, 0x106D).addRange(0x1083, 0x1084).addRange(0x1087, 0x108C).addRange(0x109A, 0x109C).addRange(0x17BE, 0x17C5).addRange(0x17C7, 0x17C8).addRange(0x1923, 0x1926).addRange(0x1929, 0x192B).addRange(0x1930, 0x1931).addRange(0x1933, 0x1938).addRange(0x1A19, 0x1A1A).addRange(0x1A63, 0x1A64).addRange(0x1A6D, 0x1A72).addRange(0x1B3D, 0x1B41);\nset.addRange(0x1B43, 0x1B44).addRange(0x1BA6, 0x1BA7).addRange(0x1BEA, 0x1BEC).addRange(0x1BF2, 0x1BF3).addRange(0x1C24, 0x1C2B).addRange(0x1C34, 0x1C35).addRange(0x302E, 0x302F).addRange(0xA823, 0xA824).addRange(0xA880, 0xA881).addRange(0xA8B4, 0xA8C3).addRange(0xA952, 0xA953).addRange(0xA9B4, 0xA9B5).addRange(0xA9BA, 0xA9BB).addRange(0xA9BE, 0xA9C0).addRange(0xAA2F, 0xAA30).addRange(0xAA33, 0xAA34).addRange(0xAAEE, 0xAAEF).addRange(0xABE3, 0xABE4).addRange(0xABE6, 0xABE7).addRange(0xABE9, 0xABEA).addRange(0x110B0, 0x110B2).addRange(0x110B7, 0x110B8).addRange(0x11145, 0x11146).addRange(0x111B3, 0x111B5).addRange(0x111BF, 0x111C0).addRange(0x1122C, 0x1122E).addRange(0x11232, 0x11233).addRange(0x112E0, 0x112E2).addRange(0x11302, 0x11303).addRange(0x1133E, 0x1133F).addRange(0x11341, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134D).addRange(0x11362, 0x11363).addRange(0x11435, 0x11437).addRange(0x11440, 0x11441).addRange(0x114B0, 0x114B2).addRange(0x114BB, 0x114BE).addRange(0x115AF, 0x115B1).addRange(0x115B8, 0x115BB).addRange(0x11630, 0x11632).addRange(0x1163B, 0x1163C).addRange(0x116AE, 0x116AF).addRange(0x11720, 0x11721).addRange(0x1182C, 0x1182E).addRange(0x11930, 0x11935).addRange(0x11937, 0x11938).addRange(0x119D1, 0x119D3).addRange(0x119DC, 0x119DF).addRange(0x11A57, 0x11A58).addRange(0x11D8A, 0x11D8E);\nset.addRange(0x11D93, 0x11D94).addRange(0x11EF5, 0x11EF6).addRange(0x16F51, 0x16F87).addRange(0x16FF0, 0x16FF1).addRange(0x1D165, 0x1D166).addRange(0x1D16D, 0x1D172);\nmodule.exports = set;","const set = require('regenerate')(0xD7, 0xF7, 0x374, 0x37E, 0x385, 0x387, 0x605, 0x60C, 0x61B, 0x61F, 0x640, 0x6DD, 0x8E2, 0xE3F, 0x10FB, 0x1805, 0x1CD3, 0x1CE1, 0x1CFA, 0x3006, 0x30A0, 0x32FF, 0xA92E, 0xA9CF, 0xAB5B, 0xFEFF, 0xFF70, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1F7F0, 0xE0001);\nset.addRange(0x0, 0x40).addRange(0x5B, 0x60).addRange(0x7B, 0xA9).addRange(0xAB, 0xB9).addRange(0xBB, 0xBF).addRange(0x2B9, 0x2DF).addRange(0x2E5, 0x2E9).addRange(0x2EC, 0x2FF).addRange(0x964, 0x965).addRange(0xFD5, 0xFD8).addRange(0x16EB, 0x16ED).addRange(0x1735, 0x1736).addRange(0x1802, 0x1803).addRange(0x1CE9, 0x1CEC).addRange(0x1CEE, 0x1CF3).addRange(0x1CF5, 0x1CF7).addRange(0x2000, 0x200B).addRange(0x200E, 0x2064).addRange(0x2066, 0x2070).addRange(0x2074, 0x207E).addRange(0x2080, 0x208E).addRange(0x20A0, 0x20C0).addRange(0x2100, 0x2125).addRange(0x2127, 0x2129).addRange(0x212C, 0x2131).addRange(0x2133, 0x214D).addRange(0x214F, 0x215F).addRange(0x2189, 0x218B).addRange(0x2190, 0x2426).addRange(0x2440, 0x244A).addRange(0x2460, 0x27FF).addRange(0x2900, 0x2B73).addRange(0x2B76, 0x2B95).addRange(0x2B97, 0x2BFF).addRange(0x2E00, 0x2E5D).addRange(0x2FF0, 0x2FFB).addRange(0x3000, 0x3004).addRange(0x3008, 0x3020).addRange(0x3030, 0x3037).addRange(0x303C, 0x303F).addRange(0x309B, 0x309C).addRange(0x30FB, 0x30FC).addRange(0x3190, 0x319F).addRange(0x31C0, 0x31E3).addRange(0x3220, 0x325F).addRange(0x327F, 0x32CF).addRange(0x3358, 0x33FF).addRange(0x4DC0, 0x4DFF).addRange(0xA700, 0xA721).addRange(0xA788, 0xA78A).addRange(0xA830, 0xA839);\nset.addRange(0xAB6A, 0xAB6B).addRange(0xFD3E, 0xFD3F).addRange(0xFE10, 0xFE19).addRange(0xFE30, 0xFE52).addRange(0xFE54, 0xFE66).addRange(0xFE68, 0xFE6B).addRange(0xFF01, 0xFF20).addRange(0xFF3B, 0xFF40).addRange(0xFF5B, 0xFF65).addRange(0xFF9E, 0xFF9F).addRange(0xFFE0, 0xFFE6).addRange(0xFFE8, 0xFFEE).addRange(0xFFF9, 0xFFFD).addRange(0x10100, 0x10102).addRange(0x10107, 0x10133).addRange(0x10137, 0x1013F).addRange(0x10190, 0x1019C).addRange(0x101D0, 0x101FC).addRange(0x102E1, 0x102FB).addRange(0x1BCA0, 0x1BCA3).addRange(0x1CF50, 0x1CFC3).addRange(0x1D000, 0x1D0F5).addRange(0x1D100, 0x1D126).addRange(0x1D129, 0x1D166).addRange(0x1D16A, 0x1D17A).addRange(0x1D183, 0x1D184).addRange(0x1D18C, 0x1D1A9).addRange(0x1D1AE, 0x1D1EA).addRange(0x1D2E0, 0x1D2F3).addRange(0x1D300, 0x1D356).addRange(0x1D360, 0x1D378).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D7CB).addRange(0x1D7CE, 0x1D7FF).addRange(0x1EC71, 0x1ECB4).addRange(0x1ED01, 0x1ED3D);\nset.addRange(0x1F000, 0x1F02B).addRange(0x1F030, 0x1F093).addRange(0x1F0A0, 0x1F0AE).addRange(0x1F0B1, 0x1F0BF).addRange(0x1F0C1, 0x1F0CF).addRange(0x1F0D1, 0x1F0F5).addRange(0x1F100, 0x1F1AD).addRange(0x1F1E6, 0x1F1FF).addRange(0x1F201, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x1F260, 0x1F265).addRange(0x1F300, 0x1F6D7).addRange(0x1F6DD, 0x1F6EC).addRange(0x1F6F0, 0x1F6FC).addRange(0x1F700, 0x1F773).addRange(0x1F780, 0x1F7D8).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F800, 0x1F80B).addRange(0x1F810, 0x1F847).addRange(0x1F850, 0x1F859).addRange(0x1F860, 0x1F887).addRange(0x1F890, 0x1F8AD).addRange(0x1F8B0, 0x1F8B1).addRange(0x1F900, 0x1FA53).addRange(0x1FA60, 0x1FA6D).addRange(0x1FA70, 0x1FA74).addRange(0x1FA78, 0x1FA7C).addRange(0x1FA80, 0x1FA86).addRange(0x1FA90, 0x1FAAC).addRange(0x1FAB0, 0x1FABA).addRange(0x1FAC0, 0x1FAC5).addRange(0x1FAD0, 0x1FAD9).addRange(0x1FAE0, 0x1FAE7).addRange(0x1FAF0, 0x1FAF6).addRange(0x1FB00, 0x1FB92).addRange(0x1FB94, 0x1FBCA).addRange(0x1FBF0, 0x1FBF9).addRange(0xE0020, 0xE007F);\nmodule.exports = set;","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","const set = require('regenerate')();\nset.addRange(0x11580, 0x115B5).addRange(0x115B8, 0x115DD);\nmodule.exports = set;","const set = require('regenerate')(0xA95F);\nset.addRange(0xA930, 0xA953);\nmodule.exports = set;","const set = require('regenerate')(0x9B2, 0x9D7, 0x1CD0, 0x1CD2, 0x1CD8, 0x1CE1, 0x1CEA, 0x1CED, 0x1CF2, 0xA8F1);\nset.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0x980, 0x983).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9BC, 0x9C4).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CE).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E3).addRange(0x9E6, 0x9FE).addRange(0x1CD5, 0x1CD6).addRange(0x1CF5, 0x1CF7);\nmodule.exports = set;","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","var e = require(\"parse-unit\"),\n r = function (r) {\n return e(r)[0];\n };\nmodule.exports = function (n) {\n return null == n && (n = n), function (u, i, t, f) {\n null == t && (t = n), null == f && (f = t);\n var l = function (r) {\n return e(r)[1];\n }(u);\n if (l === i) return u;\n var o = r(u);\n if (\"px\" !== l) if (\"em\" === l) o = r(u) * r(t);else if (\"rem\" === l) o = r(u) * r(n);else {\n if (\"ex\" !== l) return u;\n o = r(u) * r(t) * 2;\n }\n var a = o;\n if (\"px\" !== i) if (\"em\" === i) a = o / r(f);else if (\"rem\" === i) a = o / r(n);else {\n if (\"ex\" !== i) return u;\n a = o / r(f) / 2;\n }\n return parseFloat(a.toFixed(5)) + i;\n };\n};","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","const set = require('regenerate')(0xAD, 0x38B, 0x38D, 0x3A2, 0x530, 0x590, 0x61C, 0x6DD, 0x83F, 0x85F, 0x8E2, 0x984, 0x9A9, 0x9B1, 0x9DE, 0xA04, 0xA29, 0xA31, 0xA34, 0xA37, 0xA3D, 0xA5D, 0xA84, 0xA8E, 0xA92, 0xAA9, 0xAB1, 0xAB4, 0xAC6, 0xACA, 0xB00, 0xB04, 0xB29, 0xB31, 0xB34, 0xB5E, 0xB84, 0xB91, 0xB9B, 0xB9D, 0xBC9, 0xC0D, 0xC11, 0xC29, 0xC45, 0xC49, 0xC57, 0xC8D, 0xC91, 0xCA9, 0xCB4, 0xCC5, 0xCC9, 0xCDF, 0xCF0, 0xD0D, 0xD11, 0xD45, 0xD49, 0xD80, 0xD84, 0xDB2, 0xDBC, 0xDD5, 0xDD7, 0xE83, 0xE85, 0xE8B, 0xEA4, 0xEA6, 0xEC5, 0xEC7, 0xF48, 0xF98, 0xFBD, 0xFCD, 0x10C6, 0x1249, 0x1257, 0x1259, 0x1289, 0x12B1, 0x12BF, 0x12C1, 0x12D7, 0x1311, 0x176D, 0x1771, 0x180E, 0x191F, 0x1A5F, 0x1B7F, 0x1F58, 0x1F5A, 0x1F5C, 0x1F5E, 0x1FB5, 0x1FC5, 0x1FDC, 0x1FF5, 0x1FFF, 0x208F, 0x2B96, 0x2D26, 0x2DA7, 0x2DAF, 0x2DB7, 0x2DBF, 0x2DC7, 0x2DCF, 0x2DD7, 0x2DDF, 0x2E9A, 0x3040, 0x3130, 0x318F, 0x321F, 0xA7D2, 0xA7D4, 0xA9CE, 0xA9FF, 0xAB27, 0xAB2F, 0xFB37, 0xFB3D, 0xFB3F, 0xFB42, 0xFB45, 0xFE53, 0xFE67, 0xFE75, 0xFFE7, 0x1000C, 0x10027, 0x1003B, 0x1003E, 0x1018F, 0x1039E, 0x1057B, 0x1058B, 0x10593, 0x10596, 0x105A2, 0x105B2, 0x105BA, 0x10786, 0x107B1, 0x10809, 0x10836, 0x10856, 0x108F3, 0x10A04, 0x10A14, 0x10A18, 0x10E7F, 0x10EAA, 0x110BD, 0x11135, 0x111E0, 0x11212, 0x11287, 0x11289, 0x1128E, 0x1129E, 0x11304, 0x11329, 0x11331, 0x11334, 0x1133A, 0x1145C, 0x11914, 0x11917, 0x11936, 0x11C09, 0x11C37, 0x11CA8, 0x11D07, 0x11D0A, 0x11D3B, 0x11D3E, 0x11D66, 0x11D69, 0x11D8F, 0x11D92, 0x1246F, 0x16A5F, 0x16ABF, 0x16B5A, 0x16B62, 0x1AFF4, 0x1AFFC, 0x1AFFF, 0x1D455, 0x1D49D, 0x1D4AD, 0x1D4BA, 0x1D4BC, 0x1D4C4, 0x1D506, 0x1D515, 0x1D51D, 0x1D53A, 0x1D53F, 0x1D545, 0x1D551, 0x1DAA0, 0x1E007, 0x1E022, 0x1E025, 0x1E7E7, 0x1E7EC, 0x1E7EF, 0x1E7FF, 0x1EE04, 0x1EE20, 0x1EE23, 0x1EE28, 0x1EE33, 0x1EE38, 0x1EE3A, 0x1EE48, 0x1EE4A, 0x1EE4C, 0x1EE50, 0x1EE53, 0x1EE58, 0x1EE5A, 0x1EE5C, 0x1EE5E, 0x1EE60, 0x1EE63, 0x1EE6B, 0x1EE73, 0x1EE78, 0x1EE7D, 0x1EE7F, 0x1EE8A, 0x1EEA4, 0x1EEAA, 0x1F0C0, 0x1F0D0, 0x1FB93);\nset.addRange(0x0, 0x1F).addRange(0x7F, 0x9F).addRange(0x378, 0x379).addRange(0x380, 0x383).addRange(0x557, 0x558).addRange(0x58B, 0x58C).addRange(0x5C8, 0x5CF).addRange(0x5EB, 0x5EE).addRange(0x5F5, 0x605).addRange(0x70E, 0x70F).addRange(0x74B, 0x74C).addRange(0x7B2, 0x7BF).addRange(0x7FB, 0x7FC).addRange(0x82E, 0x82F).addRange(0x85C, 0x85D).addRange(0x86B, 0x86F).addRange(0x88F, 0x897).addRange(0x98D, 0x98E).addRange(0x991, 0x992).addRange(0x9B3, 0x9B5).addRange(0x9BA, 0x9BB).addRange(0x9C5, 0x9C6).addRange(0x9C9, 0x9CA).addRange(0x9CF, 0x9D6).addRange(0x9D8, 0x9DB).addRange(0x9E4, 0x9E5).addRange(0x9FF, 0xA00).addRange(0xA0B, 0xA0E).addRange(0xA11, 0xA12).addRange(0xA3A, 0xA3B).addRange(0xA43, 0xA46).addRange(0xA49, 0xA4A).addRange(0xA4E, 0xA50).addRange(0xA52, 0xA58).addRange(0xA5F, 0xA65).addRange(0xA77, 0xA80).addRange(0xABA, 0xABB).addRange(0xACE, 0xACF).addRange(0xAD1, 0xADF).addRange(0xAE4, 0xAE5).addRange(0xAF2, 0xAF8).addRange(0xB0D, 0xB0E).addRange(0xB11, 0xB12).addRange(0xB3A, 0xB3B).addRange(0xB45, 0xB46).addRange(0xB49, 0xB4A).addRange(0xB4E, 0xB54).addRange(0xB58, 0xB5B).addRange(0xB64, 0xB65).addRange(0xB78, 0xB81).addRange(0xB8B, 0xB8D);\nset.addRange(0xB96, 0xB98).addRange(0xBA0, 0xBA2).addRange(0xBA5, 0xBA7).addRange(0xBAB, 0xBAD).addRange(0xBBA, 0xBBD).addRange(0xBC3, 0xBC5).addRange(0xBCE, 0xBCF).addRange(0xBD1, 0xBD6).addRange(0xBD8, 0xBE5).addRange(0xBFB, 0xBFF).addRange(0xC3A, 0xC3B).addRange(0xC4E, 0xC54).addRange(0xC5B, 0xC5C).addRange(0xC5E, 0xC5F).addRange(0xC64, 0xC65).addRange(0xC70, 0xC76).addRange(0xCBA, 0xCBB).addRange(0xCCE, 0xCD4).addRange(0xCD7, 0xCDC).addRange(0xCE4, 0xCE5).addRange(0xCF3, 0xCFF).addRange(0xD50, 0xD53).addRange(0xD64, 0xD65).addRange(0xD97, 0xD99).addRange(0xDBE, 0xDBF).addRange(0xDC7, 0xDC9).addRange(0xDCB, 0xDCE).addRange(0xDE0, 0xDE5).addRange(0xDF0, 0xDF1).addRange(0xDF5, 0xE00).addRange(0xE3B, 0xE3E).addRange(0xE5C, 0xE80).addRange(0xEBE, 0xEBF).addRange(0xECE, 0xECF).addRange(0xEDA, 0xEDB).addRange(0xEE0, 0xEFF).addRange(0xF6D, 0xF70).addRange(0xFDB, 0xFFF).addRange(0x10C8, 0x10CC).addRange(0x10CE, 0x10CF).addRange(0x124E, 0x124F).addRange(0x125E, 0x125F).addRange(0x128E, 0x128F).addRange(0x12B6, 0x12B7).addRange(0x12C6, 0x12C7).addRange(0x1316, 0x1317).addRange(0x135B, 0x135C).addRange(0x137D, 0x137F).addRange(0x139A, 0x139F).addRange(0x13F6, 0x13F7).addRange(0x13FE, 0x13FF);\nset.addRange(0x169D, 0x169F).addRange(0x16F9, 0x16FF).addRange(0x1716, 0x171E).addRange(0x1737, 0x173F).addRange(0x1754, 0x175F).addRange(0x1774, 0x177F).addRange(0x17DE, 0x17DF).addRange(0x17EA, 0x17EF).addRange(0x17FA, 0x17FF).addRange(0x181A, 0x181F).addRange(0x1879, 0x187F).addRange(0x18AB, 0x18AF).addRange(0x18F6, 0x18FF).addRange(0x192C, 0x192F).addRange(0x193C, 0x193F).addRange(0x1941, 0x1943).addRange(0x196E, 0x196F).addRange(0x1975, 0x197F).addRange(0x19AC, 0x19AF).addRange(0x19CA, 0x19CF).addRange(0x19DB, 0x19DD).addRange(0x1A1C, 0x1A1D).addRange(0x1A7D, 0x1A7E).addRange(0x1A8A, 0x1A8F).addRange(0x1A9A, 0x1A9F).addRange(0x1AAE, 0x1AAF).addRange(0x1ACF, 0x1AFF).addRange(0x1B4D, 0x1B4F).addRange(0x1BF4, 0x1BFB).addRange(0x1C38, 0x1C3A).addRange(0x1C4A, 0x1C4C).addRange(0x1C89, 0x1C8F).addRange(0x1CBB, 0x1CBC).addRange(0x1CC8, 0x1CCF).addRange(0x1CFB, 0x1CFF).addRange(0x1F16, 0x1F17).addRange(0x1F1E, 0x1F1F).addRange(0x1F46, 0x1F47).addRange(0x1F4E, 0x1F4F).addRange(0x1F7E, 0x1F7F).addRange(0x1FD4, 0x1FD5).addRange(0x1FF0, 0x1FF1).addRange(0x200B, 0x200F).addRange(0x202A, 0x202E).addRange(0x2060, 0x206F).addRange(0x2072, 0x2073).addRange(0x209D, 0x209F).addRange(0x20C1, 0x20CF).addRange(0x20F1, 0x20FF).addRange(0x218C, 0x218F).addRange(0x2427, 0x243F);\nset.addRange(0x244B, 0x245F).addRange(0x2B74, 0x2B75).addRange(0x2CF4, 0x2CF8).addRange(0x2D28, 0x2D2C).addRange(0x2D2E, 0x2D2F).addRange(0x2D68, 0x2D6E).addRange(0x2D71, 0x2D7E).addRange(0x2D97, 0x2D9F).addRange(0x2E5E, 0x2E7F).addRange(0x2EF4, 0x2EFF).addRange(0x2FD6, 0x2FEF).addRange(0x2FFC, 0x2FFF).addRange(0x3097, 0x3098).addRange(0x3100, 0x3104).addRange(0x31E4, 0x31EF).addRange(0xA48D, 0xA48F).addRange(0xA4C7, 0xA4CF).addRange(0xA62C, 0xA63F).addRange(0xA6F8, 0xA6FF).addRange(0xA7CB, 0xA7CF).addRange(0xA7DA, 0xA7F1).addRange(0xA82D, 0xA82F).addRange(0xA83A, 0xA83F).addRange(0xA878, 0xA87F).addRange(0xA8C6, 0xA8CD).addRange(0xA8DA, 0xA8DF).addRange(0xA954, 0xA95E).addRange(0xA97D, 0xA97F).addRange(0xA9DA, 0xA9DD).addRange(0xAA37, 0xAA3F).addRange(0xAA4E, 0xAA4F).addRange(0xAA5A, 0xAA5B).addRange(0xAAC3, 0xAADA).addRange(0xAAF7, 0xAB00).addRange(0xAB07, 0xAB08).addRange(0xAB0F, 0xAB10).addRange(0xAB17, 0xAB1F).addRange(0xAB6C, 0xAB6F).addRange(0xABEE, 0xABEF).addRange(0xABFA, 0xABFF).addRange(0xD7A4, 0xD7AF).addRange(0xD7C7, 0xD7CA).addRange(0xD7FC, 0xF8FF).addRange(0xFA6E, 0xFA6F).addRange(0xFADA, 0xFAFF).addRange(0xFB07, 0xFB12).addRange(0xFB18, 0xFB1C).addRange(0xFBC3, 0xFBD2).addRange(0xFD90, 0xFD91).addRange(0xFDC8, 0xFDCE).addRange(0xFDD0, 0xFDEF);\nset.addRange(0xFE1A, 0xFE1F).addRange(0xFE6C, 0xFE6F).addRange(0xFEFD, 0xFF00).addRange(0xFFBF, 0xFFC1).addRange(0xFFC8, 0xFFC9).addRange(0xFFD0, 0xFFD1).addRange(0xFFD8, 0xFFD9).addRange(0xFFDD, 0xFFDF).addRange(0xFFEF, 0xFFFB).addRange(0xFFFE, 0xFFFF).addRange(0x1004E, 0x1004F).addRange(0x1005E, 0x1007F).addRange(0x100FB, 0x100FF).addRange(0x10103, 0x10106).addRange(0x10134, 0x10136).addRange(0x1019D, 0x1019F).addRange(0x101A1, 0x101CF).addRange(0x101FE, 0x1027F).addRange(0x1029D, 0x1029F).addRange(0x102D1, 0x102DF).addRange(0x102FC, 0x102FF).addRange(0x10324, 0x1032C).addRange(0x1034B, 0x1034F).addRange(0x1037B, 0x1037F).addRange(0x103C4, 0x103C7).addRange(0x103D6, 0x103FF).addRange(0x1049E, 0x1049F).addRange(0x104AA, 0x104AF).addRange(0x104D4, 0x104D7).addRange(0x104FC, 0x104FF).addRange(0x10528, 0x1052F).addRange(0x10564, 0x1056E).addRange(0x105BD, 0x105FF).addRange(0x10737, 0x1073F).addRange(0x10756, 0x1075F).addRange(0x10768, 0x1077F).addRange(0x107BB, 0x107FF).addRange(0x10806, 0x10807).addRange(0x10839, 0x1083B).addRange(0x1083D, 0x1083E).addRange(0x1089F, 0x108A6).addRange(0x108B0, 0x108DF).addRange(0x108F6, 0x108FA).addRange(0x1091C, 0x1091E).addRange(0x1093A, 0x1093E).addRange(0x10940, 0x1097F).addRange(0x109B8, 0x109BB).addRange(0x109D0, 0x109D1).addRange(0x10A07, 0x10A0B).addRange(0x10A36, 0x10A37).addRange(0x10A3B, 0x10A3E);\nset.addRange(0x10A49, 0x10A4F).addRange(0x10A59, 0x10A5F).addRange(0x10AA0, 0x10ABF).addRange(0x10AE7, 0x10AEA).addRange(0x10AF7, 0x10AFF).addRange(0x10B36, 0x10B38).addRange(0x10B56, 0x10B57).addRange(0x10B73, 0x10B77).addRange(0x10B92, 0x10B98).addRange(0x10B9D, 0x10BA8).addRange(0x10BB0, 0x10BFF).addRange(0x10C49, 0x10C7F).addRange(0x10CB3, 0x10CBF).addRange(0x10CF3, 0x10CF9).addRange(0x10D28, 0x10D2F).addRange(0x10D3A, 0x10E5F).addRange(0x10EAE, 0x10EAF).addRange(0x10EB2, 0x10EFF).addRange(0x10F28, 0x10F2F).addRange(0x10F5A, 0x10F6F).addRange(0x10F8A, 0x10FAF).addRange(0x10FCC, 0x10FDF).addRange(0x10FF7, 0x10FFF).addRange(0x1104E, 0x11051).addRange(0x11076, 0x1107E).addRange(0x110C3, 0x110CF).addRange(0x110E9, 0x110EF).addRange(0x110FA, 0x110FF).addRange(0x11148, 0x1114F).addRange(0x11177, 0x1117F).addRange(0x111F5, 0x111FF).addRange(0x1123F, 0x1127F).addRange(0x112AA, 0x112AF).addRange(0x112EB, 0x112EF).addRange(0x112FA, 0x112FF).addRange(0x1130D, 0x1130E).addRange(0x11311, 0x11312).addRange(0x11345, 0x11346).addRange(0x11349, 0x1134A).addRange(0x1134E, 0x1134F).addRange(0x11351, 0x11356).addRange(0x11358, 0x1135C).addRange(0x11364, 0x11365).addRange(0x1136D, 0x1136F).addRange(0x11375, 0x113FF).addRange(0x11462, 0x1147F).addRange(0x114C8, 0x114CF).addRange(0x114DA, 0x1157F).addRange(0x115B6, 0x115B7).addRange(0x115DE, 0x115FF).addRange(0x11645, 0x1164F);\nset.addRange(0x1165A, 0x1165F).addRange(0x1166D, 0x1167F).addRange(0x116BA, 0x116BF).addRange(0x116CA, 0x116FF).addRange(0x1171B, 0x1171C).addRange(0x1172C, 0x1172F).addRange(0x11747, 0x117FF).addRange(0x1183C, 0x1189F).addRange(0x118F3, 0x118FE).addRange(0x11907, 0x11908).addRange(0x1190A, 0x1190B).addRange(0x11939, 0x1193A).addRange(0x11947, 0x1194F).addRange(0x1195A, 0x1199F).addRange(0x119A8, 0x119A9).addRange(0x119D8, 0x119D9).addRange(0x119E5, 0x119FF).addRange(0x11A48, 0x11A4F).addRange(0x11AA3, 0x11AAF).addRange(0x11AF9, 0x11BFF).addRange(0x11C46, 0x11C4F).addRange(0x11C6D, 0x11C6F).addRange(0x11C90, 0x11C91).addRange(0x11CB7, 0x11CFF).addRange(0x11D37, 0x11D39).addRange(0x11D48, 0x11D4F).addRange(0x11D5A, 0x11D5F).addRange(0x11D99, 0x11D9F).addRange(0x11DAA, 0x11EDF).addRange(0x11EF9, 0x11FAF).addRange(0x11FB1, 0x11FBF).addRange(0x11FF2, 0x11FFE).addRange(0x1239A, 0x123FF).addRange(0x12475, 0x1247F).addRange(0x12544, 0x12F8F).addRange(0x12FF3, 0x12FFF).addRange(0x1342F, 0x143FF).addRange(0x14647, 0x167FF).addRange(0x16A39, 0x16A3F).addRange(0x16A6A, 0x16A6D).addRange(0x16ACA, 0x16ACF).addRange(0x16AEE, 0x16AEF).addRange(0x16AF6, 0x16AFF).addRange(0x16B46, 0x16B4F).addRange(0x16B78, 0x16B7C).addRange(0x16B90, 0x16E3F).addRange(0x16E9B, 0x16EFF).addRange(0x16F4B, 0x16F4E).addRange(0x16F88, 0x16F8E).addRange(0x16FA0, 0x16FDF).addRange(0x16FE5, 0x16FEF);\nset.addRange(0x16FF2, 0x16FFF).addRange(0x187F8, 0x187FF).addRange(0x18CD6, 0x18CFF).addRange(0x18D09, 0x1AFEF).addRange(0x1B123, 0x1B14F).addRange(0x1B153, 0x1B163).addRange(0x1B168, 0x1B16F).addRange(0x1B2FC, 0x1BBFF).addRange(0x1BC6B, 0x1BC6F).addRange(0x1BC7D, 0x1BC7F).addRange(0x1BC89, 0x1BC8F).addRange(0x1BC9A, 0x1BC9B).addRange(0x1BCA0, 0x1CEFF).addRange(0x1CF2E, 0x1CF2F).addRange(0x1CF47, 0x1CF4F).addRange(0x1CFC4, 0x1CFFF).addRange(0x1D0F6, 0x1D0FF).addRange(0x1D127, 0x1D128).addRange(0x1D173, 0x1D17A).addRange(0x1D1EB, 0x1D1FF).addRange(0x1D246, 0x1D2DF).addRange(0x1D2F4, 0x1D2FF).addRange(0x1D357, 0x1D35F).addRange(0x1D379, 0x1D3FF).addRange(0x1D4A0, 0x1D4A1).addRange(0x1D4A3, 0x1D4A4).addRange(0x1D4A7, 0x1D4A8).addRange(0x1D50B, 0x1D50C).addRange(0x1D547, 0x1D549).addRange(0x1D6A6, 0x1D6A7).addRange(0x1D7CC, 0x1D7CD).addRange(0x1DA8C, 0x1DA9A).addRange(0x1DAB0, 0x1DEFF).addRange(0x1DF1F, 0x1DFFF).addRange(0x1E019, 0x1E01A).addRange(0x1E02B, 0x1E0FF).addRange(0x1E12D, 0x1E12F).addRange(0x1E13E, 0x1E13F).addRange(0x1E14A, 0x1E14D).addRange(0x1E150, 0x1E28F).addRange(0x1E2AF, 0x1E2BF).addRange(0x1E2FA, 0x1E2FE).addRange(0x1E300, 0x1E7DF).addRange(0x1E8C5, 0x1E8C6).addRange(0x1E8D7, 0x1E8FF).addRange(0x1E94C, 0x1E94F).addRange(0x1E95A, 0x1E95D).addRange(0x1E960, 0x1EC70).addRange(0x1ECB5, 0x1ED00).addRange(0x1ED3E, 0x1EDFF).addRange(0x1EE25, 0x1EE26);\nset.addRange(0x1EE3C, 0x1EE41).addRange(0x1EE43, 0x1EE46).addRange(0x1EE55, 0x1EE56).addRange(0x1EE65, 0x1EE66).addRange(0x1EE9C, 0x1EEA0).addRange(0x1EEBC, 0x1EEEF).addRange(0x1EEF2, 0x1EFFF).addRange(0x1F02C, 0x1F02F).addRange(0x1F094, 0x1F09F).addRange(0x1F0AF, 0x1F0B0).addRange(0x1F0F6, 0x1F0FF).addRange(0x1F1AE, 0x1F1E5).addRange(0x1F203, 0x1F20F).addRange(0x1F23C, 0x1F23F).addRange(0x1F249, 0x1F24F).addRange(0x1F252, 0x1F25F).addRange(0x1F266, 0x1F2FF).addRange(0x1F6D8, 0x1F6DC).addRange(0x1F6ED, 0x1F6EF).addRange(0x1F6FD, 0x1F6FF).addRange(0x1F774, 0x1F77F).addRange(0x1F7D9, 0x1F7DF).addRange(0x1F7EC, 0x1F7EF).addRange(0x1F7F1, 0x1F7FF).addRange(0x1F80C, 0x1F80F).addRange(0x1F848, 0x1F84F).addRange(0x1F85A, 0x1F85F).addRange(0x1F888, 0x1F88F).addRange(0x1F8AE, 0x1F8AF).addRange(0x1F8B2, 0x1F8FF).addRange(0x1FA54, 0x1FA5F).addRange(0x1FA6E, 0x1FA6F).addRange(0x1FA75, 0x1FA77).addRange(0x1FA7D, 0x1FA7F).addRange(0x1FA87, 0x1FA8F).addRange(0x1FAAD, 0x1FAAF).addRange(0x1FABB, 0x1FABF).addRange(0x1FAC6, 0x1FACF).addRange(0x1FADA, 0x1FADF).addRange(0x1FAE8, 0x1FAEF).addRange(0x1FAF7, 0x1FAFF).addRange(0x1FBCB, 0x1FBEF).addRange(0x1FBFA, 0x1FFFF).addRange(0x2A6E0, 0x2A6FF).addRange(0x2B739, 0x2B73F).addRange(0x2B81E, 0x2B81F).addRange(0x2CEA2, 0x2CEAF).addRange(0x2EBE1, 0x2F7FF).addRange(0x2FA1E, 0x2FFFF).addRange(0x3134B, 0xE00FF).addRange(0xE01F0, 0x10FFFF);\nset;\nmodule.exports = set;","const set = require('regenerate')(0x61C);\nset.addRange(0x200E, 0x200F).addRange(0x202A, 0x202E).addRange(0x2066, 0x2069);\nmodule.exports = set;","var userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _gatsby = require(\"gatsby\");\n\nvar _catchLinks = _interopRequireDefault(require(\"./catch-links\"));\n\nexports.onClientEntry = function (_, pluginOptions) {\n if (pluginOptions === void 0) {\n pluginOptions = {};\n }\n\n (0, _catchLinks.default)(window, pluginOptions, function (href) {\n (0, _gatsby.navigate)(href);\n });\n};","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","const set = require('regenerate')();\nset.addRange(0x10400, 0x1044F);\nmodule.exports = set;","var convert = require('./convert'),\n func = convert('omit', require('../omit'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","const set = require('regenerate')();\nset.addRange(0xAA00, 0xAA36).addRange(0xAA40, 0xAA4D).addRange(0xAA50, 0xAA59).addRange(0xAA5C, 0xAA5F);\nmodule.exports = set;","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","const set = require('regenerate')(0x20, 0xA0, 0x1680, 0x202F, 0x205F, 0x3000);\nset.addRange(0x2000, 0x200A);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10CFA, 0x10CFF);\nmodule.exports = set;","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","import { Highlights } from \"../../../../docs/home\";\nimport { Catcher } from \"../../../../src/components/home\";\nimport * as React from 'react';\nexport default {\n Highlights,\n Catcher,\n React\n};","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","const set = require('regenerate')(0x1D2B, 0x1D78, 0x1DF8, 0x2E43);\nset.addRange(0x400, 0x52F).addRange(0x1C80, 0x1C88).addRange(0x2DE0, 0x2DFF).addRange(0xA640, 0xA69F).addRange(0xFE2E, 0xFE2F);\nmodule.exports = set;","const set = require('regenerate')(0xAA, 0xB5, 0xBA, 0x2EC, 0x2EE, 0x37F, 0x386, 0x38C, 0x559, 0x6D5, 0x6FF, 0x710, 0x7B1, 0x7FA, 0x81A, 0x824, 0x828, 0x93D, 0x950, 0x9B2, 0x9BD, 0x9CE, 0x9FC, 0xA5E, 0xABD, 0xAD0, 0xAF9, 0xB3D, 0xB71, 0xB83, 0xB9C, 0xBD0, 0xC3D, 0xC5D, 0xC80, 0xCBD, 0xD3D, 0xD4E, 0xDBD, 0xE32, 0xE84, 0xEA5, 0xEB2, 0xEBD, 0xEC6, 0xF00, 0x103F, 0x1061, 0x108E, 0x10C7, 0x10CD, 0x1258, 0x12C0, 0x17D7, 0x17DC, 0x18AA, 0x1AA7, 0x1CFA, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2071, 0x207F, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x214E, 0x2D27, 0x2D2D, 0x2D6F, 0xA7D3, 0xA8FB, 0xA9CF, 0xAA7A, 0xAAB1, 0xAAC0, 0xAAC2, 0xFB1D, 0xFB3E, 0xFE71, 0xFE73, 0xFE77, 0xFE79, 0xFE7B, 0xFE7D, 0x10808, 0x1083C, 0x10A00, 0x10F27, 0x11075, 0x11144, 0x11147, 0x11176, 0x111DA, 0x111DC, 0x11288, 0x1133D, 0x11350, 0x114C7, 0x11644, 0x116B8, 0x11909, 0x1193F, 0x11941, 0x119E1, 0x119E3, 0x11A00, 0x11A3A, 0x11A50, 0x11A9D, 0x11C40, 0x11D46, 0x11D98, 0x11FB0, 0x16F50, 0x16FE3, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1E14E, 0x1E94B, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);\nset.addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x2C1).addRange(0x2C6, 0x2D1).addRange(0x2E0, 0x2E4).addRange(0x370, 0x374).addRange(0x376, 0x377).addRange(0x37B, 0x37D).addRange(0x388, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3F5).addRange(0x3F7, 0x481).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x560, 0x588).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F2).addRange(0x620, 0x64A).addRange(0x66E, 0x66F).addRange(0x671, 0x6D3).addRange(0x6E5, 0x6E6).addRange(0x6EE, 0x6EF).addRange(0x6FA, 0x6FC).addRange(0x712, 0x72F).addRange(0x74D, 0x7A5).addRange(0x7CA, 0x7EA).addRange(0x7F4, 0x7F5).addRange(0x800, 0x815).addRange(0x840, 0x858).addRange(0x860, 0x86A).addRange(0x870, 0x887).addRange(0x889, 0x88E).addRange(0x8A0, 0x8C9).addRange(0x904, 0x939).addRange(0x958, 0x961).addRange(0x971, 0x980).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E1).addRange(0x9F0, 0x9F1).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33);\nset.addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA59, 0xA5C).addRange(0xA72, 0xA74).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xAE0, 0xAE1).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB61).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xC05, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC61).addRange(0xC85, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE1).addRange(0xCF1, 0xCF2).addRange(0xD04, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD3A).addRange(0xD54, 0xD56).addRange(0xD5F, 0xD61).addRange(0xD7A, 0xD7F).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6);\nset.addRange(0xE01, 0xE30).addRange(0xE40, 0xE46).addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEB0).addRange(0xEC0, 0xEC4).addRange(0xEDC, 0xEDF).addRange(0xF40, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF88, 0xF8C).addRange(0x1000, 0x102A).addRange(0x1050, 0x1055).addRange(0x105A, 0x105D).addRange(0x1065, 0x1066).addRange(0x106E, 0x1070).addRange(0x1075, 0x1081).addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FC, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x1380, 0x138F).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1401, 0x166C).addRange(0x166F, 0x167F).addRange(0x1681, 0x169A).addRange(0x16A0, 0x16EA).addRange(0x16EE, 0x16F8).addRange(0x1700, 0x1711).addRange(0x171F, 0x1731).addRange(0x1740, 0x1751).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1780, 0x17B3).addRange(0x1820, 0x1878).addRange(0x1880, 0x18A8).addRange(0x18B0, 0x18F5).addRange(0x1900, 0x191E);\nset.addRange(0x1950, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x1A00, 0x1A16).addRange(0x1A20, 0x1A54).addRange(0x1B05, 0x1B33).addRange(0x1B45, 0x1B4C).addRange(0x1B83, 0x1BA0).addRange(0x1BAE, 0x1BAF).addRange(0x1BBA, 0x1BE5).addRange(0x1C00, 0x1C23).addRange(0x1C4D, 0x1C4F).addRange(0x1C5A, 0x1C7D).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1CE9, 0x1CEC).addRange(0x1CEE, 0x1CF3).addRange(0x1CF5, 0x1CF6).addRange(0x1D00, 0x1DBF).addRange(0x1E00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FBC).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FCC).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FE0, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFC).addRange(0x2090, 0x209C).addRange(0x210A, 0x2113).addRange(0x2118, 0x211D).addRange(0x212A, 0x2139).addRange(0x213C, 0x213F).addRange(0x2145, 0x2149).addRange(0x2160, 0x2188).addRange(0x2C00, 0x2CE4).addRange(0x2CEB, 0x2CEE).addRange(0x2CF2, 0x2CF3).addRange(0x2D00, 0x2D25).addRange(0x2D30, 0x2D67).addRange(0x2D80, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE);\nset.addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x3005, 0x3007).addRange(0x3021, 0x3029).addRange(0x3031, 0x3035).addRange(0x3038, 0x303C).addRange(0x3041, 0x3096).addRange(0x309D, 0x309F).addRange(0x30A1, 0x30FA).addRange(0x30FC, 0x30FF).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x31A0, 0x31BF).addRange(0x31F0, 0x31FF).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0xA48C).addRange(0xA4D0, 0xA4FD).addRange(0xA500, 0xA60C).addRange(0xA610, 0xA61F).addRange(0xA62A, 0xA62B).addRange(0xA640, 0xA66E).addRange(0xA67F, 0xA69D).addRange(0xA6A0, 0xA6EF).addRange(0xA717, 0xA71F).addRange(0xA722, 0xA788).addRange(0xA78B, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA801).addRange(0xA803, 0xA805).addRange(0xA807, 0xA80A).addRange(0xA80C, 0xA822).addRange(0xA840, 0xA873).addRange(0xA882, 0xA8B3).addRange(0xA8F2, 0xA8F7).addRange(0xA8FD, 0xA8FE).addRange(0xA90A, 0xA925).addRange(0xA930, 0xA946).addRange(0xA960, 0xA97C).addRange(0xA984, 0xA9B2).addRange(0xA9E0, 0xA9E4).addRange(0xA9E6, 0xA9EF).addRange(0xA9FA, 0xA9FE).addRange(0xAA00, 0xAA28).addRange(0xAA40, 0xAA42).addRange(0xAA44, 0xAA4B).addRange(0xAA60, 0xAA76);\nset.addRange(0xAA7E, 0xAAAF).addRange(0xAAB5, 0xAAB6).addRange(0xAAB9, 0xAABD).addRange(0xAADB, 0xAADD).addRange(0xAAE0, 0xAAEA).addRange(0xAAF2, 0xAAF4).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB69).addRange(0xAB70, 0xABE2).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1F, 0xFB28).addRange(0xFB2A, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBB1).addRange(0xFBD3, 0xFC5D).addRange(0xFC64, 0xFD3D).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDF9).addRange(0xFE7F, 0xFEFC).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0xFF66, 0xFF9D).addRange(0xFFA0, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10140, 0x10174).addRange(0x10280, 0x1029C).addRange(0x102A0, 0x102D0);\nset.addRange(0x10300, 0x1031F).addRange(0x1032D, 0x1034A).addRange(0x10350, 0x10375).addRange(0x10380, 0x1039D).addRange(0x103A0, 0x103C3).addRange(0x103C8, 0x103CF).addRange(0x103D1, 0x103D5).addRange(0x10400, 0x1049D).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10860, 0x10876).addRange(0x10880, 0x1089E).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x10900, 0x10915).addRange(0x10920, 0x10939).addRange(0x10980, 0x109B7).addRange(0x109BE, 0x109BF).addRange(0x10A10, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A60, 0x10A7C).addRange(0x10A80, 0x10A9C).addRange(0x10AC0, 0x10AC7).addRange(0x10AC9, 0x10AE4).addRange(0x10B00, 0x10B35).addRange(0x10B40, 0x10B55).addRange(0x10B60, 0x10B72).addRange(0x10B80, 0x10B91).addRange(0x10C00, 0x10C48).addRange(0x10C80, 0x10CB2);\nset.addRange(0x10CC0, 0x10CF2).addRange(0x10D00, 0x10D23).addRange(0x10E80, 0x10EA9).addRange(0x10EB0, 0x10EB1).addRange(0x10F00, 0x10F1C).addRange(0x10F30, 0x10F45).addRange(0x10F70, 0x10F81).addRange(0x10FB0, 0x10FC4).addRange(0x10FE0, 0x10FF6).addRange(0x11003, 0x11037).addRange(0x11071, 0x11072).addRange(0x11083, 0x110AF).addRange(0x110D0, 0x110E8).addRange(0x11103, 0x11126).addRange(0x11150, 0x11172).addRange(0x11183, 0x111B2).addRange(0x111C1, 0x111C4).addRange(0x11200, 0x11211).addRange(0x11213, 0x1122B).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A8).addRange(0x112B0, 0x112DE).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1135D, 0x11361).addRange(0x11400, 0x11434).addRange(0x11447, 0x1144A).addRange(0x1145F, 0x11461).addRange(0x11480, 0x114AF).addRange(0x114C4, 0x114C5).addRange(0x11580, 0x115AE).addRange(0x115D8, 0x115DB).addRange(0x11600, 0x1162F).addRange(0x11680, 0x116AA).addRange(0x11700, 0x1171A).addRange(0x11740, 0x11746).addRange(0x11800, 0x1182B).addRange(0x118A0, 0x118DF).addRange(0x118FF, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x1192F).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D0).addRange(0x11A0B, 0x11A32);\nset.addRange(0x11A5C, 0x11A89).addRange(0x11AB0, 0x11AF8).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C2E).addRange(0x11C72, 0x11C8F).addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D30).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D89).addRange(0x11EE0, 0x11EF2).addRange(0x12000, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12480, 0x12543).addRange(0x12F90, 0x12FF0).addRange(0x13000, 0x1342E).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A70, 0x16ABE).addRange(0x16AD0, 0x16AED).addRange(0x16B00, 0x16B2F).addRange(0x16B40, 0x16B43).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16E40, 0x16E7F).addRange(0x16F00, 0x16F4A).addRange(0x16F93, 0x16F9F).addRange(0x16FE0, 0x16FE1).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B000, 0x1B122).addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167).addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3);\nset.addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6FA).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D734).addRange(0x1D736, 0x1D74E).addRange(0x1D750, 0x1D76E).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D7A8).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7CB).addRange(0x1DF00, 0x1DF1E).addRange(0x1E100, 0x1E12C).addRange(0x1E137, 0x1E13D).addRange(0x1E290, 0x1E2AD).addRange(0x1E2C0, 0x1E2EB).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE).addRange(0x1E800, 0x1E8C4).addRange(0x1E900, 0x1E943).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B738).addRange(0x2B740, 0x2B81D);\nset.addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A);\nmodule.exports = set;","const set = require('regenerate')(0x5F, 0x7B, 0x7D, 0xA1, 0xA7, 0xAB, 0xBB, 0xBF, 0x37E, 0x387, 0x5BE, 0x5C0, 0x5C3, 0x5C6, 0x61B, 0x6D4, 0x85E, 0x970, 0x9FD, 0xA76, 0xAF0, 0xC77, 0xC84, 0xDF4, 0xE4F, 0xF14, 0xF85, 0x10FB, 0x1400, 0x166E, 0x1CD3, 0x2D70, 0x3030, 0x303D, 0x30A0, 0x30FB, 0xA673, 0xA67E, 0xA8FC, 0xA95F, 0xABEB, 0xFE63, 0xFE68, 0xFF3F, 0xFF5B, 0xFF5D, 0x1039F, 0x103D0, 0x1056F, 0x10857, 0x1091F, 0x1093F, 0x10A7F, 0x10EAD, 0x111CD, 0x111DB, 0x112A9, 0x1145D, 0x114C6, 0x116B9, 0x1183B, 0x119E2, 0x11FFF, 0x16AF5, 0x16B44, 0x16FE2, 0x1BC9F);\nset.addRange(0x21, 0x23).addRange(0x25, 0x2A).addRange(0x2C, 0x2F).addRange(0x3A, 0x3B).addRange(0x3F, 0x40).addRange(0x5B, 0x5D).addRange(0xB6, 0xB7).addRange(0x55A, 0x55F).addRange(0x589, 0x58A).addRange(0x5F3, 0x5F4).addRange(0x609, 0x60A).addRange(0x60C, 0x60D).addRange(0x61D, 0x61F).addRange(0x66A, 0x66D).addRange(0x700, 0x70D).addRange(0x7F7, 0x7F9).addRange(0x830, 0x83E).addRange(0x964, 0x965).addRange(0xE5A, 0xE5B).addRange(0xF04, 0xF12).addRange(0xF3A, 0xF3D).addRange(0xFD0, 0xFD4).addRange(0xFD9, 0xFDA).addRange(0x104A, 0x104F).addRange(0x1360, 0x1368).addRange(0x169B, 0x169C).addRange(0x16EB, 0x16ED).addRange(0x1735, 0x1736).addRange(0x17D4, 0x17D6).addRange(0x17D8, 0x17DA).addRange(0x1800, 0x180A).addRange(0x1944, 0x1945).addRange(0x1A1E, 0x1A1F).addRange(0x1AA0, 0x1AA6).addRange(0x1AA8, 0x1AAD).addRange(0x1B5A, 0x1B60).addRange(0x1B7D, 0x1B7E).addRange(0x1BFC, 0x1BFF).addRange(0x1C3B, 0x1C3F).addRange(0x1C7E, 0x1C7F).addRange(0x1CC0, 0x1CC7).addRange(0x2010, 0x2027).addRange(0x2030, 0x2043).addRange(0x2045, 0x2051).addRange(0x2053, 0x205E).addRange(0x207D, 0x207E).addRange(0x208D, 0x208E).addRange(0x2308, 0x230B).addRange(0x2329, 0x232A).addRange(0x2768, 0x2775).addRange(0x27C5, 0x27C6);\nset.addRange(0x27E6, 0x27EF).addRange(0x2983, 0x2998).addRange(0x29D8, 0x29DB).addRange(0x29FC, 0x29FD).addRange(0x2CF9, 0x2CFC).addRange(0x2CFE, 0x2CFF).addRange(0x2E00, 0x2E2E).addRange(0x2E30, 0x2E4F).addRange(0x2E52, 0x2E5D).addRange(0x3001, 0x3003).addRange(0x3008, 0x3011).addRange(0x3014, 0x301F).addRange(0xA4FE, 0xA4FF).addRange(0xA60D, 0xA60F).addRange(0xA6F2, 0xA6F7).addRange(0xA874, 0xA877).addRange(0xA8CE, 0xA8CF).addRange(0xA8F8, 0xA8FA).addRange(0xA92E, 0xA92F).addRange(0xA9C1, 0xA9CD).addRange(0xA9DE, 0xA9DF).addRange(0xAA5C, 0xAA5F).addRange(0xAADE, 0xAADF).addRange(0xAAF0, 0xAAF1).addRange(0xFD3E, 0xFD3F).addRange(0xFE10, 0xFE19).addRange(0xFE30, 0xFE52).addRange(0xFE54, 0xFE61).addRange(0xFE6A, 0xFE6B).addRange(0xFF01, 0xFF03).addRange(0xFF05, 0xFF0A).addRange(0xFF0C, 0xFF0F).addRange(0xFF1A, 0xFF1B).addRange(0xFF1F, 0xFF20).addRange(0xFF3B, 0xFF3D).addRange(0xFF5F, 0xFF65).addRange(0x10100, 0x10102).addRange(0x10A50, 0x10A58).addRange(0x10AF0, 0x10AF6).addRange(0x10B39, 0x10B3F).addRange(0x10B99, 0x10B9C).addRange(0x10F55, 0x10F59).addRange(0x10F86, 0x10F89).addRange(0x11047, 0x1104D).addRange(0x110BB, 0x110BC).addRange(0x110BE, 0x110C1).addRange(0x11140, 0x11143).addRange(0x11174, 0x11175).addRange(0x111C5, 0x111C8).addRange(0x111DD, 0x111DF).addRange(0x11238, 0x1123D);\nset.addRange(0x1144B, 0x1144F).addRange(0x1145A, 0x1145B).addRange(0x115C1, 0x115D7).addRange(0x11641, 0x11643).addRange(0x11660, 0x1166C).addRange(0x1173C, 0x1173E).addRange(0x11944, 0x11946).addRange(0x11A3F, 0x11A46).addRange(0x11A9A, 0x11A9C).addRange(0x11A9E, 0x11AA2).addRange(0x11C41, 0x11C45).addRange(0x11C70, 0x11C71).addRange(0x11EF7, 0x11EF8).addRange(0x12470, 0x12474).addRange(0x12FF1, 0x12FF2).addRange(0x16A6E, 0x16A6F).addRange(0x16B37, 0x16B3B).addRange(0x16E97, 0x16E9A).addRange(0x1DA87, 0x1DA8B).addRange(0x1E95E, 0x1E95F);\nmodule.exports = set;","const set = require('regenerate')(0x30FB);\nset.addRange(0x3001, 0x3002).addRange(0x3008, 0x3011).addRange(0x3014, 0x301B).addRange(0xA000, 0xA48C).addRange(0xA490, 0xA4C6).addRange(0xFF61, 0xFF65);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x1735, 0x1736).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1772, 0x1773);\nmodule.exports = set;","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","const set = require('regenerate')();\nset.addRange(0x11800, 0x1183B);\nmodule.exports = set;","var baseSet = require('./_baseSet');\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nmodule.exports = set;\n","const set = require('regenerate')();\nset.addRange(0x780, 0x7B1);\nmodule.exports = set;","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n;\n(function (root) {\n 'use strict';\n\n /**\n * Block-Level Grammar\n */\n var block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ {0,3}\\[(label)\\]: *\\n? *]+)>?(?:(?: +\\n? *| *\\n *)(title))? *(?:\\n+|$)/,\n table: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n paragraph: /^([^\\n]+(?:\\n?(?!hr|heading|lheading| {0,3}>|tag)[^\\n]+)+)/,\n text: /^[^\\n]+/\n };\n block._label = /(?:\\\\[\\[\\]]|[^\\[\\]])+/;\n block._title = /(?:\"(?:\\\\\"|[^\"]|\"[^\"\\n]*\")*\"|'\\n?(?:[^'\\n]+\\n?)*'|\\([^()]*\\))/;\n block.def = edit(block.def).replace('label', block._label).replace('title', block._title).getRegex();\n block.bullet = /(?:[*+-]|\\d+\\.)/;\n block.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\n block.item = edit(block.item, 'gm').replace(/bull/g, block.bullet).getRegex();\n block.list = edit(block.list).replace(/bull/g, block.bullet).replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))').replace('def', '\\\\n+(?=' + block.def.source + ')').getRegex();\n block._tag = '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code' + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo' + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b';\n block.html = edit(block.html).replace('comment', //).replace('closed', /<(tag)[\\s\\S]+?<\\/\\1>/).replace('closing', /\\s]*)*?\\/?>/).replace(/tag/g, block._tag).getRegex();\n block.paragraph = edit(block.paragraph).replace('hr', block.hr).replace('heading', block.heading).replace('lheading', block.lheading).replace('tag', '<' + block._tag).getRegex();\n block.blockquote = edit(block.blockquote).replace('paragraph', block.paragraph).getRegex();\n\n /**\n * Normal Block Grammar\n */\n\n block.normal = merge({}, block);\n\n /**\n * GFM Block Grammar\n */\n\n block.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\n? *\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n });\n block.gfm.paragraph = edit(block.paragraph).replace('(?!', '(?!' + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|' + block.list.source.replace('\\\\1', '\\\\3') + '|').getRegex();\n\n /**\n * GFM + Tables Block Grammar\n */\n\n block.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n });\n\n /**\n * Block Lexer\n */\n\n function Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n }\n\n /**\n * Expose Block Rules\n */\n\n Lexer.rules = block;\n\n /**\n * Static Lex Method\n */\n\n Lexer.lex = function (src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n };\n\n /**\n * Preprocessing\n */\n\n Lexer.prototype.lex = function (src) {\n src = src.replace(/\\r\\n|\\r/g, '\\n').replace(/\\t/g, ' ').replace(/\\u00a0/g, ' ').replace(/\\u2424/g, '\\n');\n return this.token(src, true);\n };\n\n /**\n * Lexing\n */\n\n Lexer.prototype.token = function (src, top) {\n src = src.replace(/^ +$/gm, '');\n var next, loose, cap, bull, b, item, space, i, tag, l, isordered;\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic ? cap.replace(/\\n+$/, '') : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n this.tokens.push(item);\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'blockquote_start'\n });\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top);\n this.tokens.push({\n type: 'blockquote_end'\n });\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n isordered = bull.length > 1;\n this.tokens.push({\n type: 'list_start',\n ordered: isordered,\n start: isordered ? +bull : ''\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n next = false;\n l = cap.length;\n i = 0;\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '') : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n this.tokens.push({\n type: loose ? 'loose_item_start' : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false);\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n this.tokens.push({\n type: 'list_end'\n });\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize ? 'paragraph' : 'html',\n pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if (top && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n tag = cap[1].toLowerCase();\n if (!this.tokens.links[tag]) {\n this.tokens.links[tag] = {\n href: cap[2],\n title: cap[3]\n };\n }\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].replace(/^ *\\| *| *\\| *$/g, '').split(/ *\\| */);\n }\n this.tokens.push(item);\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n' ? cap[1].slice(0, -1) : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n if (src) {\n throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n return this.tokens;\n };\n\n /**\n * Inline-Level Grammar\n */\n\n var inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noop,\n tag: /^|^<\\/?[a-zA-Z0-9\\-]+(?:\"[^\"]*\"|'[^']*'|\\s[^<'\">\\/\\s]*)*?\\/?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^_([^\\s_](?:[^_]|__)+?[^\\s_])_\\b|^\\*((?:\\*\\*|[^*])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`]?)\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n inline.link = edit(inline.link).replace('inside', inline._inside).replace('href', inline._href).getRegex();\n inline.reflink = edit(inline.reflink).replace('inside', inline._inside).getRegex();\n\n /**\n * Normal Inline Grammar\n */\n\n inline.normal = merge({}, inline);\n\n /**\n * Pedantic Inline Grammar\n */\n\n inline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n });\n\n /**\n * GFM Inline Grammar\n */\n\n inline.gfm = merge({}, inline.normal, {\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/).replace('email', inline._email).getRegex(),\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: edit(inline.text).replace(']|', '~]|').replace('|', '|https?://|ftp://|www\\\\.|[a-zA-Z0-9.!#$%&\\'*+/=?^_`{\\\\|}~-]+@|').getRegex()\n });\n\n /**\n * GFM + Line Breaks Inline Grammar\n */\n\n inline.breaks = merge({}, inline.gfm, {\n br: edit(inline.br).replace('{2,}', '*').getRegex(),\n text: edit(inline.gfm.text).replace('{2,}', '*').getRegex()\n });\n\n /**\n * Inline Lexer & Compiler\n */\n\n function InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer();\n this.renderer.options = this.options;\n if (!this.links) {\n throw new Error('Tokens array requires a `links` property.');\n }\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n }\n\n /**\n * Expose Inline Rules\n */\n\n InlineLexer.rules = inline;\n\n /**\n * Static Lexing/Compiling Method\n */\n\n InlineLexer.output = function (src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n };\n\n /**\n * Lexing/Compiling\n */\n\n InlineLexer.prototype.output = function (src) {\n var out = '',\n link,\n text,\n href,\n cap;\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = escape(this.mangle(cap[1]));\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n cap[0] = this.rules._backpedal.exec(cap[0])[0];\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0];\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src)) || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2].trim(), true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n if (src) {\n throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n return out;\n };\n\n /**\n * Compile Link\n */\n\n InlineLexer.prototype.outputLink = function (cap, link) {\n var href = escape(link.href),\n title = link.title ? escape(link.title) : null;\n return cap[0].charAt(0) !== '!' ? this.renderer.link(href, title, this.output(cap[1])) : this.renderer.image(href, title, escape(cap[1]));\n };\n\n /**\n * Smartypants Transformations\n */\n\n InlineLexer.prototype.smartypants = function (text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n };\n\n /**\n * Mangle Links\n */\n\n InlineLexer.prototype.mangle = function (text) {\n if (!this.options.mangle) return text;\n var out = '',\n l = text.length,\n i = 0,\n ch;\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n return out;\n };\n\n /**\n * Renderer\n */\n\n function Renderer(options) {\n this.options = options || {};\n }\n Renderer.prototype.code = function (code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n if (!lang) {\n return '
    ' + (escaped ? code : escape(code, true)) + '\\n
    ';\n }\n return '
    ' + (escaped ? code : escape(code, true)) + '\\n
    \\n';\n };\n Renderer.prototype.blockquote = function (quote) {\n return '
    \\n' + quote + '
    \\n';\n };\n Renderer.prototype.html = function (html) {\n return html;\n };\n Renderer.prototype.heading = function (text, level, raw) {\n return '' + text + '\\n';\n };\n Renderer.prototype.hr = function () {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n };\n Renderer.prototype.list = function (body, ordered, start) {\n var type = ordered ? 'ol' : 'ul',\n startatt = ordered && start !== 1 ? ' start=\"' + start + '\"' : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n };\n Renderer.prototype.listitem = function (text) {\n return '
  • ' + text + '
  • \\n';\n };\n Renderer.prototype.paragraph = function (text) {\n return '

    ' + text + '

    \\n';\n };\n Renderer.prototype.table = function (header, body) {\n return '\\n' + '\\n' + header + '\\n' + '\\n' + body + '\\n' + '
    \\n';\n };\n Renderer.prototype.tablerow = function (content) {\n return '\\n' + content + '\\n';\n };\n Renderer.prototype.tablecell = function (content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align ? '<' + type + ' style=\"text-align:' + flags.align + '\">' : '<' + type + '>';\n return tag + content + '\\n';\n };\n\n // span level renderer\n Renderer.prototype.strong = function (text) {\n return '' + text + '';\n };\n Renderer.prototype.em = function (text) {\n return '' + text + '';\n };\n Renderer.prototype.codespan = function (text) {\n return '' + text + '';\n };\n Renderer.prototype.br = function () {\n return this.options.xhtml ? '
    ' : '
    ';\n };\n Renderer.prototype.del = function (text) {\n return '' + text + '';\n };\n Renderer.prototype.link = function (href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href)).replace(/[^\\w:]/g, '').toLowerCase();\n } catch (e) {\n return text;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return text;\n }\n }\n if (this.options.baseUrl && !originIndependentUrl.test(href)) {\n href = resolveUrl(this.options.baseUrl, href);\n }\n var out = '
    ';\n return out;\n };\n Renderer.prototype.image = function (href, title, text) {\n if (this.options.baseUrl && !originIndependentUrl.test(href)) {\n href = resolveUrl(this.options.baseUrl, href);\n }\n var out = '\"'' : '>';\n return out;\n };\n Renderer.prototype.text = function (text) {\n return text;\n };\n\n /**\n * TextRenderer\n * returns only the textual part of the token\n */\n\n function TextRenderer() {}\n\n // no need for block level renderers\n\n TextRenderer.prototype.strong = TextRenderer.prototype.em = TextRenderer.prototype.codespan = TextRenderer.prototype.del = TextRenderer.prototype.text = function (text) {\n return text;\n };\n TextRenderer.prototype.link = TextRenderer.prototype.image = function (href, title, text) {\n return '' + text;\n };\n TextRenderer.prototype.br = function () {\n return '';\n };\n\n /**\n * Parsing & Compiling\n */\n\n function Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n }\n\n /**\n * Static Parse Method\n */\n\n Parser.parse = function (src, options) {\n var parser = new Parser(options);\n return parser.parse(src);\n };\n\n /**\n * Parse Loop\n */\n\n Parser.prototype.parse = function (src) {\n this.inline = new InlineLexer(src.links, this.options);\n // use an InlineLexer with a TextRenderer to extract pure text\n this.inlineText = new InlineLexer(src.links, merge({}, this.options, {\n renderer: new TextRenderer()\n }));\n this.tokens = src.reverse();\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n return out;\n };\n\n /**\n * Next Token\n */\n\n Parser.prototype.next = function () {\n return this.token = this.tokens.pop();\n };\n\n /**\n * Preview Next Token\n */\n\n Parser.prototype.peek = function () {\n return this.tokens[this.tokens.length - 1] || 0;\n };\n\n /**\n * Parse Text Tokens\n */\n\n Parser.prototype.parseText = function () {\n var body = this.token.text;\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n return this.inline.output(body);\n };\n\n /**\n * Parse Current Token\n */\n\n Parser.prototype.tok = function () {\n switch (this.token.type) {\n case 'space':\n {\n return '';\n }\n case 'hr':\n {\n return this.renderer.hr();\n }\n case 'heading':\n {\n return this.renderer.heading(this.inline.output(this.token.text), this.token.depth, unescape(this.inlineText.output(this.token.text)));\n }\n case 'code':\n {\n return this.renderer.code(this.token.text, this.token.lang, this.token.escaped);\n }\n case 'table':\n {\n var header = '',\n body = '',\n i,\n row,\n cell,\n j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n cell += this.renderer.tablecell(this.inline.output(this.token.header[i]), {\n header: true,\n align: this.token.align[i]\n });\n }\n header += this.renderer.tablerow(cell);\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(this.inline.output(row[j]), {\n header: false,\n align: this.token.align[j]\n });\n }\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start':\n {\n body = '';\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n return this.renderer.blockquote(body);\n }\n case 'list_start':\n {\n body = '';\n var ordered = this.token.ordered,\n start = this.token.start;\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n return this.renderer.list(body, ordered, start);\n }\n case 'list_item_start':\n {\n body = '';\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text' ? this.parseText() : this.tok();\n }\n return this.renderer.listitem(body);\n }\n case 'loose_item_start':\n {\n body = '';\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n return this.renderer.listitem(body);\n }\n case 'html':\n {\n var html = !this.token.pre && !this.options.pedantic ? this.inline.output(this.token.text) : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph':\n {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text':\n {\n return this.renderer.paragraph(this.parseText());\n }\n }\n };\n\n /**\n * Helpers\n */\n\n function escape(html, encode) {\n return html.replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&').replace(//g, '>').replace(/\"/g, '"').replace(/'/g, ''');\n }\n function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig, function (_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n }\n function edit(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return {\n replace: function (name, val) {\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return this;\n },\n getRegex: function () {\n return new RegExp(regex, opt);\n }\n };\n }\n function resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (/^[^:]+:\\/*[^/]*$/.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = base.replace(/[^/]*$/, '');\n }\n }\n base = baseUrls[' ' + base];\n if (href.slice(0, 2) === '//') {\n return base.replace(/:[\\s\\S]*/, ':') + href;\n } else if (href.charAt(0) === '/') {\n return base.replace(/(:\\/*[^/]*)[\\s\\S]*/, '$1') + href;\n } else {\n return base + href;\n }\n }\n var baseUrls = {};\n var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n function noop() {}\n noop.exec = noop;\n function merge(obj) {\n var i = 1,\n target,\n key;\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n return obj;\n }\n\n /**\n * Marked\n */\n\n function marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');\n }\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n opt = merge({}, marked.defaults, opt || {});\n var highlight = opt.highlight,\n tokens,\n pending,\n i = 0;\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n pending = tokens.length;\n var done = function (err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n var out;\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n opt.highlight = highlight;\n return err ? callback(err) : callback(null, out);\n };\n if (!highlight || highlight.length < 3) {\n return done();\n }\n delete opt.highlight;\n if (!pending) return done();\n for (; i < tokens.length; i++) {\n (function (token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function (err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occurred:

    ' + escape(e.message + '', true) + '
    ';\n }\n throw e;\n }\n }\n\n /**\n * Options\n */\n\n marked.options = marked.setOptions = function (opt) {\n merge(marked.defaults, opt);\n return marked;\n };\n marked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer(),\n xhtml: false,\n baseUrl: null\n };\n\n /**\n * Expose\n */\n\n marked.Parser = Parser;\n marked.parser = Parser.parse;\n marked.Renderer = Renderer;\n marked.TextRenderer = TextRenderer;\n marked.Lexer = Lexer;\n marked.lexer = Lexer.lex;\n marked.InlineLexer = InlineLexer;\n marked.inlineLexer = InlineLexer.output;\n marked.parse = marked;\n if (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n } else if (typeof define === 'function' && define.amd) {\n define(function () {\n return marked;\n });\n } else {\n root.marked = marked;\n }\n})(this || (typeof window !== 'undefined' ? window : global));","const set = require('regenerate')();\nset.addRange(0x16A0, 0x16EA).addRange(0x16EE, 0x16F8);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x1E100, 0x1E12C).addRange(0x1E130, 0x1E13D).addRange(0x1E140, 0x1E149).addRange(0x1E14E, 0x1E14F);\nmodule.exports = set;","const set = require('regenerate')(0xAB, 0x2018, 0x201F, 0x2039, 0x2E02, 0x2E04, 0x2E09, 0x2E0C, 0x2E1C, 0x2E20);\nset.addRange(0x201B, 0x201C);\nmodule.exports = set;","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","const set = require('regenerate')();\nset.addRange(0x16B00, 0x16B45).addRange(0x16B50, 0x16B59).addRange(0x16B5B, 0x16B61).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F);\nmodule.exports = set;","const set = require('regenerate')(0x1E2FF);\nset.addRange(0x1E2C0, 0x1E2F9);\nmodule.exports = set;","import React from \"react\"\nimport { Link } from \"docz\"\n\nimport Snip from \"./snippet.mdx\"\n\nconst elemCss = {\n display: \"flex\",\n flexGrow: 1,\n flexDirection: \"column\",\n flexBasis: `calc(50% - 2em)`,\n justifyContent: \"center\",\n marginBottom: \"1em\",\n marginLeft: \"2em\",\n}\n\nexport const Catcher = () => (\n \n
    \n \n \n Kubernetes Deployment. That's all it takes.\n \n \n)\n\nconst Button = ({ to, children }) => (\n \n {children}\n \n)\n","module.exports = require('./set');\n","var realNames = require('./_realNames');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\nfunction getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n}\n\nmodule.exports = getFuncName;\n","const set = require('regenerate')();\nset.addRange(0x10480, 0x1049D).addRange(0x104A0, 0x104A9);\nmodule.exports = set;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar LARGER_DISPLAY_WIDTH = exports.LARGER_DISPLAY_WIDTH = \"1600px\";\nvar LARGE_DISPLAY_WIDTH = exports.LARGE_DISPLAY_WIDTH = \"1280px\";\nvar DEFAULT_WIDTH = exports.DEFAULT_WIDTH = \"980px\";\nvar TABLET_WIDTH = exports.TABLET_WIDTH = \"768px\";\nvar MOBILE_WIDTH = exports.MOBILE_WIDTH = \"480px\";\nvar LARGER_DISPLAY_MEDIA_QUERY = exports.LARGER_DISPLAY_MEDIA_QUERY = \"@media only screen and (max-width:1600px)\";\nvar LARGE_DISPLAY_MEDIA_QUERY = exports.LARGE_DISPLAY_MEDIA_QUERY = \"@media only screen and (max-width:1280px)\";\nvar DEFAULT_MEDIA_QUERY = exports.DEFAULT_MEDIA_QUERY = \"@media only screen and (max-width:980px)\";\nvar TABLET_MEDIA_QUERY = exports.TABLET_MEDIA_QUERY = \"@media only screen and (max-width:768px)\";\nvar MOBILE_MEDIA_QUERY = exports.MOBILE_MEDIA_QUERY = \"@media only screen and (max-width:480px)\";\nvar MIN_LARGER_DISPLAY_MEDIA_QUERY = exports.MIN_LARGER_DISPLAY_MEDIA_QUERY = \"@media (min-width:1600px)\";\nvar MIN_LARGE_DISPLAY_MEDIA_QUERY = exports.MIN_LARGE_DISPLAY_MEDIA_QUERY = \"@media (min-width:1280px)\";\nvar MIN_DEFAULT_MEDIA_QUERY = exports.MIN_DEFAULT_MEDIA_QUERY = \"@media (min-width:980px)\";\nvar MIN_TABLET_MEDIA_QUERY = exports.MIN_TABLET_MEDIA_QUERY = \"@media (min-width:768px)\";\nvar MIN_MOBILE_MEDIA_QUERY = exports.MIN_MOBILE_MEDIA_QUERY = \"@media (min-width:480px)\";","const set = require('regenerate')();\nset.addRange(0xA900, 0xA92F);\nmodule.exports = set;","var baseCreate = require('./_baseCreate'),\n isObject = require('./isObject');\n\n/**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n}\n\nmodule.exports = createCtor;\n","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.ScrollHandler = exports.ScrollContext = void 0;\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _sessionStorage = require(\"./session-storage\");\n\nvar ScrollContext = /*#__PURE__*/React.createContext(new _sessionStorage.SessionStorage());\nexports.ScrollContext = ScrollContext;\nScrollContext.displayName = \"GatsbyScrollContext\";\n\nvar ScrollHandler = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(ScrollHandler, _React$Component);\n\n function ScrollHandler() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this._stateStorage = new _sessionStorage.SessionStorage();\n\n _this.scrollListener = function () {\n var key = _this.props.location.key;\n\n if (key) {\n _this._stateStorage.save(_this.props.location, key, window.scrollY);\n }\n };\n\n _this.windowScroll = function (position, prevProps) {\n if (_this.shouldUpdateScroll(prevProps, _this.props)) {\n window.scrollTo(0, position);\n }\n };\n\n _this.scrollToHash = function (hash, prevProps) {\n var node = document.getElementById(hash.substring(1));\n\n if (node && _this.shouldUpdateScroll(prevProps, _this.props)) {\n node.scrollIntoView();\n }\n };\n\n _this.shouldUpdateScroll = function (prevRouterProps, routerProps) {\n var shouldUpdateScroll = _this.props.shouldUpdateScroll;\n\n if (!shouldUpdateScroll) {\n return true;\n } // Hack to allow accessing this._stateStorage.\n\n\n return shouldUpdateScroll.call((0, _assertThisInitialized2.default)(_this), prevRouterProps, routerProps);\n };\n\n return _this;\n }\n\n var _proto = ScrollHandler.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n window.addEventListener(\"scroll\", this.scrollListener);\n var scrollPosition;\n var _this$props$location = this.props.location,\n key = _this$props$location.key,\n hash = _this$props$location.hash;\n\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n\n if (scrollPosition) {\n this.windowScroll(scrollPosition, undefined);\n } else if (hash) {\n this.scrollToHash(decodeURI(hash), undefined);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n window.removeEventListener(\"scroll\", this.scrollListener);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var _this$props$location2 = this.props.location,\n hash = _this$props$location2.hash,\n key = _this$props$location2.key;\n var scrollPosition;\n\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n /** There are two pieces of state: the browser url and\n * history state which keeps track of scroll position\n * Native behaviour prescribes that we ought to restore scroll position\n * when a user navigates back in their browser (this is the `POP` action)\n * Currently, reach router has a bug that prevents this at https://github.com/reach/router/issues/228\n * So we _always_ stick to the url as a source of truth — if the url\n * contains a hash, we scroll to it\n */\n\n\n if (hash) {\n this.scrollToHash(decodeURI(hash), prevProps);\n } else {\n this.windowScroll(scrollPosition, prevProps);\n }\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(ScrollContext.Provider, {\n value: this._stateStorage\n }, this.props.children);\n };\n\n return ScrollHandler;\n}(React.Component);\n\nexports.ScrollHandler = ScrollHandler;\nScrollHandler.propTypes = {\n shouldUpdateScroll: _propTypes.default.func,\n children: _propTypes.default.element.isRequired,\n location: _propTypes.default.object.isRequired\n};","const set = require('regenerate')();\nset.addRange(0x11200, 0x11211).addRange(0x11213, 0x1123E);\nmodule.exports = set;","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","module.exports = {\n 'cap': false,\n 'curry': false,\n 'fixed': false,\n 'immutable': false,\n 'rearg': false\n};\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","const set = require('regenerate')();\nset.addRange(0x10A60, 0x10A7F);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x10A60, 0x10A7F);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x1C50, 0x1C7F);\nmodule.exports = set;","/*!\n * array-sort \n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar defaultCompare = require('default-compare');\nvar typeOf = require('kind-of');\nvar get = require('get-value');\n\n/**\n * Sort an array of objects by one or more properties.\n *\n * @param {Array} `arr` The Array to sort.\n * @param {String|Array|Function} `props` One or more object paths or comparison functions.\n * @param {Object} `opts` Pass `{ reverse: true }` to reverse the sort order.\n * @return {Array} Returns a sorted array.\n * @api public\n */\n\nfunction arraySort(arr, props, opts) {\n if (arr == null) {\n return [];\n }\n if (!Array.isArray(arr)) {\n throw new TypeError('array-sort expects an array.');\n }\n if (arguments.length === 1) {\n return arr.sort();\n }\n var args = flatten([].slice.call(arguments, 1));\n\n // if the last argument appears to be a plain object,\n // it's not a valid `compare` arg, so it must be options.\n if (typeOf(args[args.length - 1]) === 'object') {\n opts = args.pop();\n }\n return arr.sort(sortBy(args, opts));\n}\n\n/**\n * Iterate over each comparison property or function until `1` or `-1`\n * is returned.\n *\n * @param {String|Array|Function} `props` One or more object paths or comparison functions.\n * @param {Object} `opts` Pass `{ reverse: true }` to reverse the sort order.\n * @return {Array}\n */\n\nfunction sortBy(props, opts) {\n opts = opts || {};\n return function compareFn(a, b) {\n var len = props.length,\n i = -1;\n var result;\n while (++i < len) {\n result = compare(props[i], a, b);\n if (result !== 0) {\n break;\n }\n }\n if (opts.reverse === true) {\n return result * -1;\n }\n return result;\n };\n}\n\n/**\n * Compare `a` to `b`. If an object `prop` is passed, then\n * `a[prop]` is compared to `b[prop]`\n */\n\nfunction compare(prop, a, b) {\n if (typeof prop === 'function') {\n // expose `compare` to custom function\n return prop(a, b, compare.bind(null, null));\n }\n // compare object values\n if (prop && typeof a === 'object' && typeof b === 'object') {\n return compare(null, get(a, prop), get(b, prop));\n }\n return defaultCompare(a, b);\n}\n\n/**\n * Flatten the given array.\n */\n\nfunction flatten(arr) {\n return [].concat.apply([], arr);\n}\n\n/**\n * Expose `arraySort`\n */\n\nmodule.exports = arraySort;","const set = require('regenerate')(0x1056F);\nset.addRange(0x10530, 0x10563);\nmodule.exports = set;","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","var $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","/**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\nfunction defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n}\n\nmodule.exports = defaultTo;\n","const set = require('regenerate')(0xFDCF, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);\nset.addRange(0x600, 0x604).addRange(0x606, 0x60B).addRange(0x60D, 0x61A).addRange(0x61C, 0x61E).addRange(0x620, 0x63F).addRange(0x641, 0x64A).addRange(0x656, 0x66F).addRange(0x671, 0x6DC).addRange(0x6DE, 0x6FF).addRange(0x750, 0x77F).addRange(0x870, 0x88E).addRange(0x890, 0x891).addRange(0x898, 0x8E1).addRange(0x8E3, 0x8FF).addRange(0xFB50, 0xFBC2).addRange(0xFBD3, 0xFD3D).addRange(0xFD40, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFF).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0x10E60, 0x10E7E).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1EEF0, 0x1EEF1);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x16F00, 0x16F4A).addRange(0x16F4F, 0x16F87).addRange(0x16F8F, 0x16F9F);\nmodule.exports = set;","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var toPositiveInteger = require('../internals/to-positive-integer');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw $RangeError('Wrong offset');\n return offset;\n};\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","const set = require('regenerate')();\nset.addRange(0x964, 0x965).addRange(0xA830, 0xA839).addRange(0x112B0, 0x112EA).addRange(0x112F0, 0x112F9);\nmodule.exports = set;","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","const set = require('regenerate')();\nset.addRange(0xE000, 0xF8FF).addRange(0xF0000, 0xFFFFD).addRange(0x100000, 0x10FFFD);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x10B00, 0x10B35).addRange(0x10B39, 0x10B3F);\nmodule.exports = set;","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","const set = require('regenerate')();\nset.addRange(0x11700, 0x1171A).addRange(0x1171D, 0x1172B).addRange(0x11730, 0x11746);\nmodule.exports = set;","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n if (ret !== void 0) {\n return !!ret;\n }\n if (objA === objB) {\n return true;\n }\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) {\n return false;\n }\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n if (!bHasOwnProperty(key)) {\n return false;\n }\n var valueA = objA[key];\n var valueB = objB[key];\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n if (ret === false || ret === void 0 && valueA !== valueB) {\n return false;\n }\n }\n return true;\n};","'use strict';\n\nrequire(\"core-js/modules/es.typed-array.set.js\");\nrequire(\"core-js/modules/es.typed-array.sort.js\");\nexports.byteLength = byteLength;\nexports.toByteArray = toByteArray;\nexports.fromByteArray = fromByteArray;\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62;\nrevLookup['_'.charCodeAt(0)] = 63;\nfunction getLens(b64) {\n var len = b64.length;\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4');\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=');\n if (validLen === -1) validLen = len;\n var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;\n return [validLen, placeHoldersLen];\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength(b64) {\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n}\nfunction _byteLength(b64, validLen, placeHoldersLen) {\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n}\nfunction toByteArray(b64) {\n var tmp;\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n var curByte = 0;\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n var i;\n for (i = 0; i < len; i += 4) {\n tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n arr[curByte++] = tmp >> 16 & 0xFF;\n arr[curByte++] = tmp >> 8 & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n if (placeHoldersLen === 2) {\n tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n arr[curByte++] = tmp & 0xFF;\n }\n if (placeHoldersLen === 1) {\n tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n arr[curByte++] = tmp >> 8 & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n return arr;\n}\nfunction tripletToBase64(num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F];\n}\nfunction encodeChunk(uint8, start, end) {\n var tmp;\n var output = [];\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16 & 0xFF0000) + (uint8[i + 1] << 8 & 0xFF00) + (uint8[i + 2] & 0xFF);\n output.push(tripletToBase64(tmp));\n }\n return output.join('');\n}\nfunction fromByteArray(uint8) {\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 0x3F] + '==');\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 0x3F] + lookup[tmp << 2 & 0x3F] + '=');\n }\n return parts.join('');\n}","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict';\n\nrequire(\"core-js/modules/es.typed-array.set.js\");\nrequire(\"core-js/modules/es.typed-array.sort.js\");\nvar base64 = require('base64-js');\nvar ieee754 = require('ieee754');\nvar isArray = require('isarray');\nexports.Buffer = Buffer;\nexports.SlowBuffer = SlowBuffer;\nexports.INSPECT_MAX_BYTES = 50;\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined ? global.TYPED_ARRAY_SUPPORT : typedArraySupport();\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength();\nfunction typedArraySupport() {\n try {\n var arr = new Uint8Array(1);\n arr.__proto__ = {\n __proto__: Uint8Array.prototype,\n foo: function () {\n return 42;\n }\n };\n return arr.foo() === 42 &&\n // typed array instances can be augmented\n typeof arr.subarray === 'function' &&\n // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0; // ie10 has broken `subarray`\n } catch (e) {\n return false;\n }\n}\nfunction kMaxLength() {\n return Buffer.TYPED_ARRAY_SUPPORT ? 0x7fffffff : 0x3fffffff;\n}\nfunction createBuffer(that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length');\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length);\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length);\n }\n that.length = length;\n }\n return that;\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer(arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length);\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error('If encoding is specified then the first argument must be a string');\n }\n return allocUnsafe(this, arg);\n }\n return from(this, arg, encodingOrOffset, length);\n}\nBuffer.poolSize = 8192; // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype;\n return arr;\n};\nfunction from(that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number');\n }\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length);\n }\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset);\n }\n return fromObject(that, value);\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length);\n};\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype;\n Buffer.__proto__ = Uint8Array;\n if (typeof Symbol !== 'undefined' && Symbol.species && Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n });\n }\n}\nfunction assertSize(size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number');\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative');\n }\n}\nfunction alloc(that, size, fill, encoding) {\n assertSize(size);\n if (size <= 0) {\n return createBuffer(that, size);\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string' ? createBuffer(that, size).fill(fill, encoding) : createBuffer(that, size).fill(fill);\n }\n return createBuffer(that, size);\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding);\n};\nfunction allocUnsafe(that, size) {\n assertSize(size);\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0;\n }\n }\n return that;\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size);\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size);\n};\nfunction fromString(that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding');\n }\n var length = byteLength(string, encoding) | 0;\n that = createBuffer(that, length);\n var actual = that.write(string, encoding);\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual);\n }\n return that;\n}\nfunction fromArrayLike(that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n that = createBuffer(that, length);\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255;\n }\n return that;\n}\nfunction fromArrayBuffer(that, array, byteOffset, length) {\n array.byteLength; // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds');\n }\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds');\n }\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array);\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset);\n } else {\n array = new Uint8Array(array, byteOffset, length);\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array;\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array);\n }\n return that;\n}\nfunction fromObject(that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0;\n that = createBuffer(that, len);\n if (that.length === 0) {\n return that;\n }\n obj.copy(that, 0, 0, len);\n return that;\n }\n if (obj) {\n if (typeof ArrayBuffer !== 'undefined' && obj.buffer instanceof ArrayBuffer || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0);\n }\n return fromArrayLike(that, obj);\n }\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data);\n }\n }\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.');\n}\nfunction checked(length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + kMaxLength().toString(16) + ' bytes');\n }\n return length | 0;\n}\nfunction SlowBuffer(length) {\n if (+length != length) {\n // eslint-disable-line eqeqeq\n length = 0;\n }\n return Buffer.alloc(+length);\n}\nBuffer.isBuffer = function isBuffer(b) {\n return !!(b != null && b._isBuffer);\n};\nBuffer.compare = function compare(a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers');\n }\n if (a === b) return 0;\n var x = a.length;\n var y = b.length;\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n};\nBuffer.isEncoding = function isEncoding(encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true;\n default:\n return false;\n }\n};\nBuffer.concat = function concat(list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n if (list.length === 0) {\n return Buffer.alloc(0);\n }\n var i;\n if (length === undefined) {\n length = 0;\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n var buffer = Buffer.allocUnsafe(length);\n var pos = 0;\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n return buffer;\n};\nfunction byteLength(string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length;\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength;\n }\n if (typeof string !== 'string') {\n string = '' + string;\n }\n var len = string.length;\n if (len === 0) return 0;\n\n // Use a for loop to avoid recursion\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len;\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length;\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2;\n case 'hex':\n return len >>> 1;\n case 'base64':\n return base64ToBytes(string).length;\n default:\n if (loweredCase) return utf8ToBytes(string).length; // assume utf8\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\nBuffer.byteLength = byteLength;\nfunction slowToString(encoding, start, end) {\n var loweredCase = false;\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0;\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return '';\n }\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n if (end <= 0) {\n return '';\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0;\n start >>>= 0;\n if (end <= start) {\n return '';\n }\n if (!encoding) encoding = 'utf8';\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end);\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end);\n case 'ascii':\n return asciiSlice(this, start, end);\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end);\n case 'base64':\n return base64Slice(this, start, end);\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end);\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true;\nfunction swap(b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\nBuffer.prototype.swap16 = function swap16() {\n var len = this.length;\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits');\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n return this;\n};\nBuffer.prototype.swap32 = function swap32() {\n var len = this.length;\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits');\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n return this;\n};\nBuffer.prototype.swap64 = function swap64() {\n var len = this.length;\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits');\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n return this;\n};\nBuffer.prototype.toString = function toString() {\n var length = this.length | 0;\n if (length === 0) return '';\n if (arguments.length === 0) return utf8Slice(this, 0, length);\n return slowToString.apply(this, arguments);\n};\nBuffer.prototype.equals = function equals(b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer');\n if (this === b) return true;\n return Buffer.compare(this, b) === 0;\n};\nBuffer.prototype.inspect = function inspect() {\n var str = '';\n var max = exports.INSPECT_MAX_BYTES;\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');\n if (this.length > max) str += ' ... ';\n }\n return '';\n};\nBuffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer');\n }\n if (start === undefined) {\n start = 0;\n }\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n if (thisStart === undefined) {\n thisStart = 0;\n }\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index');\n }\n if (thisStart >= thisEnd && start >= end) {\n return 0;\n }\n if (thisStart >= thisEnd) {\n return -1;\n }\n if (start >= end) {\n return 1;\n }\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n if (this === target) return 0;\n var x = thisEnd - thisStart;\n var y = end - start;\n var len = Math.min(x, y);\n var thisCopy = this.slice(thisStart, thisEnd);\n var targetCopy = target.slice(start, end);\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break;\n }\n }\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n};\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1;\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff;\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000;\n }\n byteOffset = +byteOffset; // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : buffer.length - 1;\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n if (byteOffset >= buffer.length) {\n if (dir) return -1;else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;else return -1;\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding);\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1;\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n } else if (typeof val === 'number') {\n val = val & 0xFF; // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT && typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n }\n throw new TypeError('val must be string, number or Buffer');\n}\nfunction arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1;\n }\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n function read(buf, i) {\n if (indexSize === 1) {\n return buf[i];\n } else {\n return buf.readUInt16BE(i * indexSize);\n }\n }\n var i;\n if (dir) {\n var foundIndex = -1;\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break;\n }\n }\n if (found) return i;\n }\n }\n return -1;\n}\nBuffer.prototype.includes = function includes(val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1;\n};\nBuffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n};\nBuffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n};\nfunction hexWrite(buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n if (length > remaining) {\n length = remaining;\n }\n }\n\n // must be an even number of digits\n var strLen = string.length;\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string');\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16);\n if (isNaN(parsed)) return i;\n buf[offset + i] = parsed;\n }\n return i;\n}\nfunction utf8Write(buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n}\nfunction asciiWrite(buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length);\n}\nfunction latin1Write(buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length);\n}\nfunction base64Write(buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length);\n}\nfunction ucs2Write(buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n}\nBuffer.prototype.write = function write(string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8';\n length = this.length;\n offset = 0;\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0;\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0;\n if (isFinite(length)) {\n length = length | 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported');\n }\n var remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds');\n }\n if (!encoding) encoding = 'utf8';\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length);\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length);\n case 'ascii':\n return asciiWrite(this, string, offset, length);\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length);\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length);\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length);\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n};\nBuffer.prototype.toJSON = function toJSON() {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n };\n};\nfunction base64Slice(buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf);\n } else {\n return base64.fromByteArray(buf.slice(start, end));\n }\n}\nfunction utf8Slice(buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n var i = start;\n while (i < end) {\n var firstByte = buf[i];\n var codePoint = null;\n var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1;\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint;\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n break;\n case 2:\n secondByte = buf[i + 1];\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F;\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n break;\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F;\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n break;\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F;\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\n }\n }\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD;\n bytesPerSequence = 1;\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000;\n res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n res.push(codePoint);\n i += bytesPerSequence;\n }\n return decodeCodePointsArray(res);\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\nfunction decodeCodePointsArray(codePoints) {\n var len = codePoints.length;\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = '';\n var i = 0;\n while (i < len) {\n res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n }\n return res;\n}\nfunction asciiSlice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n return ret;\n}\nfunction latin1Slice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n return ret;\n}\nfunction hexSlice(buf, start, end) {\n var len = buf.length;\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n var out = '';\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i]);\n }\n return out;\n}\nfunction utf16leSlice(buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = '';\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n return res;\n}\nBuffer.prototype.slice = function slice(start, end) {\n var len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n if (end < start) end = start;\n var newBuf;\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end);\n newBuf.__proto__ = Buffer.prototype;\n } else {\n var sliceLen = end - start;\n newBuf = new Buffer(sliceLen, undefined);\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n return newBuf;\n};\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset(offset, ext, length) {\n if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint');\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length');\n}\nBuffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n return val;\n};\nBuffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n var val = this[offset + --byteLength];\n var mul = 1;\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n return val;\n};\nBuffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset];\n};\nBuffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | this[offset + 1] << 8;\n};\nBuffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] << 8 | this[offset + 1];\n};\nBuffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000;\n};\nBuffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n};\nBuffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\nBuffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var i = byteLength;\n var mul = 1;\n var val = this[offset + --i];\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\nBuffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 0x80)) return this[offset];\n return (0xff - this[offset] + 1) * -1;\n};\nBuffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset] | this[offset + 1] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\nBuffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset + 1] | this[offset] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\nBuffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n};\nBuffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n};\nBuffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, true, 23, 4);\n};\nBuffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, false, 23, 4);\n};\nBuffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, true, 52, 8);\n};\nBuffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, false, 52, 8);\n};\nfunction checkInt(buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance');\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds');\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n}\nBuffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n var mul = 1;\n var i = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n return offset + byteLength;\n};\nBuffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n var i = byteLength - 1;\n var mul = 1;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n return offset + byteLength;\n};\nBuffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n this[offset] = value & 0xff;\n return offset + 1;\n};\nfunction objectWriteUInt16(buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & 0xff << 8 * (littleEndian ? i : 1 - i)) >>> (littleEndian ? i : 1 - i) * 8;\n }\n}\nBuffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2;\n};\nBuffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2;\n};\nfunction objectWriteUInt32(buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = value >>> (littleEndian ? i : 3 - i) * 8 & 0xff;\n }\n}\nBuffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = value >>> 24;\n this[offset + 2] = value >>> 16;\n this[offset + 1] = value >>> 8;\n this[offset] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4;\n};\nBuffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4;\n};\nBuffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n return offset + byteLength;\n};\nBuffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n var i = byteLength - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n return offset + byteLength;\n};\nBuffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n if (value < 0) value = 0xff + value + 1;\n this[offset] = value & 0xff;\n return offset + 1;\n};\nBuffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2;\n};\nBuffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2;\n};\nBuffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n this[offset + 2] = value >>> 16;\n this[offset + 3] = value >>> 24;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4;\n};\nBuffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (value < 0) value = 0xffffffff + value + 1;\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4;\n};\nfunction checkIEEE754(buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n if (offset < 0) throw new RangeError('Index out of range');\n}\nfunction writeFloat(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38);\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4;\n}\nBuffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert);\n};\nBuffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert);\n};\nfunction writeDouble(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308);\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8;\n}\nBuffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert);\n};\nBuffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert);\n};\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy(target, targetStart, start, end) {\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start;\n\n // Copy 0 bytes; we're done\n if (end === start) return 0;\n if (target.length === 0 || this.length === 0) return 0;\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds');\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds');\n if (end < 0) throw new RangeError('sourceEnd out of bounds');\n\n // Are we oob?\n if (end > this.length) end = this.length;\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n var len = end - start;\n var i;\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start];\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n Uint8Array.prototype.set.call(target, this.subarray(start, start + len), targetStart);\n }\n return len;\n};\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill(val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n encoding = end;\n end = this.length;\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n if (code < 256) {\n val = code;\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string');\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding);\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index');\n }\n if (end <= start) {\n return this;\n }\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n if (!val) val = 0;\n var i;\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = Buffer.isBuffer(val) ? val : utf8ToBytes(new Buffer(val, encoding).toString());\n var len = bytes.length;\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n return this;\n};\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\nfunction base64clean(str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '');\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return '';\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n return str;\n}\nfunction stringtrim(str) {\n if (str.trim) return str.trim();\n return str.replace(/^\\s+|\\s+$/g, '');\n}\nfunction toHex(n) {\n if (n < 16) return '0' + n.toString(16);\n return n.toString(16);\n}\nfunction utf8ToBytes(string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i);\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n }\n\n // valid lead\n leadSurrogate = codePoint;\n continue;\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue;\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n leadSurrogate = null;\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break;\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break;\n bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break;\n bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break;\n bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else {\n throw new Error('Invalid code point');\n }\n }\n return bytes;\n}\nfunction asciiToBytes(str) {\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF);\n }\n return byteArray;\n}\nfunction utf16leToBytes(str, units) {\n var c, hi, lo;\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break;\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n return byteArray;\n}\nfunction base64ToBytes(str) {\n return base64.toByteArray(base64clean(str));\n}\nfunction blitBuffer(src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if (i + offset >= dst.length || i >= src.length) break;\n dst[i + offset] = src[i];\n }\n return i;\n}\nfunction isnan(val) {\n return val !== val; // eslint-disable-line no-self-compare\n}","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","const set = require('regenerate')();\nset.addRange(0x3E2, 0x3EF).addRange(0x2C80, 0x2CF3).addRange(0x2CF9, 0x2CFF);\nmodule.exports = set;","import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

    {`If you happen to have a local `}{`Go`}{` toolchain, you can also build Tanka from source using `}{`go install`}{`:`}

    \n
    {`$ `}{`cd`}{` /tmp`}{`\n`}{`$ go install github.com/grafana/tanka/cmd/tk@latest`}
    \n

    {`If that does not work for whatever reason (Go modules, etc), clone and compile manually:`}

    \n
    {`$ git clone https://github.com/grafana/tanka`}{`\n`}{`$ `}{`cd`}{` tanka`}{`\n`}{`$ make install`}
    \n\n \n
    ;\n}\n;\nMDXContent.isMDXComponent = true;\n ","const set = require('regenerate')();\nset.addRange(0x2EA, 0x2EB).addRange(0x3105, 0x312F).addRange(0x31A0, 0x31BF);\nmodule.exports = set;","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","const set = require('regenerate')(0x60C, 0x61F, 0x640, 0x670, 0x1DF8, 0x1DFA);\nset.addRange(0x61B, 0x61C).addRange(0x64B, 0x655).addRange(0x700, 0x70D).addRange(0x70F, 0x74A).addRange(0x74D, 0x74F).addRange(0x860, 0x86A);\nmodule.exports = set;","var isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","const set = require('regenerate')();\nset.addRange(0xD00, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD44).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4F).addRange(0xD54, 0xD63).addRange(0xD66, 0xD7F);\nmodule.exports = set;","const set = require('regenerate')(0x20, 0xA0, 0x1680, 0x202F, 0x205F, 0x3000);\nset.addRange(0x2000, 0x200A).addRange(0x2028, 0x2029);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x109A0, 0x109B7).addRange(0x109BC, 0x109CF).addRange(0x109D2, 0x109FF);\nmodule.exports = set;","const set = require('regenerate')(0x11909);\nset.addRange(0x11900, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x11935).addRange(0x11937, 0x11938).addRange(0x1193B, 0x11946).addRange(0x11950, 0x11959);\nmodule.exports = set;","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","const set = require('regenerate')();\nset.addRange(0xA830, 0xA839).addRange(0x11600, 0x11644).addRange(0x11650, 0x11659);\nmodule.exports = set;","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","const set = require('regenerate')(0x1E2FF);\nset.addRange(0x1E2C0, 0x1E2F9);\nmodule.exports = set;","/*!\n * regjsgen 0.5.2\n * Copyright 2014-2020 Benjamin Tan \n * Available under the MIT license \n */\n;\n(function () {\n 'use strict';\n\n // Used to determine if values are of the language type `Object`.\n var objectTypes = {\n 'function': true,\n 'object': true\n };\n\n // Used as a reference to the global object.\n var root = objectTypes[typeof window] && window || this;\n\n // Detect free variable `exports`.\n var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports;\n\n // Detect free variable `module`.\n var hasFreeModule = objectTypes[typeof module] && module && !module.nodeType;\n\n // Detect free variable `global` from Node.js or Browserified code and use it as `root`.\n var freeGlobal = freeExports && hasFreeModule && typeof global == 'object' && global;\n if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) {\n root = freeGlobal;\n }\n\n // Used to check objects for own properties.\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n\n /*--------------------------------------------------------------------------*/\n\n // Generates a string based on the given code point.\n // Based on https://mths.be/fromcodepoint by @mathias.\n function fromCodePoint() {\n var codePoint = Number(arguments[0]);\n if (!isFinite(codePoint) ||\n // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 ||\n // not a valid Unicode code point\n codePoint > 0x10FFFF ||\n // not a valid Unicode code point\n Math.floor(codePoint) != codePoint // not an integer\n ) {\n throw RangeError('Invalid code point: ' + codePoint);\n }\n if (codePoint <= 0xFFFF) {\n // BMP code point\n return String.fromCharCode(codePoint);\n } else {\n // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000;\n var highSurrogate = (codePoint >> 10) + 0xD800;\n var lowSurrogate = codePoint % 0x400 + 0xDC00;\n return String.fromCharCode(highSurrogate, lowSurrogate);\n }\n }\n\n /*--------------------------------------------------------------------------*/\n\n // Ensures that nodes have the correct types.\n var assertTypeRegexMap = {};\n function assertType(type, expected) {\n if (expected.indexOf('|') == -1) {\n if (type == expected) {\n return;\n }\n throw Error('Invalid node type: ' + type + '; expected type: ' + expected);\n }\n expected = hasOwnProperty.call(assertTypeRegexMap, expected) ? assertTypeRegexMap[expected] : assertTypeRegexMap[expected] = RegExp('^(?:' + expected + ')$');\n if (expected.test(type)) {\n return;\n }\n throw Error('Invalid node type: ' + type + '; expected types: ' + expected);\n }\n\n /*--------------------------------------------------------------------------*/\n\n // Generates a regular expression string based on an AST.\n function generate(node) {\n var type = node.type;\n if (hasOwnProperty.call(generators, type)) {\n return generators[type](node);\n }\n throw Error('Invalid node type: ' + type);\n }\n\n // Constructs a string by concatentating the output of each term.\n function generateSequence(generator, terms) {\n var i = -1,\n length = terms.length,\n result = '',\n term;\n while (++i < length) {\n term = terms[i];\n\n // Ensure that `\\0` null escapes followed by number symbols are not\n // treated as backreferences.\n if (i + 1 < length && terms[i].type == 'value' && terms[i].kind == 'null' && terms[i + 1].type == 'value' && terms[i + 1].kind == 'symbol' && terms[i + 1].codePoint >= 48 && terms[i + 1].codePoint <= 57) {\n result += '\\\\000';\n continue;\n }\n result += generator(term);\n }\n return result;\n }\n\n /*--------------------------------------------------------------------------*/\n\n function generateAlternative(node) {\n assertType(node.type, 'alternative');\n return generateSequence(generateTerm, node.body);\n }\n function generateAnchor(node) {\n assertType(node.type, 'anchor');\n switch (node.kind) {\n case 'start':\n return '^';\n case 'end':\n return '$';\n case 'boundary':\n return '\\\\b';\n case 'not-boundary':\n return '\\\\B';\n default:\n throw Error('Invalid assertion');\n }\n }\n function generateAtom(node) {\n assertType(node.type, 'anchor|characterClass|characterClassEscape|dot|group|reference|value');\n return generate(node);\n }\n function generateCharacterClass(node) {\n assertType(node.type, 'characterClass');\n return '[' + (node.negative ? '^' : '') + generateSequence(generateClassAtom, node.body) + ']';\n }\n function generateCharacterClassEscape(node) {\n assertType(node.type, 'characterClassEscape');\n return '\\\\' + node.value;\n }\n function generateCharacterClassRange(node) {\n assertType(node.type, 'characterClassRange');\n var min = node.min,\n max = node.max;\n if (min.type == 'characterClassRange' || max.type == 'characterClassRange') {\n throw Error('Invalid character class range');\n }\n return generateClassAtom(min) + '-' + generateClassAtom(max);\n }\n function generateClassAtom(node) {\n assertType(node.type, 'anchor|characterClassEscape|characterClassRange|dot|value');\n return generate(node);\n }\n function generateDisjunction(node) {\n assertType(node.type, 'disjunction');\n var body = node.body,\n i = -1,\n length = body.length,\n result = '';\n while (++i < length) {\n if (i != 0) {\n result += '|';\n }\n result += generate(body[i]);\n }\n return result;\n }\n function generateDot(node) {\n assertType(node.type, 'dot');\n return '.';\n }\n function generateGroup(node) {\n assertType(node.type, 'group');\n var result = '';\n switch (node.behavior) {\n case 'normal':\n if (node.name) {\n result += '?<' + generateIdentifier(node.name) + '>';\n }\n break;\n case 'ignore':\n result += '?:';\n break;\n case 'lookahead':\n result += '?=';\n break;\n case 'negativeLookahead':\n result += '?!';\n break;\n case 'lookbehind':\n result += '?<=';\n break;\n case 'negativeLookbehind':\n result += '?';\n }\n throw new Error('Unknown reference type');\n }\n function generateTerm(node) {\n assertType(node.type, 'anchor|characterClass|characterClassEscape|empty|group|quantifier|reference|unicodePropertyEscape|value|dot');\n return generate(node);\n }\n function generateUnicodePropertyEscape(node) {\n assertType(node.type, 'unicodePropertyEscape');\n return '\\\\' + (node.negative ? 'P' : 'p') + '{' + node.value + '}';\n }\n function generateValue(node) {\n assertType(node.type, 'value');\n var kind = node.kind,\n codePoint = node.codePoint;\n if (typeof codePoint != 'number') {\n throw new Error('Invalid code point: ' + codePoint);\n }\n switch (kind) {\n case 'controlLetter':\n return '\\\\c' + fromCodePoint(codePoint + 64);\n case 'hexadecimalEscape':\n return '\\\\x' + ('00' + codePoint.toString(16).toUpperCase()).slice(-2);\n case 'identifier':\n return '\\\\' + fromCodePoint(codePoint);\n case 'null':\n return '\\\\' + codePoint;\n case 'octal':\n return '\\\\' + ('000' + codePoint.toString(8)).slice(-3);\n case 'singleEscape':\n switch (codePoint) {\n case 0x0008:\n return '\\\\b';\n case 0x0009:\n return '\\\\t';\n case 0x000A:\n return '\\\\n';\n case 0x000B:\n return '\\\\v';\n case 0x000C:\n return '\\\\f';\n case 0x000D:\n return '\\\\r';\n case 0x002D:\n return '\\\\-';\n default:\n throw Error('Invalid code point: ' + codePoint);\n }\n case 'symbol':\n return fromCodePoint(codePoint);\n case 'unicodeEscape':\n return '\\\\u' + ('0000' + codePoint.toString(16).toUpperCase()).slice(-4);\n case 'unicodeCodePointEscape':\n return '\\\\u{' + codePoint.toString(16).toUpperCase() + '}';\n default:\n throw Error('Unsupported node kind: ' + kind);\n }\n }\n\n /*--------------------------------------------------------------------------*/\n\n // Used to generate strings for each node type.\n var generators = {\n 'alternative': generateAlternative,\n 'anchor': generateAnchor,\n 'characterClass': generateCharacterClass,\n 'characterClassEscape': generateCharacterClassEscape,\n 'characterClassRange': generateCharacterClassRange,\n 'disjunction': generateDisjunction,\n 'dot': generateDot,\n 'group': generateGroup,\n 'quantifier': generateQuantifier,\n 'reference': generateReference,\n 'unicodePropertyEscape': generateUnicodePropertyEscape,\n 'value': generateValue\n };\n\n /*--------------------------------------------------------------------------*/\n\n // Export regjsgen.\n var regjsgen = {\n 'generate': generate\n };\n\n // Some AMD build optimizers, like r.js, check for condition patterns like the following:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Define as an anonymous module so it can be aliased through path mapping.\n define(function () {\n return regjsgen;\n });\n root.regjsgen = regjsgen;\n }\n // Check for `exports` after `define` in case a build optimizer adds an `exports` object.\n else if (freeExports && hasFreeModule) {\n // Export for CommonJS support.\n freeExports.generate = generate;\n } else {\n // Export to the global object.\n root.regjsgen = regjsgen;\n }\n}).call(this);","const set = require('regenerate')();\nset.addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10CFA, 0x10CFF);\nmodule.exports = set;","const set = require('regenerate')(0xB5, 0x101, 0x103, 0x105, 0x107, 0x109, 0x10B, 0x10D, 0x10F, 0x111, 0x113, 0x115, 0x117, 0x119, 0x11B, 0x11D, 0x11F, 0x121, 0x123, 0x125, 0x127, 0x129, 0x12B, 0x12D, 0x12F, 0x131, 0x133, 0x135, 0x137, 0x13A, 0x13C, 0x13E, 0x140, 0x142, 0x144, 0x146, 0x14B, 0x14D, 0x14F, 0x151, 0x153, 0x155, 0x157, 0x159, 0x15B, 0x15D, 0x15F, 0x161, 0x163, 0x165, 0x167, 0x169, 0x16B, 0x16D, 0x16F, 0x171, 0x173, 0x175, 0x177, 0x17A, 0x17C, 0x183, 0x185, 0x188, 0x18C, 0x192, 0x195, 0x19E, 0x1A1, 0x1A3, 0x1A5, 0x1A8, 0x1AD, 0x1B0, 0x1B4, 0x1B6, 0x1B9, 0x1BD, 0x1BF, 0x1C4, 0x1CC, 0x1CE, 0x1D0, 0x1D2, 0x1D4, 0x1D6, 0x1D8, 0x1DA, 0x1DF, 0x1E1, 0x1E3, 0x1E5, 0x1E7, 0x1E9, 0x1EB, 0x1ED, 0x1F3, 0x1F5, 0x1F9, 0x1FB, 0x1FD, 0x1FF, 0x201, 0x203, 0x205, 0x207, 0x209, 0x20B, 0x20D, 0x20F, 0x211, 0x213, 0x215, 0x217, 0x219, 0x21B, 0x21D, 0x21F, 0x223, 0x225, 0x227, 0x229, 0x22B, 0x22D, 0x22F, 0x231, 0x233, 0x23C, 0x242, 0x247, 0x249, 0x24B, 0x24D, 0x259, 0x263, 0x26F, 0x275, 0x27D, 0x280, 0x292, 0x345, 0x371, 0x373, 0x377, 0x390, 0x3D9, 0x3DB, 0x3DD, 0x3DF, 0x3E1, 0x3E3, 0x3E5, 0x3E7, 0x3E9, 0x3EB, 0x3ED, 0x3F5, 0x3F8, 0x3FB, 0x461, 0x463, 0x465, 0x467, 0x469, 0x46B, 0x46D, 0x46F, 0x471, 0x473, 0x475, 0x477, 0x479, 0x47B, 0x47D, 0x47F, 0x481, 0x48B, 0x48D, 0x48F, 0x491, 0x493, 0x495, 0x497, 0x499, 0x49B, 0x49D, 0x49F, 0x4A1, 0x4A3, 0x4A5, 0x4A7, 0x4A9, 0x4AB, 0x4AD, 0x4AF, 0x4B1, 0x4B3, 0x4B5, 0x4B7, 0x4B9, 0x4BB, 0x4BD, 0x4BF, 0x4C2, 0x4C4, 0x4C6, 0x4C8, 0x4CA, 0x4CC, 0x4D1, 0x4D3, 0x4D5, 0x4D7, 0x4D9, 0x4DB, 0x4DD, 0x4DF, 0x4E1, 0x4E3, 0x4E5, 0x4E7, 0x4E9, 0x4EB, 0x4ED, 0x4EF, 0x4F1, 0x4F3, 0x4F5, 0x4F7, 0x4F9, 0x4FB, 0x4FD, 0x4FF, 0x501, 0x503, 0x505, 0x507, 0x509, 0x50B, 0x50D, 0x50F, 0x511, 0x513, 0x515, 0x517, 0x519, 0x51B, 0x51D, 0x51F, 0x521, 0x523, 0x525, 0x527, 0x529, 0x52B, 0x52D, 0x52F, 0x1D79, 0x1D7D, 0x1D8E, 0x1E01, 0x1E03, 0x1E05, 0x1E07, 0x1E09, 0x1E0B, 0x1E0D, 0x1E0F, 0x1E11, 0x1E13, 0x1E15, 0x1E17, 0x1E19, 0x1E1B, 0x1E1D, 0x1E1F, 0x1E21, 0x1E23, 0x1E25, 0x1E27, 0x1E29, 0x1E2B, 0x1E2D, 0x1E2F, 0x1E31, 0x1E33, 0x1E35, 0x1E37, 0x1E39, 0x1E3B, 0x1E3D, 0x1E3F, 0x1E41, 0x1E43, 0x1E45, 0x1E47, 0x1E49, 0x1E4B, 0x1E4D, 0x1E4F, 0x1E51, 0x1E53, 0x1E55, 0x1E57, 0x1E59, 0x1E5B, 0x1E5D, 0x1E5F, 0x1E61, 0x1E63, 0x1E65, 0x1E67, 0x1E69, 0x1E6B, 0x1E6D, 0x1E6F, 0x1E71, 0x1E73, 0x1E75, 0x1E77, 0x1E79, 0x1E7B, 0x1E7D, 0x1E7F, 0x1E81, 0x1E83, 0x1E85, 0x1E87, 0x1E89, 0x1E8B, 0x1E8D, 0x1E8F, 0x1E91, 0x1E93, 0x1EA1, 0x1EA3, 0x1EA5, 0x1EA7, 0x1EA9, 0x1EAB, 0x1EAD, 0x1EAF, 0x1EB1, 0x1EB3, 0x1EB5, 0x1EB7, 0x1EB9, 0x1EBB, 0x1EBD, 0x1EBF, 0x1EC1, 0x1EC3, 0x1EC5, 0x1EC7, 0x1EC9, 0x1ECB, 0x1ECD, 0x1ECF, 0x1ED1, 0x1ED3, 0x1ED5, 0x1ED7, 0x1ED9, 0x1EDB, 0x1EDD, 0x1EDF, 0x1EE1, 0x1EE3, 0x1EE5, 0x1EE7, 0x1EE9, 0x1EEB, 0x1EED, 0x1EEF, 0x1EF1, 0x1EF3, 0x1EF5, 0x1EF7, 0x1EF9, 0x1EFB, 0x1EFD, 0x1FBE, 0x214E, 0x2184, 0x2C61, 0x2C68, 0x2C6A, 0x2C6C, 0x2C73, 0x2C76, 0x2C81, 0x2C83, 0x2C85, 0x2C87, 0x2C89, 0x2C8B, 0x2C8D, 0x2C8F, 0x2C91, 0x2C93, 0x2C95, 0x2C97, 0x2C99, 0x2C9B, 0x2C9D, 0x2C9F, 0x2CA1, 0x2CA3, 0x2CA5, 0x2CA7, 0x2CA9, 0x2CAB, 0x2CAD, 0x2CAF, 0x2CB1, 0x2CB3, 0x2CB5, 0x2CB7, 0x2CB9, 0x2CBB, 0x2CBD, 0x2CBF, 0x2CC1, 0x2CC3, 0x2CC5, 0x2CC7, 0x2CC9, 0x2CCB, 0x2CCD, 0x2CCF, 0x2CD1, 0x2CD3, 0x2CD5, 0x2CD7, 0x2CD9, 0x2CDB, 0x2CDD, 0x2CDF, 0x2CE1, 0x2CE3, 0x2CEC, 0x2CEE, 0x2CF3, 0x2D27, 0x2D2D, 0xA641, 0xA643, 0xA645, 0xA647, 0xA649, 0xA64B, 0xA64D, 0xA64F, 0xA651, 0xA653, 0xA655, 0xA657, 0xA659, 0xA65B, 0xA65D, 0xA65F, 0xA661, 0xA663, 0xA665, 0xA667, 0xA669, 0xA66B, 0xA66D, 0xA681, 0xA683, 0xA685, 0xA687, 0xA689, 0xA68B, 0xA68D, 0xA68F, 0xA691, 0xA693, 0xA695, 0xA697, 0xA699, 0xA69B, 0xA723, 0xA725, 0xA727, 0xA729, 0xA72B, 0xA72D, 0xA72F, 0xA733, 0xA735, 0xA737, 0xA739, 0xA73B, 0xA73D, 0xA73F, 0xA741, 0xA743, 0xA745, 0xA747, 0xA749, 0xA74B, 0xA74D, 0xA74F, 0xA751, 0xA753, 0xA755, 0xA757, 0xA759, 0xA75B, 0xA75D, 0xA75F, 0xA761, 0xA763, 0xA765, 0xA767, 0xA769, 0xA76B, 0xA76D, 0xA76F, 0xA77A, 0xA77C, 0xA77F, 0xA781, 0xA783, 0xA785, 0xA787, 0xA78C, 0xA791, 0xA797, 0xA799, 0xA79B, 0xA79D, 0xA79F, 0xA7A1, 0xA7A3, 0xA7A5, 0xA7A7, 0xA7A9, 0xA7B5, 0xA7B7, 0xA7B9, 0xA7BB, 0xA7BD, 0xA7BF, 0xA7C1, 0xA7C3, 0xA7C8, 0xA7CA, 0xA7D1, 0xA7D7, 0xA7D9, 0xA7F6, 0xAB53);\nset.addRange(0x61, 0x7A).addRange(0xDF, 0xF6).addRange(0xF8, 0xFF).addRange(0x148, 0x149).addRange(0x17E, 0x180).addRange(0x199, 0x19A).addRange(0x1C6, 0x1C7).addRange(0x1C9, 0x1CA).addRange(0x1DC, 0x1DD).addRange(0x1EF, 0x1F1).addRange(0x23F, 0x240).addRange(0x24F, 0x254).addRange(0x256, 0x257).addRange(0x25B, 0x25C).addRange(0x260, 0x261).addRange(0x265, 0x266).addRange(0x268, 0x26C).addRange(0x271, 0x272).addRange(0x282, 0x283).addRange(0x287, 0x28C).addRange(0x29D, 0x29E).addRange(0x37B, 0x37D).addRange(0x3AC, 0x3CE).addRange(0x3D0, 0x3D1).addRange(0x3D5, 0x3D7).addRange(0x3EF, 0x3F3).addRange(0x430, 0x45F).addRange(0x4CE, 0x4CF).addRange(0x561, 0x587).addRange(0x13F8, 0x13FD).addRange(0x1C80, 0x1C88).addRange(0x1E95, 0x1E9B).addRange(0x1EFF, 0x1F07).addRange(0x1F10, 0x1F15).addRange(0x1F20, 0x1F27).addRange(0x1F30, 0x1F37).addRange(0x1F40, 0x1F45).addRange(0x1F50, 0x1F57).addRange(0x1F60, 0x1F67).addRange(0x1F70, 0x1F7D).addRange(0x1F80, 0x1F87).addRange(0x1F90, 0x1F97).addRange(0x1FA0, 0x1FA7).addRange(0x1FB0, 0x1FB4).addRange(0x1FB6, 0x1FB7).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FC7).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FD7).addRange(0x1FE0, 0x1FE7).addRange(0x1FF2, 0x1FF4);\nset.addRange(0x1FF6, 0x1FF7).addRange(0x2170, 0x217F).addRange(0x24D0, 0x24E9).addRange(0x2C30, 0x2C5F).addRange(0x2C65, 0x2C66).addRange(0x2D00, 0x2D25).addRange(0xA793, 0xA794).addRange(0xAB70, 0xABBF).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFF41, 0xFF5A).addRange(0x10428, 0x1044F).addRange(0x104D8, 0x104FB).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10CC0, 0x10CF2).addRange(0x118C0, 0x118DF).addRange(0x16E60, 0x16E7F).addRange(0x1E922, 0x1E943);\nmodule.exports = set;","import React, { createElement } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { publicLoader } from \"./loader\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport { grabMatchParams } from \"./find-path\"\n\n// Renders page\nclass PageRenderer extends React.Component {\n render() {\n const props = {\n ...this.props,\n params: {\n ...grabMatchParams(this.props.location.pathname),\n ...this.props.pageResources.json.pageContext.__params,\n },\n pathContext: this.props.pageContext,\n }\n\n const [replacementElement] = apiRunner(`replaceComponentRenderer`, {\n props: this.props,\n loader: publicLoader,\n })\n\n const pageElement =\n replacementElement ||\n createElement(this.props.pageResources.component, {\n ...props,\n key: this.props.path || this.props.pageResources.page.path,\n })\n\n const wrappedPage = apiRunner(\n `wrapPageElement`,\n { element: pageElement, props },\n pageElement,\n ({ result }) => {\n return { element: result, props }\n }\n ).pop()\n\n return wrappedPage\n }\n}\n\nPageRenderer.propTypes = {\n location: PropTypes.object.isRequired,\n pageResources: PropTypes.object.isRequired,\n data: PropTypes.object,\n pageContext: PropTypes.object.isRequired,\n}\n\nexport default PageRenderer\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","const set = require('regenerate')();\nset.addRange(0xFDD0, 0xFDEF).addRange(0xFFFE, 0xFFFF).addRange(0x1FFFE, 0x1FFFF).addRange(0x2FFFE, 0x2FFFF).addRange(0x3FFFE, 0x3FFFF).addRange(0x4FFFE, 0x4FFFF).addRange(0x5FFFE, 0x5FFFF).addRange(0x6FFFE, 0x6FFFF).addRange(0x7FFFE, 0x7FFFF).addRange(0x8FFFE, 0x8FFFF).addRange(0x9FFFE, 0x9FFFF).addRange(0xAFFFE, 0xAFFFF).addRange(0xBFFFE, 0xBFFFF).addRange(0xCFFFE, 0xCFFFF).addRange(0xDFFFE, 0xDFFFF).addRange(0xEFFFE, 0xEFFFF).addRange(0xFFFFE, 0xFFFFF).addRange(0x10FFFE, 0x10FFFF);\nmodule.exports = set;","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar fails = require('../internals/fails');\nvar aCallable = require('../internals/a-callable');\nvar internalSort = require('../internals/array-sort');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar Uint16Array = global.Uint16Array;\nvar nativeSort = Uint16Array && uncurryThis(Uint16Array.prototype.sort);\n\n// WebKit\nvar ACCEPT_INCORRECT_ARGUMENTS = !!nativeSort && !(fails(function () {\n nativeSort(new Uint16Array(2), null);\n}) && fails(function () {\n nativeSort(new Uint16Array(2), {});\n}));\n\nvar STABLE_SORT = !!nativeSort && !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 74;\n if (FF) return FF < 67;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 602;\n\n var array = new Uint16Array(516);\n var expected = Array(516);\n var index, mod;\n\n for (index = 0; index < 516; index++) {\n mod = index % 4;\n array[index] = 515 - index;\n expected[index] = index - 2 * mod + 3;\n }\n\n nativeSort(array, function (a, b) {\n return (a / 4 | 0) - (b / 4 | 0);\n });\n\n for (index = 0; index < 516; index++) {\n if (array[index] !== expected[index]) return true;\n }\n});\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (y !== y) return -1;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (x !== x) return 1;\n if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;\n return x > y;\n };\n};\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n if (STABLE_SORT) return nativeSort(this, comparefn);\n\n return internalSort(aTypedArray(this), getSortCompare(comparefn));\n}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);\n","module.exports = {\n 'ary': require('../ary'),\n 'assign': require('../_baseAssign'),\n 'clone': require('../clone'),\n 'curry': require('../curry'),\n 'forEach': require('../_arrayEach'),\n 'isArray': require('../isArray'),\n 'isError': require('../isError'),\n 'isFunction': require('../isFunction'),\n 'isWeakMap': require('../isWeakMap'),\n 'iteratee': require('../iteratee'),\n 'keys': require('../_baseKeys'),\n 'rearg': require('../rearg'),\n 'toInteger': require('../toInteger'),\n 'toPath': require('../toPath')\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FrameContextConsumer = exports.FrameContext = undefined;\nvar _Context = require('./Context');\nObject.defineProperty(exports, 'FrameContext', {\n enumerable: true,\n get: function get() {\n return _Context.FrameContext;\n }\n});\nObject.defineProperty(exports, 'FrameContextConsumer', {\n enumerable: true,\n get: function get() {\n return _Context.FrameContextConsumer;\n }\n});\nvar _Frame = require('./Frame');\nvar _Frame2 = _interopRequireDefault(_Frame);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nexports.default = _Frame2.default;","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","const set = require('regenerate')();\nset.addRange(0xAA80, 0xAAC2).addRange(0xAADB, 0xAADF);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0xAAE0, 0xAAF6).addRange(0xABC0, 0xABED).addRange(0xABF0, 0xABF9);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x10A00, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A38, 0x10A3A).addRange(0x10A3F, 0x10A48).addRange(0x10A50, 0x10A58);\nmodule.exports = set;","const set = require('regenerate')(0x5F, 0x2054, 0xFF3F);\nset.addRange(0x203F, 0x2040).addRange(0xFE33, 0xFE34).addRange(0xFE4D, 0xFE4F);\nmodule.exports = set;","const set = require('regenerate')(0x11D3A);\nset.addRange(0x964, 0x965).addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D47).addRange(0x11D50, 0x11D59);\nmodule.exports = set;","require('../../modules/es.object.assign');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.assign;\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","const set = require('regenerate')(0x118FF);\nset.addRange(0x118A0, 0x118F2);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x1A00, 0x1A1B).addRange(0x1A1E, 0x1A1F);\nmodule.exports = set;","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","const set = require('regenerate')(0x3030, 0x3037, 0x30FB);\nset.addRange(0x2EA, 0x2EB).addRange(0x3001, 0x3003).addRange(0x3008, 0x3011).addRange(0x3013, 0x301F).addRange(0x302A, 0x302D).addRange(0x3105, 0x312F).addRange(0x31A0, 0x31BF).addRange(0xFE45, 0xFE46).addRange(0xFF61, 0xFF65);\nmodule.exports = set;","const set = require('regenerate')(0x16FE1);\nset.addRange(0x1B170, 0x1B2FB);\nmodule.exports = set;","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","import * as React from 'react';\nexport default {\n React\n};","const set = require('regenerate')(0xB5, 0x37F, 0x386, 0x38C, 0x10C7, 0x10CD, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x2139, 0x214E, 0x2D27, 0x2D2D, 0xA7D3, 0xA7FA, 0x1D4A2, 0x1D4BB, 0x1D546);\nset.addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x1BA).addRange(0x1BC, 0x1BF).addRange(0x1C4, 0x293).addRange(0x295, 0x2AF).addRange(0x370, 0x373).addRange(0x376, 0x377).addRange(0x37B, 0x37D).addRange(0x388, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3F5).addRange(0x3F7, 0x481).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x560, 0x588).addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FD, 0x10FF).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1D00, 0x1D2B).addRange(0x1D6B, 0x1D77).addRange(0x1D79, 0x1D9A).addRange(0x1E00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FBC).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FCC).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FE0, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFC).addRange(0x210A, 0x2113).addRange(0x2119, 0x211D).addRange(0x212A, 0x212D).addRange(0x212F, 0x2134).addRange(0x213C, 0x213F).addRange(0x2145, 0x2149).addRange(0x2183, 0x2184);\nset.addRange(0x2C00, 0x2C7B).addRange(0x2C7E, 0x2CE4).addRange(0x2CEB, 0x2CEE).addRange(0x2CF2, 0x2CF3).addRange(0x2D00, 0x2D25).addRange(0xA640, 0xA66D).addRange(0xA680, 0xA69B).addRange(0xA722, 0xA76F).addRange(0xA771, 0xA787).addRange(0xA78B, 0xA78E).addRange(0xA790, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F5, 0xA7F6).addRange(0xAB30, 0xAB5A).addRange(0xAB60, 0xAB68).addRange(0xAB70, 0xABBF).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0x10400, 0x1044F).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x118A0, 0x118DF).addRange(0x16E40, 0x16E7F).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550);\nset.addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6FA).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D734).addRange(0x1D736, 0x1D74E).addRange(0x1D750, 0x1D76E).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D7A8).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7CB).addRange(0x1DF00, 0x1DF09).addRange(0x1DF0B, 0x1DF1E).addRange(0x1E900, 0x1E943);\nmodule.exports = set;","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","const set = require('regenerate')(0x118FF);\nset.addRange(0x118A0, 0x118F2);\nmodule.exports = set;","/** Used to lookup unminified function names. */\nvar realNames = {};\n\nmodule.exports = realNames;\n","// regjsparser\n//\n// ==================================================================\n//\n// See ECMA-262 Standard: 15.10.1\n//\n// NOTE: The ECMA-262 standard uses the term \"Assertion\" for /^/. Here the\n// term \"Anchor\" is used.\n//\n// Pattern ::\n// Disjunction\n//\n// Disjunction ::\n// Alternative\n// Alternative | Disjunction\n//\n// Alternative ::\n// [empty]\n// Alternative Term\n//\n// Term ::\n// Anchor\n// Atom\n// Atom Quantifier\n//\n// Anchor ::\n// ^\n// $\n// \\ b\n// \\ B\n// ( ? = Disjunction )\n// ( ? ! Disjunction )\n// ( ? < = Disjunction )\n// ( ? < ! Disjunction )\n//\n// Quantifier ::\n// QuantifierPrefix\n// QuantifierPrefix ?\n//\n// QuantifierPrefix ::\n// *\n// +\n// ?\n// { DecimalDigits }\n// { DecimalDigits , }\n// { DecimalDigits , DecimalDigits }\n//\n// Atom ::\n// PatternCharacter\n// .\n// \\ AtomEscape\n// CharacterClass\n// ( GroupSpecifier Disjunction )\n// ( ? : Disjunction )\n//\n// PatternCharacter ::\n// SourceCharacter but not any of: ^ $ \\ . * + ? ( ) [ ] { } |\n//\n// AtomEscape ::\n// DecimalEscape\n// CharacterClassEscape\n// CharacterEscape\n// k GroupName\n//\n// CharacterEscape[U] ::\n// ControlEscape\n// c ControlLetter\n// HexEscapeSequence\n// RegExpUnicodeEscapeSequence[?U] (ES6)\n// IdentityEscape[?U]\n//\n// ControlEscape ::\n// one of f n r t v\n// ControlLetter ::\n// one of\n// a b c d e f g h i j k l m n o p q r s t u v w x y z\n// A B C D E F G H I J K L M N O P Q R S T U V W X Y Z\n//\n// IdentityEscape ::\n// SourceCharacter but not c\n//\n// DecimalEscape ::\n// DecimalIntegerLiteral [lookahead ∉ DecimalDigit]\n//\n// CharacterClassEscape ::\n// one of d D s S w W\n//\n// CharacterClass ::\n// [ [lookahead ∉ {^}] ClassRanges ]\n// [ ^ ClassRanges ]\n//\n// ClassRanges ::\n// [empty]\n// [~V] NonemptyClassRanges\n// [+V] ClassContents\n//\n// NonemptyClassRanges ::\n// ClassAtom\n// ClassAtom NonemptyClassRangesNoDash\n// ClassAtom - ClassAtom ClassRanges\n//\n// NonemptyClassRangesNoDash ::\n// ClassAtom\n// ClassAtomNoDash NonemptyClassRangesNoDash\n// ClassAtomNoDash - ClassAtom ClassRanges\n//\n// ClassAtom ::\n// -\n// ClassAtomNoDash\n//\n// ClassAtomNoDash ::\n// SourceCharacter but not one of \\ or ] or -\n// \\ ClassEscape\n//\n// ClassEscape ::\n// DecimalEscape\n// b\n// CharacterEscape\n// CharacterClassEscape\n//\n// GroupSpecifier ::\n// [empty]\n// ? GroupName\n//\n// GroupName ::\n// < RegExpIdentifierName >\n//\n// RegExpIdentifierName ::\n// RegExpIdentifierStart\n// RegExpIdentifierName RegExpIdentifierContinue\n//\n// RegExpIdentifierStart ::\n// UnicodeIDStart\n// $\n// _\n// \\ RegExpUnicodeEscapeSequence\n//\n// RegExpIdentifierContinue ::\n// UnicodeIDContinue\n// $\n// _\n// \\ RegExpUnicodeEscapeSequence\n// \n// \n//\n// --------------------------------------------------------------\n// NOTE: The following productions refer to the \"set notation and\n// properties of strings\" proposal.\n// https://github.com/tc39/proposal-regexp-set-notation\n// --------------------------------------------------------------\n//\n// ClassContents ::\n// ClassUnion\n// ClassIntersection\n// ClassSubtraction\n//\n// ClassUnion ::\n// ClassRange ClassUnion?\n// ClassOperand ClassUnion?\n//\n// ClassIntersection ::\n// ClassOperand && [lookahead ≠ &] ClassOperand\n// ClassIntersection && [lookahead ≠ &] ClassOperand\n//\n// ClassSubtraction ::\n// ClassOperand -- ClassOperand\n// ClassSubtraction -- ClassOperand\n//\n// ClassOperand ::\n// ClassCharacter\n// ClassStrings\n// NestedClass\n//\n// NestedClass ::\n// [ [lookahead ≠ ^] ClassRanges[+U,+V] ]\n// [ ^ ClassRanges[+U,+V] ]\n// \\ CharacterClassEscape[+U, +V]\n//\n// ClassRange ::\n// ClassCharacter - ClassCharacter\n//\n// ClassCharacter ::\n// [lookahead ∉ ClassReservedDouble] SourceCharacter but not ClassSyntaxCharacter\n// \\ CharacterEscape[+U]\n// \\ ClassHalfOfDouble\n// \\ b\n//\n// ClassSyntaxCharacter ::\n// one of ( ) [ ] { } / - \\ |\n//\n// ClassStrings ::\n// ( ClassString MoreClassStrings? )\n//\n// MoreClassStrings ::\n// | ClassString MoreClassStrings?\n//\n// ClassString ::\n// [empty]\n// NonEmptyClassString\n//\n// NonEmptyClassString ::\n// ClassCharacter NonEmptyClassString?\n//\n// ClassReservedDouble ::\n// one of && !! ## $$ %% ** ++ ,, .. :: ;; << == >> ?? @@ ^^ __ `` ~~\n//\n// ClassHalfOfDouble ::\n// one of & - ! # % , : ; < = > @ _ ` ~\n//\n\n(function () {\n var fromCodePoint = String.fromCodePoint || function () {\n // Implementation taken from\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint\n\n var stringFromCharCode = String.fromCharCode;\n var floor = Math.floor;\n return function fromCodePoint() {\n var MAX_SIZE = 0x4000;\n var codeUnits = [];\n var highSurrogate;\n var lowSurrogate;\n var index = -1;\n var length = arguments.length;\n if (!length) {\n return '';\n }\n var result = '';\n while (++index < length) {\n var codePoint = Number(arguments[index]);\n if (!isFinite(codePoint) ||\n // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 ||\n // not a valid Unicode code point\n codePoint > 0x10FFFF ||\n // not a valid Unicode code point\n floor(codePoint) != codePoint // not an integer\n ) {\n throw RangeError('Invalid code point: ' + codePoint);\n }\n if (codePoint <= 0xFFFF) {\n // BMP code point\n codeUnits.push(codePoint);\n } else {\n // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000;\n highSurrogate = (codePoint >> 10) + 0xD800;\n lowSurrogate = codePoint % 0x400 + 0xDC00;\n codeUnits.push(highSurrogate, lowSurrogate);\n }\n if (index + 1 == length || codeUnits.length > MAX_SIZE) {\n result += stringFromCharCode.apply(null, codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n };\n }();\n function parse(str, flags, features) {\n if (!features) {\n features = {};\n }\n function addRaw(node) {\n node.raw = str.substring(node.range[0], node.range[1]);\n return node;\n }\n function updateRawStart(node, start) {\n node.range[0] = start;\n return addRaw(node);\n }\n function createAnchor(kind, rawLength) {\n return addRaw({\n type: 'anchor',\n kind: kind,\n range: [pos - rawLength, pos]\n });\n }\n function createValue(kind, codePoint, from, to) {\n return addRaw({\n type: 'value',\n kind: kind,\n codePoint: codePoint,\n range: [from, to]\n });\n }\n function createEscaped(kind, codePoint, value, fromOffset) {\n fromOffset = fromOffset || 0;\n return createValue(kind, codePoint, pos - (value.length + fromOffset), pos);\n }\n function createCharacter(matches) {\n var _char = matches[0];\n var first = _char.charCodeAt(0);\n if (hasUnicodeFlag) {\n var second;\n if (_char.length === 1 && first >= 0xD800 && first <= 0xDBFF) {\n second = lookahead().charCodeAt(0);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n // Unicode surrogate pair\n pos++;\n return createValue('symbol', (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000, pos - 2, pos);\n }\n }\n }\n return createValue('symbol', first, pos - 1, pos);\n }\n function createDisjunction(alternatives, from, to) {\n return addRaw({\n type: 'disjunction',\n body: alternatives,\n range: [from, to]\n });\n }\n function createDot() {\n return addRaw({\n type: 'dot',\n range: [pos - 1, pos]\n });\n }\n function createCharacterClassEscape(value) {\n return addRaw({\n type: 'characterClassEscape',\n value: value,\n range: [pos - 2, pos]\n });\n }\n function createReference(matchIndex) {\n return addRaw({\n type: 'reference',\n matchIndex: parseInt(matchIndex, 10),\n range: [pos - 1 - matchIndex.length, pos]\n });\n }\n function createNamedReference(name) {\n return addRaw({\n type: 'reference',\n name: name,\n range: [name.range[0] - 3, pos]\n });\n }\n function createGroup(behavior, disjunction, from, to) {\n return addRaw({\n type: 'group',\n behavior: behavior,\n body: disjunction,\n range: [from, to]\n });\n }\n function createQuantifier(min, max, from, to) {\n if (to == null) {\n from = pos - 1;\n to = pos;\n }\n return addRaw({\n type: 'quantifier',\n min: min,\n max: max,\n greedy: true,\n body: null,\n // set later on\n range: [from, to]\n });\n }\n function createAlternative(terms, from, to) {\n return addRaw({\n type: 'alternative',\n body: terms,\n range: [from, to]\n });\n }\n function createCharacterClass(contents, negative, from, to) {\n return addRaw({\n type: 'characterClass',\n kind: contents.kind,\n body: contents.body,\n negative: negative,\n range: [from, to]\n });\n }\n function createClassRange(min, max, from, to) {\n // See 15.10.2.15:\n if (min.codePoint > max.codePoint) {\n bail('invalid range in character class', min.raw + '-' + max.raw, from, to);\n }\n return addRaw({\n type: 'characterClassRange',\n min: min,\n max: max,\n range: [from, to]\n });\n }\n function createClassStrings(strings, from, to) {\n return addRaw({\n type: 'classStrings',\n strings: strings,\n range: [from, to]\n });\n }\n function createClassString(characters, from, to) {\n return addRaw({\n type: 'classString',\n characters: characters,\n range: [from, to]\n });\n }\n function flattenBody(body) {\n if (body.type === 'alternative') {\n return body.body;\n } else {\n return [body];\n }\n }\n function incr(amount) {\n amount = amount || 1;\n var res = str.substring(pos, pos + amount);\n pos += amount || 1;\n return res;\n }\n function skip(value) {\n if (!match(value)) {\n bail('character', value);\n }\n }\n function match(value) {\n if (str.indexOf(value, pos) === pos) {\n return incr(value.length);\n }\n }\n function lookahead() {\n return str[pos];\n }\n function current(value) {\n return str.indexOf(value, pos) === pos;\n }\n function next(value) {\n return str[pos + 1] === value;\n }\n function matchReg(regExp) {\n var subStr = str.substring(pos);\n var res = subStr.match(regExp);\n if (res) {\n res.range = [];\n res.range[0] = pos;\n incr(res[0].length);\n res.range[1] = pos;\n }\n return res;\n }\n function parseDisjunction() {\n // Disjunction ::\n // Alternative\n // Alternative | Disjunction\n var res = [],\n from = pos;\n res.push(parseAlternative());\n while (match('|')) {\n res.push(parseAlternative());\n }\n if (res.length === 1) {\n return res[0];\n }\n return createDisjunction(res, from, pos);\n }\n function parseAlternative() {\n var res = [],\n from = pos;\n var term;\n\n // Alternative ::\n // [empty]\n // Alternative Term\n while (term = parseTerm()) {\n res.push(term);\n }\n if (res.length === 1) {\n return res[0];\n }\n return createAlternative(res, from, pos);\n }\n function parseTerm() {\n // Term ::\n // Anchor\n // Atom\n // Atom Quantifier\n\n if (pos >= str.length || current('|') || current(')')) {\n return null; /* Means: The term is empty */\n }\n\n var anchor = parseAnchor();\n if (anchor) {\n return anchor;\n }\n var atom = parseAtomAndExtendedAtom();\n if (!atom) {\n // Check if a quantifier is following. A quantifier without an atom\n // is an error.\n pos_backup = pos;\n var quantifier = parseQuantifier() || false;\n if (quantifier) {\n pos = pos_backup;\n bail('Expected atom');\n }\n\n // If no unicode flag, then try to parse ExtendedAtom -> ExtendedPatternCharacter.\n // ExtendedPatternCharacter\n if (!hasUnicodeFlag && (res = matchReg(/^{/))) {\n atom = createCharacter(res);\n } else {\n bail('Expected atom');\n }\n }\n var quantifier = parseQuantifier() || false;\n if (quantifier) {\n quantifier.body = flattenBody(atom);\n // The quantifier contains the atom. Therefore, the beginning of the\n // quantifier range is given by the beginning of the atom.\n updateRawStart(quantifier, atom.range[0]);\n return quantifier;\n }\n return atom;\n }\n function parseGroup(matchA, typeA, matchB, typeB) {\n var type = null,\n from = pos;\n if (match(matchA)) {\n type = typeA;\n } else if (match(matchB)) {\n type = typeB;\n } else {\n return false;\n }\n return finishGroup(type, from);\n }\n function finishGroup(type, from) {\n var body = parseDisjunction();\n if (!body) {\n bail('Expected disjunction');\n }\n skip(')');\n var group = createGroup(type, flattenBody(body), from, pos);\n if (type == 'normal') {\n // Keep track of the number of closed groups. This is required for\n // parseDecimalEscape(). In case the string is parsed a second time the\n // value already holds the total count and no incrementation is required.\n if (firstIteration) {\n closedCaptureCounter++;\n }\n }\n return group;\n }\n function parseAnchor() {\n // Anchor ::\n // ^\n // $\n // \\ b\n // \\ B\n // ( ? = Disjunction )\n // ( ? ! Disjunction )\n var res,\n from = pos;\n if (match('^')) {\n return createAnchor('start', 1 /* rawLength */);\n } else if (match('$')) {\n return createAnchor('end', 1 /* rawLength */);\n } else if (match('\\\\b')) {\n return createAnchor('boundary', 2 /* rawLength */);\n } else if (match('\\\\B')) {\n return createAnchor('not-boundary', 2 /* rawLength */);\n } else {\n return parseGroup('(?=', 'lookahead', '(?!', 'negativeLookahead');\n }\n }\n function parseQuantifier() {\n // Quantifier ::\n // QuantifierPrefix\n // QuantifierPrefix ?\n //\n // QuantifierPrefix ::\n // *\n // +\n // ?\n // { DecimalDigits }\n // { DecimalDigits , }\n // { DecimalDigits , DecimalDigits }\n\n var res,\n from = pos;\n var quantifier;\n var min, max;\n if (match('*')) {\n quantifier = createQuantifier(0);\n } else if (match('+')) {\n quantifier = createQuantifier(1);\n } else if (match('?')) {\n quantifier = createQuantifier(0, 1);\n } else if (res = matchReg(/^\\{([0-9]+)\\}/)) {\n min = parseInt(res[1], 10);\n quantifier = createQuantifier(min, min, res.range[0], res.range[1]);\n } else if (res = matchReg(/^\\{([0-9]+),\\}/)) {\n min = parseInt(res[1], 10);\n quantifier = createQuantifier(min, undefined, res.range[0], res.range[1]);\n } else if (res = matchReg(/^\\{([0-9]+),([0-9]+)\\}/)) {\n min = parseInt(res[1], 10);\n max = parseInt(res[2], 10);\n if (min > max) {\n bail('numbers out of order in {} quantifier', '', from, pos);\n }\n quantifier = createQuantifier(min, max, res.range[0], res.range[1]);\n }\n if (quantifier) {\n if (match('?')) {\n quantifier.greedy = false;\n quantifier.range[1] += 1;\n }\n }\n return quantifier;\n }\n function parseAtomAndExtendedAtom() {\n // Parsing Atom and ExtendedAtom together due to redundancy.\n // ExtendedAtom is defined in Apendix B of the ECMA-262 standard.\n //\n // SEE: https://www.ecma-international.org/ecma-262/10.0/index.html#prod-annexB-ExtendedPatternCharacter\n //\n // Atom ::\n // PatternCharacter\n // .\n // \\ AtomEscape\n // CharacterClass\n // ( GroupSpecifier Disjunction )\n // ( ? : Disjunction )\n // ExtendedAtom ::\n // ExtendedPatternCharacter\n // ExtendedPatternCharacter ::\n // SourceCharacter but not one of ^$\\.*+?()[|\n\n var res;\n\n // jviereck: allow ']', '}' here as well to be compatible with browser's\n // implementations: ']'.match(/]/);\n if (res = matchReg(/^[^^$\\\\.*+?()[\\]{}|]/)) {\n // PatternCharacter\n return createCharacter(res);\n } else if (!hasUnicodeFlag && (res = matchReg(/^(?:]|})/))) {\n // ExtendedPatternCharacter, first part. See parseTerm.\n return createCharacter(res);\n } else if (match('.')) {\n // .\n return createDot();\n } else if (match('\\\\')) {\n // \\ AtomEscape\n res = parseAtomEscape();\n if (!res) {\n if (!hasUnicodeFlag && lookahead() == 'c') {\n // B.1.4 ExtendedAtom\n // \\[lookahead = c]\n return createValue('symbol', 92, pos - 1, pos);\n }\n bail('atomEscape');\n }\n return res;\n } else if (res = parseCharacterClass()) {\n return res;\n } else if (features.lookbehind && (res = parseGroup('(?<=', 'lookbehind', '(?\");\n var group = finishGroup(\"normal\", name.range[0] - 3);\n group.name = name;\n return group;\n } else {\n // ( Disjunction )\n // ( ? : Disjunction )\n return parseGroup('(?:', 'ignore', '(', 'normal');\n }\n }\n function parseUnicodeSurrogatePairEscape(firstEscape) {\n if (hasUnicodeFlag) {\n var first, second;\n if (firstEscape.kind == 'unicodeEscape' && (first = firstEscape.codePoint) >= 0xD800 && first <= 0xDBFF && current('\\\\') && next('u')) {\n var prevPos = pos;\n pos++;\n var secondEscape = parseClassEscape();\n if (secondEscape.kind == 'unicodeEscape' && (second = secondEscape.codePoint) >= 0xDC00 && second <= 0xDFFF) {\n // Unicode surrogate pair\n firstEscape.range[1] = secondEscape.range[1];\n firstEscape.codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n firstEscape.type = 'value';\n firstEscape.kind = 'unicodeCodePointEscape';\n addRaw(firstEscape);\n } else {\n pos = prevPos;\n }\n }\n }\n return firstEscape;\n }\n function parseClassEscape() {\n return parseAtomEscape(true);\n }\n function parseAtomEscape(insideCharacterClass) {\n // AtomEscape ::\n // DecimalEscape\n // CharacterEscape\n // CharacterClassEscape\n // k GroupName\n\n var res,\n from = pos;\n res = parseDecimalEscape() || parseNamedReference();\n if (res) {\n return res;\n }\n\n // For ClassEscape\n if (insideCharacterClass) {\n // b\n if (match('b')) {\n // 15.10.2.19\n // The production ClassEscape :: b evaluates by returning the\n // CharSet containing the one character (Unicode value 0008).\n return createEscaped('singleEscape', 0x0008, '\\\\b');\n } else if (match('B')) {\n bail('\\\\B not possible inside of CharacterClass', '', from);\n } else if (!hasUnicodeFlag && (res = matchReg(/^c([0-9])/))) {\n // B.1.4\n // c ClassControlLetter, ClassControlLetter = DecimalDigit\n return createEscaped('controlLetter', res[1] + 16, res[1], 2);\n } else if (!hasUnicodeFlag && (res = matchReg(/^c_/))) {\n // B.1.4\n // c ClassControlLetter, ClassControlLetter = _\n return createEscaped('controlLetter', 31, '_', 2);\n }\n // [+U] -\n if (hasUnicodeFlag && match('-')) {\n return createEscaped('singleEscape', 0x002d, '\\\\-');\n }\n }\n res = parseCharacterClassEscape() || parseCharacterEscape();\n return res;\n }\n function parseDecimalEscape() {\n // DecimalEscape ::\n // DecimalIntegerLiteral [lookahead ∉ DecimalDigit]\n\n var res, match;\n if (res = matchReg(/^(?!0)\\d+/)) {\n match = res[0];\n var refIdx = parseInt(res[0], 10);\n if (refIdx <= closedCaptureCounter) {\n // If the number is smaller than the normal-groups found so\n // far, then it is a reference...\n return createReference(res[0]);\n } else {\n // ... otherwise it needs to be interpreted as a octal (if the\n // number is in an octal format). If it is NOT octal format,\n // then the slash is ignored and the number is matched later\n // as normal characters.\n\n // Recall the negative decision to decide if the input must be parsed\n // a second time with the total normal-groups.\n backrefDenied.push(refIdx);\n\n // Reset the position again, as maybe only parts of the previous\n // matched numbers are actual octal numbers. E.g. in '019' only\n // the '01' should be matched.\n incr(-res[0].length);\n if (res = matchReg(/^[0-7]{1,3}/)) {\n return createEscaped('octal', parseInt(res[0], 8), res[0], 1);\n } else {\n // If we end up here, we have a case like /\\91/. Then the\n // first slash is to be ignored and the 9 & 1 to be treated\n // like ordinary characters. Create a character for the\n // first number only here - other number-characters\n // (if available) will be matched later.\n res = createCharacter(matchReg(/^[89]/));\n return updateRawStart(res, res.range[0] - 1);\n }\n }\n }\n // Only allow octal numbers in the following. All matched numbers start\n // with a zero (if the do not, the previous if-branch is executed).\n // If the number is not octal format and starts with zero (e.g. `091`)\n // then only the zeros `0` is treated here and the `91` are ordinary\n // characters.\n // Example:\n // /\\091/.exec('\\091')[0].length === 3\n else if (res = matchReg(/^[0-7]{1,3}/)) {\n match = res[0];\n if (/^0{1,3}$/.test(match)) {\n // If they are all zeros, then only take the first one.\n return createEscaped('null', 0x0000, '0', match.length);\n } else {\n return createEscaped('octal', parseInt(match, 8), match, 1);\n }\n }\n return false;\n }\n function parseCharacterClassEscape() {\n // CharacterClassEscape :: one of d D s S w W\n var res;\n if (res = matchReg(/^[dDsSwW]/)) {\n return createCharacterClassEscape(res[0]);\n } else if (features.unicodePropertyEscape && (hasUnicodeFlag || hasUnicodeSetFlag) && (res = matchReg(/^([pP])\\{([^\\}]+)\\}/))) {\n // https://github.com/jviereck/regjsparser/issues/77\n return addRaw({\n type: 'unicodePropertyEscape',\n negative: res[1] === 'P',\n value: res[2],\n range: [res.range[0] - 1, res.range[1]],\n raw: res[0]\n });\n }\n return false;\n }\n function parseNamedReference() {\n if (features.namedGroups && matchReg(/^k<(?=.*?>)/)) {\n var name = parseIdentifier();\n skip('>');\n return createNamedReference(name);\n }\n }\n function parseRegExpUnicodeEscapeSequence() {\n var res;\n if (res = matchReg(/^u([0-9a-fA-F]{4})/)) {\n // UnicodeEscapeSequence\n return parseUnicodeSurrogatePairEscape(createEscaped('unicodeEscape', parseInt(res[1], 16), res[1], 2));\n } else if (hasUnicodeFlag && (res = matchReg(/^u\\{([0-9a-fA-F]+)\\}/))) {\n // RegExpUnicodeEscapeSequence (ES6 Unicode code point escape)\n return createEscaped('unicodeCodePointEscape', parseInt(res[1], 16), res[1], 4);\n }\n }\n function parseCharacterEscape() {\n // CharacterEscape ::\n // ControlEscape\n // c ControlLetter\n // HexEscapeSequence\n // UnicodeEscapeSequence\n // IdentityEscape\n\n var res;\n var from = pos;\n if (res = matchReg(/^[fnrtv]/)) {\n // ControlEscape\n var codePoint = 0;\n switch (res[0]) {\n case 't':\n codePoint = 0x009;\n break;\n case 'n':\n codePoint = 0x00A;\n break;\n case 'v':\n codePoint = 0x00B;\n break;\n case 'f':\n codePoint = 0x00C;\n break;\n case 'r':\n codePoint = 0x00D;\n break;\n }\n return createEscaped('singleEscape', codePoint, '\\\\' + res[0]);\n } else if (res = matchReg(/^c([a-zA-Z])/)) {\n // c ControlLetter\n return createEscaped('controlLetter', res[1].charCodeAt(0) % 32, res[1], 2);\n } else if (res = matchReg(/^x([0-9a-fA-F]{2})/)) {\n // HexEscapeSequence\n return createEscaped('hexadecimalEscape', parseInt(res[1], 16), res[1], 2);\n } else if (res = parseRegExpUnicodeEscapeSequence()) {\n if (!res || res.codePoint > 0x10FFFF) {\n bail('Invalid escape sequence', null, from, pos);\n }\n return res;\n } else {\n // IdentityEscape\n return parseIdentityEscape();\n }\n }\n function parseIdentifierAtom(check) {\n var ch = lookahead();\n var from = pos;\n if (ch === '\\\\') {\n incr();\n var esc = parseRegExpUnicodeEscapeSequence();\n if (!esc || !check(esc.codePoint)) {\n bail('Invalid escape sequence', null, from, pos);\n }\n return fromCodePoint(esc.codePoint);\n }\n var code = ch.charCodeAt(0);\n if (code >= 0xD800 && code <= 0xDBFF) {\n ch += str[pos + 1];\n var second = ch.charCodeAt(1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n // Unicode surrogate pair\n code = (code - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n if (!check(code)) return;\n incr();\n if (code > 0xFFFF) incr();\n return ch;\n }\n function parseIdentifier() {\n // RegExpIdentifierName ::\n // RegExpIdentifierStart\n // RegExpIdentifierName RegExpIdentifierContinue\n //\n // RegExpIdentifierStart ::\n // UnicodeIDStart\n // $\n // _\n // \\ RegExpUnicodeEscapeSequence\n //\n // RegExpIdentifierContinue ::\n // UnicodeIDContinue\n // $\n // _\n // \\ RegExpUnicodeEscapeSequence\n // \n // \n\n var start = pos;\n var res = parseIdentifierAtom(isIdentifierStart);\n if (!res) {\n bail('Invalid identifier');\n }\n var ch;\n while (ch = parseIdentifierAtom(isIdentifierPart)) {\n res += ch;\n }\n return addRaw({\n type: 'identifier',\n value: res,\n range: [start, pos]\n });\n }\n function isIdentifierStart(ch) {\n // Generated by `tools/generate-identifier-regex.js`.\n var NonAsciiIdentifierStart = /[\\$A-Z_a-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309B-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEF\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7B9\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF1A]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE83\\uDE86-\\uDE89\\uDE9D\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFF1]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]/;\n return ch === 36 || ch === 95 ||\n // $ (dollar) and _ (underscore)\n ch >= 65 && ch <= 90 ||\n // A..Z\n ch >= 97 && ch <= 122 ||\n // a..z\n ch >= 0x80 && NonAsciiIdentifierStart.test(fromCodePoint(ch));\n }\n\n // Taken from the Esprima parser.\n function isIdentifierPart(ch) {\n // Generated by `tools/generate-identifier-regex.js`.\n var NonAsciiIdentifierPartOnly = /[0-9_\\xB7\\u0300-\\u036F\\u0387\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u0669\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u06F0-\\u06F9\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07C0-\\u07C9\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D3-\\u08E1\\u08E3-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096F\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u09E6-\\u09EF\\u09FE\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A66-\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0AE6-\\u0AEF\\u0AFA-\\u0AFF\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B66-\\u0B6F\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C04\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0CE6-\\u0CEF\\u0D00-\\u0D03\\u0D3B\\u0D3C\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D66-\\u0D6F\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0E50-\\u0E59\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1040-\\u1049\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F-\\u109D\\u135D-\\u135F\\u1369-\\u1371\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u194F\\u19D0-\\u19DA\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AB0-\\u1ABD\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BB0-\\u1BB9\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1C40-\\u1C49\\u1C50-\\u1C59\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF7-\\u1CF9\\u1DC0-\\u1DF9\\u1DFB-\\u1DFF\\u200C\\u200D\\u203F\\u2040\\u2054\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA620-\\uA629\\uA66F\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F1\\uA8FF-\\uA909\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9D0-\\uA9D9\\uA9E5\\uA9F0-\\uA9F9\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA50-\\uAA59\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFF10-\\uFF19\\uFF3F]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD801[\\uDCA0-\\uDCA9]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD803[\\uDD24-\\uDD27\\uDD30-\\uDD39\\uDF46-\\uDF50]|\\uD804[\\uDC00-\\uDC02\\uDC38-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDC82\\uDCB0-\\uDCBA\\uDCF0-\\uDCF9\\uDD00-\\uDD02\\uDD27-\\uDD34\\uDD36-\\uDD3F\\uDD45\\uDD46\\uDD73\\uDD80-\\uDD82\\uDDB3-\\uDDC0\\uDDC9-\\uDDCC\\uDDD0-\\uDDD9\\uDE2C-\\uDE37\\uDE3E\\uDEDF-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF3B\\uDF3C\\uDF3E-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC35-\\uDC46\\uDC50-\\uDC59\\uDC5E\\uDCB0-\\uDCC3\\uDCD0-\\uDCD9\\uDDAF-\\uDDB5\\uDDB8-\\uDDC0\\uDDDC\\uDDDD\\uDE30-\\uDE40\\uDE50-\\uDE59\\uDEAB-\\uDEB7\\uDEC0-\\uDEC9\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDC2C-\\uDC3A\\uDCE0-\\uDCE9\\uDE01-\\uDE0A\\uDE33-\\uDE39\\uDE3B-\\uDE3E\\uDE47\\uDE51-\\uDE5B\\uDE8A-\\uDE99]|\\uD807[\\uDC2F-\\uDC36\\uDC38-\\uDC3F\\uDC50-\\uDC59\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD31-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD45\\uDD47\\uDD50-\\uDD59\\uDD8A-\\uDD8E\\uDD90\\uDD91\\uDD93-\\uDD97\\uDDA0-\\uDDA9\\uDEF3-\\uDEF6]|\\uD81A[\\uDE60-\\uDE69\\uDEF0-\\uDEF4\\uDF30-\\uDF36\\uDF50-\\uDF59]|\\uD81B[\\uDF51-\\uDF7E\\uDF8F-\\uDF92]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]|\\uD83A[\\uDCD0-\\uDCD6\\uDD44-\\uDD4A\\uDD50-\\uDD59]|\\uDB40[\\uDD00-\\uDDEF]/;\n return isIdentifierStart(ch) || ch >= 48 && ch <= 57 ||\n // 0..9\n ch >= 0x80 && NonAsciiIdentifierPartOnly.test(fromCodePoint(ch));\n }\n function parseIdentityEscape() {\n // IdentityEscape ::\n // [+U] SyntaxCharacter\n // [+U] /\n // [~U] SourceCharacterIdentityEscape[?N]\n // SourceCharacterIdentityEscape[?N] ::\n // [~N] SourceCharacter but not c\n // [+N] SourceCharacter but not one of c or k\n\n var tmp;\n var l = lookahead();\n if (hasUnicodeFlag && /[\\^\\$\\.\\*\\+\\?\\(\\)\\\\\\[\\]\\{\\}\\|\\/]/.test(l) || !hasUnicodeFlag && l !== \"c\") {\n if (l === \"k\" && features.lookbehind) {\n return null;\n }\n tmp = incr();\n return createEscaped('identifier', tmp.charCodeAt(0), tmp, 1);\n }\n return null;\n }\n function parseCharacterClass() {\n // CharacterClass ::\n // [ [lookahead ∉ {^}] ClassRanges ]\n // [ ^ ClassRanges ]\n\n var res,\n from = pos;\n if (res = matchReg(/^\\[\\^/)) {\n res = parseClassRanges();\n skip(']');\n return createCharacterClass(res, true, from, pos);\n } else if (match('[')) {\n res = parseClassRanges();\n skip(']');\n return createCharacterClass(res, false, from, pos);\n }\n return null;\n }\n function parseClassRanges() {\n // ClassRanges ::\n // [empty]\n // [~V] NonemptyClassRanges\n // [+V] ClassContents\n\n var res;\n if (current(']')) {\n // Empty array means nothing inside of the ClassRange.\n return {\n kind: 'union',\n body: []\n };\n } else if (hasUnicodeSetFlag) {\n return parseClassContents();\n } else {\n res = parseNonemptyClassRanges();\n if (!res) {\n bail('nonEmptyClassRanges');\n }\n return {\n kind: 'union',\n body: res\n };\n }\n }\n function parseHelperClassRanges(atom) {\n var from, to, res, atomTo, dash;\n if (current('-') && !next(']')) {\n // ClassAtom - ClassAtom ClassRanges\n from = atom.range[0];\n dash = createCharacter(match('-'));\n atomTo = parseClassAtom();\n if (!atomTo) {\n bail('classAtom');\n }\n to = pos;\n\n // Parse the next class range if exists.\n var classRanges = parseClassRanges();\n if (!classRanges) {\n bail('classRanges');\n }\n\n // Check if both the from and atomTo have codePoints.\n if (!('codePoint' in atom) || !('codePoint' in atomTo)) {\n if (!hasUnicodeFlag) {\n // If not, don't create a range but treat them as\n // `atom` `-` `atom` instead.\n //\n // SEE: https://tc39.es/ecma262/#sec-regular-expression-patterns-semantics\n // NonemptyClassRanges::ClassAtom-ClassAtomClassRanges\n // CharacterRangeOrUnion\n res = [atom, dash, atomTo];\n } else {\n // With unicode flag, both sides must have codePoints if\n // one side has a codePoint.\n //\n // SEE: https://tc39.es/ecma262/#sec-patterns-static-semantics-early-errors\n // NonemptyClassRanges :: ClassAtom - ClassAtom ClassRanges\n bail('invalid character class');\n }\n } else {\n res = [createClassRange(atom, atomTo, from, to)];\n }\n if (classRanges.type === 'empty') {\n return res;\n }\n return res.concat(classRanges.body);\n }\n res = parseNonemptyClassRangesNoDash();\n if (!res) {\n bail('nonEmptyClassRangesNoDash');\n }\n return [atom].concat(res);\n }\n function parseNonemptyClassRanges() {\n // NonemptyClassRanges ::\n // ClassAtom\n // ClassAtom NonemptyClassRangesNoDash\n // ClassAtom - ClassAtom ClassRanges\n\n var atom = parseClassAtom();\n if (!atom) {\n bail('classAtom');\n }\n if (current(']')) {\n // ClassAtom\n return [atom];\n }\n\n // ClassAtom NonemptyClassRangesNoDash\n // ClassAtom - ClassAtom ClassRanges\n return parseHelperClassRanges(atom);\n }\n function parseNonemptyClassRangesNoDash() {\n // NonemptyClassRangesNoDash ::\n // ClassAtom\n // ClassAtomNoDash NonemptyClassRangesNoDash\n // ClassAtomNoDash - ClassAtom ClassRanges\n\n var res = parseClassAtom();\n if (!res) {\n bail('classAtom');\n }\n if (current(']')) {\n // ClassAtom\n return res;\n }\n\n // ClassAtomNoDash NonemptyClassRangesNoDash\n // ClassAtomNoDash - ClassAtom ClassRanges\n return parseHelperClassRanges(res);\n }\n function parseClassAtom() {\n // ClassAtom ::\n // -\n // ClassAtomNoDash\n if (match('-')) {\n return createCharacter('-');\n } else {\n return parseClassAtomNoDash();\n }\n }\n function parseClassAtomNoDash() {\n // ClassAtomNoDash ::\n // SourceCharacter but not one of \\ or ] or -\n // \\ ClassEscape\n\n var res;\n if (res = matchReg(/^[^\\\\\\]-]/)) {\n return createCharacter(res[0]);\n } else if (match('\\\\')) {\n res = parseClassEscape();\n if (!res) {\n bail('classEscape');\n }\n return parseUnicodeSurrogatePairEscape(res);\n }\n }\n function parseClassContents() {\n // ClassContents ::\n // ClassUnion\n // ClassIntersection\n // ClassSubtraction\n //\n // ClassUnion ::\n // ClassRange ClassUnion?\n // ClassOperand ClassUnion?\n //\n // ClassIntersection ::\n // ClassOperand && [lookahead ≠ &] ClassOperand\n // ClassIntersection && [lookahead ≠ &] ClassOperand\n //\n // ClassSubtraction ::\n // ClassOperand -- ClassOperand\n // ClassSubtraction -- ClassOperand\n\n var body = [];\n var kind;\n var from = pos;\n var operand = parseClassOperand( /* allowRanges*/true);\n body.push(operand);\n if (operand.type === 'classRange') {\n kind = 'union';\n } else if (current('&')) {\n kind = 'intersection';\n } else if (current('-')) {\n kind = 'subtraction';\n } else {\n kind = 'union';\n }\n while (!current(']')) {\n if (kind === 'intersection') {\n skip('&');\n skip('&');\n if (current('&')) {\n bail('&& cannot be followed by &. Wrap it in parentheses: &&(&).');\n }\n } else if (kind === 'subtraction') {\n skip('-');\n skip('-');\n }\n operand = parseClassOperand( /* allowRanges*/kind === 'union');\n body.push(operand);\n }\n return {\n kind: kind,\n body: body\n };\n }\n function parseClassOperand(allowRanges) {\n // ClassOperand ::\n // ClassCharacter\n // ClassStrings\n // NestedClass\n //\n // NestedClass ::\n // [ [lookahead ≠ ^] ClassRanges[+U,+V] ]\n // [ ^ ClassRanges[+U,+V] ]\n // \\ CharacterClassEscape[+U, +V]\n //\n // ClassRange ::\n // ClassCharacter - ClassCharacter\n //\n // ClassCharacter ::\n // [lookahead ∉ ClassReservedDouble] SourceCharacter but not ClassSyntaxCharacter\n // \\ CharacterEscape[+U]\n // \\ ClassHalfOfDouble\n // \\ b\n //\n // ClassSyntaxCharacter ::\n // one of ( ) [ ] { } / - \\ |\n\n var from = pos;\n var start, res;\n if (match('\\\\')) {\n if (res = parseCharacterClassEscape()) {\n start = res;\n } else if (res = parseClassCharacterEscapedHelper()) {\n // ClassOperand ::\n // ...\n // NestedClass\n //\n // NestedClass ::\n // ...\n // \\ CharacterClassEscape[+U, +V]\n return res;\n } else {\n bail('Invalid escape', '\\\\' + lookahead(), from);\n }\n } else if (res = parseClassCharacterUnescapedHelper()) {\n start = res;\n } else if (res = parseClassStrings() || parseCharacterClass()) {\n // ClassOperand ::\n // ...\n // ClassStrings\n // NestedClass\n //\n // NestedClass ::\n // [ [lookahead ≠ ^] ClassRanges[+U,+V] ]\n // [ ^ ClassRanges[+U,+V] ]\n // ...\n return res;\n } else {\n bail('Invalid character', lookahead());\n }\n if (allowRanges && current('-') && !next('-')) {\n skip('-');\n if (res = parseClassCharacter()) {\n // ClassRange ::\n // ClassCharacter - ClassCharacter\n return createClassRange(start, res, from, pos);\n }\n bail('Invalid range end', lookahead());\n }\n\n // ClassOperand ::\n // ClassCharacter\n // ...\n return start;\n }\n function parseClassCharacter() {\n // ClassCharacter ::\n // [lookahead ∉ ClassReservedDouble] SourceCharacter but not ClassSyntaxCharacter\n // \\ CharacterEscape[+U]\n // \\ ClassHalfOfDouble\n // \\ b\n\n if (match('\\\\')) {\n if (res = parseClassCharacterEscapedHelper()) {\n return res;\n } else {\n bail('Invalid escape', '\\\\' + lookahead(), from);\n }\n }\n return parseClassCharacterUnescapedHelper();\n }\n function parseClassCharacterUnescapedHelper() {\n // ClassCharacter ::\n // [lookahead ∉ ClassReservedDouble] SourceCharacter but not ClassSyntaxCharacter\n // ...\n\n var res;\n if (res = matchReg(/^[^()[\\]{}/\\-\\\\|]/)) {\n return createCharacter(res);\n }\n ;\n }\n function parseClassCharacterEscapedHelper() {\n // ClassCharacter ::\n // ...\n // \\ CharacterEscape[+U]\n // \\ ClassHalfOfDouble\n // \\ b\n\n if (match('b')) {\n return createEscaped('singleEscape', 0x0008, '\\\\b');\n } else if (match('B')) {\n bail('\\\\B not possible inside of ClassContents', '', pos - 2);\n } else if (res = matchReg(/^[&\\-!#%,:;<=>@_`~]/)) {\n return createEscaped('identifier', res[0].codePointAt(0), res[0]);\n } else if (res = parseCharacterEscape()) {\n return res;\n } else {\n return null;\n }\n }\n function parseClassStrings() {\n // ClassStrings ::\n // ( ClassString MoreClassStrings? )\n\n var res = [];\n var from = pos;\n if (!match('(')) {\n return null;\n }\n do {\n res.push(parseClassString());\n } while (match('|'));\n skip(')');\n return createClassStrings(res, from, pos);\n }\n function parseClassString() {\n // ClassString ::\n // [empty]\n // NonEmptyClassString\n //\n // NonEmptyClassString ::\n // ClassCharacter NonEmptyClassString?\n\n var res = [],\n from = pos;\n var char;\n while (char = parseClassCharacter()) {\n res.push(char);\n }\n return createClassString(res, from, pos);\n }\n function bail(message, details, from, to) {\n from = from == null ? pos : from;\n to = to == null ? from : to;\n var contextStart = Math.max(0, from - 10);\n var contextEnd = Math.min(to + 10, str.length);\n\n // Output a bit of context and a line pointing to where our error is.\n //\n // We are assuming that there are no actual newlines in the content as this is a regular expression.\n var context = ' ' + str.substring(contextStart, contextEnd);\n var pointer = ' ' + new Array(from - contextStart + 1).join(' ') + '^';\n throw SyntaxError(message + ' at position ' + from + (details ? ': ' + details : '') + '\\n' + context + '\\n' + pointer);\n }\n var backrefDenied = [];\n var closedCaptureCounter = 0;\n var firstIteration = true;\n var hasUnicodeFlag = (flags || \"\").indexOf(\"u\") !== -1;\n var hasUnicodeSetFlag = (flags || \"\").indexOf(\"v\") !== -1;\n var pos = 0;\n if (hasUnicodeSetFlag && !features.unicodeSet) {\n throw new Error('The \"v\" flag is only supported when the .unicodeSet option is enabled.');\n }\n if (hasUnicodeFlag && hasUnicodeSetFlag) {\n throw new Error('The \"u\" and \"v\" flags are mutually exclusive.');\n }\n\n // Convert the input to a string and treat the empty string special.\n str = String(str);\n if (str === '') {\n str = '(?:)';\n }\n var result = parseDisjunction();\n if (result.range[1] !== str.length) {\n bail('Could not parse entire input - got stuck', '', result.range[1]);\n }\n\n // The spec requires to interpret the `\\2` in `/\\2()()/` as backreference.\n // As the parser collects the number of capture groups as the string is\n // parsed it is impossible to make these decisions at the point when the\n // `\\2` is handled. In case the local decision turns out to be wrong after\n // the parsing has finished, the input string is parsed a second time with\n // the total number of capture groups set.\n //\n // SEE: https://github.com/jviereck/regjsparser/issues/70\n for (var i = 0; i < backrefDenied.length; i++) {\n if (backrefDenied[i] <= closedCaptureCounter) {\n // Parse the input a second time.\n pos = 0;\n firstIteration = false;\n return parseDisjunction();\n }\n }\n return result;\n }\n var regjsparser = {\n parse: parse\n };\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = regjsparser;\n } else {\n window.regjsparser = regjsparser;\n }\n})();","const set = require('regenerate')(0x28, 0x5B, 0x7B, 0xF3A, 0xF3C, 0x169B, 0x201A, 0x201E, 0x2045, 0x207D, 0x208D, 0x2308, 0x230A, 0x2329, 0x2768, 0x276A, 0x276C, 0x276E, 0x2770, 0x2772, 0x2774, 0x27C5, 0x27E6, 0x27E8, 0x27EA, 0x27EC, 0x27EE, 0x2983, 0x2985, 0x2987, 0x2989, 0x298B, 0x298D, 0x298F, 0x2991, 0x2993, 0x2995, 0x2997, 0x29D8, 0x29DA, 0x29FC, 0x2E22, 0x2E24, 0x2E26, 0x2E28, 0x2E42, 0x2E55, 0x2E57, 0x2E59, 0x2E5B, 0x3008, 0x300A, 0x300C, 0x300E, 0x3010, 0x3014, 0x3016, 0x3018, 0x301A, 0x301D, 0xFD3F, 0xFE17, 0xFE35, 0xFE37, 0xFE39, 0xFE3B, 0xFE3D, 0xFE3F, 0xFE41, 0xFE43, 0xFE47, 0xFE59, 0xFE5B, 0xFE5D, 0xFF08, 0xFF3B, 0xFF5B, 0xFF5F, 0xFF62);\nmodule.exports = set;","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","const set = require('regenerate')();\nset.addRange(0x1BC0, 0x1BF3).addRange(0x1BFC, 0x1BFF);\nmodule.exports = set;","const set = require('regenerate')(0x110CD);\nset.addRange(0x966, 0x96F).addRange(0xA830, 0xA839).addRange(0x11080, 0x110C2);\nmodule.exports = set;","const set = require('regenerate')(0xBB, 0x2019, 0x201D, 0x203A, 0x2E03, 0x2E05, 0x2E0A, 0x2E0D, 0x2E1D, 0x2E21);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x10FE0, 0x10FF6);\nmodule.exports = set;","var metaMap = require('./_metaMap'),\n noop = require('./noop');\n\n/**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\nvar getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n};\n\nmodule.exports = getData;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","const set = require('regenerate')();\nset.addRange(0x16AD0, 0x16AED).addRange(0x16AF0, 0x16AF5);\nmodule.exports = set;","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var LazyWrapper = require('./_LazyWrapper'),\n LodashWrapper = require('./_LodashWrapper'),\n baseLodash = require('./_baseLodash'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike'),\n wrapperClone = require('./_wrapperClone');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\nfunction lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n}\n\n// Ensure wrappers are instances of `baseLodash`.\nlodash.prototype = baseLodash.prototype;\nlodash.prototype.constructor = lodash;\n\nmodule.exports = lodash;\n","const set = require('regenerate')();\nset.addRange(0x2FF0, 0x2FF1).addRange(0x2FF4, 0x2FFB);\nmodule.exports = set;","var convert = require('./convert'),\n func = convert('head', require('../head'), require('./_falseOptions'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","const set = require('regenerate')();\nset.addRange(0x1B00, 0x1B4C).addRange(0x1B50, 0x1B7E);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0xA800, 0xA82C);\nmodule.exports = set;","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","import invariant from \"invariant\";\n\n////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\nvar startsWith = function startsWith(string, search) {\n return string.substr(0, search.length) === search;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// pick(routes, uri)\n//\n// Ranks and picks the best route to match. Each segment gets the highest\n// amount of points, then the type of segment gets an additional amount of\n// points where\n//\n// static > dynamic > splat > root\n//\n// This way we don't have to worry about the order of our routes, let the\n// computers do it.\n//\n// A route looks like this\n//\n// { path, default, value }\n//\n// And a returned match looks like:\n//\n// { route, params, uri }\n//\n// I know, I should use TypeScript not comments for these types.\nvar pick = function pick(routes, uri) {\n var match = void 0;\n var default_ = void 0;\n\n var _uri$split = uri.split(\"?\"),\n uriPathname = _uri$split[0];\n\n var uriSegments = segmentize(uriPathname);\n var isRootUri = uriSegments[0] === \"\";\n var ranked = rankRoutes(routes);\n\n for (var i = 0, l = ranked.length; i < l; i++) {\n var missed = false;\n var route = ranked[i].route;\n\n if (route.default) {\n default_ = {\n route: route,\n params: {},\n uri: uri\n };\n continue;\n }\n\n var routeSegments = segmentize(route.path);\n var params = {};\n var max = Math.max(uriSegments.length, routeSegments.length);\n var index = 0;\n\n for (; index < max; index++) {\n var routeSegment = routeSegments[index];\n var uriSegment = uriSegments[index];\n\n if (isSplat(routeSegment)) {\n // Hit a splat, just grab the rest, and return a match\n // uri: /files/documents/work\n // route: /files/*\n var param = routeSegment.slice(1) || \"*\";\n params[param] = uriSegments.slice(index).map(decodeURIComponent).join(\"/\");\n break;\n }\n\n if (uriSegment === undefined) {\n // URI is shorter than the route, no match\n // uri: /users\n // route: /users/:userId\n missed = true;\n break;\n }\n\n var dynamicMatch = paramRe.exec(routeSegment);\n\n if (dynamicMatch && !isRootUri) {\n var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1;\n !matchIsNotReserved ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" dynamic segment \\\"\" + dynamicMatch[1] + \"\\\" is a reserved name. Please use a different name in path \\\"\" + route.path + \"\\\".\") : invariant(false) : void 0;\n var value = decodeURIComponent(uriSegment);\n params[dynamicMatch[1]] = value;\n } else if (routeSegment !== uriSegment) {\n // Current segments don't match, not dynamic, not splat, so no match\n // uri: /users/123/settings\n // route: /users/:id/profile\n missed = true;\n break;\n }\n }\n\n if (!missed) {\n match = {\n route: route,\n params: params,\n uri: \"/\" + uriSegments.slice(0, index).join(\"/\")\n };\n break;\n }\n }\n\n return match || default_ || null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// match(path, uri) - Matches just one path to a uri, also lol\nvar match = function match(path, uri) {\n return pick([{ path: path }], uri);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// resolve(to, basepath)\n//\n// Resolves URIs as though every path is a directory, no files. Relative URIs\n// in the browser can feel awkward because not only can you be \"in a directory\"\n// you can be \"at a file\", too. For example\n//\n// browserSpecResolve('foo', '/bar/') => /bar/foo\n// browserSpecResolve('foo', '/bar') => /foo\n//\n// But on the command line of a file system, it's not as complicated, you can't\n// `cd` from a file, only directories. This way, links have to know less about\n// their current path. To go deeper you can do this:\n//\n// \n// // instead of\n// \n//\n// Just like `cd`, if you want to go deeper from the command line, you do this:\n//\n// cd deeper\n// # not\n// cd $(pwd)/deeper\n//\n// By treating every path as a directory, linking to relative paths should\n// require less contextual information and (fingers crossed) be more intuitive.\nvar resolve = function resolve(to, base) {\n // /foo/bar, /baz/qux => /foo/bar\n if (startsWith(to, \"/\")) {\n return to;\n }\n\n var _to$split = to.split(\"?\"),\n toPathname = _to$split[0],\n toQuery = _to$split[1];\n\n var _base$split = base.split(\"?\"),\n basePathname = _base$split[0];\n\n var toSegments = segmentize(toPathname);\n var baseSegments = segmentize(basePathname);\n\n // ?a=b, /users?b=c => /users?a=b\n if (toSegments[0] === \"\") {\n return addQuery(basePathname, toQuery);\n }\n\n // profile, /users/789 => /users/789/profile\n if (!startsWith(toSegments[0], \".\")) {\n var pathname = baseSegments.concat(toSegments).join(\"/\");\n return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\n }\n\n // ./ /users/123 => /users/123\n // ../ /users/123 => /users\n // ../.. /users/123 => /\n // ../../one /a/b/c/d => /a/b/one\n // .././one /a/b/c/d => /a/b/c/one\n var allSegments = baseSegments.concat(toSegments);\n var segments = [];\n for (var i = 0, l = allSegments.length; i < l; i++) {\n var segment = allSegments[i];\n if (segment === \"..\") segments.pop();else if (segment !== \".\") segments.push(segment);\n }\n\n return addQuery(\"/\" + segments.join(\"/\"), toQuery);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// insertParams(path, params)\n\nvar insertParams = function insertParams(path, params) {\n var _path$split = path.split(\"?\"),\n pathBase = _path$split[0],\n _path$split$ = _path$split[1],\n query = _path$split$ === undefined ? \"\" : _path$split$;\n\n var segments = segmentize(pathBase);\n var constructedPath = \"/\" + segments.map(function (segment) {\n var match = paramRe.exec(segment);\n return match ? params[match[1]] : segment;\n }).join(\"/\");\n var _params$location = params.location;\n _params$location = _params$location === undefined ? {} : _params$location;\n var _params$location$sear = _params$location.search,\n search = _params$location$sear === undefined ? \"\" : _params$location$sear;\n\n var searchSplit = search.split(\"?\")[1] || \"\";\n constructedPath = addQuery(constructedPath, query, searchSplit);\n return constructedPath;\n};\n\nvar validateRedirect = function validateRedirect(from, to) {\n var filter = function filter(segment) {\n return isDynamic(segment);\n };\n var fromString = segmentize(from).filter(filter).sort().join(\"/\");\n var toString = segmentize(to).filter(filter).sort().join(\"/\");\n return fromString === toString;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar paramRe = /^:(.+)/;\n\nvar SEGMENT_POINTS = 4;\nvar STATIC_POINTS = 3;\nvar DYNAMIC_POINTS = 2;\nvar SPLAT_PENALTY = 1;\nvar ROOT_POINTS = 1;\n\nvar isRootSegment = function isRootSegment(segment) {\n return segment === \"\";\n};\nvar isDynamic = function isDynamic(segment) {\n return paramRe.test(segment);\n};\nvar isSplat = function isSplat(segment) {\n return segment && segment[0] === \"*\";\n};\n\nvar rankRoute = function rankRoute(route, index) {\n var score = route.default ? 0 : segmentize(route.path).reduce(function (score, segment) {\n score += SEGMENT_POINTS;\n if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS;\n return score;\n }, 0);\n return { route: route, score: score, index: index };\n};\n\nvar rankRoutes = function rankRoutes(routes) {\n return routes.map(rankRoute).sort(function (a, b) {\n return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index;\n });\n};\n\nvar segmentize = function segmentize(uri) {\n return uri\n // strip starting/ending slashes\n .replace(/(^\\/+|\\/+$)/g, \"\").split(\"/\");\n};\n\nvar addQuery = function addQuery(pathname) {\n for (var _len = arguments.length, query = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n query[_key - 1] = arguments[_key];\n }\n\n query = query.filter(function (q) {\n return q && q.length > 0;\n });\n return pathname + (query && query.length > 0 ? \"?\" + query.join(\"&\") : \"\");\n};\n\nvar reservedNames = [\"uri\", \"path\"];\n\n/**\n * Shallow compares two objects.\n * @param {Object} obj1 The first object to compare.\n * @param {Object} obj2 The second object to compare.\n */\nvar shallowCompare = function shallowCompare(obj1, obj2) {\n var obj1Keys = Object.keys(obj1);\n return obj1Keys.length === Object.keys(obj2).length && obj1Keys.every(function (key) {\n return obj2.hasOwnProperty(key) && obj1[key] === obj2[key];\n });\n};\n\n////////////////////////////////////////////////////////////////////////////////\nexport { startsWith, pick, match, resolve, insertParams, validateRedirect, shallowCompare };","const set = require('regenerate')(0xDBD, 0xDCA, 0xDD6);\nset.addRange(0xD81, 0xD83).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6).addRange(0xDCF, 0xDD4).addRange(0xDD8, 0xDDF).addRange(0xDE6, 0xDEF).addRange(0xDF2, 0xDF4).addRange(0x111E1, 0x111F4);\nmodule.exports = set;","const set = require('regenerate')(0x29, 0x5D, 0x7D, 0xF3B, 0xF3D, 0x169C, 0x2046, 0x207E, 0x208E, 0x2309, 0x230B, 0x232A, 0x2769, 0x276B, 0x276D, 0x276F, 0x2771, 0x2773, 0x2775, 0x27C6, 0x27E7, 0x27E9, 0x27EB, 0x27ED, 0x27EF, 0x2984, 0x2986, 0x2988, 0x298A, 0x298C, 0x298E, 0x2990, 0x2992, 0x2994, 0x2996, 0x2998, 0x29D9, 0x29DB, 0x29FD, 0x2E23, 0x2E25, 0x2E27, 0x2E29, 0x2E56, 0x2E58, 0x2E5A, 0x2E5C, 0x3009, 0x300B, 0x300D, 0x300F, 0x3011, 0x3015, 0x3017, 0x3019, 0x301B, 0xFD3E, 0xFE18, 0xFE36, 0xFE38, 0xFE3A, 0xFE3C, 0xFE3E, 0xFE40, 0xFE42, 0xFE44, 0xFE48, 0xFE5A, 0xFE5C, 0xFE5E, 0xFF09, 0xFF3D, 0xFF5D, 0xFF60, 0xFF63);\nset.addRange(0x301E, 0x301F);\nmodule.exports = set;","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","module.exports = [{\n plugin: require('../node_modules/gatsby-plugin-catch-links/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-plugin-mdx/gatsby-browser.js'),\n options: {\"plugins\":[],\"extensions\":[\".md\",\".mdx\"],\"remarkPlugins\":[[null,{\"type\":\"yaml\",\"marker\":\"-\"}],null],\"rehypePlugins\":[null,null],\"gatsbyRemarkPlugins\":[{\"resolve\":\"gatsby-remark-images\",\"options\":{\"sizeByPixelDensity\":true,\"withWebp\":true}},{\"resolve\":\"gatsby-remark-vscode\",\"options\":{\"logLevel\":\"debug\",\"colorTheme\":\"Material Theme Darker\",\"injectStyles\":false,\"extensionDataDirectory\":\"/home/runner/work/tanka/tanka/docs/.vscext\",\"extensions\":[{\"identifier\":\"heptio.jsonnet\",\"version\":\"0.1.0\"},{\"identifier\":\"Equinusocio.vsc-material-theme\",\"version\":\"30.0.0\"}]}}],\"defaultLayouts\":{\"default\":\"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\"},\"lessBabel\":false,\"mediaTypes\":[\"text/markdown\",\"text/x-markdown\"],\"root\":\"/home/runner/work/tanka/tanka/docs\"},\n },{\n plugin: require('../node_modules/gatsby-plugin-react-helmet-async/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-theme-docz/gatsby-browser.js'),\n options: {\"plugins\":[],\"gatsbyRemarkPlugins\":[{\"resolve\":\"gatsby-remark-images\",\"options\":{\"sizeByPixelDensity\":true,\"withWebp\":true}},{\"resolve\":\"gatsby-remark-vscode\",\"options\":{\"logLevel\":\"debug\",\"colorTheme\":\"Material Theme Darker\",\"injectStyles\":false,\"extensionDataDirectory\":\"/home/runner/work/tanka/tanka/docs/.vscext\",\"extensions\":[{\"identifier\":\"heptio.jsonnet\",\"version\":\"0.1.0\"},{\"identifier\":\"Equinusocio.vsc-material-theme\",\"version\":\"30.0.0\"}]}}]},\n },{\n plugin: require('../node_modules/gatsby-plugin-manifest/gatsby-browser.js'),\n options: {\"plugins\":[],\"name\":\"Grafana Tanka\",\"short_name\":\"Tanka\",\"start_url\":\"/\",\"display\":\"standalone\",\"icon\":\"img/logo_black.svg\",\"background_color\":\"#ffffff\",\"theme_color\":\"#000000\",\"legacy\":true,\"theme_color_in_head\":true,\"cache_busting_mode\":\"query\",\"crossOrigin\":\"anonymous\",\"include_favicon\":true,\"cacheDigest\":\"815afb474b603167d9aafa836ab02617\"},\n },{\n plugin: require('../node_modules/gatsby-plugin-offline/gatsby-browser.js'),\n options: {\"plugins\":[],\"precachePages\":[\"/\",\"/install\",\"/tutorial/overview\"]},\n }]\n","const set = require('regenerate')();\nset.addRange(0x11C70, 0x11C8F).addRange(0x11C92, 0x11CA7).addRange(0x11CA9, 0x11CB6);\nmodule.exports = set;","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","const set = require('regenerate')();\nset.addRange(0x103A0, 0x103C3).addRange(0x103C8, 0x103D5);\nmodule.exports = set;","const set = require('regenerate')(0x1CDA, 0x1CF2);\nset.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0xB01, 0xB03).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB3C, 0xB44).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4D).addRange(0xB55, 0xB57).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB63).addRange(0xB66, 0xB77);\nmodule.exports = set;","const set = require('regenerate')(0x2D7F);\nset.addRange(0x2D30, 0x2D67).addRange(0x2D6F, 0x2D70);\nmodule.exports = set;","const set = require('regenerate')(0x11288);\nset.addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A9);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x14400, 0x14646);\nmodule.exports = set;","/*!\n * domready (c) Dustin Diaz 2014 - License MIT\n * ie10 fix - Mikael Kristiansson 2019\n */\n!(function(name, definition) {\n if (typeof module != \"undefined\") module.exports = definition();\n else if (typeof define == \"function\" && typeof define.amd == \"object\")\n define(definition);\n else this[name] = definition();\n})(\"domready\", function() {\n var ie10 = false;\n if (navigator.appVersion.indexOf(\"MSIE 10\") !== -1) {\n ie10 = true;\n }\n\n var fns = [],\n listener,\n doc = typeof document === \"object\" && document,\n hack = ie10\n ? doc.documentElement.doScroll(\"left\")\n : doc.documentElement.doScroll,\n domContentLoaded = \"DOMContentLoaded\",\n loaded =\n doc && (hack ? /^loaded|^c/ : /^loaded|^i|^c/).test(doc.readyState);\n\n if (!loaded && doc)\n doc.addEventListener(\n domContentLoaded,\n (listener = function() {\n doc.removeEventListener(domContentLoaded, listener);\n loaded = 1;\n while ((listener = fns.shift())) listener();\n })\n );\n\n return function(fn) {\n loaded ? setTimeout(fn, 0) : fns.push(fn);\n };\n});\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n}\n\nmodule.exports = composeArgsRight;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","const set = require('regenerate')();\nset.addRange(0x11AC0, 0x11AF8);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x964, 0x965).addRange(0xA830, 0xA839).addRange(0x11680, 0x116B9).addRange(0x116C0, 0x116C9);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0xF00, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF71, 0xF97).addRange(0xF99, 0xFBC).addRange(0xFBE, 0xFCC).addRange(0xFCE, 0xFD4).addRange(0xFD9, 0xFDA);\nmodule.exports = set;","const set = require('regenerate')(0x10808, 0x1083C, 0x1083F);\nset.addRange(0x10100, 0x10102).addRange(0x10107, 0x10133).addRange(0x10137, 0x1013F).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838);\nmodule.exports = set;","const set = require('regenerate')(0x3037, 0x1B000);\nset.addRange(0x3001, 0x3003).addRange(0x3008, 0x3011).addRange(0x3013, 0x301F).addRange(0x3030, 0x3035).addRange(0x303C, 0x303D).addRange(0x3099, 0x309C).addRange(0x30A0, 0x30FF).addRange(0x31F0, 0x31FF).addRange(0x32D0, 0x32FE).addRange(0x3300, 0x3357).addRange(0xFE45, 0xFE46).addRange(0xFF61, 0xFF9F).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B120, 0x1B122).addRange(0x1B164, 0x1B167);\nmodule.exports = set;","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

    {`On ArchLinux, install using the `}{`jsonnet-bundler-bin`}{` AUR package:`}

    \n
    {`$ yay jsonnet-bundler-bin`}
    \n\n \n
    ;\n}\n;\nMDXContent.isMDXComponent = true;\n ","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\nvar kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n});\n\nmodule.exports = kebabCase;\n","var LazyWrapper = require('./_LazyWrapper'),\n getData = require('./_getData'),\n getFuncName = require('./_getFuncName'),\n lodash = require('./wrapperLodash');\n\n/**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\nfunction isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n}\n\nmodule.exports = isLaziable;\n","const set = require('regenerate')();\nset.addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D8E).addRange(0x11D90, 0x11D91).addRange(0x11D93, 0x11D98).addRange(0x11DA0, 0x11DA9);\nmodule.exports = set;","var LodashWrapper = require('./_LodashWrapper'),\n flatRest = require('./_flatRest'),\n getData = require('./_getData'),\n getFuncName = require('./_getFuncName'),\n isArray = require('./isArray'),\n isLaziable = require('./_isLaziable');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_FLAG = 8,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256;\n\n/**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\nfunction createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n}\n\nmodule.exports = createFlow;\n","module.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","import { apiRunner } from \"./api-runner-browser\"\n\nif (\n window.location.protocol !== `https:` &&\n window.location.hostname !== `localhost`\n) {\n console.error(\n `Service workers can only be used over HTTPS, or on localhost for development`\n )\n} else if (`serviceWorker` in navigator) {\n navigator.serviceWorker\n .register(`${__BASE_PATH__}/sw.js`)\n .then(function (reg) {\n reg.addEventListener(`updatefound`, () => {\n apiRunner(`onServiceWorkerUpdateFound`, { serviceWorker: reg })\n // The updatefound event implies that reg.installing is set; see\n // https://w3c.github.io/ServiceWorker/#service-worker-registration-updatefound-event\n const installingWorker = reg.installing\n console.log(`installingWorker`, installingWorker)\n installingWorker.addEventListener(`statechange`, () => {\n switch (installingWorker.state) {\n case `installed`:\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and the fresh content will\n // have been added to the cache.\n\n // We set a flag so Gatsby Link knows to refresh the page on next navigation attempt\n window.___swUpdated = true\n // We call the onServiceWorkerUpdateReady API so users can show update prompts.\n apiRunner(`onServiceWorkerUpdateReady`, { serviceWorker: reg })\n\n // If resources failed for the current page, reload.\n if (window.___failedResources) {\n console.log(`resources failed, SW updated - reloading`)\n window.location.reload()\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a \"Content is cached for offline use.\" message.\n console.log(`Content is now available offline!`)\n\n // Post to service worker that install is complete.\n // Delay to allow time for the event listener to be added --\n // otherwise fetch is called too soon and resources aren't cached.\n apiRunner(`onServiceWorkerInstalled`, { serviceWorker: reg })\n }\n break\n\n case `redundant`:\n console.error(`The installing service worker became redundant.`)\n apiRunner(`onServiceWorkerRedundant`, { serviceWorker: reg })\n break\n\n case `activated`:\n apiRunner(`onServiceWorkerActive`, { serviceWorker: reg })\n break\n }\n })\n })\n })\n .catch(function (e) {\n console.error(`Error during service worker registration:`, e)\n })\n}\n","const set = require('regenerate')();\nset.addRange(0x1C50, 0x1C7F);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x11180, 0x111DF);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x110D0, 0x110E8).addRange(0x110F0, 0x110F9);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0xA840, 0xA877);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x10F30, 0x10F59);\nmodule.exports = set;","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","// prefer default export if available\nconst preferDefault = m => (m && m.default) || m\n\nexports.components = {\n \"component---cache-caches-gatsby-plugin-offline-app-shell-js\": () => import(\"./../../caches/gatsby-plugin-offline/app-shell.js\" /* webpackChunkName: \"component---cache-caches-gatsby-plugin-offline-app-shell-js\" */),\n \"component---docs-completion-md\": () => import(\"./../../../docs/completion.md\" /* webpackChunkName: \"component---docs-completion-md\" */),\n \"component---docs-config-md\": () => import(\"./../../../docs/config.md\" /* webpackChunkName: \"component---docs-config-md\" */),\n \"component---docs-diff-strategy-md\": () => import(\"./../../../docs/diff-strategy.md\" /* webpackChunkName: \"component---docs-diff-strategy-md\" */),\n \"component---docs-directory-structure-md\": () => import(\"./../../../docs/directory-structure.md\" /* webpackChunkName: \"component---docs-directory-structure-md\" */),\n \"component---docs-env-vars-md\": () => import(\"./../../../docs/env-vars.md\" /* webpackChunkName: \"component---docs-env-vars-md\" */),\n \"component---docs-exporting-md\": () => import(\"./../../../docs/exporting.md\" /* webpackChunkName: \"component---docs-exporting-md\" */),\n \"component---docs-faq-md\": () => import(\"./../../../docs/faq.md\" /* webpackChunkName: \"component---docs-faq-md\" */),\n \"component---docs-formatting-md\": () => import(\"./../../../docs/formatting.md\" /* webpackChunkName: \"component---docs-formatting-md\" */),\n \"component---docs-garbage-collection-md\": () => import(\"./../../../docs/garbage-collection.md\" /* webpackChunkName: \"component---docs-garbage-collection-md\" */),\n \"component---docs-helm-mdx\": () => import(\"./../../../docs/helm.mdx\" /* webpackChunkName: \"component---docs-helm-mdx\" */),\n \"component---docs-inline-environments-mdx\": () => import(\"./../../../docs/inline-environments.mdx\" /* webpackChunkName: \"component---docs-inline-environments-mdx\" */),\n \"component---docs-installation-mdx\": () => import(\"./../../../docs/installation.mdx\" /* webpackChunkName: \"component---docs-installation-mdx\" */),\n \"component---docs-introduction-mdx\": () => import(\"./../../../docs/introduction.mdx\" /* webpackChunkName: \"component---docs-introduction-mdx\" */),\n \"component---docs-jsonnet-injecting-values-md\": () => import(\"./../../../docs/jsonnet/injecting-values.md\" /* webpackChunkName: \"component---docs-jsonnet-injecting-values-md\" */),\n \"component---docs-jsonnet-main-md\": () => import(\"./../../../docs/jsonnet/main.md\" /* webpackChunkName: \"component---docs-jsonnet-main-md\" */),\n \"component---docs-jsonnet-native-functions-md\": () => import(\"./../../../docs/jsonnet/native-functions.md\" /* webpackChunkName: \"component---docs-jsonnet-native-functions-md\" */),\n \"component---docs-jsonnet-overview-md\": () => import(\"./../../../docs/jsonnet/overview.md\" /* webpackChunkName: \"component---docs-jsonnet-overview-md\" */),\n \"component---docs-known-issues-md\": () => import(\"./../../../docs/known-issues.md\" /* webpackChunkName: \"component---docs-known-issues-md\" */),\n \"component---docs-kustomize-mdx\": () => import(\"./../../../docs/kustomize.mdx\" /* webpackChunkName: \"component---docs-kustomize-mdx\" */),\n \"component---docs-libraries-import-paths-md\": () => import(\"./../../../docs/libraries/import-paths.md\" /* webpackChunkName: \"component---docs-libraries-import-paths-md\" */),\n \"component---docs-libraries-install-publish-md\": () => import(\"./../../../docs/libraries/install-publish.md\" /* webpackChunkName: \"component---docs-libraries-install-publish-md\" */),\n \"component---docs-libraries-overriding-md\": () => import(\"./../../../docs/libraries/overriding.md\" /* webpackChunkName: \"component---docs-libraries-overriding-md\" */),\n \"component---docs-namespaces-md\": () => import(\"./../../../docs/namespaces.md\" /* webpackChunkName: \"component---docs-namespaces-md\" */),\n \"component---docs-server-side-apply-md\": () => import(\"./../../../docs/server-side-apply.md\" /* webpackChunkName: \"component---docs-server-side-apply-md\" */),\n \"component---docs-targets-md\": () => import(\"./../../../docs/targets.md\" /* webpackChunkName: \"component---docs-targets-md\" */),\n \"component---docs-tutorial-abstraction-mdx\": () => import(\"./../../../docs/tutorial/abstraction.mdx\" /* webpackChunkName: \"component---docs-tutorial-abstraction-mdx\" */),\n \"component---docs-tutorial-environments-mdx\": () => import(\"./../../../docs/tutorial/environments.mdx\" /* webpackChunkName: \"component---docs-tutorial-environments-mdx\" */),\n \"component---docs-tutorial-jsonnet-mdx\": () => import(\"./../../../docs/tutorial/jsonnet.mdx\" /* webpackChunkName: \"component---docs-tutorial-jsonnet-mdx\" */),\n \"component---docs-tutorial-k-lib-mdx\": () => import(\"./../../../docs/tutorial/k-lib.mdx\" /* webpackChunkName: \"component---docs-tutorial-k-lib-mdx\" */),\n \"component---docs-tutorial-overview-mdx\": () => import(\"./../../../docs/tutorial/overview.mdx\" /* webpackChunkName: \"component---docs-tutorial-overview-mdx\" */),\n \"component---docs-tutorial-parameterizing-mdx\": () => import(\"./../../../docs/tutorial/parameterizing.mdx\" /* webpackChunkName: \"component---docs-tutorial-parameterizing-mdx\" */),\n \"component---docs-tutorial-refresher-mdx\": () => import(\"./../../../docs/tutorial/refresher.mdx\" /* webpackChunkName: \"component---docs-tutorial-refresher-mdx\" */),\n \"component---src-components-home-snippet-mdx\": () => import(\"./../../../src/components/home/snippet.mdx\" /* webpackChunkName: \"component---src-components-home-snippet-mdx\" */),\n \"component---src-components-install-jb-arch-mdx\": () => import(\"./../../../src/components/install/jb/arch.mdx\" /* webpackChunkName: \"component---src-components-install-jb-arch-mdx\" */),\n \"component---src-components-install-jb-binary-mdx\": () => import(\"./../../../src/components/install/jb/binary.mdx\" /* webpackChunkName: \"component---src-components-install-jb-binary-mdx\" */),\n \"component---src-components-install-jb-go-mdx\": () => import(\"./../../../src/components/install/jb/go.mdx\" /* webpackChunkName: \"component---src-components-install-jb-go-mdx\" */),\n \"component---src-components-install-jb-osx-mdx\": () => import(\"./../../../src/components/install/jb/osx.mdx\" /* webpackChunkName: \"component---src-components-install-jb-osx-mdx\" */),\n \"component---src-components-install-tk-arch-mdx\": () => import(\"./../../../src/components/install/tk/arch.mdx\" /* webpackChunkName: \"component---src-components-install-tk-arch-mdx\" */),\n \"component---src-components-install-tk-binary-mdx\": () => import(\"./../../../src/components/install/tk/binary.mdx\" /* webpackChunkName: \"component---src-components-install-tk-binary-mdx\" */),\n \"component---src-components-install-tk-go-mdx\": () => import(\"./../../../src/components/install/tk/go.mdx\" /* webpackChunkName: \"component---src-components-install-tk-go-mdx\" */),\n \"component---src-components-install-tk-osx-mdx\": () => import(\"./../../../src/components/install/tk/osx.mdx\" /* webpackChunkName: \"component---src-components-install-tk-osx-mdx\" */)\n}\n\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var isCallable = require('../internals/is-callable');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","const set = require('regenerate')(0x5E, 0x60, 0xA8, 0xAF, 0xB4, 0xB8, 0x2ED, 0x375, 0x888, 0x1FBD, 0xAB5B, 0xFF3E, 0xFF40, 0xFFE3);\nset.addRange(0x2C2, 0x2C5).addRange(0x2D2, 0x2DF).addRange(0x2E5, 0x2EB).addRange(0x2EF, 0x2FF).addRange(0x384, 0x385).addRange(0x1FBF, 0x1FC1).addRange(0x1FCD, 0x1FCF).addRange(0x1FDD, 0x1FDF).addRange(0x1FED, 0x1FEF).addRange(0x1FFD, 0x1FFE).addRange(0x309B, 0x309C).addRange(0xA700, 0xA716).addRange(0xA720, 0xA721).addRange(0xA789, 0xA78A).addRange(0xAB6A, 0xAB6B).addRange(0xFBB2, 0xFBC2).addRange(0x1F3FB, 0x1F3FF);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0xE01, 0xE3A).addRange(0xE40, 0xE5B);\nmodule.exports = set;","const set = require('regenerate')(0x2D, 0x58A, 0x5BE, 0x1400, 0x1806, 0x2E17, 0x2E1A, 0x2E40, 0x2E5D, 0x301C, 0x3030, 0x30A0, 0xFE58, 0xFE63, 0xFF0D, 0x10EAD);\nset.addRange(0x2010, 0x2015).addRange(0x2E3A, 0x2E3B).addRange(0xFE31, 0xFE32);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x10400, 0x1044F);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x1400, 0x167F).addRange(0x18B0, 0x18F5).addRange(0x11AB0, 0x11ABF);\nmodule.exports = set;","const set = require('regenerate')(0x1CE9, 0x1CF2, 0x1CFA);\nset.addRange(0x964, 0x965).addRange(0xCE6, 0xCEF).addRange(0xA830, 0xA835).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D7).addRange(0x119DA, 0x119E4);\nmodule.exports = set;","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","const set = require('regenerate')(0xAD, 0x61C, 0x6DD, 0x70F, 0x8E2, 0x180E, 0xFEFF, 0x110BD, 0x110CD, 0xE0001);\nset.addRange(0x600, 0x605).addRange(0x890, 0x891).addRange(0x200B, 0x200F).addRange(0x202A, 0x202E).addRange(0x2060, 0x2064).addRange(0x2066, 0x206F).addRange(0xFFF9, 0xFFFB).addRange(0x13430, 0x13438).addRange(0x1BCA0, 0x1BCA3).addRange(0x1D173, 0x1D17A).addRange(0xE0020, 0xE007F);\nmodule.exports = set;","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","const set = require('regenerate')();\nset.addRange(0x1720, 0x1734);\nmodule.exports = set;","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n return isNonNullObject(value) && !isSpecial(value);\n};\nfunction isNonNullObject(value) {\n return !!value && typeof value === 'object';\n}\nfunction isSpecial(value) {\n var stringValue = Object.prototype.toString.call(value);\n return stringValue === '[object RegExp]' || stringValue === '[object Date]' || isReactElement(value);\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\nfunction isReactElement(value) {\n return value.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction emptyTarget(val) {\n return Array.isArray(val) ? [] : {};\n}\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n return options.clone !== false && options.isMergeableObject(value) ? deepmerge(emptyTarget(value), value, options) : value;\n}\nfunction defaultArrayMerge(target, source, options) {\n return target.concat(source).map(function (element) {\n return cloneUnlessOtherwiseSpecified(element, options);\n });\n}\nfunction getMergeFunction(key, options) {\n if (!options.customMerge) {\n return deepmerge;\n }\n var customMerge = options.customMerge(key);\n return typeof customMerge === 'function' ? customMerge : deepmerge;\n}\nfunction getEnumerableOwnPropertySymbols(target) {\n return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function (symbol) {\n return Object.propertyIsEnumerable.call(target, symbol);\n }) : [];\n}\nfunction getKeys(target) {\n return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target));\n}\nfunction propertyIsOnObject(object, property) {\n try {\n return property in object;\n } catch (_) {\n return false;\n }\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n && Object.propertyIsEnumerable.call(target, key)); // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n var destination = {};\n if (options.isMergeableObject(target)) {\n getKeys(target).forEach(function (key) {\n destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n });\n }\n getKeys(source).forEach(function (key) {\n if (propertyIsUnsafe(target, key)) {\n return;\n }\n if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n destination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n } else {\n destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n }\n });\n return destination;\n}\nfunction deepmerge(target, source, options) {\n options = options || {};\n options.arrayMerge = options.arrayMerge || defaultArrayMerge;\n options.isMergeableObject = options.isMergeableObject || isMergeableObject;\n // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n // implementations can use it. The caller may not replace it.\n options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n var sourceIsArray = Array.isArray(source);\n var targetIsArray = Array.isArray(target);\n var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n if (!sourceAndTargetTypesMatch) {\n return cloneUnlessOtherwiseSpecified(source, options);\n } else if (sourceIsArray) {\n return options.arrayMerge(target, source, options);\n } else {\n return mergeObject(target, source, options);\n }\n}\ndeepmerge.all = function deepmergeAll(array, options) {\n if (!Array.isArray(array)) {\n throw new Error('first argument should be an array');\n }\n return array.reduce(function (prev, next) {\n return deepmerge(prev, next, options);\n }, {});\n};\nvar deepmerge_1 = deepmerge;\nmodule.exports = deepmerge_1;","'use strict';\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toOffset = require('../internals/to-offset');\nvar toIndexedObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar RangeError = global.RangeError;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar $set = Int8ArrayPrototype && Int8ArrayPrototype.set;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS = !fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n var array = new Uint8ClampedArray(2);\n call($set, array, { length: 1, 0: 3 }, 1);\n return array[1] !== 3;\n});\n\n// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other\nvar TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {\n var array = new Int8Array(2);\n array.set(1);\n array.set('2', 1);\n return array[0] !== 0 || array[1] !== 2;\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var src = toIndexedObject(arrayLike);\n if (WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);\n var length = this.length;\n var len = lengthOfArrayLike(src);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, !WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);\n","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var map = {\n\t\"./Binary_Property/ASCII.js\": \"TTPM\",\n\t\"./Binary_Property/ASCII_Hex_Digit.js\": \"rKZ+\",\n\t\"./Binary_Property/Alphabetic.js\": \"PYyx\",\n\t\"./Binary_Property/Any.js\": \"hfac\",\n\t\"./Binary_Property/Assigned.js\": \"2TvA\",\n\t\"./Binary_Property/Bidi_Control.js\": \"BIHX\",\n\t\"./Binary_Property/Bidi_Mirrored.js\": \"Y6X3\",\n\t\"./Binary_Property/Case_Ignorable.js\": \"YL52\",\n\t\"./Binary_Property/Cased.js\": \"hHg9\",\n\t\"./Binary_Property/Changes_When_Casefolded.js\": \"xB3T\",\n\t\"./Binary_Property/Changes_When_Casemapped.js\": \"1N+G\",\n\t\"./Binary_Property/Changes_When_Lowercased.js\": \"v51b\",\n\t\"./Binary_Property/Changes_When_NFKC_Casefolded.js\": \"ayZG\",\n\t\"./Binary_Property/Changes_When_Titlecased.js\": \"IMPD\",\n\t\"./Binary_Property/Changes_When_Uppercased.js\": \"R1Ew\",\n\t\"./Binary_Property/Dash.js\": \"+3kn\",\n\t\"./Binary_Property/Default_Ignorable_Code_Point.js\": \"4/F7\",\n\t\"./Binary_Property/Deprecated.js\": \"wZUC\",\n\t\"./Binary_Property/Diacritic.js\": \"s0pm\",\n\t\"./Binary_Property/Emoji.js\": \"12hi\",\n\t\"./Binary_Property/Emoji_Component.js\": \"mzUC\",\n\t\"./Binary_Property/Emoji_Modifier.js\": \"0nmF\",\n\t\"./Binary_Property/Emoji_Modifier_Base.js\": \"+hQC\",\n\t\"./Binary_Property/Emoji_Presentation.js\": \"ep7J\",\n\t\"./Binary_Property/Extended_Pictographic.js\": \"gx40\",\n\t\"./Binary_Property/Extender.js\": \"jq6q\",\n\t\"./Binary_Property/Grapheme_Base.js\": \"ojcp\",\n\t\"./Binary_Property/Grapheme_Extend.js\": \"V3uO\",\n\t\"./Binary_Property/Hex_Digit.js\": \"4YcT\",\n\t\"./Binary_Property/IDS_Binary_Operator.js\": \"KgQe\",\n\t\"./Binary_Property/IDS_Trinary_Operator.js\": \"rZx1\",\n\t\"./Binary_Property/ID_Continue.js\": \"Z3Cz\",\n\t\"./Binary_Property/ID_Start.js\": \"/VW1\",\n\t\"./Binary_Property/Ideographic.js\": \"VdHZ\",\n\t\"./Binary_Property/Join_Control.js\": \"6XJR\",\n\t\"./Binary_Property/Logical_Order_Exception.js\": \"18Iv\",\n\t\"./Binary_Property/Lowercase.js\": \"RlPj\",\n\t\"./Binary_Property/Math.js\": \"ZtX9\",\n\t\"./Binary_Property/Noncharacter_Code_Point.js\": \"IZLa\",\n\t\"./Binary_Property/Pattern_Syntax.js\": \"YNcp\",\n\t\"./Binary_Property/Pattern_White_Space.js\": \"pLr0\",\n\t\"./Binary_Property/Quotation_Mark.js\": \"bVt1\",\n\t\"./Binary_Property/Radical.js\": \"V6iA\",\n\t\"./Binary_Property/Regional_Indicator.js\": \"gXbN\",\n\t\"./Binary_Property/Sentence_Terminal.js\": \"yNbx\",\n\t\"./Binary_Property/Soft_Dotted.js\": \"TP4o\",\n\t\"./Binary_Property/Terminal_Punctuation.js\": \"SPrB\",\n\t\"./Binary_Property/Unified_Ideograph.js\": \"lqdz\",\n\t\"./Binary_Property/Uppercase.js\": \"wJ4O\",\n\t\"./Binary_Property/Variation_Selector.js\": \"zYVL\",\n\t\"./Binary_Property/White_Space.js\": \"mCz8\",\n\t\"./Binary_Property/XID_Continue.js\": \"7jO/\",\n\t\"./Binary_Property/XID_Start.js\": \"CkxS\",\n\t\"./General_Category/Cased_Letter.js\": \"JTjc\",\n\t\"./General_Category/Close_Punctuation.js\": \"LZZ3\",\n\t\"./General_Category/Connector_Punctuation.js\": \"J7in\",\n\t\"./General_Category/Control.js\": \"ZKzb\",\n\t\"./General_Category/Currency_Symbol.js\": \"S/gH\",\n\t\"./General_Category/Dash_Punctuation.js\": \"OQyL\",\n\t\"./General_Category/Decimal_Number.js\": \"yyEx\",\n\t\"./General_Category/Enclosing_Mark.js\": \"aBVj\",\n\t\"./General_Category/Final_Punctuation.js\": \"K9hv\",\n\t\"./General_Category/Format.js\": \"Ohg8\",\n\t\"./General_Category/Initial_Punctuation.js\": \"DusV\",\n\t\"./General_Category/Letter.js\": \"PVUd\",\n\t\"./General_Category/Letter_Number.js\": \"/soj\",\n\t\"./General_Category/Line_Separator.js\": \"oOya\",\n\t\"./General_Category/Lowercase_Letter.js\": \"PeYj\",\n\t\"./General_Category/Mark.js\": \"yxwC\",\n\t\"./General_Category/Math_Symbol.js\": \"owBG\",\n\t\"./General_Category/Modifier_Letter.js\": \"6oKa\",\n\t\"./General_Category/Modifier_Symbol.js\": \"OMsT\",\n\t\"./General_Category/Nonspacing_Mark.js\": \"ezlQ\",\n\t\"./General_Category/Number.js\": \"0vCW\",\n\t\"./General_Category/Open_Punctuation.js\": \"JpfW\",\n\t\"./General_Category/Other.js\": \"BG0k\",\n\t\"./General_Category/Other_Letter.js\": \"v+A9\",\n\t\"./General_Category/Other_Number.js\": \"l/XR\",\n\t\"./General_Category/Other_Punctuation.js\": \"oeGF\",\n\t\"./General_Category/Other_Symbol.js\": \"5xM+\",\n\t\"./General_Category/Paragraph_Separator.js\": \"TveE\",\n\t\"./General_Category/Private_Use.js\": \"GS9R\",\n\t\"./General_Category/Punctuation.js\": \"CmM2\",\n\t\"./General_Category/Separator.js\": \"HpTs\",\n\t\"./General_Category/Space_Separator.js\": \"Buer\",\n\t\"./General_Category/Spacing_Mark.js\": \"9wuW\",\n\t\"./General_Category/Surrogate.js\": \"vudz\",\n\t\"./General_Category/Symbol.js\": \"/dLw\",\n\t\"./General_Category/Titlecase_Letter.js\": \"3O+O\",\n\t\"./General_Category/Unassigned.js\": \"QXET\",\n\t\"./General_Category/Uppercase_Letter.js\": \"rqE6\",\n\t\"./Script/Adlam.js\": \"Wry+\",\n\t\"./Script/Ahom.js\": \"GsYE\",\n\t\"./Script/Anatolian_Hieroglyphs.js\": \"dOYW\",\n\t\"./Script/Arabic.js\": \"FvNL\",\n\t\"./Script/Armenian.js\": \"/yAK\",\n\t\"./Script/Avestan.js\": \"GcGr\",\n\t\"./Script/Balinese.js\": \"LAM2\",\n\t\"./Script/Bamum.js\": \"7V9v\",\n\t\"./Script/Bassa_Vah.js\": \"kBqS\",\n\t\"./Script/Batak.js\": \"Jx5A\",\n\t\"./Script/Bengali.js\": \"fjIA\",\n\t\"./Script/Bhaiksuki.js\": \"2vIc\",\n\t\"./Script/Bopomofo.js\": \"HLRT\",\n\t\"./Script/Brahmi.js\": \"bntx\",\n\t\"./Script/Braille.js\": \"6O1M\",\n\t\"./Script/Buginese.js\": \"JFG7\",\n\t\"./Script/Buhid.js\": \"wnaP\",\n\t\"./Script/Canadian_Aboriginal.js\": \"OZnc\",\n\t\"./Script/Carian.js\": \"V8Tt\",\n\t\"./Script/Caucasian_Albanian.js\": \"WR1s\",\n\t\"./Script/Chakma.js\": \"vvaZ\",\n\t\"./Script/Cham.js\": \"BrKN\",\n\t\"./Script/Cherokee.js\": \"1CAE\",\n\t\"./Script/Chorasmian.js\": \"Sgk+\",\n\t\"./Script/Common.js\": \"A5PK\",\n\t\"./Script/Coptic.js\": \"HGcO\",\n\t\"./Script/Cuneiform.js\": \"8PCV\",\n\t\"./Script/Cypriot.js\": \"PVma\",\n\t\"./Script/Cypro_Minoan.js\": \"Z/4g\",\n\t\"./Script/Cyrillic.js\": \"6axZ\",\n\t\"./Script/Deseret.js\": \"OTnk\",\n\t\"./Script/Devanagari.js\": \"hSpq\",\n\t\"./Script/Dives_Akuru.js\": \"Hv6T\",\n\t\"./Script/Dogra.js\": \"D+nV\",\n\t\"./Script/Duployan.js\": \"juuj\",\n\t\"./Script/Egyptian_Hieroglyphs.js\": \"6wcF\",\n\t\"./Script/Elbasan.js\": \"xKmi\",\n\t\"./Script/Elymaic.js\": \"KDQ6\",\n\t\"./Script/Ethiopic.js\": \"ec/7\",\n\t\"./Script/Georgian.js\": \"h4fK\",\n\t\"./Script/Glagolitic.js\": \"hTB4\",\n\t\"./Script/Gothic.js\": \"lazI\",\n\t\"./Script/Grantha.js\": \"gwxh\",\n\t\"./Script/Greek.js\": \"9ulf\",\n\t\"./Script/Gujarati.js\": \"wQeB\",\n\t\"./Script/Gunjala_Gondi.js\": \"N7XW\",\n\t\"./Script/Gurmukhi.js\": \"TQJj\",\n\t\"./Script/Han.js\": \"9H9O\",\n\t\"./Script/Hangul.js\": \"jLBR\",\n\t\"./Script/Hanifi_Rohingya.js\": \"/I8K\",\n\t\"./Script/Hanunoo.js\": \"P0BJ\",\n\t\"./Script/Hatran.js\": \"duBa\",\n\t\"./Script/Hebrew.js\": \"uT2Q\",\n\t\"./Script/Hiragana.js\": \"edsp\",\n\t\"./Script/Imperial_Aramaic.js\": \"61NE\",\n\t\"./Script/Inherited.js\": \"Umia\",\n\t\"./Script/Inscriptional_Pahlavi.js\": \"nwfO\",\n\t\"./Script/Inscriptional_Parthian.js\": \"vAm1\",\n\t\"./Script/Javanese.js\": \"477v\",\n\t\"./Script/Kaithi.js\": \"4172\",\n\t\"./Script/Kannada.js\": \"hUzA\",\n\t\"./Script/Katakana.js\": \"V+/M\",\n\t\"./Script/Kayah_Li.js\": \"a0Op\",\n\t\"./Script/Kharoshthi.js\": \"IxPn\",\n\t\"./Script/Khitan_Small_Script.js\": \"dP5d\",\n\t\"./Script/Khmer.js\": \"QX2T\",\n\t\"./Script/Khojki.js\": \"Eo24\",\n\t\"./Script/Khudawadi.js\": \"+QyN\",\n\t\"./Script/Lao.js\": \"7oRX\",\n\t\"./Script/Latin.js\": \"dN2w\",\n\t\"./Script/Lepcha.js\": \"5bsx\",\n\t\"./Script/Limbu.js\": \"u9lQ\",\n\t\"./Script/Linear_A.js\": \"5scg\",\n\t\"./Script/Linear_B.js\": \"WPcv\",\n\t\"./Script/Lisu.js\": \"aE84\",\n\t\"./Script/Lycian.js\": \"/qLS\",\n\t\"./Script/Lydian.js\": \"lyes\",\n\t\"./Script/Mahajani.js\": \"uwDI\",\n\t\"./Script/Makasar.js\": \"jdFt\",\n\t\"./Script/Malayalam.js\": \"HYoX\",\n\t\"./Script/Mandaic.js\": \"bcGR\",\n\t\"./Script/Manichaean.js\": \"/pZ2\",\n\t\"./Script/Marchen.js\": \"LqhL\",\n\t\"./Script/Masaram_Gondi.js\": \"p1v9\",\n\t\"./Script/Medefaidrin.js\": \"z0Ef\",\n\t\"./Script/Meetei_Mayek.js\": \"IrW+\",\n\t\"./Script/Mende_Kikakui.js\": \"xEZB\",\n\t\"./Script/Meroitic_Cursive.js\": \"Hu3I\",\n\t\"./Script/Meroitic_Hieroglyphs.js\": \"wgmE\",\n\t\"./Script/Miao.js\": \"kd9n\",\n\t\"./Script/Modi.js\": \"cU+8\",\n\t\"./Script/Mongolian.js\": \"tUQf\",\n\t\"./Script/Mro.js\": \"5eRf\",\n\t\"./Script/Multani.js\": \"MG+M\",\n\t\"./Script/Myanmar.js\": \"kiIX\",\n\t\"./Script/Nabataean.js\": \"Uyem\",\n\t\"./Script/Nandinagari.js\": \"9Z7h\",\n\t\"./Script/New_Tai_Lue.js\": \"owni\",\n\t\"./Script/Newa.js\": \"v4Ei\",\n\t\"./Script/Nko.js\": \"whKM\",\n\t\"./Script/Nushu.js\": \"S/lv\",\n\t\"./Script/Nyiakeng_Puachue_Hmong.js\": \"Dpr8\",\n\t\"./Script/Ogham.js\": \"fdhu\",\n\t\"./Script/Ol_Chiki.js\": \"F8j9\",\n\t\"./Script/Old_Hungarian.js\": \"CD0r\",\n\t\"./Script/Old_Italic.js\": \"xaC0\",\n\t\"./Script/Old_North_Arabian.js\": \"twGC\",\n\t\"./Script/Old_Permic.js\": \"2+yD\",\n\t\"./Script/Old_Persian.js\": \"M9F6\",\n\t\"./Script/Old_Sogdian.js\": \"jWEa\",\n\t\"./Script/Old_South_Arabian.js\": \"F0lk\",\n\t\"./Script/Old_Turkic.js\": \"xqwB\",\n\t\"./Script/Old_Uyghur.js\": \"oSFm\",\n\t\"./Script/Oriya.js\": \"uEWo\",\n\t\"./Script/Osage.js\": \"1n5g\",\n\t\"./Script/Osmanya.js\": \"SZfN\",\n\t\"./Script/Pahawh_Hmong.js\": \"RMPE\",\n\t\"./Script/Palmyrene.js\": \"UVpH\",\n\t\"./Script/Pau_Cin_Hau.js\": \"MNEN\",\n\t\"./Script/Phags_Pa.js\": \"NhNr\",\n\t\"./Script/Phoenician.js\": \"34Qh\",\n\t\"./Script/Psalter_Pahlavi.js\": \"SzA2\",\n\t\"./Script/Rejang.js\": \"dC9X\",\n\t\"./Script/Runic.js\": \"t4pw\",\n\t\"./Script/Samaritan.js\": \"pPeY\",\n\t\"./Script/Saurashtra.js\": \"m7G6\",\n\t\"./Script/Sharada.js\": \"NcVZ\",\n\t\"./Script/Shavian.js\": \"RI8b\",\n\t\"./Script/Siddham.js\": \"ASKt\",\n\t\"./Script/SignWriting.js\": \"2JK7\",\n\t\"./Script/Sinhala.js\": \"LZTu\",\n\t\"./Script/Sogdian.js\": \"NpMe\",\n\t\"./Script/Sora_Sompeng.js\": \"Ng/I\",\n\t\"./Script/Soyombo.js\": \"6JnI\",\n\t\"./Script/Sundanese.js\": \"pyWQ\",\n\t\"./Script/Syloti_Nagri.js\": \"LBZI\",\n\t\"./Script/Syriac.js\": \"hy24\",\n\t\"./Script/Tagalog.js\": \"9H8i\",\n\t\"./Script/Tagbanwa.js\": \"sI65\",\n\t\"./Script/Tai_Le.js\": \"nFf/\",\n\t\"./Script/Tai_Tham.js\": \"isMi\",\n\t\"./Script/Tai_Viet.js\": \"IpiY\",\n\t\"./Script/Takri.js\": \"Rqf3\",\n\t\"./Script/Tamil.js\": \"mdlW\",\n\t\"./Script/Tangsa.js\": \"vaj4\",\n\t\"./Script/Tangut.js\": \"n4XR\",\n\t\"./Script/Telugu.js\": \"xlHm\",\n\t\"./Script/Thaana.js\": \"DGa8\",\n\t\"./Script/Thai.js\": \"OQG6\",\n\t\"./Script/Tibetan.js\": \"MYbx\",\n\t\"./Script/Tifinagh.js\": \"ZAyF\",\n\t\"./Script/Tirhuta.js\": \"ojjd\",\n\t\"./Script/Toto.js\": \"Q7Nf\",\n\t\"./Script/Ugaritic.js\": \"kcLn\",\n\t\"./Script/Vai.js\": \"5EYo\",\n\t\"./Script/Vithkuqi.js\": \"72aI\",\n\t\"./Script/Wancho.js\": \"IAU5\",\n\t\"./Script/Warang_Citi.js\": \"JUhp\",\n\t\"./Script/Yezidi.js\": \"16uS\",\n\t\"./Script/Yi.js\": \"t4zZ\",\n\t\"./Script/Zanabazar_Square.js\": \"0Z/U\",\n\t\"./Script_Extensions/Adlam.js\": \"mdLn\",\n\t\"./Script_Extensions/Ahom.js\": \"n75q\",\n\t\"./Script_Extensions/Anatolian_Hieroglyphs.js\": \"MHIA\",\n\t\"./Script_Extensions/Arabic.js\": \"1ygP\",\n\t\"./Script_Extensions/Armenian.js\": \"v1yY\",\n\t\"./Script_Extensions/Avestan.js\": \"YulU\",\n\t\"./Script_Extensions/Balinese.js\": \"S+sJ\",\n\t\"./Script_Extensions/Bamum.js\": \"6Ik7\",\n\t\"./Script_Extensions/Bassa_Vah.js\": \"KRcP\",\n\t\"./Script_Extensions/Batak.js\": \"zSGR\",\n\t\"./Script_Extensions/Bengali.js\": \"AyyQ\",\n\t\"./Script_Extensions/Bhaiksuki.js\": \"1ont\",\n\t\"./Script_Extensions/Bopomofo.js\": \"JQ99\",\n\t\"./Script_Extensions/Brahmi.js\": \"jaDh\",\n\t\"./Script_Extensions/Braille.js\": \"lnBL\",\n\t\"./Script_Extensions/Buginese.js\": \"rGMh\",\n\t\"./Script_Extensions/Buhid.js\": \"wcex\",\n\t\"./Script_Extensions/Canadian_Aboriginal.js\": \"uSeW\",\n\t\"./Script_Extensions/Carian.js\": \"zMEA\",\n\t\"./Script_Extensions/Caucasian_Albanian.js\": \"FJfz\",\n\t\"./Script_Extensions/Chakma.js\": \"9LXj\",\n\t\"./Script_Extensions/Cham.js\": \"sceD\",\n\t\"./Script_Extensions/Cherokee.js\": \"5TAg\",\n\t\"./Script_Extensions/Chorasmian.js\": \"jzOb\",\n\t\"./Script_Extensions/Common.js\": \"2rse\",\n\t\"./Script_Extensions/Coptic.js\": \"o3Hh\",\n\t\"./Script_Extensions/Cuneiform.js\": \"Piar\",\n\t\"./Script_Extensions/Cypriot.js\": \"Md75\",\n\t\"./Script_Extensions/Cypro_Minoan.js\": \"6DvP\",\n\t\"./Script_Extensions/Cyrillic.js\": \"CfQf\",\n\t\"./Script_Extensions/Deseret.js\": \"BSjU\",\n\t\"./Script_Extensions/Devanagari.js\": \"uEkq\",\n\t\"./Script_Extensions/Dives_Akuru.js\": \"qtun\",\n\t\"./Script_Extensions/Dogra.js\": \"6hTu\",\n\t\"./Script_Extensions/Duployan.js\": \"rTvz\",\n\t\"./Script_Extensions/Egyptian_Hieroglyphs.js\": \"zIrX\",\n\t\"./Script_Extensions/Elbasan.js\": \"iJwc\",\n\t\"./Script_Extensions/Elymaic.js\": \"SAe1\",\n\t\"./Script_Extensions/Ethiopic.js\": \"oT1F\",\n\t\"./Script_Extensions/Georgian.js\": \"p6v3\",\n\t\"./Script_Extensions/Glagolitic.js\": \"eSoS\",\n\t\"./Script_Extensions/Gothic.js\": \"0h7X\",\n\t\"./Script_Extensions/Grantha.js\": \"a8VH\",\n\t\"./Script_Extensions/Greek.js\": \"T9DP\",\n\t\"./Script_Extensions/Gujarati.js\": \"olBg\",\n\t\"./Script_Extensions/Gunjala_Gondi.js\": \"/Hxr\",\n\t\"./Script_Extensions/Gurmukhi.js\": \"9jCe\",\n\t\"./Script_Extensions/Han.js\": \"VqP8\",\n\t\"./Script_Extensions/Hangul.js\": \"RHGG\",\n\t\"./Script_Extensions/Hanifi_Rohingya.js\": \"dbxg\",\n\t\"./Script_Extensions/Hanunoo.js\": \"8Gun\",\n\t\"./Script_Extensions/Hatran.js\": \"6Ls2\",\n\t\"./Script_Extensions/Hebrew.js\": \"6gQq\",\n\t\"./Script_Extensions/Hiragana.js\": \"i6W2\",\n\t\"./Script_Extensions/Imperial_Aramaic.js\": \"8goA\",\n\t\"./Script_Extensions/Inherited.js\": \"TgRP\",\n\t\"./Script_Extensions/Inscriptional_Pahlavi.js\": \"m1ma\",\n\t\"./Script_Extensions/Inscriptional_Parthian.js\": \"lERh\",\n\t\"./Script_Extensions/Javanese.js\": \"xn3E\",\n\t\"./Script_Extensions/Kaithi.js\": \"K1Le\",\n\t\"./Script_Extensions/Kannada.js\": \"sR9r\",\n\t\"./Script_Extensions/Katakana.js\": \"MpeM\",\n\t\"./Script_Extensions/Kayah_Li.js\": \"EkIy\",\n\t\"./Script_Extensions/Kharoshthi.js\": \"73FR\",\n\t\"./Script_Extensions/Khitan_Small_Script.js\": \"suAS\",\n\t\"./Script_Extensions/Khmer.js\": \"jRTF\",\n\t\"./Script_Extensions/Khojki.js\": \"6zB/\",\n\t\"./Script_Extensions/Khudawadi.js\": \"GI2u\",\n\t\"./Script_Extensions/Lao.js\": \"PQ0K\",\n\t\"./Script_Extensions/Latin.js\": \"2BBF\",\n\t\"./Script_Extensions/Lepcha.js\": \"tF1p\",\n\t\"./Script_Extensions/Limbu.js\": \"zyj0\",\n\t\"./Script_Extensions/Linear_A.js\": \"lFV7\",\n\t\"./Script_Extensions/Linear_B.js\": \"jawv\",\n\t\"./Script_Extensions/Lisu.js\": \"qzaw\",\n\t\"./Script_Extensions/Lycian.js\": \"wqYY\",\n\t\"./Script_Extensions/Lydian.js\": \"n+Zh\",\n\t\"./Script_Extensions/Mahajani.js\": \"z8DC\",\n\t\"./Script_Extensions/Makasar.js\": \"RNCu\",\n\t\"./Script_Extensions/Malayalam.js\": \"wtBk\",\n\t\"./Script_Extensions/Mandaic.js\": \"untw\",\n\t\"./Script_Extensions/Manichaean.js\": \"n1Oh\",\n\t\"./Script_Extensions/Marchen.js\": \"8fW5\",\n\t\"./Script_Extensions/Masaram_Gondi.js\": \"JBN+\",\n\t\"./Script_Extensions/Medefaidrin.js\": \"02tC\",\n\t\"./Script_Extensions/Meetei_Mayek.js\": \"PoXS\",\n\t\"./Script_Extensions/Mende_Kikakui.js\": \"7jK8\",\n\t\"./Script_Extensions/Meroitic_Cursive.js\": \"U8oa\",\n\t\"./Script_Extensions/Meroitic_Hieroglyphs.js\": \"WAkd\",\n\t\"./Script_Extensions/Miao.js\": \"G1tY\",\n\t\"./Script_Extensions/Modi.js\": \"HwGp\",\n\t\"./Script_Extensions/Mongolian.js\": \"WGqn\",\n\t\"./Script_Extensions/Mro.js\": \"UQmg\",\n\t\"./Script_Extensions/Multani.js\": \"WfgX\",\n\t\"./Script_Extensions/Myanmar.js\": \"bqHw\",\n\t\"./Script_Extensions/Nabataean.js\": \"pjPY\",\n\t\"./Script_Extensions/Nandinagari.js\": \"ObV2\",\n\t\"./Script_Extensions/New_Tai_Lue.js\": \"ZsYH\",\n\t\"./Script_Extensions/Newa.js\": \"5tk3\",\n\t\"./Script_Extensions/Nko.js\": \"/kDM\",\n\t\"./Script_Extensions/Nushu.js\": \"JSPL\",\n\t\"./Script_Extensions/Nyiakeng_Puachue_Hmong.js\": \"xsuf\",\n\t\"./Script_Extensions/Ogham.js\": \"2PVI\",\n\t\"./Script_Extensions/Ol_Chiki.js\": \"NTOk\",\n\t\"./Script_Extensions/Old_Hungarian.js\": \"IK5f\",\n\t\"./Script_Extensions/Old_Italic.js\": \"VHj/\",\n\t\"./Script_Extensions/Old_North_Arabian.js\": \"XcdB\",\n\t\"./Script_Extensions/Old_Permic.js\": \"kp9+\",\n\t\"./Script_Extensions/Old_Persian.js\": \"kAvF\",\n\t\"./Script_Extensions/Old_Sogdian.js\": \"oml3\",\n\t\"./Script_Extensions/Old_South_Arabian.js\": \"F3Lr\",\n\t\"./Script_Extensions/Old_Turkic.js\": \"ZaWa\",\n\t\"./Script_Extensions/Old_Uyghur.js\": \"9rk1\",\n\t\"./Script_Extensions/Oriya.js\": \"MA0n\",\n\t\"./Script_Extensions/Osage.js\": \"i1w3\",\n\t\"./Script_Extensions/Osmanya.js\": \"EVgB\",\n\t\"./Script_Extensions/Pahawh_Hmong.js\": \"EJMw\",\n\t\"./Script_Extensions/Palmyrene.js\": \"kCFO\",\n\t\"./Script_Extensions/Pau_Cin_Hau.js\": \"96ys\",\n\t\"./Script_Extensions/Phags_Pa.js\": \"jca9\",\n\t\"./Script_Extensions/Phoenician.js\": \"sMr2\",\n\t\"./Script_Extensions/Psalter_Pahlavi.js\": \"yP4Y\",\n\t\"./Script_Extensions/Rejang.js\": \"AkQd\",\n\t\"./Script_Extensions/Runic.js\": \"Dm2Y\",\n\t\"./Script_Extensions/Samaritan.js\": \"zWlK\",\n\t\"./Script_Extensions/Saurashtra.js\": \"wOBA\",\n\t\"./Script_Extensions/Sharada.js\": \"idKo\",\n\t\"./Script_Extensions/Shavian.js\": \"Wp8k\",\n\t\"./Script_Extensions/Siddham.js\": \"0OBK\",\n\t\"./Script_Extensions/SignWriting.js\": \"mJRM\",\n\t\"./Script_Extensions/Sinhala.js\": \"7xP4\",\n\t\"./Script_Extensions/Sogdian.js\": \"9VM+\",\n\t\"./Script_Extensions/Sora_Sompeng.js\": \"jM+1\",\n\t\"./Script_Extensions/Soyombo.js\": \"ZSfS\",\n\t\"./Script_Extensions/Sundanese.js\": \"xs8s\",\n\t\"./Script_Extensions/Syloti_Nagri.js\": \"X29h\",\n\t\"./Script_Extensions/Syriac.js\": \"HUGt\",\n\t\"./Script_Extensions/Tagalog.js\": \"9/o/\",\n\t\"./Script_Extensions/Tagbanwa.js\": \"Cw5x\",\n\t\"./Script_Extensions/Tai_Le.js\": \"64uU\",\n\t\"./Script_Extensions/Tai_Tham.js\": \"7GeA\",\n\t\"./Script_Extensions/Tai_Viet.js\": \"wA4O\",\n\t\"./Script_Extensions/Takri.js\": \"MSEK\",\n\t\"./Script_Extensions/Tamil.js\": \"+XeO\",\n\t\"./Script_Extensions/Tangsa.js\": \"VArt\",\n\t\"./Script_Extensions/Tangut.js\": \"X2h1\",\n\t\"./Script_Extensions/Telugu.js\": \"a37I\",\n\t\"./Script_Extensions/Thaana.js\": \"YXr4\",\n\t\"./Script_Extensions/Thai.js\": \"9mTJ\",\n\t\"./Script_Extensions/Tibetan.js\": \"hQqI\",\n\t\"./Script_Extensions/Tifinagh.js\": \"MBkK\",\n\t\"./Script_Extensions/Tirhuta.js\": \"wmPc\",\n\t\"./Script_Extensions/Toto.js\": \"n7sV\",\n\t\"./Script_Extensions/Ugaritic.js\": \"tgrt\",\n\t\"./Script_Extensions/Vai.js\": \"cyPN\",\n\t\"./Script_Extensions/Vithkuqi.js\": \"lBvs\",\n\t\"./Script_Extensions/Wancho.js\": \"ELeP\",\n\t\"./Script_Extensions/Warang_Citi.js\": \"JEgC\",\n\t\"./Script_Extensions/Yezidi.js\": \"8nCx\",\n\t\"./Script_Extensions/Yi.js\": \"CnAY\",\n\t\"./Script_Extensions/Zanabazar_Square.js\": \"Xx7p\",\n\t\"./index.js\": \"aAIp\",\n\t\"./unicode-version.js\": \"9NKt\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"PML8\";","const set = require('regenerate')(0xE84, 0xEA5, 0xEC6);\nset.addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEBD).addRange(0xEC0, 0xEC4).addRange(0xEC8, 0xECD).addRange(0xED0, 0xED9).addRange(0xEDC, 0xEDF);\nmodule.exports = set;","import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n
    {`local`}{` k `}{`=`}{` `}{`import`}{` `}{`\"k.libsonnet\"`}{`;`}{`\n`}{`\n`}{`{`}{`\n`}{`    `}{`grafana:`}{` k.apps.v1.deployment.`}{`new`}{`(`}{`\n`}{`        name=`}{`\"grafana\"`}{`,`}{`\n`}{`        replicas=`}{`1`}{`,`}{`\n`}{`        containers=[k.core.v1.container.`}{`new`}{`(`}{`\n`}{`            name=`}{`\"grafana\"`}{`,`}{`\n`}{`            image=`}{`\"grafana/grafana\"`}{`,`}{`\n`}{`        )]`}{`\n`}{`    )`}{`\n`}{`}`}
    \n\n \n
    ;\n}\n;\nMDXContent.isMDXComponent = true;\n ","const set = require('regenerate')(0xAA, 0xB5, 0xBA, 0x2EC, 0x2EE, 0x37F, 0x386, 0x38C, 0x559, 0x6D5, 0x6FF, 0x710, 0x7B1, 0x7FA, 0x81A, 0x824, 0x828, 0x93D, 0x950, 0x9B2, 0x9BD, 0x9CE, 0x9FC, 0xA5E, 0xABD, 0xAD0, 0xAF9, 0xB3D, 0xB71, 0xB83, 0xB9C, 0xBD0, 0xC3D, 0xC5D, 0xC80, 0xCBD, 0xD3D, 0xD4E, 0xDBD, 0xE84, 0xEA5, 0xEBD, 0xEC6, 0xF00, 0x103F, 0x1061, 0x108E, 0x10C7, 0x10CD, 0x1258, 0x12C0, 0x17D7, 0x17DC, 0x18AA, 0x1AA7, 0x1CFA, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2071, 0x207F, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x214E, 0x2D27, 0x2D2D, 0x2D6F, 0x2E2F, 0xA7D3, 0xA8FB, 0xA9CF, 0xAA7A, 0xAAB1, 0xAAC0, 0xAAC2, 0xFB1D, 0xFB3E, 0x10808, 0x1083C, 0x10A00, 0x10F27, 0x11075, 0x11144, 0x11147, 0x11176, 0x111DA, 0x111DC, 0x11288, 0x1133D, 0x11350, 0x114C7, 0x11644, 0x116B8, 0x11909, 0x1193F, 0x11941, 0x119E1, 0x119E3, 0x11A00, 0x11A3A, 0x11A50, 0x11A9D, 0x11C40, 0x11D46, 0x11D98, 0x11FB0, 0x16F50, 0x16FE3, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1E14E, 0x1E94B, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);\nset.addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x2C1).addRange(0x2C6, 0x2D1).addRange(0x2E0, 0x2E4).addRange(0x370, 0x374).addRange(0x376, 0x377).addRange(0x37A, 0x37D).addRange(0x388, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3F5).addRange(0x3F7, 0x481).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x560, 0x588).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F2).addRange(0x620, 0x64A).addRange(0x66E, 0x66F).addRange(0x671, 0x6D3).addRange(0x6E5, 0x6E6).addRange(0x6EE, 0x6EF).addRange(0x6FA, 0x6FC).addRange(0x712, 0x72F).addRange(0x74D, 0x7A5).addRange(0x7CA, 0x7EA).addRange(0x7F4, 0x7F5).addRange(0x800, 0x815).addRange(0x840, 0x858).addRange(0x860, 0x86A).addRange(0x870, 0x887).addRange(0x889, 0x88E).addRange(0x8A0, 0x8C9).addRange(0x904, 0x939).addRange(0x958, 0x961).addRange(0x971, 0x980).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E1).addRange(0x9F0, 0x9F1).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33);\nset.addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA59, 0xA5C).addRange(0xA72, 0xA74).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xAE0, 0xAE1).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB61).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xC05, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC61).addRange(0xC85, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE1).addRange(0xCF1, 0xCF2).addRange(0xD04, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD3A).addRange(0xD54, 0xD56).addRange(0xD5F, 0xD61).addRange(0xD7A, 0xD7F).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6);\nset.addRange(0xE01, 0xE30).addRange(0xE32, 0xE33).addRange(0xE40, 0xE46).addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEB0).addRange(0xEB2, 0xEB3).addRange(0xEC0, 0xEC4).addRange(0xEDC, 0xEDF).addRange(0xF40, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF88, 0xF8C).addRange(0x1000, 0x102A).addRange(0x1050, 0x1055).addRange(0x105A, 0x105D).addRange(0x1065, 0x1066).addRange(0x106E, 0x1070).addRange(0x1075, 0x1081).addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FC, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x1380, 0x138F).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1401, 0x166C).addRange(0x166F, 0x167F).addRange(0x1681, 0x169A).addRange(0x16A0, 0x16EA).addRange(0x16F1, 0x16F8).addRange(0x1700, 0x1711).addRange(0x171F, 0x1731).addRange(0x1740, 0x1751).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1780, 0x17B3).addRange(0x1820, 0x1878).addRange(0x1880, 0x1884);\nset.addRange(0x1887, 0x18A8).addRange(0x18B0, 0x18F5).addRange(0x1900, 0x191E).addRange(0x1950, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x1A00, 0x1A16).addRange(0x1A20, 0x1A54).addRange(0x1B05, 0x1B33).addRange(0x1B45, 0x1B4C).addRange(0x1B83, 0x1BA0).addRange(0x1BAE, 0x1BAF).addRange(0x1BBA, 0x1BE5).addRange(0x1C00, 0x1C23).addRange(0x1C4D, 0x1C4F).addRange(0x1C5A, 0x1C7D).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1CE9, 0x1CEC).addRange(0x1CEE, 0x1CF3).addRange(0x1CF5, 0x1CF6).addRange(0x1D00, 0x1DBF).addRange(0x1E00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FBC).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FCC).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FE0, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFC).addRange(0x2090, 0x209C).addRange(0x210A, 0x2113).addRange(0x2119, 0x211D).addRange(0x212A, 0x212D).addRange(0x212F, 0x2139).addRange(0x213C, 0x213F).addRange(0x2145, 0x2149).addRange(0x2183, 0x2184).addRange(0x2C00, 0x2CE4).addRange(0x2CEB, 0x2CEE).addRange(0x2CF2, 0x2CF3).addRange(0x2D00, 0x2D25);\nset.addRange(0x2D30, 0x2D67).addRange(0x2D80, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x3005, 0x3006).addRange(0x3031, 0x3035).addRange(0x303B, 0x303C).addRange(0x3041, 0x3096).addRange(0x309D, 0x309F).addRange(0x30A1, 0x30FA).addRange(0x30FC, 0x30FF).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x31A0, 0x31BF).addRange(0x31F0, 0x31FF).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0xA48C).addRange(0xA4D0, 0xA4FD).addRange(0xA500, 0xA60C).addRange(0xA610, 0xA61F).addRange(0xA62A, 0xA62B).addRange(0xA640, 0xA66E).addRange(0xA67F, 0xA69D).addRange(0xA6A0, 0xA6E5).addRange(0xA717, 0xA71F).addRange(0xA722, 0xA788).addRange(0xA78B, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA801).addRange(0xA803, 0xA805).addRange(0xA807, 0xA80A).addRange(0xA80C, 0xA822).addRange(0xA840, 0xA873).addRange(0xA882, 0xA8B3).addRange(0xA8F2, 0xA8F7).addRange(0xA8FD, 0xA8FE).addRange(0xA90A, 0xA925).addRange(0xA930, 0xA946).addRange(0xA960, 0xA97C).addRange(0xA984, 0xA9B2).addRange(0xA9E0, 0xA9E4).addRange(0xA9E6, 0xA9EF).addRange(0xA9FA, 0xA9FE).addRange(0xAA00, 0xAA28);\nset.addRange(0xAA40, 0xAA42).addRange(0xAA44, 0xAA4B).addRange(0xAA60, 0xAA76).addRange(0xAA7E, 0xAAAF).addRange(0xAAB5, 0xAAB6).addRange(0xAAB9, 0xAABD).addRange(0xAADB, 0xAADD).addRange(0xAAE0, 0xAAEA).addRange(0xAAF2, 0xAAF4).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB69).addRange(0xAB70, 0xABE2).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1F, 0xFB28).addRange(0xFB2A, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBB1).addRange(0xFBD3, 0xFD3D).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFB).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0xFF66, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10280, 0x1029C);\nset.addRange(0x102A0, 0x102D0).addRange(0x10300, 0x1031F).addRange(0x1032D, 0x10340).addRange(0x10342, 0x10349).addRange(0x10350, 0x10375).addRange(0x10380, 0x1039D).addRange(0x103A0, 0x103C3).addRange(0x103C8, 0x103CF).addRange(0x10400, 0x1049D).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10860, 0x10876).addRange(0x10880, 0x1089E).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x10900, 0x10915).addRange(0x10920, 0x10939).addRange(0x10980, 0x109B7).addRange(0x109BE, 0x109BF).addRange(0x10A10, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A60, 0x10A7C).addRange(0x10A80, 0x10A9C).addRange(0x10AC0, 0x10AC7).addRange(0x10AC9, 0x10AE4).addRange(0x10B00, 0x10B35).addRange(0x10B40, 0x10B55).addRange(0x10B60, 0x10B72).addRange(0x10B80, 0x10B91).addRange(0x10C00, 0x10C48);\nset.addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10D00, 0x10D23).addRange(0x10E80, 0x10EA9).addRange(0x10EB0, 0x10EB1).addRange(0x10F00, 0x10F1C).addRange(0x10F30, 0x10F45).addRange(0x10F70, 0x10F81).addRange(0x10FB0, 0x10FC4).addRange(0x10FE0, 0x10FF6).addRange(0x11003, 0x11037).addRange(0x11071, 0x11072).addRange(0x11083, 0x110AF).addRange(0x110D0, 0x110E8).addRange(0x11103, 0x11126).addRange(0x11150, 0x11172).addRange(0x11183, 0x111B2).addRange(0x111C1, 0x111C4).addRange(0x11200, 0x11211).addRange(0x11213, 0x1122B).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A8).addRange(0x112B0, 0x112DE).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1135D, 0x11361).addRange(0x11400, 0x11434).addRange(0x11447, 0x1144A).addRange(0x1145F, 0x11461).addRange(0x11480, 0x114AF).addRange(0x114C4, 0x114C5).addRange(0x11580, 0x115AE).addRange(0x115D8, 0x115DB).addRange(0x11600, 0x1162F).addRange(0x11680, 0x116AA).addRange(0x11700, 0x1171A).addRange(0x11740, 0x11746).addRange(0x11800, 0x1182B).addRange(0x118A0, 0x118DF).addRange(0x118FF, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x1192F).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D0);\nset.addRange(0x11A0B, 0x11A32).addRange(0x11A5C, 0x11A89).addRange(0x11AB0, 0x11AF8).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C2E).addRange(0x11C72, 0x11C8F).addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D30).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D89).addRange(0x11EE0, 0x11EF2).addRange(0x12000, 0x12399).addRange(0x12480, 0x12543).addRange(0x12F90, 0x12FF0).addRange(0x13000, 0x1342E).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A70, 0x16ABE).addRange(0x16AD0, 0x16AED).addRange(0x16B00, 0x16B2F).addRange(0x16B40, 0x16B43).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16E40, 0x16E7F).addRange(0x16F00, 0x16F4A).addRange(0x16F93, 0x16F9F).addRange(0x16FE0, 0x16FE1).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B000, 0x1B122).addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167).addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3);\nset.addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6FA).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D734).addRange(0x1D736, 0x1D74E).addRange(0x1D750, 0x1D76E).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D7A8).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7CB).addRange(0x1DF00, 0x1DF1E).addRange(0x1E100, 0x1E12C).addRange(0x1E137, 0x1E13D).addRange(0x1E290, 0x1E2AD).addRange(0x1E2C0, 0x1E2EB).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE).addRange(0x1E800, 0x1E8C4).addRange(0x1E900, 0x1E943).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B738).addRange(0x2B740, 0x2B81D);\nset.addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A);\nmodule.exports = set;","const set = require('regenerate')(0x10808, 0x1083C, 0x1083F);\nset.addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838);\nmodule.exports = set;","const set = require('regenerate')(0xAA, 0xB5, 0xBA, 0x2EC, 0x2EE, 0x345, 0x37F, 0x386, 0x38C, 0x559, 0x5BF, 0x5C7, 0x6FF, 0x7FA, 0x9B2, 0x9CE, 0x9D7, 0x9FC, 0xA51, 0xA5E, 0xAD0, 0xB71, 0xB9C, 0xBD0, 0xBD7, 0xC5D, 0xD4E, 0xDBD, 0xDD6, 0xE4D, 0xE84, 0xEA5, 0xEC6, 0xECD, 0xF00, 0x1038, 0x10C7, 0x10CD, 0x1258, 0x12C0, 0x17D7, 0x17DC, 0x1AA7, 0x1CFA, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2071, 0x207F, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x214E, 0x2D27, 0x2D2D, 0x2D6F, 0x2E2F, 0xA7D3, 0xA8C5, 0xA8FB, 0xA9CF, 0xAAC0, 0xAAC2, 0xFB3E, 0x10808, 0x1083C, 0x10F27, 0x110C2, 0x11176, 0x111DA, 0x111DC, 0x11237, 0x1123E, 0x11288, 0x11350, 0x11357, 0x114C7, 0x11640, 0x11644, 0x116B8, 0x11909, 0x119E1, 0x11A9D, 0x11C40, 0x11D3A, 0x11D43, 0x11D98, 0x11FB0, 0x16FE3, 0x1BC9E, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1E14E, 0x1E947, 0x1E94B, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);\nset.addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x2C1).addRange(0x2C6, 0x2D1).addRange(0x2E0, 0x2E4).addRange(0x370, 0x374).addRange(0x376, 0x377).addRange(0x37A, 0x37D).addRange(0x388, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3F5).addRange(0x3F7, 0x481).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x560, 0x588).addRange(0x5B0, 0x5BD).addRange(0x5C1, 0x5C2).addRange(0x5C4, 0x5C5).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F2).addRange(0x610, 0x61A).addRange(0x620, 0x657).addRange(0x659, 0x65F).addRange(0x66E, 0x6D3).addRange(0x6D5, 0x6DC).addRange(0x6E1, 0x6E8).addRange(0x6ED, 0x6EF).addRange(0x6FA, 0x6FC).addRange(0x710, 0x73F).addRange(0x74D, 0x7B1).addRange(0x7CA, 0x7EA).addRange(0x7F4, 0x7F5).addRange(0x800, 0x817).addRange(0x81A, 0x82C).addRange(0x840, 0x858).addRange(0x860, 0x86A).addRange(0x870, 0x887).addRange(0x889, 0x88E).addRange(0x8A0, 0x8C9).addRange(0x8D4, 0x8DF).addRange(0x8E3, 0x8E9).addRange(0x8F0, 0x93B).addRange(0x93D, 0x94C).addRange(0x94E, 0x950).addRange(0x955, 0x963).addRange(0x971, 0x983).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8);\nset.addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9BD, 0x9C4).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CC).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E3).addRange(0x9F0, 0x9F1).addRange(0xA01, 0xA03).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33).addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA3E, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4C).addRange(0xA59, 0xA5C).addRange(0xA70, 0xA75).addRange(0xA81, 0xA83).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xABD, 0xAC5).addRange(0xAC7, 0xAC9).addRange(0xACB, 0xACC).addRange(0xAE0, 0xAE3).addRange(0xAF9, 0xAFC).addRange(0xB01, 0xB03).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB3D, 0xB44).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4C).addRange(0xB56, 0xB57).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB63).addRange(0xB82, 0xB83).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A);\nset.addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xBBE, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCC).addRange(0xC00, 0xC03).addRange(0xC05, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC3D, 0xC44).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4C).addRange(0xC55, 0xC56).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC63).addRange(0xC80, 0xC83).addRange(0xC85, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCBD, 0xCC4).addRange(0xCC6, 0xCC8).addRange(0xCCA, 0xCCC).addRange(0xCD5, 0xCD6).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE3).addRange(0xCF1, 0xCF2).addRange(0xD00, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD3A).addRange(0xD3D, 0xD44).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4C).addRange(0xD54, 0xD57).addRange(0xD5F, 0xD63).addRange(0xD7A, 0xD7F).addRange(0xD81, 0xD83).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6).addRange(0xDCF, 0xDD4).addRange(0xDD8, 0xDDF).addRange(0xDF2, 0xDF3).addRange(0xE01, 0xE3A).addRange(0xE40, 0xE46).addRange(0xE81, 0xE82);\nset.addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEB9).addRange(0xEBB, 0xEBD).addRange(0xEC0, 0xEC4).addRange(0xEDC, 0xEDF).addRange(0xF40, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF71, 0xF81).addRange(0xF88, 0xF97).addRange(0xF99, 0xFBC).addRange(0x1000, 0x1036).addRange(0x103B, 0x103F).addRange(0x1050, 0x108F).addRange(0x109A, 0x109D).addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FC, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x1380, 0x138F).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1401, 0x166C).addRange(0x166F, 0x167F).addRange(0x1681, 0x169A).addRange(0x16A0, 0x16EA).addRange(0x16EE, 0x16F8).addRange(0x1700, 0x1713).addRange(0x171F, 0x1733).addRange(0x1740, 0x1753).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1772, 0x1773).addRange(0x1780, 0x17B3).addRange(0x17B6, 0x17C8).addRange(0x1820, 0x1878).addRange(0x1880, 0x18AA).addRange(0x18B0, 0x18F5).addRange(0x1900, 0x191E);\nset.addRange(0x1920, 0x192B).addRange(0x1930, 0x1938).addRange(0x1950, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x1A00, 0x1A1B).addRange(0x1A20, 0x1A5E).addRange(0x1A61, 0x1A74).addRange(0x1ABF, 0x1AC0).addRange(0x1ACC, 0x1ACE).addRange(0x1B00, 0x1B33).addRange(0x1B35, 0x1B43).addRange(0x1B45, 0x1B4C).addRange(0x1B80, 0x1BA9).addRange(0x1BAC, 0x1BAF).addRange(0x1BBA, 0x1BE5).addRange(0x1BE7, 0x1BF1).addRange(0x1C00, 0x1C36).addRange(0x1C4D, 0x1C4F).addRange(0x1C5A, 0x1C7D).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1CE9, 0x1CEC).addRange(0x1CEE, 0x1CF3).addRange(0x1CF5, 0x1CF6).addRange(0x1D00, 0x1DBF).addRange(0x1DE7, 0x1DF4).addRange(0x1E00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FBC).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FCC).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FE0, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFC).addRange(0x2090, 0x209C).addRange(0x210A, 0x2113).addRange(0x2119, 0x211D).addRange(0x212A, 0x212D).addRange(0x212F, 0x2139).addRange(0x213C, 0x213F).addRange(0x2145, 0x2149);\nset.addRange(0x2160, 0x2188).addRange(0x24B6, 0x24E9).addRange(0x2C00, 0x2CE4).addRange(0x2CEB, 0x2CEE).addRange(0x2CF2, 0x2CF3).addRange(0x2D00, 0x2D25).addRange(0x2D30, 0x2D67).addRange(0x2D80, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x2DE0, 0x2DFF).addRange(0x3005, 0x3007).addRange(0x3021, 0x3029).addRange(0x3031, 0x3035).addRange(0x3038, 0x303C).addRange(0x3041, 0x3096).addRange(0x309D, 0x309F).addRange(0x30A1, 0x30FA).addRange(0x30FC, 0x30FF).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x31A0, 0x31BF).addRange(0x31F0, 0x31FF).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0xA48C).addRange(0xA4D0, 0xA4FD).addRange(0xA500, 0xA60C).addRange(0xA610, 0xA61F).addRange(0xA62A, 0xA62B).addRange(0xA640, 0xA66E).addRange(0xA674, 0xA67B).addRange(0xA67F, 0xA6EF).addRange(0xA717, 0xA71F).addRange(0xA722, 0xA788).addRange(0xA78B, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA805).addRange(0xA807, 0xA827).addRange(0xA840, 0xA873).addRange(0xA880, 0xA8C3).addRange(0xA8F2, 0xA8F7).addRange(0xA8FD, 0xA8FF).addRange(0xA90A, 0xA92A).addRange(0xA930, 0xA952);\nset.addRange(0xA960, 0xA97C).addRange(0xA980, 0xA9B2).addRange(0xA9B4, 0xA9BF).addRange(0xA9E0, 0xA9EF).addRange(0xA9FA, 0xA9FE).addRange(0xAA00, 0xAA36).addRange(0xAA40, 0xAA4D).addRange(0xAA60, 0xAA76).addRange(0xAA7A, 0xAABE).addRange(0xAADB, 0xAADD).addRange(0xAAE0, 0xAAEF).addRange(0xAAF2, 0xAAF5).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB69).addRange(0xAB70, 0xABEA).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1D, 0xFB28).addRange(0xFB2A, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBB1).addRange(0xFBD3, 0xFD3D).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFB).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0xFF66, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D);\nset.addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10140, 0x10174).addRange(0x10280, 0x1029C).addRange(0x102A0, 0x102D0).addRange(0x10300, 0x1031F).addRange(0x1032D, 0x1034A).addRange(0x10350, 0x1037A).addRange(0x10380, 0x1039D).addRange(0x103A0, 0x103C3).addRange(0x103C8, 0x103CF).addRange(0x103D1, 0x103D5).addRange(0x10400, 0x1049D).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10860, 0x10876).addRange(0x10880, 0x1089E).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x10900, 0x10915).addRange(0x10920, 0x10939).addRange(0x10980, 0x109B7).addRange(0x109BE, 0x109BF).addRange(0x10A00, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A60, 0x10A7C).addRange(0x10A80, 0x10A9C).addRange(0x10AC0, 0x10AC7);\nset.addRange(0x10AC9, 0x10AE4).addRange(0x10B00, 0x10B35).addRange(0x10B40, 0x10B55).addRange(0x10B60, 0x10B72).addRange(0x10B80, 0x10B91).addRange(0x10C00, 0x10C48).addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10D00, 0x10D27).addRange(0x10E80, 0x10EA9).addRange(0x10EAB, 0x10EAC).addRange(0x10EB0, 0x10EB1).addRange(0x10F00, 0x10F1C).addRange(0x10F30, 0x10F45).addRange(0x10F70, 0x10F81).addRange(0x10FB0, 0x10FC4).addRange(0x10FE0, 0x10FF6).addRange(0x11000, 0x11045).addRange(0x11071, 0x11075).addRange(0x11082, 0x110B8).addRange(0x110D0, 0x110E8).addRange(0x11100, 0x11132).addRange(0x11144, 0x11147).addRange(0x11150, 0x11172).addRange(0x11180, 0x111BF).addRange(0x111C1, 0x111C4).addRange(0x111CE, 0x111CF).addRange(0x11200, 0x11211).addRange(0x11213, 0x11234).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A8).addRange(0x112B0, 0x112E8).addRange(0x11300, 0x11303).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1133D, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134C).addRange(0x1135D, 0x11363).addRange(0x11400, 0x11441).addRange(0x11443, 0x11445).addRange(0x11447, 0x1144A).addRange(0x1145F, 0x11461).addRange(0x11480, 0x114C1).addRange(0x114C4, 0x114C5);\nset.addRange(0x11580, 0x115B5).addRange(0x115B8, 0x115BE).addRange(0x115D8, 0x115DD).addRange(0x11600, 0x1163E).addRange(0x11680, 0x116B5).addRange(0x11700, 0x1171A).addRange(0x1171D, 0x1172A).addRange(0x11740, 0x11746).addRange(0x11800, 0x11838).addRange(0x118A0, 0x118DF).addRange(0x118FF, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x11935).addRange(0x11937, 0x11938).addRange(0x1193B, 0x1193C).addRange(0x1193F, 0x11942).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D7).addRange(0x119DA, 0x119DF).addRange(0x119E3, 0x119E4).addRange(0x11A00, 0x11A32).addRange(0x11A35, 0x11A3E).addRange(0x11A50, 0x11A97).addRange(0x11AB0, 0x11AF8).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C36).addRange(0x11C38, 0x11C3E).addRange(0x11C72, 0x11C8F).addRange(0x11C92, 0x11CA7).addRange(0x11CA9, 0x11CB6).addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D41).addRange(0x11D46, 0x11D47).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D8E).addRange(0x11D90, 0x11D91).addRange(0x11D93, 0x11D96).addRange(0x11EE0, 0x11EF6).addRange(0x12000, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12480, 0x12543).addRange(0x12F90, 0x12FF0).addRange(0x13000, 0x1342E).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E);\nset.addRange(0x16A70, 0x16ABE).addRange(0x16AD0, 0x16AED).addRange(0x16B00, 0x16B2F).addRange(0x16B40, 0x16B43).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16E40, 0x16E7F).addRange(0x16F00, 0x16F4A).addRange(0x16F4F, 0x16F87).addRange(0x16F8F, 0x16F9F).addRange(0x16FE0, 0x16FE1).addRange(0x16FF0, 0x16FF1).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B000, 0x1B122).addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167).addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6FA).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D734).addRange(0x1D736, 0x1D74E).addRange(0x1D750, 0x1D76E).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D7A8);\nset.addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7CB).addRange(0x1DF00, 0x1DF1E).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A).addRange(0x1E100, 0x1E12C).addRange(0x1E137, 0x1E13D).addRange(0x1E290, 0x1E2AD).addRange(0x1E2C0, 0x1E2EB).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE).addRange(0x1E800, 0x1E8C4).addRange(0x1E900, 0x1E943).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1F130, 0x1F149).addRange(0x1F150, 0x1F169).addRange(0x1F170, 0x1F189).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B738).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A);\nmodule.exports = set;","const set = require('regenerate')(0xB5, 0x101, 0x103, 0x105, 0x107, 0x109, 0x10B, 0x10D, 0x10F, 0x111, 0x113, 0x115, 0x117, 0x119, 0x11B, 0x11D, 0x11F, 0x121, 0x123, 0x125, 0x127, 0x129, 0x12B, 0x12D, 0x12F, 0x131, 0x133, 0x135, 0x13A, 0x13C, 0x13E, 0x140, 0x142, 0x144, 0x146, 0x14B, 0x14D, 0x14F, 0x151, 0x153, 0x155, 0x157, 0x159, 0x15B, 0x15D, 0x15F, 0x161, 0x163, 0x165, 0x167, 0x169, 0x16B, 0x16D, 0x16F, 0x171, 0x173, 0x175, 0x177, 0x17A, 0x17C, 0x183, 0x185, 0x188, 0x192, 0x195, 0x19E, 0x1A1, 0x1A3, 0x1A5, 0x1A8, 0x1AD, 0x1B0, 0x1B4, 0x1B6, 0x1C6, 0x1C9, 0x1CC, 0x1CE, 0x1D0, 0x1D2, 0x1D4, 0x1D6, 0x1D8, 0x1DA, 0x1DF, 0x1E1, 0x1E3, 0x1E5, 0x1E7, 0x1E9, 0x1EB, 0x1ED, 0x1F3, 0x1F5, 0x1F9, 0x1FB, 0x1FD, 0x1FF, 0x201, 0x203, 0x205, 0x207, 0x209, 0x20B, 0x20D, 0x20F, 0x211, 0x213, 0x215, 0x217, 0x219, 0x21B, 0x21D, 0x21F, 0x221, 0x223, 0x225, 0x227, 0x229, 0x22B, 0x22D, 0x22F, 0x231, 0x23C, 0x242, 0x247, 0x249, 0x24B, 0x24D, 0x371, 0x373, 0x377, 0x390, 0x3D9, 0x3DB, 0x3DD, 0x3DF, 0x3E1, 0x3E3, 0x3E5, 0x3E7, 0x3E9, 0x3EB, 0x3ED, 0x3F5, 0x3F8, 0x461, 0x463, 0x465, 0x467, 0x469, 0x46B, 0x46D, 0x46F, 0x471, 0x473, 0x475, 0x477, 0x479, 0x47B, 0x47D, 0x47F, 0x481, 0x48B, 0x48D, 0x48F, 0x491, 0x493, 0x495, 0x497, 0x499, 0x49B, 0x49D, 0x49F, 0x4A1, 0x4A3, 0x4A5, 0x4A7, 0x4A9, 0x4AB, 0x4AD, 0x4AF, 0x4B1, 0x4B3, 0x4B5, 0x4B7, 0x4B9, 0x4BB, 0x4BD, 0x4BF, 0x4C2, 0x4C4, 0x4C6, 0x4C8, 0x4CA, 0x4CC, 0x4D1, 0x4D3, 0x4D5, 0x4D7, 0x4D9, 0x4DB, 0x4DD, 0x4DF, 0x4E1, 0x4E3, 0x4E5, 0x4E7, 0x4E9, 0x4EB, 0x4ED, 0x4EF, 0x4F1, 0x4F3, 0x4F5, 0x4F7, 0x4F9, 0x4FB, 0x4FD, 0x4FF, 0x501, 0x503, 0x505, 0x507, 0x509, 0x50B, 0x50D, 0x50F, 0x511, 0x513, 0x515, 0x517, 0x519, 0x51B, 0x51D, 0x51F, 0x521, 0x523, 0x525, 0x527, 0x529, 0x52B, 0x52D, 0x52F, 0x1E01, 0x1E03, 0x1E05, 0x1E07, 0x1E09, 0x1E0B, 0x1E0D, 0x1E0F, 0x1E11, 0x1E13, 0x1E15, 0x1E17, 0x1E19, 0x1E1B, 0x1E1D, 0x1E1F, 0x1E21, 0x1E23, 0x1E25, 0x1E27, 0x1E29, 0x1E2B, 0x1E2D, 0x1E2F, 0x1E31, 0x1E33, 0x1E35, 0x1E37, 0x1E39, 0x1E3B, 0x1E3D, 0x1E3F, 0x1E41, 0x1E43, 0x1E45, 0x1E47, 0x1E49, 0x1E4B, 0x1E4D, 0x1E4F, 0x1E51, 0x1E53, 0x1E55, 0x1E57, 0x1E59, 0x1E5B, 0x1E5D, 0x1E5F, 0x1E61, 0x1E63, 0x1E65, 0x1E67, 0x1E69, 0x1E6B, 0x1E6D, 0x1E6F, 0x1E71, 0x1E73, 0x1E75, 0x1E77, 0x1E79, 0x1E7B, 0x1E7D, 0x1E7F, 0x1E81, 0x1E83, 0x1E85, 0x1E87, 0x1E89, 0x1E8B, 0x1E8D, 0x1E8F, 0x1E91, 0x1E93, 0x1E9F, 0x1EA1, 0x1EA3, 0x1EA5, 0x1EA7, 0x1EA9, 0x1EAB, 0x1EAD, 0x1EAF, 0x1EB1, 0x1EB3, 0x1EB5, 0x1EB7, 0x1EB9, 0x1EBB, 0x1EBD, 0x1EBF, 0x1EC1, 0x1EC3, 0x1EC5, 0x1EC7, 0x1EC9, 0x1ECB, 0x1ECD, 0x1ECF, 0x1ED1, 0x1ED3, 0x1ED5, 0x1ED7, 0x1ED9, 0x1EDB, 0x1EDD, 0x1EDF, 0x1EE1, 0x1EE3, 0x1EE5, 0x1EE7, 0x1EE9, 0x1EEB, 0x1EED, 0x1EEF, 0x1EF1, 0x1EF3, 0x1EF5, 0x1EF7, 0x1EF9, 0x1EFB, 0x1EFD, 0x1FBE, 0x210A, 0x2113, 0x212F, 0x2134, 0x2139, 0x214E, 0x2184, 0x2C61, 0x2C68, 0x2C6A, 0x2C6C, 0x2C71, 0x2C81, 0x2C83, 0x2C85, 0x2C87, 0x2C89, 0x2C8B, 0x2C8D, 0x2C8F, 0x2C91, 0x2C93, 0x2C95, 0x2C97, 0x2C99, 0x2C9B, 0x2C9D, 0x2C9F, 0x2CA1, 0x2CA3, 0x2CA5, 0x2CA7, 0x2CA9, 0x2CAB, 0x2CAD, 0x2CAF, 0x2CB1, 0x2CB3, 0x2CB5, 0x2CB7, 0x2CB9, 0x2CBB, 0x2CBD, 0x2CBF, 0x2CC1, 0x2CC3, 0x2CC5, 0x2CC7, 0x2CC9, 0x2CCB, 0x2CCD, 0x2CCF, 0x2CD1, 0x2CD3, 0x2CD5, 0x2CD7, 0x2CD9, 0x2CDB, 0x2CDD, 0x2CDF, 0x2CE1, 0x2CEC, 0x2CEE, 0x2CF3, 0x2D27, 0x2D2D, 0xA641, 0xA643, 0xA645, 0xA647, 0xA649, 0xA64B, 0xA64D, 0xA64F, 0xA651, 0xA653, 0xA655, 0xA657, 0xA659, 0xA65B, 0xA65D, 0xA65F, 0xA661, 0xA663, 0xA665, 0xA667, 0xA669, 0xA66B, 0xA66D, 0xA681, 0xA683, 0xA685, 0xA687, 0xA689, 0xA68B, 0xA68D, 0xA68F, 0xA691, 0xA693, 0xA695, 0xA697, 0xA699, 0xA69B, 0xA723, 0xA725, 0xA727, 0xA729, 0xA72B, 0xA72D, 0xA733, 0xA735, 0xA737, 0xA739, 0xA73B, 0xA73D, 0xA73F, 0xA741, 0xA743, 0xA745, 0xA747, 0xA749, 0xA74B, 0xA74D, 0xA74F, 0xA751, 0xA753, 0xA755, 0xA757, 0xA759, 0xA75B, 0xA75D, 0xA75F, 0xA761, 0xA763, 0xA765, 0xA767, 0xA769, 0xA76B, 0xA76D, 0xA76F, 0xA77A, 0xA77C, 0xA77F, 0xA781, 0xA783, 0xA785, 0xA787, 0xA78C, 0xA78E, 0xA791, 0xA797, 0xA799, 0xA79B, 0xA79D, 0xA79F, 0xA7A1, 0xA7A3, 0xA7A5, 0xA7A7, 0xA7A9, 0xA7AF, 0xA7B5, 0xA7B7, 0xA7B9, 0xA7BB, 0xA7BD, 0xA7BF, 0xA7C1, 0xA7C3, 0xA7C8, 0xA7CA, 0xA7D1, 0xA7D3, 0xA7D5, 0xA7D7, 0xA7D9, 0xA7F6, 0xA7FA, 0x1D4BB, 0x1D7CB);\nset.addRange(0x61, 0x7A).addRange(0xDF, 0xF6).addRange(0xF8, 0xFF).addRange(0x137, 0x138).addRange(0x148, 0x149).addRange(0x17E, 0x180).addRange(0x18C, 0x18D).addRange(0x199, 0x19B).addRange(0x1AA, 0x1AB).addRange(0x1B9, 0x1BA).addRange(0x1BD, 0x1BF).addRange(0x1DC, 0x1DD).addRange(0x1EF, 0x1F0).addRange(0x233, 0x239).addRange(0x23F, 0x240).addRange(0x24F, 0x293).addRange(0x295, 0x2AF).addRange(0x37B, 0x37D).addRange(0x3AC, 0x3CE).addRange(0x3D0, 0x3D1).addRange(0x3D5, 0x3D7).addRange(0x3EF, 0x3F3).addRange(0x3FB, 0x3FC).addRange(0x430, 0x45F).addRange(0x4CE, 0x4CF).addRange(0x560, 0x588).addRange(0x10D0, 0x10FA).addRange(0x10FD, 0x10FF).addRange(0x13F8, 0x13FD).addRange(0x1C80, 0x1C88).addRange(0x1D00, 0x1D2B).addRange(0x1D6B, 0x1D77).addRange(0x1D79, 0x1D9A).addRange(0x1E95, 0x1E9D).addRange(0x1EFF, 0x1F07).addRange(0x1F10, 0x1F15).addRange(0x1F20, 0x1F27).addRange(0x1F30, 0x1F37).addRange(0x1F40, 0x1F45).addRange(0x1F50, 0x1F57).addRange(0x1F60, 0x1F67).addRange(0x1F70, 0x1F7D).addRange(0x1F80, 0x1F87).addRange(0x1F90, 0x1F97).addRange(0x1FA0, 0x1FA7).addRange(0x1FB0, 0x1FB4).addRange(0x1FB6, 0x1FB7).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FC7).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FD7);\nset.addRange(0x1FE0, 0x1FE7).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FF7).addRange(0x210E, 0x210F).addRange(0x213C, 0x213D).addRange(0x2146, 0x2149).addRange(0x2C30, 0x2C5F).addRange(0x2C65, 0x2C66).addRange(0x2C73, 0x2C74).addRange(0x2C76, 0x2C7B).addRange(0x2CE3, 0x2CE4).addRange(0x2D00, 0x2D25).addRange(0xA72F, 0xA731).addRange(0xA771, 0xA778).addRange(0xA793, 0xA795).addRange(0xAB30, 0xAB5A).addRange(0xAB60, 0xAB68).addRange(0xAB70, 0xABBF).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFF41, 0xFF5A).addRange(0x10428, 0x1044F).addRange(0x104D8, 0x104FB).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10CC0, 0x10CF2).addRange(0x118C0, 0x118DF).addRange(0x16E60, 0x16E7F).addRange(0x1D41A, 0x1D433).addRange(0x1D44E, 0x1D454).addRange(0x1D456, 0x1D467).addRange(0x1D482, 0x1D49B).addRange(0x1D4B6, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D4CF).addRange(0x1D4EA, 0x1D503).addRange(0x1D51E, 0x1D537).addRange(0x1D552, 0x1D56B).addRange(0x1D586, 0x1D59F).addRange(0x1D5BA, 0x1D5D3).addRange(0x1D5EE, 0x1D607).addRange(0x1D622, 0x1D63B).addRange(0x1D656, 0x1D66F).addRange(0x1D68A, 0x1D6A5).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6E1).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D71B).addRange(0x1D736, 0x1D74E);\nset.addRange(0x1D750, 0x1D755).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D78F).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7C9).addRange(0x1DF00, 0x1DF09).addRange(0x1DF0B, 0x1DF1E).addRange(0x1E922, 0x1E943);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x12000, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12470, 0x12474).addRange(0x12480, 0x12543);\nmodule.exports = set;","import TutorialButtons from \"../../../../docs/tutorial/TutorialButtons\";\nimport * as React from 'react';\nexport default {\n TutorialButtons,\n React\n};","const set = require('regenerate')();\nset.addRange(0xAAE0, 0xAAF6).addRange(0xABC0, 0xABED).addRange(0xABF0, 0xABF9);\nmodule.exports = set;","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike'),\n isPlainObject = require('./isPlainObject');\n\n/** `Object#toString` result references. */\nvar domExcTag = '[object DOMException]',\n errorTag = '[object Error]';\n\n/**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\nfunction isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n}\n\nmodule.exports = isError;\n","var arrayMap = require('./_arrayMap'),\n baseClone = require('./_baseClone'),\n baseUnset = require('./_baseUnset'),\n castPath = require('./_castPath'),\n copyObject = require('./_copyObject'),\n customOmitClone = require('./_customOmitClone'),\n flatRest = require('./_flatRest'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n});\n\nmodule.exports = omit;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","const set = require('regenerate')();\nset.addRange(0x1E290, 0x1E2AE);\nmodule.exports = set;","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","const set = require('regenerate')();\nset.addRange(0x1780, 0x17DD).addRange(0x17E0, 0x17E9).addRange(0x17F0, 0x17F9).addRange(0x19E0, 0x19FF);\nmodule.exports = set;","const set = require('regenerate')(0x38B, 0x38D, 0x3A2, 0x530, 0x590, 0x70E, 0x83F, 0x85F, 0x88F, 0x984, 0x9A9, 0x9B1, 0x9DE, 0xA04, 0xA29, 0xA31, 0xA34, 0xA37, 0xA3D, 0xA5D, 0xA84, 0xA8E, 0xA92, 0xAA9, 0xAB1, 0xAB4, 0xAC6, 0xACA, 0xB00, 0xB04, 0xB29, 0xB31, 0xB34, 0xB5E, 0xB84, 0xB91, 0xB9B, 0xB9D, 0xBC9, 0xC0D, 0xC11, 0xC29, 0xC45, 0xC49, 0xC57, 0xC8D, 0xC91, 0xCA9, 0xCB4, 0xCC5, 0xCC9, 0xCDF, 0xCF0, 0xD0D, 0xD11, 0xD45, 0xD49, 0xD80, 0xD84, 0xDB2, 0xDBC, 0xDD5, 0xDD7, 0xE83, 0xE85, 0xE8B, 0xEA4, 0xEA6, 0xEC5, 0xEC7, 0xF48, 0xF98, 0xFBD, 0xFCD, 0x10C6, 0x1249, 0x1257, 0x1259, 0x1289, 0x12B1, 0x12BF, 0x12C1, 0x12D7, 0x1311, 0x176D, 0x1771, 0x191F, 0x1A5F, 0x1B7F, 0x1F58, 0x1F5A, 0x1F5C, 0x1F5E, 0x1FB5, 0x1FC5, 0x1FDC, 0x1FF5, 0x1FFF, 0x2065, 0x208F, 0x2B96, 0x2D26, 0x2DA7, 0x2DAF, 0x2DB7, 0x2DBF, 0x2DC7, 0x2DCF, 0x2DD7, 0x2DDF, 0x2E9A, 0x3040, 0x3130, 0x318F, 0x321F, 0xA7D2, 0xA7D4, 0xA9CE, 0xA9FF, 0xAB27, 0xAB2F, 0xFB37, 0xFB3D, 0xFB3F, 0xFB42, 0xFB45, 0xFE53, 0xFE67, 0xFE75, 0xFF00, 0xFFE7, 0x1000C, 0x10027, 0x1003B, 0x1003E, 0x1018F, 0x1039E, 0x1057B, 0x1058B, 0x10593, 0x10596, 0x105A2, 0x105B2, 0x105BA, 0x10786, 0x107B1, 0x10809, 0x10836, 0x10856, 0x108F3, 0x10A04, 0x10A14, 0x10A18, 0x10E7F, 0x10EAA, 0x11135, 0x111E0, 0x11212, 0x11287, 0x11289, 0x1128E, 0x1129E, 0x11304, 0x11329, 0x11331, 0x11334, 0x1133A, 0x1145C, 0x11914, 0x11917, 0x11936, 0x11C09, 0x11C37, 0x11CA8, 0x11D07, 0x11D0A, 0x11D3B, 0x11D3E, 0x11D66, 0x11D69, 0x11D8F, 0x11D92, 0x1246F, 0x1342F, 0x16A5F, 0x16ABF, 0x16B5A, 0x16B62, 0x1AFF4, 0x1AFFC, 0x1AFFF, 0x1D455, 0x1D49D, 0x1D4AD, 0x1D4BA, 0x1D4BC, 0x1D4C4, 0x1D506, 0x1D515, 0x1D51D, 0x1D53A, 0x1D53F, 0x1D545, 0x1D551, 0x1DAA0, 0x1E007, 0x1E022, 0x1E025, 0x1E7E7, 0x1E7EC, 0x1E7EF, 0x1E7FF, 0x1EE04, 0x1EE20, 0x1EE23, 0x1EE28, 0x1EE33, 0x1EE38, 0x1EE3A, 0x1EE48, 0x1EE4A, 0x1EE4C, 0x1EE50, 0x1EE53, 0x1EE58, 0x1EE5A, 0x1EE5C, 0x1EE5E, 0x1EE60, 0x1EE63, 0x1EE6B, 0x1EE73, 0x1EE78, 0x1EE7D, 0x1EE7F, 0x1EE8A, 0x1EEA4, 0x1EEAA, 0x1F0C0, 0x1F0D0, 0x1FB93);\nset.addRange(0x378, 0x379).addRange(0x380, 0x383).addRange(0x557, 0x558).addRange(0x58B, 0x58C).addRange(0x5C8, 0x5CF).addRange(0x5EB, 0x5EE).addRange(0x5F5, 0x5FF).addRange(0x74B, 0x74C).addRange(0x7B2, 0x7BF).addRange(0x7FB, 0x7FC).addRange(0x82E, 0x82F).addRange(0x85C, 0x85D).addRange(0x86B, 0x86F).addRange(0x892, 0x897).addRange(0x98D, 0x98E).addRange(0x991, 0x992).addRange(0x9B3, 0x9B5).addRange(0x9BA, 0x9BB).addRange(0x9C5, 0x9C6).addRange(0x9C9, 0x9CA).addRange(0x9CF, 0x9D6).addRange(0x9D8, 0x9DB).addRange(0x9E4, 0x9E5).addRange(0x9FF, 0xA00).addRange(0xA0B, 0xA0E).addRange(0xA11, 0xA12).addRange(0xA3A, 0xA3B).addRange(0xA43, 0xA46).addRange(0xA49, 0xA4A).addRange(0xA4E, 0xA50).addRange(0xA52, 0xA58).addRange(0xA5F, 0xA65).addRange(0xA77, 0xA80).addRange(0xABA, 0xABB).addRange(0xACE, 0xACF).addRange(0xAD1, 0xADF).addRange(0xAE4, 0xAE5).addRange(0xAF2, 0xAF8).addRange(0xB0D, 0xB0E).addRange(0xB11, 0xB12).addRange(0xB3A, 0xB3B).addRange(0xB45, 0xB46).addRange(0xB49, 0xB4A).addRange(0xB4E, 0xB54).addRange(0xB58, 0xB5B).addRange(0xB64, 0xB65).addRange(0xB78, 0xB81).addRange(0xB8B, 0xB8D).addRange(0xB96, 0xB98).addRange(0xBA0, 0xBA2).addRange(0xBA5, 0xBA7);\nset.addRange(0xBAB, 0xBAD).addRange(0xBBA, 0xBBD).addRange(0xBC3, 0xBC5).addRange(0xBCE, 0xBCF).addRange(0xBD1, 0xBD6).addRange(0xBD8, 0xBE5).addRange(0xBFB, 0xBFF).addRange(0xC3A, 0xC3B).addRange(0xC4E, 0xC54).addRange(0xC5B, 0xC5C).addRange(0xC5E, 0xC5F).addRange(0xC64, 0xC65).addRange(0xC70, 0xC76).addRange(0xCBA, 0xCBB).addRange(0xCCE, 0xCD4).addRange(0xCD7, 0xCDC).addRange(0xCE4, 0xCE5).addRange(0xCF3, 0xCFF).addRange(0xD50, 0xD53).addRange(0xD64, 0xD65).addRange(0xD97, 0xD99).addRange(0xDBE, 0xDBF).addRange(0xDC7, 0xDC9).addRange(0xDCB, 0xDCE).addRange(0xDE0, 0xDE5).addRange(0xDF0, 0xDF1).addRange(0xDF5, 0xE00).addRange(0xE3B, 0xE3E).addRange(0xE5C, 0xE80).addRange(0xEBE, 0xEBF).addRange(0xECE, 0xECF).addRange(0xEDA, 0xEDB).addRange(0xEE0, 0xEFF).addRange(0xF6D, 0xF70).addRange(0xFDB, 0xFFF).addRange(0x10C8, 0x10CC).addRange(0x10CE, 0x10CF).addRange(0x124E, 0x124F).addRange(0x125E, 0x125F).addRange(0x128E, 0x128F).addRange(0x12B6, 0x12B7).addRange(0x12C6, 0x12C7).addRange(0x1316, 0x1317).addRange(0x135B, 0x135C).addRange(0x137D, 0x137F).addRange(0x139A, 0x139F).addRange(0x13F6, 0x13F7).addRange(0x13FE, 0x13FF).addRange(0x169D, 0x169F).addRange(0x16F9, 0x16FF).addRange(0x1716, 0x171E);\nset.addRange(0x1737, 0x173F).addRange(0x1754, 0x175F).addRange(0x1774, 0x177F).addRange(0x17DE, 0x17DF).addRange(0x17EA, 0x17EF).addRange(0x17FA, 0x17FF).addRange(0x181A, 0x181F).addRange(0x1879, 0x187F).addRange(0x18AB, 0x18AF).addRange(0x18F6, 0x18FF).addRange(0x192C, 0x192F).addRange(0x193C, 0x193F).addRange(0x1941, 0x1943).addRange(0x196E, 0x196F).addRange(0x1975, 0x197F).addRange(0x19AC, 0x19AF).addRange(0x19CA, 0x19CF).addRange(0x19DB, 0x19DD).addRange(0x1A1C, 0x1A1D).addRange(0x1A7D, 0x1A7E).addRange(0x1A8A, 0x1A8F).addRange(0x1A9A, 0x1A9F).addRange(0x1AAE, 0x1AAF).addRange(0x1ACF, 0x1AFF).addRange(0x1B4D, 0x1B4F).addRange(0x1BF4, 0x1BFB).addRange(0x1C38, 0x1C3A).addRange(0x1C4A, 0x1C4C).addRange(0x1C89, 0x1C8F).addRange(0x1CBB, 0x1CBC).addRange(0x1CC8, 0x1CCF).addRange(0x1CFB, 0x1CFF).addRange(0x1F16, 0x1F17).addRange(0x1F1E, 0x1F1F).addRange(0x1F46, 0x1F47).addRange(0x1F4E, 0x1F4F).addRange(0x1F7E, 0x1F7F).addRange(0x1FD4, 0x1FD5).addRange(0x1FF0, 0x1FF1).addRange(0x2072, 0x2073).addRange(0x209D, 0x209F).addRange(0x20C1, 0x20CF).addRange(0x20F1, 0x20FF).addRange(0x218C, 0x218F).addRange(0x2427, 0x243F).addRange(0x244B, 0x245F).addRange(0x2B74, 0x2B75).addRange(0x2CF4, 0x2CF8).addRange(0x2D28, 0x2D2C).addRange(0x2D2E, 0x2D2F).addRange(0x2D68, 0x2D6E);\nset.addRange(0x2D71, 0x2D7E).addRange(0x2D97, 0x2D9F).addRange(0x2E5E, 0x2E7F).addRange(0x2EF4, 0x2EFF).addRange(0x2FD6, 0x2FEF).addRange(0x2FFC, 0x2FFF).addRange(0x3097, 0x3098).addRange(0x3100, 0x3104).addRange(0x31E4, 0x31EF).addRange(0xA48D, 0xA48F).addRange(0xA4C7, 0xA4CF).addRange(0xA62C, 0xA63F).addRange(0xA6F8, 0xA6FF).addRange(0xA7CB, 0xA7CF).addRange(0xA7DA, 0xA7F1).addRange(0xA82D, 0xA82F).addRange(0xA83A, 0xA83F).addRange(0xA878, 0xA87F).addRange(0xA8C6, 0xA8CD).addRange(0xA8DA, 0xA8DF).addRange(0xA954, 0xA95E).addRange(0xA97D, 0xA97F).addRange(0xA9DA, 0xA9DD).addRange(0xAA37, 0xAA3F).addRange(0xAA4E, 0xAA4F).addRange(0xAA5A, 0xAA5B).addRange(0xAAC3, 0xAADA).addRange(0xAAF7, 0xAB00).addRange(0xAB07, 0xAB08).addRange(0xAB0F, 0xAB10).addRange(0xAB17, 0xAB1F).addRange(0xAB6C, 0xAB6F).addRange(0xABEE, 0xABEF).addRange(0xABFA, 0xABFF).addRange(0xD7A4, 0xD7AF).addRange(0xD7C7, 0xD7CA).addRange(0xD7FC, 0xD7FF).addRange(0xFA6E, 0xFA6F).addRange(0xFADA, 0xFAFF).addRange(0xFB07, 0xFB12).addRange(0xFB18, 0xFB1C).addRange(0xFBC3, 0xFBD2).addRange(0xFD90, 0xFD91).addRange(0xFDC8, 0xFDCE).addRange(0xFDD0, 0xFDEF).addRange(0xFE1A, 0xFE1F).addRange(0xFE6C, 0xFE6F).addRange(0xFEFD, 0xFEFE).addRange(0xFFBF, 0xFFC1).addRange(0xFFC8, 0xFFC9).addRange(0xFFD0, 0xFFD1);\nset.addRange(0xFFD8, 0xFFD9).addRange(0xFFDD, 0xFFDF).addRange(0xFFEF, 0xFFF8).addRange(0xFFFE, 0xFFFF).addRange(0x1004E, 0x1004F).addRange(0x1005E, 0x1007F).addRange(0x100FB, 0x100FF).addRange(0x10103, 0x10106).addRange(0x10134, 0x10136).addRange(0x1019D, 0x1019F).addRange(0x101A1, 0x101CF).addRange(0x101FE, 0x1027F).addRange(0x1029D, 0x1029F).addRange(0x102D1, 0x102DF).addRange(0x102FC, 0x102FF).addRange(0x10324, 0x1032C).addRange(0x1034B, 0x1034F).addRange(0x1037B, 0x1037F).addRange(0x103C4, 0x103C7).addRange(0x103D6, 0x103FF).addRange(0x1049E, 0x1049F).addRange(0x104AA, 0x104AF).addRange(0x104D4, 0x104D7).addRange(0x104FC, 0x104FF).addRange(0x10528, 0x1052F).addRange(0x10564, 0x1056E).addRange(0x105BD, 0x105FF).addRange(0x10737, 0x1073F).addRange(0x10756, 0x1075F).addRange(0x10768, 0x1077F).addRange(0x107BB, 0x107FF).addRange(0x10806, 0x10807).addRange(0x10839, 0x1083B).addRange(0x1083D, 0x1083E).addRange(0x1089F, 0x108A6).addRange(0x108B0, 0x108DF).addRange(0x108F6, 0x108FA).addRange(0x1091C, 0x1091E).addRange(0x1093A, 0x1093E).addRange(0x10940, 0x1097F).addRange(0x109B8, 0x109BB).addRange(0x109D0, 0x109D1).addRange(0x10A07, 0x10A0B).addRange(0x10A36, 0x10A37).addRange(0x10A3B, 0x10A3E).addRange(0x10A49, 0x10A4F).addRange(0x10A59, 0x10A5F).addRange(0x10AA0, 0x10ABF).addRange(0x10AE7, 0x10AEA).addRange(0x10AF7, 0x10AFF).addRange(0x10B36, 0x10B38);\nset.addRange(0x10B56, 0x10B57).addRange(0x10B73, 0x10B77).addRange(0x10B92, 0x10B98).addRange(0x10B9D, 0x10BA8).addRange(0x10BB0, 0x10BFF).addRange(0x10C49, 0x10C7F).addRange(0x10CB3, 0x10CBF).addRange(0x10CF3, 0x10CF9).addRange(0x10D28, 0x10D2F).addRange(0x10D3A, 0x10E5F).addRange(0x10EAE, 0x10EAF).addRange(0x10EB2, 0x10EFF).addRange(0x10F28, 0x10F2F).addRange(0x10F5A, 0x10F6F).addRange(0x10F8A, 0x10FAF).addRange(0x10FCC, 0x10FDF).addRange(0x10FF7, 0x10FFF).addRange(0x1104E, 0x11051).addRange(0x11076, 0x1107E).addRange(0x110C3, 0x110CC).addRange(0x110CE, 0x110CF).addRange(0x110E9, 0x110EF).addRange(0x110FA, 0x110FF).addRange(0x11148, 0x1114F).addRange(0x11177, 0x1117F).addRange(0x111F5, 0x111FF).addRange(0x1123F, 0x1127F).addRange(0x112AA, 0x112AF).addRange(0x112EB, 0x112EF).addRange(0x112FA, 0x112FF).addRange(0x1130D, 0x1130E).addRange(0x11311, 0x11312).addRange(0x11345, 0x11346).addRange(0x11349, 0x1134A).addRange(0x1134E, 0x1134F).addRange(0x11351, 0x11356).addRange(0x11358, 0x1135C).addRange(0x11364, 0x11365).addRange(0x1136D, 0x1136F).addRange(0x11375, 0x113FF).addRange(0x11462, 0x1147F).addRange(0x114C8, 0x114CF).addRange(0x114DA, 0x1157F).addRange(0x115B6, 0x115B7).addRange(0x115DE, 0x115FF).addRange(0x11645, 0x1164F).addRange(0x1165A, 0x1165F).addRange(0x1166D, 0x1167F).addRange(0x116BA, 0x116BF).addRange(0x116CA, 0x116FF).addRange(0x1171B, 0x1171C);\nset.addRange(0x1172C, 0x1172F).addRange(0x11747, 0x117FF).addRange(0x1183C, 0x1189F).addRange(0x118F3, 0x118FE).addRange(0x11907, 0x11908).addRange(0x1190A, 0x1190B).addRange(0x11939, 0x1193A).addRange(0x11947, 0x1194F).addRange(0x1195A, 0x1199F).addRange(0x119A8, 0x119A9).addRange(0x119D8, 0x119D9).addRange(0x119E5, 0x119FF).addRange(0x11A48, 0x11A4F).addRange(0x11AA3, 0x11AAF).addRange(0x11AF9, 0x11BFF).addRange(0x11C46, 0x11C4F).addRange(0x11C6D, 0x11C6F).addRange(0x11C90, 0x11C91).addRange(0x11CB7, 0x11CFF).addRange(0x11D37, 0x11D39).addRange(0x11D48, 0x11D4F).addRange(0x11D5A, 0x11D5F).addRange(0x11D99, 0x11D9F).addRange(0x11DAA, 0x11EDF).addRange(0x11EF9, 0x11FAF).addRange(0x11FB1, 0x11FBF).addRange(0x11FF2, 0x11FFE).addRange(0x1239A, 0x123FF).addRange(0x12475, 0x1247F).addRange(0x12544, 0x12F8F).addRange(0x12FF3, 0x12FFF).addRange(0x13439, 0x143FF).addRange(0x14647, 0x167FF).addRange(0x16A39, 0x16A3F).addRange(0x16A6A, 0x16A6D).addRange(0x16ACA, 0x16ACF).addRange(0x16AEE, 0x16AEF).addRange(0x16AF6, 0x16AFF).addRange(0x16B46, 0x16B4F).addRange(0x16B78, 0x16B7C).addRange(0x16B90, 0x16E3F).addRange(0x16E9B, 0x16EFF).addRange(0x16F4B, 0x16F4E).addRange(0x16F88, 0x16F8E).addRange(0x16FA0, 0x16FDF).addRange(0x16FE5, 0x16FEF).addRange(0x16FF2, 0x16FFF).addRange(0x187F8, 0x187FF).addRange(0x18CD6, 0x18CFF).addRange(0x18D09, 0x1AFEF).addRange(0x1B123, 0x1B14F);\nset.addRange(0x1B153, 0x1B163).addRange(0x1B168, 0x1B16F).addRange(0x1B2FC, 0x1BBFF).addRange(0x1BC6B, 0x1BC6F).addRange(0x1BC7D, 0x1BC7F).addRange(0x1BC89, 0x1BC8F).addRange(0x1BC9A, 0x1BC9B).addRange(0x1BCA4, 0x1CEFF).addRange(0x1CF2E, 0x1CF2F).addRange(0x1CF47, 0x1CF4F).addRange(0x1CFC4, 0x1CFFF).addRange(0x1D0F6, 0x1D0FF).addRange(0x1D127, 0x1D128).addRange(0x1D1EB, 0x1D1FF).addRange(0x1D246, 0x1D2DF).addRange(0x1D2F4, 0x1D2FF).addRange(0x1D357, 0x1D35F).addRange(0x1D379, 0x1D3FF).addRange(0x1D4A0, 0x1D4A1).addRange(0x1D4A3, 0x1D4A4).addRange(0x1D4A7, 0x1D4A8).addRange(0x1D50B, 0x1D50C).addRange(0x1D547, 0x1D549).addRange(0x1D6A6, 0x1D6A7).addRange(0x1D7CC, 0x1D7CD).addRange(0x1DA8C, 0x1DA9A).addRange(0x1DAB0, 0x1DEFF).addRange(0x1DF1F, 0x1DFFF).addRange(0x1E019, 0x1E01A).addRange(0x1E02B, 0x1E0FF).addRange(0x1E12D, 0x1E12F).addRange(0x1E13E, 0x1E13F).addRange(0x1E14A, 0x1E14D).addRange(0x1E150, 0x1E28F).addRange(0x1E2AF, 0x1E2BF).addRange(0x1E2FA, 0x1E2FE).addRange(0x1E300, 0x1E7DF).addRange(0x1E8C5, 0x1E8C6).addRange(0x1E8D7, 0x1E8FF).addRange(0x1E94C, 0x1E94F).addRange(0x1E95A, 0x1E95D).addRange(0x1E960, 0x1EC70).addRange(0x1ECB5, 0x1ED00).addRange(0x1ED3E, 0x1EDFF).addRange(0x1EE25, 0x1EE26).addRange(0x1EE3C, 0x1EE41).addRange(0x1EE43, 0x1EE46).addRange(0x1EE55, 0x1EE56).addRange(0x1EE65, 0x1EE66).addRange(0x1EE9C, 0x1EEA0).addRange(0x1EEBC, 0x1EEEF);\nset.addRange(0x1EEF2, 0x1EFFF).addRange(0x1F02C, 0x1F02F).addRange(0x1F094, 0x1F09F).addRange(0x1F0AF, 0x1F0B0).addRange(0x1F0F6, 0x1F0FF).addRange(0x1F1AE, 0x1F1E5).addRange(0x1F203, 0x1F20F).addRange(0x1F23C, 0x1F23F).addRange(0x1F249, 0x1F24F).addRange(0x1F252, 0x1F25F).addRange(0x1F266, 0x1F2FF).addRange(0x1F6D8, 0x1F6DC).addRange(0x1F6ED, 0x1F6EF).addRange(0x1F6FD, 0x1F6FF).addRange(0x1F774, 0x1F77F).addRange(0x1F7D9, 0x1F7DF).addRange(0x1F7EC, 0x1F7EF).addRange(0x1F7F1, 0x1F7FF).addRange(0x1F80C, 0x1F80F).addRange(0x1F848, 0x1F84F).addRange(0x1F85A, 0x1F85F).addRange(0x1F888, 0x1F88F).addRange(0x1F8AE, 0x1F8AF).addRange(0x1F8B2, 0x1F8FF).addRange(0x1FA54, 0x1FA5F).addRange(0x1FA6E, 0x1FA6F).addRange(0x1FA75, 0x1FA77).addRange(0x1FA7D, 0x1FA7F).addRange(0x1FA87, 0x1FA8F).addRange(0x1FAAD, 0x1FAAF).addRange(0x1FABB, 0x1FABF).addRange(0x1FAC6, 0x1FACF).addRange(0x1FADA, 0x1FADF).addRange(0x1FAE8, 0x1FAEF).addRange(0x1FAF7, 0x1FAFF).addRange(0x1FBCB, 0x1FBEF).addRange(0x1FBFA, 0x1FFFF).addRange(0x2A6E0, 0x2A6FF).addRange(0x2B739, 0x2B73F).addRange(0x2B81E, 0x2B81F).addRange(0x2CEA2, 0x2CEAF).addRange(0x2EBE1, 0x2F7FF).addRange(0x2FA1E, 0x2FFFF).addRange(0x3134B, 0xE0000).addRange(0xE0002, 0xE001F).addRange(0xE0080, 0xE00FF).addRange(0xE01F0, 0xEFFFF).addRange(0xFFFFE, 0xFFFFF).addRange(0x10FFFE, 0x10FFFF);\nmodule.exports = set;","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","const set = require('regenerate')(0xB5, 0x101, 0x103, 0x105, 0x107, 0x109, 0x10B, 0x10D, 0x10F, 0x111, 0x113, 0x115, 0x117, 0x119, 0x11B, 0x11D, 0x11F, 0x121, 0x123, 0x125, 0x127, 0x129, 0x12B, 0x12D, 0x12F, 0x131, 0x133, 0x135, 0x137, 0x13A, 0x13C, 0x13E, 0x140, 0x142, 0x144, 0x146, 0x14B, 0x14D, 0x14F, 0x151, 0x153, 0x155, 0x157, 0x159, 0x15B, 0x15D, 0x15F, 0x161, 0x163, 0x165, 0x167, 0x169, 0x16B, 0x16D, 0x16F, 0x171, 0x173, 0x175, 0x177, 0x17A, 0x17C, 0x183, 0x185, 0x188, 0x18C, 0x192, 0x195, 0x19E, 0x1A1, 0x1A3, 0x1A5, 0x1A8, 0x1AD, 0x1B0, 0x1B4, 0x1B6, 0x1B9, 0x1BD, 0x1BF, 0x1CE, 0x1D0, 0x1D2, 0x1D4, 0x1D6, 0x1D8, 0x1DA, 0x1DF, 0x1E1, 0x1E3, 0x1E5, 0x1E7, 0x1E9, 0x1EB, 0x1ED, 0x1F5, 0x1F9, 0x1FB, 0x1FD, 0x1FF, 0x201, 0x203, 0x205, 0x207, 0x209, 0x20B, 0x20D, 0x20F, 0x211, 0x213, 0x215, 0x217, 0x219, 0x21B, 0x21D, 0x21F, 0x223, 0x225, 0x227, 0x229, 0x22B, 0x22D, 0x22F, 0x231, 0x233, 0x23C, 0x242, 0x247, 0x249, 0x24B, 0x24D, 0x259, 0x263, 0x26F, 0x275, 0x27D, 0x280, 0x292, 0x345, 0x371, 0x373, 0x377, 0x390, 0x3D9, 0x3DB, 0x3DD, 0x3DF, 0x3E1, 0x3E3, 0x3E5, 0x3E7, 0x3E9, 0x3EB, 0x3ED, 0x3F5, 0x3F8, 0x3FB, 0x461, 0x463, 0x465, 0x467, 0x469, 0x46B, 0x46D, 0x46F, 0x471, 0x473, 0x475, 0x477, 0x479, 0x47B, 0x47D, 0x47F, 0x481, 0x48B, 0x48D, 0x48F, 0x491, 0x493, 0x495, 0x497, 0x499, 0x49B, 0x49D, 0x49F, 0x4A1, 0x4A3, 0x4A5, 0x4A7, 0x4A9, 0x4AB, 0x4AD, 0x4AF, 0x4B1, 0x4B3, 0x4B5, 0x4B7, 0x4B9, 0x4BB, 0x4BD, 0x4BF, 0x4C2, 0x4C4, 0x4C6, 0x4C8, 0x4CA, 0x4CC, 0x4D1, 0x4D3, 0x4D5, 0x4D7, 0x4D9, 0x4DB, 0x4DD, 0x4DF, 0x4E1, 0x4E3, 0x4E5, 0x4E7, 0x4E9, 0x4EB, 0x4ED, 0x4EF, 0x4F1, 0x4F3, 0x4F5, 0x4F7, 0x4F9, 0x4FB, 0x4FD, 0x4FF, 0x501, 0x503, 0x505, 0x507, 0x509, 0x50B, 0x50D, 0x50F, 0x511, 0x513, 0x515, 0x517, 0x519, 0x51B, 0x51D, 0x51F, 0x521, 0x523, 0x525, 0x527, 0x529, 0x52B, 0x52D, 0x52F, 0x1D79, 0x1D7D, 0x1D8E, 0x1E01, 0x1E03, 0x1E05, 0x1E07, 0x1E09, 0x1E0B, 0x1E0D, 0x1E0F, 0x1E11, 0x1E13, 0x1E15, 0x1E17, 0x1E19, 0x1E1B, 0x1E1D, 0x1E1F, 0x1E21, 0x1E23, 0x1E25, 0x1E27, 0x1E29, 0x1E2B, 0x1E2D, 0x1E2F, 0x1E31, 0x1E33, 0x1E35, 0x1E37, 0x1E39, 0x1E3B, 0x1E3D, 0x1E3F, 0x1E41, 0x1E43, 0x1E45, 0x1E47, 0x1E49, 0x1E4B, 0x1E4D, 0x1E4F, 0x1E51, 0x1E53, 0x1E55, 0x1E57, 0x1E59, 0x1E5B, 0x1E5D, 0x1E5F, 0x1E61, 0x1E63, 0x1E65, 0x1E67, 0x1E69, 0x1E6B, 0x1E6D, 0x1E6F, 0x1E71, 0x1E73, 0x1E75, 0x1E77, 0x1E79, 0x1E7B, 0x1E7D, 0x1E7F, 0x1E81, 0x1E83, 0x1E85, 0x1E87, 0x1E89, 0x1E8B, 0x1E8D, 0x1E8F, 0x1E91, 0x1E93, 0x1EA1, 0x1EA3, 0x1EA5, 0x1EA7, 0x1EA9, 0x1EAB, 0x1EAD, 0x1EAF, 0x1EB1, 0x1EB3, 0x1EB5, 0x1EB7, 0x1EB9, 0x1EBB, 0x1EBD, 0x1EBF, 0x1EC1, 0x1EC3, 0x1EC5, 0x1EC7, 0x1EC9, 0x1ECB, 0x1ECD, 0x1ECF, 0x1ED1, 0x1ED3, 0x1ED5, 0x1ED7, 0x1ED9, 0x1EDB, 0x1EDD, 0x1EDF, 0x1EE1, 0x1EE3, 0x1EE5, 0x1EE7, 0x1EE9, 0x1EEB, 0x1EED, 0x1EEF, 0x1EF1, 0x1EF3, 0x1EF5, 0x1EF7, 0x1EF9, 0x1EFB, 0x1EFD, 0x1FBC, 0x1FBE, 0x1FCC, 0x1FFC, 0x214E, 0x2184, 0x2C61, 0x2C68, 0x2C6A, 0x2C6C, 0x2C73, 0x2C76, 0x2C81, 0x2C83, 0x2C85, 0x2C87, 0x2C89, 0x2C8B, 0x2C8D, 0x2C8F, 0x2C91, 0x2C93, 0x2C95, 0x2C97, 0x2C99, 0x2C9B, 0x2C9D, 0x2C9F, 0x2CA1, 0x2CA3, 0x2CA5, 0x2CA7, 0x2CA9, 0x2CAB, 0x2CAD, 0x2CAF, 0x2CB1, 0x2CB3, 0x2CB5, 0x2CB7, 0x2CB9, 0x2CBB, 0x2CBD, 0x2CBF, 0x2CC1, 0x2CC3, 0x2CC5, 0x2CC7, 0x2CC9, 0x2CCB, 0x2CCD, 0x2CCF, 0x2CD1, 0x2CD3, 0x2CD5, 0x2CD7, 0x2CD9, 0x2CDB, 0x2CDD, 0x2CDF, 0x2CE1, 0x2CE3, 0x2CEC, 0x2CEE, 0x2CF3, 0x2D27, 0x2D2D, 0xA641, 0xA643, 0xA645, 0xA647, 0xA649, 0xA64B, 0xA64D, 0xA64F, 0xA651, 0xA653, 0xA655, 0xA657, 0xA659, 0xA65B, 0xA65D, 0xA65F, 0xA661, 0xA663, 0xA665, 0xA667, 0xA669, 0xA66B, 0xA66D, 0xA681, 0xA683, 0xA685, 0xA687, 0xA689, 0xA68B, 0xA68D, 0xA68F, 0xA691, 0xA693, 0xA695, 0xA697, 0xA699, 0xA69B, 0xA723, 0xA725, 0xA727, 0xA729, 0xA72B, 0xA72D, 0xA72F, 0xA733, 0xA735, 0xA737, 0xA739, 0xA73B, 0xA73D, 0xA73F, 0xA741, 0xA743, 0xA745, 0xA747, 0xA749, 0xA74B, 0xA74D, 0xA74F, 0xA751, 0xA753, 0xA755, 0xA757, 0xA759, 0xA75B, 0xA75D, 0xA75F, 0xA761, 0xA763, 0xA765, 0xA767, 0xA769, 0xA76B, 0xA76D, 0xA76F, 0xA77A, 0xA77C, 0xA77F, 0xA781, 0xA783, 0xA785, 0xA787, 0xA78C, 0xA791, 0xA797, 0xA799, 0xA79B, 0xA79D, 0xA79F, 0xA7A1, 0xA7A3, 0xA7A5, 0xA7A7, 0xA7A9, 0xA7B5, 0xA7B7, 0xA7B9, 0xA7BB, 0xA7BD, 0xA7BF, 0xA7C1, 0xA7C3, 0xA7C8, 0xA7CA, 0xA7D1, 0xA7D7, 0xA7D9, 0xA7F6, 0xAB53);\nset.addRange(0x61, 0x7A).addRange(0xDF, 0xF6).addRange(0xF8, 0xFF).addRange(0x148, 0x149).addRange(0x17E, 0x180).addRange(0x199, 0x19A).addRange(0x1C5, 0x1C6).addRange(0x1C8, 0x1C9).addRange(0x1CB, 0x1CC).addRange(0x1DC, 0x1DD).addRange(0x1EF, 0x1F0).addRange(0x1F2, 0x1F3).addRange(0x23F, 0x240).addRange(0x24F, 0x254).addRange(0x256, 0x257).addRange(0x25B, 0x25C).addRange(0x260, 0x261).addRange(0x265, 0x266).addRange(0x268, 0x26C).addRange(0x271, 0x272).addRange(0x282, 0x283).addRange(0x287, 0x28C).addRange(0x29D, 0x29E).addRange(0x37B, 0x37D).addRange(0x3AC, 0x3CE).addRange(0x3D0, 0x3D1).addRange(0x3D5, 0x3D7).addRange(0x3EF, 0x3F3).addRange(0x430, 0x45F).addRange(0x4CE, 0x4CF).addRange(0x561, 0x587).addRange(0x10D0, 0x10FA).addRange(0x10FD, 0x10FF).addRange(0x13F8, 0x13FD).addRange(0x1C80, 0x1C88).addRange(0x1E95, 0x1E9B).addRange(0x1EFF, 0x1F07).addRange(0x1F10, 0x1F15).addRange(0x1F20, 0x1F27).addRange(0x1F30, 0x1F37).addRange(0x1F40, 0x1F45).addRange(0x1F50, 0x1F57).addRange(0x1F60, 0x1F67).addRange(0x1F70, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FB7).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FC7).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FD7).addRange(0x1FE0, 0x1FE7);\nset.addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FF7).addRange(0x2170, 0x217F).addRange(0x24D0, 0x24E9).addRange(0x2C30, 0x2C5F).addRange(0x2C65, 0x2C66).addRange(0x2D00, 0x2D25).addRange(0xA793, 0xA794).addRange(0xAB70, 0xABBF).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFF41, 0xFF5A).addRange(0x10428, 0x1044F).addRange(0x104D8, 0x104FB).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10CC0, 0x10CF2).addRange(0x118C0, 0x118DF).addRange(0x16E60, 0x16E7F).addRange(0x1E922, 0x1E943);\nmodule.exports = set;","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","// Generated using `npm run build`. Do not edit.\n'use strict';\n\nconst regenerate = require('regenerate');\nexports.REGULAR = new Map([['d', regenerate().addRange(0x30, 0x39)], ['D', regenerate().addRange(0x0, 0x2F).addRange(0x3A, 0xFFFF)], ['s', regenerate(0x20, 0xA0, 0x1680, 0x202F, 0x205F, 0x3000, 0xFEFF).addRange(0x9, 0xD).addRange(0x2000, 0x200A).addRange(0x2028, 0x2029)], ['S', regenerate().addRange(0x0, 0x8).addRange(0xE, 0x1F).addRange(0x21, 0x9F).addRange(0xA1, 0x167F).addRange(0x1681, 0x1FFF).addRange(0x200B, 0x2027).addRange(0x202A, 0x202E).addRange(0x2030, 0x205E).addRange(0x2060, 0x2FFF).addRange(0x3001, 0xFEFE).addRange(0xFF00, 0xFFFF)], ['w', regenerate(0x5F).addRange(0x30, 0x39).addRange(0x41, 0x5A).addRange(0x61, 0x7A)], ['W', regenerate(0x60).addRange(0x0, 0x2F).addRange(0x3A, 0x40).addRange(0x5B, 0x5E).addRange(0x7B, 0xFFFF)]]);\nexports.UNICODE = new Map([['d', regenerate().addRange(0x30, 0x39)], ['D', regenerate().addRange(0x0, 0x2F).addRange(0x3A, 0x10FFFF)], ['s', regenerate(0x20, 0xA0, 0x1680, 0x202F, 0x205F, 0x3000, 0xFEFF).addRange(0x9, 0xD).addRange(0x2000, 0x200A).addRange(0x2028, 0x2029)], ['S', regenerate().addRange(0x0, 0x8).addRange(0xE, 0x1F).addRange(0x21, 0x9F).addRange(0xA1, 0x167F).addRange(0x1681, 0x1FFF).addRange(0x200B, 0x2027).addRange(0x202A, 0x202E).addRange(0x2030, 0x205E).addRange(0x2060, 0x2FFF).addRange(0x3001, 0xFEFE).addRange(0xFF00, 0x10FFFF)], ['w', regenerate(0x5F).addRange(0x30, 0x39).addRange(0x41, 0x5A).addRange(0x61, 0x7A)], ['W', regenerate(0x60).addRange(0x0, 0x2F).addRange(0x3A, 0x40).addRange(0x5B, 0x5E).addRange(0x7B, 0x10FFFF)]]);\nexports.UNICODE_IGNORE_CASE = new Map([['d', regenerate().addRange(0x30, 0x39)], ['D', regenerate().addRange(0x0, 0x2F).addRange(0x3A, 0x10FFFF)], ['s', regenerate(0x20, 0xA0, 0x1680, 0x202F, 0x205F, 0x3000, 0xFEFF).addRange(0x9, 0xD).addRange(0x2000, 0x200A).addRange(0x2028, 0x2029)], ['S', regenerate().addRange(0x0, 0x8).addRange(0xE, 0x1F).addRange(0x21, 0x9F).addRange(0xA1, 0x167F).addRange(0x1681, 0x1FFF).addRange(0x200B, 0x2027).addRange(0x202A, 0x202E).addRange(0x2030, 0x205E).addRange(0x2060, 0x2FFF).addRange(0x3001, 0xFEFE).addRange(0xFF00, 0x10FFFF)], ['w', regenerate(0x5F, 0x17F, 0x212A).addRange(0x30, 0x39).addRange(0x41, 0x5A).addRange(0x61, 0x7A)], ['W', regenerate(0x60).addRange(0x0, 0x2F).addRange(0x3A, 0x40).addRange(0x5B, 0x5E).addRange(0x7B, 0x17E).addRange(0x180, 0x2129).addRange(0x212B, 0x10FFFF)]]);","const set = require('regenerate')(0x3037, 0x30FB);\nset.addRange(0x1100, 0x11FF).addRange(0x3001, 0x3003).addRange(0x3008, 0x3011).addRange(0x3013, 0x301F).addRange(0x302E, 0x3030).addRange(0x3131, 0x318E).addRange(0x3200, 0x321E).addRange(0x3260, 0x327E).addRange(0xA960, 0xA97C).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xFE45, 0xFE46).addRange(0xFF61, 0xFF65).addRange(0xFFA0, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x10450, 0x1047F);\nmodule.exports = set;","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","const set = require('regenerate')();\nset.addRange(0x16B00, 0x16B45).addRange(0x16B50, 0x16B59).addRange(0x16B5B, 0x16B61).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x11EE0, 0x11EF8);\nmodule.exports = set;","var classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","const set = require('regenerate')(0xAA, 0xB5, 0xBA, 0x101, 0x103, 0x105, 0x107, 0x109, 0x10B, 0x10D, 0x10F, 0x111, 0x113, 0x115, 0x117, 0x119, 0x11B, 0x11D, 0x11F, 0x121, 0x123, 0x125, 0x127, 0x129, 0x12B, 0x12D, 0x12F, 0x131, 0x133, 0x135, 0x13A, 0x13C, 0x13E, 0x140, 0x142, 0x144, 0x146, 0x14B, 0x14D, 0x14F, 0x151, 0x153, 0x155, 0x157, 0x159, 0x15B, 0x15D, 0x15F, 0x161, 0x163, 0x165, 0x167, 0x169, 0x16B, 0x16D, 0x16F, 0x171, 0x173, 0x175, 0x177, 0x17A, 0x17C, 0x183, 0x185, 0x188, 0x192, 0x195, 0x19E, 0x1A1, 0x1A3, 0x1A5, 0x1A8, 0x1AD, 0x1B0, 0x1B4, 0x1B6, 0x1C6, 0x1C9, 0x1CC, 0x1CE, 0x1D0, 0x1D2, 0x1D4, 0x1D6, 0x1D8, 0x1DA, 0x1DF, 0x1E1, 0x1E3, 0x1E5, 0x1E7, 0x1E9, 0x1EB, 0x1ED, 0x1F3, 0x1F5, 0x1F9, 0x1FB, 0x1FD, 0x1FF, 0x201, 0x203, 0x205, 0x207, 0x209, 0x20B, 0x20D, 0x20F, 0x211, 0x213, 0x215, 0x217, 0x219, 0x21B, 0x21D, 0x21F, 0x221, 0x223, 0x225, 0x227, 0x229, 0x22B, 0x22D, 0x22F, 0x231, 0x23C, 0x242, 0x247, 0x249, 0x24B, 0x24D, 0x345, 0x371, 0x373, 0x377, 0x390, 0x3D9, 0x3DB, 0x3DD, 0x3DF, 0x3E1, 0x3E3, 0x3E5, 0x3E7, 0x3E9, 0x3EB, 0x3ED, 0x3F5, 0x3F8, 0x461, 0x463, 0x465, 0x467, 0x469, 0x46B, 0x46D, 0x46F, 0x471, 0x473, 0x475, 0x477, 0x479, 0x47B, 0x47D, 0x47F, 0x481, 0x48B, 0x48D, 0x48F, 0x491, 0x493, 0x495, 0x497, 0x499, 0x49B, 0x49D, 0x49F, 0x4A1, 0x4A3, 0x4A5, 0x4A7, 0x4A9, 0x4AB, 0x4AD, 0x4AF, 0x4B1, 0x4B3, 0x4B5, 0x4B7, 0x4B9, 0x4BB, 0x4BD, 0x4BF, 0x4C2, 0x4C4, 0x4C6, 0x4C8, 0x4CA, 0x4CC, 0x4D1, 0x4D3, 0x4D5, 0x4D7, 0x4D9, 0x4DB, 0x4DD, 0x4DF, 0x4E1, 0x4E3, 0x4E5, 0x4E7, 0x4E9, 0x4EB, 0x4ED, 0x4EF, 0x4F1, 0x4F3, 0x4F5, 0x4F7, 0x4F9, 0x4FB, 0x4FD, 0x4FF, 0x501, 0x503, 0x505, 0x507, 0x509, 0x50B, 0x50D, 0x50F, 0x511, 0x513, 0x515, 0x517, 0x519, 0x51B, 0x51D, 0x51F, 0x521, 0x523, 0x525, 0x527, 0x529, 0x52B, 0x52D, 0x52F, 0x1E01, 0x1E03, 0x1E05, 0x1E07, 0x1E09, 0x1E0B, 0x1E0D, 0x1E0F, 0x1E11, 0x1E13, 0x1E15, 0x1E17, 0x1E19, 0x1E1B, 0x1E1D, 0x1E1F, 0x1E21, 0x1E23, 0x1E25, 0x1E27, 0x1E29, 0x1E2B, 0x1E2D, 0x1E2F, 0x1E31, 0x1E33, 0x1E35, 0x1E37, 0x1E39, 0x1E3B, 0x1E3D, 0x1E3F, 0x1E41, 0x1E43, 0x1E45, 0x1E47, 0x1E49, 0x1E4B, 0x1E4D, 0x1E4F, 0x1E51, 0x1E53, 0x1E55, 0x1E57, 0x1E59, 0x1E5B, 0x1E5D, 0x1E5F, 0x1E61, 0x1E63, 0x1E65, 0x1E67, 0x1E69, 0x1E6B, 0x1E6D, 0x1E6F, 0x1E71, 0x1E73, 0x1E75, 0x1E77, 0x1E79, 0x1E7B, 0x1E7D, 0x1E7F, 0x1E81, 0x1E83, 0x1E85, 0x1E87, 0x1E89, 0x1E8B, 0x1E8D, 0x1E8F, 0x1E91, 0x1E93, 0x1E9F, 0x1EA1, 0x1EA3, 0x1EA5, 0x1EA7, 0x1EA9, 0x1EAB, 0x1EAD, 0x1EAF, 0x1EB1, 0x1EB3, 0x1EB5, 0x1EB7, 0x1EB9, 0x1EBB, 0x1EBD, 0x1EBF, 0x1EC1, 0x1EC3, 0x1EC5, 0x1EC7, 0x1EC9, 0x1ECB, 0x1ECD, 0x1ECF, 0x1ED1, 0x1ED3, 0x1ED5, 0x1ED7, 0x1ED9, 0x1EDB, 0x1EDD, 0x1EDF, 0x1EE1, 0x1EE3, 0x1EE5, 0x1EE7, 0x1EE9, 0x1EEB, 0x1EED, 0x1EEF, 0x1EF1, 0x1EF3, 0x1EF5, 0x1EF7, 0x1EF9, 0x1EFB, 0x1EFD, 0x1FBE, 0x2071, 0x207F, 0x210A, 0x2113, 0x212F, 0x2134, 0x2139, 0x214E, 0x2184, 0x2C61, 0x2C68, 0x2C6A, 0x2C6C, 0x2C71, 0x2C81, 0x2C83, 0x2C85, 0x2C87, 0x2C89, 0x2C8B, 0x2C8D, 0x2C8F, 0x2C91, 0x2C93, 0x2C95, 0x2C97, 0x2C99, 0x2C9B, 0x2C9D, 0x2C9F, 0x2CA1, 0x2CA3, 0x2CA5, 0x2CA7, 0x2CA9, 0x2CAB, 0x2CAD, 0x2CAF, 0x2CB1, 0x2CB3, 0x2CB5, 0x2CB7, 0x2CB9, 0x2CBB, 0x2CBD, 0x2CBF, 0x2CC1, 0x2CC3, 0x2CC5, 0x2CC7, 0x2CC9, 0x2CCB, 0x2CCD, 0x2CCF, 0x2CD1, 0x2CD3, 0x2CD5, 0x2CD7, 0x2CD9, 0x2CDB, 0x2CDD, 0x2CDF, 0x2CE1, 0x2CEC, 0x2CEE, 0x2CF3, 0x2D27, 0x2D2D, 0xA641, 0xA643, 0xA645, 0xA647, 0xA649, 0xA64B, 0xA64D, 0xA64F, 0xA651, 0xA653, 0xA655, 0xA657, 0xA659, 0xA65B, 0xA65D, 0xA65F, 0xA661, 0xA663, 0xA665, 0xA667, 0xA669, 0xA66B, 0xA66D, 0xA681, 0xA683, 0xA685, 0xA687, 0xA689, 0xA68B, 0xA68D, 0xA68F, 0xA691, 0xA693, 0xA695, 0xA697, 0xA699, 0xA723, 0xA725, 0xA727, 0xA729, 0xA72B, 0xA72D, 0xA733, 0xA735, 0xA737, 0xA739, 0xA73B, 0xA73D, 0xA73F, 0xA741, 0xA743, 0xA745, 0xA747, 0xA749, 0xA74B, 0xA74D, 0xA74F, 0xA751, 0xA753, 0xA755, 0xA757, 0xA759, 0xA75B, 0xA75D, 0xA75F, 0xA761, 0xA763, 0xA765, 0xA767, 0xA769, 0xA76B, 0xA76D, 0xA77A, 0xA77C, 0xA77F, 0xA781, 0xA783, 0xA785, 0xA787, 0xA78C, 0xA78E, 0xA791, 0xA797, 0xA799, 0xA79B, 0xA79D, 0xA79F, 0xA7A1, 0xA7A3, 0xA7A5, 0xA7A7, 0xA7A9, 0xA7AF, 0xA7B5, 0xA7B7, 0xA7B9, 0xA7BB, 0xA7BD, 0xA7BF, 0xA7C1, 0xA7C3, 0xA7C8, 0xA7CA, 0xA7D1, 0xA7D3, 0xA7D5, 0xA7D7, 0xA7D9, 0xA7F6, 0x10780, 0x1D4BB, 0x1D7CB);\nset.addRange(0x61, 0x7A).addRange(0xDF, 0xF6).addRange(0xF8, 0xFF).addRange(0x137, 0x138).addRange(0x148, 0x149).addRange(0x17E, 0x180).addRange(0x18C, 0x18D).addRange(0x199, 0x19B).addRange(0x1AA, 0x1AB).addRange(0x1B9, 0x1BA).addRange(0x1BD, 0x1BF).addRange(0x1DC, 0x1DD).addRange(0x1EF, 0x1F0).addRange(0x233, 0x239).addRange(0x23F, 0x240).addRange(0x24F, 0x293).addRange(0x295, 0x2B8).addRange(0x2C0, 0x2C1).addRange(0x2E0, 0x2E4).addRange(0x37A, 0x37D).addRange(0x3AC, 0x3CE).addRange(0x3D0, 0x3D1).addRange(0x3D5, 0x3D7).addRange(0x3EF, 0x3F3).addRange(0x3FB, 0x3FC).addRange(0x430, 0x45F).addRange(0x4CE, 0x4CF).addRange(0x560, 0x588).addRange(0x10D0, 0x10FA).addRange(0x10FD, 0x10FF).addRange(0x13F8, 0x13FD).addRange(0x1C80, 0x1C88).addRange(0x1D00, 0x1DBF).addRange(0x1E95, 0x1E9D).addRange(0x1EFF, 0x1F07).addRange(0x1F10, 0x1F15).addRange(0x1F20, 0x1F27).addRange(0x1F30, 0x1F37).addRange(0x1F40, 0x1F45).addRange(0x1F50, 0x1F57).addRange(0x1F60, 0x1F67).addRange(0x1F70, 0x1F7D).addRange(0x1F80, 0x1F87).addRange(0x1F90, 0x1F97).addRange(0x1FA0, 0x1FA7).addRange(0x1FB0, 0x1FB4).addRange(0x1FB6, 0x1FB7).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FC7).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FD7);\nset.addRange(0x1FE0, 0x1FE7).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FF7).addRange(0x2090, 0x209C).addRange(0x210E, 0x210F).addRange(0x213C, 0x213D).addRange(0x2146, 0x2149).addRange(0x2170, 0x217F).addRange(0x24D0, 0x24E9).addRange(0x2C30, 0x2C5F).addRange(0x2C65, 0x2C66).addRange(0x2C73, 0x2C74).addRange(0x2C76, 0x2C7D).addRange(0x2CE3, 0x2CE4).addRange(0x2D00, 0x2D25).addRange(0xA69B, 0xA69D).addRange(0xA72F, 0xA731).addRange(0xA76F, 0xA778).addRange(0xA793, 0xA795).addRange(0xA7F8, 0xA7FA).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB68).addRange(0xAB70, 0xABBF).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFF41, 0xFF5A).addRange(0x10428, 0x1044F).addRange(0x104D8, 0x104FB).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10783, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10CC0, 0x10CF2).addRange(0x118C0, 0x118DF).addRange(0x16E60, 0x16E7F).addRange(0x1D41A, 0x1D433).addRange(0x1D44E, 0x1D454).addRange(0x1D456, 0x1D467).addRange(0x1D482, 0x1D49B).addRange(0x1D4B6, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D4CF).addRange(0x1D4EA, 0x1D503).addRange(0x1D51E, 0x1D537).addRange(0x1D552, 0x1D56B).addRange(0x1D586, 0x1D59F).addRange(0x1D5BA, 0x1D5D3).addRange(0x1D5EE, 0x1D607);\nset.addRange(0x1D622, 0x1D63B).addRange(0x1D656, 0x1D66F).addRange(0x1D68A, 0x1D6A5).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6E1).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D71B).addRange(0x1D736, 0x1D74E).addRange(0x1D750, 0x1D755).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D78F).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7C9).addRange(0x1DF00, 0x1DF09).addRange(0x1DF0B, 0x1DF1E).addRange(0x1E922, 0x1E943);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x11680, 0x116B9).addRange(0x116C0, 0x116C9);\nmodule.exports = set;","/**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\nfunction baseLodash() {\n // No operation performed.\n}\n\nmodule.exports = baseLodash;\n","var apply = require('./_apply'),\n createCtor = require('./_createCtor'),\n createHybrid = require('./_createHybrid'),\n createRecurry = require('./_createRecurry'),\n getHolder = require('./_getHolder'),\n replaceHolders = require('./_replaceHolders'),\n root = require('./_root');\n\n/**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n}\n\nmodule.exports = createCurry;\n","const set = require('regenerate')();\nset.addRange(0x1B00, 0x1B4C).addRange(0x1B50, 0x1B7E);\nmodule.exports = set;","const set = require('regenerate')(0x24, 0x58F, 0x60B, 0x9FB, 0xAF1, 0xBF9, 0xE3F, 0x17DB, 0xA838, 0xFDFC, 0xFE69, 0xFF04, 0x1E2FF, 0x1ECB0);\nset.addRange(0xA2, 0xA5).addRange(0x7FE, 0x7FF).addRange(0x9F2, 0x9F3).addRange(0x20A0, 0x20C0).addRange(0xFFE0, 0xFFE1).addRange(0xFFE5, 0xFFE6).addRange(0x11FDD, 0x11FE0);\nmodule.exports = set;","const set = require('regenerate')(0x16FE1);\nset.addRange(0x1B170, 0x1B2FB);\nmodule.exports = set;","var castPath = require('./_castPath'),\n last = require('./last'),\n parent = require('./_parent'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;\n","const set = require('regenerate')();\nset.addRange(0x10FE0, 0x10FF6);\nmodule.exports = set;","var call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw $TypeError(\"Can't convert object to primitive value\");\n};\n","const set = require('regenerate')(0x21, 0x2C, 0x2E, 0x3F, 0x37E, 0x387, 0x589, 0x5C3, 0x60C, 0x61B, 0x6D4, 0x70C, 0x85E, 0xF08, 0x166E, 0x17DA, 0x2E2E, 0x2E3C, 0x2E41, 0x2E4C, 0xA92F, 0xAADF, 0xABEB, 0xFF01, 0xFF0C, 0xFF0E, 0xFF1F, 0xFF61, 0xFF64, 0x1039F, 0x103D0, 0x10857, 0x1091F, 0x111CD, 0x112A9, 0x11944, 0x11946, 0x11C71, 0x16AF5, 0x16B44, 0x1BC9F);\nset.addRange(0x3A, 0x3B).addRange(0x61D, 0x61F).addRange(0x700, 0x70A).addRange(0x7F8, 0x7F9).addRange(0x830, 0x83E).addRange(0x964, 0x965).addRange(0xE5A, 0xE5B).addRange(0xF0D, 0xF12).addRange(0x104A, 0x104B).addRange(0x1361, 0x1368).addRange(0x16EB, 0x16ED).addRange(0x1735, 0x1736).addRange(0x17D4, 0x17D6).addRange(0x1802, 0x1805).addRange(0x1808, 0x1809).addRange(0x1944, 0x1945).addRange(0x1AA8, 0x1AAB).addRange(0x1B5A, 0x1B5B).addRange(0x1B5D, 0x1B5F).addRange(0x1B7D, 0x1B7E).addRange(0x1C3B, 0x1C3F).addRange(0x1C7E, 0x1C7F).addRange(0x203C, 0x203D).addRange(0x2047, 0x2049).addRange(0x2E4E, 0x2E4F).addRange(0x2E53, 0x2E54).addRange(0x3001, 0x3002).addRange(0xA4FE, 0xA4FF).addRange(0xA60D, 0xA60F).addRange(0xA6F3, 0xA6F7).addRange(0xA876, 0xA877).addRange(0xA8CE, 0xA8CF).addRange(0xA9C7, 0xA9C9).addRange(0xAA5D, 0xAA5F).addRange(0xAAF0, 0xAAF1).addRange(0xFE50, 0xFE52).addRange(0xFE54, 0xFE57).addRange(0xFF1A, 0xFF1B).addRange(0x10A56, 0x10A57).addRange(0x10AF0, 0x10AF5).addRange(0x10B3A, 0x10B3F).addRange(0x10B99, 0x10B9C).addRange(0x10F55, 0x10F59).addRange(0x10F86, 0x10F89).addRange(0x11047, 0x1104D).addRange(0x110BE, 0x110C1).addRange(0x11141, 0x11143).addRange(0x111C5, 0x111C6).addRange(0x111DE, 0x111DF).addRange(0x11238, 0x1123C).addRange(0x1144B, 0x1144D);\nset.addRange(0x1145A, 0x1145B).addRange(0x115C2, 0x115C5).addRange(0x115C9, 0x115D7).addRange(0x11641, 0x11642).addRange(0x1173C, 0x1173E).addRange(0x11A42, 0x11A43).addRange(0x11A9B, 0x11A9C).addRange(0x11AA1, 0x11AA2).addRange(0x11C41, 0x11C43).addRange(0x11EF7, 0x11EF8).addRange(0x12470, 0x12474).addRange(0x16A6E, 0x16A6F).addRange(0x16B37, 0x16B39).addRange(0x16E97, 0x16E98).addRange(0x1DA87, 0x1DA8A);\nmodule.exports = set;","// Generated using `npm run build`. Do not edit!\nmodule.exports = new Map([['scx', 'Script_Extensions'], ['sc', 'Script'], ['gc', 'General_Category'], ['AHex', 'ASCII_Hex_Digit'], ['Alpha', 'Alphabetic'], ['Bidi_C', 'Bidi_Control'], ['Bidi_M', 'Bidi_Mirrored'], ['Cased', 'Cased'], ['CI', 'Case_Ignorable'], ['CWCF', 'Changes_When_Casefolded'], ['CWCM', 'Changes_When_Casemapped'], ['CWKCF', 'Changes_When_NFKC_Casefolded'], ['CWL', 'Changes_When_Lowercased'], ['CWT', 'Changes_When_Titlecased'], ['CWU', 'Changes_When_Uppercased'], ['Dash', 'Dash'], ['Dep', 'Deprecated'], ['DI', 'Default_Ignorable_Code_Point'], ['Dia', 'Diacritic'], ['EBase', 'Emoji_Modifier_Base'], ['EComp', 'Emoji_Component'], ['EMod', 'Emoji_Modifier'], ['Emoji', 'Emoji'], ['EPres', 'Emoji_Presentation'], ['Ext', 'Extender'], ['ExtPict', 'Extended_Pictographic'], ['Gr_Base', 'Grapheme_Base'], ['Gr_Ext', 'Grapheme_Extend'], ['Hex', 'Hex_Digit'], ['IDC', 'ID_Continue'], ['Ideo', 'Ideographic'], ['IDS', 'ID_Start'], ['IDSB', 'IDS_Binary_Operator'], ['IDST', 'IDS_Trinary_Operator'], ['Join_C', 'Join_Control'], ['LOE', 'Logical_Order_Exception'], ['Lower', 'Lowercase'], ['Math', 'Math'], ['NChar', 'Noncharacter_Code_Point'], ['Pat_Syn', 'Pattern_Syntax'], ['Pat_WS', 'Pattern_White_Space'], ['QMark', 'Quotation_Mark'], ['Radical', 'Radical'], ['RI', 'Regional_Indicator'], ['SD', 'Soft_Dotted'], ['STerm', 'Sentence_Terminal'], ['Term', 'Terminal_Punctuation'], ['UIdeo', 'Unified_Ideograph'], ['Upper', 'Uppercase'], ['VS', 'Variation_Selector'], ['WSpace', 'White_Space'], ['space', 'White_Space'], ['XIDC', 'XID_Continue'], ['XIDS', 'XID_Start']]);","const set = require('regenerate')();\nset.addRange(0x10480, 0x1049D).addRange(0x104A0, 0x104A9);\nmodule.exports = set;","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","const set = require('regenerate')();\nset.addRange(0x10FB0, 0x10FCB);\nmodule.exports = set;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","const set = require('regenerate')();\nset.addRange(0x10B80, 0x10B91).addRange(0x10B99, 0x10B9C).addRange(0x10BA9, 0x10BAF);\nmodule.exports = set;","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","var getWrapDetails = require('./_getWrapDetails'),\n insertWrapDetails = require('./_insertWrapDetails'),\n setToString = require('./_setToString'),\n updateWrapDetails = require('./_updateWrapDetails');\n\n/**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\nfunction setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n}\n\nmodule.exports = setWrapToString;\n","const set = require('regenerate')(0x342, 0x345, 0x37F, 0x384, 0x386, 0x38C, 0x1F59, 0x1F5B, 0x1F5D, 0x2126, 0xAB65, 0x101A0);\nset.addRange(0x370, 0x373).addRange(0x375, 0x377).addRange(0x37A, 0x37D).addRange(0x388, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3E1).addRange(0x3F0, 0x3FF).addRange(0x1D26, 0x1D2A).addRange(0x1D5D, 0x1D61).addRange(0x1D66, 0x1D6A).addRange(0x1DBF, 0x1DC1).addRange(0x1F00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FC4).addRange(0x1FC6, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FDD, 0x1FEF).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFE).addRange(0x10140, 0x1018E).addRange(0x1D200, 0x1D245);\nmodule.exports = set;","module.exports = function parseUnit(str, out) {\n if (!out) out = [0, ''];\n str = String(str);\n var num = parseFloat(str, 10);\n out[0] = num;\n out[1] = str.match(/[\\d.\\-\\+]*\\s*(.*)/)[1] || '';\n return out;\n};","var deburrLetter = require('./_deburrLetter'),\n toString = require('./toString');\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}","const set = require('regenerate')(0x12F, 0x249, 0x268, 0x29D, 0x2B2, 0x3F3, 0x456, 0x458, 0x1D62, 0x1D96, 0x1DA4, 0x1DA8, 0x1E2D, 0x1ECB, 0x2071, 0x2C7C, 0x1DF1A);\nset.addRange(0x69, 0x6A).addRange(0x2148, 0x2149).addRange(0x1D422, 0x1D423).addRange(0x1D456, 0x1D457).addRange(0x1D48A, 0x1D48B).addRange(0x1D4BE, 0x1D4BF).addRange(0x1D4F2, 0x1D4F3).addRange(0x1D526, 0x1D527).addRange(0x1D55A, 0x1D55B).addRange(0x1D58E, 0x1D58F).addRange(0x1D5C2, 0x1D5C3).addRange(0x1D5F6, 0x1D5F7).addRange(0x1D62A, 0x1D62B).addRange(0x1D65E, 0x1D65F).addRange(0x1D692, 0x1D693);\nmodule.exports = set;","const set = require('regenerate')(0xA3C, 0xA51, 0xA5E);\nset.addRange(0xA01, 0xA03).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33).addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA3E, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA59, 0xA5C).addRange(0xA66, 0xA76);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x0, 0x7F);\nmodule.exports = set;","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\n\nvar $Array = Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = $Array(max(fin - k, 0));\n for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n};\n","const set = require('regenerate')(0x1DF9, 0x101FD);\nset.addRange(0x300, 0x341).addRange(0x343, 0x344).addRange(0x346, 0x362).addRange(0x953, 0x954).addRange(0x1AB0, 0x1ACE).addRange(0x1DC2, 0x1DF7).addRange(0x1DFB, 0x1DFF).addRange(0x200C, 0x200D).addRange(0x20D0, 0x20EF).addRange(0xFE00, 0xFE0F).addRange(0xFE20, 0xFE2D).addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1D167, 0x1D169).addRange(0x1D17B, 0x1D182).addRange(0x1D185, 0x1D18B).addRange(0x1D1AA, 0x1D1AD).addRange(0xE0100, 0xE01EF);\nmodule.exports = set;","import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

    {`The `}{`jb`}{` binary is primarily distributed using `}{`GitHub releases`}{`.`}

    \n

    {`Linux, macOS`}

    \n

    {`For Linux and macOS, download the binary for your architecture, put it somewhere on your `}{`$PATH`}{`, and make it an executable:`}

    \n
    {`# Linux amd64:`}{`\n`}{`sudo curl -Lo /usr/local/bin/jb https://github.com/jsonnet-bundler/jsonnet-bundler/releases/latest/download/jb-linux-amd64`}{`\n`}{`sudo chmod a+x /usr/local/bin/jb`}{`\n`}{`\n`}{`# Linux arm / arm64 (e.g. RaspberryPi):`}{`\n`}{`sudo curl -Lo /usr/local/bin/jb https://github.com/jsonnet-bundler/jsonnet-bundler/releases/latest/download/jb-linux-arm`}{`\n`}{`sudo curl -Lo /usr/local/bin/jb https://github.com/jsonnet-bundler/jsonnet-bundler/releases/latest/download/jb-linux-arm64`}{`\n`}{`sudo chmod a+x /usr/local/bin/jb`}{`\n`}{`\n`}{`# macOS:`}{`\n`}{`sudo curl -Lo /usr/local/bin/jb https://github.com/jsonnet-bundler/jsonnet-bundler/releases/latest/download/jb-darwin-amd64`}{`\n`}{`sudo chmod a+x /usr/local/bin/jb`}
    \n\n \n
    ;\n}\n;\nMDXContent.isMDXComponent = true;\n ","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","const set = require('regenerate')(0x2029);\nmodule.exports = set;","var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar regExpFlags = require('../internals/regexp-flags');\nvar fails = require('../internals/fails');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError\nvar RegExp = global.RegExp;\nvar RegExpPrototype = RegExp.prototype;\n\nvar FORCED = DESCRIPTORS && fails(function () {\n var INDICES_SUPPORT = true;\n try {\n RegExp('.', 'd');\n } catch (error) {\n INDICES_SUPPORT = false;\n }\n\n var O = {};\n // modern V8 bug\n var calls = '';\n var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\n\n var addGetter = function (key, chr) {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(O, key, { get: function () {\n calls += chr;\n return true;\n } });\n };\n\n var pairs = {\n dotAll: 's',\n global: 'g',\n ignoreCase: 'i',\n multiline: 'm',\n sticky: 'y'\n };\n\n if (INDICES_SUPPORT) pairs.hasIndices = 'd';\n\n for (var key in pairs) addGetter(key, pairs[key]);\n\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);\n\n return result !== expected || calls !== expected;\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\n configurable: true,\n get: regExpFlags\n});\n","const set = require('regenerate')();\nset.addRange(0x109A0, 0x109B7).addRange(0x109BC, 0x109CF).addRange(0x109D2, 0x109FF);\nmodule.exports = set;","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","const set = require('regenerate')();\nset.addRange(0x16A40, 0x16A5E).addRange(0x16A60, 0x16A69).addRange(0x16A6E, 0x16A6F);\nmodule.exports = set;","var userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n","const set = require('regenerate')();\nset.addRange(0x10860, 0x1087F);\nmodule.exports = set;","const set = require('regenerate')(0x670, 0x1CED, 0x1CF4, 0x101FD, 0x102E0, 0x1133B);\nset.addRange(0x300, 0x36F).addRange(0x485, 0x486).addRange(0x64B, 0x655).addRange(0x951, 0x954).addRange(0x1AB0, 0x1ACE).addRange(0x1CD0, 0x1CD2).addRange(0x1CD4, 0x1CE0).addRange(0x1CE2, 0x1CE8).addRange(0x1CF8, 0x1CF9).addRange(0x1DC0, 0x1DFF).addRange(0x200C, 0x200D).addRange(0x20D0, 0x20F0).addRange(0x302A, 0x302D).addRange(0x3099, 0x309A).addRange(0xFE00, 0xFE0F).addRange(0xFE20, 0xFE2D).addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1D167, 0x1D169).addRange(0x1D17B, 0x1D182).addRange(0x1D185, 0x1D18B).addRange(0x1D1AA, 0x1D1AD).addRange(0xE0100, 0xE01EF);\nmodule.exports = set;","// This is extracted to separate module because it's shared\n// between browser and SSR code\nexport const RouteAnnouncerProps = {\n id: `gatsby-announcer`,\n style: {\n position: `absolute`,\n top: 0,\n width: 1,\n height: 1,\n padding: 0,\n overflow: `hidden`,\n clip: `rect(0, 0, 0, 0)`,\n whiteSpace: `nowrap`,\n border: 0,\n },\n \"aria-live\": `assertive`,\n \"aria-atomic\": `true`,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport redirects from \"./redirects.json\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport emitter from \"./emitter\"\nimport { RouteAnnouncerProps } from \"./route-announcer-props\"\nimport { navigate as reachNavigate } from \"@reach/router\"\nimport { globalHistory } from \"@reach/router/lib/history\"\nimport { parsePath } from \"gatsby-link\"\n\n// Convert to a map for faster lookup in maybeRedirect()\n\nconst redirectMap = new Map()\nconst redirectIgnoreCaseMap = new Map()\n\nredirects.forEach(redirect => {\n if (redirect.ignoreCase) {\n redirectIgnoreCaseMap.set(redirect.fromPath, redirect)\n } else {\n redirectMap.set(redirect.fromPath, redirect)\n }\n})\n\nfunction maybeRedirect(pathname) {\n let redirect = redirectMap.get(pathname)\n if (!redirect) {\n redirect = redirectIgnoreCaseMap.get(pathname.toLowerCase())\n }\n\n if (redirect != null) {\n if (process.env.NODE_ENV !== `production`) {\n if (!loader.isPageNotFound(pathname)) {\n console.error(\n `The route \"${pathname}\" matches both a page and a redirect; this is probably not intentional.`\n )\n }\n }\n\n window.___replace(redirect.toPath)\n return true\n } else {\n return false\n }\n}\n\nconst onPreRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n apiRunner(`onPreRouteUpdate`, { location, prevLocation })\n }\n}\n\nconst onRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n apiRunner(`onRouteUpdate`, { location, prevLocation })\n if (\n process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND &&\n process.env.GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR === `true`\n ) {\n emitter.emit(`onRouteUpdate`, { location, prevLocation })\n }\n }\n}\n\nconst navigate = (to, options = {}) => {\n // Support forward/backward navigation with numbers\n // navigate(-2) (jumps back 2 history steps)\n // navigate(2) (jumps forward 2 history steps)\n if (typeof to === `number`) {\n globalHistory.navigate(to)\n return\n }\n\n let { pathname } = parsePath(to)\n let redirect = redirectMap.get(pathname)\n if (!redirect) {\n redirect = redirectIgnoreCaseMap.get(pathname.toLowerCase())\n }\n\n // If we're redirecting, just replace the passed in pathname\n // to the one we want to redirect to.\n if (redirect) {\n to = redirect.toPath\n pathname = parsePath(to).pathname\n }\n\n // If we had a service worker update, no matter the path, reload window and\n // reset the pathname whitelist\n if (window.___swUpdated) {\n window.location = pathname\n return\n }\n\n // Start a timer to wait for a second before transitioning and showing a\n // loader in case resources aren't around yet.\n const timeoutId = setTimeout(() => {\n emitter.emit(`onDelayedLoadPageResources`, { pathname })\n apiRunner(`onRouteUpdateDelayed`, {\n location: window.location,\n })\n }, 1000)\n\n loader.loadPage(pathname).then(pageResources => {\n // If no page resources, then refresh the page\n // Do this, rather than simply `window.location.reload()`, so that\n // pressing the back/forward buttons work - otherwise when pressing\n // back, the browser will just change the URL and expect JS to handle\n // the change, which won't always work since it might not be a Gatsby\n // page.\n if (!pageResources || pageResources.status === PageResourceStatus.Error) {\n window.history.replaceState({}, ``, location.href)\n window.location = pathname\n clearTimeout(timeoutId)\n return\n }\n\n // If the loaded page has a different compilation hash to the\n // window, then a rebuild has occurred on the server. Reload.\n if (process.env.NODE_ENV === `production` && pageResources) {\n if (\n pageResources.page.webpackCompilationHash !==\n window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n window.location = pathname\n }\n }\n reachNavigate(to, options)\n clearTimeout(timeoutId)\n })\n}\n\nfunction shouldUpdateScroll(prevRouterProps, { location }) {\n const { pathname, hash } = location\n const results = apiRunner(`shouldUpdateScroll`, {\n prevRouterProps,\n // `pathname` for backwards compatibility\n pathname,\n routerProps: { location },\n getSavedScrollPosition: args => [\n 0,\n this._stateStorage.read(args, args.key),\n ],\n })\n if (results.length > 0) {\n // Use the latest registered shouldUpdateScroll result, this allows users to override plugin's configuration\n // @see https://github.com/gatsbyjs/gatsby/issues/12038\n return results[results.length - 1]\n }\n\n if (prevRouterProps) {\n const {\n location: { pathname: oldPathname },\n } = prevRouterProps\n if (oldPathname === pathname) {\n // Scroll to element if it exists, if it doesn't, or no hash is provided,\n // scroll to top.\n return hash ? decodeURI(hash.slice(1)) : [0, 0]\n }\n }\n return true\n}\n\nfunction init() {\n // The \"scroll-behavior\" package expects the \"action\" to be on the location\n // object so let's copy it over.\n globalHistory.listen(args => {\n args.location.action = args.action\n })\n\n window.___push = to => navigate(to, { replace: false })\n window.___replace = to => navigate(to, { replace: true })\n window.___navigate = (to, options) => navigate(to, options)\n\n // Check for initial page-load redirect\n maybeRedirect(window.location.pathname)\n}\n\nclass RouteAnnouncer extends React.Component {\n constructor(props) {\n super(props)\n this.announcementRef = React.createRef()\n }\n\n componentDidUpdate(prevProps, nextProps) {\n requestAnimationFrame(() => {\n let pageName = `new page at ${this.props.location.pathname}`\n if (document.title) {\n pageName = document.title\n }\n const pageHeadings = document.querySelectorAll(`#gatsby-focus-wrapper h1`)\n if (pageHeadings && pageHeadings.length) {\n pageName = pageHeadings[0].textContent\n }\n const newAnnouncement = `Navigated to ${pageName}`\n if (this.announcementRef.current) {\n const oldAnnouncement = this.announcementRef.current.innerText\n if (oldAnnouncement !== newAnnouncement) {\n this.announcementRef.current.innerText = newAnnouncement\n }\n }\n })\n }\n\n render() {\n return
    \n }\n}\n\nconst compareLocationProps = (prevLocation, nextLocation) => {\n if (prevLocation.href !== nextLocation.href) {\n return true\n }\n\n if (prevLocation?.state?.key !== nextLocation?.state?.key) {\n return true\n }\n\n return false\n}\n\n// Fire on(Pre)RouteUpdate APIs\nclass RouteUpdates extends React.Component {\n constructor(props) {\n super(props)\n onPreRouteUpdate(props.location, null)\n }\n\n componentDidMount() {\n onRouteUpdate(this.props.location, null)\n }\n\n shouldComponentUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onPreRouteUpdate(this.props.location, prevProps.location)\n return true\n }\n return false\n }\n\n componentDidUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onRouteUpdate(this.props.location, prevProps.location)\n }\n }\n\n render() {\n return (\n \n {this.props.children}\n \n \n )\n }\n}\n\nRouteUpdates.propTypes = {\n location: PropTypes.object.isRequired,\n}\n\nexport { init, shouldUpdateScroll, RouteUpdates }\n","// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nfunction shallowDiffers(a, b) {\n for (var i in a) {\n if (!(i in b)) return true;\n }for (var _i in b) {\n if (a[_i] !== b[_i]) return true;\n }return false;\n}\n\nexport default (function (instance, nextProps, nextState) {\n return shallowDiffers(instance.props, nextProps) || shallowDiffers(instance.state, nextState);\n});","import React from \"react\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport shallowCompare from \"shallow-compare\"\n\nclass EnsureResources extends React.Component {\n constructor(props) {\n super()\n const { location, pageResources } = props\n this.state = {\n location: { ...location },\n pageResources: pageResources || loader.loadPageSync(location.pathname),\n }\n }\n\n static getDerivedStateFromProps({ location }, prevState) {\n if (prevState.location.href !== location.href) {\n const pageResources = loader.loadPageSync(location.pathname)\n return {\n pageResources,\n location: { ...location },\n }\n }\n\n return {\n location: { ...location },\n }\n }\n\n loadResources(rawPath) {\n loader.loadPage(rawPath).then(pageResources => {\n if (pageResources && pageResources.status !== PageResourceStatus.Error) {\n this.setState({\n location: { ...window.location },\n pageResources,\n })\n } else {\n window.history.replaceState({}, ``, location.href)\n window.location = rawPath\n }\n })\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n // Always return false if we're missing resources.\n if (!nextState.pageResources) {\n this.loadResources(nextProps.location.pathname)\n return false\n }\n\n if (\n process.env.BUILD_STAGE === `develop` &&\n nextState.pageResources.stale\n ) {\n this.loadResources(nextProps.location.pathname)\n return false\n }\n\n // Check if the component or json have changed.\n if (this.state.pageResources !== nextState.pageResources) {\n return true\n }\n if (\n this.state.pageResources.component !== nextState.pageResources.component\n ) {\n return true\n }\n\n if (this.state.pageResources.json !== nextState.pageResources.json) {\n return true\n }\n // Check if location has changed on a page using internal routing\n // via matchPath configuration.\n if (\n this.state.location.key !== nextState.location.key &&\n nextState.pageResources.page &&\n (nextState.pageResources.page.matchPath ||\n nextState.pageResources.page.path)\n ) {\n return true\n }\n return shallowCompare(this, nextProps, nextState)\n }\n\n render() {\n if (process.env.NODE_ENV !== `production` && !this.state.pageResources) {\n throw new Error(\n `EnsureResources was not able to find resources for path: \"${this.props.location.pathname}\"\nThis typically means that an issue occurred building components for that path.\nRun \\`gatsby clean\\` to remove any cached elements.`\n )\n }\n\n return this.props.children(this.state)\n }\n}\n\nexport default EnsureResources\n","import { apiRunner, apiRunnerAsync } from \"./api-runner-browser\"\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport { Router, navigate, Location, BaseContext } from \"@reach/router\"\nimport { ScrollContext } from \"gatsby-react-router-scroll\"\nimport domReady from \"@mikaelkristiansson/domready\"\nimport { StaticQueryContext } from \"gatsby\"\nimport {\n shouldUpdateScroll,\n init as navigationInit,\n RouteUpdates,\n} from \"./navigation\"\nimport emitter from \"./emitter\"\nimport PageRenderer from \"./page-renderer\"\nimport asyncRequires from \"$virtual/async-requires\"\nimport {\n setLoader,\n ProdLoader,\n publicLoader,\n PageResourceStatus,\n getStaticQueryResults,\n} from \"./loader\"\nimport EnsureResources from \"./ensure-resources\"\nimport stripPrefix from \"./strip-prefix\"\n\n// Generated during bootstrap\nimport matchPaths from \"$virtual/match-paths.json\"\n\nconst loader = new ProdLoader(asyncRequires, matchPaths)\nsetLoader(loader)\nloader.setApiRunner(apiRunner)\n\nwindow.asyncRequires = asyncRequires\nwindow.___emitter = emitter\nwindow.___loader = publicLoader\n\nnavigationInit()\n\napiRunnerAsync(`onClientEntry`).then(() => {\n // Let plugins register a service worker. The plugin just needs\n // to return true.\n if (apiRunner(`registerServiceWorker`).length > 0) {\n require(`./register-service-worker`)\n }\n\n // In gatsby v2 if Router is used in page using matchPaths\n // paths need to contain full path.\n // For example:\n // - page have `/app/*` matchPath\n // - inside template user needs to use `/app/xyz` as path\n // Resetting `basepath`/`baseuri` keeps current behaviour\n // to not introduce breaking change.\n // Remove this in v3\n const RouteHandler = props => (\n \n \n \n )\n\n const DataContext = React.createContext({})\n\n class GatsbyRoot extends React.Component {\n render() {\n const { children } = this.props\n return (\n \n {({ location }) => (\n \n {({ pageResources, location }) => {\n const staticQueryResults = getStaticQueryResults()\n return (\n \n \n {children}\n \n \n )\n }}\n \n )}\n \n )\n }\n }\n\n class LocationHandler extends React.Component {\n render() {\n return (\n \n {({ pageResources, location }) => (\n \n \n \n \n
    \n \n \n )}\n \n )\n }\n }\n\n const { pagePath, location: browserLoc } = window\n\n // Explicitly call navigate if the canonical path (window.pagePath)\n // is different to the browser path (window.location.pathname). But\n // only if NONE of the following conditions hold:\n //\n // - The url matches a client side route (page.matchPath)\n // - it's a 404 page\n // - it's the offline plugin shell (/offline-plugin-app-shell-fallback/)\n if (\n pagePath &&\n __BASE_PATH__ + pagePath !== browserLoc.pathname &&\n !(\n loader.findMatchPath(stripPrefix(browserLoc.pathname, __BASE_PATH__)) ||\n pagePath === `/404.html` ||\n pagePath.match(/^\\/404\\/?$/) ||\n pagePath.match(/^\\/offline-plugin-app-shell-fallback\\/?$/)\n )\n ) {\n navigate(__BASE_PATH__ + pagePath + browserLoc.search + browserLoc.hash, {\n replace: true,\n })\n }\n\n publicLoader.loadPage(browserLoc.pathname).then(page => {\n if (!page || page.status === PageResourceStatus.Error) {\n throw new Error(\n `page resources for ${browserLoc.pathname} not found. Not rendering React`\n )\n }\n\n window.___webpackCompilationHash = page.page.webpackCompilationHash\n\n const SiteRoot = apiRunner(\n `wrapRootElement`,\n { element: },\n ,\n ({ result }) => {\n return { element: result }\n }\n ).pop()\n\n const App = () => {SiteRoot}\n\n const renderer = apiRunner(\n `replaceHydrateFunction`,\n undefined,\n ReactDOM.hydrate\n )[0]\n\n domReady(() => {\n renderer(\n ,\n typeof window !== `undefined`\n ? document.getElementById(`___gatsby`)\n : void 0,\n () => {\n apiRunner(`onInitialClientRender`)\n }\n )\n })\n })\n})\n","const set = require('regenerate')();\nset.addRange(0x10880, 0x1089E).addRange(0x108A7, 0x108AF);\nmodule.exports = set;","const set = require('regenerate')(0x1B000);\nset.addRange(0x30A1, 0x30FA).addRange(0x30FD, 0x30FF).addRange(0x31F0, 0x31FF).addRange(0x32D0, 0x32FE).addRange(0x3300, 0x3357).addRange(0xFF66, 0xFF6F).addRange(0xFF71, 0xFF9D).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B120, 0x1B122).addRange(0x1B164, 0x1B167);\nmodule.exports = set;","const set = require('regenerate')(0x5BF, 0x5C7, 0x670, 0x711, 0x7FD, 0x93A, 0x93C, 0x94D, 0x981, 0x9BC, 0x9BE, 0x9CD, 0x9D7, 0x9FE, 0xA3C, 0xA51, 0xA75, 0xABC, 0xACD, 0xB01, 0xB3C, 0xB4D, 0xB82, 0xBBE, 0xBC0, 0xBCD, 0xBD7, 0xC00, 0xC04, 0xC3C, 0xC81, 0xCBC, 0xCBF, 0xCC2, 0xCC6, 0xD3E, 0xD4D, 0xD57, 0xD81, 0xDCA, 0xDCF, 0xDD6, 0xDDF, 0xE31, 0xEB1, 0xF35, 0xF37, 0xF39, 0xFC6, 0x1082, 0x108D, 0x109D, 0x17C6, 0x17DD, 0x180F, 0x18A9, 0x1932, 0x1A1B, 0x1A56, 0x1A60, 0x1A62, 0x1A7F, 0x1B3C, 0x1B42, 0x1BE6, 0x1BED, 0x1CED, 0x1CF4, 0x200C, 0x2D7F, 0xA802, 0xA806, 0xA80B, 0xA82C, 0xA8FF, 0xA9B3, 0xA9E5, 0xAA43, 0xAA4C, 0xAA7C, 0xAAB0, 0xAAC1, 0xAAF6, 0xABE5, 0xABE8, 0xABED, 0xFB1E, 0x101FD, 0x102E0, 0x10A3F, 0x11001, 0x11070, 0x110C2, 0x11173, 0x111CF, 0x11234, 0x1123E, 0x112DF, 0x1133E, 0x11340, 0x11357, 0x11446, 0x1145E, 0x114B0, 0x114BA, 0x114BD, 0x115AF, 0x1163D, 0x116AB, 0x116AD, 0x116B7, 0x11930, 0x1193E, 0x11943, 0x119E0, 0x11A47, 0x11C3F, 0x11D3A, 0x11D47, 0x11D95, 0x11D97, 0x16F4F, 0x16FE4, 0x1D165, 0x1DA75, 0x1DA84, 0x1E2AE);\nset.addRange(0x300, 0x36F).addRange(0x483, 0x489).addRange(0x591, 0x5BD).addRange(0x5C1, 0x5C2).addRange(0x5C4, 0x5C5).addRange(0x610, 0x61A).addRange(0x64B, 0x65F).addRange(0x6D6, 0x6DC).addRange(0x6DF, 0x6E4).addRange(0x6E7, 0x6E8).addRange(0x6EA, 0x6ED).addRange(0x730, 0x74A).addRange(0x7A6, 0x7B0).addRange(0x7EB, 0x7F3).addRange(0x816, 0x819).addRange(0x81B, 0x823).addRange(0x825, 0x827).addRange(0x829, 0x82D).addRange(0x859, 0x85B).addRange(0x898, 0x89F).addRange(0x8CA, 0x8E1).addRange(0x8E3, 0x902).addRange(0x941, 0x948).addRange(0x951, 0x957).addRange(0x962, 0x963).addRange(0x9C1, 0x9C4).addRange(0x9E2, 0x9E3).addRange(0xA01, 0xA02).addRange(0xA41, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA70, 0xA71).addRange(0xA81, 0xA82).addRange(0xAC1, 0xAC5).addRange(0xAC7, 0xAC8).addRange(0xAE2, 0xAE3).addRange(0xAFA, 0xAFF).addRange(0xB3E, 0xB3F).addRange(0xB41, 0xB44).addRange(0xB55, 0xB57).addRange(0xB62, 0xB63).addRange(0xC3E, 0xC40).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC62, 0xC63).addRange(0xCCC, 0xCCD).addRange(0xCD5, 0xCD6).addRange(0xCE2, 0xCE3).addRange(0xD00, 0xD01).addRange(0xD3B, 0xD3C);\nset.addRange(0xD41, 0xD44).addRange(0xD62, 0xD63).addRange(0xDD2, 0xDD4).addRange(0xE34, 0xE3A).addRange(0xE47, 0xE4E).addRange(0xEB4, 0xEBC).addRange(0xEC8, 0xECD).addRange(0xF18, 0xF19).addRange(0xF71, 0xF7E).addRange(0xF80, 0xF84).addRange(0xF86, 0xF87).addRange(0xF8D, 0xF97).addRange(0xF99, 0xFBC).addRange(0x102D, 0x1030).addRange(0x1032, 0x1037).addRange(0x1039, 0x103A).addRange(0x103D, 0x103E).addRange(0x1058, 0x1059).addRange(0x105E, 0x1060).addRange(0x1071, 0x1074).addRange(0x1085, 0x1086).addRange(0x135D, 0x135F).addRange(0x1712, 0x1714).addRange(0x1732, 0x1733).addRange(0x1752, 0x1753).addRange(0x1772, 0x1773).addRange(0x17B4, 0x17B5).addRange(0x17B7, 0x17BD).addRange(0x17C9, 0x17D3).addRange(0x180B, 0x180D).addRange(0x1885, 0x1886).addRange(0x1920, 0x1922).addRange(0x1927, 0x1928).addRange(0x1939, 0x193B).addRange(0x1A17, 0x1A18).addRange(0x1A58, 0x1A5E).addRange(0x1A65, 0x1A6C).addRange(0x1A73, 0x1A7C).addRange(0x1AB0, 0x1ACE).addRange(0x1B00, 0x1B03).addRange(0x1B34, 0x1B3A).addRange(0x1B6B, 0x1B73).addRange(0x1B80, 0x1B81).addRange(0x1BA2, 0x1BA5).addRange(0x1BA8, 0x1BA9).addRange(0x1BAB, 0x1BAD).addRange(0x1BE8, 0x1BE9).addRange(0x1BEF, 0x1BF1).addRange(0x1C2C, 0x1C33).addRange(0x1C36, 0x1C37).addRange(0x1CD0, 0x1CD2);\nset.addRange(0x1CD4, 0x1CE0).addRange(0x1CE2, 0x1CE8).addRange(0x1CF8, 0x1CF9).addRange(0x1DC0, 0x1DFF).addRange(0x20D0, 0x20F0).addRange(0x2CEF, 0x2CF1).addRange(0x2DE0, 0x2DFF).addRange(0x302A, 0x302F).addRange(0x3099, 0x309A).addRange(0xA66F, 0xA672).addRange(0xA674, 0xA67D).addRange(0xA69E, 0xA69F).addRange(0xA6F0, 0xA6F1).addRange(0xA825, 0xA826).addRange(0xA8C4, 0xA8C5).addRange(0xA8E0, 0xA8F1).addRange(0xA926, 0xA92D).addRange(0xA947, 0xA951).addRange(0xA980, 0xA982).addRange(0xA9B6, 0xA9B9).addRange(0xA9BC, 0xA9BD).addRange(0xAA29, 0xAA2E).addRange(0xAA31, 0xAA32).addRange(0xAA35, 0xAA36).addRange(0xAAB2, 0xAAB4).addRange(0xAAB7, 0xAAB8).addRange(0xAABE, 0xAABF).addRange(0xAAEC, 0xAAED).addRange(0xFE00, 0xFE0F).addRange(0xFE20, 0xFE2F).addRange(0xFF9E, 0xFF9F).addRange(0x10376, 0x1037A).addRange(0x10A01, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A0F).addRange(0x10A38, 0x10A3A).addRange(0x10AE5, 0x10AE6).addRange(0x10D24, 0x10D27).addRange(0x10EAB, 0x10EAC).addRange(0x10F46, 0x10F50).addRange(0x10F82, 0x10F85).addRange(0x11038, 0x11046).addRange(0x11073, 0x11074).addRange(0x1107F, 0x11081).addRange(0x110B3, 0x110B6).addRange(0x110B9, 0x110BA).addRange(0x11100, 0x11102).addRange(0x11127, 0x1112B).addRange(0x1112D, 0x11134).addRange(0x11180, 0x11181).addRange(0x111B6, 0x111BE);\nset.addRange(0x111C9, 0x111CC).addRange(0x1122F, 0x11231).addRange(0x11236, 0x11237).addRange(0x112E3, 0x112EA).addRange(0x11300, 0x11301).addRange(0x1133B, 0x1133C).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x11438, 0x1143F).addRange(0x11442, 0x11444).addRange(0x114B3, 0x114B8).addRange(0x114BF, 0x114C0).addRange(0x114C2, 0x114C3).addRange(0x115B2, 0x115B5).addRange(0x115BC, 0x115BD).addRange(0x115BF, 0x115C0).addRange(0x115DC, 0x115DD).addRange(0x11633, 0x1163A).addRange(0x1163F, 0x11640).addRange(0x116B0, 0x116B5).addRange(0x1171D, 0x1171F).addRange(0x11722, 0x11725).addRange(0x11727, 0x1172B).addRange(0x1182F, 0x11837).addRange(0x11839, 0x1183A).addRange(0x1193B, 0x1193C).addRange(0x119D4, 0x119D7).addRange(0x119DA, 0x119DB).addRange(0x11A01, 0x11A0A).addRange(0x11A33, 0x11A38).addRange(0x11A3B, 0x11A3E).addRange(0x11A51, 0x11A56).addRange(0x11A59, 0x11A5B).addRange(0x11A8A, 0x11A96).addRange(0x11A98, 0x11A99).addRange(0x11C30, 0x11C36).addRange(0x11C38, 0x11C3D).addRange(0x11C92, 0x11CA7).addRange(0x11CAA, 0x11CB0).addRange(0x11CB2, 0x11CB3).addRange(0x11CB5, 0x11CB6).addRange(0x11D31, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D45).addRange(0x11D90, 0x11D91).addRange(0x11EF3, 0x11EF4).addRange(0x16AF0, 0x16AF4).addRange(0x16B30, 0x16B36).addRange(0x16F8F, 0x16F92).addRange(0x1BC9D, 0x1BC9E).addRange(0x1CF00, 0x1CF2D);\nset.addRange(0x1CF30, 0x1CF46).addRange(0x1D167, 0x1D169).addRange(0x1D16E, 0x1D172).addRange(0x1D17B, 0x1D182).addRange(0x1D185, 0x1D18B).addRange(0x1D1AA, 0x1D1AD).addRange(0x1D242, 0x1D244).addRange(0x1DA00, 0x1DA36).addRange(0x1DA3B, 0x1DA6C).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A).addRange(0x1E130, 0x1E136).addRange(0x1E2EC, 0x1E2EF).addRange(0x1E8D0, 0x1E8D6).addRange(0x1E944, 0x1E94A).addRange(0xE0020, 0xE007F).addRange(0xE0100, 0xE01EF);\nmodule.exports = set;","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","const set = require('regenerate')();\nset.addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x102A0, 0x102D0);\nmodule.exports = set;","/**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\nfunction getHolder(func) {\n var object = func;\n return object.placeholder;\n}\n\nmodule.exports = getHolder;\n","const set = require('regenerate')();\nset.addRange(0x16A70, 0x16ABE).addRange(0x16AC0, 0x16AC9);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x10300, 0x10323).addRange(0x1032D, 0x1032F);\nmodule.exports = set;","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inheritsLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","const set = require('regenerate')(0x16FE4);\nset.addRange(0x3006, 0x3007).addRange(0x3021, 0x3029).addRange(0x3038, 0x303A).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0x9FFF).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1B170, 0x1B2FB).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B738).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A);\nmodule.exports = set;","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.30.2',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.30.2/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","const set = require('regenerate')(0x3030, 0x30FB, 0x32FF);\nset.addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5).addRange(0x3001, 0x3003).addRange(0x3005, 0x3011).addRange(0x3013, 0x301F).addRange(0x3021, 0x302D).addRange(0x3037, 0x303F).addRange(0x3190, 0x319F).addRange(0x31C0, 0x31E3).addRange(0x3220, 0x3247).addRange(0x3280, 0x32B0).addRange(0x32C0, 0x32CB).addRange(0x3358, 0x3370).addRange(0x337B, 0x337F).addRange(0x33E0, 0x33FE).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0x9FFF).addRange(0xA700, 0xA707).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFE45, 0xFE46).addRange(0xFF61, 0xFF65).addRange(0x16FE2, 0x16FE3).addRange(0x16FF0, 0x16FF1).addRange(0x1D360, 0x1D371).addRange(0x1F250, 0x1F251).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B738).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A);\nmodule.exports = set;","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","const set = require('regenerate')();\nset.addRange(0x10980, 0x1099F);\nmodule.exports = set;","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","const set = require('regenerate')(0x202F);\nset.addRange(0x1800, 0x1819).addRange(0x1820, 0x1878).addRange(0x1880, 0x18AA).addRange(0x11660, 0x1166C);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA);\nmodule.exports = set;","const set = require('regenerate')(0x1056F);\nset.addRange(0x10530, 0x10563);\nmodule.exports = set;","var trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\n\nconst copyTextToClipboard = function (input) {\n let {\n target = document.body\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const element = document.createElement('textarea');\n const previouslyFocusedElement = document.activeElement;\n element.value = input;\n\n // Prevent keyboard from showing on mobile\n element.setAttribute('readonly', '');\n element.style.contain = 'strict';\n element.style.position = 'absolute';\n element.style.left = '-9999px';\n element.style.fontSize = '12pt'; // Prevent zooming on iOS\n\n const selection = document.getSelection();\n let originalRange = false;\n if (selection.rangeCount > 0) {\n originalRange = selection.getRangeAt(0);\n }\n target.append(element);\n element.select();\n\n // Explicit selection workaround for iOS\n element.selectionStart = 0;\n element.selectionEnd = input.length;\n let isSuccess = false;\n try {\n isSuccess = document.execCommand('copy');\n } catch (_) {}\n element.remove();\n if (originalRange) {\n selection.removeAllRanges();\n selection.addRange(originalRange);\n }\n\n // Get the focus back on the previously focused element, if any\n if (previouslyFocusedElement) {\n previouslyFocusedElement.focus();\n }\n return isSuccess;\n};\nmodule.exports = copyTextToClipboard;\n// TODO: Remove this for the next major release\nmodule.exports.default = copyTextToClipboard;","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport Link, {\n withPrefix,\n withAssetPrefix,\n navigate,\n push,\n replace,\n navigateTo,\n parsePath,\n} from \"gatsby-link\"\nimport { useScrollRestoration } from \"gatsby-react-router-scroll\"\nimport PageRenderer from \"./public-page-renderer\"\nimport loader from \"./loader\"\n\nconst prefetchPathname = loader.enqueue\n\nconst StaticQueryContext = React.createContext({})\n\nfunction StaticQueryDataRenderer({ staticQueryData, data, query, render }) {\n const finalData = data\n ? data.data\n : staticQueryData[query] && staticQueryData[query].data\n\n return (\n \n {finalData && render(finalData)}\n {!finalData &&
    Loading (StaticQuery)
    }\n
    \n )\n}\n\nconst StaticQuery = props => {\n const { data, query, render, children } = props\n\n return (\n \n {staticQueryData => (\n \n )}\n \n )\n}\n\nconst useStaticQuery = query => {\n if (\n typeof React.useContext !== `function` &&\n process.env.NODE_ENV === `development`\n ) {\n throw new Error(\n `You're likely using a version of React that doesn't support Hooks\\n` +\n `Please update React and ReactDOM to 16.8.0 or later to use the useStaticQuery hook.`\n )\n }\n const context = React.useContext(StaticQueryContext)\n\n // query is a stringified number like `3303882` when wrapped with graphql, If a user forgets\n // to wrap the query in a grqphql, then casting it to a Number results in `NaN` allowing us to\n // catch the misuse of the API and give proper direction\n if (isNaN(Number(query))) {\n throw new Error(`useStaticQuery was called with a string but expects to be called using \\`graphql\\`. Try this:\n\nimport { useStaticQuery, graphql } from 'gatsby';\n\nuseStaticQuery(graphql\\`${query}\\`);\n`)\n }\n\n if (context[query]?.data) {\n return context[query].data\n } else {\n throw new Error(\n `The result of this StaticQuery could not be fetched.\\n\\n` +\n `This is likely a bug in Gatsby and if refreshing the page does not fix it, ` +\n `please open an issue in https://github.com/gatsbyjs/gatsby/issues`\n )\n }\n}\n\nStaticQuery.propTypes = {\n data: PropTypes.object,\n query: PropTypes.string.isRequired,\n render: PropTypes.func,\n children: PropTypes.func,\n}\n\nfunction graphql() {\n throw new Error(\n `It appears like Gatsby is misconfigured. Gatsby related \\`graphql\\` calls ` +\n `are supposed to only be evaluated at compile time, and then compiled away. ` +\n `Unfortunately, something went wrong and the query was left in the compiled code.\\n\\n` +\n `Unless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.`\n )\n}\n\nexport {\n Link,\n withAssetPrefix,\n withPrefix,\n graphql,\n parsePath,\n navigate,\n push, // TODO replace for v3\n replace, // TODO remove replace for v3\n navigateTo, // TODO: remove navigateTo for v3\n useScrollRestoration,\n StaticQueryContext,\n StaticQuery,\n PageRenderer,\n useStaticQuery,\n prefetchPathname,\n}\n","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a function');\n};\n","const set = require('regenerate')(0x11288);\nset.addRange(0xA66, 0xA6F).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A9);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x10450, 0x1047F);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x1E900, 0x1E94B).addRange(0x1E950, 0x1E959).addRange(0x1E95E, 0x1E95F);\nmodule.exports = set;","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","const set = require('regenerate')();\nset.addRange(0x964, 0x965).addRange(0x9E6, 0x9EF).addRange(0xA800, 0xA82C);\nmodule.exports = set;","const set = require('regenerate')(0x16FE0);\nset.addRange(0x17000, 0x187F7).addRange(0x18800, 0x18AFF).addRange(0x18D00, 0x18D08);\nmodule.exports = set;","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","import React, { useState } from \"react\"\n\nimport Osx from \"./tk/osx.mdx\"\nimport Arch from \"./tk/arch.mdx\"\nimport Go from \"./tk/go.mdx\"\nimport Binary from \"./tk/binary.mdx\"\n\nimport JbOsx from \"./jb/osx.mdx\"\nimport JbArch from \"./jb/arch.mdx\"\nimport JbGo from \"./jb/go.mdx\"\nimport JbBinary from \"./jb/binary.mdx\"\n\nexport const Tanka = {\n macOS: ,\n ArchLinux: ,\n Binary: ,\n Go: ,\n}\n\nexport const Jb = {\n macOS: ,\n ArchLinux: ,\n Binary: ,\n Go: ,\n}\n\nexport const PlatformInstall = ({ elems, def }) => {\n const [current, setCurrent] = useState(def)\n\n return (\n
    \n \n {Object.keys(elems).map(e => (\n {\n setCurrent(e)\n }}\n >\n {e}\n \n ))}\n
    \n \n {elems[current]}\n \n \n )\n}\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","const set = require('regenerate')();\nset.addRange(0x10A80, 0x10A9F);\nmodule.exports = set;","import './src/index.css'\n","module.exports = new Set([\n// Non-binary properties:\n'General_Category', 'Script', 'Script_Extensions',\n// Binary properties:\n'Alphabetic', 'Any', 'ASCII', 'ASCII_Hex_Digit', 'Assigned', 'Bidi_Control', 'Bidi_Mirrored', 'Case_Ignorable', 'Cased', 'Changes_When_Casefolded', 'Changes_When_Casemapped', 'Changes_When_Lowercased', 'Changes_When_NFKC_Casefolded', 'Changes_When_Titlecased', 'Changes_When_Uppercased', 'Dash', 'Default_Ignorable_Code_Point', 'Deprecated', 'Diacritic', 'Emoji', 'Emoji_Component', 'Emoji_Modifier', 'Emoji_Modifier_Base', 'Emoji_Presentation', 'Extended_Pictographic', 'Extender', 'Grapheme_Base', 'Grapheme_Extend', 'Hex_Digit', 'ID_Continue', 'ID_Start', 'Ideographic', 'IDS_Binary_Operator', 'IDS_Trinary_Operator', 'Join_Control', 'Logical_Order_Exception', 'Lowercase', 'Math', 'Noncharacter_Code_Point', 'Pattern_Syntax', 'Pattern_White_Space', 'Quotation_Mark', 'Radical', 'Regional_Indicator', 'Sentence_Terminal', 'Soft_Dotted', 'Terminal_Punctuation', 'Unified_Ideograph', 'Uppercase', 'Variation_Selector', 'White_Space', 'XID_Continue', 'XID_Start']);","// Generated by CoffeeScript 1.12.4\n(function () {\n var isNumber, ratios;\n isNumber = require('lodash.isnumber');\n ratios = {\n \"minor second\": 16 / 15,\n \"major second\": 9 / 8,\n \"minor third\": 6 / 5,\n \"major third\": 4 / 3,\n \"augmented fourth\": Math.sqrt(2),\n \"perfect fifth\": 3 / 2,\n \"minor sixth\": 8 / 5,\n \"golden\": 1.61803398875,\n \"phi\": 1.61803398875,\n \"major sixth\": 5 / 3,\n \"minor seventh\": 16 / 9,\n \"major seventh\": 15 / 8,\n \"octave\": 2,\n \"major tenth\": 5 / 2,\n \"major eleventh\": 8 / 3,\n \"major twelfth\": 3,\n \"double octave\": 4\n };\n module.exports = function (value, ratio) {\n var r;\n if (value == null) {\n value = 0;\n }\n if (ratio == null) {\n ratio = \"golden\";\n }\n if (isNumber(ratio)) {\n r = ratio;\n } else if (ratios[ratio] != null) {\n r = ratios[ratio];\n } else {\n r = ratios['golden'];\n }\n return Math.pow(r, value);\n };\n}).call(this);","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

    {`For all other operating systems, we provide pre-compiled binaries for Tanka at\n`}{`GitHub Releases`}{`.`}

    \n

    {`Just grab the latest version from there, download it and put somewhere in your\n`}{`$PATH`}{` (e.g. to `}{`/usr/local/bin/tk`}{`)`}

    \n

    {`Linux, macOS`}

    \n

    {`For Linux and macOS, download the binary for your architecture, put it somewhere on your `}{`$PATH`}{`, and make it an executable:`}

    \n
    {`# Linux amd64:`}{`\n`}{`sudo curl -Lo /usr/local/bin/tk https://github.com/grafana/tanka/releases/latest/download/tk-linux-amd64`}{`\n`}{`sudo chmod a+x /usr/local/bin/tk`}{`\n`}{`\n`}{`# Linux arm / arm64 (e.g. RaspberryPi):`}{`\n`}{`sudo curl -Lo /usr/local/bin/tk https://github.com/grafana/tanka/releases/latest/download/tk-linux-arm`}{`\n`}{`sudo curl -Lo /usr/local/bin/tk https://github.com/grafana/tanka/releases/latest/download/tk-linux-arm64`}{`\n`}{`sudo chmod a+x /usr/local/bin/tk`}{`\n`}{`\n`}{`# macOS:`}{`\n`}{`sudo curl -Lo /usr/local/bin/tk https://github.com/grafana/tanka/releases/latest/download/tk-darwin-amd64`}{`\n`}{`sudo chmod a+x /usr/local/bin/tk`}
    \n\n \n
    ;\n}\n;\nMDXContent.isMDXComponent = true;\n ","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\nexport default freeGlobal;","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","const set = require('regenerate')();\nset.addRange(0x11A00, 0x11A47);\nmodule.exports = set;","var parent = require('../../stable/object/assign');\n\nmodule.exports = parent;\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","const set = require('regenerate')(0x3C, 0x3E, 0x5B, 0x5D, 0x7B, 0x7D, 0xAB, 0xBB, 0x2140, 0x2211, 0x2224, 0x2226, 0x2239, 0x2262, 0x2298, 0x27C0, 0x29B8, 0x29C9, 0x29E1, 0x2A24, 0x2A26, 0x2A29, 0x2ADC, 0x2ADE, 0x2AF3, 0x2AFD, 0x2BFE, 0xFF1C, 0xFF1E, 0xFF3B, 0xFF3D, 0xFF5B, 0xFF5D, 0x1D6DB, 0x1D715, 0x1D74F, 0x1D789, 0x1D7C3);\nset.addRange(0x28, 0x29).addRange(0xF3A, 0xF3D).addRange(0x169B, 0x169C).addRange(0x2039, 0x203A).addRange(0x2045, 0x2046).addRange(0x207D, 0x207E).addRange(0x208D, 0x208E).addRange(0x2201, 0x2204).addRange(0x2208, 0x220D).addRange(0x2215, 0x2216).addRange(0x221A, 0x221D).addRange(0x221F, 0x2222).addRange(0x222B, 0x2233).addRange(0x223B, 0x224C).addRange(0x2252, 0x2255).addRange(0x225F, 0x2260).addRange(0x2264, 0x226B).addRange(0x226E, 0x228C).addRange(0x228F, 0x2292).addRange(0x22A2, 0x22A3).addRange(0x22A6, 0x22B8).addRange(0x22BE, 0x22BF).addRange(0x22C9, 0x22CD).addRange(0x22D0, 0x22D1).addRange(0x22D6, 0x22ED).addRange(0x22F0, 0x22FF).addRange(0x2308, 0x230B).addRange(0x2320, 0x2321).addRange(0x2329, 0x232A).addRange(0x2768, 0x2775).addRange(0x27C3, 0x27C6).addRange(0x27C8, 0x27C9).addRange(0x27CB, 0x27CD).addRange(0x27D3, 0x27D6).addRange(0x27DC, 0x27DE).addRange(0x27E2, 0x27EF).addRange(0x2983, 0x2998).addRange(0x299B, 0x29A0).addRange(0x29A2, 0x29AF).addRange(0x29C0, 0x29C5).addRange(0x29CE, 0x29D2).addRange(0x29D4, 0x29D5).addRange(0x29D8, 0x29DC).addRange(0x29E3, 0x29E5).addRange(0x29E8, 0x29E9).addRange(0x29F4, 0x29F9).addRange(0x29FC, 0x29FD).addRange(0x2A0A, 0x2A1C).addRange(0x2A1E, 0x2A21).addRange(0x2A2B, 0x2A2E).addRange(0x2A34, 0x2A35);\nset.addRange(0x2A3C, 0x2A3E).addRange(0x2A57, 0x2A58).addRange(0x2A64, 0x2A65).addRange(0x2A6A, 0x2A6D).addRange(0x2A6F, 0x2A70).addRange(0x2A73, 0x2A74).addRange(0x2A79, 0x2AA3).addRange(0x2AA6, 0x2AAD).addRange(0x2AAF, 0x2AD6).addRange(0x2AE2, 0x2AE6).addRange(0x2AEC, 0x2AEE).addRange(0x2AF7, 0x2AFB).addRange(0x2E02, 0x2E05).addRange(0x2E09, 0x2E0A).addRange(0x2E0C, 0x2E0D).addRange(0x2E1C, 0x2E1D).addRange(0x2E20, 0x2E29).addRange(0x2E55, 0x2E5C).addRange(0x3008, 0x3011).addRange(0x3014, 0x301B).addRange(0xFE59, 0xFE5E).addRange(0xFE64, 0xFE65).addRange(0xFF08, 0xFF09).addRange(0xFF5F, 0xFF60).addRange(0xFF62, 0xFF63);\nmodule.exports = set;","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","const set = require('regenerate')(0x27, 0x2E, 0x3A, 0x5E, 0x60, 0xA8, 0xAD, 0xAF, 0xB4, 0x37A, 0x387, 0x559, 0x55F, 0x5BF, 0x5C7, 0x5F4, 0x61C, 0x640, 0x670, 0x70F, 0x711, 0x7FA, 0x7FD, 0x888, 0x93A, 0x93C, 0x94D, 0x971, 0x981, 0x9BC, 0x9CD, 0x9FE, 0xA3C, 0xA51, 0xA75, 0xABC, 0xACD, 0xB01, 0xB3C, 0xB3F, 0xB4D, 0xB82, 0xBC0, 0xBCD, 0xC00, 0xC04, 0xC3C, 0xC81, 0xCBC, 0xCBF, 0xCC6, 0xD4D, 0xD81, 0xDCA, 0xDD6, 0xE31, 0xEB1, 0xEC6, 0xF35, 0xF37, 0xF39, 0xFC6, 0x1082, 0x108D, 0x109D, 0x10FC, 0x17C6, 0x17D7, 0x17DD, 0x1843, 0x18A9, 0x1932, 0x1A1B, 0x1A56, 0x1A60, 0x1A62, 0x1A7F, 0x1AA7, 0x1B34, 0x1B3C, 0x1B42, 0x1BE6, 0x1BED, 0x1CED, 0x1CF4, 0x1D78, 0x1FBD, 0x2024, 0x2027, 0x2071, 0x207F, 0x2D6F, 0x2D7F, 0x2E2F, 0x3005, 0x303B, 0xA015, 0xA60C, 0xA67F, 0xA770, 0xA802, 0xA806, 0xA80B, 0xA82C, 0xA8FF, 0xA9B3, 0xA9CF, 0xAA43, 0xAA4C, 0xAA70, 0xAA7C, 0xAAB0, 0xAAC1, 0xAADD, 0xAAF6, 0xABE5, 0xABE8, 0xABED, 0xFB1E, 0xFE13, 0xFE52, 0xFE55, 0xFEFF, 0xFF07, 0xFF0E, 0xFF1A, 0xFF3E, 0xFF40, 0xFF70, 0xFFE3, 0x101FD, 0x102E0, 0x10A3F, 0x11001, 0x11070, 0x110BD, 0x110C2, 0x110CD, 0x11173, 0x111CF, 0x11234, 0x1123E, 0x112DF, 0x11340, 0x11446, 0x1145E, 0x114BA, 0x1163D, 0x116AB, 0x116AD, 0x116B7, 0x1193E, 0x11943, 0x119E0, 0x11A47, 0x11C3F, 0x11D3A, 0x11D47, 0x11D95, 0x11D97, 0x16F4F, 0x1DA75, 0x1DA84, 0x1E2AE, 0xE0001);\nset.addRange(0xB7, 0xB8).addRange(0x2B0, 0x36F).addRange(0x374, 0x375).addRange(0x384, 0x385).addRange(0x483, 0x489).addRange(0x591, 0x5BD).addRange(0x5C1, 0x5C2).addRange(0x5C4, 0x5C5).addRange(0x600, 0x605).addRange(0x610, 0x61A).addRange(0x64B, 0x65F).addRange(0x6D6, 0x6DD).addRange(0x6DF, 0x6E8).addRange(0x6EA, 0x6ED).addRange(0x730, 0x74A).addRange(0x7A6, 0x7B0).addRange(0x7EB, 0x7F5).addRange(0x816, 0x82D).addRange(0x859, 0x85B).addRange(0x890, 0x891).addRange(0x898, 0x89F).addRange(0x8C9, 0x902).addRange(0x941, 0x948).addRange(0x951, 0x957).addRange(0x962, 0x963).addRange(0x9C1, 0x9C4).addRange(0x9E2, 0x9E3).addRange(0xA01, 0xA02).addRange(0xA41, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA70, 0xA71).addRange(0xA81, 0xA82).addRange(0xAC1, 0xAC5).addRange(0xAC7, 0xAC8).addRange(0xAE2, 0xAE3).addRange(0xAFA, 0xAFF).addRange(0xB41, 0xB44).addRange(0xB55, 0xB56).addRange(0xB62, 0xB63).addRange(0xC3E, 0xC40).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC62, 0xC63).addRange(0xCCC, 0xCCD).addRange(0xCE2, 0xCE3).addRange(0xD00, 0xD01).addRange(0xD3B, 0xD3C).addRange(0xD41, 0xD44).addRange(0xD62, 0xD63);\nset.addRange(0xDD2, 0xDD4).addRange(0xE34, 0xE3A).addRange(0xE46, 0xE4E).addRange(0xEB4, 0xEBC).addRange(0xEC8, 0xECD).addRange(0xF18, 0xF19).addRange(0xF71, 0xF7E).addRange(0xF80, 0xF84).addRange(0xF86, 0xF87).addRange(0xF8D, 0xF97).addRange(0xF99, 0xFBC).addRange(0x102D, 0x1030).addRange(0x1032, 0x1037).addRange(0x1039, 0x103A).addRange(0x103D, 0x103E).addRange(0x1058, 0x1059).addRange(0x105E, 0x1060).addRange(0x1071, 0x1074).addRange(0x1085, 0x1086).addRange(0x135D, 0x135F).addRange(0x1712, 0x1714).addRange(0x1732, 0x1733).addRange(0x1752, 0x1753).addRange(0x1772, 0x1773).addRange(0x17B4, 0x17B5).addRange(0x17B7, 0x17BD).addRange(0x17C9, 0x17D3).addRange(0x180B, 0x180F).addRange(0x1885, 0x1886).addRange(0x1920, 0x1922).addRange(0x1927, 0x1928).addRange(0x1939, 0x193B).addRange(0x1A17, 0x1A18).addRange(0x1A58, 0x1A5E).addRange(0x1A65, 0x1A6C).addRange(0x1A73, 0x1A7C).addRange(0x1AB0, 0x1ACE).addRange(0x1B00, 0x1B03).addRange(0x1B36, 0x1B3A).addRange(0x1B6B, 0x1B73).addRange(0x1B80, 0x1B81).addRange(0x1BA2, 0x1BA5).addRange(0x1BA8, 0x1BA9).addRange(0x1BAB, 0x1BAD).addRange(0x1BE8, 0x1BE9).addRange(0x1BEF, 0x1BF1).addRange(0x1C2C, 0x1C33).addRange(0x1C36, 0x1C37).addRange(0x1C78, 0x1C7D).addRange(0x1CD0, 0x1CD2).addRange(0x1CD4, 0x1CE0);\nset.addRange(0x1CE2, 0x1CE8).addRange(0x1CF8, 0x1CF9).addRange(0x1D2C, 0x1D6A).addRange(0x1D9B, 0x1DFF).addRange(0x1FBF, 0x1FC1).addRange(0x1FCD, 0x1FCF).addRange(0x1FDD, 0x1FDF).addRange(0x1FED, 0x1FEF).addRange(0x1FFD, 0x1FFE).addRange(0x200B, 0x200F).addRange(0x2018, 0x2019).addRange(0x202A, 0x202E).addRange(0x2060, 0x2064).addRange(0x2066, 0x206F).addRange(0x2090, 0x209C).addRange(0x20D0, 0x20F0).addRange(0x2C7C, 0x2C7D).addRange(0x2CEF, 0x2CF1).addRange(0x2DE0, 0x2DFF).addRange(0x302A, 0x302D).addRange(0x3031, 0x3035).addRange(0x3099, 0x309E).addRange(0x30FC, 0x30FE).addRange(0xA4F8, 0xA4FD).addRange(0xA66F, 0xA672).addRange(0xA674, 0xA67D).addRange(0xA69C, 0xA69F).addRange(0xA6F0, 0xA6F1).addRange(0xA700, 0xA721).addRange(0xA788, 0xA78A).addRange(0xA7F2, 0xA7F4).addRange(0xA7F8, 0xA7F9).addRange(0xA825, 0xA826).addRange(0xA8C4, 0xA8C5).addRange(0xA8E0, 0xA8F1).addRange(0xA926, 0xA92D).addRange(0xA947, 0xA951).addRange(0xA980, 0xA982).addRange(0xA9B6, 0xA9B9).addRange(0xA9BC, 0xA9BD).addRange(0xA9E5, 0xA9E6).addRange(0xAA29, 0xAA2E).addRange(0xAA31, 0xAA32).addRange(0xAA35, 0xAA36).addRange(0xAAB2, 0xAAB4).addRange(0xAAB7, 0xAAB8).addRange(0xAABE, 0xAABF).addRange(0xAAEC, 0xAAED).addRange(0xAAF3, 0xAAF4).addRange(0xAB5B, 0xAB5F).addRange(0xAB69, 0xAB6B);\nset.addRange(0xFBB2, 0xFBC2).addRange(0xFE00, 0xFE0F).addRange(0xFE20, 0xFE2F).addRange(0xFF9E, 0xFF9F).addRange(0xFFF9, 0xFFFB).addRange(0x10376, 0x1037A).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10A01, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A0F).addRange(0x10A38, 0x10A3A).addRange(0x10AE5, 0x10AE6).addRange(0x10D24, 0x10D27).addRange(0x10EAB, 0x10EAC).addRange(0x10F46, 0x10F50).addRange(0x10F82, 0x10F85).addRange(0x11038, 0x11046).addRange(0x11073, 0x11074).addRange(0x1107F, 0x11081).addRange(0x110B3, 0x110B6).addRange(0x110B9, 0x110BA).addRange(0x11100, 0x11102).addRange(0x11127, 0x1112B).addRange(0x1112D, 0x11134).addRange(0x11180, 0x11181).addRange(0x111B6, 0x111BE).addRange(0x111C9, 0x111CC).addRange(0x1122F, 0x11231).addRange(0x11236, 0x11237).addRange(0x112E3, 0x112EA).addRange(0x11300, 0x11301).addRange(0x1133B, 0x1133C).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x11438, 0x1143F).addRange(0x11442, 0x11444).addRange(0x114B3, 0x114B8).addRange(0x114BF, 0x114C0).addRange(0x114C2, 0x114C3).addRange(0x115B2, 0x115B5).addRange(0x115BC, 0x115BD).addRange(0x115BF, 0x115C0).addRange(0x115DC, 0x115DD).addRange(0x11633, 0x1163A).addRange(0x1163F, 0x11640).addRange(0x116B0, 0x116B5).addRange(0x1171D, 0x1171F).addRange(0x11722, 0x11725).addRange(0x11727, 0x1172B);\nset.addRange(0x1182F, 0x11837).addRange(0x11839, 0x1183A).addRange(0x1193B, 0x1193C).addRange(0x119D4, 0x119D7).addRange(0x119DA, 0x119DB).addRange(0x11A01, 0x11A0A).addRange(0x11A33, 0x11A38).addRange(0x11A3B, 0x11A3E).addRange(0x11A51, 0x11A56).addRange(0x11A59, 0x11A5B).addRange(0x11A8A, 0x11A96).addRange(0x11A98, 0x11A99).addRange(0x11C30, 0x11C36).addRange(0x11C38, 0x11C3D).addRange(0x11C92, 0x11CA7).addRange(0x11CAA, 0x11CB0).addRange(0x11CB2, 0x11CB3).addRange(0x11CB5, 0x11CB6).addRange(0x11D31, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D45).addRange(0x11D90, 0x11D91).addRange(0x11EF3, 0x11EF4).addRange(0x13430, 0x13438).addRange(0x16AF0, 0x16AF4).addRange(0x16B30, 0x16B36).addRange(0x16B40, 0x16B43).addRange(0x16F8F, 0x16F9F).addRange(0x16FE0, 0x16FE1).addRange(0x16FE3, 0x16FE4).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1BC9D, 0x1BC9E).addRange(0x1BCA0, 0x1BCA3).addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1D167, 0x1D169).addRange(0x1D173, 0x1D182).addRange(0x1D185, 0x1D18B).addRange(0x1D1AA, 0x1D1AD).addRange(0x1D242, 0x1D244).addRange(0x1DA00, 0x1DA36).addRange(0x1DA3B, 0x1DA6C).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A);\nset.addRange(0x1E130, 0x1E13D).addRange(0x1E2EC, 0x1E2EF).addRange(0x1E8D0, 0x1E8D6).addRange(0x1E944, 0x1E94B).addRange(0x1F3FB, 0x1F3FF).addRange(0xE0020, 0xE007F).addRange(0xE0100, 0xE01EF);\nmodule.exports = set;","const set = require('regenerate')(0x60, 0xA9, 0xAE, 0xB6, 0xBB, 0xBF, 0xD7, 0xF7, 0x3030);\nset.addRange(0x21, 0x2F).addRange(0x3A, 0x40).addRange(0x5B, 0x5E).addRange(0x7B, 0x7E).addRange(0xA1, 0xA7).addRange(0xAB, 0xAC).addRange(0xB0, 0xB1).addRange(0x2010, 0x2027).addRange(0x2030, 0x203E).addRange(0x2041, 0x2053).addRange(0x2055, 0x205E).addRange(0x2190, 0x245F).addRange(0x2500, 0x2775).addRange(0x2794, 0x2BFF).addRange(0x2E00, 0x2E7F).addRange(0x3001, 0x3003).addRange(0x3008, 0x3020).addRange(0xFD3E, 0xFD3F).addRange(0xFE45, 0xFE46);\nmodule.exports = set;","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es/no-symbol -- safe\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","\"use strict\";\n\nmodule.exports = Object.assign;","const set = require('regenerate')(0x60C, 0x61F, 0xFDF2, 0xFDFD);\nset.addRange(0x61B, 0x61C).addRange(0x660, 0x669).addRange(0x780, 0x7B1);\nmodule.exports = set;","var baseCreate = require('./_baseCreate'),\n baseLodash = require('./_baseLodash');\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\nfunction LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n}\n\n// Ensure `LazyWrapper` is an instance of `baseLodash`.\nLazyWrapper.prototype = baseCreate(baseLodash.prototype);\nLazyWrapper.prototype.constructor = LazyWrapper;\n\nmodule.exports = LazyWrapper;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","const set = require('regenerate')();\nset.addRange(0x10B00, 0x10B35).addRange(0x10B39, 0x10B3F);\nmodule.exports = set;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/* eslint-disable jsx-a11y/anchor-has-content */\nimport React, { useContext } from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"invariant\";\nimport createContext from \"create-react-context\";\nimport { polyfill } from \"react-lifecycles-compat\";\nimport { startsWith, pick, resolve, match, insertParams, validateRedirect, shallowCompare } from \"./lib/utils\";\nimport { globalHistory, navigate, createHistory, createMemorySource } from \"./lib/history\";\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar createNamedContext = function createNamedContext(name, defaultValue) {\n var Ctx = createContext(defaultValue);\n Ctx.displayName = name;\n return Ctx;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Location Context/Provider\nvar LocationContext = createNamedContext(\"Location\");\n\n// sets up a listener if there isn't one already so apps don't need to be\n// wrapped in some top level provider\nvar Location = function Location(_ref) {\n var children = _ref.children;\n return React.createElement(\n LocationContext.Consumer,\n null,\n function (context) {\n return context ? children(context) : React.createElement(\n LocationProvider,\n null,\n children\n );\n }\n );\n};\n\nvar LocationProvider = function (_React$Component) {\n _inherits(LocationProvider, _React$Component);\n\n function LocationProvider() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, LocationProvider);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n context: _this.getContext(),\n refs: { unlisten: null }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n LocationProvider.prototype.getContext = function getContext() {\n var _props$history = this.props.history,\n navigate = _props$history.navigate,\n location = _props$history.location;\n\n return { navigate: navigate, location: location };\n };\n\n LocationProvider.prototype.componentDidCatch = function componentDidCatch(error, info) {\n if (isRedirect(error)) {\n var _navigate = this.props.history.navigate;\n\n _navigate(error.uri, { replace: true });\n } else {\n throw error;\n }\n };\n\n LocationProvider.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevState.context.location !== this.state.context.location) {\n this.props.history._onTransitionComplete();\n }\n };\n\n LocationProvider.prototype.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n var refs = this.state.refs,\n history = this.props.history;\n\n history._onTransitionComplete();\n refs.unlisten = history.listen(function () {\n Promise.resolve().then(function () {\n // TODO: replace rAF with react deferred update API when it's ready https://github.com/facebook/react/issues/13306\n requestAnimationFrame(function () {\n if (!_this2.unmounted) {\n _this2.setState(function () {\n return { context: _this2.getContext() };\n });\n }\n });\n });\n });\n };\n\n LocationProvider.prototype.componentWillUnmount = function componentWillUnmount() {\n var refs = this.state.refs;\n\n this.unmounted = true;\n refs.unlisten();\n };\n\n LocationProvider.prototype.render = function render() {\n var context = this.state.context,\n children = this.props.children;\n\n return React.createElement(\n LocationContext.Provider,\n { value: context },\n typeof children === \"function\" ? children(context) : children || null\n );\n };\n\n return LocationProvider;\n}(React.Component);\n\n////////////////////////////////////////////////////////////////////////////////\n\n\nLocationProvider.defaultProps = {\n history: globalHistory\n};\nprocess.env.NODE_ENV !== \"production\" ? LocationProvider.propTypes = {\n history: PropTypes.object.isRequired\n} : void 0;\nvar ServerLocation = function ServerLocation(_ref2) {\n var url = _ref2.url,\n children = _ref2.children;\n\n var searchIndex = url.indexOf(\"?\");\n var searchExists = searchIndex > -1;\n var pathname = void 0;\n var search = \"\";\n var hash = \"\";\n\n if (searchExists) {\n pathname = url.substring(0, searchIndex);\n search = url.substring(searchIndex);\n } else {\n pathname = url;\n }\n\n return React.createElement(\n LocationContext.Provider,\n {\n value: {\n location: {\n pathname: pathname,\n search: search,\n hash: hash\n },\n navigate: function navigate() {\n throw new Error(\"You can't call navigate on the server.\");\n }\n }\n },\n children\n );\n};\n////////////////////////////////////////////////////////////////////////////////\n// Sets baseuri and basepath for nested routers and links\nvar BaseContext = createNamedContext(\"Base\", { baseuri: \"/\", basepath: \"/\" });\n\n////////////////////////////////////////////////////////////////////////////////\n// The main event, welcome to the show everybody.\nvar Router = function Router(props) {\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (baseContext) {\n return React.createElement(\n Location,\n null,\n function (locationContext) {\n return React.createElement(RouterImpl, _extends({}, baseContext, locationContext, props));\n }\n );\n }\n );\n};\n\nvar RouterImpl = function (_React$PureComponent) {\n _inherits(RouterImpl, _React$PureComponent);\n\n function RouterImpl() {\n _classCallCheck(this, RouterImpl);\n\n return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));\n }\n\n RouterImpl.prototype.render = function render() {\n var _props = this.props,\n location = _props.location,\n _navigate2 = _props.navigate,\n basepath = _props.basepath,\n primary = _props.primary,\n children = _props.children,\n baseuri = _props.baseuri,\n _props$component = _props.component,\n component = _props$component === undefined ? \"div\" : _props$component,\n domProps = _objectWithoutProperties(_props, [\"location\", \"navigate\", \"basepath\", \"primary\", \"children\", \"baseuri\", \"component\"]);\n\n var routes = React.Children.toArray(children).reduce(function (array, child) {\n var routes = createRoute(basepath)(child);\n return array.concat(routes);\n }, []);\n var pathname = location.pathname;\n\n\n var match = pick(routes, pathname);\n\n if (match) {\n var params = match.params,\n uri = match.uri,\n route = match.route,\n element = match.route.value;\n\n // remove the /* from the end for child routes relative paths\n\n basepath = route.default ? basepath : route.path.replace(/\\*$/, \"\");\n\n var props = _extends({}, params, {\n uri: uri,\n location: location,\n navigate: function navigate(to, options) {\n return _navigate2(resolve(to, uri), options);\n }\n });\n\n var clone = React.cloneElement(element, props, element.props.children ? React.createElement(\n Router,\n { location: location, primary: primary },\n element.props.children\n ) : undefined);\n\n // using 'div' for < 16.3 support\n var FocusWrapper = primary ? FocusHandler : component;\n // don't pass any props to 'div'\n var wrapperProps = primary ? _extends({ uri: uri, location: location, component: component }, domProps) : domProps;\n\n return React.createElement(\n BaseContext.Provider,\n { value: { baseuri: uri, basepath: basepath } },\n React.createElement(\n FocusWrapper,\n wrapperProps,\n clone\n )\n );\n } else {\n // Not sure if we want this, would require index routes at every level\n // warning(\n // false,\n // `\\n\\nNothing matched:\\n\\t${\n // location.pathname\n // }\\n\\nPaths checked: \\n\\t${routes\n // .map(route => route.path)\n // .join(\n // \"\\n\\t\"\n // )}\\n\\nTo get rid of this warning, add a default NotFound component as child of Router:\n // \\n\\tlet NotFound = () =>
    Not Found!
    \n // \\n\\t\\n\\t \\n\\t {/* ... */}\\n\\t`\n // );\n return null;\n }\n };\n\n return RouterImpl;\n}(React.PureComponent);\n\nRouterImpl.defaultProps = {\n primary: true\n};\n\n\nvar FocusContext = createNamedContext(\"Focus\");\n\nvar FocusHandler = function FocusHandler(_ref3) {\n var uri = _ref3.uri,\n location = _ref3.location,\n component = _ref3.component,\n domProps = _objectWithoutProperties(_ref3, [\"uri\", \"location\", \"component\"]);\n\n return React.createElement(\n FocusContext.Consumer,\n null,\n function (requestFocus) {\n return React.createElement(FocusHandlerImpl, _extends({}, domProps, {\n component: component,\n requestFocus: requestFocus,\n uri: uri,\n location: location\n }));\n }\n );\n};\n\n// don't focus on initial render\nvar initialRender = true;\nvar focusHandlerCount = 0;\n\nvar FocusHandlerImpl = function (_React$Component2) {\n _inherits(FocusHandlerImpl, _React$Component2);\n\n function FocusHandlerImpl() {\n var _temp2, _this4, _ret2;\n\n _classCallCheck(this, FocusHandlerImpl);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _ret2 = (_temp2 = (_this4 = _possibleConstructorReturn(this, _React$Component2.call.apply(_React$Component2, [this].concat(args))), _this4), _this4.state = {}, _this4.requestFocus = function (node) {\n if (!_this4.state.shouldFocus && node) {\n node.focus();\n }\n }, _temp2), _possibleConstructorReturn(_this4, _ret2);\n }\n\n FocusHandlerImpl.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n var initial = prevState.uri == null;\n if (initial) {\n return _extends({\n shouldFocus: true\n }, nextProps);\n } else {\n var myURIChanged = nextProps.uri !== prevState.uri;\n var navigatedUpToMe = prevState.location.pathname !== nextProps.location.pathname && nextProps.location.pathname === nextProps.uri;\n return _extends({\n shouldFocus: myURIChanged || navigatedUpToMe\n }, nextProps);\n }\n };\n\n FocusHandlerImpl.prototype.componentDidMount = function componentDidMount() {\n focusHandlerCount++;\n this.focus();\n };\n\n FocusHandlerImpl.prototype.componentWillUnmount = function componentWillUnmount() {\n focusHandlerCount--;\n if (focusHandlerCount === 0) {\n initialRender = true;\n }\n };\n\n FocusHandlerImpl.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevProps.location !== this.props.location && this.state.shouldFocus) {\n this.focus();\n }\n };\n\n FocusHandlerImpl.prototype.focus = function focus() {\n if (process.env.NODE_ENV === \"test\") {\n // getting cannot read property focus of null in the tests\n // and that bit of global `initialRender` state causes problems\n // should probably figure it out!\n return;\n }\n\n var requestFocus = this.props.requestFocus;\n\n\n if (requestFocus) {\n requestFocus(this.node);\n } else {\n if (initialRender) {\n initialRender = false;\n } else if (this.node) {\n // React polyfills [autofocus] and it fires earlier than cDM,\n // so we were stealing focus away, this line prevents that.\n if (!this.node.contains(document.activeElement)) {\n this.node.focus();\n }\n }\n }\n };\n\n FocusHandlerImpl.prototype.render = function render() {\n var _this5 = this;\n\n var _props2 = this.props,\n children = _props2.children,\n style = _props2.style,\n requestFocus = _props2.requestFocus,\n _props2$component = _props2.component,\n Comp = _props2$component === undefined ? \"div\" : _props2$component,\n uri = _props2.uri,\n location = _props2.location,\n domProps = _objectWithoutProperties(_props2, [\"children\", \"style\", \"requestFocus\", \"component\", \"uri\", \"location\"]);\n\n return React.createElement(\n Comp,\n _extends({\n style: _extends({ outline: \"none\" }, style),\n tabIndex: \"-1\",\n ref: function ref(n) {\n return _this5.node = n;\n }\n }, domProps),\n React.createElement(\n FocusContext.Provider,\n { value: this.requestFocus },\n this.props.children\n )\n );\n };\n\n return FocusHandlerImpl;\n}(React.Component);\n\npolyfill(FocusHandlerImpl);\n\nvar k = function k() {};\n\n////////////////////////////////////////////////////////////////////////////////\nvar forwardRef = React.forwardRef;\n\nif (typeof forwardRef === \"undefined\") {\n forwardRef = function forwardRef(C) {\n return C;\n };\n}\n\nvar Link = forwardRef(function (_ref4, ref) {\n var innerRef = _ref4.innerRef,\n props = _objectWithoutProperties(_ref4, [\"innerRef\"]);\n\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (_ref5) {\n var basepath = _ref5.basepath,\n baseuri = _ref5.baseuri;\n return React.createElement(\n Location,\n null,\n function (_ref6) {\n var location = _ref6.location,\n navigate = _ref6.navigate;\n\n var to = props.to,\n state = props.state,\n replace = props.replace,\n _props$getProps = props.getProps,\n getProps = _props$getProps === undefined ? k : _props$getProps,\n anchorProps = _objectWithoutProperties(props, [\"to\", \"state\", \"replace\", \"getProps\"]);\n\n var href = resolve(to, baseuri);\n var encodedHref = encodeURI(href);\n var isCurrent = location.pathname === encodedHref;\n var isPartiallyCurrent = startsWith(location.pathname, encodedHref);\n\n return React.createElement(\"a\", _extends({\n ref: ref || innerRef,\n \"aria-current\": isCurrent ? \"page\" : undefined\n }, anchorProps, getProps({ isCurrent: isCurrent, isPartiallyCurrent: isPartiallyCurrent, href: href, location: location }), {\n href: href,\n onClick: function onClick(event) {\n if (anchorProps.onClick) anchorProps.onClick(event);\n if (shouldNavigate(event)) {\n event.preventDefault();\n var shouldReplace = replace;\n if (typeof replace !== \"boolean\" && isCurrent) {\n var _location$state = _extends({}, location.state),\n key = _location$state.key,\n restState = _objectWithoutProperties(_location$state, [\"key\"]);\n\n shouldReplace = shallowCompare(_extends({}, state), restState);\n }\n navigate(href, {\n state: state,\n replace: shouldReplace\n });\n }\n }\n }));\n }\n );\n }\n );\n});\n\nLink.displayName = \"Link\";\n\nprocess.env.NODE_ENV !== \"production\" ? Link.propTypes = {\n to: PropTypes.string.isRequired\n} : void 0;\n\n////////////////////////////////////////////////////////////////////////////////\nfunction RedirectRequest(uri) {\n this.uri = uri;\n}\n\nvar isRedirect = function isRedirect(o) {\n return o instanceof RedirectRequest;\n};\n\nvar redirectTo = function redirectTo(to) {\n throw new RedirectRequest(to);\n};\n\nvar RedirectImpl = function (_React$Component3) {\n _inherits(RedirectImpl, _React$Component3);\n\n function RedirectImpl() {\n _classCallCheck(this, RedirectImpl);\n\n return _possibleConstructorReturn(this, _React$Component3.apply(this, arguments));\n }\n\n // Support React < 16 with this hook\n RedirectImpl.prototype.componentDidMount = function componentDidMount() {\n var _props3 = this.props,\n navigate = _props3.navigate,\n to = _props3.to,\n from = _props3.from,\n _props3$replace = _props3.replace,\n replace = _props3$replace === undefined ? true : _props3$replace,\n state = _props3.state,\n noThrow = _props3.noThrow,\n baseuri = _props3.baseuri,\n props = _objectWithoutProperties(_props3, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\", \"baseuri\"]);\n\n Promise.resolve().then(function () {\n var resolvedTo = resolve(to, baseuri);\n navigate(insertParams(resolvedTo, props), { replace: replace, state: state });\n });\n };\n\n RedirectImpl.prototype.render = function render() {\n var _props4 = this.props,\n navigate = _props4.navigate,\n to = _props4.to,\n from = _props4.from,\n replace = _props4.replace,\n state = _props4.state,\n noThrow = _props4.noThrow,\n baseuri = _props4.baseuri,\n props = _objectWithoutProperties(_props4, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\", \"baseuri\"]);\n\n var resolvedTo = resolve(to, baseuri);\n if (!noThrow) redirectTo(insertParams(resolvedTo, props));\n return null;\n };\n\n return RedirectImpl;\n}(React.Component);\n\nvar Redirect = function Redirect(props) {\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (_ref7) {\n var baseuri = _ref7.baseuri;\n return React.createElement(\n Location,\n null,\n function (locationContext) {\n return React.createElement(RedirectImpl, _extends({}, locationContext, { baseuri: baseuri }, props));\n }\n );\n }\n );\n};\n\nprocess.env.NODE_ENV !== \"production\" ? Redirect.propTypes = {\n from: PropTypes.string,\n to: PropTypes.string.isRequired\n} : void 0;\n\n////////////////////////////////////////////////////////////////////////////////\nvar Match = function Match(_ref8) {\n var path = _ref8.path,\n children = _ref8.children;\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (_ref9) {\n var baseuri = _ref9.baseuri;\n return React.createElement(\n Location,\n null,\n function (_ref10) {\n var navigate = _ref10.navigate,\n location = _ref10.location;\n\n var resolvedPath = resolve(path, baseuri);\n var result = match(resolvedPath, location.pathname);\n return children({\n navigate: navigate,\n location: location,\n match: result ? _extends({}, result.params, {\n uri: result.uri,\n path: path\n }) : null\n });\n }\n );\n }\n );\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Hooks\n\nvar useLocation = function useLocation() {\n var context = useContext(LocationContext);\n\n if (!context) {\n throw new Error(\"useLocation hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n return context.location;\n};\n\nvar useNavigate = function useNavigate() {\n var context = useContext(LocationContext);\n\n if (!context) {\n throw new Error(\"useNavigate hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n return context.navigate;\n};\n\nvar useParams = function useParams() {\n var context = useContext(BaseContext);\n\n if (!context) {\n throw new Error(\"useParams hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n var location = useLocation();\n\n var results = match(context.basepath, location.pathname);\n\n return results ? results.params : null;\n};\n\nvar useMatch = function useMatch(path) {\n if (!path) {\n throw new Error(\"useMatch(path: string) requires an argument of a string to match against\");\n }\n var context = useContext(BaseContext);\n\n if (!context) {\n throw new Error(\"useMatch hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n var location = useLocation();\n\n var resolvedPath = resolve(path, context.baseuri);\n var result = match(resolvedPath, location.pathname);\n return result ? _extends({}, result.params, {\n uri: result.uri,\n path: path\n }) : null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar stripSlashes = function stripSlashes(str) {\n return str.replace(/(^\\/+|\\/+$)/g, \"\");\n};\n\nvar createRoute = function createRoute(basepath) {\n return function (element) {\n if (!element) {\n return null;\n }\n\n if (element.type === React.Fragment && element.props.children) {\n return React.Children.map(element.props.children, createRoute(basepath));\n }\n !(element.props.path || element.props.default || element.type === Redirect) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \": Children of must have a `path` or `default` prop, or be a ``. None found on element type `\" + element.type + \"`\") : invariant(false) : void 0;\n\n !!(element.type === Redirect && (!element.props.from || !element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" requires both \\\"from\\\" and \\\"to\\\" props when inside a .\") : invariant(false) : void 0;\n\n !!(element.type === Redirect && !validateRedirect(element.props.from, element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" has mismatched dynamic segments, ensure both paths have the exact same dynamic segments.\") : invariant(false) : void 0;\n\n if (element.props.default) {\n return { value: element, default: true };\n }\n\n var elementPath = element.type === Redirect ? element.props.from : element.props.path;\n\n var path = elementPath === \"/\" ? basepath : stripSlashes(basepath) + \"/\" + stripSlashes(elementPath);\n\n return {\n value: element,\n default: element.props.default,\n path: element.props.children ? stripSlashes(path) + \"/*\" : path\n };\n };\n};\n\nvar shouldNavigate = function shouldNavigate(event) {\n return !event.defaultPrevented && event.button === 0 && !(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n};\n\n////////////////////////////////////////////////////////////////////////\nexport { Link, Location, LocationProvider, Match, Redirect, Router, ServerLocation, createHistory, createMemorySource, isRedirect, navigate, redirectTo, globalHistory, match as matchPath, useLocation, useNavigate, useParams, useMatch , BaseContext };","/** @jsx jsx */\nimport { jsx } from \"theme-ui\"\nimport React from \"react\" // eslint-disable-line no-unused-vars\nimport { useDocs } from \"docz\"\n\nconst spacing = \"7em\"\n\nconst Button = ({ href, names, next, alone }) => (\n \n {next ? \"Next\" : \"Previous\"}\n \n {names[href]}\n \n \n)\n\nexport default ({ prev, next }) => {\n const names = useDocs().reduce(\n (map, val) => ({ ...map, [val.route]: val.name }),\n {}\n )\n\n return (\n <>\n
    \n \n {prev && }\n {next && }\n \n \n )\n}\n","const set = require('regenerate')();\nset.addRange(0x12F90, 0x12FF2);\nmodule.exports = set;","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","const set = require('regenerate')(0x5F, 0xAA, 0xB5, 0xB7, 0xBA, 0x2EC, 0x2EE, 0x37F, 0x38C, 0x559, 0x5BF, 0x5C7, 0x6FF, 0x7FA, 0x7FD, 0x9B2, 0x9D7, 0x9FC, 0x9FE, 0xA3C, 0xA51, 0xA5E, 0xAD0, 0xB71, 0xB9C, 0xBD0, 0xBD7, 0xC5D, 0xDBD, 0xDCA, 0xDD6, 0xE84, 0xEA5, 0xEC6, 0xF00, 0xF35, 0xF37, 0xF39, 0xFC6, 0x10C7, 0x10CD, 0x1258, 0x12C0, 0x17D7, 0x1AA7, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2054, 0x2071, 0x207F, 0x20E1, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x214E, 0x2D27, 0x2D2D, 0x2D6F, 0xA7D3, 0xA82C, 0xA8FB, 0xFB3E, 0xFF3F, 0x101FD, 0x102E0, 0x10808, 0x1083C, 0x10A3F, 0x10F27, 0x110C2, 0x11176, 0x111DC, 0x1123E, 0x11288, 0x11350, 0x11357, 0x114C7, 0x11644, 0x11909, 0x11A47, 0x11A9D, 0x11D3A, 0x11FB0, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1DA75, 0x1DA84, 0x1E14E, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);\nset.addRange(0x30, 0x39).addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x2C1).addRange(0x2C6, 0x2D1).addRange(0x2E0, 0x2E4).addRange(0x300, 0x374).addRange(0x376, 0x377).addRange(0x37A, 0x37D).addRange(0x386, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3F5).addRange(0x3F7, 0x481).addRange(0x483, 0x487).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x560, 0x588).addRange(0x591, 0x5BD).addRange(0x5C1, 0x5C2).addRange(0x5C4, 0x5C5).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F2).addRange(0x610, 0x61A).addRange(0x620, 0x669).addRange(0x66E, 0x6D3).addRange(0x6D5, 0x6DC).addRange(0x6DF, 0x6E8).addRange(0x6EA, 0x6FC).addRange(0x710, 0x74A).addRange(0x74D, 0x7B1).addRange(0x7C0, 0x7F5).addRange(0x800, 0x82D).addRange(0x840, 0x85B).addRange(0x860, 0x86A).addRange(0x870, 0x887).addRange(0x889, 0x88E).addRange(0x898, 0x8E1).addRange(0x8E3, 0x963).addRange(0x966, 0x96F).addRange(0x971, 0x983).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9BC, 0x9C4).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CE).addRange(0x9DC, 0x9DD);\nset.addRange(0x9DF, 0x9E3).addRange(0x9E6, 0x9F1).addRange(0xA01, 0xA03).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33).addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA3E, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA59, 0xA5C).addRange(0xA66, 0xA75).addRange(0xA81, 0xA83).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xABC, 0xAC5).addRange(0xAC7, 0xAC9).addRange(0xACB, 0xACD).addRange(0xAE0, 0xAE3).addRange(0xAE6, 0xAEF).addRange(0xAF9, 0xAFF).addRange(0xB01, 0xB03).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB3C, 0xB44).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4D).addRange(0xB55, 0xB57).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB63).addRange(0xB66, 0xB6F).addRange(0xB82, 0xB83).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9);\nset.addRange(0xBBE, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCD).addRange(0xBE6, 0xBEF).addRange(0xC00, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC3C, 0xC44).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC63).addRange(0xC66, 0xC6F).addRange(0xC80, 0xC83).addRange(0xC85, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCBC, 0xCC4).addRange(0xCC6, 0xCC8).addRange(0xCCA, 0xCCD).addRange(0xCD5, 0xCD6).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE3).addRange(0xCE6, 0xCEF).addRange(0xCF1, 0xCF2).addRange(0xD00, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD44).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4E).addRange(0xD54, 0xD57).addRange(0xD5F, 0xD63).addRange(0xD66, 0xD6F).addRange(0xD7A, 0xD7F).addRange(0xD81, 0xD83).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6).addRange(0xDCF, 0xDD4).addRange(0xDD8, 0xDDF).addRange(0xDE6, 0xDEF).addRange(0xDF2, 0xDF3).addRange(0xE01, 0xE3A).addRange(0xE40, 0xE4E).addRange(0xE50, 0xE59).addRange(0xE81, 0xE82);\nset.addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEBD).addRange(0xEC0, 0xEC4).addRange(0xEC8, 0xECD).addRange(0xED0, 0xED9).addRange(0xEDC, 0xEDF).addRange(0xF18, 0xF19).addRange(0xF20, 0xF29).addRange(0xF3E, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF71, 0xF84).addRange(0xF86, 0xF97).addRange(0xF99, 0xFBC).addRange(0x1000, 0x1049).addRange(0x1050, 0x109D).addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FC, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x135D, 0x135F).addRange(0x1369, 0x1371).addRange(0x1380, 0x138F).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1401, 0x166C).addRange(0x166F, 0x167F).addRange(0x1681, 0x169A).addRange(0x16A0, 0x16EA).addRange(0x16EE, 0x16F8).addRange(0x1700, 0x1715).addRange(0x171F, 0x1734).addRange(0x1740, 0x1753).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1772, 0x1773).addRange(0x1780, 0x17D3).addRange(0x17DC, 0x17DD).addRange(0x17E0, 0x17E9);\nset.addRange(0x180B, 0x180D).addRange(0x180F, 0x1819).addRange(0x1820, 0x1878).addRange(0x1880, 0x18AA).addRange(0x18B0, 0x18F5).addRange(0x1900, 0x191E).addRange(0x1920, 0x192B).addRange(0x1930, 0x193B).addRange(0x1946, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x19D0, 0x19DA).addRange(0x1A00, 0x1A1B).addRange(0x1A20, 0x1A5E).addRange(0x1A60, 0x1A7C).addRange(0x1A7F, 0x1A89).addRange(0x1A90, 0x1A99).addRange(0x1AB0, 0x1ABD).addRange(0x1ABF, 0x1ACE).addRange(0x1B00, 0x1B4C).addRange(0x1B50, 0x1B59).addRange(0x1B6B, 0x1B73).addRange(0x1B80, 0x1BF3).addRange(0x1C00, 0x1C37).addRange(0x1C40, 0x1C49).addRange(0x1C4D, 0x1C7D).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1CD0, 0x1CD2).addRange(0x1CD4, 0x1CFA).addRange(0x1D00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FBC).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FCC).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FE0, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFC).addRange(0x203F, 0x2040).addRange(0x2090, 0x209C).addRange(0x20D0, 0x20DC).addRange(0x20E5, 0x20F0);\nset.addRange(0x210A, 0x2113).addRange(0x2118, 0x211D).addRange(0x212A, 0x2139).addRange(0x213C, 0x213F).addRange(0x2145, 0x2149).addRange(0x2160, 0x2188).addRange(0x2C00, 0x2CE4).addRange(0x2CEB, 0x2CF3).addRange(0x2D00, 0x2D25).addRange(0x2D30, 0x2D67).addRange(0x2D7F, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x2DE0, 0x2DFF).addRange(0x3005, 0x3007).addRange(0x3021, 0x302F).addRange(0x3031, 0x3035).addRange(0x3038, 0x303C).addRange(0x3041, 0x3096).addRange(0x3099, 0x309F).addRange(0x30A1, 0x30FA).addRange(0x30FC, 0x30FF).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x31A0, 0x31BF).addRange(0x31F0, 0x31FF).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0xA48C).addRange(0xA4D0, 0xA4FD).addRange(0xA500, 0xA60C).addRange(0xA610, 0xA62B).addRange(0xA640, 0xA66F).addRange(0xA674, 0xA67D).addRange(0xA67F, 0xA6F1).addRange(0xA717, 0xA71F).addRange(0xA722, 0xA788).addRange(0xA78B, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA827).addRange(0xA840, 0xA873).addRange(0xA880, 0xA8C5).addRange(0xA8D0, 0xA8D9).addRange(0xA8E0, 0xA8F7).addRange(0xA8FD, 0xA92D);\nset.addRange(0xA930, 0xA953).addRange(0xA960, 0xA97C).addRange(0xA980, 0xA9C0).addRange(0xA9CF, 0xA9D9).addRange(0xA9E0, 0xA9FE).addRange(0xAA00, 0xAA36).addRange(0xAA40, 0xAA4D).addRange(0xAA50, 0xAA59).addRange(0xAA60, 0xAA76).addRange(0xAA7A, 0xAAC2).addRange(0xAADB, 0xAADD).addRange(0xAAE0, 0xAAEF).addRange(0xAAF2, 0xAAF6).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB69).addRange(0xAB70, 0xABEA).addRange(0xABEC, 0xABED).addRange(0xABF0, 0xABF9).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1D, 0xFB28).addRange(0xFB2A, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBB1).addRange(0xFBD3, 0xFD3D).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFB).addRange(0xFE00, 0xFE0F).addRange(0xFE20, 0xFE2F).addRange(0xFE33, 0xFE34).addRange(0xFE4D, 0xFE4F).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0xFF10, 0xFF19).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0xFF66, 0xFFBE).addRange(0xFFC2, 0xFFC7);\nset.addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10140, 0x10174).addRange(0x10280, 0x1029C).addRange(0x102A0, 0x102D0).addRange(0x10300, 0x1031F).addRange(0x1032D, 0x1034A).addRange(0x10350, 0x1037A).addRange(0x10380, 0x1039D).addRange(0x103A0, 0x103C3).addRange(0x103C8, 0x103CF).addRange(0x103D1, 0x103D5).addRange(0x10400, 0x1049D).addRange(0x104A0, 0x104A9).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10860, 0x10876).addRange(0x10880, 0x1089E).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x10900, 0x10915).addRange(0x10920, 0x10939).addRange(0x10980, 0x109B7);\nset.addRange(0x109BE, 0x109BF).addRange(0x10A00, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A38, 0x10A3A).addRange(0x10A60, 0x10A7C).addRange(0x10A80, 0x10A9C).addRange(0x10AC0, 0x10AC7).addRange(0x10AC9, 0x10AE6).addRange(0x10B00, 0x10B35).addRange(0x10B40, 0x10B55).addRange(0x10B60, 0x10B72).addRange(0x10B80, 0x10B91).addRange(0x10C00, 0x10C48).addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10D00, 0x10D27).addRange(0x10D30, 0x10D39).addRange(0x10E80, 0x10EA9).addRange(0x10EAB, 0x10EAC).addRange(0x10EB0, 0x10EB1).addRange(0x10F00, 0x10F1C).addRange(0x10F30, 0x10F50).addRange(0x10F70, 0x10F85).addRange(0x10FB0, 0x10FC4).addRange(0x10FE0, 0x10FF6).addRange(0x11000, 0x11046).addRange(0x11066, 0x11075).addRange(0x1107F, 0x110BA).addRange(0x110D0, 0x110E8).addRange(0x110F0, 0x110F9).addRange(0x11100, 0x11134).addRange(0x11136, 0x1113F).addRange(0x11144, 0x11147).addRange(0x11150, 0x11173).addRange(0x11180, 0x111C4).addRange(0x111C9, 0x111CC).addRange(0x111CE, 0x111DA).addRange(0x11200, 0x11211).addRange(0x11213, 0x11237).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A8).addRange(0x112B0, 0x112EA).addRange(0x112F0, 0x112F9).addRange(0x11300, 0x11303).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310);\nset.addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1133B, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134D).addRange(0x1135D, 0x11363).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x11400, 0x1144A).addRange(0x11450, 0x11459).addRange(0x1145E, 0x11461).addRange(0x11480, 0x114C5).addRange(0x114D0, 0x114D9).addRange(0x11580, 0x115B5).addRange(0x115B8, 0x115C0).addRange(0x115D8, 0x115DD).addRange(0x11600, 0x11640).addRange(0x11650, 0x11659).addRange(0x11680, 0x116B8).addRange(0x116C0, 0x116C9).addRange(0x11700, 0x1171A).addRange(0x1171D, 0x1172B).addRange(0x11730, 0x11739).addRange(0x11740, 0x11746).addRange(0x11800, 0x1183A).addRange(0x118A0, 0x118E9).addRange(0x118FF, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x11935).addRange(0x11937, 0x11938).addRange(0x1193B, 0x11943).addRange(0x11950, 0x11959).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D7).addRange(0x119DA, 0x119E1).addRange(0x119E3, 0x119E4).addRange(0x11A00, 0x11A3E).addRange(0x11A50, 0x11A99).addRange(0x11AB0, 0x11AF8).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C36).addRange(0x11C38, 0x11C40).addRange(0x11C50, 0x11C59).addRange(0x11C72, 0x11C8F).addRange(0x11C92, 0x11CA7).addRange(0x11CA9, 0x11CB6).addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09);\nset.addRange(0x11D0B, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D47).addRange(0x11D50, 0x11D59).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D8E).addRange(0x11D90, 0x11D91).addRange(0x11D93, 0x11D98).addRange(0x11DA0, 0x11DA9).addRange(0x11EE0, 0x11EF6).addRange(0x12000, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12480, 0x12543).addRange(0x12F90, 0x12FF0).addRange(0x13000, 0x1342E).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A60, 0x16A69).addRange(0x16A70, 0x16ABE).addRange(0x16AC0, 0x16AC9).addRange(0x16AD0, 0x16AED).addRange(0x16AF0, 0x16AF4).addRange(0x16B00, 0x16B36).addRange(0x16B40, 0x16B43).addRange(0x16B50, 0x16B59).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16E40, 0x16E7F).addRange(0x16F00, 0x16F4A).addRange(0x16F4F, 0x16F87).addRange(0x16F8F, 0x16F9F).addRange(0x16FE0, 0x16FE1).addRange(0x16FE3, 0x16FE4).addRange(0x16FF0, 0x16FF1).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B000, 0x1B122).addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167).addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1BC9D, 0x1BC9E);\nset.addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1D165, 0x1D169).addRange(0x1D16D, 0x1D172).addRange(0x1D17B, 0x1D182).addRange(0x1D185, 0x1D18B).addRange(0x1D1AA, 0x1D1AD).addRange(0x1D242, 0x1D244).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6FA).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D734).addRange(0x1D736, 0x1D74E).addRange(0x1D750, 0x1D76E).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D7A8).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7CB).addRange(0x1D7CE, 0x1D7FF).addRange(0x1DA00, 0x1DA36).addRange(0x1DA3B, 0x1DA6C).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF).addRange(0x1DF00, 0x1DF1E).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A).addRange(0x1E100, 0x1E12C).addRange(0x1E130, 0x1E13D).addRange(0x1E140, 0x1E149).addRange(0x1E290, 0x1E2AE).addRange(0x1E2C0, 0x1E2F9);\nset.addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE).addRange(0x1E800, 0x1E8C4).addRange(0x1E8D0, 0x1E8D6).addRange(0x1E900, 0x1E94B).addRange(0x1E950, 0x1E959).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1FBF0, 0x1FBF9).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B738).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A).addRange(0xE0100, 0xE01EF);\nmodule.exports = set;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FrameContextConsumer = exports.FrameContextProvider = exports.FrameContext = undefined;\nvar _react = require('react');\nvar _react2 = _interopRequireDefault(_react);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nvar doc = void 0;\nvar win = void 0;\nif (typeof document !== 'undefined') {\n doc = document;\n}\nif (typeof window !== 'undefined') {\n win = window;\n}\nvar FrameContext = exports.FrameContext = _react2.default.createContext({\n document: doc,\n window: win\n});\nvar FrameContextProvider = FrameContext.Provider,\n FrameContextConsumer = FrameContext.Consumer;\nexports.FrameContextProvider = FrameContextProvider;\nexports.FrameContextConsumer = FrameContextConsumer;","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","/**\n * lodash 3.0.3 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified\n * as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n return typeof value == 'number' || isObjectLike(value) && objectToString.call(value) == numberTag;\n}\nmodule.exports = isNumber;","const set = require('regenerate')(0x2D7F);\nset.addRange(0x2D30, 0x2D67).addRange(0x2D6F, 0x2D70);\nmodule.exports = set;","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.marksy = marksy;\nexports[\"default\"] = _default;\nvar _marked = _interopRequireDefault(require(\"marked\"));\nvar _createRenderer = _interopRequireWildcard(require(\"./createRenderer\"));\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};\n if (desc.get || desc.set) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n }\n newObj[\"default\"] = obj;\n return newObj;\n }\n}\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n }\n}\nfunction marksy() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var tracker = {\n tree: null,\n elements: null,\n nextElementId: null,\n toc: null,\n currentIdLevel: 0,\n currentId: []\n };\n var renderer = (0, _createRenderer[\"default\"])(tracker, options, {\n code: function code(_code, language) {\n if (language === 'marksy') {\n try {\n // eslint-disable-next-line no-plusplus\n var elementId = tracker.nextElementId++;\n var components = Object.keys(options.components).map(function (key) {\n return options.components[key];\n });\n var mockedReact = function mockedReact(tag) {\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var componentProps = components.indexOf(tag) >= 0 ? Object.assign(props || {}, {\n // eslint-disable-next-line no-plusplus\n key: tracker.nextElementId++,\n context: tracker.context\n }) : props;\n for (var _len = arguments.length, children = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n children[_key - 2] = arguments[_key];\n }\n return options.createElement(tag, componentProps, children);\n };\n tracker.elements[elementId] =\n // eslint-disable-next-line no-new-func\n _construct(Function, ['h'].concat(_toConsumableArray(Object.keys(options.components)), [\"return \".concat(_code)])).apply(void 0, [mockedReact].concat(_toConsumableArray(components))) || null;\n tracker.tree.push(tracker.elements[elementId]);\n return \"{{\".concat(elementId, \"}}\");\n } catch (e) {//\n }\n return null;\n }\n return (0, _createRenderer.codeRenderer)(tracker, options)(_code, language);\n }\n });\n return function compile(content) {\n var markedOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n tracker.tree = [];\n tracker.elements = {};\n tracker.toc = [];\n tracker.nextElementId = 0;\n tracker.context = context;\n tracker.currentId = [];\n (0, _marked[\"default\"])(content, Object.assign({\n renderer: renderer,\n smartypants: true\n }, markedOptions));\n return {\n tree: tracker.tree,\n toc: tracker.toc\n };\n };\n}\nfunction _default(options) {\n return marksy(options);\n}","const set = require('regenerate')();\nset.addRange(0x0, 0x1F).addRange(0x7F, 0x9F);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x11A50, 0x11AA2);\nmodule.exports = set;","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","const set = require('regenerate')();\nset.addRange(0x10C00, 0x10C48);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x19D0, 0x19DA).addRange(0x19DE, 0x19DF);\nmodule.exports = set;","const set = require('regenerate')(0x2B, 0x5E, 0x7C, 0x7E, 0xAC, 0xB1, 0xD7, 0xF7, 0x3D5, 0x2016, 0x2040, 0x2044, 0x2052, 0x20E1, 0x2102, 0x2107, 0x2115, 0x2124, 0x214B, 0x21DD, 0x237C, 0x23B7, 0x23D0, 0x25E2, 0x25E4, 0x2640, 0x2642, 0xFB29, 0xFE68, 0xFF0B, 0xFF3C, 0xFF3E, 0xFF5C, 0xFF5E, 0xFFE2, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);\nset.addRange(0x3C, 0x3E).addRange(0x3D0, 0x3D2).addRange(0x3F0, 0x3F1).addRange(0x3F4, 0x3F6).addRange(0x606, 0x608).addRange(0x2032, 0x2034).addRange(0x2061, 0x2064).addRange(0x207A, 0x207E).addRange(0x208A, 0x208E).addRange(0x20D0, 0x20DC).addRange(0x20E5, 0x20E6).addRange(0x20EB, 0x20EF).addRange(0x210A, 0x2113).addRange(0x2118, 0x211D).addRange(0x2128, 0x2129).addRange(0x212C, 0x212D).addRange(0x212F, 0x2131).addRange(0x2133, 0x2138).addRange(0x213C, 0x2149).addRange(0x2190, 0x21A7).addRange(0x21A9, 0x21AE).addRange(0x21B0, 0x21B1).addRange(0x21B6, 0x21B7).addRange(0x21BC, 0x21DB).addRange(0x21E4, 0x21E5).addRange(0x21F4, 0x22FF).addRange(0x2308, 0x230B).addRange(0x2320, 0x2321).addRange(0x239B, 0x23B5).addRange(0x23DC, 0x23E2).addRange(0x25A0, 0x25A1).addRange(0x25AE, 0x25B7).addRange(0x25BC, 0x25C1).addRange(0x25C6, 0x25C7).addRange(0x25CA, 0x25CB).addRange(0x25CF, 0x25D3).addRange(0x25E7, 0x25EC).addRange(0x25F8, 0x25FF).addRange(0x2605, 0x2606).addRange(0x2660, 0x2663).addRange(0x266D, 0x266F).addRange(0x27C0, 0x27FF).addRange(0x2900, 0x2AFF).addRange(0x2B30, 0x2B44).addRange(0x2B47, 0x2B4C).addRange(0xFE61, 0xFE66).addRange(0xFF1C, 0xFF1E).addRange(0xFFE9, 0xFFEC).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F);\nset.addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D7CB).addRange(0x1D7CE, 0x1D7FF).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1EEF0, 0x1EEF1);\nmodule.exports = set;","const set = require('regenerate')(0xA92F);\nset.addRange(0xA900, 0xA92D);\nmodule.exports = set;","var composeArgs = require('./_composeArgs'),\n composeArgsRight = require('./_composeArgsRight'),\n countHolders = require('./_countHolders'),\n createCtor = require('./_createCtor'),\n createRecurry = require('./_createRecurry'),\n getHolder = require('./_getHolder'),\n reorder = require('./_reorder'),\n replaceHolders = require('./_replaceHolders'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_ARY_FLAG = 128,\n WRAP_FLIP_FLAG = 512;\n\n/**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n}\n\nmodule.exports = createHybrid;\n","const set = require('regenerate')(0xC5D, 0x1CDA, 0x1CF2);\nset.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0xC00, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC3C, 0xC44).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC63).addRange(0xC66, 0xC6F).addRange(0xC77, 0xC7F);\nmodule.exports = set;","var WeakMap = require('./_WeakMap');\n\n/** Used to store function metadata. */\nvar metaMap = WeakMap && new WeakMap;\n\nmodule.exports = metaMap;\n","const set = require('regenerate')(0x1CD0, 0x20F0, 0x11350, 0x11357, 0x11FD3);\nset.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0xBE6, 0xBF3).addRange(0x1CD2, 0x1CD3).addRange(0x1CF2, 0x1CF4).addRange(0x1CF8, 0x1CF9).addRange(0x11300, 0x11303).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1133B, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134D).addRange(0x1135D, 0x11363).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x11FD0, 0x11FD1);\nmodule.exports = set;","module.exports = new Map([['General_Category', ['Cased_Letter', 'Close_Punctuation', 'Connector_Punctuation', 'Control', 'Currency_Symbol', 'Dash_Punctuation', 'Decimal_Number', 'Enclosing_Mark', 'Final_Punctuation', 'Format', 'Initial_Punctuation', 'Letter', 'Letter_Number', 'Line_Separator', 'Lowercase_Letter', 'Mark', 'Math_Symbol', 'Modifier_Letter', 'Modifier_Symbol', 'Nonspacing_Mark', 'Number', 'Open_Punctuation', 'Other', 'Other_Letter', 'Other_Number', 'Other_Punctuation', 'Other_Symbol', 'Paragraph_Separator', 'Private_Use', 'Punctuation', 'Separator', 'Space_Separator', 'Spacing_Mark', 'Surrogate', 'Symbol', 'Titlecase_Letter', 'Unassigned', 'Uppercase_Letter']], ['Script', ['Adlam', 'Ahom', 'Anatolian_Hieroglyphs', 'Arabic', 'Armenian', 'Avestan', 'Balinese', 'Bamum', 'Bassa_Vah', 'Batak', 'Bengali', 'Bhaiksuki', 'Bopomofo', 'Brahmi', 'Braille', 'Buginese', 'Buhid', 'Canadian_Aboriginal', 'Carian', 'Caucasian_Albanian', 'Chakma', 'Cham', 'Cherokee', 'Chorasmian', 'Common', 'Coptic', 'Cuneiform', 'Cypriot', 'Cypro_Minoan', 'Cyrillic', 'Deseret', 'Devanagari', 'Dives_Akuru', 'Dogra', 'Duployan', 'Egyptian_Hieroglyphs', 'Elbasan', 'Elymaic', 'Ethiopic', 'Georgian', 'Glagolitic', 'Gothic', 'Grantha', 'Greek', 'Gujarati', 'Gunjala_Gondi', 'Gurmukhi', 'Han', 'Hangul', 'Hanifi_Rohingya', 'Hanunoo', 'Hatran', 'Hebrew', 'Hiragana', 'Imperial_Aramaic', 'Inherited', 'Inscriptional_Pahlavi', 'Inscriptional_Parthian', 'Javanese', 'Kaithi', 'Kannada', 'Katakana', 'Kayah_Li', 'Kharoshthi', 'Khitan_Small_Script', 'Khmer', 'Khojki', 'Khudawadi', 'Lao', 'Latin', 'Lepcha', 'Limbu', 'Linear_A', 'Linear_B', 'Lisu', 'Lycian', 'Lydian', 'Mahajani', 'Makasar', 'Malayalam', 'Mandaic', 'Manichaean', 'Marchen', 'Masaram_Gondi', 'Medefaidrin', 'Meetei_Mayek', 'Mende_Kikakui', 'Meroitic_Cursive', 'Meroitic_Hieroglyphs', 'Miao', 'Modi', 'Mongolian', 'Mro', 'Multani', 'Myanmar', 'Nabataean', 'Nandinagari', 'New_Tai_Lue', 'Newa', 'Nko', 'Nushu', 'Nyiakeng_Puachue_Hmong', 'Ogham', 'Ol_Chiki', 'Old_Hungarian', 'Old_Italic', 'Old_North_Arabian', 'Old_Permic', 'Old_Persian', 'Old_Sogdian', 'Old_South_Arabian', 'Old_Turkic', 'Old_Uyghur', 'Oriya', 'Osage', 'Osmanya', 'Pahawh_Hmong', 'Palmyrene', 'Pau_Cin_Hau', 'Phags_Pa', 'Phoenician', 'Psalter_Pahlavi', 'Rejang', 'Runic', 'Samaritan', 'Saurashtra', 'Sharada', 'Shavian', 'Siddham', 'SignWriting', 'Sinhala', 'Sogdian', 'Sora_Sompeng', 'Soyombo', 'Sundanese', 'Syloti_Nagri', 'Syriac', 'Tagalog', 'Tagbanwa', 'Tai_Le', 'Tai_Tham', 'Tai_Viet', 'Takri', 'Tamil', 'Tangsa', 'Tangut', 'Telugu', 'Thaana', 'Thai', 'Tibetan', 'Tifinagh', 'Tirhuta', 'Toto', 'Ugaritic', 'Vai', 'Vithkuqi', 'Wancho', 'Warang_Citi', 'Yezidi', 'Yi', 'Zanabazar_Square']], ['Script_Extensions', ['Adlam', 'Ahom', 'Anatolian_Hieroglyphs', 'Arabic', 'Armenian', 'Avestan', 'Balinese', 'Bamum', 'Bassa_Vah', 'Batak', 'Bengali', 'Bhaiksuki', 'Bopomofo', 'Brahmi', 'Braille', 'Buginese', 'Buhid', 'Canadian_Aboriginal', 'Carian', 'Caucasian_Albanian', 'Chakma', 'Cham', 'Cherokee', 'Chorasmian', 'Common', 'Coptic', 'Cuneiform', 'Cypriot', 'Cypro_Minoan', 'Cyrillic', 'Deseret', 'Devanagari', 'Dives_Akuru', 'Dogra', 'Duployan', 'Egyptian_Hieroglyphs', 'Elbasan', 'Elymaic', 'Ethiopic', 'Georgian', 'Glagolitic', 'Gothic', 'Grantha', 'Greek', 'Gujarati', 'Gunjala_Gondi', 'Gurmukhi', 'Han', 'Hangul', 'Hanifi_Rohingya', 'Hanunoo', 'Hatran', 'Hebrew', 'Hiragana', 'Imperial_Aramaic', 'Inherited', 'Inscriptional_Pahlavi', 'Inscriptional_Parthian', 'Javanese', 'Kaithi', 'Kannada', 'Katakana', 'Kayah_Li', 'Kharoshthi', 'Khitan_Small_Script', 'Khmer', 'Khojki', 'Khudawadi', 'Lao', 'Latin', 'Lepcha', 'Limbu', 'Linear_A', 'Linear_B', 'Lisu', 'Lycian', 'Lydian', 'Mahajani', 'Makasar', 'Malayalam', 'Mandaic', 'Manichaean', 'Marchen', 'Masaram_Gondi', 'Medefaidrin', 'Meetei_Mayek', 'Mende_Kikakui', 'Meroitic_Cursive', 'Meroitic_Hieroglyphs', 'Miao', 'Modi', 'Mongolian', 'Mro', 'Multani', 'Myanmar', 'Nabataean', 'Nandinagari', 'New_Tai_Lue', 'Newa', 'Nko', 'Nushu', 'Nyiakeng_Puachue_Hmong', 'Ogham', 'Ol_Chiki', 'Old_Hungarian', 'Old_Italic', 'Old_North_Arabian', 'Old_Permic', 'Old_Persian', 'Old_Sogdian', 'Old_South_Arabian', 'Old_Turkic', 'Old_Uyghur', 'Oriya', 'Osage', 'Osmanya', 'Pahawh_Hmong', 'Palmyrene', 'Pau_Cin_Hau', 'Phags_Pa', 'Phoenician', 'Psalter_Pahlavi', 'Rejang', 'Runic', 'Samaritan', 'Saurashtra', 'Sharada', 'Shavian', 'Siddham', 'SignWriting', 'Sinhala', 'Sogdian', 'Sora_Sompeng', 'Soyombo', 'Sundanese', 'Syloti_Nagri', 'Syriac', 'Tagalog', 'Tagbanwa', 'Tai_Le', 'Tai_Tham', 'Tai_Viet', 'Takri', 'Tamil', 'Tangsa', 'Tangut', 'Telugu', 'Thaana', 'Thai', 'Tibetan', 'Tifinagh', 'Tirhuta', 'Toto', 'Ugaritic', 'Vai', 'Vithkuqi', 'Wancho', 'Warang_Citi', 'Yezidi', 'Yi', 'Zanabazar_Square']], ['Binary_Property', ['ASCII', 'ASCII_Hex_Digit', 'Alphabetic', 'Any', 'Assigned', 'Bidi_Control', 'Bidi_Mirrored', 'Case_Ignorable', 'Cased', 'Changes_When_Casefolded', 'Changes_When_Casemapped', 'Changes_When_Lowercased', 'Changes_When_NFKC_Casefolded', 'Changes_When_Titlecased', 'Changes_When_Uppercased', 'Dash', 'Default_Ignorable_Code_Point', 'Deprecated', 'Diacritic', 'Emoji', 'Emoji_Component', 'Emoji_Modifier', 'Emoji_Modifier_Base', 'Emoji_Presentation', 'Extended_Pictographic', 'Extender', 'Grapheme_Base', 'Grapheme_Extend', 'Hex_Digit', 'IDS_Binary_Operator', 'IDS_Trinary_Operator', 'ID_Continue', 'ID_Start', 'Ideographic', 'Join_Control', 'Logical_Order_Exception', 'Lowercase', 'Math', 'Noncharacter_Code_Point', 'Pattern_Syntax', 'Pattern_White_Space', 'Quotation_Mark', 'Radical', 'Regional_Indicator', 'Sentence_Terminal', 'Soft_Dotted', 'Terminal_Punctuation', 'Unified_Ideograph', 'Uppercase', 'Variation_Selector', 'White_Space', 'XID_Continue', 'XID_Start']]]);","const set = require('regenerate')(0x1ABE);\nset.addRange(0x488, 0x489).addRange(0x20DD, 0x20E0).addRange(0x20E2, 0x20E4).addRange(0xA670, 0xA672);\nmodule.exports = set;","var parent = require('../../actual/object/assign');\n\nmodule.exports = parent;\n","const set = require('regenerate')(0x11FB0);\nset.addRange(0xA4D0, 0xA4FF);\nmodule.exports = set;","'use strict';\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = isArray(a),\n arrB = isArray(b),\n i,\n length,\n key;\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;) if (!equal(a[i], b[i])) return false;\n return true;\n }\n if (arrA != arrB) return false;\n var dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA != dateB) return false;\n if (dateA && dateB) return a.getTime() == b.getTime();\n var regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA != regexpB) return false;\n if (regexpA && regexpB) return a.toString() == b.toString();\n var keys = keyList(a);\n length = keys.length;\n if (length !== keyList(b).length) return false;\n for (i = length; i-- !== 0;) if (!hasProp.call(b, keys[i])) return false;\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!equal(a[key], b[key])) return false;\n }\n return true;\n }\n return a !== a && b !== b;\n};","function isNumeric(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nmodule.exports = function (lightness, hue, darkBackground) {\n if (typeof hue === \"undefined\") {\n hue = 0;\n }\n if (typeof darkBackground === \"undefined\") {\n darkBackground = false;\n }\n\n // Convert named hues into numeric lightness value.\n if (hue === \"cool\") {\n hue = 237;\n } else if (hue === \"slate\") {\n hue = 122;\n } else if (hue === \"warm\") {\n hue = 69;\n }\n if (!isNumeric(hue)) {\n throw new Error(\"Hue is not a number\");\n }\n if (!isNumeric(lightness)) {\n throw new Error(\"Lightness is not a number\");\n }\n if (lightness > 100) {\n lightness = 100;\n }\n if (lightness < 0) {\n lightness = 0;\n }\n var saturation = 0;\n if (hue !== 0) {\n var a = 19.92978;\n var b = -0.3651759;\n var c = 0.001737214;\n saturation = a + b * lightness + c * Math.pow(lightness, 2);\n }\n var opacity = 0;\n if (darkBackground) {\n opacity = lightness / 100;\n lightness = '100%,';\n } else {\n opacity = (100 - lightness) / 100;\n lightness = '0%,';\n }\n return \"hsla(\" + hue + \",\" + saturation + \"%,\" + lightness + opacity + \")\";\n};","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrapRootElement = void 0;\nvar react_1 = __importDefault(require(\"react\"));\nvar react_helmet_async_1 = require(\"react-helmet-async\");\nvar wrapRootElement = function (_a) {\n var element = _a.element;\n return (react_1.default.createElement(react_helmet_async_1.HelmetProvider, null, element));\n};\nexports.wrapRootElement = wrapRootElement;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n","const set = require('regenerate')(0xA0, 0xA8, 0xAA, 0xAD, 0xAF, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10A, 0x10C, 0x10E, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11A, 0x11C, 0x11E, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12A, 0x12C, 0x12E, 0x130, 0x136, 0x139, 0x13B, 0x13D, 0x143, 0x145, 0x147, 0x14C, 0x14E, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15A, 0x15C, 0x15E, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16A, 0x16C, 0x16E, 0x170, 0x172, 0x174, 0x176, 0x17B, 0x17D, 0x17F, 0x184, 0x1A2, 0x1A4, 0x1A9, 0x1AC, 0x1B5, 0x1BC, 0x1CF, 0x1D1, 0x1D3, 0x1D5, 0x1D7, 0x1D9, 0x1DB, 0x1DE, 0x1E0, 0x1E2, 0x1E4, 0x1E6, 0x1E8, 0x1EA, 0x1EC, 0x1EE, 0x1FA, 0x1FC, 0x1FE, 0x200, 0x202, 0x204, 0x206, 0x208, 0x20A, 0x20C, 0x20E, 0x210, 0x212, 0x214, 0x216, 0x218, 0x21A, 0x21C, 0x21E, 0x220, 0x222, 0x224, 0x226, 0x228, 0x22A, 0x22C, 0x22E, 0x230, 0x232, 0x241, 0x248, 0x24A, 0x24C, 0x24E, 0x34F, 0x370, 0x372, 0x374, 0x376, 0x37A, 0x38C, 0x3C2, 0x3D8, 0x3DA, 0x3DC, 0x3DE, 0x3E0, 0x3E2, 0x3E4, 0x3E6, 0x3E8, 0x3EA, 0x3EC, 0x3EE, 0x3F7, 0x460, 0x462, 0x464, 0x466, 0x468, 0x46A, 0x46C, 0x46E, 0x470, 0x472, 0x474, 0x476, 0x478, 0x47A, 0x47C, 0x47E, 0x480, 0x48A, 0x48C, 0x48E, 0x490, 0x492, 0x494, 0x496, 0x498, 0x49A, 0x49C, 0x49E, 0x4A0, 0x4A2, 0x4A4, 0x4A6, 0x4A8, 0x4AA, 0x4AC, 0x4AE, 0x4B0, 0x4B2, 0x4B4, 0x4B6, 0x4B8, 0x4BA, 0x4BC, 0x4BE, 0x4C3, 0x4C5, 0x4C7, 0x4C9, 0x4CB, 0x4CD, 0x4D0, 0x4D2, 0x4D4, 0x4D6, 0x4D8, 0x4DA, 0x4DC, 0x4DE, 0x4E0, 0x4E2, 0x4E4, 0x4E6, 0x4E8, 0x4EA, 0x4EC, 0x4EE, 0x4F0, 0x4F2, 0x4F4, 0x4F6, 0x4F8, 0x4FA, 0x4FC, 0x4FE, 0x500, 0x502, 0x504, 0x506, 0x508, 0x50A, 0x50C, 0x50E, 0x510, 0x512, 0x514, 0x516, 0x518, 0x51A, 0x51C, 0x51E, 0x520, 0x522, 0x524, 0x526, 0x528, 0x52A, 0x52C, 0x52E, 0x587, 0x61C, 0x9DF, 0xA33, 0xA36, 0xA5E, 0xE33, 0xEB3, 0xF0C, 0xF43, 0xF4D, 0xF52, 0xF57, 0xF5C, 0xF69, 0xF73, 0xF81, 0xF93, 0xF9D, 0xFA2, 0xFA7, 0xFAC, 0xFB9, 0x10C7, 0x10CD, 0x10FC, 0x1D78, 0x1E00, 0x1E02, 0x1E04, 0x1E06, 0x1E08, 0x1E0A, 0x1E0C, 0x1E0E, 0x1E10, 0x1E12, 0x1E14, 0x1E16, 0x1E18, 0x1E1A, 0x1E1C, 0x1E1E, 0x1E20, 0x1E22, 0x1E24, 0x1E26, 0x1E28, 0x1E2A, 0x1E2C, 0x1E2E, 0x1E30, 0x1E32, 0x1E34, 0x1E36, 0x1E38, 0x1E3A, 0x1E3C, 0x1E3E, 0x1E40, 0x1E42, 0x1E44, 0x1E46, 0x1E48, 0x1E4A, 0x1E4C, 0x1E4E, 0x1E50, 0x1E52, 0x1E54, 0x1E56, 0x1E58, 0x1E5A, 0x1E5C, 0x1E5E, 0x1E60, 0x1E62, 0x1E64, 0x1E66, 0x1E68, 0x1E6A, 0x1E6C, 0x1E6E, 0x1E70, 0x1E72, 0x1E74, 0x1E76, 0x1E78, 0x1E7A, 0x1E7C, 0x1E7E, 0x1E80, 0x1E82, 0x1E84, 0x1E86, 0x1E88, 0x1E8A, 0x1E8C, 0x1E8E, 0x1E90, 0x1E92, 0x1E94, 0x1E9E, 0x1EA0, 0x1EA2, 0x1EA4, 0x1EA6, 0x1EA8, 0x1EAA, 0x1EAC, 0x1EAE, 0x1EB0, 0x1EB2, 0x1EB4, 0x1EB6, 0x1EB8, 0x1EBA, 0x1EBC, 0x1EBE, 0x1EC0, 0x1EC2, 0x1EC4, 0x1EC6, 0x1EC8, 0x1ECA, 0x1ECC, 0x1ECE, 0x1ED0, 0x1ED2, 0x1ED4, 0x1ED6, 0x1ED8, 0x1EDA, 0x1EDC, 0x1EDE, 0x1EE0, 0x1EE2, 0x1EE4, 0x1EE6, 0x1EE8, 0x1EEA, 0x1EEC, 0x1EEE, 0x1EF0, 0x1EF2, 0x1EF4, 0x1EF6, 0x1EF8, 0x1EFA, 0x1EFC, 0x1EFE, 0x1F59, 0x1F5B, 0x1F5D, 0x1F5F, 0x1F71, 0x1F73, 0x1F75, 0x1F77, 0x1F79, 0x1F7B, 0x1F7D, 0x1FD3, 0x1FE3, 0x2011, 0x2017, 0x203C, 0x203E, 0x2057, 0x20A8, 0x2124, 0x2126, 0x2128, 0x2183, 0x2189, 0x2A0C, 0x2ADC, 0x2C60, 0x2C67, 0x2C69, 0x2C6B, 0x2C72, 0x2C75, 0x2C82, 0x2C84, 0x2C86, 0x2C88, 0x2C8A, 0x2C8C, 0x2C8E, 0x2C90, 0x2C92, 0x2C94, 0x2C96, 0x2C98, 0x2C9A, 0x2C9C, 0x2C9E, 0x2CA0, 0x2CA2, 0x2CA4, 0x2CA6, 0x2CA8, 0x2CAA, 0x2CAC, 0x2CAE, 0x2CB0, 0x2CB2, 0x2CB4, 0x2CB6, 0x2CB8, 0x2CBA, 0x2CBC, 0x2CBE, 0x2CC0, 0x2CC2, 0x2CC4, 0x2CC6, 0x2CC8, 0x2CCA, 0x2CCC, 0x2CCE, 0x2CD0, 0x2CD2, 0x2CD4, 0x2CD6, 0x2CD8, 0x2CDA, 0x2CDC, 0x2CDE, 0x2CE0, 0x2CE2, 0x2CEB, 0x2CED, 0x2CF2, 0x2D6F, 0x2E9F, 0x2EF3, 0x3000, 0x3036, 0x309F, 0x30FF, 0xA640, 0xA642, 0xA644, 0xA646, 0xA648, 0xA64A, 0xA64C, 0xA64E, 0xA650, 0xA652, 0xA654, 0xA656, 0xA658, 0xA65A, 0xA65C, 0xA65E, 0xA660, 0xA662, 0xA664, 0xA666, 0xA668, 0xA66A, 0xA66C, 0xA680, 0xA682, 0xA684, 0xA686, 0xA688, 0xA68A, 0xA68C, 0xA68E, 0xA690, 0xA692, 0xA694, 0xA696, 0xA698, 0xA69A, 0xA722, 0xA724, 0xA726, 0xA728, 0xA72A, 0xA72C, 0xA72E, 0xA732, 0xA734, 0xA736, 0xA738, 0xA73A, 0xA73C, 0xA73E, 0xA740, 0xA742, 0xA744, 0xA746, 0xA748, 0xA74A, 0xA74C, 0xA74E, 0xA750, 0xA752, 0xA754, 0xA756, 0xA758, 0xA75A, 0xA75C, 0xA75E, 0xA760, 0xA762, 0xA764, 0xA766, 0xA768, 0xA76A, 0xA76C, 0xA76E, 0xA770, 0xA779, 0xA77B, 0xA780, 0xA782, 0xA784, 0xA786, 0xA78B, 0xA78D, 0xA790, 0xA792, 0xA796, 0xA798, 0xA79A, 0xA79C, 0xA79E, 0xA7A0, 0xA7A2, 0xA7A4, 0xA7A6, 0xA7A8, 0xA7B6, 0xA7B8, 0xA7BA, 0xA7BC, 0xA7BE, 0xA7C0, 0xA7C2, 0xA7C9, 0xA7D0, 0xA7D6, 0xA7D8, 0xAB69, 0xFA10, 0xFA12, 0xFA20, 0xFA22, 0xFB1D, 0xFB3E, 0xFE74, 0xFEFF, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E, 0x1F190);\nset.addRange(0x41, 0x5A).addRange(0xB2, 0xB5).addRange(0xB8, 0xBA).addRange(0xBC, 0xBE).addRange(0xC0, 0xD6).addRange(0xD8, 0xDF).addRange(0x132, 0x134).addRange(0x13F, 0x141).addRange(0x149, 0x14A).addRange(0x178, 0x179).addRange(0x181, 0x182).addRange(0x186, 0x187).addRange(0x189, 0x18B).addRange(0x18E, 0x191).addRange(0x193, 0x194).addRange(0x196, 0x198).addRange(0x19C, 0x19D).addRange(0x19F, 0x1A0).addRange(0x1A6, 0x1A7).addRange(0x1AE, 0x1AF).addRange(0x1B1, 0x1B3).addRange(0x1B7, 0x1B8).addRange(0x1C4, 0x1CD).addRange(0x1F1, 0x1F4).addRange(0x1F6, 0x1F8).addRange(0x23A, 0x23B).addRange(0x23D, 0x23E).addRange(0x243, 0x246).addRange(0x2B0, 0x2B8).addRange(0x2D8, 0x2DD).addRange(0x2E0, 0x2E4).addRange(0x340, 0x341).addRange(0x343, 0x345).addRange(0x37E, 0x37F).addRange(0x384, 0x38A).addRange(0x38E, 0x38F).addRange(0x391, 0x3A1).addRange(0x3A3, 0x3AB).addRange(0x3CF, 0x3D6).addRange(0x3F0, 0x3F2).addRange(0x3F4, 0x3F5).addRange(0x3F9, 0x3FA).addRange(0x3FD, 0x42F).addRange(0x4C0, 0x4C1).addRange(0x531, 0x556).addRange(0x675, 0x678).addRange(0x958, 0x95F).addRange(0x9DC, 0x9DD).addRange(0xA59, 0xA5B).addRange(0xB5C, 0xB5D).addRange(0xEDC, 0xEDD);\nset.addRange(0xF75, 0xF79).addRange(0x10A0, 0x10C5).addRange(0x115F, 0x1160).addRange(0x13F8, 0x13FD).addRange(0x17B4, 0x17B5).addRange(0x180B, 0x180F).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1D2C, 0x1D2E).addRange(0x1D30, 0x1D3A).addRange(0x1D3C, 0x1D4D).addRange(0x1D4F, 0x1D6A).addRange(0x1D9B, 0x1DBF).addRange(0x1E9A, 0x1E9B).addRange(0x1F08, 0x1F0F).addRange(0x1F18, 0x1F1D).addRange(0x1F28, 0x1F2F).addRange(0x1F38, 0x1F3F).addRange(0x1F48, 0x1F4D).addRange(0x1F68, 0x1F6F).addRange(0x1F80, 0x1FAF).addRange(0x1FB2, 0x1FB4).addRange(0x1FB7, 0x1FC4).addRange(0x1FC7, 0x1FCF).addRange(0x1FD8, 0x1FDB).addRange(0x1FDD, 0x1FDF).addRange(0x1FE8, 0x1FEF).addRange(0x1FF2, 0x1FF4).addRange(0x1FF7, 0x1FFE).addRange(0x2000, 0x200F).addRange(0x2024, 0x2026).addRange(0x202A, 0x202F).addRange(0x2033, 0x2034).addRange(0x2036, 0x2037).addRange(0x2047, 0x2049).addRange(0x205F, 0x2071).addRange(0x2074, 0x208E).addRange(0x2090, 0x209C).addRange(0x2100, 0x2103).addRange(0x2105, 0x2107).addRange(0x2109, 0x2113).addRange(0x2115, 0x2116).addRange(0x2119, 0x211D).addRange(0x2120, 0x2122).addRange(0x212A, 0x212D).addRange(0x212F, 0x2139).addRange(0x213B, 0x2140).addRange(0x2145, 0x2149).addRange(0x2150, 0x217F).addRange(0x222C, 0x222D);\nset.addRange(0x222F, 0x2230).addRange(0x2329, 0x232A).addRange(0x2460, 0x24EA).addRange(0x2A74, 0x2A76).addRange(0x2C00, 0x2C2F).addRange(0x2C62, 0x2C64).addRange(0x2C6D, 0x2C70).addRange(0x2C7C, 0x2C80).addRange(0x2F00, 0x2FD5).addRange(0x3038, 0x303A).addRange(0x309B, 0x309C).addRange(0x3131, 0x318E).addRange(0x3192, 0x319F).addRange(0x3200, 0x321E).addRange(0x3220, 0x3247).addRange(0x3250, 0x327E).addRange(0x3280, 0x33FF).addRange(0xA69C, 0xA69D).addRange(0xA77D, 0xA77E).addRange(0xA7AA, 0xA7AE).addRange(0xA7B0, 0xA7B4).addRange(0xA7C4, 0xA7C7).addRange(0xA7F2, 0xA7F5).addRange(0xA7F8, 0xA7F9).addRange(0xAB5C, 0xAB5F).addRange(0xAB70, 0xABBF).addRange(0xF900, 0xFA0D).addRange(0xFA15, 0xFA1E).addRange(0xFA25, 0xFA26).addRange(0xFA2A, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1F, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBB1).addRange(0xFBD3, 0xFD3D).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFC).addRange(0xFE00, 0xFE19).addRange(0xFE30, 0xFE44).addRange(0xFE47, 0xFE52).addRange(0xFE54, 0xFE66).addRange(0xFE68, 0xFE6B).addRange(0xFE70, 0xFE72).addRange(0xFE76, 0xFEFC).addRange(0xFF01, 0xFFBE).addRange(0xFFC2, 0xFFC7);\nset.addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0xFFE0, 0xFFE6).addRange(0xFFE8, 0xFFEE).addRange(0xFFF0, 0xFFF8).addRange(0x10400, 0x10427).addRange(0x104B0, 0x104D3).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10781, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10C80, 0x10CB2).addRange(0x118A0, 0x118BF).addRange(0x16E40, 0x16E5F).addRange(0x1BCA0, 0x1BCA3).addRange(0x1D15E, 0x1D164).addRange(0x1D173, 0x1D17A).addRange(0x1D1BB, 0x1D1C0).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D7CB).addRange(0x1D7CE, 0x1D7FF).addRange(0x1E900, 0x1E921).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72);\nset.addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1F100, 0x1F10A).addRange(0x1F110, 0x1F12E).addRange(0x1F130, 0x1F14F).addRange(0x1F16A, 0x1F16C).addRange(0x1F200, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x1FBF0, 0x1FBF9).addRange(0x2F800, 0x2FA1D).addRange(0xE0000, 0xE0FFF);\nmodule.exports = set;","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var convert = require('./convert'),\n func = convert('mapValues', require('../mapValues'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","var convert = require('./convert'),\n func = convert('flattenDepth', require('../flattenDepth'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","const set = require('regenerate')(0x22, 0x27, 0xAB, 0xBB, 0x2E42, 0xFF02, 0xFF07);\nset.addRange(0x2018, 0x201F).addRange(0x2039, 0x203A).addRange(0x300C, 0x300F).addRange(0x301D, 0x301F).addRange(0xFE41, 0xFE44).addRange(0xFF62, 0xFF63);\nmodule.exports = set;","const set = require('regenerate')(0x85E);\nset.addRange(0x840, 0x85B);\nmodule.exports = set;","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\n/* eslint-disable require-jsdoc, valid-jsdoc */\nvar MapShim = function () {\n if (typeof Map !== 'undefined') {\n return Map;\n }\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\n function getIndex(arr, key) {\n var result = -1;\n arr.some(function (entry, index) {\n if (entry[0] === key) {\n result = index;\n return true;\n }\n return false;\n });\n return result;\n }\n return (/** @class */function () {\n function class_1() {\n this.__entries__ = [];\n }\n Object.defineProperty(class_1.prototype, \"size\", {\n /**\r\n * @returns {boolean}\r\n */\n get: function () {\n return this.__entries__.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\n class_1.prototype.get = function (key) {\n var index = getIndex(this.__entries__, key);\n var entry = this.__entries__[index];\n return entry && entry[1];\n };\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\n class_1.prototype.set = function (key, value) {\n var index = getIndex(this.__entries__, key);\n if (~index) {\n this.__entries__[index][1] = value;\n } else {\n this.__entries__.push([key, value]);\n }\n };\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\n class_1.prototype.delete = function (key) {\n var entries = this.__entries__;\n var index = getIndex(entries, key);\n if (~index) {\n entries.splice(index, 1);\n }\n };\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\n class_1.prototype.has = function (key) {\n return !!~getIndex(this.__entries__, key);\n };\n /**\r\n * @returns {void}\r\n */\n class_1.prototype.clear = function () {\n this.__entries__.splice(0);\n };\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\n class_1.prototype.forEach = function (callback, ctx) {\n if (ctx === void 0) {\n ctx = null;\n }\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\n var entry = _a[_i];\n callback.call(ctx, entry[1], entry[0]);\n }\n };\n return class_1;\n }()\n );\n}();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\nvar global$1 = function () {\n if (typeof global !== 'undefined' && global.Math === Math) {\n return global;\n }\n if (typeof self !== 'undefined' && self.Math === Math) {\n return self;\n }\n if (typeof window !== 'undefined' && window.Math === Math) {\n return window;\n }\n // eslint-disable-next-line no-new-func\n return Function('return this')();\n}();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\nvar requestAnimationFrame$1 = function () {\n if (typeof requestAnimationFrame === 'function') {\n // It's required to use a bounded function because IE sometimes throws\n // an \"Invalid calling object\" error if rAF is invoked without the global\n // object on the left hand side.\n return requestAnimationFrame.bind(global$1);\n }\n return function (callback) {\n return setTimeout(function () {\n return callback(Date.now());\n }, 1000 / 60);\n };\n}();\n\n// Defines minimum timeout before adding a trailing call.\nvar trailingTimeout = 2;\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\nfunction throttle(callback, delay) {\n var leadingCall = false,\n trailingCall = false,\n lastCallTime = 0;\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\n function resolvePending() {\n if (leadingCall) {\n leadingCall = false;\n callback();\n }\n if (trailingCall) {\n proxy();\n }\n }\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\n function timeoutCallback() {\n requestAnimationFrame$1(resolvePending);\n }\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\n function proxy() {\n var timeStamp = Date.now();\n if (leadingCall) {\n // Reject immediately following calls.\n if (timeStamp - lastCallTime < trailingTimeout) {\n return;\n }\n // Schedule new call to be in invoked when the pending one is resolved.\n // This is important for \"transitions\" which never actually start\n // immediately so there is a chance that we might miss one if change\n // happens amids the pending invocation.\n trailingCall = true;\n } else {\n leadingCall = true;\n trailingCall = false;\n setTimeout(timeoutCallback, delay);\n }\n lastCallTime = timeStamp;\n }\n return proxy;\n}\n\n// Minimum delay before invoking the update of observers.\nvar REFRESH_DELAY = 20;\n// A list of substrings of CSS properties used to find transition events that\n// might affect dimensions of observed elements.\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\n// Check if MutationObserver is available.\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\nvar ResizeObserverController = /** @class */function () {\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\n function ResizeObserverController() {\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\n this.connected_ = false;\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\n this.mutationEventsAdded_ = false;\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\n this.mutationsObserver_ = null;\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\n this.observers_ = [];\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\n }\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\n ResizeObserverController.prototype.addObserver = function (observer) {\n if (!~this.observers_.indexOf(observer)) {\n this.observers_.push(observer);\n }\n // Add listeners if they haven't been added yet.\n if (!this.connected_) {\n this.connect_();\n }\n };\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\n ResizeObserverController.prototype.removeObserver = function (observer) {\n var observers = this.observers_;\n var index = observers.indexOf(observer);\n // Remove observer if it's present in registry.\n if (~index) {\n observers.splice(index, 1);\n }\n // Remove listeners if controller has no connected observers.\n if (!observers.length && this.connected_) {\n this.disconnect_();\n }\n };\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\n ResizeObserverController.prototype.refresh = function () {\n var changesDetected = this.updateObservers_();\n // Continue running updates if changes have been detected as there might\n // be future ones caused by CSS transitions.\n if (changesDetected) {\n this.refresh();\n }\n };\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\n ResizeObserverController.prototype.updateObservers_ = function () {\n // Collect observers that have active observations.\n var activeObservers = this.observers_.filter(function (observer) {\n return observer.gatherActive(), observer.hasActive();\n });\n // Deliver notifications in a separate cycle in order to avoid any\n // collisions between observers, e.g. when multiple instances of\n // ResizeObserver are tracking the same element and the callback of one\n // of them changes content dimensions of the observed target. Sometimes\n // this may result in notifications being blocked for the rest of observers.\n activeObservers.forEach(function (observer) {\n return observer.broadcastActive();\n });\n return activeObservers.length > 0;\n };\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\n ResizeObserverController.prototype.connect_ = function () {\n // Do nothing if running in a non-browser environment or if listeners\n // have been already added.\n if (!isBrowser || this.connected_) {\n return;\n }\n // Subscription to the \"Transitionend\" event is used as a workaround for\n // delayed transitions. This way it's possible to capture at least the\n // final state of an element.\n document.addEventListener('transitionend', this.onTransitionEnd_);\n window.addEventListener('resize', this.refresh);\n if (mutationObserverSupported) {\n this.mutationsObserver_ = new MutationObserver(this.refresh);\n this.mutationsObserver_.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n } else {\n document.addEventListener('DOMSubtreeModified', this.refresh);\n this.mutationEventsAdded_ = true;\n }\n this.connected_ = true;\n };\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\n ResizeObserverController.prototype.disconnect_ = function () {\n // Do nothing if running in a non-browser environment or if listeners\n // have been already removed.\n if (!isBrowser || !this.connected_) {\n return;\n }\n document.removeEventListener('transitionend', this.onTransitionEnd_);\n window.removeEventListener('resize', this.refresh);\n if (this.mutationsObserver_) {\n this.mutationsObserver_.disconnect();\n }\n if (this.mutationEventsAdded_) {\n document.removeEventListener('DOMSubtreeModified', this.refresh);\n }\n this.mutationsObserver_ = null;\n this.mutationEventsAdded_ = false;\n this.connected_ = false;\n };\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\n var _b = _a.propertyName,\n propertyName = _b === void 0 ? '' : _b;\n // Detect whether transition may affect dimensions of an element.\n var isReflowProperty = transitionKeys.some(function (key) {\n return !!~propertyName.indexOf(key);\n });\n if (isReflowProperty) {\n this.refresh();\n }\n };\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\n ResizeObserverController.getInstance = function () {\n if (!this.instance_) {\n this.instance_ = new ResizeObserverController();\n }\n return this.instance_;\n };\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\n ResizeObserverController.instance_ = null;\n return ResizeObserverController;\n}();\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\nvar defineConfigurable = function (target, props) {\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\n var key = _a[_i];\n Object.defineProperty(target, key, {\n value: props[key],\n enumerable: false,\n writable: false,\n configurable: true\n });\n }\n return target;\n};\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\nvar getWindowOf = function (target) {\n // Assume that the element is an instance of Node, which means that it\n // has the \"ownerDocument\" property from which we can retrieve a\n // corresponding global object.\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\n // Return the local global object if it's not possible extract one from\n // provided element.\n return ownerGlobal || global$1;\n};\n\n// Placeholder of an empty content rectangle.\nvar emptyRect = createRectInit(0, 0, 0, 0);\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\nfunction toFloat(value) {\n return parseFloat(value) || 0;\n}\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\nfunction getBordersSize(styles) {\n var positions = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n positions[_i - 1] = arguments[_i];\n }\n return positions.reduce(function (size, position) {\n var value = styles['border-' + position + '-width'];\n return size + toFloat(value);\n }, 0);\n}\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\nfunction getPaddings(styles) {\n var positions = ['top', 'right', 'bottom', 'left'];\n var paddings = {};\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\n var position = positions_1[_i];\n var value = styles['padding-' + position];\n paddings[position] = toFloat(value);\n }\n return paddings;\n}\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\nfunction getSVGContentRect(target) {\n var bbox = target.getBBox();\n return createRectInit(0, 0, bbox.width, bbox.height);\n}\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\nfunction getHTMLElementContentRect(target) {\n // Client width & height properties can't be\n // used exclusively as they provide rounded values.\n var clientWidth = target.clientWidth,\n clientHeight = target.clientHeight;\n // By this condition we can catch all non-replaced inline, hidden and\n // detached elements. Though elements with width & height properties less\n // than 0.5 will be discarded as well.\n //\n // Without it we would need to implement separate methods for each of\n // those cases and it's not possible to perform a precise and performance\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\n // gives wrong results for elements with width & height less than 0.5.\n if (!clientWidth && !clientHeight) {\n return emptyRect;\n }\n var styles = getWindowOf(target).getComputedStyle(target);\n var paddings = getPaddings(styles);\n var horizPad = paddings.left + paddings.right;\n var vertPad = paddings.top + paddings.bottom;\n // Computed styles of width & height are being used because they are the\n // only dimensions available to JS that contain non-rounded values. It could\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\n // affected by CSS transformations let alone paddings, borders and scroll bars.\n var width = toFloat(styles.width),\n height = toFloat(styles.height);\n // Width & height include paddings and borders when the 'border-box' box\n // model is applied (except for IE).\n if (styles.boxSizing === 'border-box') {\n // Following conditions are required to handle Internet Explorer which\n // doesn't include paddings and borders to computed CSS dimensions.\n //\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\n // properties then it's either IE, and thus we don't need to subtract\n // anything, or an element merely doesn't have paddings/borders styles.\n if (Math.round(width + horizPad) !== clientWidth) {\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\n }\n if (Math.round(height + vertPad) !== clientHeight) {\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\n }\n }\n // Following steps can't be applied to the document's root element as its\n // client[Width/Height] properties represent viewport area of the window.\n // Besides, it's as well not necessary as the itself neither has\n // rendered scroll bars nor it can be clipped.\n if (!isDocumentElement(target)) {\n // In some browsers (only in Firefox, actually) CSS width & height\n // include scroll bars size which can be removed at this step as scroll\n // bars are the only difference between rounded dimensions + paddings\n // and \"client\" properties, though that is not always true in Chrome.\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\n // Chrome has a rather weird rounding of \"client\" properties.\n // E.g. for an element with content width of 314.2px it sometimes gives\n // the client width of 315px and for the width of 314.7px it may give\n // 314px. And it doesn't happen all the time. So just ignore this delta\n // as a non-relevant.\n if (Math.abs(vertScrollbar) !== 1) {\n width -= vertScrollbar;\n }\n if (Math.abs(horizScrollbar) !== 1) {\n height -= horizScrollbar;\n }\n }\n return createRectInit(paddings.left, paddings.top, width, height);\n}\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\nvar isSVGGraphicsElement = function () {\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\n // interface.\n if (typeof SVGGraphicsElement !== 'undefined') {\n return function (target) {\n return target instanceof getWindowOf(target).SVGGraphicsElement;\n };\n }\n // If it's so, then check that element is at least an instance of the\n // SVGElement and that it has the \"getBBox\" method.\n // eslint-disable-next-line no-extra-parens\n return function (target) {\n return target instanceof getWindowOf(target).SVGElement && typeof target.getBBox === 'function';\n };\n}();\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\nfunction isDocumentElement(target) {\n return target === getWindowOf(target).document.documentElement;\n}\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\nfunction getContentRect(target) {\n if (!isBrowser) {\n return emptyRect;\n }\n if (isSVGGraphicsElement(target)) {\n return getSVGContentRect(target);\n }\n return getHTMLElementContentRect(target);\n}\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\nfunction createReadOnlyRect(_a) {\n var x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height;\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\n var rect = Object.create(Constr.prototype);\n // Rectangle's properties are not writable and non-enumerable.\n defineConfigurable(rect, {\n x: x,\n y: y,\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: height + y,\n left: x\n });\n return rect;\n}\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\nfunction createRectInit(x, y, width, height) {\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\nvar ResizeObservation = /** @class */function () {\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\n function ResizeObservation(target) {\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\n this.broadcastWidth = 0;\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\n this.broadcastHeight = 0;\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\n this.contentRect_ = createRectInit(0, 0, 0, 0);\n this.target = target;\n }\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\n ResizeObservation.prototype.isActive = function () {\n var rect = getContentRect(this.target);\n this.contentRect_ = rect;\n return rect.width !== this.broadcastWidth || rect.height !== this.broadcastHeight;\n };\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\n ResizeObservation.prototype.broadcastRect = function () {\n var rect = this.contentRect_;\n this.broadcastWidth = rect.width;\n this.broadcastHeight = rect.height;\n return rect;\n };\n return ResizeObservation;\n}();\nvar ResizeObserverEntry = /** @class */function () {\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\n function ResizeObserverEntry(target, rectInit) {\n var contentRect = createReadOnlyRect(rectInit);\n // According to the specification following properties are not writable\n // and are also not enumerable in the native implementation.\n //\n // Property accessors are not being used as they'd require to define a\n // private WeakMap storage which may cause memory leaks in browsers that\n // don't support this type of collections.\n defineConfigurable(this, {\n target: target,\n contentRect: contentRect\n });\n }\n return ResizeObserverEntry;\n}();\nvar ResizeObserverSPI = /** @class */function () {\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\n function ResizeObserverSPI(callback, controller, callbackCtx) {\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\n this.activeObservations_ = [];\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\n this.observations_ = new MapShim();\n if (typeof callback !== 'function') {\n throw new TypeError('The callback provided as parameter 1 is not a function.');\n }\n this.callback_ = callback;\n this.controller_ = controller;\n this.callbackCtx_ = callbackCtx;\n }\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\n ResizeObserverSPI.prototype.observe = function (target) {\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n }\n // Do nothing if current environment doesn't have the Element interface.\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\n return;\n }\n if (!(target instanceof getWindowOf(target).Element)) {\n throw new TypeError('parameter 1 is not of type \"Element\".');\n }\n var observations = this.observations_;\n // Do nothing if element is already being observed.\n if (observations.has(target)) {\n return;\n }\n observations.set(target, new ResizeObservation(target));\n this.controller_.addObserver(this);\n // Force the update of observations.\n this.controller_.refresh();\n };\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\n ResizeObserverSPI.prototype.unobserve = function (target) {\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n }\n // Do nothing if current environment doesn't have the Element interface.\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\n return;\n }\n if (!(target instanceof getWindowOf(target).Element)) {\n throw new TypeError('parameter 1 is not of type \"Element\".');\n }\n var observations = this.observations_;\n // Do nothing if element is not being observed.\n if (!observations.has(target)) {\n return;\n }\n observations.delete(target);\n if (!observations.size) {\n this.controller_.removeObserver(this);\n }\n };\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\n ResizeObserverSPI.prototype.disconnect = function () {\n this.clearActive();\n this.observations_.clear();\n this.controller_.removeObserver(this);\n };\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\n ResizeObserverSPI.prototype.gatherActive = function () {\n var _this = this;\n this.clearActive();\n this.observations_.forEach(function (observation) {\n if (observation.isActive()) {\n _this.activeObservations_.push(observation);\n }\n });\n };\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\n ResizeObserverSPI.prototype.broadcastActive = function () {\n // Do nothing if observer doesn't have active observations.\n if (!this.hasActive()) {\n return;\n }\n var ctx = this.callbackCtx_;\n // Create ResizeObserverEntry instance for every active observation.\n var entries = this.activeObservations_.map(function (observation) {\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\n });\n this.callback_.call(ctx, entries, ctx);\n this.clearActive();\n };\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\n ResizeObserverSPI.prototype.clearActive = function () {\n this.activeObservations_.splice(0);\n };\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\n ResizeObserverSPI.prototype.hasActive = function () {\n return this.activeObservations_.length > 0;\n };\n return ResizeObserverSPI;\n}();\n\n// Registry of internal observers. If WeakMap is not available use current shim\n// for the Map collection as it has all required methods and because WeakMap\n// can't be fully polyfilled anyway.\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\nvar ResizeObserver = /** @class */function () {\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\n function ResizeObserver(callback) {\n if (!(this instanceof ResizeObserver)) {\n throw new TypeError('Cannot call a class as a function.');\n }\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n }\n var controller = ResizeObserverController.getInstance();\n var observer = new ResizeObserverSPI(callback, controller, this);\n observers.set(this, observer);\n }\n return ResizeObserver;\n}();\n// Expose public methods of ResizeObserver.\n['observe', 'unobserve', 'disconnect'].forEach(function (method) {\n ResizeObserver.prototype[method] = function () {\n var _a;\n return (_a = observers.get(this))[method].apply(_a, arguments);\n };\n});\nvar index = function () {\n // Export existing implementation if available.\n if (typeof global$1.ResizeObserver !== 'undefined') {\n return global$1.ResizeObserver;\n }\n return ResizeObserver;\n}();\nexport default index;","var createWrap = require('./_createWrap'),\n flatRest = require('./_flatRest');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_REARG_FLAG = 256;\n\n/**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\nvar rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n});\n\nmodule.exports = rearg;\n","require(\"core-js/modules/es.regexp.flags.js\");\n/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;) if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done) if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done) if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n if (hasSet && a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done) if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;) if (a[i] !== b[i]) return false;\n return true;\n }\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n for (i = length; i-- !== 0;) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if ((error.message || '').match(/stack|recursion/i)) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};","const set = require('regenerate')(0x1107F);\nset.addRange(0x11000, 0x1104D).addRange(0x11052, 0x11075);\nmodule.exports = set;","const set = require('regenerate')(0xA92E);\nset.addRange(0x1000, 0x109F).addRange(0xA9E0, 0xA9FE).addRange(0xAA60, 0xAA7F);\nmodule.exports = set;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\nvar _react = require('react');\nvar _react2 = _interopRequireDefault(_react);\nvar _reactDom = require('react-dom');\nvar _reactDom2 = _interopRequireDefault(_reactDom);\nvar _propTypes = require('prop-types');\nvar _propTypes2 = _interopRequireDefault(_propTypes);\nvar _Context = require('./Context');\nvar _Content = require('./Content');\nvar _Content2 = _interopRequireDefault(_Content);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\nvar Frame = function (_Component) {\n _inherits(Frame, _Component);\n\n // React warns when you render directly into the body since browser extensions\n // also inject into the body and can mess up React. For this reason\n // initialContent is expected to have a div inside of the body\n // element that we render react into.\n function Frame(props, context) {\n _classCallCheck(this, Frame);\n var _this = _possibleConstructorReturn(this, (Frame.__proto__ || Object.getPrototypeOf(Frame)).call(this, props, context));\n _this.handleLoad = function () {\n _this.forceUpdate();\n };\n _this._isMounted = false;\n return _this;\n }\n _createClass(Frame, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this._isMounted = true;\n var doc = this.getDoc();\n if (doc && doc.readyState === 'complete') {\n this.forceUpdate();\n } else {\n this.node.addEventListener('load', this.handleLoad);\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._isMounted = false;\n this.node.removeEventListener('load', this.handleLoad);\n }\n }, {\n key: 'getDoc',\n value: function getDoc() {\n return this.node ? this.node.contentDocument : null; // eslint-disable-line\n }\n }, {\n key: 'getMountTarget',\n value: function getMountTarget() {\n var doc = this.getDoc();\n if (this.props.mountTarget) {\n return doc.querySelector(this.props.mountTarget);\n }\n return doc.body.children[0];\n }\n }, {\n key: 'renderFrameContents',\n value: function renderFrameContents() {\n if (!this._isMounted) {\n return null;\n }\n var doc = this.getDoc();\n if (!doc) {\n return null;\n }\n var contentDidMount = this.props.contentDidMount;\n var contentDidUpdate = this.props.contentDidUpdate;\n var win = doc.defaultView || doc.parentView;\n var contents = _react2.default.createElement(_Content2.default, {\n contentDidMount: contentDidMount,\n contentDidUpdate: contentDidUpdate\n }, _react2.default.createElement(_Context.FrameContextProvider, {\n value: {\n document: doc,\n window: win\n }\n }, _react2.default.createElement('div', {\n className: 'frame-content'\n }, this.props.children)));\n if (doc.body.children.length < 1) {\n doc.open('text/html', 'replace');\n doc.write(this.props.initialContent);\n doc.close();\n }\n var mountTarget = this.getMountTarget();\n return [_reactDom2.default.createPortal(this.props.head, this.getDoc().head), _reactDom2.default.createPortal(contents, mountTarget)];\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n var props = _extends({}, this.props, {\n children: undefined // The iframe isn't ready so we drop children from props here. #12, #17\n });\n\n delete props.head;\n delete props.initialContent;\n delete props.mountTarget;\n delete props.contentDidMount;\n delete props.contentDidUpdate;\n return _react2.default.createElement('iframe', _extends({}, props, {\n ref: function ref(node) {\n _this2.node = node;\n }\n }), this.renderFrameContents());\n }\n }]);\n return Frame;\n}(_react.Component);\nFrame.propTypes = {\n style: _propTypes2.default.object,\n // eslint-disable-line\n head: _propTypes2.default.node,\n initialContent: _propTypes2.default.string,\n mountTarget: _propTypes2.default.string,\n contentDidMount: _propTypes2.default.func,\n contentDidUpdate: _propTypes2.default.func,\n children: _propTypes2.default.oneOfType([_propTypes2.default.element, _propTypes2.default.arrayOf(_propTypes2.default.element)])\n};\nFrame.defaultProps = {\n style: {},\n head: null,\n children: undefined,\n mountTarget: undefined,\n contentDidMount: function contentDidMount() {},\n contentDidUpdate: function contentDidUpdate() {},\n initialContent: '
    '\n};\nexports.default = Frame;","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * Remove a prefix from a string. Return the input string if the given prefix\n * isn't found.\n */\n\nexport default function stripPrefix(str, prefix = ``) {\n if (!prefix) {\n return str\n }\n\n if (str === prefix) {\n return `/`\n }\n\n if (str.startsWith(`${prefix}/`)) {\n return str.slice(prefix.length)\n }\n\n return str\n}\n","const set = require('regenerate')();\nset.addRange(0x11600, 0x11644).addRange(0x11650, 0x11659);\nmodule.exports = set;","var baseClone = require('./_baseClone'),\n baseIteratee = require('./_baseIteratee');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\nfunction iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n}\n\nmodule.exports = iteratee;\n","// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n } catch (error) { /* empty */ }\n};\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.parsePath = parsePath;\n\nfunction parsePath(path) {\n var pathname = path || \"/\";\n var search = \"\";\n var hash = \"\";\n var hashIndex = pathname.indexOf(\"#\");\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf(\"?\");\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === \"?\" ? \"\" : search,\n hash: hash === \"#\" ? \"\" : hash\n };\n}","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","const set = require('regenerate')();\nset.addRange(0xA500, 0xA62B);\nmodule.exports = set;","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","const set = require('regenerate')(0xA95F);\nset.addRange(0xA930, 0xA953);\nmodule.exports = set;","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const set = require('regenerate')(0xAA, 0xBA, 0x2071, 0x207F, 0x2132, 0x214E, 0xA7D3);\nset.addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x2B8).addRange(0x2E0, 0x2E4).addRange(0x1D00, 0x1D25).addRange(0x1D2C, 0x1D5C).addRange(0x1D62, 0x1D65).addRange(0x1D6B, 0x1D77).addRange(0x1D79, 0x1DBE).addRange(0x1E00, 0x1EFF).addRange(0x2090, 0x209C).addRange(0x212A, 0x212B).addRange(0x2160, 0x2188).addRange(0x2C60, 0x2C7F).addRange(0xA722, 0xA787).addRange(0xA78B, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA7FF).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB64).addRange(0xAB66, 0xAB69).addRange(0xFB00, 0xFB06).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x1DF00, 0x1DF1E);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x14400, 0x14646);\nmodule.exports = set;","const set = require('regenerate')(0x16FE4);\nset.addRange(0x18B00, 0x18CD5);\nmodule.exports = set;","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","/*! https://mths.be/regenerate v1.4.2 by @mathias | MIT license */\n;\n(function (root) {\n // Detect free variables `exports`.\n var freeExports = typeof exports == 'object' && exports;\n\n // Detect free variable `module`.\n var freeModule = typeof module == 'object' && module && module.exports == freeExports && module;\n\n // Detect free variable `global`, from Node.js/io.js or Browserified code,\n // and use it as `root`.\n var freeGlobal = typeof global == 'object' && global;\n if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n root = freeGlobal;\n }\n\n /*--------------------------------------------------------------------------*/\n\n var ERRORS = {\n 'rangeOrder': 'A range\\u2019s `stop` value must be greater than or equal ' + 'to the `start` value.',\n 'codePointRange': 'Invalid code point value. Code points range from ' + 'U+000000 to U+10FFFF.'\n };\n\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-pairs\n var HIGH_SURROGATE_MIN = 0xD800;\n var HIGH_SURROGATE_MAX = 0xDBFF;\n var LOW_SURROGATE_MIN = 0xDC00;\n var LOW_SURROGATE_MAX = 0xDFFF;\n\n // In Regenerate output, `\\0` is never preceded by `\\` because we sort by\n // code point value, so let’s keep this regular expression simple.\n var regexNull = /\\\\x00([^0123456789]|$)/g;\n var object = {};\n var hasOwnProperty = object.hasOwnProperty;\n var extend = function (destination, source) {\n var key;\n for (key in source) {\n if (hasOwnProperty.call(source, key)) {\n destination[key] = source[key];\n }\n }\n return destination;\n };\n var forEach = function (array, callback) {\n var index = -1;\n var length = array.length;\n while (++index < length) {\n callback(array[index], index);\n }\n };\n var toString = object.toString;\n var isArray = function (value) {\n return toString.call(value) == '[object Array]';\n };\n var isNumber = function (value) {\n return typeof value == 'number' || toString.call(value) == '[object Number]';\n };\n\n // This assumes that `number` is a positive integer that `toString()`s nicely\n // (which is the case for all code point values).\n var zeroes = '0000';\n var pad = function (number, totalCharacters) {\n var string = String(number);\n return string.length < totalCharacters ? (zeroes + string).slice(-totalCharacters) : string;\n };\n var hex = function (number) {\n return Number(number).toString(16).toUpperCase();\n };\n var slice = [].slice;\n\n /*--------------------------------------------------------------------------*/\n\n var dataFromCodePoints = function (codePoints) {\n var index = -1;\n var length = codePoints.length;\n var max = length - 1;\n var result = [];\n var isStart = true;\n var tmp;\n var previous = 0;\n while (++index < length) {\n tmp = codePoints[index];\n if (isStart) {\n result.push(tmp);\n previous = tmp;\n isStart = false;\n } else {\n if (tmp == previous + 1) {\n if (index != max) {\n previous = tmp;\n continue;\n } else {\n isStart = true;\n result.push(tmp + 1);\n }\n } else {\n // End the previous range and start a new one.\n result.push(previous + 1, tmp);\n previous = tmp;\n }\n }\n }\n if (!isStart) {\n result.push(tmp + 1);\n }\n return result;\n };\n var dataRemove = function (data, codePoint) {\n // Iterate over the data per `(start, end)` pair.\n var index = 0;\n var start;\n var end;\n var length = data.length;\n while (index < length) {\n start = data[index];\n end = data[index + 1];\n if (codePoint >= start && codePoint < end) {\n // Modify this pair.\n if (codePoint == start) {\n if (end == start + 1) {\n // Just remove `start` and `end`.\n data.splice(index, 2);\n return data;\n } else {\n // Just replace `start` with a new value.\n data[index] = codePoint + 1;\n return data;\n }\n } else if (codePoint == end - 1) {\n // Just replace `end` with a new value.\n data[index + 1] = codePoint;\n return data;\n } else {\n // Replace `[start, end]` with `[startA, endA, startB, endB]`.\n data.splice(index, 2, start, codePoint, codePoint + 1, end);\n return data;\n }\n }\n index += 2;\n }\n return data;\n };\n var dataRemoveRange = function (data, rangeStart, rangeEnd) {\n if (rangeEnd < rangeStart) {\n throw Error(ERRORS.rangeOrder);\n }\n // Iterate over the data per `(start, end)` pair.\n var index = 0;\n var start;\n var end;\n while (index < data.length) {\n start = data[index];\n end = data[index + 1] - 1; // Note: the `- 1` makes `end` inclusive.\n\n // Exit as soon as no more matching pairs can be found.\n if (start > rangeEnd) {\n return data;\n }\n\n // Check if this range pair is equal to, or forms a subset of, the range\n // to be removed.\n // E.g. we have `[0, 11, 40, 51]` and want to remove 0-10 → `[40, 51]`.\n // E.g. we have `[40, 51]` and want to remove 0-100 → `[]`.\n if (rangeStart <= start && rangeEnd >= end) {\n // Remove this pair.\n data.splice(index, 2);\n continue;\n }\n\n // Check if both `rangeStart` and `rangeEnd` are within the bounds of\n // this pair.\n // E.g. we have `[0, 11]` and want to remove 4-6 → `[0, 4, 7, 11]`.\n if (rangeStart >= start && rangeEnd < end) {\n if (rangeStart == start) {\n // Replace `[start, end]` with `[startB, endB]`.\n data[index] = rangeEnd + 1;\n data[index + 1] = end + 1;\n return data;\n }\n // Replace `[start, end]` with `[startA, endA, startB, endB]`.\n data.splice(index, 2, start, rangeStart, rangeEnd + 1, end + 1);\n return data;\n }\n\n // Check if only `rangeStart` is within the bounds of this pair.\n // E.g. we have `[0, 11]` and want to remove 4-20 → `[0, 4]`.\n if (rangeStart >= start && rangeStart <= end) {\n // Replace `end` with `rangeStart`.\n data[index + 1] = rangeStart;\n // Note: we cannot `return` just yet, in case any following pairs still\n // contain matching code points.\n // E.g. we have `[0, 11, 14, 31]` and want to remove 4-20\n // → `[0, 4, 21, 31]`.\n }\n\n // Check if only `rangeEnd` is within the bounds of this pair.\n // E.g. we have `[14, 31]` and want to remove 4-20 → `[21, 31]`.\n else if (rangeEnd >= start && rangeEnd <= end) {\n // Just replace `start`.\n data[index] = rangeEnd + 1;\n return data;\n }\n index += 2;\n }\n return data;\n };\n var dataAdd = function (data, codePoint) {\n // Iterate over the data per `(start, end)` pair.\n var index = 0;\n var start;\n var end;\n var lastIndex = null;\n var length = data.length;\n if (codePoint < 0x0 || codePoint > 0x10FFFF) {\n throw RangeError(ERRORS.codePointRange);\n }\n while (index < length) {\n start = data[index];\n end = data[index + 1];\n\n // Check if the code point is already in the set.\n if (codePoint >= start && codePoint < end) {\n return data;\n }\n if (codePoint == start - 1) {\n // Just replace `start` with a new value.\n data[index] = codePoint;\n return data;\n }\n\n // At this point, if `start` is `greater` than `codePoint`, insert a new\n // `[start, end]` pair before the current pair, or after the current pair\n // if there is a known `lastIndex`.\n if (start > codePoint) {\n data.splice(lastIndex != null ? lastIndex + 2 : 0, 0, codePoint, codePoint + 1);\n return data;\n }\n if (codePoint == end) {\n // Check if adding this code point causes two separate ranges to become\n // a single range, e.g. `dataAdd([0, 4, 5, 10], 4)` → `[0, 10]`.\n if (codePoint + 1 == data[index + 2]) {\n data.splice(index, 4, start, data[index + 3]);\n return data;\n }\n // Else, just replace `end` with a new value.\n data[index + 1] = codePoint + 1;\n return data;\n }\n lastIndex = index;\n index += 2;\n }\n // The loop has finished; add the new pair to the end of the data set.\n data.push(codePoint, codePoint + 1);\n return data;\n };\n var dataAddData = function (dataA, dataB) {\n // Iterate over the data per `(start, end)` pair.\n var index = 0;\n var start;\n var end;\n var data = dataA.slice();\n var length = dataB.length;\n while (index < length) {\n start = dataB[index];\n end = dataB[index + 1] - 1;\n if (start == end) {\n data = dataAdd(data, start);\n } else {\n data = dataAddRange(data, start, end);\n }\n index += 2;\n }\n return data;\n };\n var dataRemoveData = function (dataA, dataB) {\n // Iterate over the data per `(start, end)` pair.\n var index = 0;\n var start;\n var end;\n var data = dataA.slice();\n var length = dataB.length;\n while (index < length) {\n start = dataB[index];\n end = dataB[index + 1] - 1;\n if (start == end) {\n data = dataRemove(data, start);\n } else {\n data = dataRemoveRange(data, start, end);\n }\n index += 2;\n }\n return data;\n };\n var dataAddRange = function (data, rangeStart, rangeEnd) {\n if (rangeEnd < rangeStart) {\n throw Error(ERRORS.rangeOrder);\n }\n if (rangeStart < 0x0 || rangeStart > 0x10FFFF || rangeEnd < 0x0 || rangeEnd > 0x10FFFF) {\n throw RangeError(ERRORS.codePointRange);\n }\n // Iterate over the data per `(start, end)` pair.\n var index = 0;\n var start;\n var end;\n var added = false;\n var length = data.length;\n while (index < length) {\n start = data[index];\n end = data[index + 1];\n if (added) {\n // The range has already been added to the set; at this point, we just\n // need to get rid of the following ranges in case they overlap.\n\n // Check if this range can be combined with the previous range.\n if (start == rangeEnd + 1) {\n data.splice(index - 1, 2);\n return data;\n }\n\n // Exit as soon as no more possibly overlapping pairs can be found.\n if (start > rangeEnd) {\n return data;\n }\n\n // E.g. `[0, 11, 12, 16]` and we’ve added 5-15, so we now have\n // `[0, 16, 12, 16]`. Remove the `12,16` part, as it lies within the\n // `0,16` range that was previously added.\n if (start >= rangeStart && start <= rangeEnd) {\n // `start` lies within the range that was previously added.\n\n if (end > rangeStart && end - 1 <= rangeEnd) {\n // `end` lies within the range that was previously added as well,\n // so remove this pair.\n data.splice(index, 2);\n index -= 2;\n // Note: we cannot `return` just yet, as there may still be other\n // overlapping pairs.\n } else {\n // `start` lies within the range that was previously added, but\n // `end` doesn’t. E.g. `[0, 11, 12, 31]` and we’ve added 5-15, so\n // now we have `[0, 16, 12, 31]`. This must be written as `[0, 31]`.\n // Remove the previously added `end` and the current `start`.\n data.splice(index - 1, 2);\n index -= 2;\n }\n\n // Note: we cannot return yet.\n }\n } else if (start == rangeEnd + 1 || start == rangeEnd) {\n data[index] = rangeStart;\n return data;\n }\n\n // Check if a new pair must be inserted *before* the current one.\n else if (start > rangeEnd) {\n data.splice(index, 0, rangeStart, rangeEnd + 1);\n return data;\n } else if (rangeStart >= start && rangeStart < end && rangeEnd + 1 <= end) {\n // The new range lies entirely within an existing range pair. No action\n // needed.\n return data;\n } else if (\n // E.g. `[0, 11]` and you add 5-15 → `[0, 16]`.\n rangeStart >= start && rangeStart < end ||\n // E.g. `[0, 3]` and you add 3-6 → `[0, 7]`.\n end == rangeStart) {\n // Replace `end` with the new value.\n data[index + 1] = rangeEnd + 1;\n // Make sure the next range pair doesn’t overlap, e.g. `[0, 11, 12, 14]`\n // and you add 5-15 → `[0, 16]`, i.e. remove the `12,14` part.\n added = true;\n // Note: we cannot `return` just yet.\n } else if (rangeStart <= start && rangeEnd + 1 >= end) {\n // The new range is a superset of the old range.\n data[index] = rangeStart;\n data[index + 1] = rangeEnd + 1;\n added = true;\n }\n index += 2;\n }\n // The loop has finished without doing anything; add the new pair to the end\n // of the data set.\n if (!added) {\n data.push(rangeStart, rangeEnd + 1);\n }\n return data;\n };\n var dataContains = function (data, codePoint) {\n var index = 0;\n var length = data.length;\n // Exit early if `codePoint` is not within `data`’s overall range.\n var start = data[index];\n var end = data[length - 1];\n if (length >= 2) {\n if (codePoint < start || codePoint > end) {\n return false;\n }\n }\n // Iterate over the data per `(start, end)` pair.\n while (index < length) {\n start = data[index];\n end = data[index + 1];\n if (codePoint >= start && codePoint < end) {\n return true;\n }\n index += 2;\n }\n return false;\n };\n var dataIntersection = function (data, codePoints) {\n var index = 0;\n var length = codePoints.length;\n var codePoint;\n var result = [];\n while (index < length) {\n codePoint = codePoints[index];\n if (dataContains(data, codePoint)) {\n result.push(codePoint);\n }\n ++index;\n }\n return dataFromCodePoints(result);\n };\n var dataIsEmpty = function (data) {\n return !data.length;\n };\n var dataIsSingleton = function (data) {\n // Check if the set only represents a single code point.\n return data.length == 2 && data[0] + 1 == data[1];\n };\n var dataToArray = function (data) {\n // Iterate over the data per `(start, end)` pair.\n var index = 0;\n var start;\n var end;\n var result = [];\n var length = data.length;\n while (index < length) {\n start = data[index];\n end = data[index + 1];\n while (start < end) {\n result.push(start);\n ++start;\n }\n index += 2;\n }\n return result;\n };\n\n /*--------------------------------------------------------------------------*/\n\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n var floor = Math.floor;\n var highSurrogate = function (codePoint) {\n return parseInt(floor((codePoint - 0x10000) / 0x400) + HIGH_SURROGATE_MIN, 10);\n };\n var lowSurrogate = function (codePoint) {\n return parseInt((codePoint - 0x10000) % 0x400 + LOW_SURROGATE_MIN, 10);\n };\n var stringFromCharCode = String.fromCharCode;\n var codePointToString = function (codePoint) {\n var string;\n // https://mathiasbynens.be/notes/javascript-escapes#single\n // Note: the `\\b` escape sequence for U+0008 BACKSPACE in strings has a\n // different meaning in regular expressions (word boundary), so it cannot\n // be used here.\n if (codePoint == 0x09) {\n string = '\\\\t';\n }\n // Note: IE < 9 treats `'\\v'` as `'v'`, so avoid using it.\n // else if (codePoint == 0x0B) {\n // \tstring = '\\\\v';\n // }\n else if (codePoint == 0x0A) {\n string = '\\\\n';\n } else if (codePoint == 0x0C) {\n string = '\\\\f';\n } else if (codePoint == 0x0D) {\n string = '\\\\r';\n } else if (codePoint == 0x2D) {\n // https://mathiasbynens.be/notes/javascript-escapes#hexadecimal\n // Note: `-` (U+002D HYPHEN-MINUS) is escaped in this way rather\n // than by backslash-escaping, in case the output is used outside\n // of a character class in a `u` RegExp. /\\-/u throws, but\n // /\\x2D/u is fine.\n string = '\\\\x2D';\n } else if (codePoint == 0x5C) {\n string = '\\\\\\\\';\n } else if (codePoint == 0x24 || codePoint >= 0x28 && codePoint <= 0x2B || codePoint == 0x2E || codePoint == 0x2F || codePoint == 0x3F || codePoint >= 0x5B && codePoint <= 0x5E || codePoint >= 0x7B && codePoint <= 0x7D) {\n // The code point maps to an unsafe printable ASCII character;\n // backslash-escape it. Here’s the list of those symbols:\n //\n // $()*+./?[\\]^{|}\n //\n // This matches SyntaxCharacters as well as `/` (U+002F SOLIDUS).\n // https://tc39.github.io/ecma262/#prod-SyntaxCharacter\n string = '\\\\' + stringFromCharCode(codePoint);\n } else if (codePoint >= 0x20 && codePoint <= 0x7E) {\n // The code point maps to one of these printable ASCII symbols\n // (including the space character):\n //\n // !\"#%&',/0123456789:;<=>@ABCDEFGHIJKLMNO\n // PQRSTUVWXYZ_`abcdefghijklmnopqrstuvwxyz~\n //\n // These can safely be used directly.\n string = stringFromCharCode(codePoint);\n } else if (codePoint <= 0xFF) {\n string = '\\\\x' + pad(hex(codePoint), 2);\n } else {\n // `codePoint <= 0xFFFF` holds true.\n // https://mathiasbynens.be/notes/javascript-escapes#unicode\n string = '\\\\u' + pad(hex(codePoint), 4);\n }\n\n // There’s no need to account for astral symbols / surrogate pairs here,\n // since `codePointToString` is private and only used for BMP code points.\n // But if that’s what you need, just add an `else` block with this code:\n //\n // string = '\\\\u' + pad(hex(highSurrogate(codePoint)), 4)\n // \t+ '\\\\u' + pad(hex(lowSurrogate(codePoint)), 4);\n\n return string;\n };\n var codePointToStringUnicode = function (codePoint) {\n if (codePoint <= 0xFFFF) {\n return codePointToString(codePoint);\n }\n return '\\\\u{' + codePoint.toString(16).toUpperCase() + '}';\n };\n var symbolToCodePoint = function (symbol) {\n var length = symbol.length;\n var first = symbol.charCodeAt(0);\n var second;\n if (first >= HIGH_SURROGATE_MIN && first <= HIGH_SURROGATE_MAX && length > 1 // There is a next code unit.\n ) {\n // `first` is a high surrogate, and there is a next character. Assume\n // it’s a low surrogate (else it’s invalid usage of Regenerate anyway).\n second = symbol.charCodeAt(1);\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n return (first - HIGH_SURROGATE_MIN) * 0x400 + second - LOW_SURROGATE_MIN + 0x10000;\n }\n return first;\n };\n var createBMPCharacterClasses = function (data) {\n // Iterate over the data per `(start, end)` pair.\n var result = '';\n var index = 0;\n var start;\n var end;\n var length = data.length;\n if (dataIsSingleton(data)) {\n return codePointToString(data[0]);\n }\n while (index < length) {\n start = data[index];\n end = data[index + 1] - 1; // Note: the `- 1` makes `end` inclusive.\n if (start == end) {\n result += codePointToString(start);\n } else if (start + 1 == end) {\n result += codePointToString(start) + codePointToString(end);\n } else {\n result += codePointToString(start) + '-' + codePointToString(end);\n }\n index += 2;\n }\n return '[' + result + ']';\n };\n var createUnicodeCharacterClasses = function (data) {\n // Iterate over the data per `(start, end)` pair.\n var result = '';\n var index = 0;\n var start;\n var end;\n var length = data.length;\n if (dataIsSingleton(data)) {\n return codePointToStringUnicode(data[0]);\n }\n while (index < length) {\n start = data[index];\n end = data[index + 1] - 1; // Note: the `- 1` makes `end` inclusive.\n if (start == end) {\n result += codePointToStringUnicode(start);\n } else if (start + 1 == end) {\n result += codePointToStringUnicode(start) + codePointToStringUnicode(end);\n } else {\n result += codePointToStringUnicode(start) + '-' + codePointToStringUnicode(end);\n }\n index += 2;\n }\n return '[' + result + ']';\n };\n var splitAtBMP = function (data) {\n // Iterate over the data per `(start, end)` pair.\n var loneHighSurrogates = [];\n var loneLowSurrogates = [];\n var bmp = [];\n var astral = [];\n var index = 0;\n var start;\n var end;\n var length = data.length;\n while (index < length) {\n start = data[index];\n end = data[index + 1] - 1; // Note: the `- 1` makes `end` inclusive.\n\n if (start < HIGH_SURROGATE_MIN) {\n // The range starts and ends before the high surrogate range.\n // E.g. (0, 0x10).\n if (end < HIGH_SURROGATE_MIN) {\n bmp.push(start, end + 1);\n }\n\n // The range starts before the high surrogate range and ends within it.\n // E.g. (0, 0xD855).\n if (end >= HIGH_SURROGATE_MIN && end <= HIGH_SURROGATE_MAX) {\n bmp.push(start, HIGH_SURROGATE_MIN);\n loneHighSurrogates.push(HIGH_SURROGATE_MIN, end + 1);\n }\n\n // The range starts before the high surrogate range and ends in the low\n // surrogate range. E.g. (0, 0xDCFF).\n if (end >= LOW_SURROGATE_MIN && end <= LOW_SURROGATE_MAX) {\n bmp.push(start, HIGH_SURROGATE_MIN);\n loneHighSurrogates.push(HIGH_SURROGATE_MIN, HIGH_SURROGATE_MAX + 1);\n loneLowSurrogates.push(LOW_SURROGATE_MIN, end + 1);\n }\n\n // The range starts before the high surrogate range and ends after the\n // low surrogate range. E.g. (0, 0x10FFFF).\n if (end > LOW_SURROGATE_MAX) {\n bmp.push(start, HIGH_SURROGATE_MIN);\n loneHighSurrogates.push(HIGH_SURROGATE_MIN, HIGH_SURROGATE_MAX + 1);\n loneLowSurrogates.push(LOW_SURROGATE_MIN, LOW_SURROGATE_MAX + 1);\n if (end <= 0xFFFF) {\n bmp.push(LOW_SURROGATE_MAX + 1, end + 1);\n } else {\n bmp.push(LOW_SURROGATE_MAX + 1, 0xFFFF + 1);\n astral.push(0xFFFF + 1, end + 1);\n }\n }\n } else if (start >= HIGH_SURROGATE_MIN && start <= HIGH_SURROGATE_MAX) {\n // The range starts and ends in the high surrogate range.\n // E.g. (0xD855, 0xD866).\n if (end >= HIGH_SURROGATE_MIN && end <= HIGH_SURROGATE_MAX) {\n loneHighSurrogates.push(start, end + 1);\n }\n\n // The range starts in the high surrogate range and ends in the low\n // surrogate range. E.g. (0xD855, 0xDCFF).\n if (end >= LOW_SURROGATE_MIN && end <= LOW_SURROGATE_MAX) {\n loneHighSurrogates.push(start, HIGH_SURROGATE_MAX + 1);\n loneLowSurrogates.push(LOW_SURROGATE_MIN, end + 1);\n }\n\n // The range starts in the high surrogate range and ends after the low\n // surrogate range. E.g. (0xD855, 0x10FFFF).\n if (end > LOW_SURROGATE_MAX) {\n loneHighSurrogates.push(start, HIGH_SURROGATE_MAX + 1);\n loneLowSurrogates.push(LOW_SURROGATE_MIN, LOW_SURROGATE_MAX + 1);\n if (end <= 0xFFFF) {\n bmp.push(LOW_SURROGATE_MAX + 1, end + 1);\n } else {\n bmp.push(LOW_SURROGATE_MAX + 1, 0xFFFF + 1);\n astral.push(0xFFFF + 1, end + 1);\n }\n }\n } else if (start >= LOW_SURROGATE_MIN && start <= LOW_SURROGATE_MAX) {\n // The range starts and ends in the low surrogate range.\n // E.g. (0xDCFF, 0xDDFF).\n if (end >= LOW_SURROGATE_MIN && end <= LOW_SURROGATE_MAX) {\n loneLowSurrogates.push(start, end + 1);\n }\n\n // The range starts in the low surrogate range and ends after the low\n // surrogate range. E.g. (0xDCFF, 0x10FFFF).\n if (end > LOW_SURROGATE_MAX) {\n loneLowSurrogates.push(start, LOW_SURROGATE_MAX + 1);\n if (end <= 0xFFFF) {\n bmp.push(LOW_SURROGATE_MAX + 1, end + 1);\n } else {\n bmp.push(LOW_SURROGATE_MAX + 1, 0xFFFF + 1);\n astral.push(0xFFFF + 1, end + 1);\n }\n }\n } else if (start > LOW_SURROGATE_MAX && start <= 0xFFFF) {\n // The range starts and ends after the low surrogate range.\n // E.g. (0xFFAA, 0x10FFFF).\n if (end <= 0xFFFF) {\n bmp.push(start, end + 1);\n } else {\n bmp.push(start, 0xFFFF + 1);\n astral.push(0xFFFF + 1, end + 1);\n }\n } else {\n // The range starts and ends in the astral range.\n astral.push(start, end + 1);\n }\n index += 2;\n }\n return {\n 'loneHighSurrogates': loneHighSurrogates,\n 'loneLowSurrogates': loneLowSurrogates,\n 'bmp': bmp,\n 'astral': astral\n };\n };\n var optimizeSurrogateMappings = function (surrogateMappings) {\n var result = [];\n var tmpLow = [];\n var addLow = false;\n var mapping;\n var nextMapping;\n var highSurrogates;\n var lowSurrogates;\n var nextHighSurrogates;\n var nextLowSurrogates;\n var index = -1;\n var length = surrogateMappings.length;\n while (++index < length) {\n mapping = surrogateMappings[index];\n nextMapping = surrogateMappings[index + 1];\n if (!nextMapping) {\n result.push(mapping);\n continue;\n }\n highSurrogates = mapping[0];\n lowSurrogates = mapping[1];\n nextHighSurrogates = nextMapping[0];\n nextLowSurrogates = nextMapping[1];\n\n // Check for identical high surrogate ranges.\n tmpLow = lowSurrogates;\n while (nextHighSurrogates && highSurrogates[0] == nextHighSurrogates[0] && highSurrogates[1] == nextHighSurrogates[1]) {\n // Merge with the next item.\n if (dataIsSingleton(nextLowSurrogates)) {\n tmpLow = dataAdd(tmpLow, nextLowSurrogates[0]);\n } else {\n tmpLow = dataAddRange(tmpLow, nextLowSurrogates[0], nextLowSurrogates[1] - 1);\n }\n ++index;\n mapping = surrogateMappings[index];\n highSurrogates = mapping[0];\n lowSurrogates = mapping[1];\n nextMapping = surrogateMappings[index + 1];\n nextHighSurrogates = nextMapping && nextMapping[0];\n nextLowSurrogates = nextMapping && nextMapping[1];\n addLow = true;\n }\n result.push([highSurrogates, addLow ? tmpLow : lowSurrogates]);\n addLow = false;\n }\n return optimizeByLowSurrogates(result);\n };\n var optimizeByLowSurrogates = function (surrogateMappings) {\n if (surrogateMappings.length == 1) {\n return surrogateMappings;\n }\n var index = -1;\n var innerIndex = -1;\n while (++index < surrogateMappings.length) {\n var mapping = surrogateMappings[index];\n var lowSurrogates = mapping[1];\n var lowSurrogateStart = lowSurrogates[0];\n var lowSurrogateEnd = lowSurrogates[1];\n innerIndex = index; // Note: the loop starts at the next index.\n while (++innerIndex < surrogateMappings.length) {\n var otherMapping = surrogateMappings[innerIndex];\n var otherLowSurrogates = otherMapping[1];\n var otherLowSurrogateStart = otherLowSurrogates[0];\n var otherLowSurrogateEnd = otherLowSurrogates[1];\n if (lowSurrogateStart == otherLowSurrogateStart && lowSurrogateEnd == otherLowSurrogateEnd && otherLowSurrogates.length === 2) {\n // Add the code points in the other item to this one.\n if (dataIsSingleton(otherMapping[0])) {\n mapping[0] = dataAdd(mapping[0], otherMapping[0][0]);\n } else {\n mapping[0] = dataAddRange(mapping[0], otherMapping[0][0], otherMapping[0][1] - 1);\n }\n // Remove the other, now redundant, item.\n surrogateMappings.splice(innerIndex, 1);\n --innerIndex;\n }\n }\n }\n return surrogateMappings;\n };\n var surrogateSet = function (data) {\n // Exit early if `data` is an empty set.\n if (!data.length) {\n return [];\n }\n\n // Iterate over the data per `(start, end)` pair.\n var index = 0;\n var start;\n var end;\n var startHigh;\n var startLow;\n var endHigh;\n var endLow;\n var surrogateMappings = [];\n var length = data.length;\n while (index < length) {\n start = data[index];\n end = data[index + 1] - 1;\n startHigh = highSurrogate(start);\n startLow = lowSurrogate(start);\n endHigh = highSurrogate(end);\n endLow = lowSurrogate(end);\n var startsWithLowestLowSurrogate = startLow == LOW_SURROGATE_MIN;\n var endsWithHighestLowSurrogate = endLow == LOW_SURROGATE_MAX;\n var complete = false;\n\n // Append the previous high-surrogate-to-low-surrogate mappings.\n // Step 1: `(startHigh, startLow)` to `(startHigh, LOW_SURROGATE_MAX)`.\n if (startHigh == endHigh || startsWithLowestLowSurrogate && endsWithHighestLowSurrogate) {\n surrogateMappings.push([[startHigh, endHigh + 1], [startLow, endLow + 1]]);\n complete = true;\n } else {\n surrogateMappings.push([[startHigh, startHigh + 1], [startLow, LOW_SURROGATE_MAX + 1]]);\n }\n\n // Step 2: `(startHigh + 1, LOW_SURROGATE_MIN)` to\n // `(endHigh - 1, LOW_SURROGATE_MAX)`.\n if (!complete && startHigh + 1 < endHigh) {\n if (endsWithHighestLowSurrogate) {\n // Combine step 2 and step 3.\n surrogateMappings.push([[startHigh + 1, endHigh + 1], [LOW_SURROGATE_MIN, endLow + 1]]);\n complete = true;\n } else {\n surrogateMappings.push([[startHigh + 1, endHigh], [LOW_SURROGATE_MIN, LOW_SURROGATE_MAX + 1]]);\n }\n }\n\n // Step 3. `(endHigh, LOW_SURROGATE_MIN)` to `(endHigh, endLow)`.\n if (!complete) {\n surrogateMappings.push([[endHigh, endHigh + 1], [LOW_SURROGATE_MIN, endLow + 1]]);\n }\n index += 2;\n }\n\n // The format of `surrogateMappings` is as follows:\n //\n // [ surrogateMapping1, surrogateMapping2 ]\n //\n // i.e.:\n //\n // [\n // [ highSurrogates1, lowSurrogates1 ],\n // [ highSurrogates2, lowSurrogates2 ]\n // ]\n return optimizeSurrogateMappings(surrogateMappings);\n };\n var createSurrogateCharacterClasses = function (surrogateMappings) {\n var result = [];\n forEach(surrogateMappings, function (surrogateMapping) {\n var highSurrogates = surrogateMapping[0];\n var lowSurrogates = surrogateMapping[1];\n result.push(createBMPCharacterClasses(highSurrogates) + createBMPCharacterClasses(lowSurrogates));\n });\n return result.join('|');\n };\n var createCharacterClassesFromData = function (data, bmpOnly, hasUnicodeFlag) {\n if (hasUnicodeFlag) {\n return createUnicodeCharacterClasses(data);\n }\n var result = [];\n var parts = splitAtBMP(data);\n var loneHighSurrogates = parts.loneHighSurrogates;\n var loneLowSurrogates = parts.loneLowSurrogates;\n var bmp = parts.bmp;\n var astral = parts.astral;\n var hasLoneHighSurrogates = !dataIsEmpty(loneHighSurrogates);\n var hasLoneLowSurrogates = !dataIsEmpty(loneLowSurrogates);\n var surrogateMappings = surrogateSet(astral);\n if (bmpOnly) {\n bmp = dataAddData(bmp, loneHighSurrogates);\n hasLoneHighSurrogates = false;\n bmp = dataAddData(bmp, loneLowSurrogates);\n hasLoneLowSurrogates = false;\n }\n if (!dataIsEmpty(bmp)) {\n // The data set contains BMP code points that are not high surrogates\n // needed for astral code points in the set.\n result.push(createBMPCharacterClasses(bmp));\n }\n if (surrogateMappings.length) {\n // The data set contains astral code points; append character classes\n // based on their surrogate pairs.\n result.push(createSurrogateCharacterClasses(surrogateMappings));\n }\n // https://gist.github.com/mathiasbynens/bbe7f870208abcfec860\n if (hasLoneHighSurrogates) {\n result.push(createBMPCharacterClasses(loneHighSurrogates) +\n // Make sure the high surrogates aren’t part of a surrogate pair.\n '(?![\\\\uDC00-\\\\uDFFF])');\n }\n if (hasLoneLowSurrogates) {\n result.push(\n // It is not possible to accurately assert the low surrogates aren’t\n // part of a surrogate pair, since JavaScript regular expressions do\n // not support lookbehind.\n '(?:[^\\\\uD800-\\\\uDBFF]|^)' + createBMPCharacterClasses(loneLowSurrogates));\n }\n return result.join('|');\n };\n\n /*--------------------------------------------------------------------------*/\n\n // `regenerate` can be used as a constructor (and new methods can be added to\n // its prototype) but also as a regular function, the latter of which is the\n // documented and most common usage. For that reason, it’s not capitalized.\n var regenerate = function (value) {\n if (arguments.length > 1) {\n value = slice.call(arguments);\n }\n if (this instanceof regenerate) {\n this.data = [];\n return value ? this.add(value) : this;\n }\n return new regenerate().add(value);\n };\n regenerate.version = '1.4.2';\n var proto = regenerate.prototype;\n extend(proto, {\n 'add': function (value) {\n var $this = this;\n if (value == null) {\n return $this;\n }\n if (value instanceof regenerate) {\n // Allow passing other Regenerate instances.\n $this.data = dataAddData($this.data, value.data);\n return $this;\n }\n if (arguments.length > 1) {\n value = slice.call(arguments);\n }\n if (isArray(value)) {\n forEach(value, function (item) {\n $this.add(item);\n });\n return $this;\n }\n $this.data = dataAdd($this.data, isNumber(value) ? value : symbolToCodePoint(value));\n return $this;\n },\n 'remove': function (value) {\n var $this = this;\n if (value == null) {\n return $this;\n }\n if (value instanceof regenerate) {\n // Allow passing other Regenerate instances.\n $this.data = dataRemoveData($this.data, value.data);\n return $this;\n }\n if (arguments.length > 1) {\n value = slice.call(arguments);\n }\n if (isArray(value)) {\n forEach(value, function (item) {\n $this.remove(item);\n });\n return $this;\n }\n $this.data = dataRemove($this.data, isNumber(value) ? value : symbolToCodePoint(value));\n return $this;\n },\n 'addRange': function (start, end) {\n var $this = this;\n $this.data = dataAddRange($this.data, isNumber(start) ? start : symbolToCodePoint(start), isNumber(end) ? end : symbolToCodePoint(end));\n return $this;\n },\n 'removeRange': function (start, end) {\n var $this = this;\n var startCodePoint = isNumber(start) ? start : symbolToCodePoint(start);\n var endCodePoint = isNumber(end) ? end : symbolToCodePoint(end);\n $this.data = dataRemoveRange($this.data, startCodePoint, endCodePoint);\n return $this;\n },\n 'intersection': function (argument) {\n var $this = this;\n // Allow passing other Regenerate instances.\n // TODO: Optimize this by writing and using `dataIntersectionData()`.\n var array = argument instanceof regenerate ? dataToArray(argument.data) : argument;\n $this.data = dataIntersection($this.data, array);\n return $this;\n },\n 'contains': function (codePoint) {\n return dataContains(this.data, isNumber(codePoint) ? codePoint : symbolToCodePoint(codePoint));\n },\n 'clone': function () {\n var set = new regenerate();\n set.data = this.data.slice(0);\n return set;\n },\n 'toString': function (options) {\n var result = createCharacterClassesFromData(this.data, options ? options.bmpOnly : false, options ? options.hasUnicodeFlag : false);\n if (!result) {\n // For an empty set, return something that can be inserted `/here/` to\n // form a valid regular expression. Avoid `(?:)` since that matches the\n // empty string.\n return '[]';\n }\n // Use `\\0` instead of `\\x00` where possible.\n return result.replace(regexNull, '\\\\0$1');\n },\n 'toRegExp': function (flags) {\n var pattern = this.toString(flags && flags.indexOf('u') != -1 ? {\n 'hasUnicodeFlag': true\n } : null);\n return RegExp(pattern, flags || '');\n },\n 'valueOf': function () {\n // Note: `valueOf` is aliased as `toArray`.\n return dataToArray(this.data);\n }\n });\n proto.toArray = proto.valueOf;\n\n // Some AMD build optimizers, like r.js, check for specific condition patterns\n // like the following:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n define(function () {\n return regenerate;\n });\n } else if (freeExports && !freeExports.nodeType) {\n if (freeModule) {\n // in Node.js, io.js, or RingoJS v0.8.0+\n freeModule.exports = regenerate;\n } else {\n // in Narwhal or RingoJS v0.7.0-\n freeExports.regenerate = regenerate;\n }\n } else {\n // in Rhino or a web browser\n root.regenerate = regenerate;\n }\n})(this);","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n","const set = require('regenerate')(0x60C, 0x61B, 0x61F, 0x640, 0x6D4);\nset.addRange(0x10D00, 0x10D27).addRange(0x10D30, 0x10D39);\nmodule.exports = set;","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","const set = require('regenerate')();\nset.addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x108FB, 0x108FF);\nmodule.exports = set;","var convert = require('./convert'),\n func = convert('get', require('../get'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","\"use strict\";\n\nexports.registerServiceWorker = function () {\n return true;\n}; // only cache relevant resources for this page\n\n\nvar whiteListLinkRels = /^(stylesheet|preload)$/;\nvar prefetchedPathnames = [];\n\nexports.onServiceWorkerActive = function (_ref) {\n var getResourceURLsForPathname = _ref.getResourceURLsForPathname,\n serviceWorker = _ref.serviceWorker;\n\n // if the SW has just updated then clear the path dependencies and don't cache\n // stuff, since we're on the old revision until we navigate to another page\n if (window.___swUpdated) {\n serviceWorker.active.postMessage({\n gatsbyApi: \"clearPathResources\"\n });\n return;\n } // grab nodes from head of document\n\n\n var nodes = document.querySelectorAll(\"\\n head > script[src],\\n head > link[href],\\n head > style[data-href]\\n \"); // get all resource URLs\n\n var headerResources = [].slice.call(nodes) // don't include preconnect/prefetch/prerender resources\n .filter(function (node) {\n return node.tagName !== \"LINK\" || whiteListLinkRels.test(node.getAttribute(\"rel\"));\n }).map(function (node) {\n return node.src || node.href || node.getAttribute(\"data-href\");\n }); // Loop over prefetched pages and add their resources to an array,\n // plus specify which resources are required for those paths.\n\n var prefetchedResources = [];\n prefetchedPathnames.forEach(function (path) {\n var resources = getResourceURLsForPathname(path);\n prefetchedResources.push.apply(prefetchedResources, resources);\n serviceWorker.active.postMessage({\n gatsbyApi: \"setPathResources\",\n path: path,\n resources: resources\n });\n }); // Loop over all resources and fetch the page component + JSON data\n // to add it to the SW cache.\n\n var resources = [].concat(headerResources, prefetchedResources);\n resources.forEach(function (resource) {\n // Create a prefetch link for each resource, so Workbox runtime-caches them\n var link = document.createElement(\"link\");\n link.rel = \"prefetch\";\n link.href = resource;\n link.onload = link.remove;\n link.onerror = link.remove;\n document.head.appendChild(link);\n });\n};\n\nfunction setPathResources(path, getResourceURLsForPathname) {\n // do nothing if the SW has just updated, since we still have old pages in\n // memory which we don't want to be whitelisted\n if (window.___swUpdated) return;\n\n if (\"serviceWorker\" in navigator) {\n var _navigator = navigator,\n serviceWorker = _navigator.serviceWorker;\n\n if (serviceWorker.controller === null) {\n // if SW is not installed, we need to record any prefetches\n // that happen so we can then add them to SW cache once installed\n prefetchedPathnames.push(path);\n } else {\n var resources = getResourceURLsForPathname(path);\n serviceWorker.controller.postMessage({\n gatsbyApi: \"setPathResources\",\n path: path,\n resources: resources\n });\n }\n }\n}\n\nexports.onRouteUpdate = function (_ref2) {\n var location = _ref2.location,\n getResourceURLsForPathname = _ref2.getResourceURLsForPathname;\n var pathname = location.pathname.replace(__BASE_PATH__, \"\");\n setPathResources(pathname, getResourceURLsForPathname);\n\n if (\"serviceWorker\" in navigator && navigator.serviceWorker.controller !== null) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: \"enableOfflineShell\"\n });\n }\n};\n\nexports.onPostPrefetchPathname = function (_ref3) {\n var pathname = _ref3.pathname,\n getResourceURLsForPathname = _ref3.getResourceURLsForPathname;\n setPathResources(pathname, getResourceURLsForPathname);\n};","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","const set = require('regenerate')(0x484, 0x487, 0x2E43, 0xA66F);\nset.addRange(0x2C00, 0x2C5F).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A);\nmodule.exports = set;","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var charToInteger = {};\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nfor (var i = 0; i < chars.length; i++) {\n charToInteger[chars.charCodeAt(i)] = i;\n}\nfunction decode(mappings) {\n var decoded = [];\n var line = [];\n var segment = [0, 0, 0, 0, 0];\n var j = 0;\n for (var i = 0, shift = 0, value = 0; i < mappings.length; i++) {\n var c = mappings.charCodeAt(i);\n if (c === 44) {\n // \",\"\n segmentify(line, segment, j);\n j = 0;\n } else if (c === 59) {\n // \";\"\n segmentify(line, segment, j);\n j = 0;\n decoded.push(line);\n line = [];\n segment[0] = 0;\n } else {\n var integer = charToInteger[c];\n if (integer === undefined) {\n throw new Error('Invalid character (' + String.fromCharCode(c) + ')');\n }\n var hasContinuationBit = integer & 32;\n integer &= 31;\n value += integer << shift;\n if (hasContinuationBit) {\n shift += 5;\n } else {\n var shouldNegate = value & 1;\n value >>>= 1;\n if (shouldNegate) {\n value = value === 0 ? -0x80000000 : -value;\n }\n segment[j] += value;\n j++;\n value = shift = 0; // reset\n }\n }\n }\n\n segmentify(line, segment, j);\n decoded.push(line);\n return decoded;\n}\nfunction segmentify(line, segment, j) {\n // This looks ugly, but we're creating specialized arrays with a specific\n // length. This is much faster than creating a new array (which v8 expands to\n // a capacity of 17 after pushing the first item), or slicing out a subarray\n // (which is slow). Length 4 is assumed to be the most frequent, followed by\n // length 5 (since not everything will have an associated name), followed by\n // length 1 (it's probably rare for a source substring to not have an\n // associated segment data).\n if (j === 4) line.push([segment[0], segment[1], segment[2], segment[3]]);else if (j === 5) line.push([segment[0], segment[1], segment[2], segment[3], segment[4]]);else if (j === 1) line.push([segment[0]]);\n}\nfunction encode(decoded) {\n var sourceFileIndex = 0; // second field\n var sourceCodeLine = 0; // third field\n var sourceCodeColumn = 0; // fourth field\n var nameIndex = 0; // fifth field\n var mappings = '';\n for (var i = 0; i < decoded.length; i++) {\n var line = decoded[i];\n if (i > 0) mappings += ';';\n if (line.length === 0) continue;\n var generatedCodeColumn = 0; // first field\n var lineMappings = [];\n for (var _i = 0, line_1 = line; _i < line_1.length; _i++) {\n var segment = line_1[_i];\n var segmentMappings = encodeInteger(segment[0] - generatedCodeColumn);\n generatedCodeColumn = segment[0];\n if (segment.length > 1) {\n segmentMappings += encodeInteger(segment[1] - sourceFileIndex) + encodeInteger(segment[2] - sourceCodeLine) + encodeInteger(segment[3] - sourceCodeColumn);\n sourceFileIndex = segment[1];\n sourceCodeLine = segment[2];\n sourceCodeColumn = segment[3];\n }\n if (segment.length === 5) {\n segmentMappings += encodeInteger(segment[4] - nameIndex);\n nameIndex = segment[4];\n }\n lineMappings.push(segmentMappings);\n }\n mappings += lineMappings.join(',');\n }\n return mappings;\n}\nfunction encodeInteger(num) {\n var result = '';\n num = num < 0 ? -num << 1 | 1 : num << 1;\n do {\n var clamped = num & 31;\n num >>>= 5;\n if (num > 0) {\n clamped |= 32;\n }\n result += chars[clamped];\n } while (num > 0);\n return result;\n}\nexport { decode, encode };","'use strict';\n\nvar typeOf = require('kind-of');\n\n/**\n * Basic sort algorithm that has similar behavior to `Array.prototype.sort`\n * for null and undefined, but also allows sorting by an object property.\n *\n * @param {Mixed} `a` First value to compare.\n * @param {Mixed} `b` Second value to compare.\n * @param {String} `prop` Optional property to use when comparing objects. If specified must be a string.\n * @return {Number} Returns 1 when `a` should come after `b`, -1 when `a` should come before `b`, and 0 when `a` and `b` are equal.\n * @api public\n */\n\nmodule.exports = function defaultCompare(a, b, prop) {\n if (prop != null && typeOf(prop) !== 'string') {\n throw new TypeError('expected \"prop\" to be undefined or a string');\n }\n var typeA = typeOf(a);\n var typeB = typeOf(b);\n if (prop) {\n if (typeA === 'object') {\n a = a[prop];\n typeA = typeOf(a);\n }\n if (typeB === 'object') {\n b = b[prop];\n typeB = typeOf(b);\n }\n }\n if (typeA === 'null') {\n return typeB === 'null' ? 0 : typeB === 'undefined' ? -1 : 1;\n } else if (typeA === 'undefined') {\n return typeB === 'null' ? 1 : typeB === 'undefined' ? 0 : 1;\n } else if (typeB === 'null' || typeB === 'undefined') {\n return -1;\n } else {\n return a < b ? -1 : a > b ? 1 : 0;\n }\n};","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","const set = require('regenerate')(0x1258, 0x12C0);\nset.addRange(0x1200, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x135D, 0x137C).addRange(0x1380, 0x1399).addRange(0x2D80, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE);\nmodule.exports = set;","const set = require('regenerate')(0x1F200);\nset.addRange(0x3041, 0x3096).addRange(0x309D, 0x309F).addRange(0x1B001, 0x1B11F).addRange(0x1B150, 0x1B152);\nmodule.exports = set;","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","const support = function (feature) {\n if (typeof document === `undefined`) {\n return false\n }\n const fakeLink = document.createElement(`link`)\n try {\n if (fakeLink.relList && typeof fakeLink.relList.supports === `function`) {\n return fakeLink.relList.supports(feature)\n }\n } catch (err) {\n return false\n }\n return false\n}\n\nconst linkPrefetchStrategy = function (url, options) {\n return new Promise((resolve, reject) => {\n if (typeof document === `undefined`) {\n reject()\n return\n }\n\n const link = document.createElement(`link`)\n link.setAttribute(`rel`, `prefetch`)\n link.setAttribute(`href`, url)\n\n Object.keys(options).forEach(key => {\n link.setAttribute(key, options[key])\n })\n\n link.onload = resolve\n link.onerror = reject\n\n const parentElement =\n document.getElementsByTagName(`head`)[0] ||\n document.getElementsByName(`script`)[0].parentNode\n parentElement.appendChild(link)\n })\n}\n\nconst xhrPrefetchStrategy = function (url) {\n return new Promise((resolve, reject) => {\n const req = new XMLHttpRequest()\n req.open(`GET`, url, true)\n\n req.onload = () => {\n if (req.status === 200) {\n resolve()\n } else {\n reject()\n }\n }\n\n req.send(null)\n })\n}\n\nconst supportedPrefetchStrategy = support(`prefetch`)\n ? linkPrefetchStrategy\n : xhrPrefetchStrategy\n\nconst preFetched = {}\n\nconst prefetch = function (url, options) {\n return new Promise(resolve => {\n if (preFetched[url]) {\n resolve()\n return\n }\n\n supportedPrefetchStrategy(url, options)\n .then(() => {\n resolve()\n preFetched[url] = true\n })\n .catch(() => {}) // 404s are logged to the console anyway\n })\n}\n\nexport default prefetch\n","import prefetchHelper from \"./prefetch\"\nimport emitter from \"./emitter\"\nimport { setMatchPaths, findPath, findMatchPath } from \"./find-path\"\n\n/**\n * Available resource loading statuses\n */\nexport const PageResourceStatus = {\n /**\n * At least one of critical resources failed to load\n */\n Error: `error`,\n /**\n * Resources loaded successfully\n */\n Success: `success`,\n}\n\nconst preferDefault = m => (m && m.default) || m\n\nconst stripSurroundingSlashes = s => {\n s = s[0] === `/` ? s.slice(1) : s\n s = s.endsWith(`/`) ? s.slice(0, -1) : s\n return s\n}\n\nconst createPageDataUrl = path => {\n const fixedPath = path === `/` ? `index` : stripSurroundingSlashes(path)\n return `${__PATH_PREFIX__}/page-data/${fixedPath}/page-data.json`\n}\n\nfunction doFetch(url, method = `GET`) {\n return new Promise((resolve, reject) => {\n const req = new XMLHttpRequest()\n req.open(method, url, true)\n req.onreadystatechange = () => {\n if (req.readyState == 4) {\n resolve(req)\n }\n }\n req.send(null)\n })\n}\n\nconst doesConnectionSupportPrefetch = () => {\n if (\n `connection` in navigator &&\n typeof navigator.connection !== `undefined`\n ) {\n if ((navigator.connection.effectiveType || ``).includes(`2g`)) {\n return false\n }\n if (navigator.connection.saveData) {\n return false\n }\n }\n return true\n}\n\nconst toPageResources = (pageData, component = null) => {\n const page = {\n componentChunkName: pageData.componentChunkName,\n path: pageData.path,\n webpackCompilationHash: pageData.webpackCompilationHash,\n matchPath: pageData.matchPath,\n staticQueryHashes: pageData.staticQueryHashes,\n }\n\n return {\n component,\n json: pageData.result,\n page,\n }\n}\n\nexport class BaseLoader {\n constructor(loadComponent, matchPaths) {\n // Map of pagePath -> Page. Where Page is an object with: {\n // status: PageResourceStatus.Success || PageResourceStatus.Error,\n // payload: PageResources, // undefined if PageResourceStatus.Error\n // }\n // PageResources is {\n // component,\n // json: pageData.result,\n // page: {\n // componentChunkName,\n // path,\n // webpackCompilationHash,\n // staticQueryHashes\n // },\n // staticQueryResults\n // }\n this.pageDb = new Map()\n this.inFlightDb = new Map()\n this.staticQueryDb = {}\n this.pageDataDb = new Map()\n this.prefetchTriggered = new Set()\n this.prefetchCompleted = new Set()\n this.loadComponent = loadComponent\n setMatchPaths(matchPaths)\n }\n\n inFlightNetworkRequests = new Map()\n\n memoizedGet(url) {\n let inFlightPromise = this.inFlightNetworkRequests.get(url)\n\n if (!inFlightPromise) {\n inFlightPromise = doFetch(url, `GET`)\n this.inFlightNetworkRequests.set(url, inFlightPromise)\n }\n\n // Prefer duplication with then + catch over .finally to prevent problems in ie11 + firefox\n return inFlightPromise\n .then(response => {\n this.inFlightNetworkRequests.delete(url)\n return response\n })\n .catch(err => {\n this.inFlightNetworkRequests.delete(url)\n throw err\n })\n }\n\n setApiRunner(apiRunner) {\n this.apiRunner = apiRunner\n this.prefetchDisabled = apiRunner(`disableCorePrefetching`).some(a => a)\n }\n\n fetchPageDataJson(loadObj) {\n const { pagePath, retries = 0 } = loadObj\n const url = createPageDataUrl(pagePath)\n return this.memoizedGet(url).then(req => {\n const { status, responseText } = req\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.path === undefined) {\n throw new Error(`not a valid pageData response`)\n }\n\n return Object.assign(loadObj, {\n status: PageResourceStatus.Success,\n payload: jsonPayload,\n })\n } catch (err) {\n // continue regardless of error\n }\n }\n\n // Handle 404\n if (status === 404 || status === 200) {\n // If the request was for a 404 page and it doesn't exist, we're done\n if (pagePath === `/404.html`) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Need some code here to cache the 404 request. In case\n // multiple loadPageDataJsons result in 404s\n return this.fetchPageDataJson(\n Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n )\n }\n\n // handle 500 response (Unrecoverable)\n if (status === 500) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Handle everything else, including status === 0, and 503s. Should retry\n if (retries < 3) {\n return this.fetchPageDataJson(\n Object.assign(loadObj, { retries: retries + 1 })\n )\n }\n\n // Retried 3 times already, result is an error.\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n })\n }\n\n loadPageDataJson(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDataDb.has(pagePath)) {\n const pageData = this.pageDataDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !pageData.stale) {\n return Promise.resolve(pageData)\n }\n }\n\n return this.fetchPageDataJson({ pagePath }).then(pageData => {\n this.pageDataDb.set(pagePath, pageData)\n\n return pageData\n })\n }\n\n findMatchPath(rawPath) {\n return findMatchPath(rawPath)\n }\n\n // TODO check all uses of this and whether they use undefined for page resources not exist\n loadPage(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const page = this.pageDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !page.payload.stale) {\n return Promise.resolve(page.payload)\n }\n }\n\n if (this.inFlightDb.has(pagePath)) {\n return this.inFlightDb.get(pagePath)\n }\n\n const inFlightPromise = Promise.all([\n this.loadAppData(),\n this.loadPageDataJson(pagePath),\n ]).then(allData => {\n const result = allData[1]\n if (result.status === PageResourceStatus.Error) {\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n let pageData = result.payload\n const { componentChunkName, staticQueryHashes = [] } = pageData\n\n const finalResult = {}\n\n const componentChunkPromise = this.loadComponent(componentChunkName).then(\n component => {\n finalResult.createdAt = new Date()\n let pageResources\n if (!component) {\n finalResult.status = PageResourceStatus.Error\n } else {\n finalResult.status = PageResourceStatus.Success\n if (result.notFound === true) {\n finalResult.notFound = true\n }\n pageData = Object.assign(pageData, {\n webpackCompilationHash: allData[0]\n ? allData[0].webpackCompilationHash\n : ``,\n })\n pageResources = toPageResources(pageData, component)\n }\n // undefined if final result is an error\n return pageResources\n }\n )\n\n const staticQueryBatchPromise = Promise.all(\n staticQueryHashes.map(staticQueryHash => {\n // Check for cache in case this static query result has already been loaded\n if (this.staticQueryDb[staticQueryHash]) {\n const jsonPayload = this.staticQueryDb[staticQueryHash]\n return { staticQueryHash, jsonPayload }\n }\n\n return this.memoizedGet(\n `${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json`\n ).then(req => {\n const jsonPayload = JSON.parse(req.responseText)\n return { staticQueryHash, jsonPayload }\n })\n })\n ).then(staticQueryResults => {\n const staticQueryResultsMap = {}\n\n staticQueryResults.forEach(({ staticQueryHash, jsonPayload }) => {\n staticQueryResultsMap[staticQueryHash] = jsonPayload\n this.staticQueryDb[staticQueryHash] = jsonPayload\n })\n\n return staticQueryResultsMap\n })\n\n return Promise.all([componentChunkPromise, staticQueryBatchPromise]).then(\n ([pageResources, staticQueryResults]) => {\n let payload\n if (pageResources) {\n payload = { ...pageResources, staticQueryResults }\n finalResult.payload = payload\n emitter.emit(`onPostLoadPageResources`, {\n page: payload,\n pageResources: payload,\n })\n }\n\n this.pageDb.set(pagePath, finalResult)\n\n return payload\n }\n )\n })\n\n inFlightPromise\n .then(response => {\n this.inFlightDb.delete(pagePath)\n })\n .catch(error => {\n this.inFlightDb.delete(pagePath)\n throw error\n })\n\n this.inFlightDb.set(pagePath, inFlightPromise)\n\n return inFlightPromise\n }\n\n // returns undefined if loading page ran into errors\n loadPageSync(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const pageData = this.pageDb.get(pagePath).payload\n return pageData\n }\n return undefined\n }\n\n shouldPrefetch(pagePath) {\n // Skip prefetching if we know user is on slow or constrained connection\n if (!doesConnectionSupportPrefetch()) {\n return false\n }\n\n // Check if the page exists.\n if (this.pageDb.has(pagePath)) {\n return false\n }\n\n return true\n }\n\n prefetch(pagePath) {\n if (!this.shouldPrefetch(pagePath)) {\n return false\n }\n\n // Tell plugins with custom prefetching logic that they should start\n // prefetching this path.\n if (!this.prefetchTriggered.has(pagePath)) {\n this.apiRunner(`onPrefetchPathname`, { pathname: pagePath })\n this.prefetchTriggered.add(pagePath)\n }\n\n // If a plugin has disabled core prefetching, stop now.\n if (this.prefetchDisabled) {\n return false\n }\n\n const realPath = findPath(pagePath)\n // Todo make doPrefetch logic cacheable\n // eslint-disable-next-line consistent-return\n this.doPrefetch(realPath).then(() => {\n if (!this.prefetchCompleted.has(pagePath)) {\n this.apiRunner(`onPostPrefetchPathname`, { pathname: pagePath })\n this.prefetchCompleted.add(pagePath)\n }\n })\n\n return true\n }\n\n doPrefetch(pagePath) {\n const pageDataUrl = createPageDataUrl(pagePath)\n return prefetchHelper(pageDataUrl, {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPageDataJson(pagePath)\n )\n }\n\n hovering(rawPath) {\n this.loadPage(rawPath)\n }\n\n getResourceURLsForPathname(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDataDb.get(pagePath)\n if (page) {\n const pageResources = toPageResources(page.payload)\n\n return [\n ...createComponentUrls(pageResources.page.componentChunkName),\n createPageDataUrl(pagePath),\n ]\n } else {\n return null\n }\n }\n\n isPageNotFound(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDb.get(pagePath)\n return !page || page.notFound\n }\n\n loadAppData(retries = 0) {\n return this.memoizedGet(`${__PATH_PREFIX__}/page-data/app-data.json`).then(\n req => {\n const { status, responseText } = req\n\n let appData\n\n if (status !== 200 && retries < 3) {\n // Retry 3 times incase of non-200 responses\n return this.loadAppData(retries + 1)\n }\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.webpackCompilationHash === undefined) {\n throw new Error(`not a valid app-data response`)\n }\n\n appData = jsonPayload\n } catch (err) {\n // continue regardless of error\n }\n }\n\n return appData\n }\n )\n }\n}\n\nconst createComponentUrls = componentChunkName =>\n (window.___chunkMapping[componentChunkName] || []).map(\n chunk => __PATH_PREFIX__ + chunk\n )\n\nexport class ProdLoader extends BaseLoader {\n constructor(asyncRequires, matchPaths) {\n const loadComponent = chunkName =>\n asyncRequires.components[chunkName]\n ? asyncRequires.components[chunkName]()\n .then(preferDefault)\n // loader will handle the case when component is null\n .catch(() => null)\n : Promise.resolve()\n\n super(loadComponent, matchPaths)\n }\n\n doPrefetch(pagePath) {\n return super.doPrefetch(pagePath).then(result => {\n if (result.status !== PageResourceStatus.Success) {\n return Promise.resolve()\n }\n const pageData = result.payload\n const chunkName = pageData.componentChunkName\n const componentUrls = createComponentUrls(chunkName)\n return Promise.all(componentUrls.map(prefetchHelper)).then(() => pageData)\n })\n }\n\n loadPageDataJson(rawPath) {\n return super.loadPageDataJson(rawPath).then(data => {\n if (data.notFound) {\n // check if html file exist using HEAD request:\n // if it does we should navigate to it instead of showing 404\n return doFetch(rawPath, `HEAD`).then(req => {\n if (req.status === 200) {\n // page (.html file) actually exist (or we asked for 404 )\n // returning page resources status as errored to trigger\n // regular browser navigation to given page\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n // if HEAD request wasn't 200, return notFound result\n // and show 404 page\n return data\n })\n }\n return data\n })\n }\n}\n\nlet instance\n\nexport const setLoader = _loader => {\n instance = _loader\n}\n\nexport const publicLoader = {\n // Deprecated methods. As far as we're aware, these are only used by\n // core gatsby and the offline plugin, however there's a very small\n // chance they're called by others.\n getResourcesForPathname: rawPath => {\n console.warn(\n `Warning: getResourcesForPathname is deprecated. Use loadPage instead`\n )\n return instance.i.loadPage(rawPath)\n },\n getResourcesForPathnameSync: rawPath => {\n console.warn(\n `Warning: getResourcesForPathnameSync is deprecated. Use loadPageSync instead`\n )\n return instance.i.loadPageSync(rawPath)\n },\n enqueue: rawPath => instance.prefetch(rawPath),\n\n // Real methods\n getResourceURLsForPathname: rawPath =>\n instance.getResourceURLsForPathname(rawPath),\n loadPage: rawPath => instance.loadPage(rawPath),\n loadPageSync: rawPath => instance.loadPageSync(rawPath),\n prefetch: rawPath => instance.prefetch(rawPath),\n isPageNotFound: rawPath => instance.isPageNotFound(rawPath),\n hovering: rawPath => instance.hovering(rawPath),\n loadAppData: () => instance.loadAppData(),\n}\n\nexport default publicLoader\n\nexport function getStaticQueryResults() {\n if (instance) {\n return instance.staticQueryDb\n } else {\n return {}\n }\n}\n","const set = require('regenerate')(0x23F0, 0x23F3, 0x267F, 0x2693, 0x26A1, 0x26CE, 0x26D4, 0x26EA, 0x26F5, 0x26FA, 0x26FD, 0x2705, 0x2728, 0x274C, 0x274E, 0x2757, 0x27B0, 0x27BF, 0x2B50, 0x2B55, 0x1F004, 0x1F0CF, 0x1F18E, 0x1F201, 0x1F21A, 0x1F22F, 0x1F3F4, 0x1F440, 0x1F57A, 0x1F5A4, 0x1F6CC, 0x1F7F0);\nset.addRange(0x231A, 0x231B).addRange(0x23E9, 0x23EC).addRange(0x25FD, 0x25FE).addRange(0x2614, 0x2615).addRange(0x2648, 0x2653).addRange(0x26AA, 0x26AB).addRange(0x26BD, 0x26BE).addRange(0x26C4, 0x26C5).addRange(0x26F2, 0x26F3).addRange(0x270A, 0x270B).addRange(0x2753, 0x2755).addRange(0x2795, 0x2797).addRange(0x2B1B, 0x2B1C).addRange(0x1F191, 0x1F19A).addRange(0x1F1E6, 0x1F1FF).addRange(0x1F232, 0x1F236).addRange(0x1F238, 0x1F23A).addRange(0x1F250, 0x1F251).addRange(0x1F300, 0x1F320).addRange(0x1F32D, 0x1F335).addRange(0x1F337, 0x1F37C).addRange(0x1F37E, 0x1F393).addRange(0x1F3A0, 0x1F3CA).addRange(0x1F3CF, 0x1F3D3).addRange(0x1F3E0, 0x1F3F0).addRange(0x1F3F8, 0x1F43E).addRange(0x1F442, 0x1F4FC).addRange(0x1F4FF, 0x1F53D).addRange(0x1F54B, 0x1F54E).addRange(0x1F550, 0x1F567).addRange(0x1F595, 0x1F596).addRange(0x1F5FB, 0x1F64F).addRange(0x1F680, 0x1F6C5).addRange(0x1F6D0, 0x1F6D2).addRange(0x1F6D5, 0x1F6D7).addRange(0x1F6DD, 0x1F6DF).addRange(0x1F6EB, 0x1F6EC).addRange(0x1F6F4, 0x1F6FC).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F90C, 0x1F93A).addRange(0x1F93C, 0x1F945).addRange(0x1F947, 0x1F9FF).addRange(0x1FA70, 0x1FA74).addRange(0x1FA78, 0x1FA7C).addRange(0x1FA80, 0x1FA86).addRange(0x1FA90, 0x1FAAC).addRange(0x1FAB0, 0x1FABA).addRange(0x1FAC0, 0x1FAC5).addRange(0x1FAD0, 0x1FAD9).addRange(0x1FAE0, 0x1FAE7).addRange(0x1FAF0, 0x1FAF6);\nset;\nmodule.exports = set;","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","const set = require('regenerate')(0x5BF, 0x5C7, 0x670, 0x711, 0x7FD, 0x93A, 0x93C, 0x94D, 0x981, 0x9BC, 0x9CD, 0x9FE, 0xA3C, 0xA51, 0xA75, 0xABC, 0xACD, 0xB01, 0xB3C, 0xB3F, 0xB4D, 0xB82, 0xBC0, 0xBCD, 0xC00, 0xC04, 0xC3C, 0xC81, 0xCBC, 0xCBF, 0xCC6, 0xD4D, 0xD81, 0xDCA, 0xDD6, 0xE31, 0xEB1, 0xF35, 0xF37, 0xF39, 0xFC6, 0x1082, 0x108D, 0x109D, 0x17C6, 0x17DD, 0x180F, 0x18A9, 0x1932, 0x1A1B, 0x1A56, 0x1A60, 0x1A62, 0x1A7F, 0x1B34, 0x1B3C, 0x1B42, 0x1BE6, 0x1BED, 0x1CED, 0x1CF4, 0x20E1, 0x2D7F, 0xA66F, 0xA802, 0xA806, 0xA80B, 0xA82C, 0xA8FF, 0xA9B3, 0xA9E5, 0xAA43, 0xAA4C, 0xAA7C, 0xAAB0, 0xAAC1, 0xAAF6, 0xABE5, 0xABE8, 0xABED, 0xFB1E, 0x101FD, 0x102E0, 0x10A3F, 0x11001, 0x11070, 0x110C2, 0x11173, 0x111CF, 0x11234, 0x1123E, 0x112DF, 0x11340, 0x11446, 0x1145E, 0x114BA, 0x1163D, 0x116AB, 0x116AD, 0x116B7, 0x1193E, 0x11943, 0x119E0, 0x11A47, 0x11C3F, 0x11D3A, 0x11D47, 0x11D95, 0x11D97, 0x16F4F, 0x16FE4, 0x1DA75, 0x1DA84, 0x1E2AE);\nset.addRange(0x300, 0x36F).addRange(0x483, 0x487).addRange(0x591, 0x5BD).addRange(0x5C1, 0x5C2).addRange(0x5C4, 0x5C5).addRange(0x610, 0x61A).addRange(0x64B, 0x65F).addRange(0x6D6, 0x6DC).addRange(0x6DF, 0x6E4).addRange(0x6E7, 0x6E8).addRange(0x6EA, 0x6ED).addRange(0x730, 0x74A).addRange(0x7A6, 0x7B0).addRange(0x7EB, 0x7F3).addRange(0x816, 0x819).addRange(0x81B, 0x823).addRange(0x825, 0x827).addRange(0x829, 0x82D).addRange(0x859, 0x85B).addRange(0x898, 0x89F).addRange(0x8CA, 0x8E1).addRange(0x8E3, 0x902).addRange(0x941, 0x948).addRange(0x951, 0x957).addRange(0x962, 0x963).addRange(0x9C1, 0x9C4).addRange(0x9E2, 0x9E3).addRange(0xA01, 0xA02).addRange(0xA41, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA70, 0xA71).addRange(0xA81, 0xA82).addRange(0xAC1, 0xAC5).addRange(0xAC7, 0xAC8).addRange(0xAE2, 0xAE3).addRange(0xAFA, 0xAFF).addRange(0xB41, 0xB44).addRange(0xB55, 0xB56).addRange(0xB62, 0xB63).addRange(0xC3E, 0xC40).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC62, 0xC63).addRange(0xCCC, 0xCCD).addRange(0xCE2, 0xCE3).addRange(0xD00, 0xD01).addRange(0xD3B, 0xD3C).addRange(0xD41, 0xD44).addRange(0xD62, 0xD63);\nset.addRange(0xDD2, 0xDD4).addRange(0xE34, 0xE3A).addRange(0xE47, 0xE4E).addRange(0xEB4, 0xEBC).addRange(0xEC8, 0xECD).addRange(0xF18, 0xF19).addRange(0xF71, 0xF7E).addRange(0xF80, 0xF84).addRange(0xF86, 0xF87).addRange(0xF8D, 0xF97).addRange(0xF99, 0xFBC).addRange(0x102D, 0x1030).addRange(0x1032, 0x1037).addRange(0x1039, 0x103A).addRange(0x103D, 0x103E).addRange(0x1058, 0x1059).addRange(0x105E, 0x1060).addRange(0x1071, 0x1074).addRange(0x1085, 0x1086).addRange(0x135D, 0x135F).addRange(0x1712, 0x1714).addRange(0x1732, 0x1733).addRange(0x1752, 0x1753).addRange(0x1772, 0x1773).addRange(0x17B4, 0x17B5).addRange(0x17B7, 0x17BD).addRange(0x17C9, 0x17D3).addRange(0x180B, 0x180D).addRange(0x1885, 0x1886).addRange(0x1920, 0x1922).addRange(0x1927, 0x1928).addRange(0x1939, 0x193B).addRange(0x1A17, 0x1A18).addRange(0x1A58, 0x1A5E).addRange(0x1A65, 0x1A6C).addRange(0x1A73, 0x1A7C).addRange(0x1AB0, 0x1ABD).addRange(0x1ABF, 0x1ACE).addRange(0x1B00, 0x1B03).addRange(0x1B36, 0x1B3A).addRange(0x1B6B, 0x1B73).addRange(0x1B80, 0x1B81).addRange(0x1BA2, 0x1BA5).addRange(0x1BA8, 0x1BA9).addRange(0x1BAB, 0x1BAD).addRange(0x1BE8, 0x1BE9).addRange(0x1BEF, 0x1BF1).addRange(0x1C2C, 0x1C33).addRange(0x1C36, 0x1C37).addRange(0x1CD0, 0x1CD2).addRange(0x1CD4, 0x1CE0);\nset.addRange(0x1CE2, 0x1CE8).addRange(0x1CF8, 0x1CF9).addRange(0x1DC0, 0x1DFF).addRange(0x20D0, 0x20DC).addRange(0x20E5, 0x20F0).addRange(0x2CEF, 0x2CF1).addRange(0x2DE0, 0x2DFF).addRange(0x302A, 0x302D).addRange(0x3099, 0x309A).addRange(0xA674, 0xA67D).addRange(0xA69E, 0xA69F).addRange(0xA6F0, 0xA6F1).addRange(0xA825, 0xA826).addRange(0xA8C4, 0xA8C5).addRange(0xA8E0, 0xA8F1).addRange(0xA926, 0xA92D).addRange(0xA947, 0xA951).addRange(0xA980, 0xA982).addRange(0xA9B6, 0xA9B9).addRange(0xA9BC, 0xA9BD).addRange(0xAA29, 0xAA2E).addRange(0xAA31, 0xAA32).addRange(0xAA35, 0xAA36).addRange(0xAAB2, 0xAAB4).addRange(0xAAB7, 0xAAB8).addRange(0xAABE, 0xAABF).addRange(0xAAEC, 0xAAED).addRange(0xFE00, 0xFE0F).addRange(0xFE20, 0xFE2F).addRange(0x10376, 0x1037A).addRange(0x10A01, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A0F).addRange(0x10A38, 0x10A3A).addRange(0x10AE5, 0x10AE6).addRange(0x10D24, 0x10D27).addRange(0x10EAB, 0x10EAC).addRange(0x10F46, 0x10F50).addRange(0x10F82, 0x10F85).addRange(0x11038, 0x11046).addRange(0x11073, 0x11074).addRange(0x1107F, 0x11081).addRange(0x110B3, 0x110B6).addRange(0x110B9, 0x110BA).addRange(0x11100, 0x11102).addRange(0x11127, 0x1112B).addRange(0x1112D, 0x11134).addRange(0x11180, 0x11181).addRange(0x111B6, 0x111BE).addRange(0x111C9, 0x111CC).addRange(0x1122F, 0x11231);\nset.addRange(0x11236, 0x11237).addRange(0x112E3, 0x112EA).addRange(0x11300, 0x11301).addRange(0x1133B, 0x1133C).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x11438, 0x1143F).addRange(0x11442, 0x11444).addRange(0x114B3, 0x114B8).addRange(0x114BF, 0x114C0).addRange(0x114C2, 0x114C3).addRange(0x115B2, 0x115B5).addRange(0x115BC, 0x115BD).addRange(0x115BF, 0x115C0).addRange(0x115DC, 0x115DD).addRange(0x11633, 0x1163A).addRange(0x1163F, 0x11640).addRange(0x116B0, 0x116B5).addRange(0x1171D, 0x1171F).addRange(0x11722, 0x11725).addRange(0x11727, 0x1172B).addRange(0x1182F, 0x11837).addRange(0x11839, 0x1183A).addRange(0x1193B, 0x1193C).addRange(0x119D4, 0x119D7).addRange(0x119DA, 0x119DB).addRange(0x11A01, 0x11A0A).addRange(0x11A33, 0x11A38).addRange(0x11A3B, 0x11A3E).addRange(0x11A51, 0x11A56).addRange(0x11A59, 0x11A5B).addRange(0x11A8A, 0x11A96).addRange(0x11A98, 0x11A99).addRange(0x11C30, 0x11C36).addRange(0x11C38, 0x11C3D).addRange(0x11C92, 0x11CA7).addRange(0x11CAA, 0x11CB0).addRange(0x11CB2, 0x11CB3).addRange(0x11CB5, 0x11CB6).addRange(0x11D31, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D45).addRange(0x11D90, 0x11D91).addRange(0x11EF3, 0x11EF4).addRange(0x16AF0, 0x16AF4).addRange(0x16B30, 0x16B36).addRange(0x16F8F, 0x16F92).addRange(0x1BC9D, 0x1BC9E).addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1D167, 0x1D169);\nset.addRange(0x1D17B, 0x1D182).addRange(0x1D185, 0x1D18B).addRange(0x1D1AA, 0x1D1AD).addRange(0x1D242, 0x1D244).addRange(0x1DA00, 0x1DA36).addRange(0x1DA3B, 0x1DA6C).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A).addRange(0x1E130, 0x1E136).addRange(0x1E2EC, 0x1E2EF).addRange(0x1E8D0, 0x1E8D6).addRange(0x1E944, 0x1E94A).addRange(0xE0100, 0xE01EF);\nmodule.exports = set;","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","const set = require('regenerate')();\nset.addRange(0x1680, 0x169C);\nmodule.exports = set;","const set = require('regenerate')(0x9B2, 0x9D7);\nset.addRange(0x980, 0x983).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9BC, 0x9C4).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CE).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E3).addRange(0x9E6, 0x9FE);\nmodule.exports = set;","import React, { createContext, useContext } from \"react\"\n\nconst GatsbyMDXScopeContext = createContext({})\n\nexport const useMDXScope = scope => {\n const contextScope = useContext(GatsbyMDXScopeContext)\n return scope || contextScope\n}\n\nexport const MDXScopeProvider = ({ __mdxScope, children }) =>\n React.createElement(\n GatsbyMDXScopeContext.Provider,\n { value: __mdxScope },\n children\n )\n","var scope_0 = require('/home/runner/work/tanka/tanka/docs/.cache/caches/gatsby-plugin-mdx/mdx-scopes-dir/3448244fd83aacee0962c5fab74909b8.js').default;\nvar scope_1 = require('/home/runner/work/tanka/tanka/docs/.cache/caches/gatsby-plugin-mdx/mdx-scopes-dir/3b068767123dfcea6b5f82a6b8c79d55.js').default;\nvar scope_2 = require('/home/runner/work/tanka/tanka/docs/.cache/caches/gatsby-plugin-mdx/mdx-scopes-dir/e92f8988d65cf25c087d226e6c0ef06f.js').default;\nvar scope_3 = require('/home/runner/work/tanka/tanka/docs/.cache/caches/gatsby-plugin-mdx/mdx-scopes-dir/f46d506c1bb0c0f8de171a434f695927.js').default;export default\n Object.assign({}, scope_0,\nscope_1,\nscope_2,\nscope_3 )\n ","import React from \"react\"\nimport { MDXProvider, withMDXComponents } from \"@mdx-js/react\"\nimport { MDXScopeProvider } from \"./context\"\n\n/**\n * so, this import is weird right?\n *\n * # What it looks like:\n * we're importing a webpack loader directly into our runtime bundle\n *\n * # What it's actually doing:\n * We configure the `mdx-components` loader in gatsby-node's\n * `onCreateWebpackConfig`. The configuration sets the loader to handle its\n * own file, so if we import `./loaders/mdx-components`, the `mdx-components`\n * loader handles loading itself.\n *\n * # Why does this work?\n * The loader doesn't use the file argument to itself and instead returns\n * a generated file that includes the `gatsby-config` mdxPlugins wrapped in\n * require() statements. This results in the `mdxPlugins` being required\n * and available to the code after this import.\n *\n * # Have a better solution to this?\n * Submit a PR\n */\nimport { plugins as mdxPlugins } from \"./loaders/mdx-components\"\nimport scopeContexts from \"./loaders/mdx-scopes\"\n\nconst componentsAndGuards = {}\n\nconst componentFromGuards = arr =>\n function GatsbyMDXComponentFinder(props) {\n const { Component } = arr.find(({ guard }) => (guard ? guard(props) : true))\n return \n }\n\nmdxPlugins.forEach(({ guards = {}, components }) => {\n Object.entries(components).forEach(([componentName, Component]) => {\n if (componentsAndGuards[componentName]) {\n componentsAndGuards.push({ guard: guards[componentName], Component })\n } else {\n componentsAndGuards[componentName] = [\n { guard: guards[componentName], Component },\n ]\n }\n })\n})\n\nconst components = Object.entries(componentsAndGuards)\n .map(([name, arr]) => {\n return {\n [name]: componentFromGuards(\n arr.concat({ guard: undefined, Component: name })\n ),\n }\n })\n .reduce((acc, obj) => {\n return { ...acc, ...obj }\n }, {})\n\n// merge any components in wrapRootElement above this wrapRoot\nconst MDXConsumer = withMDXComponents(\n ({ components: componentsFromContext, children }) => (\n \n \n {children}\n \n \n )\n)\n\nconst WrapRootElement = ({ element }) => {element}\n\nexport default WrapRootElement\n","import wrap from \"./wrap-root-element\"\nexport const wrapRootElement = wrap\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","module.exports = require('../../full/object/assign');\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","const set = require('regenerate')();\nset.addRange(0x1F1E6, 0x1F1FF);\nmodule.exports = set;","module.exports = {plugins: []}","var isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw $TypeError($String(argument) + ' is not an object');\n};\n","var baseGet = require('./_baseGet'),\n baseSlice = require('./_baseSlice');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n","const set = require('regenerate')(0x11350, 0x11357);\nset.addRange(0x11300, 0x11303).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1133C, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134D).addRange(0x1135D, 0x11363).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374);\nmodule.exports = set;","const set = require('regenerate')(0xA9, 0xAE, 0x203C, 0x2049, 0x2122, 0x2139, 0x2328, 0x2388, 0x23CF, 0x24C2, 0x25B6, 0x25C0, 0x2714, 0x2716, 0x271D, 0x2721, 0x2728, 0x2744, 0x2747, 0x274C, 0x274E, 0x2757, 0x27A1, 0x27B0, 0x27BF, 0x2B50, 0x2B55, 0x3030, 0x303D, 0x3297, 0x3299, 0x1F12F, 0x1F18E, 0x1F21A, 0x1F22F);\nset.addRange(0x2194, 0x2199).addRange(0x21A9, 0x21AA).addRange(0x231A, 0x231B).addRange(0x23E9, 0x23F3).addRange(0x23F8, 0x23FA).addRange(0x25AA, 0x25AB).addRange(0x25FB, 0x25FE).addRange(0x2600, 0x2605).addRange(0x2607, 0x2612).addRange(0x2614, 0x2685).addRange(0x2690, 0x2705).addRange(0x2708, 0x2712).addRange(0x2733, 0x2734).addRange(0x2753, 0x2755).addRange(0x2763, 0x2767).addRange(0x2795, 0x2797).addRange(0x2934, 0x2935).addRange(0x2B05, 0x2B07).addRange(0x2B1B, 0x2B1C).addRange(0x1F000, 0x1F0FF).addRange(0x1F10D, 0x1F10F).addRange(0x1F16C, 0x1F171).addRange(0x1F17E, 0x1F17F).addRange(0x1F191, 0x1F19A).addRange(0x1F1AD, 0x1F1E5).addRange(0x1F201, 0x1F20F).addRange(0x1F232, 0x1F23A).addRange(0x1F23C, 0x1F23F).addRange(0x1F249, 0x1F3FA).addRange(0x1F400, 0x1F53D).addRange(0x1F546, 0x1F64F).addRange(0x1F680, 0x1F6FF).addRange(0x1F774, 0x1F77F).addRange(0x1F7D5, 0x1F7FF).addRange(0x1F80C, 0x1F80F).addRange(0x1F848, 0x1F84F).addRange(0x1F85A, 0x1F85F).addRange(0x1F888, 0x1F88F).addRange(0x1F8AE, 0x1F8FF).addRange(0x1F90C, 0x1F93A).addRange(0x1F93C, 0x1F945).addRange(0x1F947, 0x1FAFF).addRange(0x1FC00, 0x1FFFD);\nmodule.exports = set;","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar weakMapTag = '[object WeakMap]';\n\n/**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\nfunction isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n}\n\nmodule.exports = isWeakMap;\n","const set = require('regenerate')(0x10C7, 0x10CD, 0x2D27, 0x2D2D);\nset.addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FC, 0x10FF).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x2D00, 0x2D25);\nmodule.exports = set;","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","const set = require('regenerate')(0xAA, 0xB5, 0xBA, 0x345, 0x37F, 0x386, 0x38C, 0x10C7, 0x10CD, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2071, 0x207F, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x2139, 0x214E, 0x2D27, 0x2D2D, 0xA7D3, 0x10780, 0x1D4A2, 0x1D4BB, 0x1D546);\nset.addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x1BA).addRange(0x1BC, 0x1BF).addRange(0x1C4, 0x293).addRange(0x295, 0x2B8).addRange(0x2C0, 0x2C1).addRange(0x2E0, 0x2E4).addRange(0x370, 0x373).addRange(0x376, 0x377).addRange(0x37A, 0x37D).addRange(0x388, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3F5).addRange(0x3F7, 0x481).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x560, 0x588).addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FD, 0x10FF).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1D00, 0x1DBF).addRange(0x1E00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FBC).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FCC).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FE0, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFC).addRange(0x2090, 0x209C).addRange(0x210A, 0x2113).addRange(0x2119, 0x211D).addRange(0x212A, 0x212D).addRange(0x212F, 0x2134).addRange(0x213C, 0x213F).addRange(0x2145, 0x2149);\nset.addRange(0x2160, 0x217F).addRange(0x2183, 0x2184).addRange(0x24B6, 0x24E9).addRange(0x2C00, 0x2CE4).addRange(0x2CEB, 0x2CEE).addRange(0x2CF2, 0x2CF3).addRange(0x2D00, 0x2D25).addRange(0xA640, 0xA66D).addRange(0xA680, 0xA69D).addRange(0xA722, 0xA787).addRange(0xA78B, 0xA78E).addRange(0xA790, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F5, 0xA7F6).addRange(0xA7F8, 0xA7FA).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB68).addRange(0xAB70, 0xABBF).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0x10400, 0x1044F).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10783, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x118A0, 0x118DF).addRange(0x16E40, 0x16E7F).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514);\nset.addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6FA).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D734).addRange(0x1D736, 0x1D74E).addRange(0x1D750, 0x1D76E).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D7A8).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7CB).addRange(0x1DF00, 0x1DF09).addRange(0x1DF0B, 0x1DF1E).addRange(0x1E900, 0x1E943).addRange(0x1F130, 0x1F149).addRange(0x1F150, 0x1F169).addRange(0x1F170, 0x1F189);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0xF00, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF71, 0xF97).addRange(0xF99, 0xFBC).addRange(0xFBE, 0xFCC).addRange(0xFCE, 0xFD4).addRange(0xFD9, 0xFDA);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x900, 0x950).addRange(0x955, 0x963).addRange(0x966, 0x97F).addRange(0xA8E0, 0xA8FF);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x2C00, 0x2C5F).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0xC80, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCBC, 0xCC4).addRange(0xCC6, 0xCC8).addRange(0xCCA, 0xCCD).addRange(0xCD5, 0xCD6).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE3).addRange(0xCE6, 0xCEF).addRange(0xCF1, 0xCF2);\nmodule.exports = set;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.ScrollContainer = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nvar _router = require(\"@reach/router\");\n\n// TODO: In Gatsby v3, this file should be removed.\n// We are deprecating this in V2 in favor of useScrollRestoration\nvar propTypes = {\n scrollKey: _propTypes.default.string.isRequired,\n shouldUpdateScroll: _propTypes.default.func,\n children: _propTypes.default.element.isRequired\n};\nvar hasNotWarnedDeprecation = true;\n\nvar ScrollContainerImplementation = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(ScrollContainerImplementation, _React$Component);\n\n function ScrollContainerImplementation(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n\n if (process.env.NODE_ENV !== \"production\" && hasNotWarnedDeprecation) {\n hasNotWarnedDeprecation = false;\n console.log(\"Deprecation Warning:\\n\\n Gatsby is deprecated in Gatsby v2 and will be removed in Gatsby v3.\\n Update to the React hook alternative useScrollRestoration, like this:.\\n \\n ```\\n import React from 'react';\\n import { useScrollRestoration } from 'gatsby-react-router-scroll';\\n\\n function Component() {\\n const scrollRestoration = useScrollRestoration('\" + _this.props.scrollKey + \"');\\n\\n return
      ;\\n }\\n ```\\n \");\n }\n\n return _this;\n }\n\n var _proto = ScrollContainerImplementation.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n // eslint-disable-next-line react/no-find-dom-node\n var node = _reactDom.default.findDOMNode(this);\n\n var _this$props = this.props,\n location = _this$props.location,\n scrollKey = _this$props.scrollKey;\n if (!node) return;\n node.addEventListener(\"scroll\", function () {\n _this2.props.context.save(location, scrollKey, node.scrollTop);\n });\n var position = this.props.context.read(location, scrollKey);\n node.scrollTo(0, position || 0);\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return ScrollContainerImplementation;\n}(React.Component);\n\nvar ScrollContainer = function ScrollContainer(props) {\n return /*#__PURE__*/React.createElement(_router.Location, null, function (_ref) {\n var location = _ref.location;\n return /*#__PURE__*/React.createElement(_scrollHandler.ScrollContext.Consumer, null, function (context) {\n return /*#__PURE__*/React.createElement(ScrollContainerImplementation, (0, _extends2.default)({}, props, {\n context: context,\n location: location\n }));\n });\n });\n};\n\nexports.ScrollContainer = ScrollContainer;\nScrollContainer.propTypes = propTypes;","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","const set = require('regenerate')();\nset.addRange(0x0, 0x10FFFF);\nmodule.exports = set;","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","var isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","import { useStaticQuery, graphql } from 'gatsby'\n\nexport const useDbQuery = () => {\n try {\n const data = useStaticQuery(graphql`\n query {\n doczDb {\n id\n db\n }\n }\n `)\n\n return JSON.parse(data.doczDb.db)\n } catch (err) {\n console.error(err)\n console.error('Error when parsing docz database')\n return {}\n }\n}\n","import React from 'react'\n\nconst Wrapper = ({ children }) => <>{children}\nexport default Wrapper\n","import verticalRhythm from 'compass-vertical-rhythm';\nimport ms from 'modularscale';\nimport assign from 'object-assign';\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar heading = {\n fontFamily: 'heading',\n lineHeight: 'heading',\n fontWeight: 'heading'\n};\nvar styles = {\n root: {\n fontFamily: 'body',\n fontSize: 2,\n fontWeight: 'body',\n lineHeight: 'body'\n },\n img: {\n maxWidth: '100%'\n },\n h1: assign({\n fontSize: 5\n }, heading),\n h2: assign({\n fontSize: 4\n }, heading),\n h3: assign({\n fontSize: 3\n }, heading),\n h4: assign({\n fontSize: 2\n }, heading),\n h5: assign({\n fontSize: 1\n }, heading),\n h6: assign({\n fontSize: 0\n }, heading),\n ul: {\n listStylePosition: 'outside',\n listStyleImage: 'none',\n ml: 3\n },\n ol: {\n listStylePosition: 'outside',\n listStyleImage: 'none',\n ml: 3\n },\n li: {\n mb: 2,\n pl: 0,\n ol: {\n my: 2,\n ml: 3\n },\n ul: {\n my: 2,\n ml: 3\n },\n p: {\n mb: 2\n }\n },\n p: {},\n table: {\n borderCollapse: 'collapse',\n width: '100%'\n },\n th: {\n textAlign: 'left',\n borderBottom: '1px solid',\n px: 2,\n py: 1,\n ':first-child': {\n pl: 0\n },\n ':last-child': {\n pr: 0\n }\n },\n td: {\n textAlign: 'left',\n borderBottom: '1px solid',\n px: 2,\n py: 1,\n mt: '-1px',\n ':first-child': {\n pl: 0\n },\n ':last-child': {\n pr: 0\n }\n },\n blockquote: {\n mx: 3\n },\n hr: {\n border: 0,\n borderBottom: '1px solid',\n mt: '-1px',\n mb: 3\n },\n b: {\n fontWeight: 'bold'\n },\n strong: {\n fontWeight: 'bold'\n },\n code: {\n fontSize: '85%'\n },\n pre: {\n fontSize: '85%',\n padding: 3\n }\n};\nvar headings = ['h6', 'h5', 'h4', 'h3', 'h2', 'h1'];\nvar blockElements = [].concat(headings, ['ul', 'ol', 'p', 'pre', 'table', 'blockquote', 'img', 'hr']);\nblockElements.forEach(function (tag) {\n assign(styles, _defineProperty({}, tag, assign({\n padding: 0,\n margin: 0,\n marginBottom: 3\n }, styles[tag])));\n});\n\n// - creates base theme object\n// - uses a static theme.styles object for consumption in theme-ui\n// - ignores overrideThemeStyles\n// - does not include color styles\n// - should be mostly compatible with existing typography.js themes\n\nvar defaults = {\n baseFontSize: 16,\n baseLineHeight: 1.45,\n headerLineHeight: 1.1,\n scaleRatio: 2,\n googleFonts: [],\n headerFontFamily: ['-apple-system', 'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 'sans-serif'],\n bodyFontFamily: ['georgia', 'serif'],\n headerWeight: 'bold',\n bodyWeight: 'normal',\n boldWeight: 'bold',\n includeNormalize: true,\n blockMarginBottom: 1\n};\nvar toUnitless = function toUnitless(val) {\n return parseFloat(val);\n};\nvar getScale = function getScale(opts) {\n return function (value) {\n return ms(value, opts.scaleRatio) * opts.baseFontSize;\n };\n};\nvar getSpace = function getSpace(result, opts) {\n var n = toUnitless(result.rhythm(opts.blockMarginBottom));\n return [0, 1 / 4, 1 / 2, 1, 2, 4, 8].map(function (v) {\n return v * n;\n });\n}; // genericFontFamilies, wrapFontFamily adapted from typography.js\n// Wrap font names in quotes, unless the font name is actually a keyword.\n// See https://stackoverflow.com/a/13752149 and https://www.w3.org/TR/CSS2/fonts.html#font-family-prop\n\nvar genericFontFamilies = ['inherit', 'default', 'serif', 'sans-serif', 'monospace', 'fantasy', 'cursive', '-apple-system', 'system-ui'];\nvar wrapFontFamily = function wrapFontFamily(fontFamily) {\n return genericFontFamilies.includes(fontFamily) ? fontFamily : \"'\".concat(fontFamily, \"'\");\n};\nvar stackFonts = function stackFonts(fonts) {\n return fonts.map(wrapFontFamily).join(', ');\n};\nvar getFonts = function getFonts(result, opts) {\n var body = stackFonts(opts.bodyFontFamily);\n var heading = stackFonts(opts.headerFontFamily);\n return {\n body: body,\n heading: heading\n };\n};\nvar getFontSizes = function getFontSizes(result, opts) {\n var scale = getScale(opts);\n return [-1.5 / 5, -1 / 5, 0, 2 / 5, 3 / 5, 1].map(scale);\n};\nvar getLineHeights = function getLineHeights(result, opts) {\n var body = opts.baseLineHeight;\n var heading = opts.headerLineHeight;\n return {\n body: body,\n heading: heading\n };\n};\nvar getFontWeights = function getFontWeights(result, opts) {\n var body = opts.bodyWeight;\n var bold = opts.boldWeight;\n var heading = opts.headerWeight;\n return {\n body: body,\n bold: bold,\n heading: heading\n };\n};\nvar toTheme = function toTheme() {\n var _opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var opts = _objectSpread2({}, defaults, {}, _opts); // enforce unitless values\n\n opts.baseFontSize = toUnitless(opts.baseFontSize);\n opts.rhythmUnit = 'px';\n var typo = verticalRhythm(opts);\n var theme = {};\n typo.options = opts;\n theme.space = getSpace(typo, opts);\n theme.fonts = getFonts(typo, opts);\n theme.fontSizes = getFontSizes(typo, opts);\n theme.fontWeights = getFontWeights(typo, opts);\n theme.lineHeights = getLineHeights(typo, opts);\n return _objectSpread2({}, theme, {\n styles: styles,\n typography: typo\n });\n};\nexport { toTheme, styles };","export const white = '#FFFFFF'\nexport const grayUltraLight = '#FCFBFA'\nexport const grayExtraLight = '#F5F6F7'\nexport const grayLight = '#CED4DE'\nexport const gray = '#67788a'\nexport const grayDark = '#2D3747'\nexport const grayExtraDark = '#1D2330'\nexport const dark = '#13161F'\nexport const blueLight = '#e9f2fa'\nexport const blue = '#0B5FFF'\nexport const skyBlue = '#1FB6FF'\nexport const negative = '#EB4D4B'\n","export default {\n plain: {\n fontFamily: 'Inconsolata',\n color: '#d6deeb',\n backgroundColor: '#13161F',\n },\n styles: [\n {\n types: ['changed'],\n style: {\n color: 'rgb(162, 191, 252)',\n fontStyle: 'italic',\n },\n },\n {\n types: ['deleted'],\n style: {\n color: 'rgba(239, 83, 80, 0.56)',\n fontStyle: 'italic',\n },\n },\n {\n types: ['inserted', 'attr-name'],\n style: {\n color: 'rgb(173, 219, 103)',\n fontStyle: 'italic',\n },\n },\n {\n types: ['comment'],\n style: {\n color: 'rgb(99, 119, 119)',\n fontStyle: 'italic',\n },\n },\n {\n types: ['string', 'url'],\n style: {\n color: 'rgb(173, 219, 103)',\n },\n },\n {\n types: ['variable'],\n style: {\n color: 'rgb(214, 222, 235)',\n },\n },\n {\n types: ['number'],\n style: {\n color: 'rgb(247, 140, 108)',\n },\n },\n {\n types: ['builtin', 'char', 'constant', 'function'],\n style: {\n color: 'rgb(130, 170, 255)',\n },\n },\n {\n // This was manually added after the auto-generation\n // so that punctuations are not italicised\n types: ['punctuation'],\n style: {\n color: 'rgb(199, 146, 234)',\n },\n },\n {\n types: ['selector', 'doctype'],\n style: {\n color: 'rgb(199, 146, 234)',\n fontStyle: 'italic',\n },\n },\n {\n types: ['class-name'],\n style: {\n color: 'rgb(255, 203, 139)',\n },\n },\n {\n types: ['tag', 'operator', 'keyword'],\n style: {\n color: 'rgb(127, 219, 202)',\n },\n },\n {\n types: ['boolean'],\n style: {\n color: 'rgb(255, 88, 116)',\n },\n },\n {\n types: ['property'],\n style: {\n color: 'rgb(128, 203, 196)',\n },\n },\n {\n types: ['namespace'],\n style: {\n color: 'rgb(178, 204, 214)',\n },\n },\n ],\n}\n","export default {\n plain: {\n fontFamily: 'Inconsolata',\n color: '#393A34',\n backgroundColor: '#f6f8fa',\n },\n styles: [\n {\n types: ['comment', 'prolog', 'doctype', 'cdata'],\n style: {\n color: '#999988',\n fontStyle: 'italic',\n },\n },\n {\n types: ['namespace'],\n style: {\n opacity: 0.7,\n },\n },\n {\n types: ['string', 'attr-value'],\n style: {\n color: '#e3116c',\n },\n },\n {\n types: ['punctuation', 'operator'],\n style: {\n color: '#393A34',\n },\n },\n {\n types: [\n 'entity',\n 'url',\n 'symbol',\n 'number',\n 'boolean',\n 'variable',\n 'constant',\n 'property',\n 'regex',\n 'inserted',\n ],\n style: {\n color: '#36acaa',\n },\n },\n {\n types: ['atrule', 'keyword', 'attr-name', 'selector'],\n style: {\n color: '#00a4db',\n },\n },\n {\n types: ['function', 'deleted', 'tag'],\n style: {\n color: '#d73a49',\n },\n },\n {\n types: ['function-variable'],\n style: {\n color: '#6f42c1',\n },\n },\n {\n types: ['tag', 'selector', 'keyword'],\n style: {\n color: '#00009f',\n },\n },\n ],\n}\n","import * as colors from './colors'\nimport prismDark from './prism/dark'\nimport prismLight from './prism/light'\n\nexport const light = {\n ...colors,\n primary: colors.blue,\n text: colors.grayDark,\n muted: colors.gray,\n link: colors.blue,\n background: colors.white,\n border: colors.grayLight,\n sidebar: {\n bg: colors.white,\n navGroup: colors.grayDark,\n navLink: colors.grayDark,\n navLinkActive: colors.blue,\n tocLink: colors.gray,\n tocLinkActive: colors.grayExtraDark,\n },\n header: {\n bg: colors.grayExtraLight,\n text: colors.grayDark,\n border: colors.grayLight,\n button: {\n bg: colors.blue,\n color: colors.white,\n },\n },\n props: {\n bg: colors.grayUltraLight,\n text: colors.grayDark,\n highlight: colors.blue,\n defaultValue: colors.gray,\n descriptionText: colors.grayDark,\n descriptionBg: colors.white,\n },\n playground: {\n bg: colors.white,\n border: colors.grayLight,\n },\n blockquote: {\n bg: colors.grayExtraLight,\n border: colors.grayLight,\n color: colors.gray,\n },\n prism: {\n ...prismLight,\n },\n}\n\nexport const dark = {\n ...colors,\n primary: colors.skyBlue,\n text: colors.grayExtraLight,\n muted: colors.gray,\n link: colors.skyBlue,\n background: colors.grayExtraDark,\n border: colors.grayDark,\n sidebar: {\n bg: colors.grayExtraDark,\n navGroup: colors.gray,\n navLink: colors.grayLight,\n navLinkActive: colors.skyBlue,\n tocLink: colors.gray,\n tocLinkActive: colors.grayLight,\n },\n header: {\n bg: colors.dark,\n text: colors.grayLight,\n border: colors.grayDark,\n button: {\n bg: colors.skyBlue,\n color: colors.white,\n },\n },\n props: {\n bg: colors.dark,\n text: colors.gray,\n highlight: colors.skyBlue,\n defaultValue: colors.grayDark,\n descriptionText: colors.gray,\n descriptionBg: colors.grayExtraDark,\n },\n playground: {\n bg: colors.dark,\n border: colors.grayDark,\n },\n blockquote: {\n bg: colors.grayDark,\n border: colors.gray,\n color: colors.gray,\n },\n prism: {\n ...prismDark,\n },\n}\n","import dark from './dark'\nimport light from './light'\n\nexport default {\n dark,\n light,\n}\n","const styles = {\n Container: {\n p: 4,\n maxWidth: 1280,\n },\n root: {\n fontSize: 3,\n color: 'text',\n bg: 'background',\n },\n a: {\n color: 'primary',\n textDecoration: 'none',\n '&:hover': {\n color: 'secondary',\n textDecoration: 'underline',\n },\n },\n h1: {\n fontSize: 6,\n },\n h2: {\n fontSize: 5,\n },\n h3: {\n fontSize: 4,\n },\n h4: {\n fontSize: 3,\n },\n h5: {\n fontSize: 2,\n },\n h6: {\n fontSize: 1,\n },\n li: {\n marginBottom: 1,\n },\n blockquote: {\n my: 4,\n mx: 0,\n py: 3,\n px: 4,\n bg: 'blockquote.bg',\n borderLeft: t => `5px solid ${t.colors.blockquote.border}`,\n color: 'blockquote.color',\n fontStyle: 'italic',\n '> p': {\n m: 0,\n },\n },\n code: {\n fontFamily: 'monospace',\n },\n inlineCode: {\n fontFamily: 'monospace',\n },\n pre: {\n my: 4,\n p: 3,\n variant: 'prism',\n textAlign: 'left',\n fontFamily: 'monospace',\n borderRadius: 'radius',\n },\n table: {\n width: '100%',\n my: 4,\n borderCollapse: 'separate',\n borderSpacing: 0,\n [['th', 'td']]: {\n textAlign: 'left',\n py: '4px',\n pr: '4px',\n pl: 0,\n borderColor: 'muted',\n borderBottomStyle: 'solid',\n },\n },\n th: {\n verticalAlign: 'bottom',\n borderBottomWidth: '2px',\n },\n td: {\n verticalAlign: 'top',\n borderBottomWidth: '1px',\n },\n hr: {\n border: 0,\n borderBottom: t => `1px solid ${t.colors.border}`,\n },\n}\n\nexport default styles\n","import moraga from 'typography-theme-moraga'\nimport { toTheme } from '@theme-ui/typography'\nimport { merge } from 'lodash/fp'\n\nimport * as modes from './modes'\nimport prism from './prism'\nimport styles from './styles'\n\nmoraga.headerWeight = 700\nconst typography = toTheme(moraga)\n\nexport default merge(typography, {\n initialColorMode: 'light',\n // Show errors above playground editor\n showLiveError: true,\n // Show preview of the code inside playground\n showLivePreview: true,\n // Show editor when a playground is rendered\n showPlaygroundEditor: true,\n // Show dark/light mode switch toggle in header\n showDarkModeSwitch: true,\n // Display edit this page button on every page\n showMarkdownEditButton: true,\n // Wrap the playground editor and preview in iframes to avoid style/script collisions\n useScopingInPlayground: false,\n colors: {\n ...modes.light,\n modes: {\n dark: modes.dark,\n },\n },\n fonts: {\n monospace: 'Inconsolata',\n },\n fontSizes: [12, 14, 16, 20, 24, 32, 48, 64],\n fontWeights: {\n body: 400,\n heading: 700,\n bold: 700,\n },\n lineHeights: {\n body: 1.5,\n heading: 1.125,\n },\n letterSpacings: {\n body: 'normal',\n caps: '0.2em',\n },\n space: [0, 4, 8, 16, 32, 48, 64, 80, 100],\n radii: {\n square: 0,\n radius: 4,\n rounded: 10,\n },\n styles,\n prism,\n})\n","/** @jsx jsx */\nimport { jsx } from 'theme-ui'\n\nconst heading = Tag => {\n const Component = props => {\n return !!props.id ? (\n \n \n {props.children}\n \n \n ) : (\n \n )\n }\n\n Component.displayName = Tag\n return Component\n}\n\nexport const h2 = heading('h2')\nexport const h3 = heading('h3')\nexport const h4 = heading('h4')\nexport const h5 = heading('h5')\nexport const h6 = heading('h6')\n","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n this._insertTag = function (tag) {\n var before;\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n _this.container.insertBefore(tag, before);\n _this.tags.push(tag);\n };\n this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n var _proto = StyleSheet.prototype;\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n var tag = this.tags[this.tags.length - 1];\n if (process.env.NODE_ENV !== 'production') {\n var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n // this would only cause problem in speedy mode\n // but we don't want enabling speedy to affect the observable behavior\n // so we report this error at all times\n console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n }\n this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n }\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production' && !/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear|-ms-expand|-ms-reveal){/.test(rule)) {\n console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n this.ctr++;\n };\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode && tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n if (process.env.NODE_ENV !== 'production') {\n this._alreadyInsertedOrderInsensitiveRule = false;\n }\n };\n return StyleSheet;\n}();\nexport { StyleSheet };","var e = \"-ms-\";\nvar r = \"-moz-\";\nvar a = \"-webkit-\";\nvar n = \"comm\";\nvar c = \"rule\";\nvar s = \"decl\";\nvar t = \"@page\";\nvar u = \"@media\";\nvar i = \"@import\";\nvar f = \"@charset\";\nvar o = \"@viewport\";\nvar l = \"@supports\";\nvar v = \"@document\";\nvar p = \"@namespace\";\nvar h = \"@keyframes\";\nvar b = \"@font-face\";\nvar w = \"@counter-style\";\nvar d = \"@font-feature-values\";\nvar $ = \"@layer\";\nvar g = Math.abs;\nvar k = String.fromCharCode;\nvar m = Object.assign;\nfunction x(e, r) {\n return O(e, 0) ^ 45 ? (((r << 2 ^ O(e, 0)) << 2 ^ O(e, 1)) << 2 ^ O(e, 2)) << 2 ^ O(e, 3) : 0;\n}\nfunction y(e) {\n return e.trim();\n}\nfunction j(e, r) {\n return (e = r.exec(e)) ? e[0] : e;\n}\nfunction z(e, r, a) {\n return e.replace(r, a);\n}\nfunction C(e, r) {\n return e.indexOf(r);\n}\nfunction O(e, r) {\n return e.charCodeAt(r) | 0;\n}\nfunction A(e, r, a) {\n return e.slice(r, a);\n}\nfunction M(e) {\n return e.length;\n}\nfunction S(e) {\n return e.length;\n}\nfunction q(e, r) {\n return r.push(e), e;\n}\nfunction B(e, r) {\n return e.map(r).join(\"\");\n}\nvar D = 1;\nvar E = 1;\nvar F = 0;\nvar G = 0;\nvar H = 0;\nvar I = \"\";\nfunction J(e, r, a, n, c, s, t) {\n return {\n value: e,\n root: r,\n parent: a,\n type: n,\n props: c,\n children: s,\n line: D,\n column: E,\n length: t,\n return: \"\"\n };\n}\nfunction K(e, r) {\n return m(J(\"\", null, null, \"\", null, null, 0), e, {\n length: -e.length\n }, r);\n}\nfunction L() {\n return H;\n}\nfunction N() {\n H = G > 0 ? O(I, --G) : 0;\n if (E--, H === 10) E = 1, D--;\n return H;\n}\nfunction P() {\n H = G < F ? O(I, G++) : 0;\n if (E++, H === 10) E = 1, D++;\n return H;\n}\nfunction Q() {\n return O(I, G);\n}\nfunction R() {\n return G;\n}\nfunction T(e, r) {\n return A(I, e, r);\n}\nfunction U(e) {\n switch (e) {\n case 0:\n case 9:\n case 10:\n case 13:\n case 32:\n return 5;\n case 33:\n case 43:\n case 44:\n case 47:\n case 62:\n case 64:\n case 126:\n case 59:\n case 123:\n case 125:\n return 4;\n case 58:\n return 3;\n case 34:\n case 39:\n case 40:\n case 91:\n return 2;\n case 41:\n case 93:\n return 1;\n }\n return 0;\n}\nfunction V(e) {\n return D = E = 1, F = M(I = e), G = 0, [];\n}\nfunction W(e) {\n return I = \"\", e;\n}\nfunction X(e) {\n return y(T(G - 1, re(e === 91 ? e + 2 : e === 40 ? e + 1 : e)));\n}\nfunction Y(e) {\n return W(_(V(e)));\n}\nfunction Z(e) {\n while (H = Q()) if (H < 33) P();else break;\n return U(e) > 2 || U(H) > 3 ? \"\" : \" \";\n}\nfunction _(e) {\n while (P()) switch (U(H)) {\n case 0:\n q(ne(G - 1), e);\n break;\n case 2:\n q(X(H), e);\n break;\n default:\n q(k(H), e);\n }\n return e;\n}\nfunction ee(e, r) {\n while (--r && P()) if (H < 48 || H > 102 || H > 57 && H < 65 || H > 70 && H < 97) break;\n return T(e, R() + (r < 6 && Q() == 32 && P() == 32));\n}\nfunction re(e) {\n while (P()) switch (H) {\n case e:\n return G;\n case 34:\n case 39:\n if (e !== 34 && e !== 39) re(H);\n break;\n case 40:\n if (e === 41) re(e);\n break;\n case 92:\n P();\n break;\n }\n return G;\n}\nfunction ae(e, r) {\n while (P()) if (e + H === 47 + 10) break;else if (e + H === 42 + 42 && Q() === 47) break;\n return \"/*\" + T(r, G - 1) + \"*\" + k(e === 47 ? e : P());\n}\nfunction ne(e) {\n while (!U(Q())) P();\n return T(e, G);\n}\nfunction ce(e) {\n return W(se(\"\", null, null, null, [\"\"], e = V(e), 0, [0], e));\n}\nfunction se(e, r, a, n, c, s, t, u, i) {\n var f = 0;\n var o = 0;\n var l = t;\n var v = 0;\n var p = 0;\n var h = 0;\n var b = 1;\n var w = 1;\n var d = 1;\n var $ = 0;\n var g = \"\";\n var m = c;\n var x = s;\n var y = n;\n var j = g;\n while (w) switch (h = $, $ = P()) {\n case 40:\n if (h != 108 && O(j, l - 1) == 58) {\n if (C(j += z(X($), \"&\", \"&\\f\"), \"&\\f\") != -1) d = -1;\n break;\n }\n case 34:\n case 39:\n case 91:\n j += X($);\n break;\n case 9:\n case 10:\n case 13:\n case 32:\n j += Z(h);\n break;\n case 92:\n j += ee(R() - 1, 7);\n continue;\n case 47:\n switch (Q()) {\n case 42:\n case 47:\n q(ue(ae(P(), R()), r, a), i);\n break;\n default:\n j += \"/\";\n }\n break;\n case 123 * b:\n u[f++] = M(j) * d;\n case 125 * b:\n case 59:\n case 0:\n switch ($) {\n case 0:\n case 125:\n w = 0;\n case 59 + o:\n if (d == -1) j = z(j, /\\f/g, \"\");\n if (p > 0 && M(j) - l) q(p > 32 ? ie(j + \";\", n, a, l - 1) : ie(z(j, \" \", \"\") + \";\", n, a, l - 2), i);\n break;\n case 59:\n j += \";\";\n default:\n q(y = te(j, r, a, f, o, c, u, g, m = [], x = [], l), s);\n if ($ === 123) if (o === 0) se(j, r, y, y, m, s, l, u, x);else switch (v === 99 && O(j, 3) === 110 ? 100 : v) {\n case 100:\n case 108:\n case 109:\n case 115:\n se(e, y, y, n && q(te(e, y, y, 0, 0, c, u, g, c, m = [], l), x), c, x, l, u, n ? m : x);\n break;\n default:\n se(j, y, y, y, [\"\"], x, 0, u, x);\n }\n }\n f = o = p = 0, b = d = 1, g = j = \"\", l = t;\n break;\n case 58:\n l = 1 + M(j), p = h;\n default:\n if (b < 1) if ($ == 123) --b;else if ($ == 125 && b++ == 0 && N() == 125) continue;\n switch (j += k($), $ * b) {\n case 38:\n d = o > 0 ? 1 : (j += \"\\f\", -1);\n break;\n case 44:\n u[f++] = (M(j) - 1) * d, d = 1;\n break;\n case 64:\n if (Q() === 45) j += X(P());\n v = Q(), o = l = M(g = j += ne(R())), $++;\n break;\n case 45:\n if (h === 45 && M(j) == 2) b = 0;\n }\n }\n return s;\n}\nfunction te(e, r, a, n, s, t, u, i, f, o, l) {\n var v = s - 1;\n var p = s === 0 ? t : [\"\"];\n var h = S(p);\n for (var b = 0, w = 0, d = 0; b < n; ++b) for (var $ = 0, k = A(e, v + 1, v = g(w = u[b])), m = e; $ < h; ++$) if (m = y(w > 0 ? p[$] + \" \" + k : z(k, /&\\f/g, p[$]))) f[d++] = m;\n return J(e, r, a, s === 0 ? c : i, f, o, l);\n}\nfunction ue(e, r, a) {\n return J(e, r, a, n, k(L()), A(e, 2, -2), 0);\n}\nfunction ie(e, r, a, n) {\n return J(e, r, a, s, A(e, 0, n), A(e, n + 1, -1), n);\n}\nfunction fe(n, c, s) {\n switch (x(n, c)) {\n case 5103:\n return a + \"print-\" + n + n;\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921:\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005:\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855:\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return a + n + n;\n case 4789:\n return r + n + n;\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return a + n + r + n + e + n + n;\n case 5936:\n switch (O(n, c + 11)) {\n case 114:\n return a + n + e + z(n, /[svh]\\w+-[tblr]{2}/, \"tb\") + n;\n case 108:\n return a + n + e + z(n, /[svh]\\w+-[tblr]{2}/, \"tb-rl\") + n;\n case 45:\n return a + n + e + z(n, /[svh]\\w+-[tblr]{2}/, \"lr\") + n;\n }\n case 6828:\n case 4268:\n case 2903:\n return a + n + e + n + n;\n case 6165:\n return a + n + e + \"flex-\" + n + n;\n case 5187:\n return a + n + z(n, /(\\w+).+(:[^]+)/, a + \"box-$1$2\" + e + \"flex-$1$2\") + n;\n case 5443:\n return a + n + e + \"flex-item-\" + z(n, /flex-|-self/g, \"\") + (!j(n, /flex-|baseline/) ? e + \"grid-row-\" + z(n, /flex-|-self/g, \"\") : \"\") + n;\n case 4675:\n return a + n + e + \"flex-line-pack\" + z(n, /align-content|flex-|-self/g, \"\") + n;\n case 5548:\n return a + n + e + z(n, \"shrink\", \"negative\") + n;\n case 5292:\n return a + n + e + z(n, \"basis\", \"preferred-size\") + n;\n case 6060:\n return a + \"box-\" + z(n, \"-grow\", \"\") + a + n + e + z(n, \"grow\", \"positive\") + n;\n case 4554:\n return a + z(n, /([^-])(transform)/g, \"$1\" + a + \"$2\") + n;\n case 6187:\n return z(z(z(n, /(zoom-|grab)/, a + \"$1\"), /(image-set)/, a + \"$1\"), n, \"\") + n;\n case 5495:\n case 3959:\n return z(n, /(image-set\\([^]*)/, a + \"$1\" + \"$`$1\");\n case 4968:\n return z(z(n, /(.+:)(flex-)?(.*)/, a + \"box-pack:$3\" + e + \"flex-pack:$3\"), /s.+-b[^;]+/, \"justify\") + a + n + n;\n case 4200:\n if (!j(n, /flex-|baseline/)) return e + \"grid-column-align\" + A(n, c) + n;\n break;\n case 2592:\n case 3360:\n return e + z(n, \"template-\", \"\") + n;\n case 4384:\n case 3616:\n if (s && s.some(function (e, r) {\n return c = r, j(e.props, /grid-\\w+-end/);\n })) {\n return ~C(n + (s = s[c].value), \"span\") ? n : e + z(n, \"-start\", \"\") + n + e + \"grid-row-span:\" + (~C(s, \"span\") ? j(s, /\\d+/) : +j(s, /\\d+/) - +j(n, /\\d+/)) + \";\";\n }\n return e + z(n, \"-start\", \"\") + n;\n case 4896:\n case 4128:\n return s && s.some(function (e) {\n return j(e.props, /grid-\\w+-start/);\n }) ? n : e + z(z(n, \"-end\", \"-span\"), \"span \", \"\") + n;\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return z(n, /(.+)-inline(.+)/, a + \"$1$2\") + n;\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n if (M(n) - 1 - c > 6) switch (O(n, c + 1)) {\n case 109:\n if (O(n, c + 4) !== 45) break;\n case 102:\n return z(n, /(.+:)(.+)-([^]+)/, \"$1\" + a + \"$2-$3\" + \"$1\" + r + (O(n, c + 3) == 108 ? \"$3\" : \"$2-$3\")) + n;\n case 115:\n return ~C(n, \"stretch\") ? fe(z(n, \"stretch\", \"fill-available\"), c, s) + n : n;\n }\n break;\n case 5152:\n case 5920:\n return z(n, /(.+?):(\\d+)(\\s*\\/\\s*(span)?\\s*(\\d+))?(.*)/, function (r, a, c, s, t, u, i) {\n return e + a + \":\" + c + i + (s ? e + a + \"-span:\" + (t ? u : +u - +c) + i : \"\") + n;\n });\n case 4949:\n if (O(n, c + 6) === 121) return z(n, \":\", \":\" + a) + n;\n break;\n case 6444:\n switch (O(n, O(n, 14) === 45 ? 18 : 11)) {\n case 120:\n return z(n, /(.+:)([^;\\s!]+)(;|(\\s+)?!.+)?/, \"$1\" + a + (O(n, 14) === 45 ? \"inline-\" : \"\") + \"box$3\" + \"$1\" + a + \"$2$3\" + \"$1\" + e + \"$2box$3\") + n;\n case 100:\n return z(n, \":\", \":\" + e) + n;\n }\n break;\n case 5719:\n case 2647:\n case 2135:\n case 3927:\n case 2391:\n return z(n, \"scroll-\", \"scroll-snap-\") + n;\n }\n return n;\n}\nfunction oe(e, r) {\n var a = \"\";\n var n = S(e);\n for (var c = 0; c < n; c++) a += r(e[c], c, e, r) || \"\";\n return a;\n}\nfunction le(e, r, a, t) {\n switch (e.type) {\n case $:\n if (e.children.length) break;\n case i:\n case s:\n return e.return = e.return || e.value;\n case n:\n return \"\";\n case h:\n return e.return = e.value + \"{\" + oe(e.children, t) + \"}\";\n case c:\n e.value = e.props.join(\",\");\n }\n return M(a = oe(e.children, t)) ? e.return = e.value + \"{\" + a + \"}\" : \"\";\n}\nfunction ve(e) {\n var r = S(e);\n return function (a, n, c, s) {\n var t = \"\";\n for (var u = 0; u < r; u++) t += e[u](a, n, c, s) || \"\";\n return t;\n };\n}\nfunction pe(e) {\n return function (r) {\n if (!r.root) if (r = r.return) e(r);\n };\n}\nfunction he(n, t, u, i) {\n if (n.length > -1) if (!n.return) switch (n.type) {\n case s:\n n.return = fe(n.value, n.length, u);\n return;\n case h:\n return oe([K(n, {\n value: z(n.value, \"@\", \"@\" + a)\n })], i);\n case c:\n if (n.length) return B(n.props, function (c) {\n switch (j(c, /(::plac\\w+|:read-\\w+)/)) {\n case \":read-only\":\n case \":read-write\":\n return oe([K(n, {\n props: [z(c, /:(read-\\w+)/, \":\" + r + \"$1\")]\n })], i);\n case \"::placeholder\":\n return oe([K(n, {\n props: [z(c, /:(plac\\w+)/, \":\" + a + \"input-$1\")]\n }), K(n, {\n props: [z(c, /:(plac\\w+)/, \":\" + r + \"$1\")]\n }), K(n, {\n props: [z(c, /:(plac\\w+)/, e + \"input-$1\")]\n })], i);\n }\n return \"\";\n });\n }\n}\nfunction be(e) {\n switch (e.type) {\n case c:\n e.props = e.props.map(function (r) {\n return B(Y(r), function (r, a, n) {\n switch (O(r, 0)) {\n case 12:\n return A(r, 1, M(r));\n case 0:\n case 40:\n case 43:\n case 62:\n case 126:\n return r;\n case 58:\n if (n[++a] === \"global\") n[a] = \"\", n[++a] = \"\\f\" + A(n[a], a = 1, -1);\n case 32:\n return a === 1 ? \"\" : r;\n default:\n switch (a) {\n case 0:\n e = r;\n return S(n) > 1 ? \"\" : r;\n case a = S(n) - 1:\n case 2:\n return a === 2 ? r + e + e : r + e;\n default:\n return r;\n }\n }\n });\n });\n }\n}\nexport { f as CHARSET, n as COMMENT, w as COUNTER_STYLE, s as DECLARATION, v as DOCUMENT, b as FONT_FACE, d as FONT_FEATURE_VALUES, i as IMPORT, h as KEYFRAMES, $ as LAYER, u as MEDIA, r as MOZ, e as MS, p as NAMESPACE, t as PAGE, c as RULESET, l as SUPPORTS, o as VIEWPORT, a as WEBKIT, g as abs, V as alloc, q as append, m as assign, R as caret, L as char, H as character, I as characters, O as charat, E as column, B as combine, ue as comment, ae as commenter, ce as compile, K as copy, W as dealloc, ie as declaration, X as delimit, re as delimiter, ee as escaping, k as from, x as hash, ne as identifier, C as indexof, F as length, D as line, j as match, ve as middleware, be as namespace, P as next, J as node, se as parse, Q as peek, G as position, fe as prefix, he as prefixer, N as prev, z as replace, te as ruleset, pe as rulesheet, oe as serialize, S as sizeof, T as slice, le as stringify, M as strlen, A as substr, U as token, Y as tokenize, _ as tokenizer, y as trim, Z as whitespace };","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\nexport { memoize as default };","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, COMMENT, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n if (token(character)) {\n break;\n }\n next();\n }\n return slice(begin, position);\n};\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n case 2:\n parsed[index] += delimit(character);\n break;\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n return parsed;\n};\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent ||\n // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n var value = element.value,\n parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */ && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n if (isImplicitRule) {\n return;\n }\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n if (\n // charcode for l\n value.charCodeAt(0) === 108 &&\n // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\nvar isIgnoringComment = function isIgnoringComment(element) {\n return element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n return function (element, index, children) {\n if (element.type !== 'rule' || cache.compat) return;\n var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n if (unsafePseudoClasses) {\n var isNested = !!element.parent; // in nested rules comments become children of the \"auto-inserted\" rule and that's always the `element.parent`\n //\n // considering this input:\n // .a {\n // .b /* comm */ {}\n // color: hotpink;\n // }\n // we get output corresponding to this:\n // .a {\n // & {\n // /* comm */\n // color: hotpink;\n // }\n // .b {}\n // }\n\n var commentContainer = isNested ? element.parent.children :\n // global rule at the root level\n children;\n for (var i = commentContainer.length - 1; i >= 0; i--) {\n var node = commentContainer[i];\n if (node.line < element.line) {\n break;\n } // it is quite weird but comments are *usually* put at `column: element.column - 1`\n // so we seek *from the end* for the node that is earlier than the rule's `element` and check that\n // this will also match inputs like this:\n // .a {\n // /* comm */\n // .b {}\n // }\n //\n // but that is fine\n //\n // it would be the easiest to change the placement of the comment to be the first child of the rule:\n // .a {\n // .b { /* comm */ }\n // }\n // with such inputs we wouldn't have to search for the comment at all\n // TODO: consider changing this comment placement in the next major version\n\n if (node.column < element.column) {\n if (isIgnoringComment(node)) {\n return;\n }\n break;\n }\n }\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n });\n }\n };\n};\nvar isImportRule = function isImportRule(element) {\n return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n for (var i = index - 1; i >= 0; i--) {\n if (!isImportRule(children[i])) {\n return true;\n }\n }\n return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\nvar nullifyElement = function nullifyElement(element) {\n element.type = '';\n element.value = '';\n element[\"return\"] = '';\n element.children = '';\n element.props = '';\n};\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n if (!isImportRule(element)) {\n return;\n }\n if (element.parent) {\n console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n nullifyElement(element);\n } else if (isPrependedWithRegularRules(index, children)) {\n console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n nullifyElement(element);\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n return WEBKIT + value + MS + value + value;\n }\n return value;\n}\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n return '';\n });\n }\n};\nvar defaultStylisPlugins = [prefixer];\nvar createCache = function createCache(options) {\n var key = options.key;\n if (process.env.NODE_ENV !== 'production' && !key) {\n throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n }\n if (key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n var inserted = {};\n var container;\n var nodesToHydrate = [];\n {\n container = options.container || document.head;\n Array.prototype.forEach.call(\n // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' '); // $FlowFixMe\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n nodesToHydrate.push(node);\n });\n }\n var _insert;\n var omnipresentPlugins = [compat, removeLabel];\n if (process.env.NODE_ENV !== 'production') {\n omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n get compat() {\n return cache.compat;\n }\n }), incorrectImportAlarm);\n }\n {\n var currentSheet;\n var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n if (!element.root) {\n if (element[\"return\"]) {\n currentSheet.insert(element[\"return\"]);\n } else if (element.value && element.type !== COMMENT) {\n // insert empty rule in non-production environments\n // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n currentSheet.insert(element.value + \"{}\");\n }\n }\n } : rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n currentSheet = {\n insert: function insert(rule) {\n sheet.insert(rule + serialized.map);\n }\n };\n }\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\nexport { createCache as default };","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n if (\n // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false ||\n // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n do {\n cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n current = current.next;\n } while (current !== undefined);\n }\n};\nexport { getRegisteredStyles, insertStyles, registerStyles };","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\nexport { unitlessKeys as default };","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n return value;\n};\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(var|attr|counters?|url|element|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n var processed = oldProcessStyleValue(key, value);\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n return processed;\n };\n}\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error(noComponentSelectorMessage);\n }\n return interpolation;\n }\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n var styles = interpolation.styles + \";\";\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n return styles;\n }\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n break;\n }\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n if (registered == null) {\n return interpolation;\n }\n var cached = registered[interpolation];\n return cached !== undefined ? cached : interpolation;\n}\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error(noComponentSelectorMessage);\n }\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n return string;\n}\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n styles += strings[i];\n }\n }\n var sourceMap;\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' +\n // $FlowFixMe we know it's not null\n match[1];\n }\n var name = hashString(styles) + identifierName;\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\nexport { serializeStyles };","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k = /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^= /* k >>> r: */\n k >>> 24;\n h = /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^ /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h = /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n h ^= h >>> 13;\n h = /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\nexport { murmur2 as default };","import * as React from 'react';\nvar syncFallback = function syncFallback(create) {\n return create();\n};\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };","import * as React from 'react';\nimport { useContext, forwardRef } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nvar isBrowser = \"object\" !== 'undefined';\nvar hasOwnProperty = {}.hasOwnProperty;\nvar EmotionCacheContext = /* #__PURE__ */React.createContext(\n// we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\nif (process.env.NODE_ENV !== 'production') {\n EmotionCacheContext.displayName = 'EmotionCacheContext';\n}\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n return useContext(EmotionCacheContext);\n};\nvar withEmotionCache = function withEmotionCache(func) {\n // $FlowFixMe\n return /*#__PURE__*/forwardRef(function (props, ref) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\nif (!isBrowser) {\n withEmotionCache = function withEmotionCache(func) {\n return function (props) {\n var cache = useContext(EmotionCacheContext);\n if (cache === null) {\n // yes, we're potentially creating this on every render\n // it doesn't actually matter though since it's only on the server\n // so there will only every be a single render\n // that could change in the future because of suspense and etc. but for now,\n // this works and i don't want to optimise for a future thing that we aren't sure about\n cache = createCache({\n key: 'css'\n });\n return /*#__PURE__*/React.createElement(EmotionCacheContext.Provider, {\n value: cache\n }, func(props, cache));\n } else {\n return func(props, cache);\n }\n };\n };\n}\nvar ThemeContext = /* #__PURE__ */React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'EmotionThemeContext';\n}\nvar useTheme = function useTheme() {\n return React.useContext(ThemeContext);\n};\nvar getTheme = function getTheme(outerTheme, theme) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n if (process.env.NODE_ENV !== 'production' && (mergedTheme == null || typeof mergedTheme !== 'object' || Array.isArray(mergedTheme))) {\n throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n }\n return mergedTheme;\n }\n if (process.env.NODE_ENV !== 'production' && (theme == null || typeof theme !== 'object' || Array.isArray(theme))) {\n throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n }\n return _extends({}, outerTheme, theme);\n};\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n var theme = React.useContext(ThemeContext);\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\nfunction withTheme(Component) {\n var componentName = Component.displayName || Component.name || 'Component';\n var render = function render(props, ref) {\n var theme = React.useContext(ThemeContext);\n return /*#__PURE__*/React.createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n }; // $FlowFixMe\n\n var WithTheme = /*#__PURE__*/React.forwardRef(render);\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\nvar getLastPart = function getLastPart(functionName) {\n // The match may be something like 'Object.createEmotionProps' or\n // 'Loader.prototype.render'\n var parts = functionName.split('.');\n return parts[parts.length - 1];\n};\nvar getFunctionNameFromStackTraceLine = function getFunctionNameFromStackTraceLine(line) {\n // V8\n var match = /^\\s+at\\s+([A-Za-z0-9$.]+)\\s/.exec(line);\n if (match) return getLastPart(match[1]); // Safari / Firefox\n\n match = /^([A-Za-z0-9$.]+)@/.exec(line);\n if (match) return getLastPart(match[1]);\n return undefined;\n};\nvar internalReactFunctionNames = /* #__PURE__ */new Set(['renderWithHooks', 'processChild', 'finishClassComponent', 'renderToString']); // These identifiers come from error stacks, so they have to be valid JS\n// identifiers, thus we only need to replace what is a valid character for JS,\n// but not for CSS.\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\nvar getLabelFromStackTrace = function getLabelFromStackTrace(stackTrace) {\n if (!stackTrace) return undefined;\n var lines = stackTrace.split('\\n');\n for (var i = 0; i < lines.length; i++) {\n var functionName = getFunctionNameFromStackTraceLine(lines[i]); // The first line of V8 stack traces is just \"Error\"\n\n if (!functionName) continue; // If we reach one of these, we have gone too far and should quit\n\n if (internalReactFunctionNames.has(functionName)) break; // The component name is the first function in the stack that starts with an\n // uppercase letter\n\n if (/^[A-Z]/.test(functionName)) return sanitizeIdentifier(functionName);\n }\n return undefined;\n};\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' &&\n // check if there is a css declaration\n props.css.indexOf(':') !== -1) {\n throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/react' like this: css`\" + props.css + \"`\");\n }\n var newProps = {};\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n newProps[typePropName] = type; // For performance, only call getLabelFromStackTrace in development and when\n // the label hasn't already been computed\n\n if (process.env.NODE_ENV !== 'production' && !!props.css && (typeof props.css !== 'object' || typeof props.css.name !== 'string' || props.css.name.indexOf('-') === -1)) {\n var label = getLabelFromStackTrace(new Error().stack);\n if (label) newProps[labelPropName] = label;\n }\n return newProps;\n};\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n return null;\n};\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n var WrappedComponent = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n var serialized = serializeStyles(registeredStyles, undefined, React.useContext(ThemeContext));\n if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n for (var key in props) {\n if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n newProps[key] = props[key];\n }\n }\n newProps.ref = ref;\n newProps.className = className;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof WrappedComponent === 'string'\n }), /*#__PURE__*/React.createElement(WrappedComponent, newProps));\n});\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\n}\nvar Emotion$1 = Emotion;\nexport { CacheProvider as C, Emotion$1 as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwnProperty as h, isBrowser as i, useTheme as u, withEmotionCache as w };","import { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isBrowser$1 } from './emotion-element-c39617d8.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-c39617d8.browser.esm.js';\nimport * as React from 'react';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { serializeStyles } from '@emotion/serialize';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport 'hoist-non-react-statics';\nvar pkg = {\n name: \"@emotion/react\",\n version: \"11.11.0\",\n main: \"dist/emotion-react.cjs.js\",\n module: \"dist/emotion-react.esm.js\",\n browser: {\n \"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n },\n exports: {\n \".\": {\n module: {\n worker: \"./dist/emotion-react.worker.esm.js\",\n browser: \"./dist/emotion-react.browser.esm.js\",\n \"default\": \"./dist/emotion-react.esm.js\"\n },\n \"import\": \"./dist/emotion-react.cjs.mjs\",\n \"default\": \"./dist/emotion-react.cjs.js\"\n },\n \"./jsx-runtime\": {\n module: {\n worker: \"./jsx-runtime/dist/emotion-react-jsx-runtime.worker.esm.js\",\n browser: \"./jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js\",\n \"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.esm.js\"\n },\n \"import\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.mjs\",\n \"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js\"\n },\n \"./_isolated-hnrs\": {\n module: {\n worker: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.worker.esm.js\",\n browser: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js\",\n \"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js\"\n },\n \"import\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.mjs\",\n \"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.js\"\n },\n \"./jsx-dev-runtime\": {\n module: {\n worker: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.worker.esm.js\",\n browser: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.esm.js\",\n \"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.esm.js\"\n },\n \"import\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.mjs\",\n \"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.js\"\n },\n \"./package.json\": \"./package.json\",\n \"./types/css-prop\": \"./types/css-prop.d.ts\",\n \"./macro\": {\n types: {\n \"import\": \"./macro.d.mts\",\n \"default\": \"./macro.d.ts\"\n },\n \"default\": \"./macro.js\"\n }\n },\n types: \"types/index.d.ts\",\n files: [\"src\", \"dist\", \"jsx-runtime\", \"jsx-dev-runtime\", \"_isolated-hnrs\", \"types/*.d.ts\", \"macro.*\"],\n sideEffects: false,\n author: \"Emotion Contributors\",\n license: \"MIT\",\n scripts: {\n \"test:typescript\": \"dtslint types\"\n },\n dependencies: {\n \"@babel/runtime\": \"^7.18.3\",\n \"@emotion/babel-plugin\": \"^11.11.0\",\n \"@emotion/cache\": \"^11.11.0\",\n \"@emotion/serialize\": \"^1.1.2\",\n \"@emotion/use-insertion-effect-with-fallbacks\": \"^1.0.1\",\n \"@emotion/utils\": \"^1.2.1\",\n \"@emotion/weak-memoize\": \"^0.3.1\",\n \"hoist-non-react-statics\": \"^3.3.1\"\n },\n peerDependencies: {\n react: \">=16.8.0\"\n },\n peerDependenciesMeta: {\n \"@types/react\": {\n optional: true\n }\n },\n devDependencies: {\n \"@definitelytyped/dtslint\": \"0.0.112\",\n \"@emotion/css\": \"11.11.0\",\n \"@emotion/css-prettifier\": \"1.1.3\",\n \"@emotion/server\": \"11.11.0\",\n \"@emotion/styled\": \"11.11.0\",\n \"html-tag-names\": \"^1.1.2\",\n react: \"16.14.0\",\n \"svg-tag-names\": \"^1.1.1\",\n typescript: \"^4.5.5\"\n },\n repository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n publishConfig: {\n access: \"public\"\n },\n \"umd:main\": \"dist/emotion-react.umd.min.js\",\n preconstruct: {\n entrypoints: [\"./index.js\", \"./jsx-runtime.js\", \"./jsx-dev-runtime.js\", \"./_isolated-hnrs.js\"],\n umdName: \"emotionReact\",\n exports: {\n envConditions: [\"browser\", \"worker\"],\n extra: {\n \"./types/css-prop\": \"./types/css-prop.d.ts\",\n \"./macro\": {\n types: {\n \"import\": \"./macro.d.mts\",\n \"default\": \"./macro.d.ts\"\n },\n \"default\": \"./macro.js\"\n }\n }\n }\n }\n};\nvar jsx = function jsx(type, props) {\n var args = arguments;\n if (props == null || !hasOwnProperty.call(props, 'css')) {\n // $FlowFixMe\n return React.createElement.apply(undefined, args);\n }\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n } // $FlowFixMe\n\n return React.createElement.apply(null, createElementArgArray);\n};\nvar warnedAboutCssPropForGlobal = false; // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && (\n // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n if (!isBrowser$1) {\n var _ref;\n var serializedNames = serialized.name;\n var serializedStyles = serialized.styles;\n var next = serialized.next;\n while (next !== undefined) {\n serializedNames += ' ' + next.name;\n serializedStyles += next.styles;\n next = next.next;\n }\n var shouldCache = cache.compat === true;\n var rules = cache.insert(\"\", {\n name: serializedNames,\n styles: serializedStyles\n }, cache.sheet, shouldCache);\n if (shouldCache) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"style\", (_ref = {}, _ref[\"data-emotion\"] = cache.key + \"-global \" + serializedNames, _ref.dangerouslySetInnerHTML = {\n __html: rules\n }, _ref.nonce = cache.sheet.nonce, _ref));\n } // yes, i know these hooks are used conditionally\n // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n\n var sheetRef = React.useRef();\n useInsertionEffectWithLayoutFallback(function () {\n var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n var sheet = new cache.sheet.constructor({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false; // $FlowFixMe\n\n var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n if (cache.sheet.tags.length) {\n sheet.before = cache.sheet.tags[0];\n }\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other s\n\n node.setAttribute('data-emotion', key);\n sheet.hydrate([node]);\n }\n sheetRef.current = [sheet, rehydrating];\n return function () {\n sheet.flush();\n };\n }, [cache]);\n useInsertionEffectWithLayoutFallback(function () {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0],\n rehydrating = sheetRefCurrent[1];\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n if (serialized.next !== undefined) {\n // insert keyframes\n insertStyles(cache, serialized.next, true);\n }\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n cache.insert(\"\", serialized, sheet, false);\n }, [cache, serialized.name]);\n return null;\n});\nif (process.env.NODE_ENV !== 'production') {\n Global.displayName = 'EmotionGlobal';\n}\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return serializeStyles(args);\n}\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n switch (typeof arg) {\n case 'boolean':\n break;\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n if (process.env.NODE_ENV !== 'production' && arg.styles !== undefined && arg.name !== undefined) {\n console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from component.');\n }\n toAdd = '';\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n break;\n }\n default:\n {\n toAdd = arg;\n }\n }\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n return cls;\n};\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n if (registeredStyles.length < 2) {\n return className;\n }\n return rawClassName + css(registeredStyles);\n}\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serializedArr = _ref.serializedArr;\n useInsertionEffectAlwaysWithSyncFallback(function () {\n for (var i = 0; i < serializedArr.length; i++) {\n insertStyles(cache, serializedArr[i], false);\n }\n });\n return null;\n};\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n var serializedArr = [];\n var css = function css() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('css can only be used during render');\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var serialized = serializeStyles(args, cache.registered);\n serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n registerStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n var cx = function cx() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('cx can only be used during render');\n }\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return merge(cache.registered, css, classnames(args));\n };\n var content = {\n css: css,\n cx: cx,\n theme: React.useContext(ThemeContext)\n };\n var ele = props.children(content);\n hasRendered = true;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serializedArr: serializedArr\n }), ele);\n});\nif (process.env.NODE_ENV !== 'production') {\n ClassNames.displayName = 'EmotionClassNames';\n}\nif (process.env.NODE_ENV !== 'production') {\n var isBrowser = \"object\" !== 'undefined'; // #1727, #2905 for some reason Jest and Vitest evaluate modules twice if some consuming module gets mocked\n\n var isTestEnv = typeof jest !== 'undefined' || typeof vi !== 'undefined';\n if (isBrowser && !isTestEnv) {\n // globalThis has wide browser support - https://caniuse.com/?search=globalThis, Node.js 12 and later\n var globalContext =\n // $FlowIgnore\n typeof globalThis !== 'undefined' ? globalThis // eslint-disable-line no-undef\n : isBrowser ? window : global;\n var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n if (globalContext[globalKey]) {\n console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n }\n globalContext[globalKey] = true;\n }\n}\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };","export default {\n body: {\n margin: 0,\n padding: 0,\n },\n '.icon-link': {\n display: 'none',\n },\n '.with-overlay': {\n overflow: 'hidden',\n },\n}\n","export const centerAlign = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n}\n\nexport const ghostButton = {\n p: 0,\n outline: 'none',\n background: 'transparent',\n border: 'none',\n ':hover': {\n cursor: 'pointer',\n },\n}\n","const em = px => `${px / 16}em`\nconst mountMedia = val => `@media screen and (max-width: ${em(val)})`\n\nexport const breakpoints = {\n mobile: 630,\n tablet: 920,\n desktop: 1120,\n}\n\nexport const media = {\n mobile: mountMedia(breakpoints.mobile),\n tablet: mountMedia(breakpoints.tablet),\n desktop: mountMedia(breakpoints.desktop),\n}\n","import * as mixins from '~utils/mixins'\nimport { media } from '~theme/breakpoints'\n\nexport const wrapper = {\n bg: 'header.bg',\n position: 'relative',\n zIndex: 1,\n borderBottom: t => `1px solid ${t.colors.border}`,\n}\n\nexport const innerContainer = {\n ...mixins.centerAlign,\n px: 4,\n position: 'relative',\n justifyContent: 'space-between',\n height: 80,\n}\n\nexport const menuIcon = {\n display: 'none',\n position: 'absolute',\n top: 'calc(100% + 15px)',\n left: 30,\n [media.tablet]: {\n display: 'block',\n },\n}\n\nexport const menuButton = {\n ...mixins.ghostButton,\n color: 'header.text',\n opacity: 0.5,\n cursor: 'pointer',\n}\n\nexport const headerButton = {\n ...mixins.centerAlign,\n outline: 'none',\n p: '12px',\n border: 'none',\n borderRadius: 9999,\n bg: 'header.button.bg',\n color: 'header.button.color',\n fontSize: 0,\n fontWeight: 600,\n cursor: 'pointer',\n}\n\nexport const editButton = {\n ...mixins.centerAlign,\n position: 'absolute',\n bottom: -40,\n right: 30,\n bg: 'transparent',\n color: 'muted',\n fontSize: 1,\n textDecoration: 'none',\n borderRadius: 'radius',\n}\n","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nimport React, { forwardRef } from 'react';\nvar ChevronDown = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"6 9 12 15 18 9\"\n }));\n});\nChevronDown.displayName = 'ChevronDown';\nexport default ChevronDown;","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nimport React, { forwardRef } from 'react';\nvar ChevronUp = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"18 15 12 9 6 15\"\n }));\n});\nChevronUp.displayName = 'ChevronUp';\nexport default ChevronUp;","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nimport React, { forwardRef } from 'react';\nvar Clipboard = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"8\",\n y: \"2\",\n width: \"8\",\n height: \"4\",\n rx: \"1\",\n ry: \"1\"\n }));\n});\nClipboard.displayName = 'Clipboard';\nexport default Clipboard;","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nimport React, { forwardRef } from 'react';\nvar Code = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"16 18 22 12 16 6\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"8 6 2 12 8 18\"\n }));\n});\nCode.displayName = 'Code';\nexport default Code;","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nimport React, { forwardRef } from 'react';\nvar Edit2 = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z\"\n }));\n});\nEdit2.displayName = 'Edit2';\nexport default Edit2;","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nimport React, { forwardRef } from 'react';\nvar GitHub = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22\"\n }));\n});\nGitHub.displayName = 'GitHub';\nexport default GitHub;","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nimport React, { forwardRef } from 'react';\nvar Menu = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"3\",\n y1: \"12\",\n x2: \"21\",\n y2: \"12\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"3\",\n y1: \"6\",\n x2: \"21\",\n y2: \"6\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"3\",\n y1: \"18\",\n x2: \"21\",\n y2: \"18\"\n }));\n});\nMenu.displayName = 'Menu';\nexport default Menu;","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nimport React, { forwardRef } from 'react';\nvar Search = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"11\",\n cy: \"11\",\n r: \"8\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"21\",\n y1: \"21\",\n x2: \"16.65\",\n y2: \"16.65\"\n }));\n});\nSearch.displayName = 'Search';\nexport default Search;","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nimport React, { forwardRef } from 'react';\nvar Sun = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"5\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"12\",\n y1: \"1\",\n x2: \"12\",\n y2: \"3\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"12\",\n y1: \"21\",\n x2: \"12\",\n y2: \"23\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"4.22\",\n y1: \"4.22\",\n x2: \"5.64\",\n y2: \"5.64\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"18.36\",\n y1: \"18.36\",\n x2: \"19.78\",\n y2: \"19.78\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"1\",\n y1: \"12\",\n x2: \"3\",\n y2: \"12\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"21\",\n y1: \"12\",\n x2: \"23\",\n y2: \"12\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"4.22\",\n y1: \"19.78\",\n x2: \"5.64\",\n y2: \"18.36\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"18.36\",\n y1: \"5.64\",\n x2: \"19.78\",\n y2: \"4.22\"\n }));\n});\nSun.displayName = 'Sun';\nexport default Sun;","export { default as ChevronDown } from 'react-feather/dist/icons/chevron-down'\nexport { default as ChevronUp } from 'react-feather/dist/icons/chevron-up'\nexport { default as Clipboard } from 'react-feather/dist/icons/clipboard'\nexport { default as Code } from 'react-feather/dist/icons/code'\nexport { default as Edit } from 'react-feather/dist/icons/edit-2'\nexport { default as Github } from 'react-feather/dist/icons/github'\nexport { default as Menu } from 'react-feather/dist/icons/menu'\nexport { default as Search } from 'react-feather/dist/icons/search'\nexport { default as Sun } from 'react-feather/dist/icons/sun'\n","export const logo = {\n letterSpacing: '-0.02em',\n fontWeight: 600,\n fontSize: 4,\n}\n\nexport const link = {\n fontWeight: 600,\n color: 'header.text',\n textDecoration: 'none',\n ':hover': {\n color: 'primary',\n },\n}\n","import * as styles from \"gatsby-theme-docz/src/components/Logo/styles\"\n\n/** @jsx jsx */\nimport { Flex, jsx } from \"theme-ui\"\nimport { Link, useConfig } from \"docz\"\nimport logo from '../../../../img/logo.svg'\n\nexport const Logo = () => {\n const config = useConfig()\n return (\n \n \n
      \n \"That's\n Grafana Tanka\n {config.description}\n
      \n \n
      \n )\n}\n","/** @jsx jsx */\nimport { jsx, Box, Flex, useColorMode } from 'theme-ui'\nimport { useConfig, useCurrentDoc } from 'docz'\n\nimport * as styles from './styles'\nimport { Edit, Menu, Sun, Github } from '../Icons'\nimport { Logo } from '../Logo'\n\nexport const Header = props => {\n const { onOpen } = props\n const {\n repository,\n themeConfig: { showDarkModeSwitch, showMarkdownEditButton },\n } = useConfig()\n const { edit = true, ...doc } = useCurrentDoc()\n const [colorMode, setColorMode] = useColorMode()\n\n const toggleColorMode = () => {\n setColorMode(colorMode === 'light' ? 'dark' : 'light')\n }\n\n return (\n
      \n \n \n \n
      \n \n \n {repository && (\n \n \n \n \n \n )}\n {showDarkModeSwitch && (\n \n \n \n )}\n \n {showMarkdownEditButton && edit && doc.link && (\n \n \n Edit page\n \n )}\n
      \n
      \n )\n}\n","import { media } from '~theme/breakpoints'\n\nexport const global = {\n body: {\n overflow: 'hidden',\n },\n}\n\nconst HEADER_HEIGHT = 81\n\nexport const overlay = ({ open }) => ({\n zIndex: 999,\n position: 'fixed',\n top: HEADER_HEIGHT,\n right: 0,\n bottom: 0,\n left: 0,\n background: 'rgba(0,0,0,0.6)',\n transition: 'all .2s ease-out',\n visibility: open ? 'visible' : 'hidden',\n opacity: open ? 1 : 0,\n})\n\nexport const wrapper = ({ open }) => ({\n py: 4,\n px: 4,\n flexDirection: 'column',\n position: 'sticky',\n top: 0,\n zIndex: 1,\n minWidth: 0,\n maxHeight: '100vh',\n borderRight: t => `1px solid ${t.colors.border}`,\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n bg: 'sidebar.bg',\n\n [media.tablet]: {\n zIndex: 9999,\n display: 'block',\n position: 'fixed',\n top: HEADER_HEIGHT,\n left: 0,\n bottom: 0,\n width: 256,\n px: 4,\n bg: 'background',\n transition: 'transform .2s ease-out',\n transform: open ? 'translateX(0)' : 'translateX(-100%)',\n },\n})\n","export const wrapper = {\n mb: 3,\n display: 'inline-flex',\n alignItems: 'center',\n}\n\nexport const input = {\n outline: 'none',\n background: 'none',\n border: 'none',\n color: 'text',\n fontSize: 1,\n}\n\nexport const icon = {\n color: 'border',\n mr: 2,\n}\n","/** @jsx jsx */\nimport { jsx } from 'theme-ui'\n\nimport * as styles from './styles'\nimport { Search } from '../Icons'\n\nexport const NavSearch = props => {\n return (\n
      \n \n \n
      \n )\n}\n","export const link = {\n my: 2,\n display: 'block',\n color: 'sidebar.navGroup',\n textDecoration: 'none',\n fontSize: 2,\n '&.active': {\n color: 'sidebar.navLinkActive',\n },\n}\n\nexport const smallLink = {\n ...link,\n ml: 3,\n fontSize: 1,\n position: 'relative',\n color: 'sidebar.tocLink',\n '&.active': {\n color: 'sidebar.tocLinkActive',\n },\n '&.active::before': {\n content: '\"\"',\n position: 'absolute',\n display: 'block',\n top: '2px',\n left: -2,\n height: '1rem',\n backgroundColor: 'primary',\n transition: 'width 200ms ease 0s',\n width: '2px',\n borderRadius: 1,\n },\n}\n","/** @jsx jsx */\nimport { Fragment, forwardRef } from 'react'\nimport { jsx } from 'theme-ui'\nimport { Link } from 'gatsby'\nimport { useDocs, useCurrentDoc } from 'docz'\nimport { get } from 'lodash/fp'\n\nimport * as styles from './styles'\n\nconst getHeadings = (route, docs) => {\n const doc = docs.find(doc => doc.route === route)\n const headings = get('headings', doc)\n return headings ? headings.filter(heading => heading.depth === 2) : []\n}\n\nconst getCurrentHash = () => {\n if (typeof window === 'undefined') {\n return ''\n }\n return window.location ? decodeURI(window.location.hash) : ''\n}\n\nexport const NavLink = forwardRef(function NavLink({ item, ...props }, ref) {\n const docs = useDocs()\n const current = useCurrentDoc()\n\n if (item.hidden) {\n return null\n }\n\n const to = item.route\n const headings = docs && getHeadings(to, docs)\n const isCurrent = item.route === current.route\n const showHeadings = isCurrent && headings && headings.length > 0\n const currentHash = getCurrentHash()\n return (\n \n \n {showHeadings &&\n headings.map(heading => (\n \n {heading.value}\n \n ))}\n \n )\n})\n","export const wrapper = {\n my: 3,\n}\n\nexport const sublinkWrapper = {\n ml: 2,\n}\n\nexport const title = {\n mb: 1,\n fontSize: 2,\n fontWeight: 500,\n color: 'sidebar.navGroup',\n cursor: 'pointer',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n}\n\nexport const chevron = ({ active }) => ({\n ml: 1,\n flexShrink: 0,\n alignSelf: 'baseline',\n transform: `rotateX(${active ? 180 : 0}deg)`,\n transformOrigin: 'center',\n transition: 'transform .3s ease-in-out',\n})\n","/** @jsx jsx */\nimport { jsx } from 'theme-ui'\nimport { useEffect, useState, useRef } from 'react'\nimport { useCurrentDoc } from 'docz'\n\nimport * as styles from './styles'\nimport { NavLink } from '../NavLink'\nimport { ChevronDown } from '../Icons'\n\nexport const NavGroup = ({ item, sidebarRef }) => {\n const currentDoc = useCurrentDoc()\n const currentDocRef = useRef()\n const { name, menu } = item\n const [subheadingsVisible, setShowsubheadings] = useState(\n currentDoc.menu === name\n )\n const toggleSubheadings = () => setShowsubheadings(!subheadingsVisible)\n useEffect(() => {\n if (sidebarRef.current && currentDocRef.current) {\n sidebarRef.current.scrollTo(0, currentDocRef.current.offsetTop)\n }\n }, [])\n return (\n
      \n
      \n {item.name}\n \n
      \n
      \n {menu &&\n subheadingsVisible &&\n menu.map(menu => {\n if (currentDoc.route === menu.route) {\n return (\n \n {menu.name}\n \n )\n }\n return (\n \n {menu.name}\n \n )\n })}\n
      \n
      \n )\n}\n","/** @jsx jsx */\nimport { Fragment, forwardRef, useState, useRef, useEffect } from 'react'\nimport { Global } from '@emotion/react'\nimport { jsx, Box } from 'theme-ui'\nimport { useMenus, useCurrentDoc } from 'docz'\n\nimport * as styles from './styles'\nimport { NavSearch } from '../NavSearch'\nimport { NavLink } from '../NavLink'\nimport { NavGroup } from '../NavGroup'\n\nexport const Sidebar = forwardRef(function Sidebar(props, ref) {\n const [query, setQuery] = useState('')\n const menus = useMenus({ query })\n const currentDoc = useCurrentDoc()\n const currentDocRef = useRef()\n const handleChange = ev => {\n setQuery(ev.target.value)\n }\n useEffect(() => {\n if (ref.current && currentDocRef.current) {\n ref.current.scrollTo(0, currentDocRef.current.offsetTop)\n }\n }, [])\n return (\n \n \n {props.open && }\n \n \n \n {menus &&\n menus.map(menu => {\n if (!menu.route)\n return \n if (menu.route === currentDoc.route) {\n return (\n \n {menu.name}\n \n )\n }\n return (\n \n {menu.name}\n \n )\n })}\n \n \n )\n})\n","import { media } from '~theme/breakpoints'\n\nexport const container = {\n backgroundColor: 'background',\n position: 'relative',\n maxWidth: 960,\n py: 5,\n px: 4,\n variant: 'styles.Container',\n [media.tablet]: {\n py: 4,\n px: 4,\n pt: 5,\n },\n}\n","/** @jsx jsx */\nimport { jsx, Container } from 'theme-ui'\n\nimport * as styles from './styles'\n\nexport const MainContainer = ({ children, ...rest }) => {\n return (\n \n {children}\n \n )\n}\n","import { media } from '~theme/breakpoints'\n\nexport const main = {\n display: 'flex',\n flexDirection: 'column',\n minHeight: '100vh',\n}\n\nexport const wrapper = {\n py: 0,\n flex: 1,\n display: 'grid',\n gridTemplateColumns: '250px minmax(0, 1fr)',\n minHeight: '100vh',\n [media.tablet]: {\n display: 'block',\n },\n}\n","/** @jsx jsx */\nimport { useRef, useState } from 'react'\nimport { jsx, Layout as BaseLayout, Main } from 'theme-ui'\nimport { Global } from '@emotion/react'\n\nimport global from '~theme/global'\nimport { Header } from '../Header'\nimport { Sidebar } from '../Sidebar'\nimport { MainContainer } from '../MainContainer'\nimport * as styles from './styles'\n\nexport const Layout = ({ children }) => {\n const [open, setOpen] = useState(false)\n const nav = useRef()\n\n return (\n div': { flex: '1 1 auto' } }} data-testid=\"layout\">\n \n
      \n
      setOpen(s => !s)} />\n
      \n setOpen(true)}\n onBlur={() => setOpen(false)}\n onClick={() => setOpen(false)}\n />\n {children}\n
      \n
      \n
      \n )\n}\n","import \"core-js/modules/es.regexp.flags.js\";\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n *\n * @license MIT \n * @author Lea Verou \n * @namespace\n * @public\n */\n/**\n * prism-react-renderer:\n * This file has been modified to remove:\n * - globals and window dependency\n * - worker support\n * - highlightAll and other element dependent methods\n * - _.hooks helpers\n * - UMD/node-specific hacks\n * It has also been run through prettier\n */\n\nvar Prism = function () {\n // Private helper vars\n var lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i;\n var uniqueId = 0;\n\n // The grammar object for plaintext\n var plainTextGrammar = {};\n var _ = {\n /**\n * A namespace for utility methods.\n *\n * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may\n * change or disappear at any time.\n *\n * @namespace\n * @memberof Prism\n */\n util: {\n encode: function encode(tokens) {\n if (tokens instanceof Token) {\n return new Token(tokens.type, encode(tokens.content), tokens.alias);\n } else if (Array.isArray(tokens)) {\n return tokens.map(encode);\n } else {\n return tokens.replace(/&/g, '&').replace(/} [visited]\n * @returns {T}\n * @template T\n */\n clone: function deepClone(o, visited) {\n visited = visited || {};\n var clone;\n var id;\n switch (_.util.type(o)) {\n case 'Object':\n id = _.util.objId(o);\n if (visited[id]) {\n return visited[id];\n }\n clone = /** @type {Record} */{};\n visited[id] = clone;\n for (var key in o) {\n if (o.hasOwnProperty(key)) {\n clone[key] = deepClone(o[key], visited);\n }\n }\n return (/** @type {any} */clone\n );\n case 'Array':\n id = _.util.objId(o);\n if (visited[id]) {\n return visited[id];\n }\n clone = [];\n visited[id] = clone;\n /** @type {Array} */ /** @type {any} */o.forEach(function (v, i) {\n clone[i] = deepClone(v, visited);\n });\n return (/** @type {any} */clone\n );\n default:\n return o;\n }\n },\n /**\n * Returns the Prism language of the given element set by a `language-xxxx` or `lang-xxxx` class.\n *\n * If no language is set for the element or the element is `null` or `undefined`, `none` will be returned.\n *\n * @param {Element} element\n * @returns {string}\n */\n getLanguage: function (element) {\n while (element) {\n var m = lang.exec(element.className);\n if (m) {\n return m[1].toLowerCase();\n }\n element = element.parentElement;\n }\n return 'none';\n },\n /**\n * Sets the Prism `language-xxxx` class of the given element.\n *\n * @param {Element} element\n * @param {string} language\n * @returns {void}\n */\n setLanguage: function (element, language) {\n // remove all `language-xxxx` classes\n // (this might leave behind a leading space)\n element.className = element.className.replace(RegExp(lang, 'gi'), '');\n\n // add the new `language-xxxx` class\n // (using `classList` will automatically clean up spaces for us)\n element.classList.add('language-' + language);\n },\n /**\n * Returns whether a given class is active for `element`.\n *\n * The class can be activated if `element` or one of its ancestors has the given class and it can be deactivated\n * if `element` or one of its ancestors has the negated version of the given class. The _negated version_ of the\n * given class is just the given class with a `no-` prefix.\n *\n * Whether the class is active is determined by the closest ancestor of `element` (where `element` itself is\n * closest ancestor) that has the given class or the negated version of it. If neither `element` nor any of its\n * ancestors have the given class or the negated version of it, then the default activation will be returned.\n *\n * In the paradoxical situation where the closest ancestor contains __both__ the given class and the negated\n * version of it, the class is considered active.\n *\n * @param {Element} element\n * @param {string} className\n * @param {boolean} [defaultActivation=false]\n * @returns {boolean}\n */\n isActive: function (element, className, defaultActivation) {\n var no = 'no-' + className;\n while (element) {\n var classList = element.classList;\n if (classList.contains(className)) {\n return true;\n }\n if (classList.contains(no)) {\n return false;\n }\n element = element.parentElement;\n }\n return !!defaultActivation;\n }\n },\n /**\n * This namespace contains all currently loaded languages and the some helper functions to create and modify languages.\n *\n * @namespace\n * @memberof Prism\n * @public\n */\n languages: {\n /**\n * The grammar for plain, unformatted text.\n */\n plain: plainTextGrammar,\n plaintext: plainTextGrammar,\n text: plainTextGrammar,\n txt: plainTextGrammar,\n /**\n * Creates a deep copy of the language with the given id and appends the given tokens.\n *\n * If a token in `redef` also appears in the copied language, then the existing token in the copied language\n * will be overwritten at its original position.\n *\n * ## Best practices\n *\n * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language)\n * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to\n * understand the language definition because, normally, the order of tokens matters in Prism grammars.\n *\n * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens.\n * Furthermore, all non-overwriting tokens should be placed after the overwriting ones.\n *\n * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`.\n * @param {Grammar} redef The new tokens to append.\n * @returns {Grammar} The new language created.\n * @public\n * @example\n * Prism.languages['css-with-colors'] = Prism.languages.extend('css', {\n * // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token\n * // at its original position\n * 'comment': { ... },\n * // CSS doesn't have a 'color' token, so this token will be appended\n * 'color': /\\b(?:red|green|blue)\\b/\n * });\n */\n extend: function (id, redef) {\n var lang = _.util.clone(_.languages[id]);\n for (var key in redef) {\n lang[key] = redef[key];\n }\n return lang;\n },\n /**\n * Inserts tokens _before_ another token in a language definition or any other grammar.\n *\n * ## Usage\n *\n * This helper method makes it easy to modify existing languages. For example, the CSS language definition\n * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded\n * in HTML through ``\nconst INITIAL_IFRAME_CONTENT = ` ${CLEAR_PADDING}
      `\n\nconst IframeWrapper = ({ children, style }) => {\n const [containerHeight, setHeight] = useState()\n return (\n \n {children}\n {\n setHeight(height)\n }}\n />\n \n )\n}\n\nconst NormalWrapper = ({ children, style }) => {\n return (\n \n {children}\n \n )\n}\n\nexport const Wrapper = ({ children, content, useScoping, showingCode }) => {\n const {\n themeConfig: { useScopingInPlayground },\n } = useConfig()\n\n const Element =\n useScoping || useScopingInPlayground ? IframeWrapper : NormalWrapper\n\n return (\n \n {children}\n \n )\n}\n","import { useThemeUI } from 'theme-ui'\nimport { get, pipe, defaultTo } from 'lodash/fp'\n\nexport const themeProp = str => props => {\n return get(`theme.${str}`, props)\n}\n\nexport const usePrismTheme = () => {\n const { theme, colorMode } = useThemeUI()\n const getTheme = pipe(\n get('prismTheme'),\n defaultTo(get(`prism.${colorMode}`, theme))\n )\n return getTheme(theme)\n}\n","/** @jsx jsx */\nimport { jsx } from 'theme-ui'\nimport { useState } from 'react'\nimport { useConfig } from 'docz'\nimport { LiveProvider, LiveError, LivePreview, LiveEditor } from 'react-live'\nimport { Resizable } from 're-resizable'\nimport copy from 'copy-text-to-clipboard'\n\nimport { Wrapper } from './Wrapper'\nimport { usePrismTheme } from '~utils/theme'\nimport * as styles from './styles'\nimport * as Icons from '../Icons'\n\nconst getResizableProps = (width, setWidth) => ({\n minWidth: 260,\n maxWidth: '100%',\n size: {\n width: width,\n height: 'auto',\n },\n style: {\n margin: 0,\n marginRight: 'auto',\n },\n enable: {\n top: false,\n right: true,\n bottom: false,\n left: false,\n topRight: false,\n bottomRight: false,\n bottomLeft: false,\n topLeft: false,\n },\n onResizeStop: (e, direction, ref) => {\n setWidth(ref.style.width)\n },\n})\n\nconst transformCode = code => {\n if (code.startsWith('()') || code.startsWith('class')) return code\n return `${code}`\n}\n\nexport const Playground = ({ code, scope, language, useScoping = false }) => {\n const {\n themeConfig: { showPlaygroundEditor, showLiveError, showLivePreview },\n } = useConfig()\n\n // Makes sure scope is only given on mount to avoid infinite re-render on hot reloads\n const [scopeOnMount] = useState(scope)\n const theme = usePrismTheme()\n const [showingCode, setShowingCode] = useState(showPlaygroundEditor)\n const [width, setWidth] = useState('100%')\n const resizableProps = getResizableProps(width, setWidth)\n\n const copyCode = () => copy(code)\n const toggleCode = () => setShowingCode(s => !s)\n\n return (\n \n \n
      \n \n {showLivePreview && (\n \n )}\n \n
      \n \n \n
      \n
      \n {showingCode && (\n \n
      \n \n
      \n \n )}\n {showLiveError && (\n \n )}\n \n
      \n )\n}\n","import { breakpoints } from '~theme/breakpoints'\nimport * as mixins from '~utils/mixins'\n\nexport const container = {\n mt: 3,\n mb: 4,\n border: t => `1px solid ${t.colors.border}`,\n borderRadius: 'radius',\n overflow: 'hidden',\n bg: 'props.bg',\n color: 'props.text',\n fontSize: 3,\n}\n\nexport const content = {\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n [`@media (min-width: ${breakpoints.tablet}px)`]: {\n flexWrap: 'nowrap',\n flexDirection: 'row',\n },\n}\n\nexport const line = {\n pt: 2,\n '& + &': {\n borderTop: t => `1px solid ${t.colors.border}`,\n },\n}\n\nconst column = {\n minWidth: 0,\n pb: 2,\n px: 3,\n '& ~ &': {\n bg: 'red',\n },\n}\n\nexport const propName = {\n ...column,\n color: 'props.highlight',\n}\n\nexport const propType = {\n ...column,\n color: 'props.text',\n}\n\nexport const defaultValue = {\n ...column,\n color: 'props.defaultValue',\n}\n\nexport const right = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n px: 3,\n flex: 1,\n [`@media (max-width: ${breakpoints.tablet}px)`]: {\n position: 'absolute',\n top: 0,\n right: 0,\n },\n}\n\nexport const propRequired = {\n color: 'props.text',\n fontSize: 1,\n opacity: 0.5,\n}\n\nexport const openDescBtn = {\n ...mixins.ghostButton,\n mt: 0,\n ml: 3,\n color: 'props.defaultValue',\n}\n\nexport const description = {\n fontSize: 2,\n m: 0,\n py: 2,\n px: 3,\n borderTop: t => `1px solid ${t.colors.border}`,\n color: 'props.descriptionText',\n bg: 'props.descriptionBg',\n}\n","/** @jsx jsx */\nimport { useState } from 'react'\nimport { jsx } from 'theme-ui'\n\nimport { ChevronDown, ChevronUp } from '../Icons'\nimport * as styles from './styles'\n\nexport const getDefaultValue = ({ defaultValue, type, flowType }) => {\n const propType = flowType ? flowType : type\n if (!defaultValue || !defaultValue.value) return null\n if (defaultValue.value === \"''\") {\n return '[Empty string]'\n }\n if (propType && propType.name === 'string') {\n return defaultValue.value.replace(/\\'/g, '\"')\n }\n if (typeof defaultValue.value === 'object' && defaultValue.value.toString) {\n return defaultValue.value.toString()\n }\n return defaultValue.value\n}\n\nexport const Prop = ({ propName, prop, getPropType, isToggle }) => {\n const [showing, setShowing] = useState(isToggle || false)\n if (!prop.type && !prop.flowType) return null\n\n const toggle = () => setShowing(s => !s)\n return (\n
      \n
      \n
      \n {propName}\n
      \n
      \n {getPropType(prop)}\n
      \n {prop.defaultValue && (\n
      \n {getDefaultValue(prop)}\n
      \n )}\n
      \n {prop.required && (\n
      \n required\n
      \n )}\n {prop.description && (\n \n {showing ? : }\n \n )}\n
      \n
      \n {showing && prop.description && (\n
      \n {prop.description}\n
      \n )}\n
      \n )\n}\n\nexport const Props = ({ props, getPropType, isToggle }) => {\n const entries = Object.entries(props)\n\n return (\n
      \n {entries.map(([key, prop]) => (\n \n ))}\n
      \n )\n}\n","import { ChevronDown, ChevronUp } from \"gatsby-theme-docz/src/components/Icons\"\nimport React, { useState } from \"react\"\n\nimport ThemeStyles from \"gatsby-theme-docz/src/theme/styles\"\n/** @jsx jsx */\nimport { jsx } from \"theme-ui\"\n\nexport const Code = props => (\n \n {props.children}\n \n)\n\n// Smart codeblock: shows only first 25 lines, if longer an expand button\nexport const CodeBlock = props => {\n const lines = React.Children.toArray(props.children).reduce((n, c) => {\n if (c?.props?.className === \"vscode-highlight-line\") {\n return n + 1\n }\n return n\n }, 0)\n\n return (\n \n {lines > 20 ? {props.children} : props.children}\n \n )\n}\n\nexport const Pre = props => (\n \n)\n\n// Expandable codeblock\nconst LongCode = props => {\n const [toggled, setToggled] = useState(false)\n\n return (\n <>\n {toggled\n ? props.children\n : React.Children.map(props.children, (child, i) => {\n if (i < 20 * 2) return child\n })}\n setToggled(!toggled)}>\n \n )\n}\n\n// ExpandButton\nconst Expand = props => (\n \n \n {props.toggled ? : }\n Show {props.toggled ? \"less\" : \"more\"}\n \n \n)\n","/** @jsx jsx */\nimport { jsx } from \"theme-ui\"\nimport React from \"react\"\n\nimport * as headings from \"gatsby-theme-docz/src/components/Headings\"\nimport { Layout } from \"gatsby-theme-docz/src/components/Layout\"\nimport { Playground } from \"gatsby-theme-docz/src/components/Playground\"\nimport { Props } from \"gatsby-theme-docz/src/components/Props\"\nimport ThemeStyles from \"gatsby-theme-docz/src/theme/styles\"\n\nimport \"typeface-fira-mono\"\nimport \"typeface-source-sans-pro\"\n\nimport { Code, CodeBlock, Pre } from \"./codeblock\"\n\nconst localStyles = {\n backgroundLight: \"#2d37471f\",\n}\n\n// custom \"box\" (blockquote)\nconst Box = props => (\n \n {// remove the marginBottom from the last element\n React.Children.map(props.children, (child, i) =>\n i === React.Children.toArray(props.children).length - 1\n ? React.cloneElement(child, {\n style: { marginBottom: 0 },\n })\n : child\n )}\n \n)\n\nconst Table = props => (\n \n \n \n)\n\nconst inlineCode = props => (\n \n {props.children}\n \n)\n\nexport default {\n ...headings,\n playground: Playground,\n layout: Layout,\n props: Props,\n code: CodeBlock,\n pre: Pre,\n blockquote: Box,\n table: Table,\n inlineCode: inlineCode,\n}\n","/** @jsx jsx */\nimport { jsx } from 'theme-ui'\nimport { theme, useConfig, ComponentsProvider } from 'docz'\nimport { Styled, ThemeProvider } from 'theme-ui'\n\nimport defaultTheme from '~theme'\nimport components from '~components'\n\nconst Theme = ({ children }) => {\n const config = useConfig()\n return (\n \n \n {children}\n \n \n )\n}\n\nexport default theme(defaultTheme)(Theme)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Helmet } from 'react-helmet-async'\n\nimport { useDbQuery } from '../hooks/useDbQuery'\n\nconst SEO = ({ description, lang, meta, keywords, title: initialTitle }) => {\n const db = useDbQuery()\n const title = initialTitle || db.config.title\n const metaDescription = description || db.config.description\n\n return (\n 0\n ? {\n name: `keywords`,\n content: keywords.join(`, `),\n }\n : []\n )\n .concat(meta)}\n />\n )\n}\n\nSEO.defaultProps = {\n lang: `en`,\n meta: [],\n keywords: [],\n}\n\nSEO.propTypes = {\n description: PropTypes.string,\n lang: PropTypes.string,\n meta: PropTypes.array,\n keywords: PropTypes.arrayOf(PropTypes.string),\n title: PropTypes.string.isRequired,\n}\n\nexport default SEO\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { useComponents } from 'docz'\nimport { propEq, get } from 'lodash/fp'\nimport { MDXProvider } from '@mdx-js/react'\n\nimport { useDbQuery } from '../hooks/useDbQuery'\nimport Wrapper from '../wrapper'\nimport Theme from '../index'\nimport SEO from './Seo'\n\nconst Route = ({ children, entry, isTransclusion, ...defaultProps }) => {\n const components = useComponents()\n const NotFound = components.notFound\n const Layout = components.layout\n const props = { ...defaultProps, doc: entry }\n if (!entry && !isTransclusion) return \n return isTransclusion ? (\n children\n ) : (\n \n \n {children}\n \n \n )\n}\n\nconst findEntry = (db, ctx) => {\n const isIndex = ctx && ctx.frontmatter && ctx.frontmatter.route === '/'\n const eqIndex = propEq('value.route', '/')\n if (ctx && !ctx.entry && isIndex) return db.entries.find(eqIndex)\n const filepath = get('entry.filepath', ctx)\n return db.entries.find(propEq('value.filepath', filepath))\n}\n\nconst includesTransclusion = (db, props) => {\n const { entries } = db\n const filepath = get('_frontmatter.__filemeta.filename', props)\n return (\n !props.pageContext &&\n entries.includes(entries.find(propEq('value.filepath', filepath)))\n )\n}\n\nconst Layout = ({ children, ...defaultProps }) => {\n const { pageContext: ctx } = defaultProps\n const db = useDbQuery()\n const entry = findEntry(db, ctx)\n const isTransclusion = includesTransclusion(db, defaultProps)\n return (\n <>\n {entry && }\n \n \n {children}\n \n \n \n )\n}\n\nLayout.propTypes = {\n color: PropTypes.string,\n children: PropTypes.node.isRequired,\n}\n\nexport default Layout\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = _default;\nexports.routeThroughBrowserOrApp = exports.hashShouldBeFollowed = exports.pathIsNotHandledByApp = exports.urlsAreOnSameOrigin = exports.authorIsForcingNavigation = exports.anchorsTargetIsEquivalentToSelf = exports.findClosestAnchor = exports.navigationWasHandledElsewhere = exports.slashedPathname = exports.userIsForcingNavigation = void 0;\n\nvar _escapeStringRegexp = _interopRequireDefault(require(\"escape-string-regexp\"));\n\nvar _gatsby = require(\"gatsby\");\n\nvar userIsForcingNavigation = function userIsForcingNavigation(event) {\n return event.button !== 0 || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;\n}; // IE does not include leading slash in anchor.pathname\n\n\nexports.userIsForcingNavigation = userIsForcingNavigation;\n\nvar slashedPathname = function slashedPathname(pathname) {\n return pathname[0] === \"/\" ? pathname : \"/\" + pathname;\n};\n\nexports.slashedPathname = slashedPathname;\n\nvar navigationWasHandledElsewhere = function navigationWasHandledElsewhere(event) {\n return event.defaultPrevented;\n};\n\nexports.navigationWasHandledElsewhere = navigationWasHandledElsewhere;\n\nvar findClosestAnchor = function findClosestAnchor(node) {\n for (; node.parentNode; node = node.parentNode) {\n if (node.nodeName.toLowerCase() === \"a\") {\n return node;\n }\n }\n\n return null;\n};\n\nexports.findClosestAnchor = findClosestAnchor;\n\nvar anchorsTargetIsEquivalentToSelf = function anchorsTargetIsEquivalentToSelf(anchor) {\n return (\n /* If target attribute is not present it's treated as _self */\n anchor.hasAttribute(\"target\") === false ||\n /**\n * The browser defaults to _self, but, not all browsers set\n * a.target to the string value `_self` by default\n */\n\n /**\n * Assumption: some browsers use null/undefined for default\n * attribute values\n */\n anchor.target == null ||\n /**\n * Some browsers use the empty string to mean _self, check\n * for actual `_self`\n */\n [\"_self\", \"\"].includes(anchor.target) ||\n /**\n * As per https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-target\n */\n anchor.target === \"_parent\" && (!anchor.ownerDocument.defaultView.parent || // Assumption: This can be falsey\n anchor.ownerDocument.defaultView.parent === anchor.ownerDocument.defaultView) || anchor.target === \"_top\" && (!anchor.ownerDocument.defaultView.top || // Assumption: This can be falsey\n anchor.ownerDocument.defaultView.top === anchor.ownerDocument.defaultView)\n );\n};\n\nexports.anchorsTargetIsEquivalentToSelf = anchorsTargetIsEquivalentToSelf;\n\nvar authorIsForcingNavigation = function authorIsForcingNavigation(anchor) {\n return (\n /**\n * HTML5 attribute that informs the browser to handle the\n * href as a downloadable file; let the browser handle it\n */\n anchor.hasAttribute(\"download\") === true ||\n /**\n * Let the browser handle anything that doesn't look like a\n * target=\"_self\" anchor\n */\n anchorsTargetIsEquivalentToSelf(anchor) === false\n );\n}; // https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy\n\n\nexports.authorIsForcingNavigation = authorIsForcingNavigation;\n\nvar urlsAreOnSameOrigin = function urlsAreOnSameOrigin(origin, destination) {\n return origin.protocol === destination.protocol &&\n /* a.host includes both hostname and port in the expected format host:port */\n origin.host === destination.host;\n};\n\nexports.urlsAreOnSameOrigin = urlsAreOnSameOrigin;\n\nvar pathIsNotHandledByApp = function pathIsNotHandledByApp(destination, pathStartRegEx) {\n var pathFileExtensionRegEx = /^.*\\.((?!htm)[a-z0-9]{1,5})$/i;\n return (\n /**\n * For when pathPrefix is used in an app and there happens to be a link\n * pointing to the same domain but outside of the app's pathPrefix. For\n * example, a Gatsby app lives at https://example.com/myapp/, with the\n * pathPrefix set to `/myapp`. When adding an absolute link to the same\n * domain but outside of the /myapp path, for example, `` the plugin won't catch it and\n * will navigate to an external link instead of doing a pushState resulting\n * in `https://example.com/myapp/https://example.com/not-my-app`\n */\n pathStartRegEx.test(slashedPathname(destination.pathname)) === false ||\n /**\n * Don't catch links pointed at what look like file extensions (other than\n * .htm/html extensions).\n */\n destination.pathname.search(pathFileExtensionRegEx) !== -1\n );\n};\n\nexports.pathIsNotHandledByApp = pathIsNotHandledByApp;\n\nvar hashShouldBeFollowed = function hashShouldBeFollowed(origin, destination) {\n return destination.hash !== \"\" && (\n /**\n * Dynamically created anchor links (href=\"#my-anchor\") do not always\n * have pathname on IE\n */\n destination.pathname === \"\" ||\n /* Don't catch links pointed to the same page but with a hash. */\n destination.pathname === origin.pathname);\n};\n\nexports.hashShouldBeFollowed = hashShouldBeFollowed;\n\nvar routeThroughBrowserOrApp = function routeThroughBrowserOrApp(hrefHandler, pluginOptions) {\n return function (event) {\n if (window.___failedResources) return true;\n if (userIsForcingNavigation(event)) return true;\n if (navigationWasHandledElsewhere(event)) return true;\n var clickedAnchor = findClosestAnchor(event.target);\n if (clickedAnchor == null) return true;\n if (authorIsForcingNavigation(clickedAnchor)) return true; // IE clears the host value if the anchor href changed after creation, e.g.\n // in React. Creating a new anchor element to ensure host value is present\n\n var destination = document.createElement(\"a\"); // https://html.spec.whatwg.org/multipage/links.html#concept-hyperlink-url-set\n // If clickedAnchor has no href attribute like `example`, the href getter returns empty string.\n\n if (clickedAnchor.href !== \"\") {\n destination.href = clickedAnchor.href;\n }\n\n if (\"SVGAnimatedString\" in window && clickedAnchor.href instanceof SVGAnimatedString) {\n destination.href = clickedAnchor.href.animVal;\n } // In IE, the default port is included in the anchor host but excluded from\n // the location host. This affects the ability to directly compare\n // location host to anchor host. For example: http://example.com would\n // have a location.host of 'example.com' and an destination.host of\n // 'example.com:80' Creating anchor from the location.href to normalize the\n // host value.\n\n\n var origin = document.createElement(\"a\");\n origin.href = window.location.href;\n if (urlsAreOnSameOrigin(origin, destination) === false) return true; // Regex to test pathname against pathPrefix\n\n var pathStartRegEx = new RegExp(\"^\" + (0, _escapeStringRegexp.default)((0, _gatsby.withPrefix)(\"/\")));\n if (pathIsNotHandledByApp(destination, pathStartRegEx)) return true;\n if (hashShouldBeFollowed(origin, destination)) return true;\n\n if (pluginOptions.excludePattern) {\n var excludeRegex = new RegExp(pluginOptions.excludePattern);\n\n if (excludeRegex.test(destination.pathname)) {\n return true;\n }\n }\n\n event.preventDefault(); // See issue #8907: destination.pathname already includes pathPrefix added\n // by gatsby-transformer-remark but gatsby-link.navigate needs href without\n\n var destinationPathname = slashedPathname(destination.pathname).replace(pathStartRegEx, \"/\");\n hrefHandler(\"\" + destinationPathname + destination.search + destination.hash);\n return false;\n };\n};\n\nexports.routeThroughBrowserOrApp = routeThroughBrowserOrApp;\n\nfunction _default(root, pluginOptions, cb) {\n var clickHandler = routeThroughBrowserOrApp(cb, pluginOptions);\n root.addEventListener(\"click\", clickHandler);\n return function () {\n return root.removeEventListener(\"click\", clickHandler);\n };\n}","var convert = require('./convert'),\n func = convert('merge', require('../merge'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var baseFlatten = require('./_baseFlatten'),\n baseIteratee = require('./_baseIteratee'),\n baseRest = require('./_baseRest'),\n baseUniq = require('./_baseUniq'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n last = require('./last');\n\n/**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nvar unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), baseIteratee(iteratee, 2));\n});\n\nmodule.exports = unionBy;\n","const set = require('regenerate')();\nset.addRange(0x700, 0x70D).addRange(0x70F, 0x74A).addRange(0x74D, 0x74F).addRange(0x860, 0x86A);\nmodule.exports = set;","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","const set = require('regenerate')();\nset.addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB);\nmodule.exports = set;","const set = require('regenerate')(0x3037, 0xFF70, 0x1F200);\nset.addRange(0x3001, 0x3003).addRange(0x3008, 0x3011).addRange(0x3013, 0x301F).addRange(0x3030, 0x3035).addRange(0x303C, 0x303D).addRange(0x3041, 0x3096).addRange(0x3099, 0x30A0).addRange(0x30FB, 0x30FC).addRange(0xFE45, 0xFE46).addRange(0xFF61, 0xFF65).addRange(0xFF9E, 0xFF9F).addRange(0x1B001, 0x1B11F).addRange(0x1B150, 0x1B152);\nmodule.exports = set;","/** Used to map aliases to their real names. */\nexports.aliasToReal = {\n\n // Lodash aliases.\n 'each': 'forEach',\n 'eachRight': 'forEachRight',\n 'entries': 'toPairs',\n 'entriesIn': 'toPairsIn',\n 'extend': 'assignIn',\n 'extendAll': 'assignInAll',\n 'extendAllWith': 'assignInAllWith',\n 'extendWith': 'assignInWith',\n 'first': 'head',\n\n // Methods that are curried variants of others.\n 'conforms': 'conformsTo',\n 'matches': 'isMatch',\n 'property': 'get',\n\n // Ramda aliases.\n '__': 'placeholder',\n 'F': 'stubFalse',\n 'T': 'stubTrue',\n 'all': 'every',\n 'allPass': 'overEvery',\n 'always': 'constant',\n 'any': 'some',\n 'anyPass': 'overSome',\n 'apply': 'spread',\n 'assoc': 'set',\n 'assocPath': 'set',\n 'complement': 'negate',\n 'compose': 'flowRight',\n 'contains': 'includes',\n 'dissoc': 'unset',\n 'dissocPath': 'unset',\n 'dropLast': 'dropRight',\n 'dropLastWhile': 'dropRightWhile',\n 'equals': 'isEqual',\n 'identical': 'eq',\n 'indexBy': 'keyBy',\n 'init': 'initial',\n 'invertObj': 'invert',\n 'juxt': 'over',\n 'omitAll': 'omit',\n 'nAry': 'ary',\n 'path': 'get',\n 'pathEq': 'matchesProperty',\n 'pathOr': 'getOr',\n 'paths': 'at',\n 'pickAll': 'pick',\n 'pipe': 'flow',\n 'pluck': 'map',\n 'prop': 'get',\n 'propEq': 'matchesProperty',\n 'propOr': 'getOr',\n 'props': 'at',\n 'symmetricDifference': 'xor',\n 'symmetricDifferenceBy': 'xorBy',\n 'symmetricDifferenceWith': 'xorWith',\n 'takeLast': 'takeRight',\n 'takeLastWhile': 'takeRightWhile',\n 'unapply': 'rest',\n 'unnest': 'flatten',\n 'useWith': 'overArgs',\n 'where': 'conformsTo',\n 'whereEq': 'isMatch',\n 'zipObj': 'zipObject'\n};\n\n/** Used to map ary to method names. */\nexports.aryMethod = {\n '1': [\n 'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create',\n 'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow',\n 'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll',\n 'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse',\n 'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart',\n 'uniqueId', 'words', 'zipAll'\n ],\n '2': [\n 'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith',\n 'at', 'before', 'bind', 'bindAll', 'bindKey', 'chunk', 'cloneDeepWith',\n 'cloneWith', 'concat', 'conformsTo', 'countBy', 'curryN', 'curryRightN',\n 'debounce', 'defaults', 'defaultsDeep', 'defaultTo', 'delay', 'difference',\n 'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq',\n 'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',\n 'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth', 'forEach',\n 'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight', 'get',\n 'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf', 'intersection',\n 'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch', 'join', 'keyBy',\n 'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues', 'matchesProperty',\n 'maxBy', 'meanBy', 'merge', 'mergeAllWith', 'minBy', 'multiply', 'nth', 'omit',\n 'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt', 'partial',\n 'partialRight', 'partition', 'pick', 'pickBy', 'propertyOf', 'pull', 'pullAll',\n 'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove',\n 'repeat', 'restFrom', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex',\n 'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy',\n 'split', 'spreadFrom', 'startsWith', 'subtract', 'sumBy', 'take', 'takeRight',\n 'takeRightWhile', 'takeWhile', 'tap', 'throttle', 'thru', 'times', 'trimChars',\n 'trimCharsEnd', 'trimCharsStart', 'truncate', 'union', 'uniqBy', 'uniqWith',\n 'unset', 'unzipWith', 'without', 'wrap', 'xor', 'zip', 'zipObject',\n 'zipObjectDeep'\n ],\n '3': [\n 'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith',\n 'findFrom', 'findIndexFrom', 'findLastFrom', 'findLastIndexFrom', 'getOr',\n 'includesFrom', 'indexOfFrom', 'inRange', 'intersectionBy', 'intersectionWith',\n 'invokeArgs', 'invokeArgsMap', 'isEqualWith', 'isMatchWith', 'flatMapDepth',\n 'lastIndexOfFrom', 'mergeWith', 'orderBy', 'padChars', 'padCharsEnd',\n 'padCharsStart', 'pullAllBy', 'pullAllWith', 'rangeStep', 'rangeStepRight',\n 'reduce', 'reduceRight', 'replace', 'set', 'slice', 'sortedIndexBy',\n 'sortedLastIndexBy', 'transform', 'unionBy', 'unionWith', 'update', 'xorBy',\n 'xorWith', 'zipWith'\n ],\n '4': [\n 'fill', 'setWith', 'updateWith'\n ]\n};\n\n/** Used to map ary to rearg configs. */\nexports.aryRearg = {\n '2': [1, 0],\n '3': [2, 0, 1],\n '4': [3, 2, 0, 1]\n};\n\n/** Used to map method names to their iteratee ary. */\nexports.iterateeAry = {\n 'dropRightWhile': 1,\n 'dropWhile': 1,\n 'every': 1,\n 'filter': 1,\n 'find': 1,\n 'findFrom': 1,\n 'findIndex': 1,\n 'findIndexFrom': 1,\n 'findKey': 1,\n 'findLast': 1,\n 'findLastFrom': 1,\n 'findLastIndex': 1,\n 'findLastIndexFrom': 1,\n 'findLastKey': 1,\n 'flatMap': 1,\n 'flatMapDeep': 1,\n 'flatMapDepth': 1,\n 'forEach': 1,\n 'forEachRight': 1,\n 'forIn': 1,\n 'forInRight': 1,\n 'forOwn': 1,\n 'forOwnRight': 1,\n 'map': 1,\n 'mapKeys': 1,\n 'mapValues': 1,\n 'partition': 1,\n 'reduce': 2,\n 'reduceRight': 2,\n 'reject': 1,\n 'remove': 1,\n 'some': 1,\n 'takeRightWhile': 1,\n 'takeWhile': 1,\n 'times': 1,\n 'transform': 2\n};\n\n/** Used to map method names to iteratee rearg configs. */\nexports.iterateeRearg = {\n 'mapKeys': [1],\n 'reduceRight': [1, 0]\n};\n\n/** Used to map method names to rearg configs. */\nexports.methodRearg = {\n 'assignInAllWith': [1, 0],\n 'assignInWith': [1, 2, 0],\n 'assignAllWith': [1, 0],\n 'assignWith': [1, 2, 0],\n 'differenceBy': [1, 2, 0],\n 'differenceWith': [1, 2, 0],\n 'getOr': [2, 1, 0],\n 'intersectionBy': [1, 2, 0],\n 'intersectionWith': [1, 2, 0],\n 'isEqualWith': [1, 2, 0],\n 'isMatchWith': [2, 1, 0],\n 'mergeAllWith': [1, 0],\n 'mergeWith': [1, 2, 0],\n 'padChars': [2, 1, 0],\n 'padCharsEnd': [2, 1, 0],\n 'padCharsStart': [2, 1, 0],\n 'pullAllBy': [2, 1, 0],\n 'pullAllWith': [2, 1, 0],\n 'rangeStep': [1, 2, 0],\n 'rangeStepRight': [1, 2, 0],\n 'setWith': [3, 1, 2, 0],\n 'sortedIndexBy': [2, 1, 0],\n 'sortedLastIndexBy': [2, 1, 0],\n 'unionBy': [1, 2, 0],\n 'unionWith': [1, 2, 0],\n 'updateWith': [3, 1, 2, 0],\n 'xorBy': [1, 2, 0],\n 'xorWith': [1, 2, 0],\n 'zipWith': [1, 2, 0]\n};\n\n/** Used to map method names to spread configs. */\nexports.methodSpread = {\n 'assignAll': { 'start': 0 },\n 'assignAllWith': { 'start': 0 },\n 'assignInAll': { 'start': 0 },\n 'assignInAllWith': { 'start': 0 },\n 'defaultsAll': { 'start': 0 },\n 'defaultsDeepAll': { 'start': 0 },\n 'invokeArgs': { 'start': 2 },\n 'invokeArgsMap': { 'start': 2 },\n 'mergeAll': { 'start': 0 },\n 'mergeAllWith': { 'start': 0 },\n 'partial': { 'start': 1 },\n 'partialRight': { 'start': 1 },\n 'without': { 'start': 1 },\n 'zipAll': { 'start': 0 }\n};\n\n/** Used to identify methods which mutate arrays or objects. */\nexports.mutate = {\n 'array': {\n 'fill': true,\n 'pull': true,\n 'pullAll': true,\n 'pullAllBy': true,\n 'pullAllWith': true,\n 'pullAt': true,\n 'remove': true,\n 'reverse': true\n },\n 'object': {\n 'assign': true,\n 'assignAll': true,\n 'assignAllWith': true,\n 'assignIn': true,\n 'assignInAll': true,\n 'assignInAllWith': true,\n 'assignInWith': true,\n 'assignWith': true,\n 'defaults': true,\n 'defaultsAll': true,\n 'defaultsDeep': true,\n 'defaultsDeepAll': true,\n 'merge': true,\n 'mergeAll': true,\n 'mergeAllWith': true,\n 'mergeWith': true,\n },\n 'set': {\n 'set': true,\n 'setWith': true,\n 'unset': true,\n 'update': true,\n 'updateWith': true\n }\n};\n\n/** Used to map real names to their aliases. */\nexports.realToAlias = (function() {\n var hasOwnProperty = Object.prototype.hasOwnProperty,\n object = exports.aliasToReal,\n result = {};\n\n for (var key in object) {\n var value = object[key];\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }\n return result;\n}());\n\n/** Used to map method names to other names. */\nexports.remap = {\n 'assignAll': 'assign',\n 'assignAllWith': 'assignWith',\n 'assignInAll': 'assignIn',\n 'assignInAllWith': 'assignInWith',\n 'curryN': 'curry',\n 'curryRightN': 'curryRight',\n 'defaultsAll': 'defaults',\n 'defaultsDeepAll': 'defaultsDeep',\n 'findFrom': 'find',\n 'findIndexFrom': 'findIndex',\n 'findLastFrom': 'findLast',\n 'findLastIndexFrom': 'findLastIndex',\n 'getOr': 'get',\n 'includesFrom': 'includes',\n 'indexOfFrom': 'indexOf',\n 'invokeArgs': 'invoke',\n 'invokeArgsMap': 'invokeMap',\n 'lastIndexOfFrom': 'lastIndexOf',\n 'mergeAll': 'merge',\n 'mergeAllWith': 'mergeWith',\n 'padChars': 'pad',\n 'padCharsEnd': 'padEnd',\n 'padCharsStart': 'padStart',\n 'propertyOf': 'get',\n 'rangeStep': 'range',\n 'rangeStepRight': 'rangeRight',\n 'restFrom': 'rest',\n 'spreadFrom': 'spread',\n 'trimChars': 'trim',\n 'trimCharsEnd': 'trimEnd',\n 'trimCharsStart': 'trimStart',\n 'zipAll': 'zip'\n};\n\n/** Used to track methods that skip fixing their arity. */\nexports.skipFixed = {\n 'castArray': true,\n 'flow': true,\n 'flowRight': true,\n 'iteratee': true,\n 'mixin': true,\n 'rearg': true,\n 'runInContext': true\n};\n\n/** Used to track methods that skip rearranging arguments. */\nexports.skipRearg = {\n 'add': true,\n 'assign': true,\n 'assignIn': true,\n 'bind': true,\n 'bindKey': true,\n 'concat': true,\n 'difference': true,\n 'divide': true,\n 'eq': true,\n 'gt': true,\n 'gte': true,\n 'isEqual': true,\n 'lt': true,\n 'lte': true,\n 'matchesProperty': true,\n 'merge': true,\n 'multiply': true,\n 'overArgs': true,\n 'partial': true,\n 'partialRight': true,\n 'propertyOf': true,\n 'random': true,\n 'range': true,\n 'rangeRight': true,\n 'subtract': true,\n 'zip': true,\n 'zipObject': true,\n 'zipObjectDeep': true\n};\n","const set = require('regenerate')();\nset.addRange(0x10500, 0x10527);\nmodule.exports = set;","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","const set = require('regenerate')(0x951, 0x1CD7, 0x1CD9, 0x1CE0);\nset.addRange(0x1CDC, 0x1CDD).addRange(0x11180, 0x111DF);\nmodule.exports = set;","var createCtor = require('./_createCtor'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n}\n\nmodule.exports = createBind;\n","const set = require('regenerate')();\nset.addRange(0x1A20, 0x1A5E).addRange(0x1A60, 0x1A7C).addRange(0x1A7F, 0x1A89).addRange(0x1A90, 0x1A99).addRange(0x1AA0, 0x1AAD);\nmodule.exports = set;","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","var convert = require('./convert'),\n func = convert('unionBy', require('../unionBy'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","const set = require('regenerate')();\nset.addRange(0x1100, 0x11FF).addRange(0x302E, 0x302F).addRange(0x3131, 0x318E).addRange(0x3200, 0x321E).addRange(0x3260, 0x327E).addRange(0xA960, 0xA97C).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xFFA0, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x110D0, 0x110E8).addRange(0x110F0, 0x110F9);\nmodule.exports = set;","/*!\n * get-value \n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nmodule.exports = function (obj, prop, a, b, c) {\n if (!isObject(obj) || !prop) {\n return obj;\n }\n prop = toString(prop);\n\n // allowing for multiple properties to be passed as\n // a string or array, but much faster (3-4x) than doing\n // `[].slice.call(arguments)`\n if (a) prop += '.' + toString(a);\n if (b) prop += '.' + toString(b);\n if (c) prop += '.' + toString(c);\n if (prop in obj) {\n return obj[prop];\n }\n var segs = prop.split('.');\n var len = segs.length;\n var i = -1;\n while (obj && ++i < len) {\n var key = segs[i];\n while (key[key.length - 1] === '\\\\') {\n key = key.slice(0, -1) + '.' + segs[++i];\n }\n obj = obj[key];\n }\n return obj;\n};\nfunction isObject(val) {\n return val !== null && (typeof val === 'object' || typeof val === 'function');\n}\nfunction toString(val) {\n if (!val) return '';\n if (Array.isArray(val)) {\n return val.join('.');\n }\n return val;\n}","const set = require('regenerate')();\nset.addRange(0x1780, 0x17DD).addRange(0x17E0, 0x17E9).addRange(0x17F0, 0x17F9).addRange(0x19E0, 0x19FF);\nmodule.exports = set;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nvar _grayPercentage = require(\"gray-percentage\");\nvar _grayPercentage2 = _interopRequireDefault(_grayPercentage);\nvar _typographyBreakpointConstants = require(\"typography-breakpoint-constants\");\nvar _compassVerticalRhythm = require(\"compass-vertical-rhythm\");\nvar _compassVerticalRhythm2 = _interopRequireDefault(_compassVerticalRhythm);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nvar theme = {\n title: \"Moraga\",\n baseFontSize: \"18px\",\n baseLineHeight: 1.56,\n googleFonts: [{\n name: \"Source Sans Pro\",\n styles: [\"200\", \"400\", \"400i\", \"700\"]\n }],\n scaleRatio: 2.5,\n headerFontFamily: [\"Source Sans Pro\", \"sans-serif\"],\n bodyFontFamily: [\"Source Sans Pro\", \"sans-serif\"],\n headerColor: \"hsla(0,0%,0%,0.85)\",\n bodyColor: \"hsla(0,0%,0%,0.7)\",\n headerWeight: \"200\",\n bodyWeight: 400,\n boldWeight: 700,\n overrideStyles: function overrideStyles(_ref, options) {\n var scale = _ref.scale,\n rhythm = _ref.rhythm;\n var vr = (0, _compassVerticalRhythm2.default)({\n baseFontSize: \"16px\",\n baseLineHeight: \"24.88px\"\n });\n var styles = _defineProperty({\n \"h1 a,h2 a,h3 a,h4 a,h5 a,h6 a\": {\n fontWeight: options.headerWeight\n },\n a: {\n fontWeight: 400,\n color: \"#419eda\",\n textDecoration: \"none\"\n },\n \"a:hover\": {\n color: \"#2a6496\",\n textDecoration: \"underline\"\n },\n blockquote: _extends({}, scale(1 / 5), {\n color: (0, _grayPercentage2.default)(40),\n paddingLeft: rhythm(3 / 4),\n marginLeft: 0,\n borderLeft: rhythm(1 / 4) + \" solid \" + (0, _grayPercentage2.default)(87)\n })\n }, _typographyBreakpointConstants.TABLET_MEDIA_QUERY, {\n html: _extends({}, vr.establishBaseline()),\n blockquote: {\n marginLeft: rhythm(-3 / 4),\n marginRight: 0,\n paddingLeft: rhythm(1 / 2)\n },\n table: _extends({}, scale(-1 / 5))\n });\n return styles;\n }\n};\nexports.default = theme;","const set = require('regenerate')();\nset.addRange(0x10F00, 0x10F27);\nmodule.exports = set;","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","const set = require('regenerate')(0x1107F);\nset.addRange(0x11000, 0x1104D).addRange(0x11052, 0x11075);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10100, 0x10102).addRange(0x10107, 0x10133).addRange(0x10137, 0x1013F);\nmodule.exports = set;","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","const set = require('regenerate')(0x1805);\nset.addRange(0x1802, 0x1803).addRange(0xA840, 0xA877);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x11EE0, 0x11EF8);\nmodule.exports = set;","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","const set = require('regenerate')(0xB7, 0x640, 0x7FA, 0xB55, 0xE46, 0xEC6, 0x180A, 0x1843, 0x1AA7, 0x1C36, 0x1C7B, 0x3005, 0xA015, 0xA60C, 0xA9CF, 0xA9E6, 0xAA70, 0xAADD, 0xFF70, 0x1135D, 0x11A98, 0x16FE3);\nset.addRange(0x2D0, 0x2D1).addRange(0x3031, 0x3035).addRange(0x309D, 0x309E).addRange(0x30FC, 0x30FE).addRange(0xAAF3, 0xAAF4).addRange(0x10781, 0x10782).addRange(0x115C6, 0x115C8).addRange(0x16B42, 0x16B43).addRange(0x16FE0, 0x16FE1).addRange(0x1E13C, 0x1E13D).addRange(0x1E944, 0x1E946);\nmodule.exports = set;","var documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n all: documentAll,\n IS_HTMLDDA: IS_HTMLDDA\n};\n","const set = require('regenerate')();\nset.addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1BC9C, 0x1BC9F);\nmodule.exports = set;","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var convert = require('./convert'),\n func = convert('kebabCase', require('../kebabCase'), require('./_falseOptions'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","const set = require('regenerate')();\nset.addRange(0x10FB0, 0x10FCB);\nmodule.exports = set;","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","const set = require('regenerate')();\nset.addRange(0x103A0, 0x103C3).addRange(0x103C8, 0x103D5);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x16AD0, 0x16AED).addRange(0x16AF0, 0x16AF5);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x10860, 0x1087F);\nmodule.exports = set;","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? nBytes - 1 : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n i += d;\n e = s & (1 << -nBits) - 1;\n s >>= -nBits;\n nBits += eLen;\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : (s ? -1 : 1) * Infinity;\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n};\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n var i = isLE ? 0 : nBytes - 1;\n var d = isLE ? 1 : -1;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n value = Math.abs(value);\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n buffer[offset + i - d] |= s * 128;\n};","const set = require('regenerate')(0x1039F);\nset.addRange(0x10380, 0x1039D);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x16F00, 0x16F4A).addRange(0x16F4F, 0x16F87).addRange(0x16F8F, 0x16F9F);\nmodule.exports = set;","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var e = require(\"convert-css-length\"),\n n = require(\"parse-unit\"),\n t = function (e) {\n return n(e)[1];\n },\n i = function (e) {\n return n(e)[0];\n },\n r = {\n baseFontSize: \"16px\",\n baseLineHeight: 1.5,\n rhythmUnit: \"rem\",\n defaultRhythmBorderWidth: \"1px\",\n defaultRhythmBorderStyle: \"solid\",\n roundToNearestHalfLine: !0,\n minLinePadding: \"2px\"\n },\n a = function (n, t) {\n var r,\n a = e(t.baseFontSize),\n o = i(a(n, \"px\")),\n s = i(t.baseLineHeightInPx),\n u = i(a(t.minLinePadding, \"px\"));\n return (r = t.roundToNearestHalfLine ? Math.ceil(2 * o / s) / 2 : Math.ceil(o / s)) * s - o < 2 * u && (r += t.roundToNearestHalfLine ? .5 : 1), r;\n },\n o = function (n) {\n var r = e(n.baseFontSize);\n return function (e, a, o) {\n null == e && (e = 1), null == a && (a = n.baseFontSize), null == o && (o = 0);\n var s = e * i(n.baseLineHeightInPx) - o + \"px\",\n u = r(s, n.rhythmUnit, a);\n return \"px\" === t(u) && (u = Math.floor(i(u)) + t(u)), parseFloat(i(u).toFixed(5)) + t(u);\n };\n };\nmodule.exports = function (n) {\n var s = JSON.parse(JSON.stringify(r)),\n u = Object.assign({}, s, n),\n h = e(u.baseFontSize);\n if (t(u.baseLineHeight)) {\n i(h(u.baseFontSize, \"px\"));\n u.baseLineHeightInPx = h(u.baseLineHeight, \"px\");\n } else u.baseLineHeightInPx = i(u.baseFontSize) * u.baseLineHeight + \"px\";\n return {\n rhythm: o(u),\n establishBaseline: function () {\n return function (n) {\n e(n.baseFontSize);\n return {\n fontSize: i(n.baseFontSize) / 16 * 100 + \"%\",\n lineHeight: n.baseLineHeight.toString()\n };\n }(u);\n },\n linesForFontSize: function (e) {\n return a(e, u);\n },\n adjustFontSizeTo: function (n, r, s) {\n return null == r && (r = \"auto\"), function (n, r, s, u) {\n null == s && (s = u.baseFontSize), \"%\" === t(n) && (n = i(u.baseFontSize) * (i(n) / 100) + \"px\");\n var h = e(u.baseFontSize);\n n = h(n, \"px\", s = h(s, \"px\"));\n var l = o(u);\n return \"auto\" === r && (r = a(n, u)), {\n fontSize: h(n, u.rhythmUnit, s),\n lineHeight: l(r, s)\n };\n }(n, r, s, u);\n }\n };\n};","const set = require('regenerate')();\nset.addRange(0x1000, 0x109F).addRange(0xA9E0, 0xA9FE).addRange(0xAA60, 0xAA7F);\nmodule.exports = set;","const set = require('regenerate')(0x483);\nset.addRange(0x10350, 0x1037A);\nmodule.exports = set;","/*! https://mths.be/he v1.2.0 by @mathias | MIT license */\n;\n(function (root) {\n // Detect free variables `exports`.\n var freeExports = typeof exports == 'object' && exports;\n\n // Detect free variable `module`.\n var freeModule = typeof module == 'object' && module && module.exports == freeExports && module;\n\n // Detect free variable `global`, from Node.js or Browserified code,\n // and use it as `root`.\n var freeGlobal = typeof global == 'object' && global;\n if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n root = freeGlobal;\n }\n\n /*--------------------------------------------------------------------------*/\n\n // All astral symbols.\n var regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n // All ASCII symbols (not just printable ASCII) except those listed in the\n // first column of the overrides table.\n // https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides\n var regexAsciiWhitelist = /[\\x01-\\x7F]/g;\n // All BMP symbols that are not ASCII newlines, printable ASCII symbols, or\n // code points listed in the first column of the overrides table on\n // https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides.\n var regexBmpWhitelist = /[\\x01-\\t\\x0B\\f\\x0E-\\x1F\\x7F\\x81\\x8D\\x8F\\x90\\x9D\\xA0-\\uFFFF]/g;\n var regexEncodeNonAscii = /<\\u20D2|=\\u20E5|>\\u20D2|\\u205F\\u200A|\\u219D\\u0338|\\u2202\\u0338|\\u2220\\u20D2|\\u2229\\uFE00|\\u222A\\uFE00|\\u223C\\u20D2|\\u223D\\u0331|\\u223E\\u0333|\\u2242\\u0338|\\u224B\\u0338|\\u224D\\u20D2|\\u224E\\u0338|\\u224F\\u0338|\\u2250\\u0338|\\u2261\\u20E5|\\u2264\\u20D2|\\u2265\\u20D2|\\u2266\\u0338|\\u2267\\u0338|\\u2268\\uFE00|\\u2269\\uFE00|\\u226A\\u0338|\\u226A\\u20D2|\\u226B\\u0338|\\u226B\\u20D2|\\u227F\\u0338|\\u2282\\u20D2|\\u2283\\u20D2|\\u228A\\uFE00|\\u228B\\uFE00|\\u228F\\u0338|\\u2290\\u0338|\\u2293\\uFE00|\\u2294\\uFE00|\\u22B4\\u20D2|\\u22B5\\u20D2|\\u22D8\\u0338|\\u22D9\\u0338|\\u22DA\\uFE00|\\u22DB\\uFE00|\\u22F5\\u0338|\\u22F9\\u0338|\\u2933\\u0338|\\u29CF\\u0338|\\u29D0\\u0338|\\u2A6D\\u0338|\\u2A70\\u0338|\\u2A7D\\u0338|\\u2A7E\\u0338|\\u2AA1\\u0338|\\u2AA2\\u0338|\\u2AAC\\uFE00|\\u2AAD\\uFE00|\\u2AAF\\u0338|\\u2AB0\\u0338|\\u2AC5\\u0338|\\u2AC6\\u0338|\\u2ACB\\uFE00|\\u2ACC\\uFE00|\\u2AFD\\u20E5|[\\xA0-\\u0113\\u0116-\\u0122\\u0124-\\u012B\\u012E-\\u014D\\u0150-\\u017E\\u0192\\u01B5\\u01F5\\u0237\\u02C6\\u02C7\\u02D8-\\u02DD\\u0311\\u0391-\\u03A1\\u03A3-\\u03A9\\u03B1-\\u03C9\\u03D1\\u03D2\\u03D5\\u03D6\\u03DC\\u03DD\\u03F0\\u03F1\\u03F5\\u03F6\\u0401-\\u040C\\u040E-\\u044F\\u0451-\\u045C\\u045E\\u045F\\u2002-\\u2005\\u2007-\\u2010\\u2013-\\u2016\\u2018-\\u201A\\u201C-\\u201E\\u2020-\\u2022\\u2025\\u2026\\u2030-\\u2035\\u2039\\u203A\\u203E\\u2041\\u2043\\u2044\\u204F\\u2057\\u205F-\\u2063\\u20AC\\u20DB\\u20DC\\u2102\\u2105\\u210A-\\u2113\\u2115-\\u211E\\u2122\\u2124\\u2127-\\u2129\\u212C\\u212D\\u212F-\\u2131\\u2133-\\u2138\\u2145-\\u2148\\u2153-\\u215E\\u2190-\\u219B\\u219D-\\u21A7\\u21A9-\\u21AE\\u21B0-\\u21B3\\u21B5-\\u21B7\\u21BA-\\u21DB\\u21DD\\u21E4\\u21E5\\u21F5\\u21FD-\\u2205\\u2207-\\u2209\\u220B\\u220C\\u220F-\\u2214\\u2216-\\u2218\\u221A\\u221D-\\u2238\\u223A-\\u2257\\u2259\\u225A\\u225C\\u225F-\\u2262\\u2264-\\u228B\\u228D-\\u229B\\u229D-\\u22A5\\u22A7-\\u22B0\\u22B2-\\u22BB\\u22BD-\\u22DB\\u22DE-\\u22E3\\u22E6-\\u22F7\\u22F9-\\u22FE\\u2305\\u2306\\u2308-\\u2310\\u2312\\u2313\\u2315\\u2316\\u231C-\\u231F\\u2322\\u2323\\u232D\\u232E\\u2336\\u233D\\u233F\\u237C\\u23B0\\u23B1\\u23B4-\\u23B6\\u23DC-\\u23DF\\u23E2\\u23E7\\u2423\\u24C8\\u2500\\u2502\\u250C\\u2510\\u2514\\u2518\\u251C\\u2524\\u252C\\u2534\\u253C\\u2550-\\u256C\\u2580\\u2584\\u2588\\u2591-\\u2593\\u25A1\\u25AA\\u25AB\\u25AD\\u25AE\\u25B1\\u25B3-\\u25B5\\u25B8\\u25B9\\u25BD-\\u25BF\\u25C2\\u25C3\\u25CA\\u25CB\\u25EC\\u25EF\\u25F8-\\u25FC\\u2605\\u2606\\u260E\\u2640\\u2642\\u2660\\u2663\\u2665\\u2666\\u266A\\u266D-\\u266F\\u2713\\u2717\\u2720\\u2736\\u2758\\u2772\\u2773\\u27C8\\u27C9\\u27E6-\\u27ED\\u27F5-\\u27FA\\u27FC\\u27FF\\u2902-\\u2905\\u290C-\\u2913\\u2916\\u2919-\\u2920\\u2923-\\u292A\\u2933\\u2935-\\u2939\\u293C\\u293D\\u2945\\u2948-\\u294B\\u294E-\\u2976\\u2978\\u2979\\u297B-\\u297F\\u2985\\u2986\\u298B-\\u2996\\u299A\\u299C\\u299D\\u29A4-\\u29B7\\u29B9\\u29BB\\u29BC\\u29BE-\\u29C5\\u29C9\\u29CD-\\u29D0\\u29DC-\\u29DE\\u29E3-\\u29E5\\u29EB\\u29F4\\u29F6\\u2A00-\\u2A02\\u2A04\\u2A06\\u2A0C\\u2A0D\\u2A10-\\u2A17\\u2A22-\\u2A27\\u2A29\\u2A2A\\u2A2D-\\u2A31\\u2A33-\\u2A3C\\u2A3F\\u2A40\\u2A42-\\u2A4D\\u2A50\\u2A53-\\u2A58\\u2A5A-\\u2A5D\\u2A5F\\u2A66\\u2A6A\\u2A6D-\\u2A75\\u2A77-\\u2A9A\\u2A9D-\\u2AA2\\u2AA4-\\u2AB0\\u2AB3-\\u2AC8\\u2ACB\\u2ACC\\u2ACF-\\u2ADB\\u2AE4\\u2AE6-\\u2AE9\\u2AEB-\\u2AF3\\u2AFD\\uFB00-\\uFB04]|\\uD835[\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDCCF\\uDD04\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDD6B]/g;\n var encodeMap = {\n '\\xAD': 'shy',\n '\\u200C': 'zwnj',\n '\\u200D': 'zwj',\n '\\u200E': 'lrm',\n '\\u2063': 'ic',\n '\\u2062': 'it',\n '\\u2061': 'af',\n '\\u200F': 'rlm',\n '\\u200B': 'ZeroWidthSpace',\n '\\u2060': 'NoBreak',\n '\\u0311': 'DownBreve',\n '\\u20DB': 'tdot',\n '\\u20DC': 'DotDot',\n '\\t': 'Tab',\n '\\n': 'NewLine',\n '\\u2008': 'puncsp',\n '\\u205F': 'MediumSpace',\n '\\u2009': 'thinsp',\n '\\u200A': 'hairsp',\n '\\u2004': 'emsp13',\n '\\u2002': 'ensp',\n '\\u2005': 'emsp14',\n '\\u2003': 'emsp',\n '\\u2007': 'numsp',\n '\\xA0': 'nbsp',\n '\\u205F\\u200A': 'ThickSpace',\n '\\u203E': 'oline',\n '_': 'lowbar',\n '\\u2010': 'dash',\n '\\u2013': 'ndash',\n '\\u2014': 'mdash',\n '\\u2015': 'horbar',\n ',': 'comma',\n ';': 'semi',\n '\\u204F': 'bsemi',\n ':': 'colon',\n '\\u2A74': 'Colone',\n '!': 'excl',\n '\\xA1': 'iexcl',\n '?': 'quest',\n '\\xBF': 'iquest',\n '.': 'period',\n '\\u2025': 'nldr',\n '\\u2026': 'mldr',\n '\\xB7': 'middot',\n '\\'': 'apos',\n '\\u2018': 'lsquo',\n '\\u2019': 'rsquo',\n '\\u201A': 'sbquo',\n '\\u2039': 'lsaquo',\n '\\u203A': 'rsaquo',\n '\"': 'quot',\n '\\u201C': 'ldquo',\n '\\u201D': 'rdquo',\n '\\u201E': 'bdquo',\n '\\xAB': 'laquo',\n '\\xBB': 'raquo',\n '(': 'lpar',\n ')': 'rpar',\n '[': 'lsqb',\n ']': 'rsqb',\n '{': 'lcub',\n '}': 'rcub',\n '\\u2308': 'lceil',\n '\\u2309': 'rceil',\n '\\u230A': 'lfloor',\n '\\u230B': 'rfloor',\n '\\u2985': 'lopar',\n '\\u2986': 'ropar',\n '\\u298B': 'lbrke',\n '\\u298C': 'rbrke',\n '\\u298D': 'lbrkslu',\n '\\u298E': 'rbrksld',\n '\\u298F': 'lbrksld',\n '\\u2990': 'rbrkslu',\n '\\u2991': 'langd',\n '\\u2992': 'rangd',\n '\\u2993': 'lparlt',\n '\\u2994': 'rpargt',\n '\\u2995': 'gtlPar',\n '\\u2996': 'ltrPar',\n '\\u27E6': 'lobrk',\n '\\u27E7': 'robrk',\n '\\u27E8': 'lang',\n '\\u27E9': 'rang',\n '\\u27EA': 'Lang',\n '\\u27EB': 'Rang',\n '\\u27EC': 'loang',\n '\\u27ED': 'roang',\n '\\u2772': 'lbbrk',\n '\\u2773': 'rbbrk',\n '\\u2016': 'Vert',\n '\\xA7': 'sect',\n '\\xB6': 'para',\n '@': 'commat',\n '*': 'ast',\n '/': 'sol',\n 'undefined': null,\n '&': 'amp',\n '#': 'num',\n '%': 'percnt',\n '\\u2030': 'permil',\n '\\u2031': 'pertenk',\n '\\u2020': 'dagger',\n '\\u2021': 'Dagger',\n '\\u2022': 'bull',\n '\\u2043': 'hybull',\n '\\u2032': 'prime',\n '\\u2033': 'Prime',\n '\\u2034': 'tprime',\n '\\u2057': 'qprime',\n '\\u2035': 'bprime',\n '\\u2041': 'caret',\n '`': 'grave',\n '\\xB4': 'acute',\n '\\u02DC': 'tilde',\n '^': 'Hat',\n '\\xAF': 'macr',\n '\\u02D8': 'breve',\n '\\u02D9': 'dot',\n '\\xA8': 'die',\n '\\u02DA': 'ring',\n '\\u02DD': 'dblac',\n '\\xB8': 'cedil',\n '\\u02DB': 'ogon',\n '\\u02C6': 'circ',\n '\\u02C7': 'caron',\n '\\xB0': 'deg',\n '\\xA9': 'copy',\n '\\xAE': 'reg',\n '\\u2117': 'copysr',\n '\\u2118': 'wp',\n '\\u211E': 'rx',\n '\\u2127': 'mho',\n '\\u2129': 'iiota',\n '\\u2190': 'larr',\n '\\u219A': 'nlarr',\n '\\u2192': 'rarr',\n '\\u219B': 'nrarr',\n '\\u2191': 'uarr',\n '\\u2193': 'darr',\n '\\u2194': 'harr',\n '\\u21AE': 'nharr',\n '\\u2195': 'varr',\n '\\u2196': 'nwarr',\n '\\u2197': 'nearr',\n '\\u2198': 'searr',\n '\\u2199': 'swarr',\n '\\u219D': 'rarrw',\n '\\u219D\\u0338': 'nrarrw',\n '\\u219E': 'Larr',\n '\\u219F': 'Uarr',\n '\\u21A0': 'Rarr',\n '\\u21A1': 'Darr',\n '\\u21A2': 'larrtl',\n '\\u21A3': 'rarrtl',\n '\\u21A4': 'mapstoleft',\n '\\u21A5': 'mapstoup',\n '\\u21A6': 'map',\n '\\u21A7': 'mapstodown',\n '\\u21A9': 'larrhk',\n '\\u21AA': 'rarrhk',\n '\\u21AB': 'larrlp',\n '\\u21AC': 'rarrlp',\n '\\u21AD': 'harrw',\n '\\u21B0': 'lsh',\n '\\u21B1': 'rsh',\n '\\u21B2': 'ldsh',\n '\\u21B3': 'rdsh',\n '\\u21B5': 'crarr',\n '\\u21B6': 'cularr',\n '\\u21B7': 'curarr',\n '\\u21BA': 'olarr',\n '\\u21BB': 'orarr',\n '\\u21BC': 'lharu',\n '\\u21BD': 'lhard',\n '\\u21BE': 'uharr',\n '\\u21BF': 'uharl',\n '\\u21C0': 'rharu',\n '\\u21C1': 'rhard',\n '\\u21C2': 'dharr',\n '\\u21C3': 'dharl',\n '\\u21C4': 'rlarr',\n '\\u21C5': 'udarr',\n '\\u21C6': 'lrarr',\n '\\u21C7': 'llarr',\n '\\u21C8': 'uuarr',\n '\\u21C9': 'rrarr',\n '\\u21CA': 'ddarr',\n '\\u21CB': 'lrhar',\n '\\u21CC': 'rlhar',\n '\\u21D0': 'lArr',\n '\\u21CD': 'nlArr',\n '\\u21D1': 'uArr',\n '\\u21D2': 'rArr',\n '\\u21CF': 'nrArr',\n '\\u21D3': 'dArr',\n '\\u21D4': 'iff',\n '\\u21CE': 'nhArr',\n '\\u21D5': 'vArr',\n '\\u21D6': 'nwArr',\n '\\u21D7': 'neArr',\n '\\u21D8': 'seArr',\n '\\u21D9': 'swArr',\n '\\u21DA': 'lAarr',\n '\\u21DB': 'rAarr',\n '\\u21DD': 'zigrarr',\n '\\u21E4': 'larrb',\n '\\u21E5': 'rarrb',\n '\\u21F5': 'duarr',\n '\\u21FD': 'loarr',\n '\\u21FE': 'roarr',\n '\\u21FF': 'hoarr',\n '\\u2200': 'forall',\n '\\u2201': 'comp',\n '\\u2202': 'part',\n '\\u2202\\u0338': 'npart',\n '\\u2203': 'exist',\n '\\u2204': 'nexist',\n '\\u2205': 'empty',\n '\\u2207': 'Del',\n '\\u2208': 'in',\n '\\u2209': 'notin',\n '\\u220B': 'ni',\n '\\u220C': 'notni',\n '\\u03F6': 'bepsi',\n '\\u220F': 'prod',\n '\\u2210': 'coprod',\n '\\u2211': 'sum',\n '+': 'plus',\n '\\xB1': 'pm',\n '\\xF7': 'div',\n '\\xD7': 'times',\n '<': 'lt',\n '\\u226E': 'nlt',\n '<\\u20D2': 'nvlt',\n '=': 'equals',\n '\\u2260': 'ne',\n '=\\u20E5': 'bne',\n '\\u2A75': 'Equal',\n '>': 'gt',\n '\\u226F': 'ngt',\n '>\\u20D2': 'nvgt',\n '\\xAC': 'not',\n '|': 'vert',\n '\\xA6': 'brvbar',\n '\\u2212': 'minus',\n '\\u2213': 'mp',\n '\\u2214': 'plusdo',\n '\\u2044': 'frasl',\n '\\u2216': 'setmn',\n '\\u2217': 'lowast',\n '\\u2218': 'compfn',\n '\\u221A': 'Sqrt',\n '\\u221D': 'prop',\n '\\u221E': 'infin',\n '\\u221F': 'angrt',\n '\\u2220': 'ang',\n '\\u2220\\u20D2': 'nang',\n '\\u2221': 'angmsd',\n '\\u2222': 'angsph',\n '\\u2223': 'mid',\n '\\u2224': 'nmid',\n '\\u2225': 'par',\n '\\u2226': 'npar',\n '\\u2227': 'and',\n '\\u2228': 'or',\n '\\u2229': 'cap',\n '\\u2229\\uFE00': 'caps',\n '\\u222A': 'cup',\n '\\u222A\\uFE00': 'cups',\n '\\u222B': 'int',\n '\\u222C': 'Int',\n '\\u222D': 'tint',\n '\\u2A0C': 'qint',\n '\\u222E': 'oint',\n '\\u222F': 'Conint',\n '\\u2230': 'Cconint',\n '\\u2231': 'cwint',\n '\\u2232': 'cwconint',\n '\\u2233': 'awconint',\n '\\u2234': 'there4',\n '\\u2235': 'becaus',\n '\\u2236': 'ratio',\n '\\u2237': 'Colon',\n '\\u2238': 'minusd',\n '\\u223A': 'mDDot',\n '\\u223B': 'homtht',\n '\\u223C': 'sim',\n '\\u2241': 'nsim',\n '\\u223C\\u20D2': 'nvsim',\n '\\u223D': 'bsim',\n '\\u223D\\u0331': 'race',\n '\\u223E': 'ac',\n '\\u223E\\u0333': 'acE',\n '\\u223F': 'acd',\n '\\u2240': 'wr',\n '\\u2242': 'esim',\n '\\u2242\\u0338': 'nesim',\n '\\u2243': 'sime',\n '\\u2244': 'nsime',\n '\\u2245': 'cong',\n '\\u2247': 'ncong',\n '\\u2246': 'simne',\n '\\u2248': 'ap',\n '\\u2249': 'nap',\n '\\u224A': 'ape',\n '\\u224B': 'apid',\n '\\u224B\\u0338': 'napid',\n '\\u224C': 'bcong',\n '\\u224D': 'CupCap',\n '\\u226D': 'NotCupCap',\n '\\u224D\\u20D2': 'nvap',\n '\\u224E': 'bump',\n '\\u224E\\u0338': 'nbump',\n '\\u224F': 'bumpe',\n '\\u224F\\u0338': 'nbumpe',\n '\\u2250': 'doteq',\n '\\u2250\\u0338': 'nedot',\n '\\u2251': 'eDot',\n '\\u2252': 'efDot',\n '\\u2253': 'erDot',\n '\\u2254': 'colone',\n '\\u2255': 'ecolon',\n '\\u2256': 'ecir',\n '\\u2257': 'cire',\n '\\u2259': 'wedgeq',\n '\\u225A': 'veeeq',\n '\\u225C': 'trie',\n '\\u225F': 'equest',\n '\\u2261': 'equiv',\n '\\u2262': 'nequiv',\n '\\u2261\\u20E5': 'bnequiv',\n '\\u2264': 'le',\n '\\u2270': 'nle',\n '\\u2264\\u20D2': 'nvle',\n '\\u2265': 'ge',\n '\\u2271': 'nge',\n '\\u2265\\u20D2': 'nvge',\n '\\u2266': 'lE',\n '\\u2266\\u0338': 'nlE',\n '\\u2267': 'gE',\n '\\u2267\\u0338': 'ngE',\n '\\u2268\\uFE00': 'lvnE',\n '\\u2268': 'lnE',\n '\\u2269': 'gnE',\n '\\u2269\\uFE00': 'gvnE',\n '\\u226A': 'll',\n '\\u226A\\u0338': 'nLtv',\n '\\u226A\\u20D2': 'nLt',\n '\\u226B': 'gg',\n '\\u226B\\u0338': 'nGtv',\n '\\u226B\\u20D2': 'nGt',\n '\\u226C': 'twixt',\n '\\u2272': 'lsim',\n '\\u2274': 'nlsim',\n '\\u2273': 'gsim',\n '\\u2275': 'ngsim',\n '\\u2276': 'lg',\n '\\u2278': 'ntlg',\n '\\u2277': 'gl',\n '\\u2279': 'ntgl',\n '\\u227A': 'pr',\n '\\u2280': 'npr',\n '\\u227B': 'sc',\n '\\u2281': 'nsc',\n '\\u227C': 'prcue',\n '\\u22E0': 'nprcue',\n '\\u227D': 'sccue',\n '\\u22E1': 'nsccue',\n '\\u227E': 'prsim',\n '\\u227F': 'scsim',\n '\\u227F\\u0338': 'NotSucceedsTilde',\n '\\u2282': 'sub',\n '\\u2284': 'nsub',\n '\\u2282\\u20D2': 'vnsub',\n '\\u2283': 'sup',\n '\\u2285': 'nsup',\n '\\u2283\\u20D2': 'vnsup',\n '\\u2286': 'sube',\n '\\u2288': 'nsube',\n '\\u2287': 'supe',\n '\\u2289': 'nsupe',\n '\\u228A\\uFE00': 'vsubne',\n '\\u228A': 'subne',\n '\\u228B\\uFE00': 'vsupne',\n '\\u228B': 'supne',\n '\\u228D': 'cupdot',\n '\\u228E': 'uplus',\n '\\u228F': 'sqsub',\n '\\u228F\\u0338': 'NotSquareSubset',\n '\\u2290': 'sqsup',\n '\\u2290\\u0338': 'NotSquareSuperset',\n '\\u2291': 'sqsube',\n '\\u22E2': 'nsqsube',\n '\\u2292': 'sqsupe',\n '\\u22E3': 'nsqsupe',\n '\\u2293': 'sqcap',\n '\\u2293\\uFE00': 'sqcaps',\n '\\u2294': 'sqcup',\n '\\u2294\\uFE00': 'sqcups',\n '\\u2295': 'oplus',\n '\\u2296': 'ominus',\n '\\u2297': 'otimes',\n '\\u2298': 'osol',\n '\\u2299': 'odot',\n '\\u229A': 'ocir',\n '\\u229B': 'oast',\n '\\u229D': 'odash',\n '\\u229E': 'plusb',\n '\\u229F': 'minusb',\n '\\u22A0': 'timesb',\n '\\u22A1': 'sdotb',\n '\\u22A2': 'vdash',\n '\\u22AC': 'nvdash',\n '\\u22A3': 'dashv',\n '\\u22A4': 'top',\n '\\u22A5': 'bot',\n '\\u22A7': 'models',\n '\\u22A8': 'vDash',\n '\\u22AD': 'nvDash',\n '\\u22A9': 'Vdash',\n '\\u22AE': 'nVdash',\n '\\u22AA': 'Vvdash',\n '\\u22AB': 'VDash',\n '\\u22AF': 'nVDash',\n '\\u22B0': 'prurel',\n '\\u22B2': 'vltri',\n '\\u22EA': 'nltri',\n '\\u22B3': 'vrtri',\n '\\u22EB': 'nrtri',\n '\\u22B4': 'ltrie',\n '\\u22EC': 'nltrie',\n '\\u22B4\\u20D2': 'nvltrie',\n '\\u22B5': 'rtrie',\n '\\u22ED': 'nrtrie',\n '\\u22B5\\u20D2': 'nvrtrie',\n '\\u22B6': 'origof',\n '\\u22B7': 'imof',\n '\\u22B8': 'mumap',\n '\\u22B9': 'hercon',\n '\\u22BA': 'intcal',\n '\\u22BB': 'veebar',\n '\\u22BD': 'barvee',\n '\\u22BE': 'angrtvb',\n '\\u22BF': 'lrtri',\n '\\u22C0': 'Wedge',\n '\\u22C1': 'Vee',\n '\\u22C2': 'xcap',\n '\\u22C3': 'xcup',\n '\\u22C4': 'diam',\n '\\u22C5': 'sdot',\n '\\u22C6': 'Star',\n '\\u22C7': 'divonx',\n '\\u22C8': 'bowtie',\n '\\u22C9': 'ltimes',\n '\\u22CA': 'rtimes',\n '\\u22CB': 'lthree',\n '\\u22CC': 'rthree',\n '\\u22CD': 'bsime',\n '\\u22CE': 'cuvee',\n '\\u22CF': 'cuwed',\n '\\u22D0': 'Sub',\n '\\u22D1': 'Sup',\n '\\u22D2': 'Cap',\n '\\u22D3': 'Cup',\n '\\u22D4': 'fork',\n '\\u22D5': 'epar',\n '\\u22D6': 'ltdot',\n '\\u22D7': 'gtdot',\n '\\u22D8': 'Ll',\n '\\u22D8\\u0338': 'nLl',\n '\\u22D9': 'Gg',\n '\\u22D9\\u0338': 'nGg',\n '\\u22DA\\uFE00': 'lesg',\n '\\u22DA': 'leg',\n '\\u22DB': 'gel',\n '\\u22DB\\uFE00': 'gesl',\n '\\u22DE': 'cuepr',\n '\\u22DF': 'cuesc',\n '\\u22E6': 'lnsim',\n '\\u22E7': 'gnsim',\n '\\u22E8': 'prnsim',\n '\\u22E9': 'scnsim',\n '\\u22EE': 'vellip',\n '\\u22EF': 'ctdot',\n '\\u22F0': 'utdot',\n '\\u22F1': 'dtdot',\n '\\u22F2': 'disin',\n '\\u22F3': 'isinsv',\n '\\u22F4': 'isins',\n '\\u22F5': 'isindot',\n '\\u22F5\\u0338': 'notindot',\n '\\u22F6': 'notinvc',\n '\\u22F7': 'notinvb',\n '\\u22F9': 'isinE',\n '\\u22F9\\u0338': 'notinE',\n '\\u22FA': 'nisd',\n '\\u22FB': 'xnis',\n '\\u22FC': 'nis',\n '\\u22FD': 'notnivc',\n '\\u22FE': 'notnivb',\n '\\u2305': 'barwed',\n '\\u2306': 'Barwed',\n '\\u230C': 'drcrop',\n '\\u230D': 'dlcrop',\n '\\u230E': 'urcrop',\n '\\u230F': 'ulcrop',\n '\\u2310': 'bnot',\n '\\u2312': 'profline',\n '\\u2313': 'profsurf',\n '\\u2315': 'telrec',\n '\\u2316': 'target',\n '\\u231C': 'ulcorn',\n '\\u231D': 'urcorn',\n '\\u231E': 'dlcorn',\n '\\u231F': 'drcorn',\n '\\u2322': 'frown',\n '\\u2323': 'smile',\n '\\u232D': 'cylcty',\n '\\u232E': 'profalar',\n '\\u2336': 'topbot',\n '\\u233D': 'ovbar',\n '\\u233F': 'solbar',\n '\\u237C': 'angzarr',\n '\\u23B0': 'lmoust',\n '\\u23B1': 'rmoust',\n '\\u23B4': 'tbrk',\n '\\u23B5': 'bbrk',\n '\\u23B6': 'bbrktbrk',\n '\\u23DC': 'OverParenthesis',\n '\\u23DD': 'UnderParenthesis',\n '\\u23DE': 'OverBrace',\n '\\u23DF': 'UnderBrace',\n '\\u23E2': 'trpezium',\n '\\u23E7': 'elinters',\n '\\u2423': 'blank',\n '\\u2500': 'boxh',\n '\\u2502': 'boxv',\n '\\u250C': 'boxdr',\n '\\u2510': 'boxdl',\n '\\u2514': 'boxur',\n '\\u2518': 'boxul',\n '\\u251C': 'boxvr',\n '\\u2524': 'boxvl',\n '\\u252C': 'boxhd',\n '\\u2534': 'boxhu',\n '\\u253C': 'boxvh',\n '\\u2550': 'boxH',\n '\\u2551': 'boxV',\n '\\u2552': 'boxdR',\n '\\u2553': 'boxDr',\n '\\u2554': 'boxDR',\n '\\u2555': 'boxdL',\n '\\u2556': 'boxDl',\n '\\u2557': 'boxDL',\n '\\u2558': 'boxuR',\n '\\u2559': 'boxUr',\n '\\u255A': 'boxUR',\n '\\u255B': 'boxuL',\n '\\u255C': 'boxUl',\n '\\u255D': 'boxUL',\n '\\u255E': 'boxvR',\n '\\u255F': 'boxVr',\n '\\u2560': 'boxVR',\n '\\u2561': 'boxvL',\n '\\u2562': 'boxVl',\n '\\u2563': 'boxVL',\n '\\u2564': 'boxHd',\n '\\u2565': 'boxhD',\n '\\u2566': 'boxHD',\n '\\u2567': 'boxHu',\n '\\u2568': 'boxhU',\n '\\u2569': 'boxHU',\n '\\u256A': 'boxvH',\n '\\u256B': 'boxVh',\n '\\u256C': 'boxVH',\n '\\u2580': 'uhblk',\n '\\u2584': 'lhblk',\n '\\u2588': 'block',\n '\\u2591': 'blk14',\n '\\u2592': 'blk12',\n '\\u2593': 'blk34',\n '\\u25A1': 'squ',\n '\\u25AA': 'squf',\n '\\u25AB': 'EmptyVerySmallSquare',\n '\\u25AD': 'rect',\n '\\u25AE': 'marker',\n '\\u25B1': 'fltns',\n '\\u25B3': 'xutri',\n '\\u25B4': 'utrif',\n '\\u25B5': 'utri',\n '\\u25B8': 'rtrif',\n '\\u25B9': 'rtri',\n '\\u25BD': 'xdtri',\n '\\u25BE': 'dtrif',\n '\\u25BF': 'dtri',\n '\\u25C2': 'ltrif',\n '\\u25C3': 'ltri',\n '\\u25CA': 'loz',\n '\\u25CB': 'cir',\n '\\u25EC': 'tridot',\n '\\u25EF': 'xcirc',\n '\\u25F8': 'ultri',\n '\\u25F9': 'urtri',\n '\\u25FA': 'lltri',\n '\\u25FB': 'EmptySmallSquare',\n '\\u25FC': 'FilledSmallSquare',\n '\\u2605': 'starf',\n '\\u2606': 'star',\n '\\u260E': 'phone',\n '\\u2640': 'female',\n '\\u2642': 'male',\n '\\u2660': 'spades',\n '\\u2663': 'clubs',\n '\\u2665': 'hearts',\n '\\u2666': 'diams',\n '\\u266A': 'sung',\n '\\u2713': 'check',\n '\\u2717': 'cross',\n '\\u2720': 'malt',\n '\\u2736': 'sext',\n '\\u2758': 'VerticalSeparator',\n '\\u27C8': 'bsolhsub',\n '\\u27C9': 'suphsol',\n '\\u27F5': 'xlarr',\n '\\u27F6': 'xrarr',\n '\\u27F7': 'xharr',\n '\\u27F8': 'xlArr',\n '\\u27F9': 'xrArr',\n '\\u27FA': 'xhArr',\n '\\u27FC': 'xmap',\n '\\u27FF': 'dzigrarr',\n '\\u2902': 'nvlArr',\n '\\u2903': 'nvrArr',\n '\\u2904': 'nvHarr',\n '\\u2905': 'Map',\n '\\u290C': 'lbarr',\n '\\u290D': 'rbarr',\n '\\u290E': 'lBarr',\n '\\u290F': 'rBarr',\n '\\u2910': 'RBarr',\n '\\u2911': 'DDotrahd',\n '\\u2912': 'UpArrowBar',\n '\\u2913': 'DownArrowBar',\n '\\u2916': 'Rarrtl',\n '\\u2919': 'latail',\n '\\u291A': 'ratail',\n '\\u291B': 'lAtail',\n '\\u291C': 'rAtail',\n '\\u291D': 'larrfs',\n '\\u291E': 'rarrfs',\n '\\u291F': 'larrbfs',\n '\\u2920': 'rarrbfs',\n '\\u2923': 'nwarhk',\n '\\u2924': 'nearhk',\n '\\u2925': 'searhk',\n '\\u2926': 'swarhk',\n '\\u2927': 'nwnear',\n '\\u2928': 'toea',\n '\\u2929': 'tosa',\n '\\u292A': 'swnwar',\n '\\u2933': 'rarrc',\n '\\u2933\\u0338': 'nrarrc',\n '\\u2935': 'cudarrr',\n '\\u2936': 'ldca',\n '\\u2937': 'rdca',\n '\\u2938': 'cudarrl',\n '\\u2939': 'larrpl',\n '\\u293C': 'curarrm',\n '\\u293D': 'cularrp',\n '\\u2945': 'rarrpl',\n '\\u2948': 'harrcir',\n '\\u2949': 'Uarrocir',\n '\\u294A': 'lurdshar',\n '\\u294B': 'ldrushar',\n '\\u294E': 'LeftRightVector',\n '\\u294F': 'RightUpDownVector',\n '\\u2950': 'DownLeftRightVector',\n '\\u2951': 'LeftUpDownVector',\n '\\u2952': 'LeftVectorBar',\n '\\u2953': 'RightVectorBar',\n '\\u2954': 'RightUpVectorBar',\n '\\u2955': 'RightDownVectorBar',\n '\\u2956': 'DownLeftVectorBar',\n '\\u2957': 'DownRightVectorBar',\n '\\u2958': 'LeftUpVectorBar',\n '\\u2959': 'LeftDownVectorBar',\n '\\u295A': 'LeftTeeVector',\n '\\u295B': 'RightTeeVector',\n '\\u295C': 'RightUpTeeVector',\n '\\u295D': 'RightDownTeeVector',\n '\\u295E': 'DownLeftTeeVector',\n '\\u295F': 'DownRightTeeVector',\n '\\u2960': 'LeftUpTeeVector',\n '\\u2961': 'LeftDownTeeVector',\n '\\u2962': 'lHar',\n '\\u2963': 'uHar',\n '\\u2964': 'rHar',\n '\\u2965': 'dHar',\n '\\u2966': 'luruhar',\n '\\u2967': 'ldrdhar',\n '\\u2968': 'ruluhar',\n '\\u2969': 'rdldhar',\n '\\u296A': 'lharul',\n '\\u296B': 'llhard',\n '\\u296C': 'rharul',\n '\\u296D': 'lrhard',\n '\\u296E': 'udhar',\n '\\u296F': 'duhar',\n '\\u2970': 'RoundImplies',\n '\\u2971': 'erarr',\n '\\u2972': 'simrarr',\n '\\u2973': 'larrsim',\n '\\u2974': 'rarrsim',\n '\\u2975': 'rarrap',\n '\\u2976': 'ltlarr',\n '\\u2978': 'gtrarr',\n '\\u2979': 'subrarr',\n '\\u297B': 'suplarr',\n '\\u297C': 'lfisht',\n '\\u297D': 'rfisht',\n '\\u297E': 'ufisht',\n '\\u297F': 'dfisht',\n '\\u299A': 'vzigzag',\n '\\u299C': 'vangrt',\n '\\u299D': 'angrtvbd',\n '\\u29A4': 'ange',\n '\\u29A5': 'range',\n '\\u29A6': 'dwangle',\n '\\u29A7': 'uwangle',\n '\\u29A8': 'angmsdaa',\n '\\u29A9': 'angmsdab',\n '\\u29AA': 'angmsdac',\n '\\u29AB': 'angmsdad',\n '\\u29AC': 'angmsdae',\n '\\u29AD': 'angmsdaf',\n '\\u29AE': 'angmsdag',\n '\\u29AF': 'angmsdah',\n '\\u29B0': 'bemptyv',\n '\\u29B1': 'demptyv',\n '\\u29B2': 'cemptyv',\n '\\u29B3': 'raemptyv',\n '\\u29B4': 'laemptyv',\n '\\u29B5': 'ohbar',\n '\\u29B6': 'omid',\n '\\u29B7': 'opar',\n '\\u29B9': 'operp',\n '\\u29BB': 'olcross',\n '\\u29BC': 'odsold',\n '\\u29BE': 'olcir',\n '\\u29BF': 'ofcir',\n '\\u29C0': 'olt',\n '\\u29C1': 'ogt',\n '\\u29C2': 'cirscir',\n '\\u29C3': 'cirE',\n '\\u29C4': 'solb',\n '\\u29C5': 'bsolb',\n '\\u29C9': 'boxbox',\n '\\u29CD': 'trisb',\n '\\u29CE': 'rtriltri',\n '\\u29CF': 'LeftTriangleBar',\n '\\u29CF\\u0338': 'NotLeftTriangleBar',\n '\\u29D0': 'RightTriangleBar',\n '\\u29D0\\u0338': 'NotRightTriangleBar',\n '\\u29DC': 'iinfin',\n '\\u29DD': 'infintie',\n '\\u29DE': 'nvinfin',\n '\\u29E3': 'eparsl',\n '\\u29E4': 'smeparsl',\n '\\u29E5': 'eqvparsl',\n '\\u29EB': 'lozf',\n '\\u29F4': 'RuleDelayed',\n '\\u29F6': 'dsol',\n '\\u2A00': 'xodot',\n '\\u2A01': 'xoplus',\n '\\u2A02': 'xotime',\n '\\u2A04': 'xuplus',\n '\\u2A06': 'xsqcup',\n '\\u2A0D': 'fpartint',\n '\\u2A10': 'cirfnint',\n '\\u2A11': 'awint',\n '\\u2A12': 'rppolint',\n '\\u2A13': 'scpolint',\n '\\u2A14': 'npolint',\n '\\u2A15': 'pointint',\n '\\u2A16': 'quatint',\n '\\u2A17': 'intlarhk',\n '\\u2A22': 'pluscir',\n '\\u2A23': 'plusacir',\n '\\u2A24': 'simplus',\n '\\u2A25': 'plusdu',\n '\\u2A26': 'plussim',\n '\\u2A27': 'plustwo',\n '\\u2A29': 'mcomma',\n '\\u2A2A': 'minusdu',\n '\\u2A2D': 'loplus',\n '\\u2A2E': 'roplus',\n '\\u2A2F': 'Cross',\n '\\u2A30': 'timesd',\n '\\u2A31': 'timesbar',\n '\\u2A33': 'smashp',\n '\\u2A34': 'lotimes',\n '\\u2A35': 'rotimes',\n '\\u2A36': 'otimesas',\n '\\u2A37': 'Otimes',\n '\\u2A38': 'odiv',\n '\\u2A39': 'triplus',\n '\\u2A3A': 'triminus',\n '\\u2A3B': 'tritime',\n '\\u2A3C': 'iprod',\n '\\u2A3F': 'amalg',\n '\\u2A40': 'capdot',\n '\\u2A42': 'ncup',\n '\\u2A43': 'ncap',\n '\\u2A44': 'capand',\n '\\u2A45': 'cupor',\n '\\u2A46': 'cupcap',\n '\\u2A47': 'capcup',\n '\\u2A48': 'cupbrcap',\n '\\u2A49': 'capbrcup',\n '\\u2A4A': 'cupcup',\n '\\u2A4B': 'capcap',\n '\\u2A4C': 'ccups',\n '\\u2A4D': 'ccaps',\n '\\u2A50': 'ccupssm',\n '\\u2A53': 'And',\n '\\u2A54': 'Or',\n '\\u2A55': 'andand',\n '\\u2A56': 'oror',\n '\\u2A57': 'orslope',\n '\\u2A58': 'andslope',\n '\\u2A5A': 'andv',\n '\\u2A5B': 'orv',\n '\\u2A5C': 'andd',\n '\\u2A5D': 'ord',\n '\\u2A5F': 'wedbar',\n '\\u2A66': 'sdote',\n '\\u2A6A': 'simdot',\n '\\u2A6D': 'congdot',\n '\\u2A6D\\u0338': 'ncongdot',\n '\\u2A6E': 'easter',\n '\\u2A6F': 'apacir',\n '\\u2A70': 'apE',\n '\\u2A70\\u0338': 'napE',\n '\\u2A71': 'eplus',\n '\\u2A72': 'pluse',\n '\\u2A73': 'Esim',\n '\\u2A77': 'eDDot',\n '\\u2A78': 'equivDD',\n '\\u2A79': 'ltcir',\n '\\u2A7A': 'gtcir',\n '\\u2A7B': 'ltquest',\n '\\u2A7C': 'gtquest',\n '\\u2A7D': 'les',\n '\\u2A7D\\u0338': 'nles',\n '\\u2A7E': 'ges',\n '\\u2A7E\\u0338': 'nges',\n '\\u2A7F': 'lesdot',\n '\\u2A80': 'gesdot',\n '\\u2A81': 'lesdoto',\n '\\u2A82': 'gesdoto',\n '\\u2A83': 'lesdotor',\n '\\u2A84': 'gesdotol',\n '\\u2A85': 'lap',\n '\\u2A86': 'gap',\n '\\u2A87': 'lne',\n '\\u2A88': 'gne',\n '\\u2A89': 'lnap',\n '\\u2A8A': 'gnap',\n '\\u2A8B': 'lEg',\n '\\u2A8C': 'gEl',\n '\\u2A8D': 'lsime',\n '\\u2A8E': 'gsime',\n '\\u2A8F': 'lsimg',\n '\\u2A90': 'gsiml',\n '\\u2A91': 'lgE',\n '\\u2A92': 'glE',\n '\\u2A93': 'lesges',\n '\\u2A94': 'gesles',\n '\\u2A95': 'els',\n '\\u2A96': 'egs',\n '\\u2A97': 'elsdot',\n '\\u2A98': 'egsdot',\n '\\u2A99': 'el',\n '\\u2A9A': 'eg',\n '\\u2A9D': 'siml',\n '\\u2A9E': 'simg',\n '\\u2A9F': 'simlE',\n '\\u2AA0': 'simgE',\n '\\u2AA1': 'LessLess',\n '\\u2AA1\\u0338': 'NotNestedLessLess',\n '\\u2AA2': 'GreaterGreater',\n '\\u2AA2\\u0338': 'NotNestedGreaterGreater',\n '\\u2AA4': 'glj',\n '\\u2AA5': 'gla',\n '\\u2AA6': 'ltcc',\n '\\u2AA7': 'gtcc',\n '\\u2AA8': 'lescc',\n '\\u2AA9': 'gescc',\n '\\u2AAA': 'smt',\n '\\u2AAB': 'lat',\n '\\u2AAC': 'smte',\n '\\u2AAC\\uFE00': 'smtes',\n '\\u2AAD': 'late',\n '\\u2AAD\\uFE00': 'lates',\n '\\u2AAE': 'bumpE',\n '\\u2AAF': 'pre',\n '\\u2AAF\\u0338': 'npre',\n '\\u2AB0': 'sce',\n '\\u2AB0\\u0338': 'nsce',\n '\\u2AB3': 'prE',\n '\\u2AB4': 'scE',\n '\\u2AB5': 'prnE',\n '\\u2AB6': 'scnE',\n '\\u2AB7': 'prap',\n '\\u2AB8': 'scap',\n '\\u2AB9': 'prnap',\n '\\u2ABA': 'scnap',\n '\\u2ABB': 'Pr',\n '\\u2ABC': 'Sc',\n '\\u2ABD': 'subdot',\n '\\u2ABE': 'supdot',\n '\\u2ABF': 'subplus',\n '\\u2AC0': 'supplus',\n '\\u2AC1': 'submult',\n '\\u2AC2': 'supmult',\n '\\u2AC3': 'subedot',\n '\\u2AC4': 'supedot',\n '\\u2AC5': 'subE',\n '\\u2AC5\\u0338': 'nsubE',\n '\\u2AC6': 'supE',\n '\\u2AC6\\u0338': 'nsupE',\n '\\u2AC7': 'subsim',\n '\\u2AC8': 'supsim',\n '\\u2ACB\\uFE00': 'vsubnE',\n '\\u2ACB': 'subnE',\n '\\u2ACC\\uFE00': 'vsupnE',\n '\\u2ACC': 'supnE',\n '\\u2ACF': 'csub',\n '\\u2AD0': 'csup',\n '\\u2AD1': 'csube',\n '\\u2AD2': 'csupe',\n '\\u2AD3': 'subsup',\n '\\u2AD4': 'supsub',\n '\\u2AD5': 'subsub',\n '\\u2AD6': 'supsup',\n '\\u2AD7': 'suphsub',\n '\\u2AD8': 'supdsub',\n '\\u2AD9': 'forkv',\n '\\u2ADA': 'topfork',\n '\\u2ADB': 'mlcp',\n '\\u2AE4': 'Dashv',\n '\\u2AE6': 'Vdashl',\n '\\u2AE7': 'Barv',\n '\\u2AE8': 'vBar',\n '\\u2AE9': 'vBarv',\n '\\u2AEB': 'Vbar',\n '\\u2AEC': 'Not',\n '\\u2AED': 'bNot',\n '\\u2AEE': 'rnmid',\n '\\u2AEF': 'cirmid',\n '\\u2AF0': 'midcir',\n '\\u2AF1': 'topcir',\n '\\u2AF2': 'nhpar',\n '\\u2AF3': 'parsim',\n '\\u2AFD': 'parsl',\n '\\u2AFD\\u20E5': 'nparsl',\n '\\u266D': 'flat',\n '\\u266E': 'natur',\n '\\u266F': 'sharp',\n '\\xA4': 'curren',\n '\\xA2': 'cent',\n '$': 'dollar',\n '\\xA3': 'pound',\n '\\xA5': 'yen',\n '\\u20AC': 'euro',\n '\\xB9': 'sup1',\n '\\xBD': 'half',\n '\\u2153': 'frac13',\n '\\xBC': 'frac14',\n '\\u2155': 'frac15',\n '\\u2159': 'frac16',\n '\\u215B': 'frac18',\n '\\xB2': 'sup2',\n '\\u2154': 'frac23',\n '\\u2156': 'frac25',\n '\\xB3': 'sup3',\n '\\xBE': 'frac34',\n '\\u2157': 'frac35',\n '\\u215C': 'frac38',\n '\\u2158': 'frac45',\n '\\u215A': 'frac56',\n '\\u215D': 'frac58',\n '\\u215E': 'frac78',\n '\\uD835\\uDCB6': 'ascr',\n '\\uD835\\uDD52': 'aopf',\n '\\uD835\\uDD1E': 'afr',\n '\\uD835\\uDD38': 'Aopf',\n '\\uD835\\uDD04': 'Afr',\n '\\uD835\\uDC9C': 'Ascr',\n '\\xAA': 'ordf',\n '\\xE1': 'aacute',\n '\\xC1': 'Aacute',\n '\\xE0': 'agrave',\n '\\xC0': 'Agrave',\n '\\u0103': 'abreve',\n '\\u0102': 'Abreve',\n '\\xE2': 'acirc',\n '\\xC2': 'Acirc',\n '\\xE5': 'aring',\n '\\xC5': 'angst',\n '\\xE4': 'auml',\n '\\xC4': 'Auml',\n '\\xE3': 'atilde',\n '\\xC3': 'Atilde',\n '\\u0105': 'aogon',\n '\\u0104': 'Aogon',\n '\\u0101': 'amacr',\n '\\u0100': 'Amacr',\n '\\xE6': 'aelig',\n '\\xC6': 'AElig',\n '\\uD835\\uDCB7': 'bscr',\n '\\uD835\\uDD53': 'bopf',\n '\\uD835\\uDD1F': 'bfr',\n '\\uD835\\uDD39': 'Bopf',\n '\\u212C': 'Bscr',\n '\\uD835\\uDD05': 'Bfr',\n '\\uD835\\uDD20': 'cfr',\n '\\uD835\\uDCB8': 'cscr',\n '\\uD835\\uDD54': 'copf',\n '\\u212D': 'Cfr',\n '\\uD835\\uDC9E': 'Cscr',\n '\\u2102': 'Copf',\n '\\u0107': 'cacute',\n '\\u0106': 'Cacute',\n '\\u0109': 'ccirc',\n '\\u0108': 'Ccirc',\n '\\u010D': 'ccaron',\n '\\u010C': 'Ccaron',\n '\\u010B': 'cdot',\n '\\u010A': 'Cdot',\n '\\xE7': 'ccedil',\n '\\xC7': 'Ccedil',\n '\\u2105': 'incare',\n '\\uD835\\uDD21': 'dfr',\n '\\u2146': 'dd',\n '\\uD835\\uDD55': 'dopf',\n '\\uD835\\uDCB9': 'dscr',\n '\\uD835\\uDC9F': 'Dscr',\n '\\uD835\\uDD07': 'Dfr',\n '\\u2145': 'DD',\n '\\uD835\\uDD3B': 'Dopf',\n '\\u010F': 'dcaron',\n '\\u010E': 'Dcaron',\n '\\u0111': 'dstrok',\n '\\u0110': 'Dstrok',\n '\\xF0': 'eth',\n '\\xD0': 'ETH',\n '\\u2147': 'ee',\n '\\u212F': 'escr',\n '\\uD835\\uDD22': 'efr',\n '\\uD835\\uDD56': 'eopf',\n '\\u2130': 'Escr',\n '\\uD835\\uDD08': 'Efr',\n '\\uD835\\uDD3C': 'Eopf',\n '\\xE9': 'eacute',\n '\\xC9': 'Eacute',\n '\\xE8': 'egrave',\n '\\xC8': 'Egrave',\n '\\xEA': 'ecirc',\n '\\xCA': 'Ecirc',\n '\\u011B': 'ecaron',\n '\\u011A': 'Ecaron',\n '\\xEB': 'euml',\n '\\xCB': 'Euml',\n '\\u0117': 'edot',\n '\\u0116': 'Edot',\n '\\u0119': 'eogon',\n '\\u0118': 'Eogon',\n '\\u0113': 'emacr',\n '\\u0112': 'Emacr',\n '\\uD835\\uDD23': 'ffr',\n '\\uD835\\uDD57': 'fopf',\n '\\uD835\\uDCBB': 'fscr',\n '\\uD835\\uDD09': 'Ffr',\n '\\uD835\\uDD3D': 'Fopf',\n '\\u2131': 'Fscr',\n '\\uFB00': 'fflig',\n '\\uFB03': 'ffilig',\n '\\uFB04': 'ffllig',\n '\\uFB01': 'filig',\n 'fj': 'fjlig',\n '\\uFB02': 'fllig',\n '\\u0192': 'fnof',\n '\\u210A': 'gscr',\n '\\uD835\\uDD58': 'gopf',\n '\\uD835\\uDD24': 'gfr',\n '\\uD835\\uDCA2': 'Gscr',\n '\\uD835\\uDD3E': 'Gopf',\n '\\uD835\\uDD0A': 'Gfr',\n '\\u01F5': 'gacute',\n '\\u011F': 'gbreve',\n '\\u011E': 'Gbreve',\n '\\u011D': 'gcirc',\n '\\u011C': 'Gcirc',\n '\\u0121': 'gdot',\n '\\u0120': 'Gdot',\n '\\u0122': 'Gcedil',\n '\\uD835\\uDD25': 'hfr',\n '\\u210E': 'planckh',\n '\\uD835\\uDCBD': 'hscr',\n '\\uD835\\uDD59': 'hopf',\n '\\u210B': 'Hscr',\n '\\u210C': 'Hfr',\n '\\u210D': 'Hopf',\n '\\u0125': 'hcirc',\n '\\u0124': 'Hcirc',\n '\\u210F': 'hbar',\n '\\u0127': 'hstrok',\n '\\u0126': 'Hstrok',\n '\\uD835\\uDD5A': 'iopf',\n '\\uD835\\uDD26': 'ifr',\n '\\uD835\\uDCBE': 'iscr',\n '\\u2148': 'ii',\n '\\uD835\\uDD40': 'Iopf',\n '\\u2110': 'Iscr',\n '\\u2111': 'Im',\n '\\xED': 'iacute',\n '\\xCD': 'Iacute',\n '\\xEC': 'igrave',\n '\\xCC': 'Igrave',\n '\\xEE': 'icirc',\n '\\xCE': 'Icirc',\n '\\xEF': 'iuml',\n '\\xCF': 'Iuml',\n '\\u0129': 'itilde',\n '\\u0128': 'Itilde',\n '\\u0130': 'Idot',\n '\\u012F': 'iogon',\n '\\u012E': 'Iogon',\n '\\u012B': 'imacr',\n '\\u012A': 'Imacr',\n '\\u0133': 'ijlig',\n '\\u0132': 'IJlig',\n '\\u0131': 'imath',\n '\\uD835\\uDCBF': 'jscr',\n '\\uD835\\uDD5B': 'jopf',\n '\\uD835\\uDD27': 'jfr',\n '\\uD835\\uDCA5': 'Jscr',\n '\\uD835\\uDD0D': 'Jfr',\n '\\uD835\\uDD41': 'Jopf',\n '\\u0135': 'jcirc',\n '\\u0134': 'Jcirc',\n '\\u0237': 'jmath',\n '\\uD835\\uDD5C': 'kopf',\n '\\uD835\\uDCC0': 'kscr',\n '\\uD835\\uDD28': 'kfr',\n '\\uD835\\uDCA6': 'Kscr',\n '\\uD835\\uDD42': 'Kopf',\n '\\uD835\\uDD0E': 'Kfr',\n '\\u0137': 'kcedil',\n '\\u0136': 'Kcedil',\n '\\uD835\\uDD29': 'lfr',\n '\\uD835\\uDCC1': 'lscr',\n '\\u2113': 'ell',\n '\\uD835\\uDD5D': 'lopf',\n '\\u2112': 'Lscr',\n '\\uD835\\uDD0F': 'Lfr',\n '\\uD835\\uDD43': 'Lopf',\n '\\u013A': 'lacute',\n '\\u0139': 'Lacute',\n '\\u013E': 'lcaron',\n '\\u013D': 'Lcaron',\n '\\u013C': 'lcedil',\n '\\u013B': 'Lcedil',\n '\\u0142': 'lstrok',\n '\\u0141': 'Lstrok',\n '\\u0140': 'lmidot',\n '\\u013F': 'Lmidot',\n '\\uD835\\uDD2A': 'mfr',\n '\\uD835\\uDD5E': 'mopf',\n '\\uD835\\uDCC2': 'mscr',\n '\\uD835\\uDD10': 'Mfr',\n '\\uD835\\uDD44': 'Mopf',\n '\\u2133': 'Mscr',\n '\\uD835\\uDD2B': 'nfr',\n '\\uD835\\uDD5F': 'nopf',\n '\\uD835\\uDCC3': 'nscr',\n '\\u2115': 'Nopf',\n '\\uD835\\uDCA9': 'Nscr',\n '\\uD835\\uDD11': 'Nfr',\n '\\u0144': 'nacute',\n '\\u0143': 'Nacute',\n '\\u0148': 'ncaron',\n '\\u0147': 'Ncaron',\n '\\xF1': 'ntilde',\n '\\xD1': 'Ntilde',\n '\\u0146': 'ncedil',\n '\\u0145': 'Ncedil',\n '\\u2116': 'numero',\n '\\u014B': 'eng',\n '\\u014A': 'ENG',\n '\\uD835\\uDD60': 'oopf',\n '\\uD835\\uDD2C': 'ofr',\n '\\u2134': 'oscr',\n '\\uD835\\uDCAA': 'Oscr',\n '\\uD835\\uDD12': 'Ofr',\n '\\uD835\\uDD46': 'Oopf',\n '\\xBA': 'ordm',\n '\\xF3': 'oacute',\n '\\xD3': 'Oacute',\n '\\xF2': 'ograve',\n '\\xD2': 'Ograve',\n '\\xF4': 'ocirc',\n '\\xD4': 'Ocirc',\n '\\xF6': 'ouml',\n '\\xD6': 'Ouml',\n '\\u0151': 'odblac',\n '\\u0150': 'Odblac',\n '\\xF5': 'otilde',\n '\\xD5': 'Otilde',\n '\\xF8': 'oslash',\n '\\xD8': 'Oslash',\n '\\u014D': 'omacr',\n '\\u014C': 'Omacr',\n '\\u0153': 'oelig',\n '\\u0152': 'OElig',\n '\\uD835\\uDD2D': 'pfr',\n '\\uD835\\uDCC5': 'pscr',\n '\\uD835\\uDD61': 'popf',\n '\\u2119': 'Popf',\n '\\uD835\\uDD13': 'Pfr',\n '\\uD835\\uDCAB': 'Pscr',\n '\\uD835\\uDD62': 'qopf',\n '\\uD835\\uDD2E': 'qfr',\n '\\uD835\\uDCC6': 'qscr',\n '\\uD835\\uDCAC': 'Qscr',\n '\\uD835\\uDD14': 'Qfr',\n '\\u211A': 'Qopf',\n '\\u0138': 'kgreen',\n '\\uD835\\uDD2F': 'rfr',\n '\\uD835\\uDD63': 'ropf',\n '\\uD835\\uDCC7': 'rscr',\n '\\u211B': 'Rscr',\n '\\u211C': 'Re',\n '\\u211D': 'Ropf',\n '\\u0155': 'racute',\n '\\u0154': 'Racute',\n '\\u0159': 'rcaron',\n '\\u0158': 'Rcaron',\n '\\u0157': 'rcedil',\n '\\u0156': 'Rcedil',\n '\\uD835\\uDD64': 'sopf',\n '\\uD835\\uDCC8': 'sscr',\n '\\uD835\\uDD30': 'sfr',\n '\\uD835\\uDD4A': 'Sopf',\n '\\uD835\\uDD16': 'Sfr',\n '\\uD835\\uDCAE': 'Sscr',\n '\\u24C8': 'oS',\n '\\u015B': 'sacute',\n '\\u015A': 'Sacute',\n '\\u015D': 'scirc',\n '\\u015C': 'Scirc',\n '\\u0161': 'scaron',\n '\\u0160': 'Scaron',\n '\\u015F': 'scedil',\n '\\u015E': 'Scedil',\n '\\xDF': 'szlig',\n '\\uD835\\uDD31': 'tfr',\n '\\uD835\\uDCC9': 'tscr',\n '\\uD835\\uDD65': 'topf',\n '\\uD835\\uDCAF': 'Tscr',\n '\\uD835\\uDD17': 'Tfr',\n '\\uD835\\uDD4B': 'Topf',\n '\\u0165': 'tcaron',\n '\\u0164': 'Tcaron',\n '\\u0163': 'tcedil',\n '\\u0162': 'Tcedil',\n '\\u2122': 'trade',\n '\\u0167': 'tstrok',\n '\\u0166': 'Tstrok',\n '\\uD835\\uDCCA': 'uscr',\n '\\uD835\\uDD66': 'uopf',\n '\\uD835\\uDD32': 'ufr',\n '\\uD835\\uDD4C': 'Uopf',\n '\\uD835\\uDD18': 'Ufr',\n '\\uD835\\uDCB0': 'Uscr',\n '\\xFA': 'uacute',\n '\\xDA': 'Uacute',\n '\\xF9': 'ugrave',\n '\\xD9': 'Ugrave',\n '\\u016D': 'ubreve',\n '\\u016C': 'Ubreve',\n '\\xFB': 'ucirc',\n '\\xDB': 'Ucirc',\n '\\u016F': 'uring',\n '\\u016E': 'Uring',\n '\\xFC': 'uuml',\n '\\xDC': 'Uuml',\n '\\u0171': 'udblac',\n '\\u0170': 'Udblac',\n '\\u0169': 'utilde',\n '\\u0168': 'Utilde',\n '\\u0173': 'uogon',\n '\\u0172': 'Uogon',\n '\\u016B': 'umacr',\n '\\u016A': 'Umacr',\n '\\uD835\\uDD33': 'vfr',\n '\\uD835\\uDD67': 'vopf',\n '\\uD835\\uDCCB': 'vscr',\n '\\uD835\\uDD19': 'Vfr',\n '\\uD835\\uDD4D': 'Vopf',\n '\\uD835\\uDCB1': 'Vscr',\n '\\uD835\\uDD68': 'wopf',\n '\\uD835\\uDCCC': 'wscr',\n '\\uD835\\uDD34': 'wfr',\n '\\uD835\\uDCB2': 'Wscr',\n '\\uD835\\uDD4E': 'Wopf',\n '\\uD835\\uDD1A': 'Wfr',\n '\\u0175': 'wcirc',\n '\\u0174': 'Wcirc',\n '\\uD835\\uDD35': 'xfr',\n '\\uD835\\uDCCD': 'xscr',\n '\\uD835\\uDD69': 'xopf',\n '\\uD835\\uDD4F': 'Xopf',\n '\\uD835\\uDD1B': 'Xfr',\n '\\uD835\\uDCB3': 'Xscr',\n '\\uD835\\uDD36': 'yfr',\n '\\uD835\\uDCCE': 'yscr',\n '\\uD835\\uDD6A': 'yopf',\n '\\uD835\\uDCB4': 'Yscr',\n '\\uD835\\uDD1C': 'Yfr',\n '\\uD835\\uDD50': 'Yopf',\n '\\xFD': 'yacute',\n '\\xDD': 'Yacute',\n '\\u0177': 'ycirc',\n '\\u0176': 'Ycirc',\n '\\xFF': 'yuml',\n '\\u0178': 'Yuml',\n '\\uD835\\uDCCF': 'zscr',\n '\\uD835\\uDD37': 'zfr',\n '\\uD835\\uDD6B': 'zopf',\n '\\u2128': 'Zfr',\n '\\u2124': 'Zopf',\n '\\uD835\\uDCB5': 'Zscr',\n '\\u017A': 'zacute',\n '\\u0179': 'Zacute',\n '\\u017E': 'zcaron',\n '\\u017D': 'Zcaron',\n '\\u017C': 'zdot',\n '\\u017B': 'Zdot',\n '\\u01B5': 'imped',\n '\\xFE': 'thorn',\n '\\xDE': 'THORN',\n '\\u0149': 'napos',\n '\\u03B1': 'alpha',\n '\\u0391': 'Alpha',\n '\\u03B2': 'beta',\n '\\u0392': 'Beta',\n '\\u03B3': 'gamma',\n '\\u0393': 'Gamma',\n '\\u03B4': 'delta',\n '\\u0394': 'Delta',\n '\\u03B5': 'epsi',\n '\\u03F5': 'epsiv',\n '\\u0395': 'Epsilon',\n '\\u03DD': 'gammad',\n '\\u03DC': 'Gammad',\n '\\u03B6': 'zeta',\n '\\u0396': 'Zeta',\n '\\u03B7': 'eta',\n '\\u0397': 'Eta',\n '\\u03B8': 'theta',\n '\\u03D1': 'thetav',\n '\\u0398': 'Theta',\n '\\u03B9': 'iota',\n '\\u0399': 'Iota',\n '\\u03BA': 'kappa',\n '\\u03F0': 'kappav',\n '\\u039A': 'Kappa',\n '\\u03BB': 'lambda',\n '\\u039B': 'Lambda',\n '\\u03BC': 'mu',\n '\\xB5': 'micro',\n '\\u039C': 'Mu',\n '\\u03BD': 'nu',\n '\\u039D': 'Nu',\n '\\u03BE': 'xi',\n '\\u039E': 'Xi',\n '\\u03BF': 'omicron',\n '\\u039F': 'Omicron',\n '\\u03C0': 'pi',\n '\\u03D6': 'piv',\n '\\u03A0': 'Pi',\n '\\u03C1': 'rho',\n '\\u03F1': 'rhov',\n '\\u03A1': 'Rho',\n '\\u03C3': 'sigma',\n '\\u03A3': 'Sigma',\n '\\u03C2': 'sigmaf',\n '\\u03C4': 'tau',\n '\\u03A4': 'Tau',\n '\\u03C5': 'upsi',\n '\\u03A5': 'Upsilon',\n '\\u03D2': 'Upsi',\n '\\u03C6': 'phi',\n '\\u03D5': 'phiv',\n '\\u03A6': 'Phi',\n '\\u03C7': 'chi',\n '\\u03A7': 'Chi',\n '\\u03C8': 'psi',\n '\\u03A8': 'Psi',\n '\\u03C9': 'omega',\n '\\u03A9': 'ohm',\n '\\u0430': 'acy',\n '\\u0410': 'Acy',\n '\\u0431': 'bcy',\n '\\u0411': 'Bcy',\n '\\u0432': 'vcy',\n '\\u0412': 'Vcy',\n '\\u0433': 'gcy',\n '\\u0413': 'Gcy',\n '\\u0453': 'gjcy',\n '\\u0403': 'GJcy',\n '\\u0434': 'dcy',\n '\\u0414': 'Dcy',\n '\\u0452': 'djcy',\n '\\u0402': 'DJcy',\n '\\u0435': 'iecy',\n '\\u0415': 'IEcy',\n '\\u0451': 'iocy',\n '\\u0401': 'IOcy',\n '\\u0454': 'jukcy',\n '\\u0404': 'Jukcy',\n '\\u0436': 'zhcy',\n '\\u0416': 'ZHcy',\n '\\u0437': 'zcy',\n '\\u0417': 'Zcy',\n '\\u0455': 'dscy',\n '\\u0405': 'DScy',\n '\\u0438': 'icy',\n '\\u0418': 'Icy',\n '\\u0456': 'iukcy',\n '\\u0406': 'Iukcy',\n '\\u0457': 'yicy',\n '\\u0407': 'YIcy',\n '\\u0439': 'jcy',\n '\\u0419': 'Jcy',\n '\\u0458': 'jsercy',\n '\\u0408': 'Jsercy',\n '\\u043A': 'kcy',\n '\\u041A': 'Kcy',\n '\\u045C': 'kjcy',\n '\\u040C': 'KJcy',\n '\\u043B': 'lcy',\n '\\u041B': 'Lcy',\n '\\u0459': 'ljcy',\n '\\u0409': 'LJcy',\n '\\u043C': 'mcy',\n '\\u041C': 'Mcy',\n '\\u043D': 'ncy',\n '\\u041D': 'Ncy',\n '\\u045A': 'njcy',\n '\\u040A': 'NJcy',\n '\\u043E': 'ocy',\n '\\u041E': 'Ocy',\n '\\u043F': 'pcy',\n '\\u041F': 'Pcy',\n '\\u0440': 'rcy',\n '\\u0420': 'Rcy',\n '\\u0441': 'scy',\n '\\u0421': 'Scy',\n '\\u0442': 'tcy',\n '\\u0422': 'Tcy',\n '\\u045B': 'tshcy',\n '\\u040B': 'TSHcy',\n '\\u0443': 'ucy',\n '\\u0423': 'Ucy',\n '\\u045E': 'ubrcy',\n '\\u040E': 'Ubrcy',\n '\\u0444': 'fcy',\n '\\u0424': 'Fcy',\n '\\u0445': 'khcy',\n '\\u0425': 'KHcy',\n '\\u0446': 'tscy',\n '\\u0426': 'TScy',\n '\\u0447': 'chcy',\n '\\u0427': 'CHcy',\n '\\u045F': 'dzcy',\n '\\u040F': 'DZcy',\n '\\u0448': 'shcy',\n '\\u0428': 'SHcy',\n '\\u0449': 'shchcy',\n '\\u0429': 'SHCHcy',\n '\\u044A': 'hardcy',\n '\\u042A': 'HARDcy',\n '\\u044B': 'ycy',\n '\\u042B': 'Ycy',\n '\\u044C': 'softcy',\n '\\u042C': 'SOFTcy',\n '\\u044D': 'ecy',\n '\\u042D': 'Ecy',\n '\\u044E': 'yucy',\n '\\u042E': 'YUcy',\n '\\u044F': 'yacy',\n '\\u042F': 'YAcy',\n '\\u2135': 'aleph',\n '\\u2136': 'beth',\n '\\u2137': 'gimel',\n '\\u2138': 'daleth'\n };\n var regexEscape = /[\"&'<>`]/g;\n var escapeMap = {\n '\"': '"',\n '&': '&',\n '\\'': ''',\n '<': '<',\n // See https://mathiasbynens.be/notes/ambiguous-ampersands: in HTML, the\n // following is not strictly necessary unless it’s part of a tag or an\n // unquoted attribute value. We’re only escaping it to support those\n // situations, and for XML support.\n '>': '>',\n // In Internet Explorer ≤ 8, the backtick character can be used\n // to break out of (un)quoted attribute values or HTML comments.\n // See http://html5sec.org/#102, http://html5sec.org/#108, and\n // http://html5sec.org/#133.\n '`': '`'\n };\n var regexInvalidEntity = /&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/;\n var regexInvalidRawCodePoint = /[\\0-\\x08\\x0B\\x0E-\\x1F\\x7F-\\x9F\\uFDD0-\\uFDEF\\uFFFE\\uFFFF]|[\\uD83F\\uD87F\\uD8BF\\uD8FF\\uD93F\\uD97F\\uD9BF\\uD9FF\\uDA3F\\uDA7F\\uDABF\\uDAFF\\uDB3F\\uDB7F\\uDBBF\\uDBFF][\\uDFFE\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n var regexDecode = /&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g;\n var decodeMap = {\n 'aacute': '\\xE1',\n 'Aacute': '\\xC1',\n 'abreve': '\\u0103',\n 'Abreve': '\\u0102',\n 'ac': '\\u223E',\n 'acd': '\\u223F',\n 'acE': '\\u223E\\u0333',\n 'acirc': '\\xE2',\n 'Acirc': '\\xC2',\n 'acute': '\\xB4',\n 'acy': '\\u0430',\n 'Acy': '\\u0410',\n 'aelig': '\\xE6',\n 'AElig': '\\xC6',\n 'af': '\\u2061',\n 'afr': '\\uD835\\uDD1E',\n 'Afr': '\\uD835\\uDD04',\n 'agrave': '\\xE0',\n 'Agrave': '\\xC0',\n 'alefsym': '\\u2135',\n 'aleph': '\\u2135',\n 'alpha': '\\u03B1',\n 'Alpha': '\\u0391',\n 'amacr': '\\u0101',\n 'Amacr': '\\u0100',\n 'amalg': '\\u2A3F',\n 'amp': '&',\n 'AMP': '&',\n 'and': '\\u2227',\n 'And': '\\u2A53',\n 'andand': '\\u2A55',\n 'andd': '\\u2A5C',\n 'andslope': '\\u2A58',\n 'andv': '\\u2A5A',\n 'ang': '\\u2220',\n 'ange': '\\u29A4',\n 'angle': '\\u2220',\n 'angmsd': '\\u2221',\n 'angmsdaa': '\\u29A8',\n 'angmsdab': '\\u29A9',\n 'angmsdac': '\\u29AA',\n 'angmsdad': '\\u29AB',\n 'angmsdae': '\\u29AC',\n 'angmsdaf': '\\u29AD',\n 'angmsdag': '\\u29AE',\n 'angmsdah': '\\u29AF',\n 'angrt': '\\u221F',\n 'angrtvb': '\\u22BE',\n 'angrtvbd': '\\u299D',\n 'angsph': '\\u2222',\n 'angst': '\\xC5',\n 'angzarr': '\\u237C',\n 'aogon': '\\u0105',\n 'Aogon': '\\u0104',\n 'aopf': '\\uD835\\uDD52',\n 'Aopf': '\\uD835\\uDD38',\n 'ap': '\\u2248',\n 'apacir': '\\u2A6F',\n 'ape': '\\u224A',\n 'apE': '\\u2A70',\n 'apid': '\\u224B',\n 'apos': '\\'',\n 'ApplyFunction': '\\u2061',\n 'approx': '\\u2248',\n 'approxeq': '\\u224A',\n 'aring': '\\xE5',\n 'Aring': '\\xC5',\n 'ascr': '\\uD835\\uDCB6',\n 'Ascr': '\\uD835\\uDC9C',\n 'Assign': '\\u2254',\n 'ast': '*',\n 'asymp': '\\u2248',\n 'asympeq': '\\u224D',\n 'atilde': '\\xE3',\n 'Atilde': '\\xC3',\n 'auml': '\\xE4',\n 'Auml': '\\xC4',\n 'awconint': '\\u2233',\n 'awint': '\\u2A11',\n 'backcong': '\\u224C',\n 'backepsilon': '\\u03F6',\n 'backprime': '\\u2035',\n 'backsim': '\\u223D',\n 'backsimeq': '\\u22CD',\n 'Backslash': '\\u2216',\n 'Barv': '\\u2AE7',\n 'barvee': '\\u22BD',\n 'barwed': '\\u2305',\n 'Barwed': '\\u2306',\n 'barwedge': '\\u2305',\n 'bbrk': '\\u23B5',\n 'bbrktbrk': '\\u23B6',\n 'bcong': '\\u224C',\n 'bcy': '\\u0431',\n 'Bcy': '\\u0411',\n 'bdquo': '\\u201E',\n 'becaus': '\\u2235',\n 'because': '\\u2235',\n 'Because': '\\u2235',\n 'bemptyv': '\\u29B0',\n 'bepsi': '\\u03F6',\n 'bernou': '\\u212C',\n 'Bernoullis': '\\u212C',\n 'beta': '\\u03B2',\n 'Beta': '\\u0392',\n 'beth': '\\u2136',\n 'between': '\\u226C',\n 'bfr': '\\uD835\\uDD1F',\n 'Bfr': '\\uD835\\uDD05',\n 'bigcap': '\\u22C2',\n 'bigcirc': '\\u25EF',\n 'bigcup': '\\u22C3',\n 'bigodot': '\\u2A00',\n 'bigoplus': '\\u2A01',\n 'bigotimes': '\\u2A02',\n 'bigsqcup': '\\u2A06',\n 'bigstar': '\\u2605',\n 'bigtriangledown': '\\u25BD',\n 'bigtriangleup': '\\u25B3',\n 'biguplus': '\\u2A04',\n 'bigvee': '\\u22C1',\n 'bigwedge': '\\u22C0',\n 'bkarow': '\\u290D',\n 'blacklozenge': '\\u29EB',\n 'blacksquare': '\\u25AA',\n 'blacktriangle': '\\u25B4',\n 'blacktriangledown': '\\u25BE',\n 'blacktriangleleft': '\\u25C2',\n 'blacktriangleright': '\\u25B8',\n 'blank': '\\u2423',\n 'blk12': '\\u2592',\n 'blk14': '\\u2591',\n 'blk34': '\\u2593',\n 'block': '\\u2588',\n 'bne': '=\\u20E5',\n 'bnequiv': '\\u2261\\u20E5',\n 'bnot': '\\u2310',\n 'bNot': '\\u2AED',\n 'bopf': '\\uD835\\uDD53',\n 'Bopf': '\\uD835\\uDD39',\n 'bot': '\\u22A5',\n 'bottom': '\\u22A5',\n 'bowtie': '\\u22C8',\n 'boxbox': '\\u29C9',\n 'boxdl': '\\u2510',\n 'boxdL': '\\u2555',\n 'boxDl': '\\u2556',\n 'boxDL': '\\u2557',\n 'boxdr': '\\u250C',\n 'boxdR': '\\u2552',\n 'boxDr': '\\u2553',\n 'boxDR': '\\u2554',\n 'boxh': '\\u2500',\n 'boxH': '\\u2550',\n 'boxhd': '\\u252C',\n 'boxhD': '\\u2565',\n 'boxHd': '\\u2564',\n 'boxHD': '\\u2566',\n 'boxhu': '\\u2534',\n 'boxhU': '\\u2568',\n 'boxHu': '\\u2567',\n 'boxHU': '\\u2569',\n 'boxminus': '\\u229F',\n 'boxplus': '\\u229E',\n 'boxtimes': '\\u22A0',\n 'boxul': '\\u2518',\n 'boxuL': '\\u255B',\n 'boxUl': '\\u255C',\n 'boxUL': '\\u255D',\n 'boxur': '\\u2514',\n 'boxuR': '\\u2558',\n 'boxUr': '\\u2559',\n 'boxUR': '\\u255A',\n 'boxv': '\\u2502',\n 'boxV': '\\u2551',\n 'boxvh': '\\u253C',\n 'boxvH': '\\u256A',\n 'boxVh': '\\u256B',\n 'boxVH': '\\u256C',\n 'boxvl': '\\u2524',\n 'boxvL': '\\u2561',\n 'boxVl': '\\u2562',\n 'boxVL': '\\u2563',\n 'boxvr': '\\u251C',\n 'boxvR': '\\u255E',\n 'boxVr': '\\u255F',\n 'boxVR': '\\u2560',\n 'bprime': '\\u2035',\n 'breve': '\\u02D8',\n 'Breve': '\\u02D8',\n 'brvbar': '\\xA6',\n 'bscr': '\\uD835\\uDCB7',\n 'Bscr': '\\u212C',\n 'bsemi': '\\u204F',\n 'bsim': '\\u223D',\n 'bsime': '\\u22CD',\n 'bsol': '\\\\',\n 'bsolb': '\\u29C5',\n 'bsolhsub': '\\u27C8',\n 'bull': '\\u2022',\n 'bullet': '\\u2022',\n 'bump': '\\u224E',\n 'bumpe': '\\u224F',\n 'bumpE': '\\u2AAE',\n 'bumpeq': '\\u224F',\n 'Bumpeq': '\\u224E',\n 'cacute': '\\u0107',\n 'Cacute': '\\u0106',\n 'cap': '\\u2229',\n 'Cap': '\\u22D2',\n 'capand': '\\u2A44',\n 'capbrcup': '\\u2A49',\n 'capcap': '\\u2A4B',\n 'capcup': '\\u2A47',\n 'capdot': '\\u2A40',\n 'CapitalDifferentialD': '\\u2145',\n 'caps': '\\u2229\\uFE00',\n 'caret': '\\u2041',\n 'caron': '\\u02C7',\n 'Cayleys': '\\u212D',\n 'ccaps': '\\u2A4D',\n 'ccaron': '\\u010D',\n 'Ccaron': '\\u010C',\n 'ccedil': '\\xE7',\n 'Ccedil': '\\xC7',\n 'ccirc': '\\u0109',\n 'Ccirc': '\\u0108',\n 'Cconint': '\\u2230',\n 'ccups': '\\u2A4C',\n 'ccupssm': '\\u2A50',\n 'cdot': '\\u010B',\n 'Cdot': '\\u010A',\n 'cedil': '\\xB8',\n 'Cedilla': '\\xB8',\n 'cemptyv': '\\u29B2',\n 'cent': '\\xA2',\n 'centerdot': '\\xB7',\n 'CenterDot': '\\xB7',\n 'cfr': '\\uD835\\uDD20',\n 'Cfr': '\\u212D',\n 'chcy': '\\u0447',\n 'CHcy': '\\u0427',\n 'check': '\\u2713',\n 'checkmark': '\\u2713',\n 'chi': '\\u03C7',\n 'Chi': '\\u03A7',\n 'cir': '\\u25CB',\n 'circ': '\\u02C6',\n 'circeq': '\\u2257',\n 'circlearrowleft': '\\u21BA',\n 'circlearrowright': '\\u21BB',\n 'circledast': '\\u229B',\n 'circledcirc': '\\u229A',\n 'circleddash': '\\u229D',\n 'CircleDot': '\\u2299',\n 'circledR': '\\xAE',\n 'circledS': '\\u24C8',\n 'CircleMinus': '\\u2296',\n 'CirclePlus': '\\u2295',\n 'CircleTimes': '\\u2297',\n 'cire': '\\u2257',\n 'cirE': '\\u29C3',\n 'cirfnint': '\\u2A10',\n 'cirmid': '\\u2AEF',\n 'cirscir': '\\u29C2',\n 'ClockwiseContourIntegral': '\\u2232',\n 'CloseCurlyDoubleQuote': '\\u201D',\n 'CloseCurlyQuote': '\\u2019',\n 'clubs': '\\u2663',\n 'clubsuit': '\\u2663',\n 'colon': ':',\n 'Colon': '\\u2237',\n 'colone': '\\u2254',\n 'Colone': '\\u2A74',\n 'coloneq': '\\u2254',\n 'comma': ',',\n 'commat': '@',\n 'comp': '\\u2201',\n 'compfn': '\\u2218',\n 'complement': '\\u2201',\n 'complexes': '\\u2102',\n 'cong': '\\u2245',\n 'congdot': '\\u2A6D',\n 'Congruent': '\\u2261',\n 'conint': '\\u222E',\n 'Conint': '\\u222F',\n 'ContourIntegral': '\\u222E',\n 'copf': '\\uD835\\uDD54',\n 'Copf': '\\u2102',\n 'coprod': '\\u2210',\n 'Coproduct': '\\u2210',\n 'copy': '\\xA9',\n 'COPY': '\\xA9',\n 'copysr': '\\u2117',\n 'CounterClockwiseContourIntegral': '\\u2233',\n 'crarr': '\\u21B5',\n 'cross': '\\u2717',\n 'Cross': '\\u2A2F',\n 'cscr': '\\uD835\\uDCB8',\n 'Cscr': '\\uD835\\uDC9E',\n 'csub': '\\u2ACF',\n 'csube': '\\u2AD1',\n 'csup': '\\u2AD0',\n 'csupe': '\\u2AD2',\n 'ctdot': '\\u22EF',\n 'cudarrl': '\\u2938',\n 'cudarrr': '\\u2935',\n 'cuepr': '\\u22DE',\n 'cuesc': '\\u22DF',\n 'cularr': '\\u21B6',\n 'cularrp': '\\u293D',\n 'cup': '\\u222A',\n 'Cup': '\\u22D3',\n 'cupbrcap': '\\u2A48',\n 'cupcap': '\\u2A46',\n 'CupCap': '\\u224D',\n 'cupcup': '\\u2A4A',\n 'cupdot': '\\u228D',\n 'cupor': '\\u2A45',\n 'cups': '\\u222A\\uFE00',\n 'curarr': '\\u21B7',\n 'curarrm': '\\u293C',\n 'curlyeqprec': '\\u22DE',\n 'curlyeqsucc': '\\u22DF',\n 'curlyvee': '\\u22CE',\n 'curlywedge': '\\u22CF',\n 'curren': '\\xA4',\n 'curvearrowleft': '\\u21B6',\n 'curvearrowright': '\\u21B7',\n 'cuvee': '\\u22CE',\n 'cuwed': '\\u22CF',\n 'cwconint': '\\u2232',\n 'cwint': '\\u2231',\n 'cylcty': '\\u232D',\n 'dagger': '\\u2020',\n 'Dagger': '\\u2021',\n 'daleth': '\\u2138',\n 'darr': '\\u2193',\n 'dArr': '\\u21D3',\n 'Darr': '\\u21A1',\n 'dash': '\\u2010',\n 'dashv': '\\u22A3',\n 'Dashv': '\\u2AE4',\n 'dbkarow': '\\u290F',\n 'dblac': '\\u02DD',\n 'dcaron': '\\u010F',\n 'Dcaron': '\\u010E',\n 'dcy': '\\u0434',\n 'Dcy': '\\u0414',\n 'dd': '\\u2146',\n 'DD': '\\u2145',\n 'ddagger': '\\u2021',\n 'ddarr': '\\u21CA',\n 'DDotrahd': '\\u2911',\n 'ddotseq': '\\u2A77',\n 'deg': '\\xB0',\n 'Del': '\\u2207',\n 'delta': '\\u03B4',\n 'Delta': '\\u0394',\n 'demptyv': '\\u29B1',\n 'dfisht': '\\u297F',\n 'dfr': '\\uD835\\uDD21',\n 'Dfr': '\\uD835\\uDD07',\n 'dHar': '\\u2965',\n 'dharl': '\\u21C3',\n 'dharr': '\\u21C2',\n 'DiacriticalAcute': '\\xB4',\n 'DiacriticalDot': '\\u02D9',\n 'DiacriticalDoubleAcute': '\\u02DD',\n 'DiacriticalGrave': '`',\n 'DiacriticalTilde': '\\u02DC',\n 'diam': '\\u22C4',\n 'diamond': '\\u22C4',\n 'Diamond': '\\u22C4',\n 'diamondsuit': '\\u2666',\n 'diams': '\\u2666',\n 'die': '\\xA8',\n 'DifferentialD': '\\u2146',\n 'digamma': '\\u03DD',\n 'disin': '\\u22F2',\n 'div': '\\xF7',\n 'divide': '\\xF7',\n 'divideontimes': '\\u22C7',\n 'divonx': '\\u22C7',\n 'djcy': '\\u0452',\n 'DJcy': '\\u0402',\n 'dlcorn': '\\u231E',\n 'dlcrop': '\\u230D',\n 'dollar': '$',\n 'dopf': '\\uD835\\uDD55',\n 'Dopf': '\\uD835\\uDD3B',\n 'dot': '\\u02D9',\n 'Dot': '\\xA8',\n 'DotDot': '\\u20DC',\n 'doteq': '\\u2250',\n 'doteqdot': '\\u2251',\n 'DotEqual': '\\u2250',\n 'dotminus': '\\u2238',\n 'dotplus': '\\u2214',\n 'dotsquare': '\\u22A1',\n 'doublebarwedge': '\\u2306',\n 'DoubleContourIntegral': '\\u222F',\n 'DoubleDot': '\\xA8',\n 'DoubleDownArrow': '\\u21D3',\n 'DoubleLeftArrow': '\\u21D0',\n 'DoubleLeftRightArrow': '\\u21D4',\n 'DoubleLeftTee': '\\u2AE4',\n 'DoubleLongLeftArrow': '\\u27F8',\n 'DoubleLongLeftRightArrow': '\\u27FA',\n 'DoubleLongRightArrow': '\\u27F9',\n 'DoubleRightArrow': '\\u21D2',\n 'DoubleRightTee': '\\u22A8',\n 'DoubleUpArrow': '\\u21D1',\n 'DoubleUpDownArrow': '\\u21D5',\n 'DoubleVerticalBar': '\\u2225',\n 'downarrow': '\\u2193',\n 'Downarrow': '\\u21D3',\n 'DownArrow': '\\u2193',\n 'DownArrowBar': '\\u2913',\n 'DownArrowUpArrow': '\\u21F5',\n 'DownBreve': '\\u0311',\n 'downdownarrows': '\\u21CA',\n 'downharpoonleft': '\\u21C3',\n 'downharpoonright': '\\u21C2',\n 'DownLeftRightVector': '\\u2950',\n 'DownLeftTeeVector': '\\u295E',\n 'DownLeftVector': '\\u21BD',\n 'DownLeftVectorBar': '\\u2956',\n 'DownRightTeeVector': '\\u295F',\n 'DownRightVector': '\\u21C1',\n 'DownRightVectorBar': '\\u2957',\n 'DownTee': '\\u22A4',\n 'DownTeeArrow': '\\u21A7',\n 'drbkarow': '\\u2910',\n 'drcorn': '\\u231F',\n 'drcrop': '\\u230C',\n 'dscr': '\\uD835\\uDCB9',\n 'Dscr': '\\uD835\\uDC9F',\n 'dscy': '\\u0455',\n 'DScy': '\\u0405',\n 'dsol': '\\u29F6',\n 'dstrok': '\\u0111',\n 'Dstrok': '\\u0110',\n 'dtdot': '\\u22F1',\n 'dtri': '\\u25BF',\n 'dtrif': '\\u25BE',\n 'duarr': '\\u21F5',\n 'duhar': '\\u296F',\n 'dwangle': '\\u29A6',\n 'dzcy': '\\u045F',\n 'DZcy': '\\u040F',\n 'dzigrarr': '\\u27FF',\n 'eacute': '\\xE9',\n 'Eacute': '\\xC9',\n 'easter': '\\u2A6E',\n 'ecaron': '\\u011B',\n 'Ecaron': '\\u011A',\n 'ecir': '\\u2256',\n 'ecirc': '\\xEA',\n 'Ecirc': '\\xCA',\n 'ecolon': '\\u2255',\n 'ecy': '\\u044D',\n 'Ecy': '\\u042D',\n 'eDDot': '\\u2A77',\n 'edot': '\\u0117',\n 'eDot': '\\u2251',\n 'Edot': '\\u0116',\n 'ee': '\\u2147',\n 'efDot': '\\u2252',\n 'efr': '\\uD835\\uDD22',\n 'Efr': '\\uD835\\uDD08',\n 'eg': '\\u2A9A',\n 'egrave': '\\xE8',\n 'Egrave': '\\xC8',\n 'egs': '\\u2A96',\n 'egsdot': '\\u2A98',\n 'el': '\\u2A99',\n 'Element': '\\u2208',\n 'elinters': '\\u23E7',\n 'ell': '\\u2113',\n 'els': '\\u2A95',\n 'elsdot': '\\u2A97',\n 'emacr': '\\u0113',\n 'Emacr': '\\u0112',\n 'empty': '\\u2205',\n 'emptyset': '\\u2205',\n 'EmptySmallSquare': '\\u25FB',\n 'emptyv': '\\u2205',\n 'EmptyVerySmallSquare': '\\u25AB',\n 'emsp': '\\u2003',\n 'emsp13': '\\u2004',\n 'emsp14': '\\u2005',\n 'eng': '\\u014B',\n 'ENG': '\\u014A',\n 'ensp': '\\u2002',\n 'eogon': '\\u0119',\n 'Eogon': '\\u0118',\n 'eopf': '\\uD835\\uDD56',\n 'Eopf': '\\uD835\\uDD3C',\n 'epar': '\\u22D5',\n 'eparsl': '\\u29E3',\n 'eplus': '\\u2A71',\n 'epsi': '\\u03B5',\n 'epsilon': '\\u03B5',\n 'Epsilon': '\\u0395',\n 'epsiv': '\\u03F5',\n 'eqcirc': '\\u2256',\n 'eqcolon': '\\u2255',\n 'eqsim': '\\u2242',\n 'eqslantgtr': '\\u2A96',\n 'eqslantless': '\\u2A95',\n 'Equal': '\\u2A75',\n 'equals': '=',\n 'EqualTilde': '\\u2242',\n 'equest': '\\u225F',\n 'Equilibrium': '\\u21CC',\n 'equiv': '\\u2261',\n 'equivDD': '\\u2A78',\n 'eqvparsl': '\\u29E5',\n 'erarr': '\\u2971',\n 'erDot': '\\u2253',\n 'escr': '\\u212F',\n 'Escr': '\\u2130',\n 'esdot': '\\u2250',\n 'esim': '\\u2242',\n 'Esim': '\\u2A73',\n 'eta': '\\u03B7',\n 'Eta': '\\u0397',\n 'eth': '\\xF0',\n 'ETH': '\\xD0',\n 'euml': '\\xEB',\n 'Euml': '\\xCB',\n 'euro': '\\u20AC',\n 'excl': '!',\n 'exist': '\\u2203',\n 'Exists': '\\u2203',\n 'expectation': '\\u2130',\n 'exponentiale': '\\u2147',\n 'ExponentialE': '\\u2147',\n 'fallingdotseq': '\\u2252',\n 'fcy': '\\u0444',\n 'Fcy': '\\u0424',\n 'female': '\\u2640',\n 'ffilig': '\\uFB03',\n 'fflig': '\\uFB00',\n 'ffllig': '\\uFB04',\n 'ffr': '\\uD835\\uDD23',\n 'Ffr': '\\uD835\\uDD09',\n 'filig': '\\uFB01',\n 'FilledSmallSquare': '\\u25FC',\n 'FilledVerySmallSquare': '\\u25AA',\n 'fjlig': 'fj',\n 'flat': '\\u266D',\n 'fllig': '\\uFB02',\n 'fltns': '\\u25B1',\n 'fnof': '\\u0192',\n 'fopf': '\\uD835\\uDD57',\n 'Fopf': '\\uD835\\uDD3D',\n 'forall': '\\u2200',\n 'ForAll': '\\u2200',\n 'fork': '\\u22D4',\n 'forkv': '\\u2AD9',\n 'Fouriertrf': '\\u2131',\n 'fpartint': '\\u2A0D',\n 'frac12': '\\xBD',\n 'frac13': '\\u2153',\n 'frac14': '\\xBC',\n 'frac15': '\\u2155',\n 'frac16': '\\u2159',\n 'frac18': '\\u215B',\n 'frac23': '\\u2154',\n 'frac25': '\\u2156',\n 'frac34': '\\xBE',\n 'frac35': '\\u2157',\n 'frac38': '\\u215C',\n 'frac45': '\\u2158',\n 'frac56': '\\u215A',\n 'frac58': '\\u215D',\n 'frac78': '\\u215E',\n 'frasl': '\\u2044',\n 'frown': '\\u2322',\n 'fscr': '\\uD835\\uDCBB',\n 'Fscr': '\\u2131',\n 'gacute': '\\u01F5',\n 'gamma': '\\u03B3',\n 'Gamma': '\\u0393',\n 'gammad': '\\u03DD',\n 'Gammad': '\\u03DC',\n 'gap': '\\u2A86',\n 'gbreve': '\\u011F',\n 'Gbreve': '\\u011E',\n 'Gcedil': '\\u0122',\n 'gcirc': '\\u011D',\n 'Gcirc': '\\u011C',\n 'gcy': '\\u0433',\n 'Gcy': '\\u0413',\n 'gdot': '\\u0121',\n 'Gdot': '\\u0120',\n 'ge': '\\u2265',\n 'gE': '\\u2267',\n 'gel': '\\u22DB',\n 'gEl': '\\u2A8C',\n 'geq': '\\u2265',\n 'geqq': '\\u2267',\n 'geqslant': '\\u2A7E',\n 'ges': '\\u2A7E',\n 'gescc': '\\u2AA9',\n 'gesdot': '\\u2A80',\n 'gesdoto': '\\u2A82',\n 'gesdotol': '\\u2A84',\n 'gesl': '\\u22DB\\uFE00',\n 'gesles': '\\u2A94',\n 'gfr': '\\uD835\\uDD24',\n 'Gfr': '\\uD835\\uDD0A',\n 'gg': '\\u226B',\n 'Gg': '\\u22D9',\n 'ggg': '\\u22D9',\n 'gimel': '\\u2137',\n 'gjcy': '\\u0453',\n 'GJcy': '\\u0403',\n 'gl': '\\u2277',\n 'gla': '\\u2AA5',\n 'glE': '\\u2A92',\n 'glj': '\\u2AA4',\n 'gnap': '\\u2A8A',\n 'gnapprox': '\\u2A8A',\n 'gne': '\\u2A88',\n 'gnE': '\\u2269',\n 'gneq': '\\u2A88',\n 'gneqq': '\\u2269',\n 'gnsim': '\\u22E7',\n 'gopf': '\\uD835\\uDD58',\n 'Gopf': '\\uD835\\uDD3E',\n 'grave': '`',\n 'GreaterEqual': '\\u2265',\n 'GreaterEqualLess': '\\u22DB',\n 'GreaterFullEqual': '\\u2267',\n 'GreaterGreater': '\\u2AA2',\n 'GreaterLess': '\\u2277',\n 'GreaterSlantEqual': '\\u2A7E',\n 'GreaterTilde': '\\u2273',\n 'gscr': '\\u210A',\n 'Gscr': '\\uD835\\uDCA2',\n 'gsim': '\\u2273',\n 'gsime': '\\u2A8E',\n 'gsiml': '\\u2A90',\n 'gt': '>',\n 'Gt': '\\u226B',\n 'GT': '>',\n 'gtcc': '\\u2AA7',\n 'gtcir': '\\u2A7A',\n 'gtdot': '\\u22D7',\n 'gtlPar': '\\u2995',\n 'gtquest': '\\u2A7C',\n 'gtrapprox': '\\u2A86',\n 'gtrarr': '\\u2978',\n 'gtrdot': '\\u22D7',\n 'gtreqless': '\\u22DB',\n 'gtreqqless': '\\u2A8C',\n 'gtrless': '\\u2277',\n 'gtrsim': '\\u2273',\n 'gvertneqq': '\\u2269\\uFE00',\n 'gvnE': '\\u2269\\uFE00',\n 'Hacek': '\\u02C7',\n 'hairsp': '\\u200A',\n 'half': '\\xBD',\n 'hamilt': '\\u210B',\n 'hardcy': '\\u044A',\n 'HARDcy': '\\u042A',\n 'harr': '\\u2194',\n 'hArr': '\\u21D4',\n 'harrcir': '\\u2948',\n 'harrw': '\\u21AD',\n 'Hat': '^',\n 'hbar': '\\u210F',\n 'hcirc': '\\u0125',\n 'Hcirc': '\\u0124',\n 'hearts': '\\u2665',\n 'heartsuit': '\\u2665',\n 'hellip': '\\u2026',\n 'hercon': '\\u22B9',\n 'hfr': '\\uD835\\uDD25',\n 'Hfr': '\\u210C',\n 'HilbertSpace': '\\u210B',\n 'hksearow': '\\u2925',\n 'hkswarow': '\\u2926',\n 'hoarr': '\\u21FF',\n 'homtht': '\\u223B',\n 'hookleftarrow': '\\u21A9',\n 'hookrightarrow': '\\u21AA',\n 'hopf': '\\uD835\\uDD59',\n 'Hopf': '\\u210D',\n 'horbar': '\\u2015',\n 'HorizontalLine': '\\u2500',\n 'hscr': '\\uD835\\uDCBD',\n 'Hscr': '\\u210B',\n 'hslash': '\\u210F',\n 'hstrok': '\\u0127',\n 'Hstrok': '\\u0126',\n 'HumpDownHump': '\\u224E',\n 'HumpEqual': '\\u224F',\n 'hybull': '\\u2043',\n 'hyphen': '\\u2010',\n 'iacute': '\\xED',\n 'Iacute': '\\xCD',\n 'ic': '\\u2063',\n 'icirc': '\\xEE',\n 'Icirc': '\\xCE',\n 'icy': '\\u0438',\n 'Icy': '\\u0418',\n 'Idot': '\\u0130',\n 'iecy': '\\u0435',\n 'IEcy': '\\u0415',\n 'iexcl': '\\xA1',\n 'iff': '\\u21D4',\n 'ifr': '\\uD835\\uDD26',\n 'Ifr': '\\u2111',\n 'igrave': '\\xEC',\n 'Igrave': '\\xCC',\n 'ii': '\\u2148',\n 'iiiint': '\\u2A0C',\n 'iiint': '\\u222D',\n 'iinfin': '\\u29DC',\n 'iiota': '\\u2129',\n 'ijlig': '\\u0133',\n 'IJlig': '\\u0132',\n 'Im': '\\u2111',\n 'imacr': '\\u012B',\n 'Imacr': '\\u012A',\n 'image': '\\u2111',\n 'ImaginaryI': '\\u2148',\n 'imagline': '\\u2110',\n 'imagpart': '\\u2111',\n 'imath': '\\u0131',\n 'imof': '\\u22B7',\n 'imped': '\\u01B5',\n 'Implies': '\\u21D2',\n 'in': '\\u2208',\n 'incare': '\\u2105',\n 'infin': '\\u221E',\n 'infintie': '\\u29DD',\n 'inodot': '\\u0131',\n 'int': '\\u222B',\n 'Int': '\\u222C',\n 'intcal': '\\u22BA',\n 'integers': '\\u2124',\n 'Integral': '\\u222B',\n 'intercal': '\\u22BA',\n 'Intersection': '\\u22C2',\n 'intlarhk': '\\u2A17',\n 'intprod': '\\u2A3C',\n 'InvisibleComma': '\\u2063',\n 'InvisibleTimes': '\\u2062',\n 'iocy': '\\u0451',\n 'IOcy': '\\u0401',\n 'iogon': '\\u012F',\n 'Iogon': '\\u012E',\n 'iopf': '\\uD835\\uDD5A',\n 'Iopf': '\\uD835\\uDD40',\n 'iota': '\\u03B9',\n 'Iota': '\\u0399',\n 'iprod': '\\u2A3C',\n 'iquest': '\\xBF',\n 'iscr': '\\uD835\\uDCBE',\n 'Iscr': '\\u2110',\n 'isin': '\\u2208',\n 'isindot': '\\u22F5',\n 'isinE': '\\u22F9',\n 'isins': '\\u22F4',\n 'isinsv': '\\u22F3',\n 'isinv': '\\u2208',\n 'it': '\\u2062',\n 'itilde': '\\u0129',\n 'Itilde': '\\u0128',\n 'iukcy': '\\u0456',\n 'Iukcy': '\\u0406',\n 'iuml': '\\xEF',\n 'Iuml': '\\xCF',\n 'jcirc': '\\u0135',\n 'Jcirc': '\\u0134',\n 'jcy': '\\u0439',\n 'Jcy': '\\u0419',\n 'jfr': '\\uD835\\uDD27',\n 'Jfr': '\\uD835\\uDD0D',\n 'jmath': '\\u0237',\n 'jopf': '\\uD835\\uDD5B',\n 'Jopf': '\\uD835\\uDD41',\n 'jscr': '\\uD835\\uDCBF',\n 'Jscr': '\\uD835\\uDCA5',\n 'jsercy': '\\u0458',\n 'Jsercy': '\\u0408',\n 'jukcy': '\\u0454',\n 'Jukcy': '\\u0404',\n 'kappa': '\\u03BA',\n 'Kappa': '\\u039A',\n 'kappav': '\\u03F0',\n 'kcedil': '\\u0137',\n 'Kcedil': '\\u0136',\n 'kcy': '\\u043A',\n 'Kcy': '\\u041A',\n 'kfr': '\\uD835\\uDD28',\n 'Kfr': '\\uD835\\uDD0E',\n 'kgreen': '\\u0138',\n 'khcy': '\\u0445',\n 'KHcy': '\\u0425',\n 'kjcy': '\\u045C',\n 'KJcy': '\\u040C',\n 'kopf': '\\uD835\\uDD5C',\n 'Kopf': '\\uD835\\uDD42',\n 'kscr': '\\uD835\\uDCC0',\n 'Kscr': '\\uD835\\uDCA6',\n 'lAarr': '\\u21DA',\n 'lacute': '\\u013A',\n 'Lacute': '\\u0139',\n 'laemptyv': '\\u29B4',\n 'lagran': '\\u2112',\n 'lambda': '\\u03BB',\n 'Lambda': '\\u039B',\n 'lang': '\\u27E8',\n 'Lang': '\\u27EA',\n 'langd': '\\u2991',\n 'langle': '\\u27E8',\n 'lap': '\\u2A85',\n 'Laplacetrf': '\\u2112',\n 'laquo': '\\xAB',\n 'larr': '\\u2190',\n 'lArr': '\\u21D0',\n 'Larr': '\\u219E',\n 'larrb': '\\u21E4',\n 'larrbfs': '\\u291F',\n 'larrfs': '\\u291D',\n 'larrhk': '\\u21A9',\n 'larrlp': '\\u21AB',\n 'larrpl': '\\u2939',\n 'larrsim': '\\u2973',\n 'larrtl': '\\u21A2',\n 'lat': '\\u2AAB',\n 'latail': '\\u2919',\n 'lAtail': '\\u291B',\n 'late': '\\u2AAD',\n 'lates': '\\u2AAD\\uFE00',\n 'lbarr': '\\u290C',\n 'lBarr': '\\u290E',\n 'lbbrk': '\\u2772',\n 'lbrace': '{',\n 'lbrack': '[',\n 'lbrke': '\\u298B',\n 'lbrksld': '\\u298F',\n 'lbrkslu': '\\u298D',\n 'lcaron': '\\u013E',\n 'Lcaron': '\\u013D',\n 'lcedil': '\\u013C',\n 'Lcedil': '\\u013B',\n 'lceil': '\\u2308',\n 'lcub': '{',\n 'lcy': '\\u043B',\n 'Lcy': '\\u041B',\n 'ldca': '\\u2936',\n 'ldquo': '\\u201C',\n 'ldquor': '\\u201E',\n 'ldrdhar': '\\u2967',\n 'ldrushar': '\\u294B',\n 'ldsh': '\\u21B2',\n 'le': '\\u2264',\n 'lE': '\\u2266',\n 'LeftAngleBracket': '\\u27E8',\n 'leftarrow': '\\u2190',\n 'Leftarrow': '\\u21D0',\n 'LeftArrow': '\\u2190',\n 'LeftArrowBar': '\\u21E4',\n 'LeftArrowRightArrow': '\\u21C6',\n 'leftarrowtail': '\\u21A2',\n 'LeftCeiling': '\\u2308',\n 'LeftDoubleBracket': '\\u27E6',\n 'LeftDownTeeVector': '\\u2961',\n 'LeftDownVector': '\\u21C3',\n 'LeftDownVectorBar': '\\u2959',\n 'LeftFloor': '\\u230A',\n 'leftharpoondown': '\\u21BD',\n 'leftharpoonup': '\\u21BC',\n 'leftleftarrows': '\\u21C7',\n 'leftrightarrow': '\\u2194',\n 'Leftrightarrow': '\\u21D4',\n 'LeftRightArrow': '\\u2194',\n 'leftrightarrows': '\\u21C6',\n 'leftrightharpoons': '\\u21CB',\n 'leftrightsquigarrow': '\\u21AD',\n 'LeftRightVector': '\\u294E',\n 'LeftTee': '\\u22A3',\n 'LeftTeeArrow': '\\u21A4',\n 'LeftTeeVector': '\\u295A',\n 'leftthreetimes': '\\u22CB',\n 'LeftTriangle': '\\u22B2',\n 'LeftTriangleBar': '\\u29CF',\n 'LeftTriangleEqual': '\\u22B4',\n 'LeftUpDownVector': '\\u2951',\n 'LeftUpTeeVector': '\\u2960',\n 'LeftUpVector': '\\u21BF',\n 'LeftUpVectorBar': '\\u2958',\n 'LeftVector': '\\u21BC',\n 'LeftVectorBar': '\\u2952',\n 'leg': '\\u22DA',\n 'lEg': '\\u2A8B',\n 'leq': '\\u2264',\n 'leqq': '\\u2266',\n 'leqslant': '\\u2A7D',\n 'les': '\\u2A7D',\n 'lescc': '\\u2AA8',\n 'lesdot': '\\u2A7F',\n 'lesdoto': '\\u2A81',\n 'lesdotor': '\\u2A83',\n 'lesg': '\\u22DA\\uFE00',\n 'lesges': '\\u2A93',\n 'lessapprox': '\\u2A85',\n 'lessdot': '\\u22D6',\n 'lesseqgtr': '\\u22DA',\n 'lesseqqgtr': '\\u2A8B',\n 'LessEqualGreater': '\\u22DA',\n 'LessFullEqual': '\\u2266',\n 'LessGreater': '\\u2276',\n 'lessgtr': '\\u2276',\n 'LessLess': '\\u2AA1',\n 'lesssim': '\\u2272',\n 'LessSlantEqual': '\\u2A7D',\n 'LessTilde': '\\u2272',\n 'lfisht': '\\u297C',\n 'lfloor': '\\u230A',\n 'lfr': '\\uD835\\uDD29',\n 'Lfr': '\\uD835\\uDD0F',\n 'lg': '\\u2276',\n 'lgE': '\\u2A91',\n 'lHar': '\\u2962',\n 'lhard': '\\u21BD',\n 'lharu': '\\u21BC',\n 'lharul': '\\u296A',\n 'lhblk': '\\u2584',\n 'ljcy': '\\u0459',\n 'LJcy': '\\u0409',\n 'll': '\\u226A',\n 'Ll': '\\u22D8',\n 'llarr': '\\u21C7',\n 'llcorner': '\\u231E',\n 'Lleftarrow': '\\u21DA',\n 'llhard': '\\u296B',\n 'lltri': '\\u25FA',\n 'lmidot': '\\u0140',\n 'Lmidot': '\\u013F',\n 'lmoust': '\\u23B0',\n 'lmoustache': '\\u23B0',\n 'lnap': '\\u2A89',\n 'lnapprox': '\\u2A89',\n 'lne': '\\u2A87',\n 'lnE': '\\u2268',\n 'lneq': '\\u2A87',\n 'lneqq': '\\u2268',\n 'lnsim': '\\u22E6',\n 'loang': '\\u27EC',\n 'loarr': '\\u21FD',\n 'lobrk': '\\u27E6',\n 'longleftarrow': '\\u27F5',\n 'Longleftarrow': '\\u27F8',\n 'LongLeftArrow': '\\u27F5',\n 'longleftrightarrow': '\\u27F7',\n 'Longleftrightarrow': '\\u27FA',\n 'LongLeftRightArrow': '\\u27F7',\n 'longmapsto': '\\u27FC',\n 'longrightarrow': '\\u27F6',\n 'Longrightarrow': '\\u27F9',\n 'LongRightArrow': '\\u27F6',\n 'looparrowleft': '\\u21AB',\n 'looparrowright': '\\u21AC',\n 'lopar': '\\u2985',\n 'lopf': '\\uD835\\uDD5D',\n 'Lopf': '\\uD835\\uDD43',\n 'loplus': '\\u2A2D',\n 'lotimes': '\\u2A34',\n 'lowast': '\\u2217',\n 'lowbar': '_',\n 'LowerLeftArrow': '\\u2199',\n 'LowerRightArrow': '\\u2198',\n 'loz': '\\u25CA',\n 'lozenge': '\\u25CA',\n 'lozf': '\\u29EB',\n 'lpar': '(',\n 'lparlt': '\\u2993',\n 'lrarr': '\\u21C6',\n 'lrcorner': '\\u231F',\n 'lrhar': '\\u21CB',\n 'lrhard': '\\u296D',\n 'lrm': '\\u200E',\n 'lrtri': '\\u22BF',\n 'lsaquo': '\\u2039',\n 'lscr': '\\uD835\\uDCC1',\n 'Lscr': '\\u2112',\n 'lsh': '\\u21B0',\n 'Lsh': '\\u21B0',\n 'lsim': '\\u2272',\n 'lsime': '\\u2A8D',\n 'lsimg': '\\u2A8F',\n 'lsqb': '[',\n 'lsquo': '\\u2018',\n 'lsquor': '\\u201A',\n 'lstrok': '\\u0142',\n 'Lstrok': '\\u0141',\n 'lt': '<',\n 'Lt': '\\u226A',\n 'LT': '<',\n 'ltcc': '\\u2AA6',\n 'ltcir': '\\u2A79',\n 'ltdot': '\\u22D6',\n 'lthree': '\\u22CB',\n 'ltimes': '\\u22C9',\n 'ltlarr': '\\u2976',\n 'ltquest': '\\u2A7B',\n 'ltri': '\\u25C3',\n 'ltrie': '\\u22B4',\n 'ltrif': '\\u25C2',\n 'ltrPar': '\\u2996',\n 'lurdshar': '\\u294A',\n 'luruhar': '\\u2966',\n 'lvertneqq': '\\u2268\\uFE00',\n 'lvnE': '\\u2268\\uFE00',\n 'macr': '\\xAF',\n 'male': '\\u2642',\n 'malt': '\\u2720',\n 'maltese': '\\u2720',\n 'map': '\\u21A6',\n 'Map': '\\u2905',\n 'mapsto': '\\u21A6',\n 'mapstodown': '\\u21A7',\n 'mapstoleft': '\\u21A4',\n 'mapstoup': '\\u21A5',\n 'marker': '\\u25AE',\n 'mcomma': '\\u2A29',\n 'mcy': '\\u043C',\n 'Mcy': '\\u041C',\n 'mdash': '\\u2014',\n 'mDDot': '\\u223A',\n 'measuredangle': '\\u2221',\n 'MediumSpace': '\\u205F',\n 'Mellintrf': '\\u2133',\n 'mfr': '\\uD835\\uDD2A',\n 'Mfr': '\\uD835\\uDD10',\n 'mho': '\\u2127',\n 'micro': '\\xB5',\n 'mid': '\\u2223',\n 'midast': '*',\n 'midcir': '\\u2AF0',\n 'middot': '\\xB7',\n 'minus': '\\u2212',\n 'minusb': '\\u229F',\n 'minusd': '\\u2238',\n 'minusdu': '\\u2A2A',\n 'MinusPlus': '\\u2213',\n 'mlcp': '\\u2ADB',\n 'mldr': '\\u2026',\n 'mnplus': '\\u2213',\n 'models': '\\u22A7',\n 'mopf': '\\uD835\\uDD5E',\n 'Mopf': '\\uD835\\uDD44',\n 'mp': '\\u2213',\n 'mscr': '\\uD835\\uDCC2',\n 'Mscr': '\\u2133',\n 'mstpos': '\\u223E',\n 'mu': '\\u03BC',\n 'Mu': '\\u039C',\n 'multimap': '\\u22B8',\n 'mumap': '\\u22B8',\n 'nabla': '\\u2207',\n 'nacute': '\\u0144',\n 'Nacute': '\\u0143',\n 'nang': '\\u2220\\u20D2',\n 'nap': '\\u2249',\n 'napE': '\\u2A70\\u0338',\n 'napid': '\\u224B\\u0338',\n 'napos': '\\u0149',\n 'napprox': '\\u2249',\n 'natur': '\\u266E',\n 'natural': '\\u266E',\n 'naturals': '\\u2115',\n 'nbsp': '\\xA0',\n 'nbump': '\\u224E\\u0338',\n 'nbumpe': '\\u224F\\u0338',\n 'ncap': '\\u2A43',\n 'ncaron': '\\u0148',\n 'Ncaron': '\\u0147',\n 'ncedil': '\\u0146',\n 'Ncedil': '\\u0145',\n 'ncong': '\\u2247',\n 'ncongdot': '\\u2A6D\\u0338',\n 'ncup': '\\u2A42',\n 'ncy': '\\u043D',\n 'Ncy': '\\u041D',\n 'ndash': '\\u2013',\n 'ne': '\\u2260',\n 'nearhk': '\\u2924',\n 'nearr': '\\u2197',\n 'neArr': '\\u21D7',\n 'nearrow': '\\u2197',\n 'nedot': '\\u2250\\u0338',\n 'NegativeMediumSpace': '\\u200B',\n 'NegativeThickSpace': '\\u200B',\n 'NegativeThinSpace': '\\u200B',\n 'NegativeVeryThinSpace': '\\u200B',\n 'nequiv': '\\u2262',\n 'nesear': '\\u2928',\n 'nesim': '\\u2242\\u0338',\n 'NestedGreaterGreater': '\\u226B',\n 'NestedLessLess': '\\u226A',\n 'NewLine': '\\n',\n 'nexist': '\\u2204',\n 'nexists': '\\u2204',\n 'nfr': '\\uD835\\uDD2B',\n 'Nfr': '\\uD835\\uDD11',\n 'nge': '\\u2271',\n 'ngE': '\\u2267\\u0338',\n 'ngeq': '\\u2271',\n 'ngeqq': '\\u2267\\u0338',\n 'ngeqslant': '\\u2A7E\\u0338',\n 'nges': '\\u2A7E\\u0338',\n 'nGg': '\\u22D9\\u0338',\n 'ngsim': '\\u2275',\n 'ngt': '\\u226F',\n 'nGt': '\\u226B\\u20D2',\n 'ngtr': '\\u226F',\n 'nGtv': '\\u226B\\u0338',\n 'nharr': '\\u21AE',\n 'nhArr': '\\u21CE',\n 'nhpar': '\\u2AF2',\n 'ni': '\\u220B',\n 'nis': '\\u22FC',\n 'nisd': '\\u22FA',\n 'niv': '\\u220B',\n 'njcy': '\\u045A',\n 'NJcy': '\\u040A',\n 'nlarr': '\\u219A',\n 'nlArr': '\\u21CD',\n 'nldr': '\\u2025',\n 'nle': '\\u2270',\n 'nlE': '\\u2266\\u0338',\n 'nleftarrow': '\\u219A',\n 'nLeftarrow': '\\u21CD',\n 'nleftrightarrow': '\\u21AE',\n 'nLeftrightarrow': '\\u21CE',\n 'nleq': '\\u2270',\n 'nleqq': '\\u2266\\u0338',\n 'nleqslant': '\\u2A7D\\u0338',\n 'nles': '\\u2A7D\\u0338',\n 'nless': '\\u226E',\n 'nLl': '\\u22D8\\u0338',\n 'nlsim': '\\u2274',\n 'nlt': '\\u226E',\n 'nLt': '\\u226A\\u20D2',\n 'nltri': '\\u22EA',\n 'nltrie': '\\u22EC',\n 'nLtv': '\\u226A\\u0338',\n 'nmid': '\\u2224',\n 'NoBreak': '\\u2060',\n 'NonBreakingSpace': '\\xA0',\n 'nopf': '\\uD835\\uDD5F',\n 'Nopf': '\\u2115',\n 'not': '\\xAC',\n 'Not': '\\u2AEC',\n 'NotCongruent': '\\u2262',\n 'NotCupCap': '\\u226D',\n 'NotDoubleVerticalBar': '\\u2226',\n 'NotElement': '\\u2209',\n 'NotEqual': '\\u2260',\n 'NotEqualTilde': '\\u2242\\u0338',\n 'NotExists': '\\u2204',\n 'NotGreater': '\\u226F',\n 'NotGreaterEqual': '\\u2271',\n 'NotGreaterFullEqual': '\\u2267\\u0338',\n 'NotGreaterGreater': '\\u226B\\u0338',\n 'NotGreaterLess': '\\u2279',\n 'NotGreaterSlantEqual': '\\u2A7E\\u0338',\n 'NotGreaterTilde': '\\u2275',\n 'NotHumpDownHump': '\\u224E\\u0338',\n 'NotHumpEqual': '\\u224F\\u0338',\n 'notin': '\\u2209',\n 'notindot': '\\u22F5\\u0338',\n 'notinE': '\\u22F9\\u0338',\n 'notinva': '\\u2209',\n 'notinvb': '\\u22F7',\n 'notinvc': '\\u22F6',\n 'NotLeftTriangle': '\\u22EA',\n 'NotLeftTriangleBar': '\\u29CF\\u0338',\n 'NotLeftTriangleEqual': '\\u22EC',\n 'NotLess': '\\u226E',\n 'NotLessEqual': '\\u2270',\n 'NotLessGreater': '\\u2278',\n 'NotLessLess': '\\u226A\\u0338',\n 'NotLessSlantEqual': '\\u2A7D\\u0338',\n 'NotLessTilde': '\\u2274',\n 'NotNestedGreaterGreater': '\\u2AA2\\u0338',\n 'NotNestedLessLess': '\\u2AA1\\u0338',\n 'notni': '\\u220C',\n 'notniva': '\\u220C',\n 'notnivb': '\\u22FE',\n 'notnivc': '\\u22FD',\n 'NotPrecedes': '\\u2280',\n 'NotPrecedesEqual': '\\u2AAF\\u0338',\n 'NotPrecedesSlantEqual': '\\u22E0',\n 'NotReverseElement': '\\u220C',\n 'NotRightTriangle': '\\u22EB',\n 'NotRightTriangleBar': '\\u29D0\\u0338',\n 'NotRightTriangleEqual': '\\u22ED',\n 'NotSquareSubset': '\\u228F\\u0338',\n 'NotSquareSubsetEqual': '\\u22E2',\n 'NotSquareSuperset': '\\u2290\\u0338',\n 'NotSquareSupersetEqual': '\\u22E3',\n 'NotSubset': '\\u2282\\u20D2',\n 'NotSubsetEqual': '\\u2288',\n 'NotSucceeds': '\\u2281',\n 'NotSucceedsEqual': '\\u2AB0\\u0338',\n 'NotSucceedsSlantEqual': '\\u22E1',\n 'NotSucceedsTilde': '\\u227F\\u0338',\n 'NotSuperset': '\\u2283\\u20D2',\n 'NotSupersetEqual': '\\u2289',\n 'NotTilde': '\\u2241',\n 'NotTildeEqual': '\\u2244',\n 'NotTildeFullEqual': '\\u2247',\n 'NotTildeTilde': '\\u2249',\n 'NotVerticalBar': '\\u2224',\n 'npar': '\\u2226',\n 'nparallel': '\\u2226',\n 'nparsl': '\\u2AFD\\u20E5',\n 'npart': '\\u2202\\u0338',\n 'npolint': '\\u2A14',\n 'npr': '\\u2280',\n 'nprcue': '\\u22E0',\n 'npre': '\\u2AAF\\u0338',\n 'nprec': '\\u2280',\n 'npreceq': '\\u2AAF\\u0338',\n 'nrarr': '\\u219B',\n 'nrArr': '\\u21CF',\n 'nrarrc': '\\u2933\\u0338',\n 'nrarrw': '\\u219D\\u0338',\n 'nrightarrow': '\\u219B',\n 'nRightarrow': '\\u21CF',\n 'nrtri': '\\u22EB',\n 'nrtrie': '\\u22ED',\n 'nsc': '\\u2281',\n 'nsccue': '\\u22E1',\n 'nsce': '\\u2AB0\\u0338',\n 'nscr': '\\uD835\\uDCC3',\n 'Nscr': '\\uD835\\uDCA9',\n 'nshortmid': '\\u2224',\n 'nshortparallel': '\\u2226',\n 'nsim': '\\u2241',\n 'nsime': '\\u2244',\n 'nsimeq': '\\u2244',\n 'nsmid': '\\u2224',\n 'nspar': '\\u2226',\n 'nsqsube': '\\u22E2',\n 'nsqsupe': '\\u22E3',\n 'nsub': '\\u2284',\n 'nsube': '\\u2288',\n 'nsubE': '\\u2AC5\\u0338',\n 'nsubset': '\\u2282\\u20D2',\n 'nsubseteq': '\\u2288',\n 'nsubseteqq': '\\u2AC5\\u0338',\n 'nsucc': '\\u2281',\n 'nsucceq': '\\u2AB0\\u0338',\n 'nsup': '\\u2285',\n 'nsupe': '\\u2289',\n 'nsupE': '\\u2AC6\\u0338',\n 'nsupset': '\\u2283\\u20D2',\n 'nsupseteq': '\\u2289',\n 'nsupseteqq': '\\u2AC6\\u0338',\n 'ntgl': '\\u2279',\n 'ntilde': '\\xF1',\n 'Ntilde': '\\xD1',\n 'ntlg': '\\u2278',\n 'ntriangleleft': '\\u22EA',\n 'ntrianglelefteq': '\\u22EC',\n 'ntriangleright': '\\u22EB',\n 'ntrianglerighteq': '\\u22ED',\n 'nu': '\\u03BD',\n 'Nu': '\\u039D',\n 'num': '#',\n 'numero': '\\u2116',\n 'numsp': '\\u2007',\n 'nvap': '\\u224D\\u20D2',\n 'nvdash': '\\u22AC',\n 'nvDash': '\\u22AD',\n 'nVdash': '\\u22AE',\n 'nVDash': '\\u22AF',\n 'nvge': '\\u2265\\u20D2',\n 'nvgt': '>\\u20D2',\n 'nvHarr': '\\u2904',\n 'nvinfin': '\\u29DE',\n 'nvlArr': '\\u2902',\n 'nvle': '\\u2264\\u20D2',\n 'nvlt': '<\\u20D2',\n 'nvltrie': '\\u22B4\\u20D2',\n 'nvrArr': '\\u2903',\n 'nvrtrie': '\\u22B5\\u20D2',\n 'nvsim': '\\u223C\\u20D2',\n 'nwarhk': '\\u2923',\n 'nwarr': '\\u2196',\n 'nwArr': '\\u21D6',\n 'nwarrow': '\\u2196',\n 'nwnear': '\\u2927',\n 'oacute': '\\xF3',\n 'Oacute': '\\xD3',\n 'oast': '\\u229B',\n 'ocir': '\\u229A',\n 'ocirc': '\\xF4',\n 'Ocirc': '\\xD4',\n 'ocy': '\\u043E',\n 'Ocy': '\\u041E',\n 'odash': '\\u229D',\n 'odblac': '\\u0151',\n 'Odblac': '\\u0150',\n 'odiv': '\\u2A38',\n 'odot': '\\u2299',\n 'odsold': '\\u29BC',\n 'oelig': '\\u0153',\n 'OElig': '\\u0152',\n 'ofcir': '\\u29BF',\n 'ofr': '\\uD835\\uDD2C',\n 'Ofr': '\\uD835\\uDD12',\n 'ogon': '\\u02DB',\n 'ograve': '\\xF2',\n 'Ograve': '\\xD2',\n 'ogt': '\\u29C1',\n 'ohbar': '\\u29B5',\n 'ohm': '\\u03A9',\n 'oint': '\\u222E',\n 'olarr': '\\u21BA',\n 'olcir': '\\u29BE',\n 'olcross': '\\u29BB',\n 'oline': '\\u203E',\n 'olt': '\\u29C0',\n 'omacr': '\\u014D',\n 'Omacr': '\\u014C',\n 'omega': '\\u03C9',\n 'Omega': '\\u03A9',\n 'omicron': '\\u03BF',\n 'Omicron': '\\u039F',\n 'omid': '\\u29B6',\n 'ominus': '\\u2296',\n 'oopf': '\\uD835\\uDD60',\n 'Oopf': '\\uD835\\uDD46',\n 'opar': '\\u29B7',\n 'OpenCurlyDoubleQuote': '\\u201C',\n 'OpenCurlyQuote': '\\u2018',\n 'operp': '\\u29B9',\n 'oplus': '\\u2295',\n 'or': '\\u2228',\n 'Or': '\\u2A54',\n 'orarr': '\\u21BB',\n 'ord': '\\u2A5D',\n 'order': '\\u2134',\n 'orderof': '\\u2134',\n 'ordf': '\\xAA',\n 'ordm': '\\xBA',\n 'origof': '\\u22B6',\n 'oror': '\\u2A56',\n 'orslope': '\\u2A57',\n 'orv': '\\u2A5B',\n 'oS': '\\u24C8',\n 'oscr': '\\u2134',\n 'Oscr': '\\uD835\\uDCAA',\n 'oslash': '\\xF8',\n 'Oslash': '\\xD8',\n 'osol': '\\u2298',\n 'otilde': '\\xF5',\n 'Otilde': '\\xD5',\n 'otimes': '\\u2297',\n 'Otimes': '\\u2A37',\n 'otimesas': '\\u2A36',\n 'ouml': '\\xF6',\n 'Ouml': '\\xD6',\n 'ovbar': '\\u233D',\n 'OverBar': '\\u203E',\n 'OverBrace': '\\u23DE',\n 'OverBracket': '\\u23B4',\n 'OverParenthesis': '\\u23DC',\n 'par': '\\u2225',\n 'para': '\\xB6',\n 'parallel': '\\u2225',\n 'parsim': '\\u2AF3',\n 'parsl': '\\u2AFD',\n 'part': '\\u2202',\n 'PartialD': '\\u2202',\n 'pcy': '\\u043F',\n 'Pcy': '\\u041F',\n 'percnt': '%',\n 'period': '.',\n 'permil': '\\u2030',\n 'perp': '\\u22A5',\n 'pertenk': '\\u2031',\n 'pfr': '\\uD835\\uDD2D',\n 'Pfr': '\\uD835\\uDD13',\n 'phi': '\\u03C6',\n 'Phi': '\\u03A6',\n 'phiv': '\\u03D5',\n 'phmmat': '\\u2133',\n 'phone': '\\u260E',\n 'pi': '\\u03C0',\n 'Pi': '\\u03A0',\n 'pitchfork': '\\u22D4',\n 'piv': '\\u03D6',\n 'planck': '\\u210F',\n 'planckh': '\\u210E',\n 'plankv': '\\u210F',\n 'plus': '+',\n 'plusacir': '\\u2A23',\n 'plusb': '\\u229E',\n 'pluscir': '\\u2A22',\n 'plusdo': '\\u2214',\n 'plusdu': '\\u2A25',\n 'pluse': '\\u2A72',\n 'PlusMinus': '\\xB1',\n 'plusmn': '\\xB1',\n 'plussim': '\\u2A26',\n 'plustwo': '\\u2A27',\n 'pm': '\\xB1',\n 'Poincareplane': '\\u210C',\n 'pointint': '\\u2A15',\n 'popf': '\\uD835\\uDD61',\n 'Popf': '\\u2119',\n 'pound': '\\xA3',\n 'pr': '\\u227A',\n 'Pr': '\\u2ABB',\n 'prap': '\\u2AB7',\n 'prcue': '\\u227C',\n 'pre': '\\u2AAF',\n 'prE': '\\u2AB3',\n 'prec': '\\u227A',\n 'precapprox': '\\u2AB7',\n 'preccurlyeq': '\\u227C',\n 'Precedes': '\\u227A',\n 'PrecedesEqual': '\\u2AAF',\n 'PrecedesSlantEqual': '\\u227C',\n 'PrecedesTilde': '\\u227E',\n 'preceq': '\\u2AAF',\n 'precnapprox': '\\u2AB9',\n 'precneqq': '\\u2AB5',\n 'precnsim': '\\u22E8',\n 'precsim': '\\u227E',\n 'prime': '\\u2032',\n 'Prime': '\\u2033',\n 'primes': '\\u2119',\n 'prnap': '\\u2AB9',\n 'prnE': '\\u2AB5',\n 'prnsim': '\\u22E8',\n 'prod': '\\u220F',\n 'Product': '\\u220F',\n 'profalar': '\\u232E',\n 'profline': '\\u2312',\n 'profsurf': '\\u2313',\n 'prop': '\\u221D',\n 'Proportion': '\\u2237',\n 'Proportional': '\\u221D',\n 'propto': '\\u221D',\n 'prsim': '\\u227E',\n 'prurel': '\\u22B0',\n 'pscr': '\\uD835\\uDCC5',\n 'Pscr': '\\uD835\\uDCAB',\n 'psi': '\\u03C8',\n 'Psi': '\\u03A8',\n 'puncsp': '\\u2008',\n 'qfr': '\\uD835\\uDD2E',\n 'Qfr': '\\uD835\\uDD14',\n 'qint': '\\u2A0C',\n 'qopf': '\\uD835\\uDD62',\n 'Qopf': '\\u211A',\n 'qprime': '\\u2057',\n 'qscr': '\\uD835\\uDCC6',\n 'Qscr': '\\uD835\\uDCAC',\n 'quaternions': '\\u210D',\n 'quatint': '\\u2A16',\n 'quest': '?',\n 'questeq': '\\u225F',\n 'quot': '\"',\n 'QUOT': '\"',\n 'rAarr': '\\u21DB',\n 'race': '\\u223D\\u0331',\n 'racute': '\\u0155',\n 'Racute': '\\u0154',\n 'radic': '\\u221A',\n 'raemptyv': '\\u29B3',\n 'rang': '\\u27E9',\n 'Rang': '\\u27EB',\n 'rangd': '\\u2992',\n 'range': '\\u29A5',\n 'rangle': '\\u27E9',\n 'raquo': '\\xBB',\n 'rarr': '\\u2192',\n 'rArr': '\\u21D2',\n 'Rarr': '\\u21A0',\n 'rarrap': '\\u2975',\n 'rarrb': '\\u21E5',\n 'rarrbfs': '\\u2920',\n 'rarrc': '\\u2933',\n 'rarrfs': '\\u291E',\n 'rarrhk': '\\u21AA',\n 'rarrlp': '\\u21AC',\n 'rarrpl': '\\u2945',\n 'rarrsim': '\\u2974',\n 'rarrtl': '\\u21A3',\n 'Rarrtl': '\\u2916',\n 'rarrw': '\\u219D',\n 'ratail': '\\u291A',\n 'rAtail': '\\u291C',\n 'ratio': '\\u2236',\n 'rationals': '\\u211A',\n 'rbarr': '\\u290D',\n 'rBarr': '\\u290F',\n 'RBarr': '\\u2910',\n 'rbbrk': '\\u2773',\n 'rbrace': '}',\n 'rbrack': ']',\n 'rbrke': '\\u298C',\n 'rbrksld': '\\u298E',\n 'rbrkslu': '\\u2990',\n 'rcaron': '\\u0159',\n 'Rcaron': '\\u0158',\n 'rcedil': '\\u0157',\n 'Rcedil': '\\u0156',\n 'rceil': '\\u2309',\n 'rcub': '}',\n 'rcy': '\\u0440',\n 'Rcy': '\\u0420',\n 'rdca': '\\u2937',\n 'rdldhar': '\\u2969',\n 'rdquo': '\\u201D',\n 'rdquor': '\\u201D',\n 'rdsh': '\\u21B3',\n 'Re': '\\u211C',\n 'real': '\\u211C',\n 'realine': '\\u211B',\n 'realpart': '\\u211C',\n 'reals': '\\u211D',\n 'rect': '\\u25AD',\n 'reg': '\\xAE',\n 'REG': '\\xAE',\n 'ReverseElement': '\\u220B',\n 'ReverseEquilibrium': '\\u21CB',\n 'ReverseUpEquilibrium': '\\u296F',\n 'rfisht': '\\u297D',\n 'rfloor': '\\u230B',\n 'rfr': '\\uD835\\uDD2F',\n 'Rfr': '\\u211C',\n 'rHar': '\\u2964',\n 'rhard': '\\u21C1',\n 'rharu': '\\u21C0',\n 'rharul': '\\u296C',\n 'rho': '\\u03C1',\n 'Rho': '\\u03A1',\n 'rhov': '\\u03F1',\n 'RightAngleBracket': '\\u27E9',\n 'rightarrow': '\\u2192',\n 'Rightarrow': '\\u21D2',\n 'RightArrow': '\\u2192',\n 'RightArrowBar': '\\u21E5',\n 'RightArrowLeftArrow': '\\u21C4',\n 'rightarrowtail': '\\u21A3',\n 'RightCeiling': '\\u2309',\n 'RightDoubleBracket': '\\u27E7',\n 'RightDownTeeVector': '\\u295D',\n 'RightDownVector': '\\u21C2',\n 'RightDownVectorBar': '\\u2955',\n 'RightFloor': '\\u230B',\n 'rightharpoondown': '\\u21C1',\n 'rightharpoonup': '\\u21C0',\n 'rightleftarrows': '\\u21C4',\n 'rightleftharpoons': '\\u21CC',\n 'rightrightarrows': '\\u21C9',\n 'rightsquigarrow': '\\u219D',\n 'RightTee': '\\u22A2',\n 'RightTeeArrow': '\\u21A6',\n 'RightTeeVector': '\\u295B',\n 'rightthreetimes': '\\u22CC',\n 'RightTriangle': '\\u22B3',\n 'RightTriangleBar': '\\u29D0',\n 'RightTriangleEqual': '\\u22B5',\n 'RightUpDownVector': '\\u294F',\n 'RightUpTeeVector': '\\u295C',\n 'RightUpVector': '\\u21BE',\n 'RightUpVectorBar': '\\u2954',\n 'RightVector': '\\u21C0',\n 'RightVectorBar': '\\u2953',\n 'ring': '\\u02DA',\n 'risingdotseq': '\\u2253',\n 'rlarr': '\\u21C4',\n 'rlhar': '\\u21CC',\n 'rlm': '\\u200F',\n 'rmoust': '\\u23B1',\n 'rmoustache': '\\u23B1',\n 'rnmid': '\\u2AEE',\n 'roang': '\\u27ED',\n 'roarr': '\\u21FE',\n 'robrk': '\\u27E7',\n 'ropar': '\\u2986',\n 'ropf': '\\uD835\\uDD63',\n 'Ropf': '\\u211D',\n 'roplus': '\\u2A2E',\n 'rotimes': '\\u2A35',\n 'RoundImplies': '\\u2970',\n 'rpar': ')',\n 'rpargt': '\\u2994',\n 'rppolint': '\\u2A12',\n 'rrarr': '\\u21C9',\n 'Rrightarrow': '\\u21DB',\n 'rsaquo': '\\u203A',\n 'rscr': '\\uD835\\uDCC7',\n 'Rscr': '\\u211B',\n 'rsh': '\\u21B1',\n 'Rsh': '\\u21B1',\n 'rsqb': ']',\n 'rsquo': '\\u2019',\n 'rsquor': '\\u2019',\n 'rthree': '\\u22CC',\n 'rtimes': '\\u22CA',\n 'rtri': '\\u25B9',\n 'rtrie': '\\u22B5',\n 'rtrif': '\\u25B8',\n 'rtriltri': '\\u29CE',\n 'RuleDelayed': '\\u29F4',\n 'ruluhar': '\\u2968',\n 'rx': '\\u211E',\n 'sacute': '\\u015B',\n 'Sacute': '\\u015A',\n 'sbquo': '\\u201A',\n 'sc': '\\u227B',\n 'Sc': '\\u2ABC',\n 'scap': '\\u2AB8',\n 'scaron': '\\u0161',\n 'Scaron': '\\u0160',\n 'sccue': '\\u227D',\n 'sce': '\\u2AB0',\n 'scE': '\\u2AB4',\n 'scedil': '\\u015F',\n 'Scedil': '\\u015E',\n 'scirc': '\\u015D',\n 'Scirc': '\\u015C',\n 'scnap': '\\u2ABA',\n 'scnE': '\\u2AB6',\n 'scnsim': '\\u22E9',\n 'scpolint': '\\u2A13',\n 'scsim': '\\u227F',\n 'scy': '\\u0441',\n 'Scy': '\\u0421',\n 'sdot': '\\u22C5',\n 'sdotb': '\\u22A1',\n 'sdote': '\\u2A66',\n 'searhk': '\\u2925',\n 'searr': '\\u2198',\n 'seArr': '\\u21D8',\n 'searrow': '\\u2198',\n 'sect': '\\xA7',\n 'semi': ';',\n 'seswar': '\\u2929',\n 'setminus': '\\u2216',\n 'setmn': '\\u2216',\n 'sext': '\\u2736',\n 'sfr': '\\uD835\\uDD30',\n 'Sfr': '\\uD835\\uDD16',\n 'sfrown': '\\u2322',\n 'sharp': '\\u266F',\n 'shchcy': '\\u0449',\n 'SHCHcy': '\\u0429',\n 'shcy': '\\u0448',\n 'SHcy': '\\u0428',\n 'ShortDownArrow': '\\u2193',\n 'ShortLeftArrow': '\\u2190',\n 'shortmid': '\\u2223',\n 'shortparallel': '\\u2225',\n 'ShortRightArrow': '\\u2192',\n 'ShortUpArrow': '\\u2191',\n 'shy': '\\xAD',\n 'sigma': '\\u03C3',\n 'Sigma': '\\u03A3',\n 'sigmaf': '\\u03C2',\n 'sigmav': '\\u03C2',\n 'sim': '\\u223C',\n 'simdot': '\\u2A6A',\n 'sime': '\\u2243',\n 'simeq': '\\u2243',\n 'simg': '\\u2A9E',\n 'simgE': '\\u2AA0',\n 'siml': '\\u2A9D',\n 'simlE': '\\u2A9F',\n 'simne': '\\u2246',\n 'simplus': '\\u2A24',\n 'simrarr': '\\u2972',\n 'slarr': '\\u2190',\n 'SmallCircle': '\\u2218',\n 'smallsetminus': '\\u2216',\n 'smashp': '\\u2A33',\n 'smeparsl': '\\u29E4',\n 'smid': '\\u2223',\n 'smile': '\\u2323',\n 'smt': '\\u2AAA',\n 'smte': '\\u2AAC',\n 'smtes': '\\u2AAC\\uFE00',\n 'softcy': '\\u044C',\n 'SOFTcy': '\\u042C',\n 'sol': '/',\n 'solb': '\\u29C4',\n 'solbar': '\\u233F',\n 'sopf': '\\uD835\\uDD64',\n 'Sopf': '\\uD835\\uDD4A',\n 'spades': '\\u2660',\n 'spadesuit': '\\u2660',\n 'spar': '\\u2225',\n 'sqcap': '\\u2293',\n 'sqcaps': '\\u2293\\uFE00',\n 'sqcup': '\\u2294',\n 'sqcups': '\\u2294\\uFE00',\n 'Sqrt': '\\u221A',\n 'sqsub': '\\u228F',\n 'sqsube': '\\u2291',\n 'sqsubset': '\\u228F',\n 'sqsubseteq': '\\u2291',\n 'sqsup': '\\u2290',\n 'sqsupe': '\\u2292',\n 'sqsupset': '\\u2290',\n 'sqsupseteq': '\\u2292',\n 'squ': '\\u25A1',\n 'square': '\\u25A1',\n 'Square': '\\u25A1',\n 'SquareIntersection': '\\u2293',\n 'SquareSubset': '\\u228F',\n 'SquareSubsetEqual': '\\u2291',\n 'SquareSuperset': '\\u2290',\n 'SquareSupersetEqual': '\\u2292',\n 'SquareUnion': '\\u2294',\n 'squarf': '\\u25AA',\n 'squf': '\\u25AA',\n 'srarr': '\\u2192',\n 'sscr': '\\uD835\\uDCC8',\n 'Sscr': '\\uD835\\uDCAE',\n 'ssetmn': '\\u2216',\n 'ssmile': '\\u2323',\n 'sstarf': '\\u22C6',\n 'star': '\\u2606',\n 'Star': '\\u22C6',\n 'starf': '\\u2605',\n 'straightepsilon': '\\u03F5',\n 'straightphi': '\\u03D5',\n 'strns': '\\xAF',\n 'sub': '\\u2282',\n 'Sub': '\\u22D0',\n 'subdot': '\\u2ABD',\n 'sube': '\\u2286',\n 'subE': '\\u2AC5',\n 'subedot': '\\u2AC3',\n 'submult': '\\u2AC1',\n 'subne': '\\u228A',\n 'subnE': '\\u2ACB',\n 'subplus': '\\u2ABF',\n 'subrarr': '\\u2979',\n 'subset': '\\u2282',\n 'Subset': '\\u22D0',\n 'subseteq': '\\u2286',\n 'subseteqq': '\\u2AC5',\n 'SubsetEqual': '\\u2286',\n 'subsetneq': '\\u228A',\n 'subsetneqq': '\\u2ACB',\n 'subsim': '\\u2AC7',\n 'subsub': '\\u2AD5',\n 'subsup': '\\u2AD3',\n 'succ': '\\u227B',\n 'succapprox': '\\u2AB8',\n 'succcurlyeq': '\\u227D',\n 'Succeeds': '\\u227B',\n 'SucceedsEqual': '\\u2AB0',\n 'SucceedsSlantEqual': '\\u227D',\n 'SucceedsTilde': '\\u227F',\n 'succeq': '\\u2AB0',\n 'succnapprox': '\\u2ABA',\n 'succneqq': '\\u2AB6',\n 'succnsim': '\\u22E9',\n 'succsim': '\\u227F',\n 'SuchThat': '\\u220B',\n 'sum': '\\u2211',\n 'Sum': '\\u2211',\n 'sung': '\\u266A',\n 'sup': '\\u2283',\n 'Sup': '\\u22D1',\n 'sup1': '\\xB9',\n 'sup2': '\\xB2',\n 'sup3': '\\xB3',\n 'supdot': '\\u2ABE',\n 'supdsub': '\\u2AD8',\n 'supe': '\\u2287',\n 'supE': '\\u2AC6',\n 'supedot': '\\u2AC4',\n 'Superset': '\\u2283',\n 'SupersetEqual': '\\u2287',\n 'suphsol': '\\u27C9',\n 'suphsub': '\\u2AD7',\n 'suplarr': '\\u297B',\n 'supmult': '\\u2AC2',\n 'supne': '\\u228B',\n 'supnE': '\\u2ACC',\n 'supplus': '\\u2AC0',\n 'supset': '\\u2283',\n 'Supset': '\\u22D1',\n 'supseteq': '\\u2287',\n 'supseteqq': '\\u2AC6',\n 'supsetneq': '\\u228B',\n 'supsetneqq': '\\u2ACC',\n 'supsim': '\\u2AC8',\n 'supsub': '\\u2AD4',\n 'supsup': '\\u2AD6',\n 'swarhk': '\\u2926',\n 'swarr': '\\u2199',\n 'swArr': '\\u21D9',\n 'swarrow': '\\u2199',\n 'swnwar': '\\u292A',\n 'szlig': '\\xDF',\n 'Tab': '\\t',\n 'target': '\\u2316',\n 'tau': '\\u03C4',\n 'Tau': '\\u03A4',\n 'tbrk': '\\u23B4',\n 'tcaron': '\\u0165',\n 'Tcaron': '\\u0164',\n 'tcedil': '\\u0163',\n 'Tcedil': '\\u0162',\n 'tcy': '\\u0442',\n 'Tcy': '\\u0422',\n 'tdot': '\\u20DB',\n 'telrec': '\\u2315',\n 'tfr': '\\uD835\\uDD31',\n 'Tfr': '\\uD835\\uDD17',\n 'there4': '\\u2234',\n 'therefore': '\\u2234',\n 'Therefore': '\\u2234',\n 'theta': '\\u03B8',\n 'Theta': '\\u0398',\n 'thetasym': '\\u03D1',\n 'thetav': '\\u03D1',\n 'thickapprox': '\\u2248',\n 'thicksim': '\\u223C',\n 'ThickSpace': '\\u205F\\u200A',\n 'thinsp': '\\u2009',\n 'ThinSpace': '\\u2009',\n 'thkap': '\\u2248',\n 'thksim': '\\u223C',\n 'thorn': '\\xFE',\n 'THORN': '\\xDE',\n 'tilde': '\\u02DC',\n 'Tilde': '\\u223C',\n 'TildeEqual': '\\u2243',\n 'TildeFullEqual': '\\u2245',\n 'TildeTilde': '\\u2248',\n 'times': '\\xD7',\n 'timesb': '\\u22A0',\n 'timesbar': '\\u2A31',\n 'timesd': '\\u2A30',\n 'tint': '\\u222D',\n 'toea': '\\u2928',\n 'top': '\\u22A4',\n 'topbot': '\\u2336',\n 'topcir': '\\u2AF1',\n 'topf': '\\uD835\\uDD65',\n 'Topf': '\\uD835\\uDD4B',\n 'topfork': '\\u2ADA',\n 'tosa': '\\u2929',\n 'tprime': '\\u2034',\n 'trade': '\\u2122',\n 'TRADE': '\\u2122',\n 'triangle': '\\u25B5',\n 'triangledown': '\\u25BF',\n 'triangleleft': '\\u25C3',\n 'trianglelefteq': '\\u22B4',\n 'triangleq': '\\u225C',\n 'triangleright': '\\u25B9',\n 'trianglerighteq': '\\u22B5',\n 'tridot': '\\u25EC',\n 'trie': '\\u225C',\n 'triminus': '\\u2A3A',\n 'TripleDot': '\\u20DB',\n 'triplus': '\\u2A39',\n 'trisb': '\\u29CD',\n 'tritime': '\\u2A3B',\n 'trpezium': '\\u23E2',\n 'tscr': '\\uD835\\uDCC9',\n 'Tscr': '\\uD835\\uDCAF',\n 'tscy': '\\u0446',\n 'TScy': '\\u0426',\n 'tshcy': '\\u045B',\n 'TSHcy': '\\u040B',\n 'tstrok': '\\u0167',\n 'Tstrok': '\\u0166',\n 'twixt': '\\u226C',\n 'twoheadleftarrow': '\\u219E',\n 'twoheadrightarrow': '\\u21A0',\n 'uacute': '\\xFA',\n 'Uacute': '\\xDA',\n 'uarr': '\\u2191',\n 'uArr': '\\u21D1',\n 'Uarr': '\\u219F',\n 'Uarrocir': '\\u2949',\n 'ubrcy': '\\u045E',\n 'Ubrcy': '\\u040E',\n 'ubreve': '\\u016D',\n 'Ubreve': '\\u016C',\n 'ucirc': '\\xFB',\n 'Ucirc': '\\xDB',\n 'ucy': '\\u0443',\n 'Ucy': '\\u0423',\n 'udarr': '\\u21C5',\n 'udblac': '\\u0171',\n 'Udblac': '\\u0170',\n 'udhar': '\\u296E',\n 'ufisht': '\\u297E',\n 'ufr': '\\uD835\\uDD32',\n 'Ufr': '\\uD835\\uDD18',\n 'ugrave': '\\xF9',\n 'Ugrave': '\\xD9',\n 'uHar': '\\u2963',\n 'uharl': '\\u21BF',\n 'uharr': '\\u21BE',\n 'uhblk': '\\u2580',\n 'ulcorn': '\\u231C',\n 'ulcorner': '\\u231C',\n 'ulcrop': '\\u230F',\n 'ultri': '\\u25F8',\n 'umacr': '\\u016B',\n 'Umacr': '\\u016A',\n 'uml': '\\xA8',\n 'UnderBar': '_',\n 'UnderBrace': '\\u23DF',\n 'UnderBracket': '\\u23B5',\n 'UnderParenthesis': '\\u23DD',\n 'Union': '\\u22C3',\n 'UnionPlus': '\\u228E',\n 'uogon': '\\u0173',\n 'Uogon': '\\u0172',\n 'uopf': '\\uD835\\uDD66',\n 'Uopf': '\\uD835\\uDD4C',\n 'uparrow': '\\u2191',\n 'Uparrow': '\\u21D1',\n 'UpArrow': '\\u2191',\n 'UpArrowBar': '\\u2912',\n 'UpArrowDownArrow': '\\u21C5',\n 'updownarrow': '\\u2195',\n 'Updownarrow': '\\u21D5',\n 'UpDownArrow': '\\u2195',\n 'UpEquilibrium': '\\u296E',\n 'upharpoonleft': '\\u21BF',\n 'upharpoonright': '\\u21BE',\n 'uplus': '\\u228E',\n 'UpperLeftArrow': '\\u2196',\n 'UpperRightArrow': '\\u2197',\n 'upsi': '\\u03C5',\n 'Upsi': '\\u03D2',\n 'upsih': '\\u03D2',\n 'upsilon': '\\u03C5',\n 'Upsilon': '\\u03A5',\n 'UpTee': '\\u22A5',\n 'UpTeeArrow': '\\u21A5',\n 'upuparrows': '\\u21C8',\n 'urcorn': '\\u231D',\n 'urcorner': '\\u231D',\n 'urcrop': '\\u230E',\n 'uring': '\\u016F',\n 'Uring': '\\u016E',\n 'urtri': '\\u25F9',\n 'uscr': '\\uD835\\uDCCA',\n 'Uscr': '\\uD835\\uDCB0',\n 'utdot': '\\u22F0',\n 'utilde': '\\u0169',\n 'Utilde': '\\u0168',\n 'utri': '\\u25B5',\n 'utrif': '\\u25B4',\n 'uuarr': '\\u21C8',\n 'uuml': '\\xFC',\n 'Uuml': '\\xDC',\n 'uwangle': '\\u29A7',\n 'vangrt': '\\u299C',\n 'varepsilon': '\\u03F5',\n 'varkappa': '\\u03F0',\n 'varnothing': '\\u2205',\n 'varphi': '\\u03D5',\n 'varpi': '\\u03D6',\n 'varpropto': '\\u221D',\n 'varr': '\\u2195',\n 'vArr': '\\u21D5',\n 'varrho': '\\u03F1',\n 'varsigma': '\\u03C2',\n 'varsubsetneq': '\\u228A\\uFE00',\n 'varsubsetneqq': '\\u2ACB\\uFE00',\n 'varsupsetneq': '\\u228B\\uFE00',\n 'varsupsetneqq': '\\u2ACC\\uFE00',\n 'vartheta': '\\u03D1',\n 'vartriangleleft': '\\u22B2',\n 'vartriangleright': '\\u22B3',\n 'vBar': '\\u2AE8',\n 'Vbar': '\\u2AEB',\n 'vBarv': '\\u2AE9',\n 'vcy': '\\u0432',\n 'Vcy': '\\u0412',\n 'vdash': '\\u22A2',\n 'vDash': '\\u22A8',\n 'Vdash': '\\u22A9',\n 'VDash': '\\u22AB',\n 'Vdashl': '\\u2AE6',\n 'vee': '\\u2228',\n 'Vee': '\\u22C1',\n 'veebar': '\\u22BB',\n 'veeeq': '\\u225A',\n 'vellip': '\\u22EE',\n 'verbar': '|',\n 'Verbar': '\\u2016',\n 'vert': '|',\n 'Vert': '\\u2016',\n 'VerticalBar': '\\u2223',\n 'VerticalLine': '|',\n 'VerticalSeparator': '\\u2758',\n 'VerticalTilde': '\\u2240',\n 'VeryThinSpace': '\\u200A',\n 'vfr': '\\uD835\\uDD33',\n 'Vfr': '\\uD835\\uDD19',\n 'vltri': '\\u22B2',\n 'vnsub': '\\u2282\\u20D2',\n 'vnsup': '\\u2283\\u20D2',\n 'vopf': '\\uD835\\uDD67',\n 'Vopf': '\\uD835\\uDD4D',\n 'vprop': '\\u221D',\n 'vrtri': '\\u22B3',\n 'vscr': '\\uD835\\uDCCB',\n 'Vscr': '\\uD835\\uDCB1',\n 'vsubne': '\\u228A\\uFE00',\n 'vsubnE': '\\u2ACB\\uFE00',\n 'vsupne': '\\u228B\\uFE00',\n 'vsupnE': '\\u2ACC\\uFE00',\n 'Vvdash': '\\u22AA',\n 'vzigzag': '\\u299A',\n 'wcirc': '\\u0175',\n 'Wcirc': '\\u0174',\n 'wedbar': '\\u2A5F',\n 'wedge': '\\u2227',\n 'Wedge': '\\u22C0',\n 'wedgeq': '\\u2259',\n 'weierp': '\\u2118',\n 'wfr': '\\uD835\\uDD34',\n 'Wfr': '\\uD835\\uDD1A',\n 'wopf': '\\uD835\\uDD68',\n 'Wopf': '\\uD835\\uDD4E',\n 'wp': '\\u2118',\n 'wr': '\\u2240',\n 'wreath': '\\u2240',\n 'wscr': '\\uD835\\uDCCC',\n 'Wscr': '\\uD835\\uDCB2',\n 'xcap': '\\u22C2',\n 'xcirc': '\\u25EF',\n 'xcup': '\\u22C3',\n 'xdtri': '\\u25BD',\n 'xfr': '\\uD835\\uDD35',\n 'Xfr': '\\uD835\\uDD1B',\n 'xharr': '\\u27F7',\n 'xhArr': '\\u27FA',\n 'xi': '\\u03BE',\n 'Xi': '\\u039E',\n 'xlarr': '\\u27F5',\n 'xlArr': '\\u27F8',\n 'xmap': '\\u27FC',\n 'xnis': '\\u22FB',\n 'xodot': '\\u2A00',\n 'xopf': '\\uD835\\uDD69',\n 'Xopf': '\\uD835\\uDD4F',\n 'xoplus': '\\u2A01',\n 'xotime': '\\u2A02',\n 'xrarr': '\\u27F6',\n 'xrArr': '\\u27F9',\n 'xscr': '\\uD835\\uDCCD',\n 'Xscr': '\\uD835\\uDCB3',\n 'xsqcup': '\\u2A06',\n 'xuplus': '\\u2A04',\n 'xutri': '\\u25B3',\n 'xvee': '\\u22C1',\n 'xwedge': '\\u22C0',\n 'yacute': '\\xFD',\n 'Yacute': '\\xDD',\n 'yacy': '\\u044F',\n 'YAcy': '\\u042F',\n 'ycirc': '\\u0177',\n 'Ycirc': '\\u0176',\n 'ycy': '\\u044B',\n 'Ycy': '\\u042B',\n 'yen': '\\xA5',\n 'yfr': '\\uD835\\uDD36',\n 'Yfr': '\\uD835\\uDD1C',\n 'yicy': '\\u0457',\n 'YIcy': '\\u0407',\n 'yopf': '\\uD835\\uDD6A',\n 'Yopf': '\\uD835\\uDD50',\n 'yscr': '\\uD835\\uDCCE',\n 'Yscr': '\\uD835\\uDCB4',\n 'yucy': '\\u044E',\n 'YUcy': '\\u042E',\n 'yuml': '\\xFF',\n 'Yuml': '\\u0178',\n 'zacute': '\\u017A',\n 'Zacute': '\\u0179',\n 'zcaron': '\\u017E',\n 'Zcaron': '\\u017D',\n 'zcy': '\\u0437',\n 'Zcy': '\\u0417',\n 'zdot': '\\u017C',\n 'Zdot': '\\u017B',\n 'zeetrf': '\\u2128',\n 'ZeroWidthSpace': '\\u200B',\n 'zeta': '\\u03B6',\n 'Zeta': '\\u0396',\n 'zfr': '\\uD835\\uDD37',\n 'Zfr': '\\u2128',\n 'zhcy': '\\u0436',\n 'ZHcy': '\\u0416',\n 'zigrarr': '\\u21DD',\n 'zopf': '\\uD835\\uDD6B',\n 'Zopf': '\\u2124',\n 'zscr': '\\uD835\\uDCCF',\n 'Zscr': '\\uD835\\uDCB5',\n 'zwj': '\\u200D',\n 'zwnj': '\\u200C'\n };\n var decodeMapLegacy = {\n 'aacute': '\\xE1',\n 'Aacute': '\\xC1',\n 'acirc': '\\xE2',\n 'Acirc': '\\xC2',\n 'acute': '\\xB4',\n 'aelig': '\\xE6',\n 'AElig': '\\xC6',\n 'agrave': '\\xE0',\n 'Agrave': '\\xC0',\n 'amp': '&',\n 'AMP': '&',\n 'aring': '\\xE5',\n 'Aring': '\\xC5',\n 'atilde': '\\xE3',\n 'Atilde': '\\xC3',\n 'auml': '\\xE4',\n 'Auml': '\\xC4',\n 'brvbar': '\\xA6',\n 'ccedil': '\\xE7',\n 'Ccedil': '\\xC7',\n 'cedil': '\\xB8',\n 'cent': '\\xA2',\n 'copy': '\\xA9',\n 'COPY': '\\xA9',\n 'curren': '\\xA4',\n 'deg': '\\xB0',\n 'divide': '\\xF7',\n 'eacute': '\\xE9',\n 'Eacute': '\\xC9',\n 'ecirc': '\\xEA',\n 'Ecirc': '\\xCA',\n 'egrave': '\\xE8',\n 'Egrave': '\\xC8',\n 'eth': '\\xF0',\n 'ETH': '\\xD0',\n 'euml': '\\xEB',\n 'Euml': '\\xCB',\n 'frac12': '\\xBD',\n 'frac14': '\\xBC',\n 'frac34': '\\xBE',\n 'gt': '>',\n 'GT': '>',\n 'iacute': '\\xED',\n 'Iacute': '\\xCD',\n 'icirc': '\\xEE',\n 'Icirc': '\\xCE',\n 'iexcl': '\\xA1',\n 'igrave': '\\xEC',\n 'Igrave': '\\xCC',\n 'iquest': '\\xBF',\n 'iuml': '\\xEF',\n 'Iuml': '\\xCF',\n 'laquo': '\\xAB',\n 'lt': '<',\n 'LT': '<',\n 'macr': '\\xAF',\n 'micro': '\\xB5',\n 'middot': '\\xB7',\n 'nbsp': '\\xA0',\n 'not': '\\xAC',\n 'ntilde': '\\xF1',\n 'Ntilde': '\\xD1',\n 'oacute': '\\xF3',\n 'Oacute': '\\xD3',\n 'ocirc': '\\xF4',\n 'Ocirc': '\\xD4',\n 'ograve': '\\xF2',\n 'Ograve': '\\xD2',\n 'ordf': '\\xAA',\n 'ordm': '\\xBA',\n 'oslash': '\\xF8',\n 'Oslash': '\\xD8',\n 'otilde': '\\xF5',\n 'Otilde': '\\xD5',\n 'ouml': '\\xF6',\n 'Ouml': '\\xD6',\n 'para': '\\xB6',\n 'plusmn': '\\xB1',\n 'pound': '\\xA3',\n 'quot': '\"',\n 'QUOT': '\"',\n 'raquo': '\\xBB',\n 'reg': '\\xAE',\n 'REG': '\\xAE',\n 'sect': '\\xA7',\n 'shy': '\\xAD',\n 'sup1': '\\xB9',\n 'sup2': '\\xB2',\n 'sup3': '\\xB3',\n 'szlig': '\\xDF',\n 'thorn': '\\xFE',\n 'THORN': '\\xDE',\n 'times': '\\xD7',\n 'uacute': '\\xFA',\n 'Uacute': '\\xDA',\n 'ucirc': '\\xFB',\n 'Ucirc': '\\xDB',\n 'ugrave': '\\xF9',\n 'Ugrave': '\\xD9',\n 'uml': '\\xA8',\n 'uuml': '\\xFC',\n 'Uuml': '\\xDC',\n 'yacute': '\\xFD',\n 'Yacute': '\\xDD',\n 'yen': '\\xA5',\n 'yuml': '\\xFF'\n };\n var decodeMapNumeric = {\n '0': '\\uFFFD',\n '128': '\\u20AC',\n '130': '\\u201A',\n '131': '\\u0192',\n '132': '\\u201E',\n '133': '\\u2026',\n '134': '\\u2020',\n '135': '\\u2021',\n '136': '\\u02C6',\n '137': '\\u2030',\n '138': '\\u0160',\n '139': '\\u2039',\n '140': '\\u0152',\n '142': '\\u017D',\n '145': '\\u2018',\n '146': '\\u2019',\n '147': '\\u201C',\n '148': '\\u201D',\n '149': '\\u2022',\n '150': '\\u2013',\n '151': '\\u2014',\n '152': '\\u02DC',\n '153': '\\u2122',\n '154': '\\u0161',\n '155': '\\u203A',\n '156': '\\u0153',\n '158': '\\u017E',\n '159': '\\u0178'\n };\n var invalidReferenceCodePoints = [1, 2, 3, 4, 5, 6, 7, 8, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 64976, 64977, 64978, 64979, 64980, 64981, 64982, 64983, 64984, 64985, 64986, 64987, 64988, 64989, 64990, 64991, 64992, 64993, 64994, 64995, 64996, 64997, 64998, 64999, 65000, 65001, 65002, 65003, 65004, 65005, 65006, 65007, 65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214, 393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894, 720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574, 1048575, 1114110, 1114111];\n\n /*--------------------------------------------------------------------------*/\n\n var stringFromCharCode = String.fromCharCode;\n var object = {};\n var hasOwnProperty = object.hasOwnProperty;\n var has = function (object, propertyName) {\n return hasOwnProperty.call(object, propertyName);\n };\n var contains = function (array, value) {\n var index = -1;\n var length = array.length;\n while (++index < length) {\n if (array[index] == value) {\n return true;\n }\n }\n return false;\n };\n var merge = function (options, defaults) {\n if (!options) {\n return defaults;\n }\n var result = {};\n var key;\n for (key in defaults) {\n // A `hasOwnProperty` check is not needed here, since only recognized\n // option names are used anyway. Any others are ignored.\n result[key] = has(options, key) ? options[key] : defaults[key];\n }\n return result;\n };\n\n // Modified version of `ucs2encode`; see https://mths.be/punycode.\n var codePointToSymbol = function (codePoint, strict) {\n var output = '';\n if (codePoint >= 0xD800 && codePoint <= 0xDFFF || codePoint > 0x10FFFF) {\n // See issue #4:\n // “Otherwise, if the number is in the range 0xD800 to 0xDFFF or is\n // greater than 0x10FFFF, then this is a parse error. Return a U+FFFD\n // REPLACEMENT CHARACTER.”\n if (strict) {\n parseError('character reference outside the permissible Unicode range');\n }\n return '\\uFFFD';\n }\n if (has(decodeMapNumeric, codePoint)) {\n if (strict) {\n parseError('disallowed character reference');\n }\n return decodeMapNumeric[codePoint];\n }\n if (strict && contains(invalidReferenceCodePoints, codePoint)) {\n parseError('disallowed character reference');\n }\n if (codePoint > 0xFFFF) {\n codePoint -= 0x10000;\n output += stringFromCharCode(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n output += stringFromCharCode(codePoint);\n return output;\n };\n var hexEscape = function (codePoint) {\n return '&#x' + codePoint.toString(16).toUpperCase() + ';';\n };\n var decEscape = function (codePoint) {\n return '&#' + codePoint + ';';\n };\n var parseError = function (message) {\n throw Error('Parse error: ' + message);\n };\n\n /*--------------------------------------------------------------------------*/\n\n var encode = function (string, options) {\n options = merge(options, encode.options);\n var strict = options.strict;\n if (strict && regexInvalidRawCodePoint.test(string)) {\n parseError('forbidden code point');\n }\n var encodeEverything = options.encodeEverything;\n var useNamedReferences = options.useNamedReferences;\n var allowUnsafeSymbols = options.allowUnsafeSymbols;\n var escapeCodePoint = options.decimal ? decEscape : hexEscape;\n var escapeBmpSymbol = function (symbol) {\n return escapeCodePoint(symbol.charCodeAt(0));\n };\n if (encodeEverything) {\n // Encode ASCII symbols.\n string = string.replace(regexAsciiWhitelist, function (symbol) {\n // Use named references if requested & possible.\n if (useNamedReferences && has(encodeMap, symbol)) {\n return '&' + encodeMap[symbol] + ';';\n }\n return escapeBmpSymbol(symbol);\n });\n // Shorten a few escapes that represent two symbols, of which at least one\n // is within the ASCII range.\n if (useNamedReferences) {\n string = string.replace(/>\\u20D2/g, '>⃒').replace(/<\\u20D2/g, '<⃒').replace(/fj/g, 'fj');\n }\n // Encode non-ASCII symbols.\n if (useNamedReferences) {\n // Encode non-ASCII symbols that can be replaced with a named reference.\n string = string.replace(regexEncodeNonAscii, function (string) {\n // Note: there is no need to check `has(encodeMap, string)` here.\n return '&' + encodeMap[string] + ';';\n });\n }\n // Note: any remaining non-ASCII symbols are handled outside of the `if`.\n } else if (useNamedReferences) {\n // Apply named character references.\n // Encode `<>\"'&` using named character references.\n if (!allowUnsafeSymbols) {\n string = string.replace(regexEscape, function (string) {\n return '&' + encodeMap[string] + ';'; // no need to check `has()` here\n });\n }\n // Shorten escapes that represent two symbols, of which at least one is\n // `<>\"'&`.\n string = string.replace(/>\\u20D2/g, '>⃒').replace(/<\\u20D2/g, '<⃒');\n // Encode non-ASCII symbols that can be replaced with a named reference.\n string = string.replace(regexEncodeNonAscii, function (string) {\n // Note: there is no need to check `has(encodeMap, string)` here.\n return '&' + encodeMap[string] + ';';\n });\n } else if (!allowUnsafeSymbols) {\n // Encode `<>\"'&` using hexadecimal escapes, now that they’re not handled\n // using named character references.\n string = string.replace(regexEscape, escapeBmpSymbol);\n }\n return string\n // Encode astral symbols.\n .replace(regexAstralSymbols, function ($0) {\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n var high = $0.charCodeAt(0);\n var low = $0.charCodeAt(1);\n var codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000;\n return escapeCodePoint(codePoint);\n })\n // Encode any remaining BMP symbols that are not printable ASCII symbols\n // using a hexadecimal escape.\n .replace(regexBmpWhitelist, escapeBmpSymbol);\n };\n // Expose default options (so they can be overridden globally).\n encode.options = {\n 'allowUnsafeSymbols': false,\n 'encodeEverything': false,\n 'strict': false,\n 'useNamedReferences': false,\n 'decimal': false\n };\n var decode = function (html, options) {\n options = merge(options, decode.options);\n var strict = options.strict;\n if (strict && regexInvalidEntity.test(html)) {\n parseError('malformed character reference');\n }\n return html.replace(regexDecode, function ($0, $1, $2, $3, $4, $5, $6, $7, $8) {\n var codePoint;\n var semicolon;\n var decDigits;\n var hexDigits;\n var reference;\n var next;\n if ($1) {\n reference = $1;\n // Note: there is no need to check `has(decodeMap, reference)`.\n return decodeMap[reference];\n }\n if ($2) {\n // Decode named character references without trailing `;`, e.g. `&`.\n // This is only a parse error if it gets converted to `&`, or if it is\n // followed by `=` in an attribute context.\n reference = $2;\n next = $3;\n if (next && options.isAttributeValue) {\n if (strict && next == '=') {\n parseError('`&` did not start a character reference');\n }\n return $0;\n } else {\n if (strict) {\n parseError('named character reference was not terminated by a semicolon');\n }\n // Note: there is no need to check `has(decodeMapLegacy, reference)`.\n return decodeMapLegacy[reference] + (next || '');\n }\n }\n if ($4) {\n // Decode decimal escapes, e.g. `𝌆`.\n decDigits = $4;\n semicolon = $5;\n if (strict && !semicolon) {\n parseError('character reference was not terminated by a semicolon');\n }\n codePoint = parseInt(decDigits, 10);\n return codePointToSymbol(codePoint, strict);\n }\n if ($6) {\n // Decode hexadecimal escapes, e.g. `𝌆`.\n hexDigits = $6;\n semicolon = $7;\n if (strict && !semicolon) {\n parseError('character reference was not terminated by a semicolon');\n }\n codePoint = parseInt(hexDigits, 16);\n return codePointToSymbol(codePoint, strict);\n }\n\n // If we’re still here, `if ($7)` is implied; it’s an ambiguous\n // ampersand for sure. https://mths.be/notes/ambiguous-ampersands\n if (strict) {\n parseError('named character reference was not terminated by a semicolon');\n }\n return $0;\n });\n };\n // Expose default options (so they can be overridden globally).\n decode.options = {\n 'isAttributeValue': false,\n 'strict': false\n };\n var escape = function (string) {\n return string.replace(regexEscape, function ($0) {\n // Note: there is no need to check `has(escapeMap, $0)` here.\n return escapeMap[$0];\n });\n };\n\n /*--------------------------------------------------------------------------*/\n\n var he = {\n 'version': '1.2.0',\n 'encode': encode,\n 'decode': decode,\n 'escape': escape,\n 'unescape': decode\n };\n\n // Some AMD build optimizers, like r.js, check for specific condition patterns\n // like the following:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n define(function () {\n return he;\n });\n } else if (freeExports && !freeExports.nodeType) {\n if (freeModule) {\n // in Node.js, io.js, or RingoJS v0.8.0+\n freeModule.exports = he;\n } else {\n // in Narwhal or RingoJS v0.7.0-\n for (var key in he) {\n has(he, key) && (freeExports[key] = he[key]);\n }\n }\n } else {\n // in Rhino or a web browser\n root.he = he;\n }\n})(this);","const set = require('regenerate')(0xB9, 0x19DA, 0x2070, 0x2189, 0x2CFD);\nset.addRange(0xB2, 0xB3).addRange(0xBC, 0xBE).addRange(0x9F4, 0x9F9).addRange(0xB72, 0xB77).addRange(0xBF0, 0xBF2).addRange(0xC78, 0xC7E).addRange(0xD58, 0xD5E).addRange(0xD70, 0xD78).addRange(0xF2A, 0xF33).addRange(0x1369, 0x137C).addRange(0x17F0, 0x17F9).addRange(0x2074, 0x2079).addRange(0x2080, 0x2089).addRange(0x2150, 0x215F).addRange(0x2460, 0x249B).addRange(0x24EA, 0x24FF).addRange(0x2776, 0x2793).addRange(0x3192, 0x3195).addRange(0x3220, 0x3229).addRange(0x3248, 0x324F).addRange(0x3251, 0x325F).addRange(0x3280, 0x3289).addRange(0x32B1, 0x32BF).addRange(0xA830, 0xA835).addRange(0x10107, 0x10133).addRange(0x10175, 0x10178).addRange(0x1018A, 0x1018B).addRange(0x102E1, 0x102FB).addRange(0x10320, 0x10323).addRange(0x10858, 0x1085F).addRange(0x10879, 0x1087F).addRange(0x108A7, 0x108AF).addRange(0x108FB, 0x108FF).addRange(0x10916, 0x1091B).addRange(0x109BC, 0x109BD).addRange(0x109C0, 0x109CF).addRange(0x109D2, 0x109FF).addRange(0x10A40, 0x10A48).addRange(0x10A7D, 0x10A7E).addRange(0x10A9D, 0x10A9F).addRange(0x10AEB, 0x10AEF).addRange(0x10B58, 0x10B5F).addRange(0x10B78, 0x10B7F).addRange(0x10BA9, 0x10BAF).addRange(0x10CFA, 0x10CFF).addRange(0x10E60, 0x10E7E).addRange(0x10F1D, 0x10F26).addRange(0x10F51, 0x10F54).addRange(0x10FC5, 0x10FCB).addRange(0x11052, 0x11065).addRange(0x111E1, 0x111F4);\nset.addRange(0x1173A, 0x1173B).addRange(0x118EA, 0x118F2).addRange(0x11C5A, 0x11C6C).addRange(0x11FC0, 0x11FD4).addRange(0x16B5B, 0x16B61).addRange(0x16E80, 0x16E96).addRange(0x1D2E0, 0x1D2F3).addRange(0x1D360, 0x1D378).addRange(0x1E8C7, 0x1E8CF).addRange(0x1EC71, 0x1ECAB).addRange(0x1ECAD, 0x1ECAF).addRange(0x1ECB1, 0x1ECB4).addRange(0x1ED01, 0x1ED2D).addRange(0x1ED2F, 0x1ED3D).addRange(0x1F100, 0x1F10C);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x10B40, 0x10B55).addRange(0x10B58, 0x10B5F);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x10107, 0x10133).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767);\nmodule.exports = set;","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","const set = require('regenerate')();\nset.addRange(0x10330, 0x1034A);\nmodule.exports = set;","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","const set = require('regenerate')();\nset.addRange(0x2800, 0x28FF);\nmodule.exports = set;","const set = require('regenerate')(0xFA11, 0xFA1F, 0xFA21);\nset.addRange(0x3400, 0x4DBF).addRange(0x4E00, 0x9FFF).addRange(0xFA0E, 0xFA0F).addRange(0xFA13, 0xFA14).addRange(0xFA23, 0xFA24).addRange(0xFA27, 0xFA29).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B738).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x30000, 0x3134A);\nmodule.exports = set;","const preferDefault = m => (m && m.default) || m\n\nif (process.env.BUILD_STAGE === `develop`) {\n module.exports = preferDefault(require(`./public-page-renderer-dev`))\n} else if (process.env.BUILD_STAGE === `build-javascript`) {\n module.exports = preferDefault(require(`./public-page-renderer-prod`))\n} else {\n module.exports = () => null\n}\n","const set = require('regenerate')(0x1093F);\nset.addRange(0x10920, 0x10939);\nmodule.exports = set;","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","const set = require('regenerate')();\nset.addRange(0x10B60, 0x10B72).addRange(0x10B78, 0x10B7F);\nmodule.exports = set;","function capitalize(string, opts) {\n opts = normalizeOptions(opts);\n if (!opts.preserve) {\n string = string.toLowerCase();\n }\n return string.charAt(0).toUpperCase() + string.substring(1);\n}\n\n// a QUOTE character immediately followed by a word character\nvar QUOTE = /['\"`’]/;\nvar WORD = /[0-9a-zA-Z\\u00C0-\\u017F\\u0400-\\u04FF]/;\ncapitalize.words = function (string, opts) {\n opts = normalizeOptions(opts);\n if (!opts.preserve) {\n string = string.toLowerCase();\n }\n var startOfWord = 0;\n var nonWord = /[^0-9a-zA-Z\\u00C0-\\u017F\\u0400-\\u04FF]+|$/g;\n var match;\n var out = \"\";\n var count = 0;\n while (match = nonWord.exec(string)) {\n var sep = match[0];\n var sepStart = nonWord.lastIndex - sep.length;\n if (QUOTE.test(string[sepStart]) && WORD.test(string[sepStart + 1])) {\n // don't capitalize after an embedded quote\n continue;\n }\n var word = string.substring(startOfWord, nonWord.lastIndex - sep.length);\n if (QUOTE.test(word[0])) {\n // strip leading quote\n out += word[0];\n word = word.substring(1);\n }\n if (typeof opts.skipWord === 'function' && opts.skipWord(word, count)) {\n out += word;\n } else {\n out += capitalize(word, opts);\n }\n out += sep;\n startOfWord = nonWord.lastIndex;\n count++;\n if (startOfWord == string.length) {\n break;\n }\n }\n return out;\n};\nfunction normalizeOptions(opts) {\n if (!opts) {\n return {\n preserve: false\n };\n }\n if (typeof opts === 'boolean') {\n return {\n preserve: opts\n };\n }\n if (opts.skipWord instanceof RegExp) {\n const rgx = opts.skipWord;\n opts.skipWord = function (word, position) {\n return position > 0 && rgx.test(word);\n };\n }\n return opts || {};\n}\nmodule.exports = capitalize;","const set = require('regenerate')();\nset.addRange(0xA880, 0xA8C5).addRange(0xA8CE, 0xA8D9);\nmodule.exports = set;","const set = require('regenerate')(0x20, 0x85, 0xA0, 0x1680, 0x202F, 0x205F, 0x3000);\nset.addRange(0x9, 0xD).addRange(0x2000, 0x200A).addRange(0x2028, 0x2029);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x1D800, 0x1DA8B).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF);\nmodule.exports = set;","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","const set = require('regenerate')(0x61F, 0x640);\nset.addRange(0x1E900, 0x1E94B).addRange(0x1E950, 0x1E959).addRange(0x1E95E, 0x1E95F);\nmodule.exports = set;","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","const set = require('regenerate')(0xB9C, 0xBD0, 0xBD7, 0x11FFF);\nset.addRange(0xB82, 0xB83).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xBBE, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCD).addRange(0xBE6, 0xBFA).addRange(0x11FC0, 0x11FF1);\nmodule.exports = set;","var convert = require('./convert'),\n func = convert('set', require('../set'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","const set = require('regenerate')(0x23, 0x2A, 0x200D, 0x20E3, 0xFE0F);\nset.addRange(0x30, 0x39).addRange(0x1F1E6, 0x1F1FF).addRange(0x1F3FB, 0x1F3FF).addRange(0x1F9B0, 0x1F9B3).addRange(0xE0020, 0xE007F);\nmodule.exports = set;","const set = require('regenerate')(0x1093F);\nset.addRange(0x10920, 0x10939);\nmodule.exports = set;","const set = require('regenerate')(0x640);\nset.addRange(0x10AC0, 0x10AE6).addRange(0x10AEB, 0x10AF6);\nmodule.exports = set;","const set = require('regenerate')(0x16FE0);\nset.addRange(0x17000, 0x187F7).addRange(0x18800, 0x18AFF).addRange(0x18D00, 0x18D08);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x11700, 0x1171A).addRange(0x1171D, 0x1172B).addRange(0x11730, 0x11746);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x1E290, 0x1E2AE);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x1950, 0x196D).addRange(0x1970, 0x1974);\nmodule.exports = set;","var convert = require('./convert'),\n func = convert('defaultTo', require('../defaultTo'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _gatsby = require(\"gatsby\");\n\nvar _getManifestPathname = _interopRequireDefault(require(\"./get-manifest-pathname\"));\n\n/* global __MANIFEST_PLUGIN_HAS_LOCALISATION__ */\n// when we don't have localisation in our manifest, we tree shake everything away\nif (__MANIFEST_PLUGIN_HAS_LOCALISATION__) {\n exports.onRouteUpdate = function (_ref, pluginOptions) {\n var location = _ref.location;\n var localize = pluginOptions.localize;\n var manifestFilename = (0, _getManifestPathname.default)(location.pathname, localize);\n var manifestEl = document.head.querySelector(\"link[rel=\\\"manifest\\\"]\");\n\n if (manifestEl) {\n manifestEl.setAttribute(\"href\", (0, _gatsby.withPrefix)(manifestFilename));\n }\n };\n}","/*\n Why commonjs and not ES imports/exports?\n\n This module is used to alias `create-react-context` package, but drop the the actual implementation part\n because Gatsby requires version of react that has implementatoin baked in.\n \n Package source is using ES modules:\n - https://github.com/jamiebuilds/create-react-context/blob/v0.3.0/src/index.js\n \n But to build this package `babel-plugin-add-module-exports` is used ( https://www.npmjs.com/package/babel-plugin-add-module-exports).\n Which result in both `module.exports` and `exports.default` being set to same thing.\n\n We don't use that babel plugin so we only have `exports.default`.\n\n This cause problems in various 3rd party react components that rely on `module.exports` being set.\n See https://github.com/gatsbyjs/gatsby/issues/23645 for example of it.\n \n Instead of adding same babel plugin we mimic output here. Adding babel plugin just for this would:\n a) unnecesairly slow down compilation for all other files (if we just apply it everywhere)\n b) or complicate babel-loader configuration with overwrite specifically for this file\n*/\n\nconst { createContext } = require(`react`)\n\nmodule.exports = createContext\nmodule.exports.default = createContext\n","const set = require('regenerate')();\nset.addRange(0x10B60, 0x10B72).addRange(0x10B78, 0x10B7F);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x3E2, 0x3EF).addRange(0x2C80, 0x2CF3).addRange(0x2CF9, 0x2CFF).addRange(0x102E0, 0x102FB);\nmodule.exports = set;","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","const set = require('regenerate')(0x2028);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x10F70, 0x10F89);\nmodule.exports = set;","const set = require('regenerate')(0x1258, 0x12C0);\nset.addRange(0x1200, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x135D, 0x137C).addRange(0x1380, 0x1399).addRange(0x2D80, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE);\nmodule.exports = set;","var convert = require('./convert'),\n func = convert('matchesProperty', require('../matchesProperty'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","const set = require('regenerate')(0x2A, 0x2C, 0x5C, 0xA1, 0xA7, 0xBF, 0x37E, 0x387, 0x589, 0x5C0, 0x5C3, 0x5C6, 0x61B, 0x6D4, 0x85E, 0x970, 0x9FD, 0xA76, 0xAF0, 0xC77, 0xC84, 0xDF4, 0xE4F, 0xF14, 0xF85, 0x10FB, 0x166E, 0x1CD3, 0x2053, 0x2D70, 0x2E0B, 0x2E1B, 0x2E41, 0x303D, 0x30FB, 0xA673, 0xA67E, 0xA8FC, 0xA95F, 0xABEB, 0xFE19, 0xFE30, 0xFE68, 0xFF0A, 0xFF0C, 0xFF3C, 0xFF61, 0x1039F, 0x103D0, 0x1056F, 0x10857, 0x1091F, 0x1093F, 0x10A7F, 0x111CD, 0x111DB, 0x112A9, 0x1145D, 0x114C6, 0x116B9, 0x1183B, 0x119E2, 0x11FFF, 0x16AF5, 0x16B44, 0x16FE2, 0x1BC9F);\nset.addRange(0x21, 0x23).addRange(0x25, 0x27).addRange(0x2E, 0x2F).addRange(0x3A, 0x3B).addRange(0x3F, 0x40).addRange(0xB6, 0xB7).addRange(0x55A, 0x55F).addRange(0x5F3, 0x5F4).addRange(0x609, 0x60A).addRange(0x60C, 0x60D).addRange(0x61D, 0x61F).addRange(0x66A, 0x66D).addRange(0x700, 0x70D).addRange(0x7F7, 0x7F9).addRange(0x830, 0x83E).addRange(0x964, 0x965).addRange(0xE5A, 0xE5B).addRange(0xF04, 0xF12).addRange(0xFD0, 0xFD4).addRange(0xFD9, 0xFDA).addRange(0x104A, 0x104F).addRange(0x1360, 0x1368).addRange(0x16EB, 0x16ED).addRange(0x1735, 0x1736).addRange(0x17D4, 0x17D6).addRange(0x17D8, 0x17DA).addRange(0x1800, 0x1805).addRange(0x1807, 0x180A).addRange(0x1944, 0x1945).addRange(0x1A1E, 0x1A1F).addRange(0x1AA0, 0x1AA6).addRange(0x1AA8, 0x1AAD).addRange(0x1B5A, 0x1B60).addRange(0x1B7D, 0x1B7E).addRange(0x1BFC, 0x1BFF).addRange(0x1C3B, 0x1C3F).addRange(0x1C7E, 0x1C7F).addRange(0x1CC0, 0x1CC7).addRange(0x2016, 0x2017).addRange(0x2020, 0x2027).addRange(0x2030, 0x2038).addRange(0x203B, 0x203E).addRange(0x2041, 0x2043).addRange(0x2047, 0x2051).addRange(0x2055, 0x205E).addRange(0x2CF9, 0x2CFC).addRange(0x2CFE, 0x2CFF).addRange(0x2E00, 0x2E01).addRange(0x2E06, 0x2E08).addRange(0x2E0E, 0x2E16).addRange(0x2E18, 0x2E19);\nset.addRange(0x2E1E, 0x2E1F).addRange(0x2E2A, 0x2E2E).addRange(0x2E30, 0x2E39).addRange(0x2E3C, 0x2E3F).addRange(0x2E43, 0x2E4F).addRange(0x2E52, 0x2E54).addRange(0x3001, 0x3003).addRange(0xA4FE, 0xA4FF).addRange(0xA60D, 0xA60F).addRange(0xA6F2, 0xA6F7).addRange(0xA874, 0xA877).addRange(0xA8CE, 0xA8CF).addRange(0xA8F8, 0xA8FA).addRange(0xA92E, 0xA92F).addRange(0xA9C1, 0xA9CD).addRange(0xA9DE, 0xA9DF).addRange(0xAA5C, 0xAA5F).addRange(0xAADE, 0xAADF).addRange(0xAAF0, 0xAAF1).addRange(0xFE10, 0xFE16).addRange(0xFE45, 0xFE46).addRange(0xFE49, 0xFE4C).addRange(0xFE50, 0xFE52).addRange(0xFE54, 0xFE57).addRange(0xFE5F, 0xFE61).addRange(0xFE6A, 0xFE6B).addRange(0xFF01, 0xFF03).addRange(0xFF05, 0xFF07).addRange(0xFF0E, 0xFF0F).addRange(0xFF1A, 0xFF1B).addRange(0xFF1F, 0xFF20).addRange(0xFF64, 0xFF65).addRange(0x10100, 0x10102).addRange(0x10A50, 0x10A58).addRange(0x10AF0, 0x10AF6).addRange(0x10B39, 0x10B3F).addRange(0x10B99, 0x10B9C).addRange(0x10F55, 0x10F59).addRange(0x10F86, 0x10F89).addRange(0x11047, 0x1104D).addRange(0x110BB, 0x110BC).addRange(0x110BE, 0x110C1).addRange(0x11140, 0x11143).addRange(0x11174, 0x11175).addRange(0x111C5, 0x111C8).addRange(0x111DD, 0x111DF).addRange(0x11238, 0x1123D).addRange(0x1144B, 0x1144F).addRange(0x1145A, 0x1145B).addRange(0x115C1, 0x115D7).addRange(0x11641, 0x11643);\nset.addRange(0x11660, 0x1166C).addRange(0x1173C, 0x1173E).addRange(0x11944, 0x11946).addRange(0x11A3F, 0x11A46).addRange(0x11A9A, 0x11A9C).addRange(0x11A9E, 0x11AA2).addRange(0x11C41, 0x11C45).addRange(0x11C70, 0x11C71).addRange(0x11EF7, 0x11EF8).addRange(0x12470, 0x12474).addRange(0x12FF1, 0x12FF2).addRange(0x16A6E, 0x16A6F).addRange(0x16B37, 0x16B3B).addRange(0x16E97, 0x16E9A).addRange(0x1DA87, 0x1DA8B).addRange(0x1E95E, 0x1E95F);\nmodule.exports = set;","import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`On macOS, Jsonnet Bundler is best installed using `}{`brew`}{`:`}

      \n
      {`$ brew install jsonnet-bundler`}
      \n

      {`This downloads the most recent version of Jsonnet Bundler and installs it.`}

      {`\n`}{`Also, Jsonnet Bundler is automatically kept up to date as part of `}{`brew upgrade`}{`.`}

      \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n ","const set = require('regenerate')(0x38C, 0x5BE, 0x5C0, 0x5C3, 0x5C6, 0x61B, 0x6DE, 0x6E9, 0x710, 0x7B1, 0x81A, 0x824, 0x828, 0x85E, 0x93B, 0x9B2, 0x9BD, 0x9CE, 0xA03, 0xA5E, 0xA76, 0xA83, 0xAC9, 0xAD0, 0xAF9, 0xB3D, 0xB40, 0xB83, 0xB9C, 0xBBF, 0xBD0, 0xC3D, 0xC5D, 0xD3D, 0xDBD, 0xE84, 0xEA5, 0xEBD, 0xEC6, 0xF36, 0xF38, 0xF7F, 0xF85, 0x1031, 0x1038, 0x10C7, 0x10CD, 0x1258, 0x12C0, 0x1715, 0x17B6, 0x18AA, 0x1940, 0x1A57, 0x1A61, 0x1B3B, 0x1BAA, 0x1BE7, 0x1BEE, 0x1CD3, 0x1CE1, 0x1CFA, 0x1F59, 0x1F5B, 0x1F5D, 0x2D27, 0x2D2D, 0xA673, 0xA7D3, 0xAA4D, 0xAAB1, 0xAAC0, 0xAAC2, 0xFB1D, 0xFB3E, 0xFDCF, 0x101A0, 0x10808, 0x1083C, 0x1093F, 0x10EAD, 0x11000, 0x11075, 0x1112C, 0x11235, 0x11288, 0x1133D, 0x1133F, 0x11350, 0x11445, 0x1145D, 0x114B9, 0x114BE, 0x114C1, 0x115BE, 0x1163E, 0x116AC, 0x116B6, 0x11726, 0x11838, 0x1183B, 0x11909, 0x1193D, 0x11A00, 0x11A50, 0x11A97, 0x11C3E, 0x11CA9, 0x11CB1, 0x11CB4, 0x11D46, 0x11D96, 0x11D98, 0x11FB0, 0x16AF5, 0x1BC9C, 0x1BC9F, 0x1D166, 0x1D245, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1E2FF, 0x1E94B, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E, 0x1F7F0);\nset.addRange(0x20, 0x7E).addRange(0xA0, 0xAC).addRange(0xAE, 0x2FF).addRange(0x370, 0x377).addRange(0x37A, 0x37F).addRange(0x384, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x482).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x559, 0x58A).addRange(0x58D, 0x58F).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F4).addRange(0x606, 0x60F).addRange(0x61D, 0x64A).addRange(0x660, 0x66F).addRange(0x671, 0x6D5).addRange(0x6E5, 0x6E6).addRange(0x6EE, 0x70D).addRange(0x712, 0x72F).addRange(0x74D, 0x7A5).addRange(0x7C0, 0x7EA).addRange(0x7F4, 0x7FA).addRange(0x7FE, 0x815).addRange(0x830, 0x83E).addRange(0x840, 0x858).addRange(0x860, 0x86A).addRange(0x870, 0x88E).addRange(0x8A0, 0x8C9).addRange(0x903, 0x939).addRange(0x93D, 0x940).addRange(0x949, 0x94C).addRange(0x94E, 0x950).addRange(0x958, 0x961).addRange(0x964, 0x980).addRange(0x982, 0x983).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9BF, 0x9C0).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CC).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E1).addRange(0x9E6, 0x9FD).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28);\nset.addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33).addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA3E, 0xA40).addRange(0xA59, 0xA5C).addRange(0xA66, 0xA6F).addRange(0xA72, 0xA74).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xABD, 0xAC0).addRange(0xACB, 0xACC).addRange(0xAE0, 0xAE1).addRange(0xAE6, 0xAF1).addRange(0xB02, 0xB03).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4C).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB61).addRange(0xB66, 0xB77).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xBC1, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCC).addRange(0xBE6, 0xBFA).addRange(0xC01, 0xC03).addRange(0xC05, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC41, 0xC44).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC61).addRange(0xC66, 0xC6F);\nset.addRange(0xC77, 0xC80).addRange(0xC82, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCBD, 0xCBE).addRange(0xCC0, 0xCC1).addRange(0xCC3, 0xCC4).addRange(0xCC7, 0xCC8).addRange(0xCCA, 0xCCB).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE1).addRange(0xCE6, 0xCEF).addRange(0xCF1, 0xCF2).addRange(0xD02, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD3A).addRange(0xD3F, 0xD40).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4C).addRange(0xD4E, 0xD4F).addRange(0xD54, 0xD56).addRange(0xD58, 0xD61).addRange(0xD66, 0xD7F).addRange(0xD82, 0xD83).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6).addRange(0xDD0, 0xDD1).addRange(0xDD8, 0xDDE).addRange(0xDE6, 0xDEF).addRange(0xDF2, 0xDF4).addRange(0xE01, 0xE30).addRange(0xE32, 0xE33).addRange(0xE3F, 0xE46).addRange(0xE4F, 0xE5B).addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEB0).addRange(0xEB2, 0xEB3).addRange(0xEC0, 0xEC4).addRange(0xED0, 0xED9).addRange(0xEDC, 0xEDF).addRange(0xF00, 0xF17).addRange(0xF1A, 0xF34).addRange(0xF3A, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF88, 0xF8C);\nset.addRange(0xFBE, 0xFC5).addRange(0xFC7, 0xFCC).addRange(0xFCE, 0xFDA).addRange(0x1000, 0x102C).addRange(0x103B, 0x103C).addRange(0x103F, 0x1057).addRange(0x105A, 0x105D).addRange(0x1061, 0x1070).addRange(0x1075, 0x1081).addRange(0x1083, 0x1084).addRange(0x1087, 0x108C).addRange(0x108E, 0x109C).addRange(0x109E, 0x10C5).addRange(0x10D0, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x1360, 0x137C).addRange(0x1380, 0x1399).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1400, 0x169C).addRange(0x16A0, 0x16F8).addRange(0x1700, 0x1711).addRange(0x171F, 0x1731).addRange(0x1734, 0x1736).addRange(0x1740, 0x1751).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1780, 0x17B3).addRange(0x17BE, 0x17C5).addRange(0x17C7, 0x17C8).addRange(0x17D4, 0x17DC).addRange(0x17E0, 0x17E9).addRange(0x17F0, 0x17F9).addRange(0x1800, 0x180A).addRange(0x1810, 0x1819).addRange(0x1820, 0x1878).addRange(0x1880, 0x1884).addRange(0x1887, 0x18A8).addRange(0x18B0, 0x18F5);\nset.addRange(0x1900, 0x191E).addRange(0x1923, 0x1926).addRange(0x1929, 0x192B).addRange(0x1930, 0x1931).addRange(0x1933, 0x1938).addRange(0x1944, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x19D0, 0x19DA).addRange(0x19DE, 0x1A16).addRange(0x1A19, 0x1A1A).addRange(0x1A1E, 0x1A55).addRange(0x1A63, 0x1A64).addRange(0x1A6D, 0x1A72).addRange(0x1A80, 0x1A89).addRange(0x1A90, 0x1A99).addRange(0x1AA0, 0x1AAD).addRange(0x1B04, 0x1B33).addRange(0x1B3D, 0x1B41).addRange(0x1B43, 0x1B4C).addRange(0x1B50, 0x1B6A).addRange(0x1B74, 0x1B7E).addRange(0x1B82, 0x1BA1).addRange(0x1BA6, 0x1BA7).addRange(0x1BAE, 0x1BE5).addRange(0x1BEA, 0x1BEC).addRange(0x1BF2, 0x1BF3).addRange(0x1BFC, 0x1C2B).addRange(0x1C34, 0x1C35).addRange(0x1C3B, 0x1C49).addRange(0x1C4D, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CC7).addRange(0x1CE9, 0x1CEC).addRange(0x1CEE, 0x1CF3).addRange(0x1CF5, 0x1CF7).addRange(0x1D00, 0x1DBF).addRange(0x1E00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FC4).addRange(0x1FC6, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FDD, 0x1FEF).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFE);\nset.addRange(0x2000, 0x200A).addRange(0x2010, 0x2027).addRange(0x202F, 0x205F).addRange(0x2070, 0x2071).addRange(0x2074, 0x208E).addRange(0x2090, 0x209C).addRange(0x20A0, 0x20C0).addRange(0x2100, 0x218B).addRange(0x2190, 0x2426).addRange(0x2440, 0x244A).addRange(0x2460, 0x2B73).addRange(0x2B76, 0x2B95).addRange(0x2B97, 0x2CEE).addRange(0x2CF2, 0x2CF3).addRange(0x2CF9, 0x2D25).addRange(0x2D30, 0x2D67).addRange(0x2D6F, 0x2D70).addRange(0x2D80, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x2E00, 0x2E5D).addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5).addRange(0x2FF0, 0x2FFB).addRange(0x3000, 0x3029).addRange(0x3030, 0x303F).addRange(0x3041, 0x3096).addRange(0x309B, 0x30FF).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x3190, 0x31E3).addRange(0x31F0, 0x321E).addRange(0x3220, 0xA48C).addRange(0xA490, 0xA4C6).addRange(0xA4D0, 0xA62B).addRange(0xA640, 0xA66E).addRange(0xA67E, 0xA69D).addRange(0xA6A0, 0xA6EF).addRange(0xA6F2, 0xA6F7).addRange(0xA700, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA801).addRange(0xA803, 0xA805);\nset.addRange(0xA807, 0xA80A).addRange(0xA80C, 0xA824).addRange(0xA827, 0xA82B).addRange(0xA830, 0xA839).addRange(0xA840, 0xA877).addRange(0xA880, 0xA8C3).addRange(0xA8CE, 0xA8D9).addRange(0xA8F2, 0xA8FE).addRange(0xA900, 0xA925).addRange(0xA92E, 0xA946).addRange(0xA952, 0xA953).addRange(0xA95F, 0xA97C).addRange(0xA983, 0xA9B2).addRange(0xA9B4, 0xA9B5).addRange(0xA9BA, 0xA9BB).addRange(0xA9BE, 0xA9CD).addRange(0xA9CF, 0xA9D9).addRange(0xA9DE, 0xA9E4).addRange(0xA9E6, 0xA9FE).addRange(0xAA00, 0xAA28).addRange(0xAA2F, 0xAA30).addRange(0xAA33, 0xAA34).addRange(0xAA40, 0xAA42).addRange(0xAA44, 0xAA4B).addRange(0xAA50, 0xAA59).addRange(0xAA5C, 0xAA7B).addRange(0xAA7D, 0xAAAF).addRange(0xAAB5, 0xAAB6).addRange(0xAAB9, 0xAABD).addRange(0xAADB, 0xAAEB).addRange(0xAAEE, 0xAAF5).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xAB30, 0xAB6B).addRange(0xAB70, 0xABE4).addRange(0xABE6, 0xABE7).addRange(0xABE9, 0xABEC).addRange(0xABF0, 0xABF9).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1F, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41);\nset.addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBC2).addRange(0xFBD3, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFF).addRange(0xFE10, 0xFE19).addRange(0xFE30, 0xFE52).addRange(0xFE54, 0xFE66).addRange(0xFE68, 0xFE6B).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0xFF01, 0xFF9D).addRange(0xFFA0, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0xFFE0, 0xFFE6).addRange(0xFFE8, 0xFFEE).addRange(0xFFFC, 0xFFFD).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10100, 0x10102).addRange(0x10107, 0x10133).addRange(0x10137, 0x1018E).addRange(0x10190, 0x1019C).addRange(0x101D0, 0x101FC).addRange(0x10280, 0x1029C).addRange(0x102A0, 0x102D0).addRange(0x102E1, 0x102FB).addRange(0x10300, 0x10323).addRange(0x1032D, 0x1034A).addRange(0x10350, 0x10375).addRange(0x10380, 0x1039D).addRange(0x1039F, 0x103C3).addRange(0x103C8, 0x103D5).addRange(0x10400, 0x1049D).addRange(0x104A0, 0x104A9).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x1056F, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595);\nset.addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10857, 0x1089E).addRange(0x108A7, 0x108AF).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x108FB, 0x1091B).addRange(0x1091F, 0x10939).addRange(0x10980, 0x109B7).addRange(0x109BC, 0x109CF).addRange(0x109D2, 0x10A00).addRange(0x10A10, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A40, 0x10A48).addRange(0x10A50, 0x10A58).addRange(0x10A60, 0x10A9F).addRange(0x10AC0, 0x10AE4).addRange(0x10AEB, 0x10AF6).addRange(0x10B00, 0x10B35).addRange(0x10B39, 0x10B55).addRange(0x10B58, 0x10B72).addRange(0x10B78, 0x10B91).addRange(0x10B99, 0x10B9C).addRange(0x10BA9, 0x10BAF).addRange(0x10C00, 0x10C48).addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10CFA, 0x10D23).addRange(0x10D30, 0x10D39).addRange(0x10E60, 0x10E7E).addRange(0x10E80, 0x10EA9).addRange(0x10EB0, 0x10EB1).addRange(0x10F00, 0x10F27).addRange(0x10F30, 0x10F45).addRange(0x10F51, 0x10F59).addRange(0x10F70, 0x10F81).addRange(0x10F86, 0x10F89).addRange(0x10FB0, 0x10FCB);\nset.addRange(0x10FE0, 0x10FF6).addRange(0x11002, 0x11037).addRange(0x11047, 0x1104D).addRange(0x11052, 0x1106F).addRange(0x11071, 0x11072).addRange(0x11082, 0x110B2).addRange(0x110B7, 0x110B8).addRange(0x110BB, 0x110BC).addRange(0x110BE, 0x110C1).addRange(0x110D0, 0x110E8).addRange(0x110F0, 0x110F9).addRange(0x11103, 0x11126).addRange(0x11136, 0x11147).addRange(0x11150, 0x11172).addRange(0x11174, 0x11176).addRange(0x11182, 0x111B5).addRange(0x111BF, 0x111C8).addRange(0x111CD, 0x111CE).addRange(0x111D0, 0x111DF).addRange(0x111E1, 0x111F4).addRange(0x11200, 0x11211).addRange(0x11213, 0x1122E).addRange(0x11232, 0x11233).addRange(0x11238, 0x1123D).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A9).addRange(0x112B0, 0x112DE).addRange(0x112E0, 0x112E2).addRange(0x112F0, 0x112F9).addRange(0x11302, 0x11303).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x11341, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134D).addRange(0x1135D, 0x11363).addRange(0x11400, 0x11437).addRange(0x11440, 0x11441).addRange(0x11447, 0x1145B).addRange(0x1145F, 0x11461).addRange(0x11480, 0x114AF).addRange(0x114B1, 0x114B2).addRange(0x114BB, 0x114BC).addRange(0x114C4, 0x114C7).addRange(0x114D0, 0x114D9);\nset.addRange(0x11580, 0x115AE).addRange(0x115B0, 0x115B1).addRange(0x115B8, 0x115BB).addRange(0x115C1, 0x115DB).addRange(0x11600, 0x11632).addRange(0x1163B, 0x1163C).addRange(0x11641, 0x11644).addRange(0x11650, 0x11659).addRange(0x11660, 0x1166C).addRange(0x11680, 0x116AA).addRange(0x116AE, 0x116AF).addRange(0x116B8, 0x116B9).addRange(0x116C0, 0x116C9).addRange(0x11700, 0x1171A).addRange(0x11720, 0x11721).addRange(0x11730, 0x11746).addRange(0x11800, 0x1182E).addRange(0x118A0, 0x118F2).addRange(0x118FF, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x1192F).addRange(0x11931, 0x11935).addRange(0x11937, 0x11938).addRange(0x1193F, 0x11942).addRange(0x11944, 0x11946).addRange(0x11950, 0x11959).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D3).addRange(0x119DC, 0x119DF).addRange(0x119E1, 0x119E4).addRange(0x11A0B, 0x11A32).addRange(0x11A39, 0x11A3A).addRange(0x11A3F, 0x11A46).addRange(0x11A57, 0x11A58).addRange(0x11A5C, 0x11A89).addRange(0x11A9A, 0x11AA2).addRange(0x11AB0, 0x11AF8).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C2F).addRange(0x11C40, 0x11C45).addRange(0x11C50, 0x11C6C).addRange(0x11C70, 0x11C8F).addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D30).addRange(0x11D50, 0x11D59).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D8E).addRange(0x11D93, 0x11D94);\nset.addRange(0x11DA0, 0x11DA9).addRange(0x11EE0, 0x11EF2).addRange(0x11EF5, 0x11EF8).addRange(0x11FC0, 0x11FF1).addRange(0x11FFF, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12470, 0x12474).addRange(0x12480, 0x12543).addRange(0x12F90, 0x12FF2).addRange(0x13000, 0x1342E).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A60, 0x16A69).addRange(0x16A6E, 0x16ABE).addRange(0x16AC0, 0x16AC9).addRange(0x16AD0, 0x16AED).addRange(0x16B00, 0x16B2F).addRange(0x16B37, 0x16B45).addRange(0x16B50, 0x16B59).addRange(0x16B5B, 0x16B61).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16E40, 0x16E9A).addRange(0x16F00, 0x16F4A).addRange(0x16F50, 0x16F87).addRange(0x16F93, 0x16F9F).addRange(0x16FE0, 0x16FE3).addRange(0x16FF0, 0x16FF1).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B000, 0x1B122).addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167).addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1CF50, 0x1CFC3).addRange(0x1D000, 0x1D0F5).addRange(0x1D100, 0x1D126).addRange(0x1D129, 0x1D164).addRange(0x1D16A, 0x1D16D).addRange(0x1D183, 0x1D184).addRange(0x1D18C, 0x1D1A9).addRange(0x1D1AE, 0x1D1EA);\nset.addRange(0x1D200, 0x1D241).addRange(0x1D2E0, 0x1D2F3).addRange(0x1D300, 0x1D356).addRange(0x1D360, 0x1D378).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D7CB).addRange(0x1D7CE, 0x1D9FF).addRange(0x1DA37, 0x1DA3A).addRange(0x1DA6D, 0x1DA74).addRange(0x1DA76, 0x1DA83).addRange(0x1DA85, 0x1DA8B).addRange(0x1DF00, 0x1DF1E).addRange(0x1E100, 0x1E12C).addRange(0x1E137, 0x1E13D).addRange(0x1E140, 0x1E149).addRange(0x1E14E, 0x1E14F).addRange(0x1E290, 0x1E2AD).addRange(0x1E2C0, 0x1E2EB).addRange(0x1E2F0, 0x1E2F9).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE).addRange(0x1E800, 0x1E8C4).addRange(0x1E8C7, 0x1E8CF).addRange(0x1E900, 0x1E943).addRange(0x1E950, 0x1E959).addRange(0x1E95E, 0x1E95F).addRange(0x1EC71, 0x1ECB4).addRange(0x1ED01, 0x1ED3D).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F);\nset.addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1EEF0, 0x1EEF1).addRange(0x1F000, 0x1F02B).addRange(0x1F030, 0x1F093).addRange(0x1F0A0, 0x1F0AE).addRange(0x1F0B1, 0x1F0BF).addRange(0x1F0C1, 0x1F0CF).addRange(0x1F0D1, 0x1F0F5).addRange(0x1F100, 0x1F1AD).addRange(0x1F1E6, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x1F260, 0x1F265).addRange(0x1F300, 0x1F6D7).addRange(0x1F6DD, 0x1F6EC).addRange(0x1F6F0, 0x1F6FC).addRange(0x1F700, 0x1F773).addRange(0x1F780, 0x1F7D8).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F800, 0x1F80B).addRange(0x1F810, 0x1F847).addRange(0x1F850, 0x1F859).addRange(0x1F860, 0x1F887).addRange(0x1F890, 0x1F8AD).addRange(0x1F8B0, 0x1F8B1).addRange(0x1F900, 0x1FA53).addRange(0x1FA60, 0x1FA6D).addRange(0x1FA70, 0x1FA74).addRange(0x1FA78, 0x1FA7C).addRange(0x1FA80, 0x1FA86).addRange(0x1FA90, 0x1FAAC).addRange(0x1FAB0, 0x1FABA).addRange(0x1FAC0, 0x1FAC5).addRange(0x1FAD0, 0x1FAD9).addRange(0x1FAE0, 0x1FAE7).addRange(0x1FAF0, 0x1FAF6).addRange(0x1FB00, 0x1FB92).addRange(0x1FB94, 0x1FBCA).addRange(0x1FBF0, 0x1FBF9).addRange(0x20000, 0x2A6DF);\nset.addRange(0x2A700, 0x2B738).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x11480, 0x114C7).addRange(0x114D0, 0x114D9);\nmodule.exports = set;","const set = require('regenerate')(0xAD0);\nset.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0xA81, 0xA83).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xABC, 0xAC5).addRange(0xAC7, 0xAC9).addRange(0xACB, 0xACD).addRange(0xAE0, 0xAE3).addRange(0xAE6, 0xAF1).addRange(0xAF9, 0xAFF).addRange(0xA830, 0xA839);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x10F00, 0x10F27);\nmodule.exports = set;","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","'use strict';\n\nconst propertyToValueAliases = require('./data/mappings.js');\nconst matchPropertyValue = function (property, value) {\n const aliasToValue = propertyToValueAliases.get(property);\n if (!aliasToValue) {\n throw new Error(\"Unknown property `\".concat(property, \"`.\"));\n }\n const canonicalValue = aliasToValue.get(value);\n if (canonicalValue) {\n return canonicalValue;\n }\n throw new Error(\"Unknown value `\".concat(value, \"` for property `\").concat(property, \"`.\"));\n};\nmodule.exports = matchPropertyValue;","import React from \"react\"\n\nconst Highlight = ({ title, children }) => (\n \n

      {title}

      \n {children}\n \n)\n\nexport const Highlights = ({ elems }) => (\n \n {Object.keys(elems).map(k => (\n \n {elems[k]}\n \n ))}\n \n)\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","const set = require('regenerate')(0x2B, 0x7C, 0x7E, 0xAC, 0xB1, 0xD7, 0xF7, 0x3F6, 0x2044, 0x2052, 0x2118, 0x214B, 0x21A0, 0x21A3, 0x21A6, 0x21AE, 0x21D2, 0x21D4, 0x237C, 0x25B7, 0x25C1, 0x266F, 0xFB29, 0xFE62, 0xFF0B, 0xFF5C, 0xFF5E, 0xFFE2, 0x1D6C1, 0x1D6DB, 0x1D6FB, 0x1D715, 0x1D735, 0x1D74F, 0x1D76F, 0x1D789, 0x1D7A9, 0x1D7C3);\nset.addRange(0x3C, 0x3E).addRange(0x606, 0x608).addRange(0x207A, 0x207C).addRange(0x208A, 0x208C).addRange(0x2140, 0x2144).addRange(0x2190, 0x2194).addRange(0x219A, 0x219B).addRange(0x21CE, 0x21CF).addRange(0x21F4, 0x22FF).addRange(0x2320, 0x2321).addRange(0x239B, 0x23B3).addRange(0x23DC, 0x23E1).addRange(0x25F8, 0x25FF).addRange(0x27C0, 0x27C4).addRange(0x27C7, 0x27E5).addRange(0x27F0, 0x27FF).addRange(0x2900, 0x2982).addRange(0x2999, 0x29D7).addRange(0x29DC, 0x29FB).addRange(0x29FE, 0x2AFF).addRange(0x2B30, 0x2B44).addRange(0x2B47, 0x2B4C).addRange(0xFE64, 0xFE66).addRange(0xFF1C, 0xFF1E).addRange(0xFFE9, 0xFFEC).addRange(0x1EEF0, 0x1EEF1);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x19D0, 0x19DA).addRange(0x19DE, 0x19DF);\nmodule.exports = set;","'use strict';\n\nvar matchOperatorsRe = /[|\\\\{}()[\\]^$+*?.]/g;\nmodule.exports = function (str) {\n if (typeof str !== 'string') {\n throw new TypeError('Expected a string');\n }\n return str.replace(matchOperatorsRe, '\\\\$&');\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.codeRenderer = codeRenderer;\nexports[\"default\"] = createRenderer;\nvar _marked = _interopRequireDefault(require(\"marked\"));\nvar _he = _interopRequireDefault(require(\"he\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction codeRenderer(tracker, options) {\n function CodeComponent(props) {\n var children;\n try {\n // eslint-disable-next-line react/no-danger-with-children\n children = options.createElement('code', {\n className: \"language-\".concat(props.language),\n dangerouslySetInnerHTML: options.highlight ? {\n __html: options.highlight(props.language, props.code)\n } : null\n }, options.highlight ? null : props.code);\n } catch (e) {\n // eslint-disable-next-line\n console.warn(\"\".concat(props.language, \" is not supported by your defined highlighter.\"));\n children = options.createElement('code', null, props.code);\n }\n return options.createElement('pre', null, children);\n }\n return function (code, language) {\n // eslint-disable-next-line no-plusplus, no-param-reassign\n var elementId = tracker.nextElementId++; // eslint-disable-next-line no-param-reassign\n\n tracker.elements[elementId] = options.createElement(options.elements && options.elements.code || CodeComponent, {\n key: elementId,\n code: code,\n language: language\n });\n tracker.tree.push(tracker.elements[elementId]);\n return \"{{\".concat(elementId, \"}}\");\n };\n}\nfunction createRenderer(tracker, options) {\n var overrides = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var renderer = new _marked[\"default\"].Renderer();\n function getTocPosition(toc, level) {\n var currentLevel = toc.children; // eslint-disable-next-line no-constant-condition\n\n while (true) {\n if (!currentLevel.length || currentLevel[currentLevel.length - 1].level === level) {\n return currentLevel;\n }\n currentLevel = currentLevel[currentLevel.length - 1].children;\n }\n }\n function populateInlineContent() {\n var content = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var contentArray = content.split(/(\\{\\{.*?\\}\\})/);\n var extractedElements = contentArray.map(function (text) {\n var elementIdMatch = text.match(/\\{\\{(.*)\\}\\}/);\n if (elementIdMatch) {\n tracker.tree.splice(tracker.tree.indexOf(tracker.elements[elementIdMatch[1]]), 1);\n return tracker.elements[elementIdMatch[1]];\n }\n if (text !== '') {\n return _he[\"default\"].decode(text);\n }\n return null;\n });\n return extractedElements;\n }\n function addElement(tag) {\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var children = arguments.length > 2 ? arguments[2] : undefined;\n var type = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : tag;\n // eslint-disable-next-line no-plusplus, no-param-reassign\n var elementId = tracker.nextElementId++;\n var inlineContent = null;\n var elementType = options.elements && options.elements[type];\n if (children) {\n inlineContent = Array.isArray(children) ? children.map(populateInlineContent) : populateInlineContent(children);\n } // eslint-disable-next-line no-param-reassign\n\n tracker.elements[elementId] = options.createElement(elementType || tag, Object.assign({\n key: elementId\n }, props, elementType ? {\n context: tracker.context\n } : {}), inlineContent);\n tracker.tree.push(tracker.elements[elementId]);\n return \"{{\".concat(elementId, \"}}\");\n }\n renderer.code = overrides.code || codeRenderer(tracker, options);\n renderer.html = overrides.html || function (html) {\n // eslint-disable-next-line no-plusplus, no-param-reassign\n var elementId = tracker.nextElementId++;\n tracker.tree.push(options.createElement('div', {\n key: elementId,\n dangerouslySetInnerHTML: {\n __html: html\n }\n }));\n };\n renderer.paragraph = overrides.paragraph || function (text) {\n return addElement('p', null, text);\n };\n renderer.blockquote = overrides.blockquote || function (text) {\n return addElement('blockquote', null, text);\n };\n renderer.link = overrides.link || function (href, title, text) {\n return addElement('a', {\n href: href,\n title: title\n }, text);\n };\n renderer.br = overrides.br || function () {\n return addElement('br');\n };\n renderer.hr = overrides.hr || function () {\n return addElement('hr');\n };\n renderer.strong = overrides.strong || function (text) {\n return addElement('strong', null, text);\n };\n renderer.del = overrides.del || function (text) {\n return addElement('del', null, text);\n };\n renderer.em = overrides.em || function (text) {\n return addElement('em', null, text);\n };\n renderer.heading = overrides.heading || function (text, level) {\n // eslint-disable-next-line no-param-reassign\n tracker.currentId = tracker.currentId.slice(0, level - 1);\n tracker.currentId.push(text.replace(/\\s/g, '-').toLowerCase());\n var id = tracker.currentId.join('-');\n var lastToc = tracker.toc[tracker.toc.length - 1];\n if (!lastToc || lastToc.level > level) {\n tracker.toc.push({\n id: id,\n title: text,\n level: level,\n children: []\n });\n } else {\n var tocPosition = getTocPosition(lastToc, level);\n tocPosition.push({\n id: id,\n title: text,\n level: level,\n children: []\n });\n }\n return addElement(\"h\".concat(level), {\n id: id\n }, text);\n };\n renderer.list = overrides.list || function (body, ordered) {\n return addElement(ordered ? 'ol' : 'ul', null, body);\n };\n renderer.listitem = overrides.listitem || function (text) {\n return addElement('li', null, text);\n };\n renderer.table = overrides.table || function (header, body) {\n return addElement('table', null, [addElement('thead', null, header), addElement('tbody', null, body)]);\n };\n renderer.thead = overrides.thead || function (content) {\n return addElement('thead', null, content);\n };\n renderer.tbody = overrides.tbody || function (content) {\n return addElement('tbody', null, content);\n };\n renderer.tablerow = overrides.tablerow || function (content) {\n return addElement('tr', null, content);\n };\n renderer.tablecell = overrides.tablecell || function (content, flag) {\n var tag = flag.header ? 'th' : 'td';\n return addElement(tag, {\n className: flag.align ? \"text-\".concat(flag.align) : undefined\n }, content);\n };\n renderer.codespan = overrides.codespan || function (text) {\n return addElement('code', null, text, 'codespan');\n };\n renderer.image = overrides.image || function (href, title, text) {\n return addElement('img', {\n src: href,\n alt: text\n });\n };\n return renderer;\n}","const set = require('regenerate')(0x11D3A);\nset.addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D47).addRange(0x11D50, 0x11D59);\nmodule.exports = set;","const set = require('regenerate')(0x10C7, 0x10CD, 0x2D27, 0x2D2D);\nset.addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FF).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x2D00, 0x2D25);\nmodule.exports = set;","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","const set = require('regenerate')(0x20, 0x85);\nset.addRange(0x9, 0xD).addRange(0x200E, 0x200F).addRange(0x2028, 0x2029);\nmodule.exports = set;","'use strict';\n\nconst generate = require('regjsgen').generate;\nconst parse = require('regjsparser').parse;\nconst regenerate = require('regenerate');\nconst unicodeMatchProperty = require('unicode-match-property-ecmascript');\nconst unicodeMatchPropertyValue = require('unicode-match-property-value-ecmascript');\nconst iuMappings = require('./data/iu-mappings.js');\nconst ESCAPE_SETS = require('./data/character-class-escape-sets.js');\n\n// Prepare a Regenerate set containing all code points, used for negative\n// character classes (if any).\nconst UNICODE_SET = regenerate().addRange(0x0, 0x10FFFF);\n// Without the `u` flag, the range stops at 0xFFFF.\n// https://mths.be/es6#sec-pattern-semantics\nconst BMP_SET = regenerate().addRange(0x0, 0xFFFF);\n\n// Prepare a Regenerate set containing all code points that are supposed to be\n// matched by `/./u`. https://mths.be/es6#sec-atom\nconst DOT_SET_UNICODE = UNICODE_SET.clone() // all Unicode code points\n.remove(\n// minus `LineTerminator`s (https://mths.be/es6#sec-line-terminators):\n0x000A,\n// Line Feed \n0x000D,\n// Carriage Return \n0x2028,\n// Line Separator \n0x2029 // Paragraph Separator \n);\n\nconst getCharacterClassEscapeSet = (character, unicode, ignoreCase) => {\n if (unicode) {\n if (ignoreCase) {\n return ESCAPE_SETS.UNICODE_IGNORE_CASE.get(character);\n }\n return ESCAPE_SETS.UNICODE.get(character);\n }\n return ESCAPE_SETS.REGULAR.get(character);\n};\nconst getUnicodeDotSet = dotAll => {\n return dotAll ? UNICODE_SET : DOT_SET_UNICODE;\n};\nconst getUnicodePropertyValueSet = (property, value) => {\n const path = value ? \"\".concat(property, \"/\").concat(value) : \"Binary_Property/\".concat(property);\n try {\n return require(\"regenerate-unicode-properties/\".concat(path, \".js\"));\n } catch (exception) {\n throw new Error(\"Failed to recognize value `\".concat(value, \"` for property \") + \"`\".concat(property, \"`.\"));\n }\n};\nconst handleLoneUnicodePropertyNameOrValue = value => {\n // It could be a `General_Category` value or a binary property.\n // Note: `unicodeMatchPropertyValue` throws on invalid values.\n try {\n const property = 'General_Category';\n const category = unicodeMatchPropertyValue(property, value);\n return getUnicodePropertyValueSet(property, category);\n } catch (exception) {}\n // It’s not a `General_Category` value, so check if it’s a binary\n // property. Note: `unicodeMatchProperty` throws on invalid properties.\n const property = unicodeMatchProperty(value);\n return getUnicodePropertyValueSet(property);\n};\nconst getUnicodePropertyEscapeSet = (value, isNegative) => {\n const parts = value.split('=');\n const firstPart = parts[0];\n let set;\n if (parts.length == 1) {\n set = handleLoneUnicodePropertyNameOrValue(firstPart);\n } else {\n // The pattern consists of two parts, i.e. `Property=Value`.\n const property = unicodeMatchProperty(firstPart);\n const value = unicodeMatchPropertyValue(property, parts[1]);\n set = getUnicodePropertyValueSet(property, value);\n }\n if (isNegative) {\n return UNICODE_SET.clone().remove(set);\n }\n return set.clone();\n};\n\n// Given a range of code points, add any case-folded code points in that range\n// to a set.\nregenerate.prototype.iuAddRange = function (min, max) {\n const $this = this;\n do {\n const folded = caseFold(min);\n if (folded) {\n $this.add(folded);\n }\n } while (++min <= max);\n return $this;\n};\nconst update = (item, pattern) => {\n let tree = parse(pattern, config.useUnicodeFlag ? 'u' : '');\n switch (tree.type) {\n case 'characterClass':\n case 'group':\n case 'value':\n // No wrapping needed.\n break;\n default:\n // Wrap the pattern in a non-capturing group.\n tree = wrap(tree, pattern);\n }\n Object.assign(item, tree);\n};\nconst wrap = (tree, pattern) => {\n // Wrap the pattern in a non-capturing group.\n return {\n 'type': 'group',\n 'behavior': 'ignore',\n 'body': [tree],\n 'raw': \"(?:\".concat(pattern, \")\")\n };\n};\nconst caseFold = codePoint => {\n return iuMappings.get(codePoint) || false;\n};\nconst processCharacterClass = (characterClassItem, regenerateOptions) => {\n const set = regenerate();\n for (const item of characterClassItem.body) {\n switch (item.type) {\n case 'value':\n set.add(item.codePoint);\n if (config.ignoreCase && config.unicode && !config.useUnicodeFlag) {\n const folded = caseFold(item.codePoint);\n if (folded) {\n set.add(folded);\n }\n }\n break;\n case 'characterClassRange':\n const min = item.min.codePoint;\n const max = item.max.codePoint;\n set.addRange(min, max);\n if (config.ignoreCase && config.unicode && !config.useUnicodeFlag) {\n set.iuAddRange(min, max);\n }\n break;\n case 'characterClassEscape':\n set.add(getCharacterClassEscapeSet(item.value, config.unicode, config.ignoreCase));\n break;\n case 'unicodePropertyEscape':\n set.add(getUnicodePropertyEscapeSet(item.value, item.negative));\n break;\n // The `default` clause is only here as a safeguard; it should never be\n // reached. Code coverage tools should ignore it.\n /* istanbul ignore next */\n default:\n throw new Error(\"Unknown term type: \".concat(item.type));\n }\n }\n if (characterClassItem.negative) {\n update(characterClassItem, \"(?!\".concat(set.toString(regenerateOptions), \")[\\\\s\\\\S]\"));\n } else {\n update(characterClassItem, set.toString(regenerateOptions));\n }\n return characterClassItem;\n};\nconst updateNamedReference = (item, index) => {\n delete item.name;\n item.matchIndex = index;\n};\nconst assertNoUnmatchedReferences = groups => {\n const unmatchedReferencesNames = Object.keys(groups.unmatchedReferences);\n if (unmatchedReferencesNames.length > 0) {\n throw new Error(\"Unknown group names: \".concat(unmatchedReferencesNames));\n }\n};\nconst processTerm = (item, regenerateOptions, groups) => {\n switch (item.type) {\n case 'dot':\n if (config.useDotAllFlag) {\n break;\n } else if (config.unicode) {\n update(item, getUnicodeDotSet(config.dotAll).toString(regenerateOptions));\n } else if (config.dotAll) {\n // TODO: consider changing this at the regenerate level.\n update(item, '[\\\\s\\\\S]');\n }\n break;\n case 'characterClass':\n item = processCharacterClass(item, regenerateOptions);\n break;\n case 'unicodePropertyEscape':\n if (config.unicodePropertyEscape) {\n update(item, getUnicodePropertyEscapeSet(item.value, item.negative).toString(regenerateOptions));\n }\n break;\n case 'characterClassEscape':\n update(item, getCharacterClassEscapeSet(item.value, config.unicode, config.ignoreCase).toString(regenerateOptions));\n break;\n case 'group':\n if (item.behavior == 'normal') {\n groups.lastIndex++;\n }\n if (item.name && config.namedGroup) {\n const name = item.name.value;\n if (groups.names[name]) {\n throw new Error(\"Multiple groups with the same name (\".concat(name, \") are not allowed.\"));\n }\n const index = groups.lastIndex;\n delete item.name;\n groups.names[name] = index;\n if (groups.onNamedGroup) {\n groups.onNamedGroup.call(null, name, index);\n }\n if (groups.unmatchedReferences[name]) {\n groups.unmatchedReferences[name].forEach(reference => {\n updateNamedReference(reference, index);\n });\n delete groups.unmatchedReferences[name];\n }\n }\n /* falls through */\n case 'alternative':\n case 'disjunction':\n case 'quantifier':\n item.body = item.body.map(term => {\n return processTerm(term, regenerateOptions, groups);\n });\n break;\n case 'value':\n const codePoint = item.codePoint;\n const set = regenerate(codePoint);\n if (config.ignoreCase && config.unicode && !config.useUnicodeFlag) {\n const folded = caseFold(codePoint);\n if (folded) {\n set.add(folded);\n }\n }\n update(item, set.toString(regenerateOptions));\n break;\n case 'reference':\n if (item.name) {\n const name = item.name.value;\n const index = groups.names[name];\n if (index) {\n updateNamedReference(item, index);\n break;\n }\n if (!groups.unmatchedReferences[name]) {\n groups.unmatchedReferences[name] = [];\n }\n // Keep track of references used before the corresponding group.\n groups.unmatchedReferences[name].push(item);\n }\n break;\n case 'anchor':\n case 'empty':\n case 'group':\n // Nothing to do here.\n break;\n // The `default` clause is only here as a safeguard; it should never be\n // reached. Code coverage tools should ignore it.\n /* istanbul ignore next */\n default:\n throw new Error(\"Unknown term type: \".concat(item.type));\n }\n return item;\n};\nconst config = {\n 'ignoreCase': false,\n 'unicode': false,\n 'dotAll': false,\n 'useDotAllFlag': false,\n 'useUnicodeFlag': false,\n 'unicodePropertyEscape': false,\n 'namedGroup': false\n};\nconst rewritePattern = (pattern, flags, options) => {\n config.unicode = flags && flags.includes('u');\n const regjsparserFeatures = {\n 'unicodePropertyEscape': config.unicode,\n 'namedGroups': true,\n 'lookbehind': options && options.lookbehind\n };\n config.ignoreCase = flags && flags.includes('i');\n const supportDotAllFlag = options && options.dotAllFlag;\n config.dotAll = supportDotAllFlag && flags && flags.includes('s');\n config.namedGroup = options && options.namedGroup;\n config.useDotAllFlag = options && options.useDotAllFlag;\n config.useUnicodeFlag = options && options.useUnicodeFlag;\n config.unicodePropertyEscape = options && options.unicodePropertyEscape;\n if (supportDotAllFlag && config.useDotAllFlag) {\n throw new Error('`useDotAllFlag` and `dotAllFlag` cannot both be true!');\n }\n const regenerateOptions = {\n 'hasUnicodeFlag': config.useUnicodeFlag,\n 'bmpOnly': !config.unicode\n };\n const groups = {\n 'onNamedGroup': options && options.onNamedGroup,\n 'lastIndex': 0,\n 'names': Object.create(null),\n // { [name]: index }\n 'unmatchedReferences': Object.create(null) // { [name]: Array }\n };\n\n const tree = parse(pattern, flags, regjsparserFeatures);\n // Note: `processTerm` mutates `tree` and `groups`.\n processTerm(tree, regenerateOptions, groups);\n assertNoUnmatchedReferences(groups);\n return generate(tree);\n};\nmodule.exports = rewritePattern;","const set = require('regenerate')();\nset.addRange(0x800, 0x82D).addRange(0x830, 0x83E);\nmodule.exports = set;","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","function _extends() {\n module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _extends.apply(this, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\nfunction head(array) {\n return (array && array.length) ? array[0] : undefined;\n}\n\nmodule.exports = head;\n","module.exports = new Map([['General_Category', new Map([['C', 'Other'], ['Cc', 'Control'], ['cntrl', 'Control'], ['Cf', 'Format'], ['Cn', 'Unassigned'], ['Co', 'Private_Use'], ['Cs', 'Surrogate'], ['L', 'Letter'], ['LC', 'Cased_Letter'], ['Ll', 'Lowercase_Letter'], ['Lm', 'Modifier_Letter'], ['Lo', 'Other_Letter'], ['Lt', 'Titlecase_Letter'], ['Lu', 'Uppercase_Letter'], ['M', 'Mark'], ['Combining_Mark', 'Mark'], ['Mc', 'Spacing_Mark'], ['Me', 'Enclosing_Mark'], ['Mn', 'Nonspacing_Mark'], ['N', 'Number'], ['Nd', 'Decimal_Number'], ['digit', 'Decimal_Number'], ['Nl', 'Letter_Number'], ['No', 'Other_Number'], ['P', 'Punctuation'], ['punct', 'Punctuation'], ['Pc', 'Connector_Punctuation'], ['Pd', 'Dash_Punctuation'], ['Pe', 'Close_Punctuation'], ['Pf', 'Final_Punctuation'], ['Pi', 'Initial_Punctuation'], ['Po', 'Other_Punctuation'], ['Ps', 'Open_Punctuation'], ['S', 'Symbol'], ['Sc', 'Currency_Symbol'], ['Sk', 'Modifier_Symbol'], ['Sm', 'Math_Symbol'], ['So', 'Other_Symbol'], ['Z', 'Separator'], ['Zl', 'Line_Separator'], ['Zp', 'Paragraph_Separator'], ['Zs', 'Space_Separator'], ['Other', 'Other'], ['Control', 'Control'], ['Format', 'Format'], ['Unassigned', 'Unassigned'], ['Private_Use', 'Private_Use'], ['Surrogate', 'Surrogate'], ['Letter', 'Letter'], ['Cased_Letter', 'Cased_Letter'], ['Lowercase_Letter', 'Lowercase_Letter'], ['Modifier_Letter', 'Modifier_Letter'], ['Other_Letter', 'Other_Letter'], ['Titlecase_Letter', 'Titlecase_Letter'], ['Uppercase_Letter', 'Uppercase_Letter'], ['Mark', 'Mark'], ['Spacing_Mark', 'Spacing_Mark'], ['Enclosing_Mark', 'Enclosing_Mark'], ['Nonspacing_Mark', 'Nonspacing_Mark'], ['Number', 'Number'], ['Decimal_Number', 'Decimal_Number'], ['Letter_Number', 'Letter_Number'], ['Other_Number', 'Other_Number'], ['Punctuation', 'Punctuation'], ['Connector_Punctuation', 'Connector_Punctuation'], ['Dash_Punctuation', 'Dash_Punctuation'], ['Close_Punctuation', 'Close_Punctuation'], ['Final_Punctuation', 'Final_Punctuation'], ['Initial_Punctuation', 'Initial_Punctuation'], ['Other_Punctuation', 'Other_Punctuation'], ['Open_Punctuation', 'Open_Punctuation'], ['Symbol', 'Symbol'], ['Currency_Symbol', 'Currency_Symbol'], ['Modifier_Symbol', 'Modifier_Symbol'], ['Math_Symbol', 'Math_Symbol'], ['Other_Symbol', 'Other_Symbol'], ['Separator', 'Separator'], ['Line_Separator', 'Line_Separator'], ['Paragraph_Separator', 'Paragraph_Separator'], ['Space_Separator', 'Space_Separator']])], ['Script', new Map([['Adlm', 'Adlam'], ['Aghb', 'Caucasian_Albanian'], ['Ahom', 'Ahom'], ['Arab', 'Arabic'], ['Armi', 'Imperial_Aramaic'], ['Armn', 'Armenian'], ['Avst', 'Avestan'], ['Bali', 'Balinese'], ['Bamu', 'Bamum'], ['Bass', 'Bassa_Vah'], ['Batk', 'Batak'], ['Beng', 'Bengali'], ['Bhks', 'Bhaiksuki'], ['Bopo', 'Bopomofo'], ['Brah', 'Brahmi'], ['Brai', 'Braille'], ['Bugi', 'Buginese'], ['Buhd', 'Buhid'], ['Cakm', 'Chakma'], ['Cans', 'Canadian_Aboriginal'], ['Cari', 'Carian'], ['Cham', 'Cham'], ['Cher', 'Cherokee'], ['Chrs', 'Chorasmian'], ['Copt', 'Coptic'], ['Qaac', 'Coptic'], ['Cpmn', 'Cypro_Minoan'], ['Cprt', 'Cypriot'], ['Cyrl', 'Cyrillic'], ['Deva', 'Devanagari'], ['Diak', 'Dives_Akuru'], ['Dogr', 'Dogra'], ['Dsrt', 'Deseret'], ['Dupl', 'Duployan'], ['Egyp', 'Egyptian_Hieroglyphs'], ['Elba', 'Elbasan'], ['Elym', 'Elymaic'], ['Ethi', 'Ethiopic'], ['Geor', 'Georgian'], ['Glag', 'Glagolitic'], ['Gong', 'Gunjala_Gondi'], ['Gonm', 'Masaram_Gondi'], ['Goth', 'Gothic'], ['Gran', 'Grantha'], ['Grek', 'Greek'], ['Gujr', 'Gujarati'], ['Guru', 'Gurmukhi'], ['Hang', 'Hangul'], ['Hani', 'Han'], ['Hano', 'Hanunoo'], ['Hatr', 'Hatran'], ['Hebr', 'Hebrew'], ['Hira', 'Hiragana'], ['Hluw', 'Anatolian_Hieroglyphs'], ['Hmng', 'Pahawh_Hmong'], ['Hmnp', 'Nyiakeng_Puachue_Hmong'], ['Hrkt', 'Katakana_Or_Hiragana'], ['Hung', 'Old_Hungarian'], ['Ital', 'Old_Italic'], ['Java', 'Javanese'], ['Kali', 'Kayah_Li'], ['Kana', 'Katakana'], ['Kawi', 'Kawi'], ['Khar', 'Kharoshthi'], ['Khmr', 'Khmer'], ['Khoj', 'Khojki'], ['Kits', 'Khitan_Small_Script'], ['Knda', 'Kannada'], ['Kthi', 'Kaithi'], ['Lana', 'Tai_Tham'], ['Laoo', 'Lao'], ['Latn', 'Latin'], ['Lepc', 'Lepcha'], ['Limb', 'Limbu'], ['Lina', 'Linear_A'], ['Linb', 'Linear_B'], ['Lisu', 'Lisu'], ['Lyci', 'Lycian'], ['Lydi', 'Lydian'], ['Mahj', 'Mahajani'], ['Maka', 'Makasar'], ['Mand', 'Mandaic'], ['Mani', 'Manichaean'], ['Marc', 'Marchen'], ['Medf', 'Medefaidrin'], ['Mend', 'Mende_Kikakui'], ['Merc', 'Meroitic_Cursive'], ['Mero', 'Meroitic_Hieroglyphs'], ['Mlym', 'Malayalam'], ['Modi', 'Modi'], ['Mong', 'Mongolian'], ['Mroo', 'Mro'], ['Mtei', 'Meetei_Mayek'], ['Mult', 'Multani'], ['Mymr', 'Myanmar'], ['Nagm', 'Nag_Mundari'], ['Nand', 'Nandinagari'], ['Narb', 'Old_North_Arabian'], ['Nbat', 'Nabataean'], ['Newa', 'Newa'], ['Nkoo', 'Nko'], ['Nshu', 'Nushu'], ['Ogam', 'Ogham'], ['Olck', 'Ol_Chiki'], ['Orkh', 'Old_Turkic'], ['Orya', 'Oriya'], ['Osge', 'Osage'], ['Osma', 'Osmanya'], ['Ougr', 'Old_Uyghur'], ['Palm', 'Palmyrene'], ['Pauc', 'Pau_Cin_Hau'], ['Perm', 'Old_Permic'], ['Phag', 'Phags_Pa'], ['Phli', 'Inscriptional_Pahlavi'], ['Phlp', 'Psalter_Pahlavi'], ['Phnx', 'Phoenician'], ['Plrd', 'Miao'], ['Prti', 'Inscriptional_Parthian'], ['Rjng', 'Rejang'], ['Rohg', 'Hanifi_Rohingya'], ['Runr', 'Runic'], ['Samr', 'Samaritan'], ['Sarb', 'Old_South_Arabian'], ['Saur', 'Saurashtra'], ['Sgnw', 'SignWriting'], ['Shaw', 'Shavian'], ['Shrd', 'Sharada'], ['Sidd', 'Siddham'], ['Sind', 'Khudawadi'], ['Sinh', 'Sinhala'], ['Sogd', 'Sogdian'], ['Sogo', 'Old_Sogdian'], ['Sora', 'Sora_Sompeng'], ['Soyo', 'Soyombo'], ['Sund', 'Sundanese'], ['Sylo', 'Syloti_Nagri'], ['Syrc', 'Syriac'], ['Tagb', 'Tagbanwa'], ['Takr', 'Takri'], ['Tale', 'Tai_Le'], ['Talu', 'New_Tai_Lue'], ['Taml', 'Tamil'], ['Tang', 'Tangut'], ['Tavt', 'Tai_Viet'], ['Telu', 'Telugu'], ['Tfng', 'Tifinagh'], ['Tglg', 'Tagalog'], ['Thaa', 'Thaana'], ['Thai', 'Thai'], ['Tibt', 'Tibetan'], ['Tirh', 'Tirhuta'], ['Tnsa', 'Tangsa'], ['Toto', 'Toto'], ['Ugar', 'Ugaritic'], ['Vaii', 'Vai'], ['Vith', 'Vithkuqi'], ['Wara', 'Warang_Citi'], ['Wcho', 'Wancho'], ['Xpeo', 'Old_Persian'], ['Xsux', 'Cuneiform'], ['Yezi', 'Yezidi'], ['Yiii', 'Yi'], ['Zanb', 'Zanabazar_Square'], ['Zinh', 'Inherited'], ['Qaai', 'Inherited'], ['Zyyy', 'Common'], ['Zzzz', 'Unknown'], ['Adlam', 'Adlam'], ['Caucasian_Albanian', 'Caucasian_Albanian'], ['Arabic', 'Arabic'], ['Imperial_Aramaic', 'Imperial_Aramaic'], ['Armenian', 'Armenian'], ['Avestan', 'Avestan'], ['Balinese', 'Balinese'], ['Bamum', 'Bamum'], ['Bassa_Vah', 'Bassa_Vah'], ['Batak', 'Batak'], ['Bengali', 'Bengali'], ['Bhaiksuki', 'Bhaiksuki'], ['Bopomofo', 'Bopomofo'], ['Brahmi', 'Brahmi'], ['Braille', 'Braille'], ['Buginese', 'Buginese'], ['Buhid', 'Buhid'], ['Chakma', 'Chakma'], ['Canadian_Aboriginal', 'Canadian_Aboriginal'], ['Carian', 'Carian'], ['Cherokee', 'Cherokee'], ['Chorasmian', 'Chorasmian'], ['Coptic', 'Coptic'], ['Cypro_Minoan', 'Cypro_Minoan'], ['Cypriot', 'Cypriot'], ['Cyrillic', 'Cyrillic'], ['Devanagari', 'Devanagari'], ['Dives_Akuru', 'Dives_Akuru'], ['Dogra', 'Dogra'], ['Deseret', 'Deseret'], ['Duployan', 'Duployan'], ['Egyptian_Hieroglyphs', 'Egyptian_Hieroglyphs'], ['Elbasan', 'Elbasan'], ['Elymaic', 'Elymaic'], ['Ethiopic', 'Ethiopic'], ['Georgian', 'Georgian'], ['Glagolitic', 'Glagolitic'], ['Gunjala_Gondi', 'Gunjala_Gondi'], ['Masaram_Gondi', 'Masaram_Gondi'], ['Gothic', 'Gothic'], ['Grantha', 'Grantha'], ['Greek', 'Greek'], ['Gujarati', 'Gujarati'], ['Gurmukhi', 'Gurmukhi'], ['Hangul', 'Hangul'], ['Han', 'Han'], ['Hanunoo', 'Hanunoo'], ['Hatran', 'Hatran'], ['Hebrew', 'Hebrew'], ['Hiragana', 'Hiragana'], ['Anatolian_Hieroglyphs', 'Anatolian_Hieroglyphs'], ['Pahawh_Hmong', 'Pahawh_Hmong'], ['Nyiakeng_Puachue_Hmong', 'Nyiakeng_Puachue_Hmong'], ['Katakana_Or_Hiragana', 'Katakana_Or_Hiragana'], ['Old_Hungarian', 'Old_Hungarian'], ['Old_Italic', 'Old_Italic'], ['Javanese', 'Javanese'], ['Kayah_Li', 'Kayah_Li'], ['Katakana', 'Katakana'], ['Kharoshthi', 'Kharoshthi'], ['Khmer', 'Khmer'], ['Khojki', 'Khojki'], ['Khitan_Small_Script', 'Khitan_Small_Script'], ['Kannada', 'Kannada'], ['Kaithi', 'Kaithi'], ['Tai_Tham', 'Tai_Tham'], ['Lao', 'Lao'], ['Latin', 'Latin'], ['Lepcha', 'Lepcha'], ['Limbu', 'Limbu'], ['Linear_A', 'Linear_A'], ['Linear_B', 'Linear_B'], ['Lycian', 'Lycian'], ['Lydian', 'Lydian'], ['Mahajani', 'Mahajani'], ['Makasar', 'Makasar'], ['Mandaic', 'Mandaic'], ['Manichaean', 'Manichaean'], ['Marchen', 'Marchen'], ['Medefaidrin', 'Medefaidrin'], ['Mende_Kikakui', 'Mende_Kikakui'], ['Meroitic_Cursive', 'Meroitic_Cursive'], ['Meroitic_Hieroglyphs', 'Meroitic_Hieroglyphs'], ['Malayalam', 'Malayalam'], ['Mongolian', 'Mongolian'], ['Mro', 'Mro'], ['Meetei_Mayek', 'Meetei_Mayek'], ['Multani', 'Multani'], ['Myanmar', 'Myanmar'], ['Nag_Mundari', 'Nag_Mundari'], ['Nandinagari', 'Nandinagari'], ['Old_North_Arabian', 'Old_North_Arabian'], ['Nabataean', 'Nabataean'], ['Nko', 'Nko'], ['Nushu', 'Nushu'], ['Ogham', 'Ogham'], ['Ol_Chiki', 'Ol_Chiki'], ['Old_Turkic', 'Old_Turkic'], ['Oriya', 'Oriya'], ['Osage', 'Osage'], ['Osmanya', 'Osmanya'], ['Old_Uyghur', 'Old_Uyghur'], ['Palmyrene', 'Palmyrene'], ['Pau_Cin_Hau', 'Pau_Cin_Hau'], ['Old_Permic', 'Old_Permic'], ['Phags_Pa', 'Phags_Pa'], ['Inscriptional_Pahlavi', 'Inscriptional_Pahlavi'], ['Psalter_Pahlavi', 'Psalter_Pahlavi'], ['Phoenician', 'Phoenician'], ['Miao', 'Miao'], ['Inscriptional_Parthian', 'Inscriptional_Parthian'], ['Rejang', 'Rejang'], ['Hanifi_Rohingya', 'Hanifi_Rohingya'], ['Runic', 'Runic'], ['Samaritan', 'Samaritan'], ['Old_South_Arabian', 'Old_South_Arabian'], ['Saurashtra', 'Saurashtra'], ['SignWriting', 'SignWriting'], ['Shavian', 'Shavian'], ['Sharada', 'Sharada'], ['Siddham', 'Siddham'], ['Khudawadi', 'Khudawadi'], ['Sinhala', 'Sinhala'], ['Sogdian', 'Sogdian'], ['Old_Sogdian', 'Old_Sogdian'], ['Sora_Sompeng', 'Sora_Sompeng'], ['Soyombo', 'Soyombo'], ['Sundanese', 'Sundanese'], ['Syloti_Nagri', 'Syloti_Nagri'], ['Syriac', 'Syriac'], ['Tagbanwa', 'Tagbanwa'], ['Takri', 'Takri'], ['Tai_Le', 'Tai_Le'], ['New_Tai_Lue', 'New_Tai_Lue'], ['Tamil', 'Tamil'], ['Tangut', 'Tangut'], ['Tai_Viet', 'Tai_Viet'], ['Telugu', 'Telugu'], ['Tifinagh', 'Tifinagh'], ['Tagalog', 'Tagalog'], ['Thaana', 'Thaana'], ['Tibetan', 'Tibetan'], ['Tirhuta', 'Tirhuta'], ['Tangsa', 'Tangsa'], ['Ugaritic', 'Ugaritic'], ['Vai', 'Vai'], ['Vithkuqi', 'Vithkuqi'], ['Warang_Citi', 'Warang_Citi'], ['Wancho', 'Wancho'], ['Old_Persian', 'Old_Persian'], ['Cuneiform', 'Cuneiform'], ['Yezidi', 'Yezidi'], ['Yi', 'Yi'], ['Zanabazar_Square', 'Zanabazar_Square'], ['Inherited', 'Inherited'], ['Common', 'Common'], ['Unknown', 'Unknown']])], ['Script_Extensions', new Map([['Adlm', 'Adlam'], ['Aghb', 'Caucasian_Albanian'], ['Ahom', 'Ahom'], ['Arab', 'Arabic'], ['Armi', 'Imperial_Aramaic'], ['Armn', 'Armenian'], ['Avst', 'Avestan'], ['Bali', 'Balinese'], ['Bamu', 'Bamum'], ['Bass', 'Bassa_Vah'], ['Batk', 'Batak'], ['Beng', 'Bengali'], ['Bhks', 'Bhaiksuki'], ['Bopo', 'Bopomofo'], ['Brah', 'Brahmi'], ['Brai', 'Braille'], ['Bugi', 'Buginese'], ['Buhd', 'Buhid'], ['Cakm', 'Chakma'], ['Cans', 'Canadian_Aboriginal'], ['Cari', 'Carian'], ['Cham', 'Cham'], ['Cher', 'Cherokee'], ['Chrs', 'Chorasmian'], ['Copt', 'Coptic'], ['Qaac', 'Coptic'], ['Cpmn', 'Cypro_Minoan'], ['Cprt', 'Cypriot'], ['Cyrl', 'Cyrillic'], ['Deva', 'Devanagari'], ['Diak', 'Dives_Akuru'], ['Dogr', 'Dogra'], ['Dsrt', 'Deseret'], ['Dupl', 'Duployan'], ['Egyp', 'Egyptian_Hieroglyphs'], ['Elba', 'Elbasan'], ['Elym', 'Elymaic'], ['Ethi', 'Ethiopic'], ['Geor', 'Georgian'], ['Glag', 'Glagolitic'], ['Gong', 'Gunjala_Gondi'], ['Gonm', 'Masaram_Gondi'], ['Goth', 'Gothic'], ['Gran', 'Grantha'], ['Grek', 'Greek'], ['Gujr', 'Gujarati'], ['Guru', 'Gurmukhi'], ['Hang', 'Hangul'], ['Hani', 'Han'], ['Hano', 'Hanunoo'], ['Hatr', 'Hatran'], ['Hebr', 'Hebrew'], ['Hira', 'Hiragana'], ['Hluw', 'Anatolian_Hieroglyphs'], ['Hmng', 'Pahawh_Hmong'], ['Hmnp', 'Nyiakeng_Puachue_Hmong'], ['Hrkt', 'Katakana_Or_Hiragana'], ['Hung', 'Old_Hungarian'], ['Ital', 'Old_Italic'], ['Java', 'Javanese'], ['Kali', 'Kayah_Li'], ['Kana', 'Katakana'], ['Kawi', 'Kawi'], ['Khar', 'Kharoshthi'], ['Khmr', 'Khmer'], ['Khoj', 'Khojki'], ['Kits', 'Khitan_Small_Script'], ['Knda', 'Kannada'], ['Kthi', 'Kaithi'], ['Lana', 'Tai_Tham'], ['Laoo', 'Lao'], ['Latn', 'Latin'], ['Lepc', 'Lepcha'], ['Limb', 'Limbu'], ['Lina', 'Linear_A'], ['Linb', 'Linear_B'], ['Lisu', 'Lisu'], ['Lyci', 'Lycian'], ['Lydi', 'Lydian'], ['Mahj', 'Mahajani'], ['Maka', 'Makasar'], ['Mand', 'Mandaic'], ['Mani', 'Manichaean'], ['Marc', 'Marchen'], ['Medf', 'Medefaidrin'], ['Mend', 'Mende_Kikakui'], ['Merc', 'Meroitic_Cursive'], ['Mero', 'Meroitic_Hieroglyphs'], ['Mlym', 'Malayalam'], ['Modi', 'Modi'], ['Mong', 'Mongolian'], ['Mroo', 'Mro'], ['Mtei', 'Meetei_Mayek'], ['Mult', 'Multani'], ['Mymr', 'Myanmar'], ['Nagm', 'Nag_Mundari'], ['Nand', 'Nandinagari'], ['Narb', 'Old_North_Arabian'], ['Nbat', 'Nabataean'], ['Newa', 'Newa'], ['Nkoo', 'Nko'], ['Nshu', 'Nushu'], ['Ogam', 'Ogham'], ['Olck', 'Ol_Chiki'], ['Orkh', 'Old_Turkic'], ['Orya', 'Oriya'], ['Osge', 'Osage'], ['Osma', 'Osmanya'], ['Ougr', 'Old_Uyghur'], ['Palm', 'Palmyrene'], ['Pauc', 'Pau_Cin_Hau'], ['Perm', 'Old_Permic'], ['Phag', 'Phags_Pa'], ['Phli', 'Inscriptional_Pahlavi'], ['Phlp', 'Psalter_Pahlavi'], ['Phnx', 'Phoenician'], ['Plrd', 'Miao'], ['Prti', 'Inscriptional_Parthian'], ['Rjng', 'Rejang'], ['Rohg', 'Hanifi_Rohingya'], ['Runr', 'Runic'], ['Samr', 'Samaritan'], ['Sarb', 'Old_South_Arabian'], ['Saur', 'Saurashtra'], ['Sgnw', 'SignWriting'], ['Shaw', 'Shavian'], ['Shrd', 'Sharada'], ['Sidd', 'Siddham'], ['Sind', 'Khudawadi'], ['Sinh', 'Sinhala'], ['Sogd', 'Sogdian'], ['Sogo', 'Old_Sogdian'], ['Sora', 'Sora_Sompeng'], ['Soyo', 'Soyombo'], ['Sund', 'Sundanese'], ['Sylo', 'Syloti_Nagri'], ['Syrc', 'Syriac'], ['Tagb', 'Tagbanwa'], ['Takr', 'Takri'], ['Tale', 'Tai_Le'], ['Talu', 'New_Tai_Lue'], ['Taml', 'Tamil'], ['Tang', 'Tangut'], ['Tavt', 'Tai_Viet'], ['Telu', 'Telugu'], ['Tfng', 'Tifinagh'], ['Tglg', 'Tagalog'], ['Thaa', 'Thaana'], ['Thai', 'Thai'], ['Tibt', 'Tibetan'], ['Tirh', 'Tirhuta'], ['Tnsa', 'Tangsa'], ['Toto', 'Toto'], ['Ugar', 'Ugaritic'], ['Vaii', 'Vai'], ['Vith', 'Vithkuqi'], ['Wara', 'Warang_Citi'], ['Wcho', 'Wancho'], ['Xpeo', 'Old_Persian'], ['Xsux', 'Cuneiform'], ['Yezi', 'Yezidi'], ['Yiii', 'Yi'], ['Zanb', 'Zanabazar_Square'], ['Zinh', 'Inherited'], ['Qaai', 'Inherited'], ['Zyyy', 'Common'], ['Zzzz', 'Unknown'], ['Adlam', 'Adlam'], ['Caucasian_Albanian', 'Caucasian_Albanian'], ['Arabic', 'Arabic'], ['Imperial_Aramaic', 'Imperial_Aramaic'], ['Armenian', 'Armenian'], ['Avestan', 'Avestan'], ['Balinese', 'Balinese'], ['Bamum', 'Bamum'], ['Bassa_Vah', 'Bassa_Vah'], ['Batak', 'Batak'], ['Bengali', 'Bengali'], ['Bhaiksuki', 'Bhaiksuki'], ['Bopomofo', 'Bopomofo'], ['Brahmi', 'Brahmi'], ['Braille', 'Braille'], ['Buginese', 'Buginese'], ['Buhid', 'Buhid'], ['Chakma', 'Chakma'], ['Canadian_Aboriginal', 'Canadian_Aboriginal'], ['Carian', 'Carian'], ['Cherokee', 'Cherokee'], ['Chorasmian', 'Chorasmian'], ['Coptic', 'Coptic'], ['Cypro_Minoan', 'Cypro_Minoan'], ['Cypriot', 'Cypriot'], ['Cyrillic', 'Cyrillic'], ['Devanagari', 'Devanagari'], ['Dives_Akuru', 'Dives_Akuru'], ['Dogra', 'Dogra'], ['Deseret', 'Deseret'], ['Duployan', 'Duployan'], ['Egyptian_Hieroglyphs', 'Egyptian_Hieroglyphs'], ['Elbasan', 'Elbasan'], ['Elymaic', 'Elymaic'], ['Ethiopic', 'Ethiopic'], ['Georgian', 'Georgian'], ['Glagolitic', 'Glagolitic'], ['Gunjala_Gondi', 'Gunjala_Gondi'], ['Masaram_Gondi', 'Masaram_Gondi'], ['Gothic', 'Gothic'], ['Grantha', 'Grantha'], ['Greek', 'Greek'], ['Gujarati', 'Gujarati'], ['Gurmukhi', 'Gurmukhi'], ['Hangul', 'Hangul'], ['Han', 'Han'], ['Hanunoo', 'Hanunoo'], ['Hatran', 'Hatran'], ['Hebrew', 'Hebrew'], ['Hiragana', 'Hiragana'], ['Anatolian_Hieroglyphs', 'Anatolian_Hieroglyphs'], ['Pahawh_Hmong', 'Pahawh_Hmong'], ['Nyiakeng_Puachue_Hmong', 'Nyiakeng_Puachue_Hmong'], ['Katakana_Or_Hiragana', 'Katakana_Or_Hiragana'], ['Old_Hungarian', 'Old_Hungarian'], ['Old_Italic', 'Old_Italic'], ['Javanese', 'Javanese'], ['Kayah_Li', 'Kayah_Li'], ['Katakana', 'Katakana'], ['Kharoshthi', 'Kharoshthi'], ['Khmer', 'Khmer'], ['Khojki', 'Khojki'], ['Khitan_Small_Script', 'Khitan_Small_Script'], ['Kannada', 'Kannada'], ['Kaithi', 'Kaithi'], ['Tai_Tham', 'Tai_Tham'], ['Lao', 'Lao'], ['Latin', 'Latin'], ['Lepcha', 'Lepcha'], ['Limbu', 'Limbu'], ['Linear_A', 'Linear_A'], ['Linear_B', 'Linear_B'], ['Lycian', 'Lycian'], ['Lydian', 'Lydian'], ['Mahajani', 'Mahajani'], ['Makasar', 'Makasar'], ['Mandaic', 'Mandaic'], ['Manichaean', 'Manichaean'], ['Marchen', 'Marchen'], ['Medefaidrin', 'Medefaidrin'], ['Mende_Kikakui', 'Mende_Kikakui'], ['Meroitic_Cursive', 'Meroitic_Cursive'], ['Meroitic_Hieroglyphs', 'Meroitic_Hieroglyphs'], ['Malayalam', 'Malayalam'], ['Mongolian', 'Mongolian'], ['Mro', 'Mro'], ['Meetei_Mayek', 'Meetei_Mayek'], ['Multani', 'Multani'], ['Myanmar', 'Myanmar'], ['Nag_Mundari', 'Nag_Mundari'], ['Nandinagari', 'Nandinagari'], ['Old_North_Arabian', 'Old_North_Arabian'], ['Nabataean', 'Nabataean'], ['Nko', 'Nko'], ['Nushu', 'Nushu'], ['Ogham', 'Ogham'], ['Ol_Chiki', 'Ol_Chiki'], ['Old_Turkic', 'Old_Turkic'], ['Oriya', 'Oriya'], ['Osage', 'Osage'], ['Osmanya', 'Osmanya'], ['Old_Uyghur', 'Old_Uyghur'], ['Palmyrene', 'Palmyrene'], ['Pau_Cin_Hau', 'Pau_Cin_Hau'], ['Old_Permic', 'Old_Permic'], ['Phags_Pa', 'Phags_Pa'], ['Inscriptional_Pahlavi', 'Inscriptional_Pahlavi'], ['Psalter_Pahlavi', 'Psalter_Pahlavi'], ['Phoenician', 'Phoenician'], ['Miao', 'Miao'], ['Inscriptional_Parthian', 'Inscriptional_Parthian'], ['Rejang', 'Rejang'], ['Hanifi_Rohingya', 'Hanifi_Rohingya'], ['Runic', 'Runic'], ['Samaritan', 'Samaritan'], ['Old_South_Arabian', 'Old_South_Arabian'], ['Saurashtra', 'Saurashtra'], ['SignWriting', 'SignWriting'], ['Shavian', 'Shavian'], ['Sharada', 'Sharada'], ['Siddham', 'Siddham'], ['Khudawadi', 'Khudawadi'], ['Sinhala', 'Sinhala'], ['Sogdian', 'Sogdian'], ['Old_Sogdian', 'Old_Sogdian'], ['Sora_Sompeng', 'Sora_Sompeng'], ['Soyombo', 'Soyombo'], ['Sundanese', 'Sundanese'], ['Syloti_Nagri', 'Syloti_Nagri'], ['Syriac', 'Syriac'], ['Tagbanwa', 'Tagbanwa'], ['Takri', 'Takri'], ['Tai_Le', 'Tai_Le'], ['New_Tai_Lue', 'New_Tai_Lue'], ['Tamil', 'Tamil'], ['Tangut', 'Tangut'], ['Tai_Viet', 'Tai_Viet'], ['Telugu', 'Telugu'], ['Tifinagh', 'Tifinagh'], ['Tagalog', 'Tagalog'], ['Thaana', 'Thaana'], ['Tibetan', 'Tibetan'], ['Tirhuta', 'Tirhuta'], ['Tangsa', 'Tangsa'], ['Ugaritic', 'Ugaritic'], ['Vai', 'Vai'], ['Vithkuqi', 'Vithkuqi'], ['Warang_Citi', 'Warang_Citi'], ['Wancho', 'Wancho'], ['Old_Persian', 'Old_Persian'], ['Cuneiform', 'Cuneiform'], ['Yezidi', 'Yezidi'], ['Yi', 'Yi'], ['Zanabazar_Square', 'Zanabazar_Square'], ['Inherited', 'Inherited'], ['Common', 'Common'], ['Unknown', 'Unknown']])]]);","const set = require('regenerate')();\nset.addRange(0x10880, 0x1089E).addRange(0x108A7, 0x108AF);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x1B80, 0x1BBF).addRange(0x1CC0, 0x1CC7);\nmodule.exports = set;","var copyArray = require('./_copyArray'),\n isIndex = require('./_isIndex');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\nfunction reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n}\n\nmodule.exports = reorder;\n","var composeArgs = require('./_composeArgs'),\n composeArgsRight = require('./_composeArgsRight'),\n replaceHolders = require('./_replaceHolders');\n\n/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\nfunction mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n}\n\nmodule.exports = mergeData;\n","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n tag.appendChild(document.createTextNode(''));\n return tag;\n}\nvar StyleSheet = /*#__PURE__*/\nfunction () {\n function StyleSheet(options) {\n this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.before = null;\n }\n var _proto = StyleSheet.prototype;\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n var _tag = createStyleElement(this);\n var before;\n if (this.tags.length === 0) {\n before = this.before;\n } else {\n before = this.tags[this.tags.length - 1].nextSibling;\n }\n this.container.insertBefore(_tag, before);\n this.tags.push(_tag);\n }\n var tag = this.tags[this.tags.length - 1];\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n try {\n // this is a really hot path\n // we check the second character first because having \"i\"\n // as the second character will happen less often than\n // having \"@\" as the first character\n var isImportRule = rule.charCodeAt(1) === 105 && rule.charCodeAt(0) === 64; // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n\n sheet.insertRule(rule,\n // we need to insert @import rules before anything else\n // otherwise there will be an error\n // technically this means that the @import rules will\n // _usually_(not always since there could be multiple style tags)\n // be the first ones in prod and generally later in dev\n // this shouldn't really matter in the real world though\n // @import is generally only used for font faces from google fonts and etc.\n // so while this could be technically correct then it would be slower and larger\n // for a tiny bit of correctness that won't matter in the real world\n isImportRule ? 0 : sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n this.ctr++;\n };\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n return StyleSheet;\n}();\nexport { StyleSheet };","function stylis_min(W) {\n function M(d, c, e, h, a) {\n for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n g = e.charCodeAt(l);\n l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n if (0 === b + n + v + m) {\n if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n switch (g) {\n case 32:\n case 9:\n case 59:\n case 13:\n case 10:\n break;\n default:\n f += e.charAt(l);\n }\n g = 59;\n }\n switch (g) {\n case 123:\n f = f.trim();\n q = f.charCodeAt(0);\n k = 1;\n for (t = ++l; l < B;) {\n switch (g = e.charCodeAt(l)) {\n case 123:\n k++;\n break;\n case 125:\n k--;\n break;\n case 47:\n switch (g = e.charCodeAt(l + 1)) {\n case 42:\n case 47:\n a: {\n for (u = l + 1; u < J; ++u) {\n switch (e.charCodeAt(u)) {\n case 47:\n if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n l = u + 1;\n break a;\n }\n break;\n case 10:\n if (47 === g) {\n l = u + 1;\n break a;\n }\n }\n }\n l = u;\n }\n }\n break;\n case 91:\n g++;\n case 40:\n g++;\n case 34:\n case 39:\n for (; l++ < J && e.charCodeAt(l) !== g;) {}\n }\n if (0 === k) break;\n l++;\n }\n k = e.substring(t, l);\n 0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n switch (q) {\n case 64:\n 0 < r && (f = f.replace(N, ''));\n g = f.charCodeAt(1);\n switch (g) {\n case 100:\n case 109:\n case 115:\n case 45:\n r = c;\n break;\n default:\n r = O;\n }\n k = M(c, r, k, g, a + 1);\n t = k.length;\n 0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n if (0 < t) switch (g) {\n case 115:\n f = f.replace(da, ea);\n case 100:\n case 109:\n case 45:\n k = f + '{' + k + '}';\n break;\n case 107:\n f = f.replace(fa, '$1 $2');\n k = f + '{' + k + '}';\n k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n break;\n default:\n k = f + k, 112 === h && (k = (p += k, ''));\n } else k = '';\n break;\n default:\n k = M(c, X(c, f, I), k, h, a + 1);\n }\n F += k;\n k = I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n break;\n case 125:\n case 59:\n f = (0 < r ? f.replace(N, '') : f).trim();\n if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n case 0:\n break;\n case 64:\n if (105 === g || 99 === g) {\n G += f + e.charAt(l);\n break;\n }\n default:\n 58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n }\n I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n }\n }\n switch (g) {\n case 13:\n case 10:\n 47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n 0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n z = 1;\n D++;\n break;\n case 59:\n case 125:\n if (0 === b + n + v + m) {\n z++;\n break;\n }\n default:\n z++;\n y = e.charAt(l);\n switch (g) {\n case 9:\n case 32:\n if (0 === n + m + b) switch (x) {\n case 44:\n case 58:\n case 9:\n case 32:\n y = '';\n break;\n default:\n 32 !== g && (y = ' ');\n }\n break;\n case 0:\n y = '\\\\0';\n break;\n case 12:\n y = '\\\\f';\n break;\n case 11:\n y = '\\\\v';\n break;\n case 38:\n 0 === n + b + m && (r = I = 1, y = '\\f' + y);\n break;\n case 108:\n if (0 === n + b + m + E && 0 < u) switch (l - u) {\n case 2:\n 112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n case 8:\n 111 === K && (E = K);\n }\n break;\n case 58:\n 0 === n + b + m && (u = l);\n break;\n case 44:\n 0 === b + v + n + m && (r = 1, y += '\\r');\n break;\n case 34:\n case 39:\n 0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n break;\n case 91:\n 0 === n + b + v && m++;\n break;\n case 93:\n 0 === n + b + v && m--;\n break;\n case 41:\n 0 === n + b + m && v--;\n break;\n case 40:\n if (0 === n + b + m) {\n if (0 === q) switch (2 * x + 3 * K) {\n case 533:\n break;\n default:\n q = 1;\n }\n v++;\n }\n break;\n case 64:\n 0 === b + v + n + m + u + k && (k = 1);\n break;\n case 42:\n case 47:\n if (!(0 < n + m + v)) switch (b) {\n case 0:\n switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n case 235:\n b = 47;\n break;\n case 220:\n t = l, b = 42;\n }\n break;\n case 42:\n 47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n }\n }\n 0 === b && (f += y);\n }\n K = x;\n x = g;\n l++;\n }\n t = p.length;\n if (0 < t) {\n r = c;\n if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n p = r.join(',') + '{' + p + '}';\n if (0 !== w * E) {\n 2 !== w || L(p, 2) || (E = 0);\n switch (E) {\n case 111:\n p = p.replace(ha, ':-moz-$1') + p;\n break;\n case 112:\n p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n }\n E = 0;\n }\n }\n return G + p + F;\n }\n function X(d, c, e) {\n var h = c.trim().split(ia);\n c = h;\n var a = h.length,\n m = d.length;\n switch (m) {\n case 0:\n case 1:\n var b = 0;\n for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n c[b] = Z(d, c[b], e).trim();\n }\n break;\n default:\n var v = b = 0;\n for (c = []; b < a; ++b) {\n for (var n = 0; n < m; ++n) {\n c[v++] = Z(d[n] + ' ', h[b], e).trim();\n }\n }\n }\n return c;\n }\n function Z(d, c, e) {\n var h = c.charCodeAt(0);\n 33 > h && (h = (c = c.trim()).charCodeAt(0));\n switch (h) {\n case 38:\n return c.replace(F, '$1' + d.trim());\n case 58:\n return d.trim() + c.replace(F, '$1' + d.trim());\n default:\n if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n }\n return d + c;\n }\n function P(d, c, e, h) {\n var a = d + ';',\n m = 2 * c + 3 * e + 4 * h;\n if (944 === m) {\n d = a.indexOf(':', 9) + 1;\n var b = a.substring(d, a.length - 1).trim();\n b = a.substring(0, d).trim() + b + ';';\n return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n }\n if (0 === w || 2 === w && !L(a, 1)) return a;\n switch (m) {\n case 1015:\n return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n case 951:\n return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n case 963:\n return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n case 1009:\n if (100 !== a.charCodeAt(4)) break;\n case 969:\n case 942:\n return '-webkit-' + a + a;\n case 978:\n return '-webkit-' + a + '-moz-' + a + a;\n case 1019:\n case 983:\n return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n case 883:\n if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n break;\n case 932:\n if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n case 103:\n return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n case 115:\n return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n case 98:\n return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n }\n return '-webkit-' + a + '-ms-' + a + a;\n case 964:\n return '-webkit-' + a + '-ms-flex-' + a + a;\n case 1023:\n if (99 !== a.charCodeAt(8)) break;\n b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n case 1005:\n return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n case 1e3:\n b = a.substring(13).trim();\n c = b.indexOf('-') + 1;\n switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n case 226:\n b = a.replace(G, 'tb');\n break;\n case 232:\n b = a.replace(G, 'tb-rl');\n break;\n case 220:\n b = a.replace(G, 'lr');\n break;\n default:\n return a;\n }\n return '-webkit-' + a + '-ms-' + b + a;\n case 1017:\n if (-1 === a.indexOf('sticky', 9)) break;\n case 975:\n c = (a = d).length - 10;\n b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n case 203:\n if (111 > b.charCodeAt(8)) break;\n case 115:\n a = a.replace(b, '-webkit-' + b) + ';' + a;\n break;\n case 207:\n case 102:\n a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n }\n return a + ';';\n case 938:\n if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n case 105:\n return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n case 115:\n return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n default:\n return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n }\n break;\n case 973:\n case 989:\n if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n case 931:\n case 953:\n if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n break;\n case 962:\n if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n }\n return a;\n }\n function L(d, c) {\n var e = d.indexOf(1 === c ? ':' : '{'),\n h = d.substring(0, 3 !== c ? e : 10);\n e = d.substring(e + 1, d.length - 1);\n return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n }\n function ea(d, c) {\n var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n }\n function H(d, c, e, h, a, m, b, v, n, q) {\n for (var g = 0, x = c, w; g < A; ++g) {\n switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n case void 0:\n case !1:\n case !0:\n case null:\n break;\n default:\n x = w;\n }\n }\n if (x !== c) return x;\n }\n function T(d) {\n switch (d) {\n case void 0:\n case null:\n A = S.length = 0;\n break;\n default:\n if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n T(d[c]);\n } else Y = !!d | 0;\n }\n return T;\n }\n function U(d) {\n d = d.prefix;\n void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n return U;\n }\n function B(d, c) {\n var e = d;\n 33 > e.charCodeAt(0) && (e = e.trim());\n V = e;\n e = [V];\n if (0 < A) {\n var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n void 0 !== h && 'string' === typeof h && (c = h);\n }\n var a = M(O, e, c, 0, 0);\n 0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n V = '';\n E = 0;\n z = D = 1;\n return a;\n }\n var ca = /^\\0+/g,\n N = /[\\0\\r\\f]/g,\n aa = /: */g,\n ka = /zoo|gra/,\n ma = /([,: ])(transform)/g,\n ia = /,\\r+?/g,\n F = /([\\t\\r\\n ])*\\f?&/g,\n fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n Q = /::(place)/g,\n ha = /:(read-only)/g,\n G = /[svh]\\w+-[tblr]{2}/,\n da = /\\(\\s*(.*)\\s*\\)/g,\n oa = /([\\s\\S]*?);/g,\n ba = /-self|flex-/g,\n na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n ja = /([^-])(image-set\\()/,\n z = 1,\n D = 1,\n E = 0,\n w = 1,\n O = [],\n S = [],\n A = 0,\n R = null,\n Y = 0,\n V = '';\n B.use = T;\n B.set = U;\n void 0 !== W && U(W);\n return B;\n}\nexport default stylis_min;","import { StyleSheet } from '@emotion/sheet';\nimport Stylis from '@emotion/stylis';\nimport '@emotion/weak-memoize';\n\n// https://github.com/thysultan/stylis.js/tree/master/plugins/rule-sheet\n// inlined to avoid umd wrapper and peerDep warnings/installing stylis\n// since we use stylis after closure compiler\nvar delimiter = '/*|*/';\nvar needle = delimiter + '}';\nfunction toSheet(block) {\n if (block) {\n Sheet.current.insert(block + '}');\n }\n}\nvar Sheet = {\n current: null\n};\nvar ruleSheet = function ruleSheet(context, content, selectors, parents, line, column, length, ns, depth, at) {\n switch (context) {\n // property\n case 1:\n {\n switch (content.charCodeAt(0)) {\n case 64:\n {\n // @import\n Sheet.current.insert(content + ';');\n return '';\n }\n // charcode for l\n\n case 108:\n {\n // charcode for b\n // this ignores label\n if (content.charCodeAt(2) === 98) {\n return '';\n }\n }\n }\n break;\n }\n // selector\n\n case 2:\n {\n if (ns === 0) return content + delimiter;\n break;\n }\n // at-rule\n\n case 3:\n {\n switch (ns) {\n // @font-face, @page\n case 102:\n case 112:\n {\n Sheet.current.insert(selectors[0] + content);\n return '';\n }\n default:\n {\n return content + (at === 0 ? delimiter : '');\n }\n }\n }\n case -2:\n {\n content.split(needle).forEach(toSheet);\n }\n }\n};\nvar createCache = function createCache(options) {\n if (options === undefined) options = {};\n var key = options.key || 'css';\n var stylisOptions;\n if (options.prefix !== undefined) {\n stylisOptions = {\n prefix: options.prefix\n };\n }\n var stylis = new Stylis(stylisOptions);\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n var inserted = {}; // $FlowFixMe\n\n var container;\n {\n container = options.container || document.head;\n var nodes = document.querySelectorAll(\"style[data-emotion-\" + key + \"]\");\n Array.prototype.forEach.call(nodes, function (node) {\n var attrib = node.getAttribute(\"data-emotion-\" + key); // $FlowFixMe\n\n attrib.split(' ').forEach(function (id) {\n inserted[id] = true;\n });\n if (node.parentNode !== container) {\n container.appendChild(node);\n }\n });\n }\n var _insert;\n {\n stylis.use(options.stylisPlugins)(ruleSheet);\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n var name = serialized.name;\n Sheet.current = sheet;\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n var map = serialized.map;\n Sheet.current = {\n insert: function insert(rule) {\n sheet.insert(rule + map);\n }\n };\n }\n stylis(selector, serialized.styles);\n if (shouldCache) {\n cache.inserted[name] = true;\n }\n };\n }\n if (process.env.NODE_ENV !== 'production') {\n // https://esbench.com/bench/5bf7371a4cd7e6009ef61d0a\n var commentStart = /\\/\\*/g;\n var commentEnd = /\\*\\//g;\n stylis.use(function (context, content) {\n switch (context) {\n case -1:\n {\n while (commentStart.test(content)) {\n commentEnd.lastIndex = commentStart.lastIndex;\n if (commentEnd.test(content)) {\n commentStart.lastIndex = commentEnd.lastIndex;\n continue;\n }\n throw new Error('Your styles have an unterminated comment (\"/*\" without corresponding \"*/\").');\n }\n commentStart.lastIndex = 0;\n break;\n }\n }\n });\n stylis.use(function (context, content, selectors) {\n switch (context) {\n case -1:\n {\n var flag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n var unsafePseudoClasses = content.match(/(:first|:nth|:nth-last)-child/g);\n if (unsafePseudoClasses && cache.compat !== true) {\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n var ignoreRegExp = new RegExp(unsafePseudoClass + \".*\\\\/\\\\* \" + flag + \" \\\\*\\\\/\");\n var ignore = ignoreRegExp.test(content);\n if (unsafePseudoClass && !ignore) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n }\n });\n }\n break;\n }\n }\n });\n }\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n return cache;\n};\nexport default createCache;","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className]);\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n if (\n // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false ||\n // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false && cache.compat !== undefined) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n do {\n var maybeStyles = cache.insert(\".\" + className, current, cache.sheet, true);\n current = current.next;\n } while (current !== undefined);\n }\n};\nexport { getRegisteredStyles, insertStyles };","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k = /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^= /* k >>> r: */\n k >>> 24;\n h = /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^ /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h = /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n h ^= h >>> 13;\n h = /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\nexport default murmur2;","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\nexport default unitlessKeys;","function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\nexport default memoize;","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\nvar processStyleName = memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n return value;\n};\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(attr|calc|counters?|url)\\(/;\n var contentValues = ['normal', 'none', 'counter', 'open-quote', 'close-quote', 'no-open-quote', 'no-close-quote', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n console.error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n var processed = oldProcessStyleValue(key, value);\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n return processed;\n };\n}\nvar shouldWarnAboutInterpolatingClassNameFromCss = true;\nfunction handleInterpolation(mergedProps, registered, interpolation, couldBeSelectorInterpolation) {\n if (interpolation == null) {\n return '';\n }\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n }\n return interpolation;\n }\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n var styles = interpolation.styles + \";\";\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n return styles;\n }\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result, couldBeSelectorInterpolation);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n break;\n }\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n if (registered == null) {\n return interpolation;\n }\n var cached = registered[interpolation];\n if (process.env.NODE_ENV !== 'production' && couldBeSelectorInterpolation && shouldWarnAboutInterpolatingClassNameFromCss && cached !== undefined) {\n console.error('Interpolating a className from css`` is not recommended and will cause problems with composition.\\n' + 'Interpolating a className from css`` will be completely unsupported in a future major version of Emotion');\n shouldWarnAboutInterpolatingClassNameFromCss = false;\n }\n return cached !== undefined && !couldBeSelectorInterpolation ? cached : interpolation;\n}\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i], false);\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n }\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value, false);\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n return string;\n}\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*;/g;\nvar sourceMapPattern;\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings, false);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i], styles.charCodeAt(styles.length - 1) === 46);\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n styles += strings[i];\n }\n }\n var sourceMap;\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' +\n // $FlowFixMe we know it's not null\n match[1];\n }\n var name = hashString(styles) + identifierName;\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\nexport { serializeStyles };","import '@babel/runtime/helpers/inheritsLoose';\nimport { createContext, forwardRef, createElement, Fragment } from 'react';\nimport createCache from '@emotion/cache';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar EmotionCacheContext = /*#__PURE__*/createContext(\n// we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? createCache() : null);\nvar ThemeContext = /*#__PURE__*/createContext({});\nvar CacheProvider = EmotionCacheContext.Provider;\nvar withEmotionCache = function withEmotionCache(func) {\n var render = function render(props, ref) {\n return /*#__PURE__*/createElement(EmotionCacheContext.Consumer, null, function (cache) {\n return func(props, cache, ref);\n });\n }; // $FlowFixMe\n\n return /*#__PURE__*/forwardRef(render);\n};\n\n// thus we only need to replace what is a valid character for JS, but not for CSS\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' &&\n // check if there is a css declaration\n props.css.indexOf(':') !== -1) {\n throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/css' like this: css`\" + props.css + \"`\");\n }\n var newProps = {};\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n newProps[typePropName] = type; // TODO: check if this still works with all of those different JSX functions\n\n if (process.env.NODE_ENV !== 'production') {\n var error = new Error();\n if (error.stack) {\n // chrome\n var match = error.stack.match(/at (?:Object\\.|Module\\.|)(?:jsx|createEmotionProps).*\\n\\s+at (?:Object\\.|)([A-Z][A-Za-z$]+) /);\n if (!match) {\n // safari and firefox\n match = error.stack.match(/.*\\n([A-Z][A-Za-z$]+)@/);\n }\n if (match) {\n newProps[labelPropName] = sanitizeIdentifier(match[1]);\n }\n }\n }\n return newProps;\n};\nvar Noop = function Noop() {\n return null;\n};\nvar render = function render(cache, props, theme, ref) {\n var cssProp = theme === null ? props.css : props.css(theme); // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n var type = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n var serialized = serializeStyles(registeredStyles);\n if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n var rules = insertStyles(cache, serialized, typeof type === 'string');\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n for (var key in props) {\n if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n newProps[key] = props[key];\n }\n }\n newProps.ref = ref;\n newProps.className = className;\n var ele = /*#__PURE__*/createElement(type, newProps);\n var possiblyStyleElement = /*#__PURE__*/createElement(Noop, null);\n return /*#__PURE__*/createElement(Fragment, null, possiblyStyleElement, ele);\n}; // eslint-disable-next-line no-undef\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n if (typeof props.css === 'function') {\n return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n return render(cache, props, theme, ref);\n });\n }\n return render(cache, props, null, ref);\n});\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\n}\nexport { CacheProvider as C, Emotion as E, ThemeContext as T, createEmotionProps as c, hasOwnProperty as h, withEmotionCache as w };","import { serializeStyles } from '@emotion/serialize';\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return serializeStyles(args);\n}\nexport default css;","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport { createElement, Component, Fragment } from 'react';\nimport '@emotion/cache';\nimport { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext } from './emotion-element-04d85134.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, w as withEmotionCache } from './emotion-element-04d85134.browser.esm.js';\nimport { insertStyles, getRegisteredStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { StyleSheet } from '@emotion/sheet';\nimport css from '@emotion/css';\nexport { default as css } from '@emotion/css';\nvar jsx = function jsx(type, props) {\n var args = arguments;\n if (props == null || !hasOwnProperty.call(props, 'css')) {\n // $FlowFixMe\n return createElement.apply(undefined, args);\n }\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n } // $FlowFixMe\n\n return createElement.apply(null, createElementArgArray);\n};\nvar warnedAboutCssPropForGlobal = false;\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && (\n // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n var styles = props.styles;\n if (typeof styles === 'function') {\n return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n var serialized = serializeStyles([styles(theme)]);\n return /*#__PURE__*/createElement(InnerGlobal, {\n serialized: serialized,\n cache: cache\n });\n });\n }\n var serialized = serializeStyles([styles]);\n return /*#__PURE__*/createElement(InnerGlobal, {\n serialized: serialized,\n cache: cache\n });\n});\n\n// maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\nvar InnerGlobal = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(InnerGlobal, _React$Component);\n function InnerGlobal(props, context, updater) {\n return _React$Component.call(this, props, context, updater) || this;\n }\n var _proto = InnerGlobal.prototype;\n _proto.componentDidMount = function componentDidMount() {\n this.sheet = new StyleSheet({\n key: this.props.cache.key + \"-global\",\n nonce: this.props.cache.sheet.nonce,\n container: this.props.cache.sheet.container\n }); // $FlowFixMe\n\n var node = document.querySelector(\"style[data-emotion-\" + this.props.cache.key + \"=\\\"\" + this.props.serialized.name + \"\\\"]\");\n if (node !== null) {\n this.sheet.tags.push(node);\n }\n if (this.props.cache.sheet.tags.length) {\n this.sheet.before = this.props.cache.sheet.tags[0];\n }\n this.insertStyles();\n };\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (prevProps.serialized.name !== this.props.serialized.name) {\n this.insertStyles();\n }\n };\n _proto.insertStyles = function insertStyles$1() {\n if (this.props.serialized.next !== undefined) {\n // insert keyframes\n insertStyles(this.props.cache, this.props.serialized.next, true);\n }\n if (this.sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = this.sheet.tags[this.sheet.tags.length - 1].nextElementSibling;\n this.sheet.before = element;\n this.sheet.flush();\n }\n this.props.cache.insert(\"\", this.props.serialized, this.sheet, false);\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.sheet.flush();\n };\n _proto.render = function render() {\n return null;\n };\n return InnerGlobal;\n}(Component);\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n switch (typeof arg) {\n case 'boolean':\n break;\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n toAdd = '';\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n break;\n }\n default:\n {\n toAdd = arg;\n }\n }\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n return cls;\n};\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n if (registeredStyles.length < 2) {\n return className;\n }\n return rawClassName + css(registeredStyles);\n}\nvar Noop = function Noop() {\n return null;\n};\nvar ClassNames = withEmotionCache(function (props, context) {\n return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n var hasRendered = false;\n var css = function css() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('css can only be used during render');\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var serialized = serializeStyles(args, context.registered);\n {\n insertStyles(context, serialized, false);\n }\n return context.key + \"-\" + serialized.name;\n };\n var cx = function cx() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('cx can only be used during render');\n }\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return merge(context.registered, css, classnames(args));\n };\n var content = {\n css: css,\n cx: cx,\n theme: theme\n };\n var ele = props.children(content);\n hasRendered = true;\n var possiblyStyleElement = /*#__PURE__*/createElement(Noop, null);\n return /*#__PURE__*/createElement(Fragment, null, possiblyStyleElement, ele);\n });\n});\nexport { ClassNames, Global, jsx as createElement, jsx, keyframes };","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar b = \"function\" === typeof Symbol && Symbol.for,\n c = b ? Symbol.for(\"react.element\") : 60103,\n d = b ? Symbol.for(\"react.portal\") : 60106,\n e = b ? Symbol.for(\"react.fragment\") : 60107,\n f = b ? Symbol.for(\"react.strict_mode\") : 60108,\n g = b ? Symbol.for(\"react.profiler\") : 60114,\n h = b ? Symbol.for(\"react.provider\") : 60109,\n k = b ? Symbol.for(\"react.context\") : 60110,\n l = b ? Symbol.for(\"react.async_mode\") : 60111,\n m = b ? Symbol.for(\"react.concurrent_mode\") : 60111,\n n = b ? Symbol.for(\"react.forward_ref\") : 60112,\n p = b ? Symbol.for(\"react.suspense\") : 60113,\n q = b ? Symbol.for(\"react.suspense_list\") : 60120,\n r = b ? Symbol.for(\"react.memo\") : 60115,\n t = b ? Symbol.for(\"react.lazy\") : 60116,\n v = b ? Symbol.for(\"react.block\") : 60121,\n w = b ? Symbol.for(\"react.fundamental\") : 60117,\n x = b ? Symbol.for(\"react.responder\") : 60118,\n y = b ? Symbol.for(\"react.scope\") : 60119;\nfunction z(a) {\n if (\"object\" === typeof a && null !== a) {\n var u = a.$$typeof;\n switch (u) {\n case c:\n switch (a = a.type, a) {\n case l:\n case m:\n case e:\n case g:\n case f:\n case p:\n return a;\n default:\n switch (a = a && a.$$typeof, a) {\n case k:\n case n:\n case t:\n case r:\n case h:\n return a;\n default:\n return u;\n }\n }\n case d:\n return u;\n }\n }\n}\nfunction A(a) {\n return z(a) === m;\n}\nexports.AsyncMode = l;\nexports.ConcurrentMode = m;\nexports.ContextConsumer = k;\nexports.ContextProvider = h;\nexports.Element = c;\nexports.ForwardRef = n;\nexports.Fragment = e;\nexports.Lazy = t;\nexports.Memo = r;\nexports.Portal = d;\nexports.Profiler = g;\nexports.StrictMode = f;\nexports.Suspense = p;\nexports.isAsyncMode = function (a) {\n return A(a) || z(a) === l;\n};\nexports.isConcurrentMode = A;\nexports.isContextConsumer = function (a) {\n return z(a) === k;\n};\nexports.isContextProvider = function (a) {\n return z(a) === h;\n};\nexports.isElement = function (a) {\n return \"object\" === typeof a && null !== a && a.$$typeof === c;\n};\nexports.isForwardRef = function (a) {\n return z(a) === n;\n};\nexports.isFragment = function (a) {\n return z(a) === e;\n};\nexports.isLazy = function (a) {\n return z(a) === t;\n};\nexports.isMemo = function (a) {\n return z(a) === r;\n};\nexports.isPortal = function (a) {\n return z(a) === d;\n};\nexports.isProfiler = function (a) {\n return z(a) === g;\n};\nexports.isStrictMode = function (a) {\n return z(a) === f;\n};\nexports.isSuspense = function (a) {\n return z(a) === p;\n};\nexports.isValidElementType = function (a) {\n return \"string\" === typeof a || \"function\" === typeof a || a === e || a === m || a === g || a === f || a === p || a === q || \"object\" === typeof a && null !== a && (a.$$typeof === t || a.$$typeof === r || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n || a.$$typeof === w || a.$$typeof === x || a.$$typeof === y || a.$$typeof === v);\n};\nexports.typeOf = z;","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","const set = require('regenerate')(0x11909);\nset.addRange(0x11900, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x11935).addRange(0x11937, 0x11938).addRange(0x1193B, 0x11946).addRange(0x11950, 0x11959);\nmodule.exports = set;","const set = require('regenerate')(0x11FB0);\nset.addRange(0xA4D0, 0xA4FF);\nmodule.exports = set;","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","const set = require('regenerate')(0xA9CF);\nset.addRange(0x1A00, 0x1A1B).addRange(0x1A1E, 0x1A1F);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x30, 0x39).addRange(0x41, 0x46).addRange(0x61, 0x66);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1BC9C, 0x1BCA3);\nmodule.exports = set;","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.hasIndices) result += 'd';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.unicodeSets) result += 'v';\n if (that.sticky) result += 'y';\n return result;\n};\n","const set = require('regenerate')();\nset.addRange(0x2FF2, 0x2FF3);\nmodule.exports = set;","var arraySlice = require('../internals/array-slice-simple');\n\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n var length = array.length;\n var middle = floor(length / 2);\n return length < 8 ? insertionSort(array, comparefn) : merge(\n array,\n mergeSort(arraySlice(array, 0, middle), comparefn),\n mergeSort(arraySlice(array, middle), comparefn),\n comparefn\n );\n};\n\nvar insertionSort = function (array, comparefn) {\n var length = array.length;\n var i = 1;\n var element, j;\n\n while (i < length) {\n j = i;\n element = array[i];\n while (j && comparefn(array[j - 1], element) > 0) {\n array[j] = array[--j];\n }\n if (j !== i++) array[j] = element;\n } return array;\n};\n\nvar merge = function (array, left, right, comparefn) {\n var llength = left.length;\n var rlength = right.length;\n var lindex = 0;\n var rindex = 0;\n\n while (lindex < llength || rindex < rlength) {\n array[lindex + rindex] = (lindex < llength && rindex < rlength)\n ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n : lindex < llength ? left[lindex++] : right[rindex++];\n } return array;\n};\n\nmodule.exports = mergeSort;\n","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import t, { Component as e } from \"react\";\nimport r from \"prop-types\";\nimport n from \"react-fast-compare\";\nimport i from \"invariant\";\nimport o from \"shallowequal\";\nfunction a() {\n return a = Object.assign || function (t) {\n for (var e = 1; e < arguments.length; e++) {\n var r = arguments[e];\n for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (t[n] = r[n]);\n }\n return t;\n }, a.apply(this, arguments);\n}\nfunction s(t, e) {\n t.prototype = Object.create(e.prototype), t.prototype.constructor = t, c(t, e);\n}\nfunction c(t, e) {\n return c = Object.setPrototypeOf || function (t, e) {\n return t.__proto__ = e, t;\n }, c(t, e);\n}\nfunction u(t, e) {\n if (null == t) return {};\n var r,\n n,\n i = {},\n o = Object.keys(t);\n for (n = 0; n < o.length; n++) e.indexOf(r = o[n]) >= 0 || (i[r] = t[r]);\n return i;\n}\nvar l = {\n BASE: \"base\",\n BODY: \"body\",\n HEAD: \"head\",\n HTML: \"html\",\n LINK: \"link\",\n META: \"meta\",\n NOSCRIPT: \"noscript\",\n SCRIPT: \"script\",\n STYLE: \"style\",\n TITLE: \"title\",\n FRAGMENT: \"Symbol(react.fragment)\"\n },\n p = {\n rel: [\"amphtml\", \"canonical\", \"alternate\"]\n },\n f = {\n type: [\"application/ld+json\"]\n },\n d = {\n charset: \"\",\n name: [\"robots\", \"description\"],\n property: [\"og:type\", \"og:title\", \"og:url\", \"og:image\", \"og:image:alt\", \"og:description\", \"twitter:url\", \"twitter:title\", \"twitter:description\", \"twitter:image\", \"twitter:image:alt\", \"twitter:card\", \"twitter:site\"]\n },\n h = Object.keys(l).map(function (t) {\n return l[t];\n }),\n m = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n },\n y = Object.keys(m).reduce(function (t, e) {\n return t[m[e]] = e, t;\n }, {}),\n T = function (t, e) {\n for (var r = t.length - 1; r >= 0; r -= 1) {\n var n = t[r];\n if (Object.prototype.hasOwnProperty.call(n, e)) return n[e];\n }\n return null;\n },\n g = function (t) {\n var e = T(t, l.TITLE),\n r = T(t, \"titleTemplate\");\n if (Array.isArray(e) && (e = e.join(\"\")), r && e) return r.replace(/%s/g, function () {\n return e;\n });\n var n = T(t, \"defaultTitle\");\n return e || n || void 0;\n },\n b = function (t) {\n return T(t, \"onChangeClientState\") || function () {};\n },\n v = function (t, e) {\n return e.filter(function (e) {\n return void 0 !== e[t];\n }).map(function (e) {\n return e[t];\n }).reduce(function (t, e) {\n return a({}, t, e);\n }, {});\n },\n A = function (t, e) {\n return e.filter(function (t) {\n return void 0 !== t[l.BASE];\n }).map(function (t) {\n return t[l.BASE];\n }).reverse().reduce(function (e, r) {\n if (!e.length) for (var n = Object.keys(r), i = 0; i < n.length; i += 1) {\n var o = n[i].toLowerCase();\n if (-1 !== t.indexOf(o) && r[o]) return e.concat(r);\n }\n return e;\n }, []);\n },\n C = function (t, e, r) {\n var n = {};\n return r.filter(function (e) {\n return !!Array.isArray(e[t]) || (void 0 !== e[t] && console && \"function\" == typeof console.warn && console.warn(\"Helmet: \" + t + ' should be of type \"Array\". Instead found type \"' + typeof e[t] + '\"'), !1);\n }).map(function (e) {\n return e[t];\n }).reverse().reduce(function (t, r) {\n var i = {};\n r.filter(function (t) {\n for (var r, o = Object.keys(t), a = 0; a < o.length; a += 1) {\n var s = o[a],\n c = s.toLowerCase();\n -1 === e.indexOf(c) || \"rel\" === r && \"canonical\" === t[r].toLowerCase() || \"rel\" === c && \"stylesheet\" === t[c].toLowerCase() || (r = c), -1 === e.indexOf(s) || \"innerHTML\" !== s && \"cssText\" !== s && \"itemprop\" !== s || (r = s);\n }\n if (!r || !t[r]) return !1;\n var u = t[r].toLowerCase();\n return n[r] || (n[r] = {}), i[r] || (i[r] = {}), !n[r][u] && (i[r][u] = !0, !0);\n }).reverse().forEach(function (e) {\n return t.push(e);\n });\n for (var o = Object.keys(i), s = 0; s < o.length; s += 1) {\n var c = o[s],\n u = a({}, n[c], i[c]);\n n[c] = u;\n }\n return t;\n }, []).reverse();\n },\n O = function (t, e) {\n if (Array.isArray(t) && t.length) for (var r = 0; r < t.length; r += 1) if (t[r][e]) return !0;\n return !1;\n },\n S = function (t) {\n return Array.isArray(t) ? t.join(\"\") : t;\n },\n E = function (t, e) {\n return Array.isArray(t) ? t.reduce(function (t, r) {\n return function (t, e) {\n for (var r = Object.keys(t), n = 0; n < r.length; n += 1) if (e[r[n]] && e[r[n]].includes(t[r[n]])) return !0;\n return !1;\n }(r, e) ? t.priority.push(r) : t.default.push(r), t;\n }, {\n priority: [],\n default: []\n }) : {\n default: t\n };\n },\n I = function (t, e) {\n var r;\n return a({}, t, ((r = {})[e] = void 0, r));\n },\n P = [l.NOSCRIPT, l.SCRIPT, l.STYLE],\n w = function (t, e) {\n return void 0 === e && (e = !0), !1 === e ? String(t) : String(t).replace(/&/g, \"&\").replace(//g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n },\n x = function (t) {\n return Object.keys(t).reduce(function (e, r) {\n var n = void 0 !== t[r] ? r + '=\"' + t[r] + '\"' : \"\" + r;\n return e ? e + \" \" + n : n;\n }, \"\");\n },\n L = function (t, e) {\n return void 0 === e && (e = {}), Object.keys(t).reduce(function (e, r) {\n return e[m[r] || r] = t[r], e;\n }, e);\n },\n j = function (e, r) {\n return r.map(function (r, n) {\n var i,\n o = ((i = {\n key: n\n })[\"data-rh\"] = !0, i);\n return Object.keys(r).forEach(function (t) {\n var e = m[t] || t;\n \"innerHTML\" === e || \"cssText\" === e ? o.dangerouslySetInnerHTML = {\n __html: r.innerHTML || r.cssText\n } : o[e] = r[t];\n }), t.createElement(e, o);\n });\n },\n M = function (e, r, n) {\n switch (e) {\n case l.TITLE:\n return {\n toComponent: function () {\n return n = r.titleAttributes, (i = {\n key: e = r.title\n })[\"data-rh\"] = !0, o = L(n, i), [t.createElement(l.TITLE, o, e)];\n var e, n, i, o;\n },\n toString: function () {\n return function (t, e, r, n) {\n var i = x(r),\n o = S(e);\n return i ? \"<\" + t + ' data-rh=\"true\" ' + i + \">\" + w(o, n) + \"\" : \"<\" + t + ' data-rh=\"true\">' + w(o, n) + \"\";\n }(e, r.title, r.titleAttributes, n);\n }\n };\n case \"bodyAttributes\":\n case \"htmlAttributes\":\n return {\n toComponent: function () {\n return L(r);\n },\n toString: function () {\n return x(r);\n }\n };\n default:\n return {\n toComponent: function () {\n return j(e, r);\n },\n toString: function () {\n return function (t, e, r) {\n return e.reduce(function (e, n) {\n var i = Object.keys(n).filter(function (t) {\n return !(\"innerHTML\" === t || \"cssText\" === t);\n }).reduce(function (t, e) {\n var i = void 0 === n[e] ? e : e + '=\"' + w(n[e], r) + '\"';\n return t ? t + \" \" + i : i;\n }, \"\"),\n o = n.innerHTML || n.cssText || \"\",\n a = -1 === P.indexOf(t);\n return e + \"<\" + t + ' data-rh=\"true\" ' + i + (a ? \"/>\" : \">\" + o + \"\");\n }, \"\");\n }(e, r, n);\n }\n };\n }\n },\n k = function (t) {\n var e = t.baseTag,\n r = t.bodyAttributes,\n n = t.encode,\n i = t.htmlAttributes,\n o = t.noscriptTags,\n a = t.styleTags,\n s = t.title,\n c = void 0 === s ? \"\" : s,\n u = t.titleAttributes,\n h = t.linkTags,\n m = t.metaTags,\n y = t.scriptTags,\n T = {\n toComponent: function () {},\n toString: function () {\n return \"\";\n }\n };\n if (t.prioritizeSeoTags) {\n var g = function (t) {\n var e = t.linkTags,\n r = t.scriptTags,\n n = t.encode,\n i = E(t.metaTags, d),\n o = E(e, p),\n a = E(r, f);\n return {\n priorityMethods: {\n toComponent: function () {\n return [].concat(j(l.META, i.priority), j(l.LINK, o.priority), j(l.SCRIPT, a.priority));\n },\n toString: function () {\n return M(l.META, i.priority, n) + \" \" + M(l.LINK, o.priority, n) + \" \" + M(l.SCRIPT, a.priority, n);\n }\n },\n metaTags: i.default,\n linkTags: o.default,\n scriptTags: a.default\n };\n }(t);\n T = g.priorityMethods, h = g.linkTags, m = g.metaTags, y = g.scriptTags;\n }\n return {\n priority: T,\n base: M(l.BASE, e, n),\n bodyAttributes: M(\"bodyAttributes\", r, n),\n htmlAttributes: M(\"htmlAttributes\", i, n),\n link: M(l.LINK, h, n),\n meta: M(l.META, m, n),\n noscript: M(l.NOSCRIPT, o, n),\n script: M(l.SCRIPT, y, n),\n style: M(l.STYLE, a, n),\n title: M(l.TITLE, {\n title: c,\n titleAttributes: u\n }, n)\n };\n },\n H = [],\n N = function (t, e) {\n var r = this;\n void 0 === e && (e = \"undefined\" != typeof document), this.instances = [], this.value = {\n setHelmet: function (t) {\n r.context.helmet = t;\n },\n helmetInstances: {\n get: function () {\n return r.canUseDOM ? H : r.instances;\n },\n add: function (t) {\n (r.canUseDOM ? H : r.instances).push(t);\n },\n remove: function (t) {\n var e = (r.canUseDOM ? H : r.instances).indexOf(t);\n (r.canUseDOM ? H : r.instances).splice(e, 1);\n }\n }\n }, this.context = t, this.canUseDOM = e, e || (t.helmet = k({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: !0,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n }));\n },\n R = t.createContext({}),\n D = r.shape({\n setHelmet: r.func,\n helmetInstances: r.shape({\n get: r.func,\n add: r.func,\n remove: r.func\n })\n }),\n U = \"undefined\" != typeof document,\n q = /*#__PURE__*/function (e) {\n function r(t) {\n var n;\n return (n = e.call(this, t) || this).helmetData = new N(n.props.context, r.canUseDOM), n;\n }\n return s(r, e), r.prototype.render = function () {\n /*#__PURE__*/return t.createElement(R.Provider, {\n value: this.helmetData.value\n }, this.props.children);\n }, r;\n }(e);\nq.canUseDOM = U, q.propTypes = {\n context: r.shape({\n helmet: r.shape()\n }),\n children: r.node.isRequired\n}, q.defaultProps = {\n context: {}\n}, q.displayName = \"HelmetProvider\";\nvar Y = function (t, e) {\n var r,\n n = document.head || document.querySelector(l.HEAD),\n i = n.querySelectorAll(t + \"[data-rh]\"),\n o = [].slice.call(i),\n a = [];\n return e && e.length && e.forEach(function (e) {\n var n = document.createElement(t);\n for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (\"innerHTML\" === i ? n.innerHTML = e.innerHTML : \"cssText\" === i ? n.styleSheet ? n.styleSheet.cssText = e.cssText : n.appendChild(document.createTextNode(e.cssText)) : n.setAttribute(i, void 0 === e[i] ? \"\" : e[i]));\n n.setAttribute(\"data-rh\", \"true\"), o.some(function (t, e) {\n return r = e, n.isEqualNode(t);\n }) ? o.splice(r, 1) : a.push(n);\n }), o.forEach(function (t) {\n return t.parentNode.removeChild(t);\n }), a.forEach(function (t) {\n return n.appendChild(t);\n }), {\n oldTags: o,\n newTags: a\n };\n },\n B = function (t, e) {\n var r = document.getElementsByTagName(t)[0];\n if (r) {\n for (var n = r.getAttribute(\"data-rh\"), i = n ? n.split(\",\") : [], o = [].concat(i), a = Object.keys(e), s = 0; s < a.length; s += 1) {\n var c = a[s],\n u = e[c] || \"\";\n r.getAttribute(c) !== u && r.setAttribute(c, u), -1 === i.indexOf(c) && i.push(c);\n var l = o.indexOf(c);\n -1 !== l && o.splice(l, 1);\n }\n for (var p = o.length - 1; p >= 0; p -= 1) r.removeAttribute(o[p]);\n i.length === o.length ? r.removeAttribute(\"data-rh\") : r.getAttribute(\"data-rh\") !== a.join(\",\") && r.setAttribute(\"data-rh\", a.join(\",\"));\n }\n },\n K = function (t, e) {\n var r = t.baseTag,\n n = t.htmlAttributes,\n i = t.linkTags,\n o = t.metaTags,\n a = t.noscriptTags,\n s = t.onChangeClientState,\n c = t.scriptTags,\n u = t.styleTags,\n p = t.title,\n f = t.titleAttributes;\n B(l.BODY, t.bodyAttributes), B(l.HTML, n), function (t, e) {\n void 0 !== t && document.title !== t && (document.title = S(t)), B(l.TITLE, e);\n }(p, f);\n var d = {\n baseTag: Y(l.BASE, r),\n linkTags: Y(l.LINK, i),\n metaTags: Y(l.META, o),\n noscriptTags: Y(l.NOSCRIPT, a),\n scriptTags: Y(l.SCRIPT, c),\n styleTags: Y(l.STYLE, u)\n },\n h = {},\n m = {};\n Object.keys(d).forEach(function (t) {\n var e = d[t],\n r = e.newTags,\n n = e.oldTags;\n r.length && (h[t] = r), n.length && (m[t] = d[t].oldTags);\n }), e && e(), s(t, h, m);\n },\n _ = null,\n z = /*#__PURE__*/function (t) {\n function e() {\n for (var e, r = arguments.length, n = new Array(r), i = 0; i < r; i++) n[i] = arguments[i];\n return (e = t.call.apply(t, [this].concat(n)) || this).rendered = !1, e;\n }\n s(e, t);\n var r = e.prototype;\n return r.shouldComponentUpdate = function (t) {\n return !o(t, this.props);\n }, r.componentDidUpdate = function () {\n this.emitChange();\n }, r.componentWillUnmount = function () {\n this.props.context.helmetInstances.remove(this), this.emitChange();\n }, r.emitChange = function () {\n var t,\n e,\n r = this.props.context,\n n = r.setHelmet,\n i = null,\n o = (t = r.helmetInstances.get().map(function (t) {\n var e = a({}, t.props);\n return delete e.context, e;\n }), {\n baseTag: A([\"href\"], t),\n bodyAttributes: v(\"bodyAttributes\", t),\n defer: T(t, \"defer\"),\n encode: T(t, \"encodeSpecialCharacters\"),\n htmlAttributes: v(\"htmlAttributes\", t),\n linkTags: C(l.LINK, [\"rel\", \"href\"], t),\n metaTags: C(l.META, [\"name\", \"charset\", \"http-equiv\", \"property\", \"itemprop\"], t),\n noscriptTags: C(l.NOSCRIPT, [\"innerHTML\"], t),\n onChangeClientState: b(t),\n scriptTags: C(l.SCRIPT, [\"src\", \"innerHTML\"], t),\n styleTags: C(l.STYLE, [\"cssText\"], t),\n title: g(t),\n titleAttributes: v(\"titleAttributes\", t),\n prioritizeSeoTags: O(t, \"prioritizeSeoTags\")\n });\n q.canUseDOM ? (e = o, _ && cancelAnimationFrame(_), e.defer ? _ = requestAnimationFrame(function () {\n K(e, function () {\n _ = null;\n });\n }) : (K(e), _ = null)) : k && (i = k(o)), n(i);\n }, r.init = function () {\n this.rendered || (this.rendered = !0, this.props.context.helmetInstances.add(this), this.emitChange());\n }, r.render = function () {\n return this.init(), null;\n }, e;\n }(e);\nz.propTypes = {\n context: D.isRequired\n}, z.displayName = \"HelmetDispatcher\";\nvar F = [\"children\"],\n G = [\"children\"],\n W = /*#__PURE__*/function (e) {\n function r() {\n return e.apply(this, arguments) || this;\n }\n s(r, e);\n var o = r.prototype;\n return o.shouldComponentUpdate = function (t) {\n return !n(I(this.props, \"helmetData\"), I(t, \"helmetData\"));\n }, o.mapNestedChildrenToProps = function (t, e) {\n if (!e) return null;\n switch (t.type) {\n case l.SCRIPT:\n case l.NOSCRIPT:\n return {\n innerHTML: e\n };\n case l.STYLE:\n return {\n cssText: e\n };\n default:\n throw new Error(\"<\" + t.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n }\n }, o.flattenArrayTypeChildren = function (t) {\n var e,\n r = t.child,\n n = t.arrayTypeChildren;\n return a({}, n, ((e = {})[r.type] = [].concat(n[r.type] || [], [a({}, t.newChildProps, this.mapNestedChildrenToProps(r, t.nestedChildren))]), e));\n }, o.mapObjectTypeChildren = function (t) {\n var e,\n r,\n n = t.child,\n i = t.newProps,\n o = t.newChildProps,\n s = t.nestedChildren;\n switch (n.type) {\n case l.TITLE:\n return a({}, i, ((e = {})[n.type] = s, e.titleAttributes = a({}, o), e));\n case l.BODY:\n return a({}, i, {\n bodyAttributes: a({}, o)\n });\n case l.HTML:\n return a({}, i, {\n htmlAttributes: a({}, o)\n });\n default:\n return a({}, i, ((r = {})[n.type] = a({}, o), r));\n }\n }, o.mapArrayTypeChildrenToProps = function (t, e) {\n var r = a({}, e);\n return Object.keys(t).forEach(function (e) {\n var n;\n r = a({}, r, ((n = {})[e] = t[e], n));\n }), r;\n }, o.warnOnInvalidChildren = function (t, e) {\n return i(h.some(function (e) {\n return t.type === e;\n }), \"function\" == typeof t.type ? \"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.\" : \"Only elements types \" + h.join(\", \") + \" are allowed. Helmet does not support rendering <\" + t.type + \"> elements. Refer to our API for more information.\"), i(!e || \"string\" == typeof e || Array.isArray(e) && !e.some(function (t) {\n return \"string\" != typeof t;\n }), \"Helmet expects a string as a child of <\" + t.type + \">. Did you forget to wrap your children in braces? ( <\" + t.type + \">{``} ) Refer to our API for more information.\"), !0;\n }, o.mapChildrenToProps = function (e, r) {\n var n = this,\n i = {};\n return t.Children.forEach(e, function (t) {\n if (t && t.props) {\n var e = t.props,\n o = e.children,\n a = u(e, F),\n s = Object.keys(a).reduce(function (t, e) {\n return t[y[e] || e] = a[e], t;\n }, {}),\n c = t.type;\n switch (\"symbol\" == typeof c ? c = c.toString() : n.warnOnInvalidChildren(t, o), c) {\n case l.FRAGMENT:\n r = n.mapChildrenToProps(o, r);\n break;\n case l.LINK:\n case l.META:\n case l.NOSCRIPT:\n case l.SCRIPT:\n case l.STYLE:\n i = n.flattenArrayTypeChildren({\n child: t,\n arrayTypeChildren: i,\n newChildProps: s,\n nestedChildren: o\n });\n break;\n default:\n r = n.mapObjectTypeChildren({\n child: t,\n newProps: r,\n newChildProps: s,\n nestedChildren: o\n });\n }\n }\n }), this.mapArrayTypeChildrenToProps(i, r);\n }, o.render = function () {\n var e = this.props,\n r = e.children,\n n = u(e, G),\n i = a({}, n),\n o = n.helmetData;\n return r && (i = this.mapChildrenToProps(r, i)), !o || o instanceof N || (o = new N(o.context, o.instances)), o ? /*#__PURE__*/t.createElement(z, a({}, i, {\n context: o.value,\n helmetData: void 0\n })) : /*#__PURE__*/t.createElement(R.Consumer, null, function (e) {\n /*#__PURE__*/return t.createElement(z, a({}, i, {\n context: e\n }));\n });\n }, r;\n }(e);\nW.propTypes = {\n base: r.object,\n bodyAttributes: r.object,\n children: r.oneOfType([r.arrayOf(r.node), r.node]),\n defaultTitle: r.string,\n defer: r.bool,\n encodeSpecialCharacters: r.bool,\n htmlAttributes: r.object,\n link: r.arrayOf(r.object),\n meta: r.arrayOf(r.object),\n noscript: r.arrayOf(r.object),\n onChangeClientState: r.func,\n script: r.arrayOf(r.object),\n style: r.arrayOf(r.object),\n title: r.string,\n titleAttributes: r.object,\n titleTemplate: r.string,\n prioritizeSeoTags: r.bool,\n helmetData: r.object\n}, W.defaultProps = {\n defer: !0,\n encodeSpecialCharacters: !0,\n prioritizeSeoTags: !1\n}, W.displayName = \"Helmet\";\nexport { W as Helmet, N as HelmetData, q as HelmetProvider };","var parent = require('../../es/object/assign');\n\nmodule.exports = parent;\n","const set = require('regenerate')(0x100, 0x102, 0x104, 0x106, 0x108, 0x10A, 0x10C, 0x10E, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11A, 0x11C, 0x11E, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12A, 0x12C, 0x12E, 0x130, 0x132, 0x134, 0x136, 0x139, 0x13B, 0x13D, 0x13F, 0x141, 0x143, 0x145, 0x147, 0x14A, 0x14C, 0x14E, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15A, 0x15C, 0x15E, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16A, 0x16C, 0x16E, 0x170, 0x172, 0x174, 0x176, 0x17B, 0x17D, 0x184, 0x1A2, 0x1A4, 0x1A9, 0x1AC, 0x1B5, 0x1BC, 0x1C4, 0x1C7, 0x1CA, 0x1CD, 0x1CF, 0x1D1, 0x1D3, 0x1D5, 0x1D7, 0x1D9, 0x1DB, 0x1DE, 0x1E0, 0x1E2, 0x1E4, 0x1E6, 0x1E8, 0x1EA, 0x1EC, 0x1EE, 0x1F1, 0x1F4, 0x1FA, 0x1FC, 0x1FE, 0x200, 0x202, 0x204, 0x206, 0x208, 0x20A, 0x20C, 0x20E, 0x210, 0x212, 0x214, 0x216, 0x218, 0x21A, 0x21C, 0x21E, 0x220, 0x222, 0x224, 0x226, 0x228, 0x22A, 0x22C, 0x22E, 0x230, 0x232, 0x241, 0x248, 0x24A, 0x24C, 0x24E, 0x370, 0x372, 0x376, 0x37F, 0x386, 0x38C, 0x3CF, 0x3D8, 0x3DA, 0x3DC, 0x3DE, 0x3E0, 0x3E2, 0x3E4, 0x3E6, 0x3E8, 0x3EA, 0x3EC, 0x3EE, 0x3F4, 0x3F7, 0x460, 0x462, 0x464, 0x466, 0x468, 0x46A, 0x46C, 0x46E, 0x470, 0x472, 0x474, 0x476, 0x478, 0x47A, 0x47C, 0x47E, 0x480, 0x48A, 0x48C, 0x48E, 0x490, 0x492, 0x494, 0x496, 0x498, 0x49A, 0x49C, 0x49E, 0x4A0, 0x4A2, 0x4A4, 0x4A6, 0x4A8, 0x4AA, 0x4AC, 0x4AE, 0x4B0, 0x4B2, 0x4B4, 0x4B6, 0x4B8, 0x4BA, 0x4BC, 0x4BE, 0x4C3, 0x4C5, 0x4C7, 0x4C9, 0x4CB, 0x4CD, 0x4D0, 0x4D2, 0x4D4, 0x4D6, 0x4D8, 0x4DA, 0x4DC, 0x4DE, 0x4E0, 0x4E2, 0x4E4, 0x4E6, 0x4E8, 0x4EA, 0x4EC, 0x4EE, 0x4F0, 0x4F2, 0x4F4, 0x4F6, 0x4F8, 0x4FA, 0x4FC, 0x4FE, 0x500, 0x502, 0x504, 0x506, 0x508, 0x50A, 0x50C, 0x50E, 0x510, 0x512, 0x514, 0x516, 0x518, 0x51A, 0x51C, 0x51E, 0x520, 0x522, 0x524, 0x526, 0x528, 0x52A, 0x52C, 0x52E, 0x10C7, 0x10CD, 0x1E00, 0x1E02, 0x1E04, 0x1E06, 0x1E08, 0x1E0A, 0x1E0C, 0x1E0E, 0x1E10, 0x1E12, 0x1E14, 0x1E16, 0x1E18, 0x1E1A, 0x1E1C, 0x1E1E, 0x1E20, 0x1E22, 0x1E24, 0x1E26, 0x1E28, 0x1E2A, 0x1E2C, 0x1E2E, 0x1E30, 0x1E32, 0x1E34, 0x1E36, 0x1E38, 0x1E3A, 0x1E3C, 0x1E3E, 0x1E40, 0x1E42, 0x1E44, 0x1E46, 0x1E48, 0x1E4A, 0x1E4C, 0x1E4E, 0x1E50, 0x1E52, 0x1E54, 0x1E56, 0x1E58, 0x1E5A, 0x1E5C, 0x1E5E, 0x1E60, 0x1E62, 0x1E64, 0x1E66, 0x1E68, 0x1E6A, 0x1E6C, 0x1E6E, 0x1E70, 0x1E72, 0x1E74, 0x1E76, 0x1E78, 0x1E7A, 0x1E7C, 0x1E7E, 0x1E80, 0x1E82, 0x1E84, 0x1E86, 0x1E88, 0x1E8A, 0x1E8C, 0x1E8E, 0x1E90, 0x1E92, 0x1E94, 0x1E9E, 0x1EA0, 0x1EA2, 0x1EA4, 0x1EA6, 0x1EA8, 0x1EAA, 0x1EAC, 0x1EAE, 0x1EB0, 0x1EB2, 0x1EB4, 0x1EB6, 0x1EB8, 0x1EBA, 0x1EBC, 0x1EBE, 0x1EC0, 0x1EC2, 0x1EC4, 0x1EC6, 0x1EC8, 0x1ECA, 0x1ECC, 0x1ECE, 0x1ED0, 0x1ED2, 0x1ED4, 0x1ED6, 0x1ED8, 0x1EDA, 0x1EDC, 0x1EDE, 0x1EE0, 0x1EE2, 0x1EE4, 0x1EE6, 0x1EE8, 0x1EEA, 0x1EEC, 0x1EEE, 0x1EF0, 0x1EF2, 0x1EF4, 0x1EF6, 0x1EF8, 0x1EFA, 0x1EFC, 0x1EFE, 0x1F59, 0x1F5B, 0x1F5D, 0x1F5F, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x2145, 0x2183, 0x2C60, 0x2C67, 0x2C69, 0x2C6B, 0x2C72, 0x2C75, 0x2C82, 0x2C84, 0x2C86, 0x2C88, 0x2C8A, 0x2C8C, 0x2C8E, 0x2C90, 0x2C92, 0x2C94, 0x2C96, 0x2C98, 0x2C9A, 0x2C9C, 0x2C9E, 0x2CA0, 0x2CA2, 0x2CA4, 0x2CA6, 0x2CA8, 0x2CAA, 0x2CAC, 0x2CAE, 0x2CB0, 0x2CB2, 0x2CB4, 0x2CB6, 0x2CB8, 0x2CBA, 0x2CBC, 0x2CBE, 0x2CC0, 0x2CC2, 0x2CC4, 0x2CC6, 0x2CC8, 0x2CCA, 0x2CCC, 0x2CCE, 0x2CD0, 0x2CD2, 0x2CD4, 0x2CD6, 0x2CD8, 0x2CDA, 0x2CDC, 0x2CDE, 0x2CE0, 0x2CE2, 0x2CEB, 0x2CED, 0x2CF2, 0xA640, 0xA642, 0xA644, 0xA646, 0xA648, 0xA64A, 0xA64C, 0xA64E, 0xA650, 0xA652, 0xA654, 0xA656, 0xA658, 0xA65A, 0xA65C, 0xA65E, 0xA660, 0xA662, 0xA664, 0xA666, 0xA668, 0xA66A, 0xA66C, 0xA680, 0xA682, 0xA684, 0xA686, 0xA688, 0xA68A, 0xA68C, 0xA68E, 0xA690, 0xA692, 0xA694, 0xA696, 0xA698, 0xA69A, 0xA722, 0xA724, 0xA726, 0xA728, 0xA72A, 0xA72C, 0xA72E, 0xA732, 0xA734, 0xA736, 0xA738, 0xA73A, 0xA73C, 0xA73E, 0xA740, 0xA742, 0xA744, 0xA746, 0xA748, 0xA74A, 0xA74C, 0xA74E, 0xA750, 0xA752, 0xA754, 0xA756, 0xA758, 0xA75A, 0xA75C, 0xA75E, 0xA760, 0xA762, 0xA764, 0xA766, 0xA768, 0xA76A, 0xA76C, 0xA76E, 0xA779, 0xA77B, 0xA780, 0xA782, 0xA784, 0xA786, 0xA78B, 0xA78D, 0xA790, 0xA792, 0xA796, 0xA798, 0xA79A, 0xA79C, 0xA79E, 0xA7A0, 0xA7A2, 0xA7A4, 0xA7A6, 0xA7A8, 0xA7B6, 0xA7B8, 0xA7BA, 0xA7BC, 0xA7BE, 0xA7C0, 0xA7C2, 0xA7C9, 0xA7D0, 0xA7D6, 0xA7D8, 0xA7F5, 0x1D49C, 0x1D4A2, 0x1D546, 0x1D7CA);\nset.addRange(0x41, 0x5A).addRange(0xC0, 0xD6).addRange(0xD8, 0xDE).addRange(0x178, 0x179).addRange(0x181, 0x182).addRange(0x186, 0x187).addRange(0x189, 0x18B).addRange(0x18E, 0x191).addRange(0x193, 0x194).addRange(0x196, 0x198).addRange(0x19C, 0x19D).addRange(0x19F, 0x1A0).addRange(0x1A6, 0x1A7).addRange(0x1AE, 0x1AF).addRange(0x1B1, 0x1B3).addRange(0x1B7, 0x1B8).addRange(0x1F6, 0x1F8).addRange(0x23A, 0x23B).addRange(0x23D, 0x23E).addRange(0x243, 0x246).addRange(0x388, 0x38A).addRange(0x38E, 0x38F).addRange(0x391, 0x3A1).addRange(0x3A3, 0x3AB).addRange(0x3D2, 0x3D4).addRange(0x3F9, 0x3FA).addRange(0x3FD, 0x42F).addRange(0x4C0, 0x4C1).addRange(0x531, 0x556).addRange(0x10A0, 0x10C5).addRange(0x13A0, 0x13F5).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1F08, 0x1F0F).addRange(0x1F18, 0x1F1D).addRange(0x1F28, 0x1F2F).addRange(0x1F38, 0x1F3F).addRange(0x1F48, 0x1F4D).addRange(0x1F68, 0x1F6F).addRange(0x1FB8, 0x1FBB).addRange(0x1FC8, 0x1FCB).addRange(0x1FD8, 0x1FDB).addRange(0x1FE8, 0x1FEC).addRange(0x1FF8, 0x1FFB).addRange(0x210B, 0x210D).addRange(0x2110, 0x2112).addRange(0x2119, 0x211D).addRange(0x212A, 0x212D).addRange(0x2130, 0x2133).addRange(0x213E, 0x213F).addRange(0x2C00, 0x2C2F);\nset.addRange(0x2C62, 0x2C64).addRange(0x2C6D, 0x2C70).addRange(0x2C7E, 0x2C80).addRange(0xA77D, 0xA77E).addRange(0xA7AA, 0xA7AE).addRange(0xA7B0, 0xA7B4).addRange(0xA7C4, 0xA7C7).addRange(0xFF21, 0xFF3A).addRange(0x10400, 0x10427).addRange(0x104B0, 0x104D3).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10C80, 0x10CB2).addRange(0x118A0, 0x118BF).addRange(0x16E40, 0x16E5F).addRange(0x1D400, 0x1D419).addRange(0x1D434, 0x1D44D).addRange(0x1D468, 0x1D481).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B5).addRange(0x1D4D0, 0x1D4E9).addRange(0x1D504, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D538, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D56C, 0x1D585).addRange(0x1D5A0, 0x1D5B9).addRange(0x1D5D4, 0x1D5ED).addRange(0x1D608, 0x1D621).addRange(0x1D63C, 0x1D655).addRange(0x1D670, 0x1D689).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6E2, 0x1D6FA).addRange(0x1D71C, 0x1D734).addRange(0x1D756, 0x1D76E).addRange(0x1D790, 0x1D7A8).addRange(0x1E900, 0x1E921);\nmodule.exports = set;","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport loader from \"./loader\"\nimport InternalPageRenderer from \"./page-renderer\"\n\nconst ProdPageRenderer = ({ location }) => {\n const pageResources = loader.loadPageSync(location.pathname)\n if (!pageResources) {\n return null\n }\n return React.createElement(InternalPageRenderer, {\n location,\n pageResources,\n ...pageResources.json,\n })\n}\n\nProdPageRenderer.propTypes = {\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n}\n\nexport default ProdPageRenderer\n","var identity = require('./identity'),\n metaMap = require('./_metaMap');\n\n/**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n};\n\nmodule.exports = baseSetData;\n","const set = require('regenerate')(0x5E, 0x60, 0xA8, 0xAF, 0xB4, 0x37A, 0x559, 0x5BF, 0x5C4, 0x93C, 0x94D, 0x971, 0x9BC, 0x9CD, 0xA3C, 0xA4D, 0xABC, 0xACD, 0xB3C, 0xB4D, 0xB55, 0xBCD, 0xC3C, 0xC4D, 0xCBC, 0xCCD, 0xD4D, 0xDCA, 0xE4E, 0xEBA, 0xF35, 0xF37, 0xF39, 0xFC6, 0x1037, 0x108F, 0x17DD, 0x1A7F, 0x1B34, 0x1B44, 0x1CED, 0x1CF4, 0x1FBD, 0x2E2F, 0x30FC, 0xA66F, 0xA67F, 0xA8C4, 0xA953, 0xA9B3, 0xA9C0, 0xA9E5, 0xAAF6, 0xFB1E, 0xFF3E, 0xFF40, 0xFF70, 0xFFE3, 0x102E0, 0x11046, 0x11070, 0x11173, 0x111C0, 0x1133C, 0x1134D, 0x11442, 0x11446, 0x1163F, 0x1172B, 0x11943, 0x119E0, 0x11A34, 0x11A47, 0x11A99, 0x11C3F, 0x11D42, 0x11D97, 0x1E2AE);\nset.addRange(0xB7, 0xB8).addRange(0x2B0, 0x34E).addRange(0x350, 0x357).addRange(0x35D, 0x362).addRange(0x374, 0x375).addRange(0x384, 0x385).addRange(0x483, 0x487).addRange(0x591, 0x5A1).addRange(0x5A3, 0x5BD).addRange(0x5C1, 0x5C2).addRange(0x64B, 0x652).addRange(0x657, 0x658).addRange(0x6DF, 0x6E0).addRange(0x6E5, 0x6E6).addRange(0x6EA, 0x6EC).addRange(0x730, 0x74A).addRange(0x7A6, 0x7B0).addRange(0x7EB, 0x7F5).addRange(0x818, 0x819).addRange(0x898, 0x89F).addRange(0x8C9, 0x8D2).addRange(0x8E3, 0x8FE).addRange(0x951, 0x954).addRange(0xAFD, 0xAFF).addRange(0xD3B, 0xD3C).addRange(0xE47, 0xE4C).addRange(0xEC8, 0xECC).addRange(0xF18, 0xF19).addRange(0xF3E, 0xF3F).addRange(0xF82, 0xF84).addRange(0xF86, 0xF87).addRange(0x1039, 0x103A).addRange(0x1063, 0x1064).addRange(0x1069, 0x106D).addRange(0x1087, 0x108D).addRange(0x109A, 0x109B).addRange(0x135D, 0x135F).addRange(0x1714, 0x1715).addRange(0x17C9, 0x17D3).addRange(0x1939, 0x193B).addRange(0x1A75, 0x1A7C).addRange(0x1AB0, 0x1ABE).addRange(0x1AC1, 0x1ACB).addRange(0x1B6B, 0x1B73).addRange(0x1BAA, 0x1BAB).addRange(0x1C36, 0x1C37).addRange(0x1C78, 0x1C7D).addRange(0x1CD0, 0x1CE8).addRange(0x1CF7, 0x1CF9).addRange(0x1D2C, 0x1D6A).addRange(0x1DC4, 0x1DCF);\nset.addRange(0x1DF5, 0x1DFF).addRange(0x1FBF, 0x1FC1).addRange(0x1FCD, 0x1FCF).addRange(0x1FDD, 0x1FDF).addRange(0x1FED, 0x1FEF).addRange(0x1FFD, 0x1FFE).addRange(0x2CEF, 0x2CF1).addRange(0x302A, 0x302F).addRange(0x3099, 0x309C).addRange(0xA67C, 0xA67D).addRange(0xA69C, 0xA69D).addRange(0xA6F0, 0xA6F1).addRange(0xA700, 0xA721).addRange(0xA788, 0xA78A).addRange(0xA7F8, 0xA7F9).addRange(0xA8E0, 0xA8F1).addRange(0xA92B, 0xA92E).addRange(0xAA7B, 0xAA7D).addRange(0xAABF, 0xAAC2).addRange(0xAB5B, 0xAB5F).addRange(0xAB69, 0xAB6B).addRange(0xABEC, 0xABED).addRange(0xFE20, 0xFE2F).addRange(0xFF9E, 0xFF9F).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10AE5, 0x10AE6).addRange(0x10D22, 0x10D27).addRange(0x10F46, 0x10F50).addRange(0x10F82, 0x10F85).addRange(0x110B9, 0x110BA).addRange(0x11133, 0x11134).addRange(0x111CA, 0x111CC).addRange(0x11235, 0x11236).addRange(0x112E9, 0x112EA).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x114C2, 0x114C3).addRange(0x115BF, 0x115C0).addRange(0x116B6, 0x116B7).addRange(0x11839, 0x1183A).addRange(0x1193D, 0x1193E).addRange(0x11D44, 0x11D45).addRange(0x16AF0, 0x16AF4).addRange(0x16B30, 0x16B36).addRange(0x16F8F, 0x16F9F).addRange(0x16FF0, 0x16FF1).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE);\nset.addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1D167, 0x1D169).addRange(0x1D16D, 0x1D172).addRange(0x1D17B, 0x1D182).addRange(0x1D185, 0x1D18B).addRange(0x1D1AA, 0x1D1AD).addRange(0x1E130, 0x1E136).addRange(0x1E2EC, 0x1E2EF).addRange(0x1E8D0, 0x1E8D6).addRange(0x1E944, 0x1E946).addRange(0x1E948, 0x1E94A);\nmodule.exports = set;","'use strict';\n\nconst canonicalProperties = require('unicode-canonical-property-names-ecmascript');\nconst propertyAliases = require('unicode-property-aliases-ecmascript');\nconst matchProperty = function (property) {\n if (canonicalProperties.has(property)) {\n return property;\n }\n if (propertyAliases.has(property)) {\n return propertyAliases.get(property);\n }\n throw new Error(\"Unknown property: \".concat(property));\n};\nmodule.exports = matchProperty;","var toString = Object.prototype.toString;\n\n/**\n * Get the native `typeof` a value.\n *\n * @param {*} `val`\n * @return {*} Native javascript type\n */\n\nmodule.exports = function kindOf(val) {\n var type = typeof val;\n\n // primitivies\n if (type === 'undefined') {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n if (val === true || val === false || val instanceof Boolean) {\n return 'boolean';\n }\n if (type === 'string' || val instanceof String) {\n return 'string';\n }\n if (type === 'number' || val instanceof Number) {\n return 'number';\n }\n\n // functions\n if (type === 'function' || val instanceof Function) {\n if (typeof val.constructor.name !== 'undefined' && val.constructor.name.slice(0, 9) === 'Generator') {\n return 'generatorfunction';\n }\n return 'function';\n }\n\n // array\n if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) {\n return 'array';\n }\n\n // check for instances of RegExp and Date before calling `toString`\n if (val instanceof RegExp) {\n return 'regexp';\n }\n if (val instanceof Date) {\n return 'date';\n }\n\n // other objects\n type = toString.call(val);\n if (type === '[object RegExp]') {\n return 'regexp';\n }\n if (type === '[object Date]') {\n return 'date';\n }\n if (type === '[object Arguments]') {\n return 'arguments';\n }\n if (type === '[object Error]') {\n return 'error';\n }\n if (type === '[object Promise]') {\n return 'promise';\n }\n\n // buffer\n if (isBuffer(val)) {\n return 'buffer';\n }\n\n // es6: Map, WeakMap, Set, WeakSet\n if (type === '[object Set]') {\n return 'set';\n }\n if (type === '[object WeakSet]') {\n return 'weakset';\n }\n if (type === '[object Map]') {\n return 'map';\n }\n if (type === '[object WeakMap]') {\n return 'weakmap';\n }\n if (type === '[object Symbol]') {\n return 'symbol';\n }\n if (type === '[object Map Iterator]') {\n return 'mapiterator';\n }\n if (type === '[object Set Iterator]') {\n return 'setiterator';\n }\n if (type === '[object String Iterator]') {\n return 'stringiterator';\n }\n if (type === '[object Array Iterator]') {\n return 'arrayiterator';\n }\n\n // typed arrays\n if (type === '[object Int8Array]') {\n return 'int8array';\n }\n if (type === '[object Uint8Array]') {\n return 'uint8array';\n }\n if (type === '[object Uint8ClampedArray]') {\n return 'uint8clampedarray';\n }\n if (type === '[object Int16Array]') {\n return 'int16array';\n }\n if (type === '[object Uint16Array]') {\n return 'uint16array';\n }\n if (type === '[object Int32Array]') {\n return 'int32array';\n }\n if (type === '[object Uint32Array]') {\n return 'uint32array';\n }\n if (type === '[object Float32Array]') {\n return 'float32array';\n }\n if (type === '[object Float64Array]') {\n return 'float64array';\n }\n\n // must be a plain object\n return 'object';\n};\n\n/**\n * If you need to support Safari 5-7 (8-10 yr-old browser),\n * take a look at https://github.com/feross/is-buffer\n */\n\nfunction isBuffer(val) {\n return val.constructor && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","const set = require('regenerate')();\nset.addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1772, 0x1773);\nmodule.exports = set;","const set = require('regenerate')(0x1091F);\nset.addRange(0x10900, 0x1091B);\nmodule.exports = set;","const set = require('regenerate')(0x1CD0, 0x1CD2, 0x1CDA, 0x1CF2, 0x1CF4);\nset.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0xC80, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCBC, 0xCC4).addRange(0xCC6, 0xCC8).addRange(0xCCA, 0xCCD).addRange(0xCD5, 0xCD6).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE3).addRange(0xCE6, 0xCEF).addRange(0xCF1, 0xCF2).addRange(0xA830, 0xA835);\nmodule.exports = set;","import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`On macOS, Tanka is best installed using `}{`brew`}{`:`}

      \n
      {`$ brew install tanka`}
      \n

      {`This downloads the most recent version of Tanka and installs it.`}

      {`\n`}{`Also, Tanka is automatically kept up to date as part of `}{`brew upgrade`}{`.`}

      \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n ","var baseConvert = require('./_baseConvert'),\n util = require('./_util');\n\n/**\n * Converts `func` of `name` to an immutable auto-curried iteratee-first data-last\n * version with conversion `options` applied. If `name` is an object its methods\n * will be converted.\n *\n * @param {string} name The name of the function to wrap.\n * @param {Function} [func] The function to wrap.\n * @param {Object} [options] The options object. See `baseConvert` for more details.\n * @returns {Function|Object} Returns the converted function or object.\n */\nfunction convert(name, func, options) {\n return baseConvert(util, name, func, options);\n}\n\nmodule.exports = convert;\n","const set = require('regenerate')();\nset.addRange(0xAA00, 0xAA36).addRange(0xAA40, 0xAA4D).addRange(0xAA50, 0xAA59).addRange(0xAA5C, 0xAA5F);\nmodule.exports = set;","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var arrayReduce = require('./_arrayReduce'),\n deburr = require('./deburr'),\n words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","const set = require('regenerate')(0x16FE4);\nset.addRange(0x18B00, 0x18CD5);\nmodule.exports = set;","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","/**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\nfunction countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n}\n\nmodule.exports = countHolders;\n","const set = require('regenerate')();\nset.addRange(0x16A0, 0x16EA).addRange(0x16EE, 0x16F8);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0xA000, 0xA48C).addRange(0xA490, 0xA4C6);\nmodule.exports = set;","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","var convert = require('./convert'),\n func = convert('flow', require('../flow'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","const set = require('regenerate')();\nset.addRange(0x1C00, 0x1C37).addRange(0x1C3B, 0x1C49).addRange(0x1C4D, 0x1C4F);\nmodule.exports = set;","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","const set = require('regenerate')(0x1804);\nset.addRange(0x1800, 0x1801).addRange(0x1806, 0x1819).addRange(0x1820, 0x1878).addRange(0x1880, 0x18AA).addRange(0x11660, 0x1166C);\nmodule.exports = set;","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","const set = require('regenerate')(0x1039F);\nset.addRange(0x10380, 0x1039D);\nmodule.exports = set;","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","var mapping = require('./_mapping'),\n fallbackHolder = require('./placeholder');\n\n/** Built-in value reference. */\nvar push = Array.prototype.push;\n\n/**\n * Creates a function, with an arity of `n`, that invokes `func` with the\n * arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} n The arity of the new function.\n * @returns {Function} Returns the new function.\n */\nfunction baseArity(func, n) {\n return n == 2\n ? function(a, b) { return func.apply(undefined, arguments); }\n : function(a) { return func.apply(undefined, arguments); };\n}\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments, ignoring\n * any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\nfunction baseAry(func, n) {\n return n == 2\n ? function(a, b) { return func(a, b); }\n : function(a) { return func(a); };\n}\n\n/**\n * Creates a clone of `array`.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the cloned array.\n */\nfunction cloneArray(array) {\n var length = array ? array.length : 0,\n result = Array(length);\n\n while (length--) {\n result[length] = array[length];\n }\n return result;\n}\n\n/**\n * Creates a function that clones a given object using the assignment `func`.\n *\n * @private\n * @param {Function} func The assignment function.\n * @returns {Function} Returns the new cloner function.\n */\nfunction createCloner(func) {\n return function(object) {\n return func({}, object);\n };\n}\n\n/**\n * A specialized version of `_.spread` which flattens the spread array into\n * the arguments of the invoked `func`.\n *\n * @private\n * @param {Function} func The function to spread arguments over.\n * @param {number} start The start position of the spread.\n * @returns {Function} Returns the new function.\n */\nfunction flatSpread(func, start) {\n return function() {\n var length = arguments.length,\n lastIndex = length - 1,\n args = Array(length);\n\n while (length--) {\n args[length] = arguments[length];\n }\n var array = args[start],\n otherArgs = args.slice(0, start);\n\n if (array) {\n push.apply(otherArgs, array);\n }\n if (start != lastIndex) {\n push.apply(otherArgs, args.slice(start + 1));\n }\n return func.apply(this, otherArgs);\n };\n}\n\n/**\n * Creates a function that wraps `func` and uses `cloner` to clone the first\n * argument it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} cloner The function to clone arguments.\n * @returns {Function} Returns the new immutable function.\n */\nfunction wrapImmutable(func, cloner) {\n return function() {\n var length = arguments.length;\n if (!length) {\n return;\n }\n var args = Array(length);\n while (length--) {\n args[length] = arguments[length];\n }\n var result = args[0] = cloner.apply(undefined, args);\n func.apply(undefined, args);\n return result;\n };\n}\n\n/**\n * The base implementation of `convert` which accepts a `util` object of methods\n * required to perform conversions.\n *\n * @param {Object} util The util object.\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.cap=true] Specify capping iteratee arguments.\n * @param {boolean} [options.curry=true] Specify currying.\n * @param {boolean} [options.fixed=true] Specify fixed arity.\n * @param {boolean} [options.immutable=true] Specify immutable operations.\n * @param {boolean} [options.rearg=true] Specify rearranging arguments.\n * @returns {Function|Object} Returns the converted function or object.\n */\nfunction baseConvert(util, name, func, options) {\n var isLib = typeof name == 'function',\n isObj = name === Object(name);\n\n if (isObj) {\n options = func;\n func = name;\n name = undefined;\n }\n if (func == null) {\n throw new TypeError;\n }\n options || (options = {});\n\n var config = {\n 'cap': 'cap' in options ? options.cap : true,\n 'curry': 'curry' in options ? options.curry : true,\n 'fixed': 'fixed' in options ? options.fixed : true,\n 'immutable': 'immutable' in options ? options.immutable : true,\n 'rearg': 'rearg' in options ? options.rearg : true\n };\n\n var defaultHolder = isLib ? func : fallbackHolder,\n forceCurry = ('curry' in options) && options.curry,\n forceFixed = ('fixed' in options) && options.fixed,\n forceRearg = ('rearg' in options) && options.rearg,\n pristine = isLib ? func.runInContext() : undefined;\n\n var helpers = isLib ? func : {\n 'ary': util.ary,\n 'assign': util.assign,\n 'clone': util.clone,\n 'curry': util.curry,\n 'forEach': util.forEach,\n 'isArray': util.isArray,\n 'isError': util.isError,\n 'isFunction': util.isFunction,\n 'isWeakMap': util.isWeakMap,\n 'iteratee': util.iteratee,\n 'keys': util.keys,\n 'rearg': util.rearg,\n 'toInteger': util.toInteger,\n 'toPath': util.toPath\n };\n\n var ary = helpers.ary,\n assign = helpers.assign,\n clone = helpers.clone,\n curry = helpers.curry,\n each = helpers.forEach,\n isArray = helpers.isArray,\n isError = helpers.isError,\n isFunction = helpers.isFunction,\n isWeakMap = helpers.isWeakMap,\n keys = helpers.keys,\n rearg = helpers.rearg,\n toInteger = helpers.toInteger,\n toPath = helpers.toPath;\n\n var aryMethodKeys = keys(mapping.aryMethod);\n\n var wrappers = {\n 'castArray': function(castArray) {\n return function() {\n var value = arguments[0];\n return isArray(value)\n ? castArray(cloneArray(value))\n : castArray.apply(undefined, arguments);\n };\n },\n 'iteratee': function(iteratee) {\n return function() {\n var func = arguments[0],\n arity = arguments[1],\n result = iteratee(func, arity),\n length = result.length;\n\n if (config.cap && typeof arity == 'number') {\n arity = arity > 2 ? (arity - 2) : 1;\n return (length && length <= arity) ? result : baseAry(result, arity);\n }\n return result;\n };\n },\n 'mixin': function(mixin) {\n return function(source) {\n var func = this;\n if (!isFunction(func)) {\n return mixin(func, Object(source));\n }\n var pairs = [];\n each(keys(source), function(key) {\n if (isFunction(source[key])) {\n pairs.push([key, func.prototype[key]]);\n }\n });\n\n mixin(func, Object(source));\n\n each(pairs, function(pair) {\n var value = pair[1];\n if (isFunction(value)) {\n func.prototype[pair[0]] = value;\n } else {\n delete func.prototype[pair[0]];\n }\n });\n return func;\n };\n },\n 'nthArg': function(nthArg) {\n return function(n) {\n var arity = n < 0 ? 1 : (toInteger(n) + 1);\n return curry(nthArg(n), arity);\n };\n },\n 'rearg': function(rearg) {\n return function(func, indexes) {\n var arity = indexes ? indexes.length : 0;\n return curry(rearg(func, indexes), arity);\n };\n },\n 'runInContext': function(runInContext) {\n return function(context) {\n return baseConvert(util, runInContext(context), options);\n };\n }\n };\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Casts `func` to a function with an arity capped iteratee if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @returns {Function} Returns the cast function.\n */\n function castCap(name, func) {\n if (config.cap) {\n var indexes = mapping.iterateeRearg[name];\n if (indexes) {\n return iterateeRearg(func, indexes);\n }\n var n = !isLib && mapping.iterateeAry[name];\n if (n) {\n return iterateeAry(func, n);\n }\n }\n return func;\n }\n\n /**\n * Casts `func` to a curried function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity of `func`.\n * @returns {Function} Returns the cast function.\n */\n function castCurry(name, func, n) {\n return (forceCurry || (config.curry && n > 1))\n ? curry(func, n)\n : func;\n }\n\n /**\n * Casts `func` to a fixed arity function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the cast function.\n */\n function castFixed(name, func, n) {\n if (config.fixed && (forceFixed || !mapping.skipFixed[name])) {\n var data = mapping.methodSpread[name],\n start = data && data.start;\n\n return start === undefined ? ary(func, n) : flatSpread(func, start);\n }\n return func;\n }\n\n /**\n * Casts `func` to an rearged function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity of `func`.\n * @returns {Function} Returns the cast function.\n */\n function castRearg(name, func, n) {\n return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name]))\n ? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n])\n : func;\n }\n\n /**\n * Creates a clone of `object` by `path`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {Array|string} path The path to clone by.\n * @returns {Object} Returns the cloned object.\n */\n function cloneByPath(object, path) {\n path = toPath(path);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n result = clone(Object(object)),\n nested = result;\n\n while (nested != null && ++index < length) {\n var key = path[index],\n value = nested[key];\n\n if (value != null &&\n !(isFunction(value) || isError(value) || isWeakMap(value))) {\n nested[key] = clone(index == lastIndex ? value : Object(value));\n }\n nested = nested[key];\n }\n return result;\n }\n\n /**\n * Converts `lodash` to an immutable auto-curried iteratee-first data-last\n * version with conversion `options` applied.\n *\n * @param {Object} [options] The options object. See `baseConvert` for more details.\n * @returns {Function} Returns the converted `lodash`.\n */\n function convertLib(options) {\n return _.runInContext.convert(options)(undefined);\n }\n\n /**\n * Create a converter function for `func` of `name`.\n *\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @returns {Function} Returns the new converter function.\n */\n function createConverter(name, func) {\n var realName = mapping.aliasToReal[name] || name,\n methodName = mapping.remap[realName] || realName,\n oldOptions = options;\n\n return function(options) {\n var newUtil = isLib ? pristine : helpers,\n newFunc = isLib ? pristine[methodName] : func,\n newOptions = assign(assign({}, oldOptions), options);\n\n return baseConvert(newUtil, realName, newFunc, newOptions);\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke its iteratee, with up to `n`\n * arguments, ignoring any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap iteratee arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\n function iterateeAry(func, n) {\n return overArg(func, function(func) {\n return typeof func == 'function' ? baseAry(func, n) : func;\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke its iteratee with arguments\n * arranged according to the specified `indexes` where the argument value at\n * the first index is provided as the first argument, the argument value at\n * the second index is provided as the second argument, and so on.\n *\n * @private\n * @param {Function} func The function to rearrange iteratee arguments for.\n * @param {number[]} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n */\n function iterateeRearg(func, indexes) {\n return overArg(func, function(func) {\n var n = indexes.length;\n return baseArity(rearg(baseAry(func, n), indexes), n);\n });\n }\n\n /**\n * Creates a function that invokes `func` with its first argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function() {\n var length = arguments.length;\n if (!length) {\n return func();\n }\n var args = Array(length);\n while (length--) {\n args[length] = arguments[length];\n }\n var index = config.rearg ? 0 : (length - 1);\n args[index] = transform(args[index]);\n return func.apply(undefined, args);\n };\n }\n\n /**\n * Creates a function that wraps `func` and applys the conversions\n * rules by `name`.\n *\n * @private\n * @param {string} name The name of the function to wrap.\n * @param {Function} func The function to wrap.\n * @returns {Function} Returns the converted function.\n */\n function wrap(name, func, placeholder) {\n var result,\n realName = mapping.aliasToReal[name] || name,\n wrapped = func,\n wrapper = wrappers[realName];\n\n if (wrapper) {\n wrapped = wrapper(func);\n }\n else if (config.immutable) {\n if (mapping.mutate.array[realName]) {\n wrapped = wrapImmutable(func, cloneArray);\n }\n else if (mapping.mutate.object[realName]) {\n wrapped = wrapImmutable(func, createCloner(func));\n }\n else if (mapping.mutate.set[realName]) {\n wrapped = wrapImmutable(func, cloneByPath);\n }\n }\n each(aryMethodKeys, function(aryKey) {\n each(mapping.aryMethod[aryKey], function(otherName) {\n if (realName == otherName) {\n var data = mapping.methodSpread[realName],\n afterRearg = data && data.afterRearg;\n\n result = afterRearg\n ? castFixed(realName, castRearg(realName, wrapped, aryKey), aryKey)\n : castRearg(realName, castFixed(realName, wrapped, aryKey), aryKey);\n\n result = castCap(realName, result);\n result = castCurry(realName, result, aryKey);\n return false;\n }\n });\n return !result;\n });\n\n result || (result = wrapped);\n if (result == func) {\n result = forceCurry ? curry(result, 1) : function() {\n return func.apply(this, arguments);\n };\n }\n result.convert = createConverter(realName, func);\n result.placeholder = func.placeholder = placeholder;\n\n return result;\n }\n\n /*--------------------------------------------------------------------------*/\n\n if (!isObj) {\n return wrap(name, func, defaultHolder);\n }\n var _ = func;\n\n // Convert methods by ary cap.\n var pairs = [];\n each(aryMethodKeys, function(aryKey) {\n each(mapping.aryMethod[aryKey], function(key) {\n var func = _[mapping.remap[key] || key];\n if (func) {\n pairs.push([key, wrap(key, func, _)]);\n }\n });\n });\n\n // Convert remaining methods.\n each(keys(_), function(key) {\n var func = _[key];\n if (typeof func == 'function') {\n var length = pairs.length;\n while (length--) {\n if (pairs[length][0] == key) {\n return;\n }\n }\n func.convert = createConverter(key, func);\n pairs.push([key, func]);\n }\n });\n\n // Assign to `_` leaving `_.prototype` unchanged to allow chaining.\n each(pairs, function(pair) {\n _[pair[0]] = pair[1];\n });\n\n _.convert = convertLib;\n _.placeholder = _;\n\n // Assign aliases.\n each(keys(_), function(key) {\n each(mapping.realToAlias[key] || [], function(alias) {\n _[alias] = _[key];\n });\n });\n\n return _;\n}\n\nmodule.exports = baseConvert;\n","const set = require('regenerate')();\nset.addRange(0x10A80, 0x10A9F);\nmodule.exports = set;","function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\nexport default memoize;","import memoize from '@emotion/memoize';\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar index = memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */ && prop.charCodeAt(1) === 110\n /* n */ && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */);\n\nexport default index;","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\n// based on https://github.com/developit/dlv\nexport var get = function get(obj, key, def, p, undef) {\n key = key && key.split ? key.split('.') : [key];\n for (p = 0; p < key.length; p++) {\n obj = obj ? obj[key[p]] : undef;\n }\n return obj === undef ? def : obj;\n};\nvar defaultBreakpoints = [40, 52, 64].map(function (n) {\n return n + 'em';\n});\nvar defaultTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fontSizes: [12, 14, 16, 20, 24, 32, 48, 64, 72]\n};\nvar aliases = {\n bg: 'backgroundColor',\n m: 'margin',\n mt: 'marginTop',\n mr: 'marginRight',\n mb: 'marginBottom',\n ml: 'marginLeft',\n mx: 'marginX',\n my: 'marginY',\n p: 'padding',\n pt: 'paddingTop',\n pr: 'paddingRight',\n pb: 'paddingBottom',\n pl: 'paddingLeft',\n px: 'paddingX',\n py: 'paddingY'\n};\nvar multiples = {\n marginX: ['marginLeft', 'marginRight'],\n marginY: ['marginTop', 'marginBottom'],\n paddingX: ['paddingLeft', 'paddingRight'],\n paddingY: ['paddingTop', 'paddingBottom'],\n size: ['width', 'height']\n};\nvar scales = {\n color: 'colors',\n backgroundColor: 'colors',\n borderColor: 'colors',\n margin: 'space',\n marginTop: 'space',\n marginRight: 'space',\n marginBottom: 'space',\n marginLeft: 'space',\n marginX: 'space',\n marginY: 'space',\n padding: 'space',\n paddingTop: 'space',\n paddingRight: 'space',\n paddingBottom: 'space',\n paddingLeft: 'space',\n paddingX: 'space',\n paddingY: 'space',\n top: 'space',\n right: 'space',\n bottom: 'space',\n left: 'space',\n gridGap: 'space',\n gridColumnGap: 'space',\n gridRowGap: 'space',\n gap: 'space',\n columnGap: 'space',\n rowGap: 'space',\n fontFamily: 'fonts',\n fontSize: 'fontSizes',\n fontWeight: 'fontWeights',\n lineHeight: 'lineHeights',\n letterSpacing: 'letterSpacings',\n border: 'borders',\n borderTop: 'borders',\n borderRight: 'borders',\n borderBottom: 'borders',\n borderLeft: 'borders',\n borderWidth: 'borderWidths',\n borderStyle: 'borderStyles',\n borderRadius: 'radii',\n borderTopRightRadius: 'radii',\n borderTopLeftRadius: 'radii',\n borderBottomRightRadius: 'radii',\n borderBottomLeftRadius: 'radii',\n borderTopWidth: 'borderWidths',\n borderTopColor: 'colors',\n borderTopStyle: 'borderStyles',\n borderBottomWidth: 'borderWidths',\n borderBottomColor: 'colors',\n borderBottomStyle: 'borderStyles',\n borderLeftWidth: 'borderWidths',\n borderLeftColor: 'colors',\n borderLeftStyle: 'borderStyles',\n borderRightWidth: 'borderWidths',\n borderRightColor: 'colors',\n borderRightStyle: 'borderStyles',\n outlineColor: 'colors',\n boxShadow: 'shadows',\n textShadow: 'shadows',\n zIndex: 'zIndices',\n width: 'sizes',\n minWidth: 'sizes',\n maxWidth: 'sizes',\n height: 'sizes',\n minHeight: 'sizes',\n maxHeight: 'sizes',\n flexBasis: 'sizes',\n size: 'sizes',\n // svg\n fill: 'colors',\n stroke: 'colors'\n};\nvar positiveOrNegative = function positiveOrNegative(scale, value) {\n if (typeof value !== 'number' || value >= 0) {\n return get(scale, value, value);\n }\n var absolute = Math.abs(value);\n var n = get(scale, absolute, absolute);\n if (typeof n === 'string') return '-' + n;\n return n * -1;\n};\nvar transforms = ['margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'top', 'bottom', 'left', 'right'].reduce(function (acc, curr) {\n var _extends2;\n return _extends({}, acc, (_extends2 = {}, _extends2[curr] = positiveOrNegative, _extends2));\n}, {});\nexport var responsive = function responsive(styles) {\n return function (theme) {\n var next = {};\n var breakpoints = get(theme, 'breakpoints', defaultBreakpoints);\n var mediaQueries = [null].concat(breakpoints.map(function (n) {\n return \"@media screen and (min-width: \" + n + \")\";\n }));\n for (var key in styles) {\n var value = typeof styles[key] === 'function' ? styles[key](theme) : styles[key];\n if (value == null) continue;\n if (!Array.isArray(value)) {\n next[key] = value;\n continue;\n }\n for (var i = 0; i < value.slice(0, mediaQueries.length).length; i++) {\n var media = mediaQueries[i];\n if (!media) {\n next[key] = value[i];\n continue;\n }\n next[media] = next[media] || {};\n if (value[i] == null) continue;\n next[media][key] = value[i];\n }\n }\n return next;\n };\n};\nexport var css = function css(args) {\n return function (props) {\n if (props === void 0) {\n props = {};\n }\n var theme = _extends({}, defaultTheme, {}, props.theme || props);\n var result = {};\n var obj = typeof args === 'function' ? args(theme) : args;\n var styles = responsive(obj)(theme);\n for (var key in styles) {\n var x = styles[key];\n var val = typeof x === 'function' ? x(theme) : x;\n if (key === 'variant') {\n var variant = css(get(theme, val))(theme);\n result = _extends({}, result, {}, variant);\n continue;\n }\n if (val && typeof val === 'object') {\n result[key] = css(val)(theme);\n continue;\n }\n var prop = get(aliases, key, key);\n var scaleName = get(scales, prop);\n var scale = get(theme, scaleName, get(theme, prop, {}));\n var transform = get(transforms, prop, get);\n var value = transform(scale, val, val);\n if (multiples[prop]) {\n var dirs = multiples[prop];\n for (var i = 0; i < dirs.length; i++) {\n result[dirs[i]] = value;\n }\n } else {\n result[prop] = value;\n }\n }\n return result;\n };\n};\nexport default css;","import { MDXProvider } from '@mdx-js/react';\nimport deepmerge from 'deepmerge';\nimport isPropValid from '@emotion/is-prop-valid';\nimport { version } from '@emotion/core/package.json';\nimport React, { forwardRef, useContext, createContext, useState, useEffect, useReducer } from 'react';\nimport { jsx, ThemeContext, Global } from '@emotion/core';\nimport css, { css as css$1, get } from '@styled-system/css';\nexport { css, get } from '@styled-system/css';\nvar getCSS = function getCSS(props) {\n if (!props.sx && !props.css) {\n return undefined;\n }\n return function (theme) {\n var styles = css(props.sx)(theme);\n var raw = typeof props.css === 'function' ? props.css(theme) : props.css;\n return [styles, raw];\n };\n};\nvar parseProps = function parseProps(props) {\n if (!props) {\n return null;\n }\n var next = {};\n for (var key in props) {\n if (key === 'sx') {\n continue;\n }\n next[key] = props[key];\n }\n var css$$1 = getCSS(props);\n if (css$$1) {\n next.css = css$$1;\n }\n return next;\n};\nvar jsx$1 = function jsx$$1(type, props) {\n var arguments$1 = arguments;\n for (var _len = arguments.length, children = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n children[_key - 2] = arguments$1[_key];\n }\n return jsx.apply(undefined, [type, parseProps(props)].concat(children));\n};\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\nvar canUseSymbol = typeof Symbol === 'function' && Symbol[\"for\"];\nvar REACT_ELEMENT = canUseSymbol ? Symbol[\"for\"]('react.element') : 0xeac7;\nvar FORWARD_REF = canUseSymbol ? Symbol[\"for\"]('react.forward_ref') : 0xeac7;\nvar isMergeableObject = function isMergeableObject(n) {\n return !!n && _typeof(n) === 'object' && n.$$typeof !== REACT_ELEMENT && n.$$typeof !== FORWARD_REF;\n};\nvar arrayMerge = function arrayMerge(destinationArray, sourceArray, options) {\n return sourceArray;\n};\nvar merge = function merge(a, b) {\n return deepmerge(a, b, {\n isMergeableObject: isMergeableObject,\n arrayMerge: arrayMerge\n });\n};\nmerge.all = function () {\n var arguments$1 = arguments;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments$1[_key];\n }\n return deepmerge.all(args, {\n isMergeableObject: isMergeableObject,\n arrayMerge: arrayMerge\n });\n};\nvar styled = function styled(tag) {\n return function () {\n var arguments$1 = arguments;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments$1[_key];\n }\n var Styled = forwardRef(function (_ref, ref) {\n var as = _ref.as,\n props = _objectWithoutProperties(_ref, [\"as\"]);\n var shouldForwardProps = typeof tag !== 'string' || as && typeof as !== 'string';\n var theme = useContext(ThemeContext);\n var nextProps = shouldForwardProps ? props : {};\n var styles = {};\n args.forEach(function (arg) {\n var style = typeof arg === 'function' ? arg(_objectSpread2({\n theme: theme\n }, props)) : arg;\n Object.assign(styles, style);\n });\n if (!shouldForwardProps) {\n for (var key in props) {\n if (!isPropValid(key)) {\n continue;\n }\n nextProps[key] = props[key];\n }\n }\n return jsx$1(as || tag, _objectSpread2({}, nextProps, {\n ref: ref,\n css: styles\n }));\n });\n return Styled;\n };\n};\nvar themed = function themed(key) {\n return function (props) {\n return css$1(get(props.theme, \"styles.\".concat(key)))(props.theme);\n };\n};\nvar tags = ['p', 'b', 'i', 'a', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'img', 'pre', 'code', 'ol', 'ul', 'li', 'blockquote', 'hr', 'em', 'table', 'tr', 'th', 'td', 'em', 'strong', 'delete',\n// mdx\n'inlineCode', 'thematicBreak',\n// other\n'div',\n// theme-ui\n'root'];\nvar aliases = {\n inlineCode: 'code',\n thematicBreak: 'hr',\n root: 'div'\n};\nvar alias = function alias(n) {\n return aliases[n] || n;\n};\nvar Styled = styled('div')(themed('div'));\nvar components = {};\ntags.forEach(function (tag) {\n components[tag] = styled(alias(tag))(themed(tag));\n Styled[tag] = components[tag];\n});\nvar createComponents = function createComponents() {\n var components = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var next = {};\n Object.keys(components).forEach(function (key) {\n next[key] = styled(components[key])(themed(key));\n });\n return next;\n};\nvar Context = createContext({\n emotionVersion: version,\n theme: null,\n components: components\n});\nvar useThemeUI = function useThemeUI() {\n return useContext(Context);\n};\nvar toVarName = function toVarName(key) {\n return \"--theme-ui-\".concat(key);\n};\nvar toVarValue = function toVarValue(key, value) {\n return \"var(\".concat(toVarName(key), \", \").concat(value, \")\");\n};\nvar join = function join() {\n var arguments$1 = arguments;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments$1[_key];\n }\n return args.filter(Boolean).join('-');\n};\nvar numberScales = {\n fontWeights: true,\n lineHeights: true\n};\nvar reservedKeys = {\n useCustomProperties: true,\n initialColorModeName: true,\n initialColorMode: true\n};\nvar toPixel = function toPixel(key, value) {\n if (typeof value !== 'number') {\n return value;\n }\n if (numberScales[key]) {\n return value;\n }\n return value + 'px';\n}; // convert theme values to custom properties\n\nvar toCustomProperties = function toCustomProperties(obj, parent, themeKey) {\n var next = Array.isArray(obj) ? [] : {};\n for (var key in obj) {\n var value = obj[key];\n var name = join(parent, key);\n if (value && _typeof(value) === 'object') {\n next[key] = toCustomProperties(value, name, key);\n continue;\n }\n if (reservedKeys[key]) {\n next[key] = value;\n continue;\n }\n var val = toPixel(themeKey || key, value);\n next[key] = toVarValue(name, val);\n }\n return next;\n};\nvar objectToVars = function objectToVars(parent, obj) {\n var vars = {};\n for (var key in obj) {\n if (key === 'modes') {\n continue;\n }\n var name = join(parent, key);\n var value = obj[key];\n if (value && _typeof(value) === 'object') {\n vars = _objectSpread2({}, vars, {}, objectToVars(name, value));\n } else {\n vars[toVarName(name)] = value;\n }\n }\n return vars;\n}; // create body styles for color modes\n\nvar createColorStyles = function createColorStyles(theme) {\n if (!theme.colors || !theme.colors.modes) {\n return {};\n }\n if (theme.useCustomProperties === false) {\n return css$1({\n color: 'text',\n bg: 'background'\n })(theme);\n }\n var modes = theme.colors.modes;\n var styles = objectToVars('colors', theme.colors);\n Object.keys(modes).forEach(function (mode) {\n var key = \"&.theme-ui-\".concat(mode);\n styles[key] = objectToVars('colors', modes[mode]);\n });\n return css$1(_objectSpread2({}, styles, {\n color: function color(t) {\n return \"var(--theme-ui-colors-text, \".concat(t.colors.text, \")\");\n },\n bg: function bg(t) {\n return \"var(--theme-ui-colors-background, \".concat(t.colors.background, \")\");\n }\n }))(theme);\n};\nvar STORAGE_KEY = 'theme-ui-color-mode';\nvar HAS_STORAGE = typeof Storage !== 'undefined';\nvar storage = {\n get: function get$$1(init) {\n return HAS_STORAGE && window.localStorage.getItem(STORAGE_KEY) || init;\n },\n set: function set(value) {\n return HAS_STORAGE && window.localStorage.setItem(STORAGE_KEY, value);\n }\n};\nvar getMediaQuery = function getMediaQuery() {\n var darkQuery = '(prefers-color-scheme: dark)';\n var mql = window.matchMedia ? window.matchMedia(darkQuery) : {};\n var dark = mql.media === darkQuery;\n return dark && mql.matches;\n};\nvar getName = function getName(theme) {\n return theme.initialColorModeName || theme.initialColorMode || 'default';\n};\nvar useColorState = function useColorState(theme) {\n var _useState = useState(getName(theme)),\n _useState2 = _slicedToArray(_useState, 2),\n mode = _useState2[0],\n setMode = _useState2[1];\n useEffect(function () {\n // initialize\n var stored = storage.get();\n document.body.classList.remove('theme-ui-' + stored);\n var dark = getMediaQuery();\n if (!stored && dark && theme.useColorSchemeMediaQuery) {\n return setMode('dark');\n }\n if (!stored || stored === mode) {\n return;\n }\n setMode(stored);\n }, []);\n useEffect(function () {\n if (!mode) {\n return;\n }\n storage.set(mode);\n }, [mode]);\n if (process.env.NODE_ENV !== 'production') {\n if (theme.colors && theme.colors.modes && Object.keys(theme.colors.modes).indexOf(getName(theme)) > -1) {\n console.warn('The `initialColorMode` value should be a unique name' + ' and cannot reference a key in `theme.colors.modes`.');\n }\n }\n return [mode, setMode];\n};\nvar useColorMode = function useColorMode() {\n var _useThemeUI = useThemeUI(),\n colorMode = _useThemeUI.colorMode,\n setColorMode = _useThemeUI.setColorMode;\n if (typeof setColorMode !== 'function') {\n throw new Error(\"[useColorMode] requires the ThemeProvider component\");\n }\n return [colorMode, setColorMode];\n};\nvar bodyColor = function bodyColor(theme) {\n return {\n body: createColorStyles(theme)\n };\n};\nvar ColorMode = function ColorMode() {\n return React.createElement(Global, {\n styles: bodyColor\n });\n};\nvar InitializeColorMode = function InitializeColorMode() {\n return React.createElement(\"script\", {\n key: \"theme-ui-no-flash\",\n dangerouslySetInnerHTML: {\n __html: \"(function() { try {\\n var mode = localStorage.getItem('theme-ui-color-mode');\\n if (!mode) return\\n document.body.classList.add('theme-ui-' + mode);\\n } catch (e) {} })();\"\n }\n });\n};\nvar mergeState = function mergeState() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var next = arguments.length > 1 ? arguments[1] : undefined;\n return merge.all({}, state, next);\n};\nvar applyColorMode = function applyColorMode(theme, mode) {\n if (!mode) {\n return theme;\n }\n var modes = get(theme, 'colors.modes', {});\n return merge.all({}, theme, {\n colors: get(modes, mode, {})\n });\n};\nvar BaseProvider = function BaseProvider(_ref) {\n var context = _ref.context,\n components$$1 = _ref.components,\n children = _ref.children;\n var theme = _objectSpread2({}, context.theme);\n if (theme.useCustomProperties !== false) {\n theme.colors = toCustomProperties(theme.colors, 'colors');\n }\n return jsx$1(ThemeContext.Provider, {\n value: theme\n }, jsx$1(MDXProvider, {\n components: components$$1\n }, jsx$1(Context.Provider, {\n value: context,\n children: children\n })));\n};\nvar RootProvider = function RootProvider(_ref2) {\n var _ref2$theme = _ref2.theme,\n propsTheme = _ref2$theme === void 0 ? {} : _ref2$theme,\n components$$1 = _ref2.components,\n children = _ref2.children;\n // components are provided in the default Context\n var outer = useThemeUI();\n var propsThemeObject = typeof propsTheme === 'function' ? propsTheme({}) : propsTheme;\n var _useColorState = useColorState(outer.theme || propsThemeObject),\n _useColorState2 = _slicedToArray(_useColorState, 2),\n colorMode = _useColorState2[0],\n setColorMode = _useColorState2[1];\n var theme = applyColorMode(outer.theme || propsThemeObject, colorMode);\n var context = _objectSpread2({}, outer, {\n __THEME_UI__: true,\n colorMode: colorMode,\n setColorMode: setColorMode,\n components: _objectSpread2({}, outer.components, {}, createComponents(components$$1)),\n theme: theme\n });\n useEffect(function () {\n window.__THEME_UI__ = context;\n }, [context.theme, context.colorMode]);\n return jsx$1(BaseProvider, {\n context: context,\n components: context.components,\n children: children\n });\n};\nvar NestedProvider = function NestedProvider(_ref3) {\n var theme = _ref3.theme,\n components$$1 = _ref3.components,\n children = _ref3.children;\n var outer = useThemeUI();\n var context = typeof theme === 'function' ? _objectSpread2({}, outer, {\n theme: theme(outer.theme)\n }) : merge.all({}, outer, {\n theme: theme\n });\n return jsx$1(BaseProvider, {\n context: context,\n components: createComponents(components$$1),\n children: children\n });\n};\nvar ThemeProvider = function ThemeProvider(props) {\n var outer = useThemeUI();\n if (process.env.NODE_ENV !== 'production') {\n if (outer.emotionVersion !== version) {\n console.warn('Multiple versions of Emotion detected,', 'and theming might not work as expected.', 'Please ensure there is only one copy of @emotion/core installed in your application.');\n }\n }\n if (!props.scoped && outer.__THEME_UI__) {\n return jsx$1(NestedProvider, props);\n }\n return jsx$1(RootProvider, props);\n};\nvar ThemeStateProvider = function ThemeStateProvider(_ref4) {\n var theme = _ref4.theme,\n children = _ref4.children;\n var outer = useThemeUI();\n var _useReducer = useReducer(mergeState, theme),\n _useReducer2 = _slicedToArray(_useReducer, 2),\n state = _useReducer2[0],\n setTheme = _useReducer2[1];\n var context = _objectSpread2({}, outer, {\n theme: state,\n setTheme: setTheme\n });\n return jsx$1(Context.Provider, {\n value: context,\n children: children\n });\n};\nvar Box = styled('div')({\n boxSizing: 'border-box',\n minWidth: 0\n});\nvar Flex = styled(Box)({\n display: 'flex'\n}); // root/page layout\n\nvar Layout = function Layout(props) {\n return jsx$1(Box, _objectSpread2({}, props, {\n sx: {\n minHeight: '100vh',\n display: 'flex',\n flexDirection: 'column',\n variant: 'styles.Layout'\n }\n }));\n};\nvar Header = function Header(props) {\n return jsx$1(Box, _objectSpread2({\n as: 'header'\n }, props, {\n sx: {\n display: 'flex',\n variant: 'styles.Header'\n }\n }));\n};\nvar Main = function Main(props) {\n return jsx$1(Box, _objectSpread2({\n as: 'main'\n }, props, {\n sx: {\n flex: '1 1 auto',\n variant: 'styles.Main'\n }\n }));\n};\nvar Container = function Container(props) {\n return jsx$1(Box, _objectSpread2({}, props, {\n sx: {\n width: '100%',\n minWidth: 0,\n maxWidth: 1024,\n mx: 'auto',\n p: 4,\n variant: 'styles.Container'\n }\n }));\n};\nvar Footer = function Footer(props) {\n return jsx$1(Box, _objectSpread2({\n as: 'footer'\n }, props, {\n sx: {\n display: 'flex',\n variant: 'styles.Footer'\n }\n }));\n};\nvar BaseStyles = function BaseStyles(props) {\n return jsx$1(\"div\", _extends({}, props, {\n sx: {\n fontFamily: 'body',\n lineHeight: 'body',\n fontWeight: 'body',\n variant: 'styles'\n }\n }));\n};\nexport { jsx$1 as jsx, ThemeProvider, ThemeStateProvider, Context, useThemeUI, ColorMode, useColorMode, InitializeColorMode, Styled, components, Box, Flex, Layout, Header, Main, Container, Footer, BaseStyles };","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","const set = require('regenerate')(0x1940);\nset.addRange(0x1900, 0x191E).addRange(0x1920, 0x192B).addRange(0x1930, 0x193B).addRange(0x1944, 0x194F);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0xB01, 0xB03).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB3C, 0xB44).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4D).addRange(0xB55, 0xB57).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB63).addRange(0xB66, 0xB77);\nmodule.exports = set;","const set = require('regenerate')(0x20F0);\nset.addRange(0x900, 0x952).addRange(0x955, 0x97F).addRange(0x1CD0, 0x1CF6).addRange(0x1CF8, 0x1CF9).addRange(0xA830, 0xA839).addRange(0xA8E0, 0xA8FF);\nmodule.exports = set;","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = clone;\n","const set = require('regenerate')();\nset.addRange(0x1400, 0x167F).addRange(0x18B0, 0x18F5).addRange(0x11AB0, 0x11ABF);\nmodule.exports = set;","const set = require('regenerate')(0xFB3E);\nset.addRange(0x591, 0x5C7).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F4).addRange(0xFB1D, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFB4F);\nmodule.exports = set;","/** Used to match wrap detail comments. */\nvar reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n/**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\nfunction getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n}\n\nmodule.exports = getWrapDetails;\n","const set = require('regenerate')(0x640, 0x85E);\nset.addRange(0x840, 0x85B);\nmodule.exports = set;","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","const set = require('regenerate')();\nset.addRange(0x11150, 0x11176);\nmodule.exports = set;","const set = require('regenerate')(0xAA, 0xBA, 0x1BB, 0x294, 0x6D5, 0x6FF, 0x710, 0x7B1, 0x93D, 0x950, 0x9B2, 0x9BD, 0x9CE, 0x9FC, 0xA5E, 0xABD, 0xAD0, 0xAF9, 0xB3D, 0xB71, 0xB83, 0xB9C, 0xBD0, 0xC3D, 0xC5D, 0xC80, 0xCBD, 0xD3D, 0xD4E, 0xDBD, 0xE84, 0xEA5, 0xEBD, 0xF00, 0x103F, 0x1061, 0x108E, 0x1258, 0x12C0, 0x17DC, 0x18AA, 0x1CFA, 0x3006, 0x303C, 0x309F, 0x30FF, 0xA66E, 0xA78F, 0xA7F7, 0xA8FB, 0xAA7A, 0xAAB1, 0xAAC0, 0xAAC2, 0xAAF2, 0xFB1D, 0xFB3E, 0x10808, 0x1083C, 0x10A00, 0x10F27, 0x11075, 0x11144, 0x11147, 0x11176, 0x111DA, 0x111DC, 0x11288, 0x1133D, 0x11350, 0x114C7, 0x11644, 0x116B8, 0x11909, 0x1193F, 0x11941, 0x119E1, 0x119E3, 0x11A00, 0x11A3A, 0x11A50, 0x11A9D, 0x11C40, 0x11D46, 0x11D98, 0x11FB0, 0x16F50, 0x1DF0A, 0x1E14E, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);\nset.addRange(0x1C0, 0x1C3).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F2).addRange(0x620, 0x63F).addRange(0x641, 0x64A).addRange(0x66E, 0x66F).addRange(0x671, 0x6D3).addRange(0x6EE, 0x6EF).addRange(0x6FA, 0x6FC).addRange(0x712, 0x72F).addRange(0x74D, 0x7A5).addRange(0x7CA, 0x7EA).addRange(0x800, 0x815).addRange(0x840, 0x858).addRange(0x860, 0x86A).addRange(0x870, 0x887).addRange(0x889, 0x88E).addRange(0x8A0, 0x8C8).addRange(0x904, 0x939).addRange(0x958, 0x961).addRange(0x972, 0x980).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E1).addRange(0x9F0, 0x9F1).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33).addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA59, 0xA5C).addRange(0xA72, 0xA74).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xAE0, 0xAE1).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39);\nset.addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB61).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xC05, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC61).addRange(0xC85, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE1).addRange(0xCF1, 0xCF2).addRange(0xD04, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD3A).addRange(0xD54, 0xD56).addRange(0xD5F, 0xD61).addRange(0xD7A, 0xD7F).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6).addRange(0xE01, 0xE30).addRange(0xE32, 0xE33).addRange(0xE40, 0xE45).addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEB0).addRange(0xEB2, 0xEB3).addRange(0xEC0, 0xEC4).addRange(0xEDC, 0xEDF).addRange(0xF40, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF88, 0xF8C).addRange(0x1000, 0x102A).addRange(0x1050, 0x1055).addRange(0x105A, 0x105D).addRange(0x1065, 0x1066);\nset.addRange(0x106E, 0x1070).addRange(0x1075, 0x1081).addRange(0x1100, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x1380, 0x138F).addRange(0x1401, 0x166C).addRange(0x166F, 0x167F).addRange(0x1681, 0x169A).addRange(0x16A0, 0x16EA).addRange(0x16F1, 0x16F8).addRange(0x1700, 0x1711).addRange(0x171F, 0x1731).addRange(0x1740, 0x1751).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1780, 0x17B3).addRange(0x1820, 0x1842).addRange(0x1844, 0x1878).addRange(0x1880, 0x1884).addRange(0x1887, 0x18A8).addRange(0x18B0, 0x18F5).addRange(0x1900, 0x191E).addRange(0x1950, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x1A00, 0x1A16).addRange(0x1A20, 0x1A54).addRange(0x1B05, 0x1B33).addRange(0x1B45, 0x1B4C).addRange(0x1B83, 0x1BA0).addRange(0x1BAE, 0x1BAF).addRange(0x1BBA, 0x1BE5).addRange(0x1C00, 0x1C23).addRange(0x1C4D, 0x1C4F).addRange(0x1C5A, 0x1C77).addRange(0x1CE9, 0x1CEC).addRange(0x1CEE, 0x1CF3).addRange(0x1CF5, 0x1CF6);\nset.addRange(0x2135, 0x2138).addRange(0x2D30, 0x2D67).addRange(0x2D80, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x3041, 0x3096).addRange(0x30A1, 0x30FA).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x31A0, 0x31BF).addRange(0x31F0, 0x31FF).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0xA014).addRange(0xA016, 0xA48C).addRange(0xA4D0, 0xA4F7).addRange(0xA500, 0xA60B).addRange(0xA610, 0xA61F).addRange(0xA62A, 0xA62B).addRange(0xA6A0, 0xA6E5).addRange(0xA7FB, 0xA801).addRange(0xA803, 0xA805).addRange(0xA807, 0xA80A).addRange(0xA80C, 0xA822).addRange(0xA840, 0xA873).addRange(0xA882, 0xA8B3).addRange(0xA8F2, 0xA8F7).addRange(0xA8FD, 0xA8FE).addRange(0xA90A, 0xA925).addRange(0xA930, 0xA946).addRange(0xA960, 0xA97C).addRange(0xA984, 0xA9B2).addRange(0xA9E0, 0xA9E4).addRange(0xA9E7, 0xA9EF).addRange(0xA9FA, 0xA9FE).addRange(0xAA00, 0xAA28).addRange(0xAA40, 0xAA42).addRange(0xAA44, 0xAA4B).addRange(0xAA60, 0xAA6F).addRange(0xAA71, 0xAA76).addRange(0xAA7E, 0xAAAF).addRange(0xAAB5, 0xAAB6).addRange(0xAAB9, 0xAABD).addRange(0xAADB, 0xAADC).addRange(0xAAE0, 0xAAEA).addRange(0xAB01, 0xAB06);\nset.addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xABC0, 0xABE2).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB1F, 0xFB28).addRange(0xFB2A, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBB1).addRange(0xFBD3, 0xFD3D).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFB).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0xFF66, 0xFF6F).addRange(0xFF71, 0xFF9D).addRange(0xFFA0, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10280, 0x1029C).addRange(0x102A0, 0x102D0).addRange(0x10300, 0x1031F).addRange(0x1032D, 0x10340).addRange(0x10342, 0x10349).addRange(0x10350, 0x10375).addRange(0x10380, 0x1039D).addRange(0x103A0, 0x103C3).addRange(0x103C8, 0x103CF).addRange(0x10450, 0x1049D).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767);\nset.addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10860, 0x10876).addRange(0x10880, 0x1089E).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x10900, 0x10915).addRange(0x10920, 0x10939).addRange(0x10980, 0x109B7).addRange(0x109BE, 0x109BF).addRange(0x10A10, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A60, 0x10A7C).addRange(0x10A80, 0x10A9C).addRange(0x10AC0, 0x10AC7).addRange(0x10AC9, 0x10AE4).addRange(0x10B00, 0x10B35).addRange(0x10B40, 0x10B55).addRange(0x10B60, 0x10B72).addRange(0x10B80, 0x10B91).addRange(0x10C00, 0x10C48).addRange(0x10D00, 0x10D23).addRange(0x10E80, 0x10EA9).addRange(0x10EB0, 0x10EB1).addRange(0x10F00, 0x10F1C).addRange(0x10F30, 0x10F45).addRange(0x10F70, 0x10F81).addRange(0x10FB0, 0x10FC4).addRange(0x10FE0, 0x10FF6).addRange(0x11003, 0x11037).addRange(0x11071, 0x11072).addRange(0x11083, 0x110AF).addRange(0x110D0, 0x110E8).addRange(0x11103, 0x11126).addRange(0x11150, 0x11172).addRange(0x11183, 0x111B2).addRange(0x111C1, 0x111C4).addRange(0x11200, 0x11211).addRange(0x11213, 0x1122B).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A8).addRange(0x112B0, 0x112DE).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330);\nset.addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1135D, 0x11361).addRange(0x11400, 0x11434).addRange(0x11447, 0x1144A).addRange(0x1145F, 0x11461).addRange(0x11480, 0x114AF).addRange(0x114C4, 0x114C5).addRange(0x11580, 0x115AE).addRange(0x115D8, 0x115DB).addRange(0x11600, 0x1162F).addRange(0x11680, 0x116AA).addRange(0x11700, 0x1171A).addRange(0x11740, 0x11746).addRange(0x11800, 0x1182B).addRange(0x118FF, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x1192F).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D0).addRange(0x11A0B, 0x11A32).addRange(0x11A5C, 0x11A89).addRange(0x11AB0, 0x11AF8).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C2E).addRange(0x11C72, 0x11C8F).addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D30).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D89).addRange(0x11EE0, 0x11EF2).addRange(0x12000, 0x12399).addRange(0x12480, 0x12543).addRange(0x12F90, 0x12FF0).addRange(0x13000, 0x1342E).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A70, 0x16ABE).addRange(0x16AD0, 0x16AED).addRange(0x16B00, 0x16B2F).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16F00, 0x16F4A).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1B000, 0x1B122);\nset.addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167).addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1E100, 0x1E12C).addRange(0x1E290, 0x1E2AD).addRange(0x1E2C0, 0x1E2EB).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE).addRange(0x1E800, 0x1E8C4).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B738).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x531, 0x556).addRange(0x559, 0x58A).addRange(0x58D, 0x58F).addRange(0xFB13, 0xFB17);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x11400, 0x1145B).addRange(0x1145D, 0x11461);\nmodule.exports = set;","const set = require('regenerate')(0x100, 0x102, 0x104, 0x106, 0x108, 0x10A, 0x10C, 0x10E, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11A, 0x11C, 0x11E, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12A, 0x12C, 0x12E, 0x130, 0x132, 0x134, 0x136, 0x139, 0x13B, 0x13D, 0x13F, 0x141, 0x143, 0x145, 0x147, 0x14A, 0x14C, 0x14E, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15A, 0x15C, 0x15E, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16A, 0x16C, 0x16E, 0x170, 0x172, 0x174, 0x176, 0x17B, 0x17D, 0x184, 0x1A2, 0x1A4, 0x1A9, 0x1AC, 0x1B5, 0x1BC, 0x1CD, 0x1CF, 0x1D1, 0x1D3, 0x1D5, 0x1D7, 0x1D9, 0x1DB, 0x1DE, 0x1E0, 0x1E2, 0x1E4, 0x1E6, 0x1E8, 0x1EA, 0x1EC, 0x1EE, 0x1F4, 0x1FA, 0x1FC, 0x1FE, 0x200, 0x202, 0x204, 0x206, 0x208, 0x20A, 0x20C, 0x20E, 0x210, 0x212, 0x214, 0x216, 0x218, 0x21A, 0x21C, 0x21E, 0x220, 0x222, 0x224, 0x226, 0x228, 0x22A, 0x22C, 0x22E, 0x230, 0x232, 0x241, 0x248, 0x24A, 0x24C, 0x24E, 0x370, 0x372, 0x376, 0x37F, 0x386, 0x38C, 0x3CF, 0x3D8, 0x3DA, 0x3DC, 0x3DE, 0x3E0, 0x3E2, 0x3E4, 0x3E6, 0x3E8, 0x3EA, 0x3EC, 0x3EE, 0x3F4, 0x3F7, 0x460, 0x462, 0x464, 0x466, 0x468, 0x46A, 0x46C, 0x46E, 0x470, 0x472, 0x474, 0x476, 0x478, 0x47A, 0x47C, 0x47E, 0x480, 0x48A, 0x48C, 0x48E, 0x490, 0x492, 0x494, 0x496, 0x498, 0x49A, 0x49C, 0x49E, 0x4A0, 0x4A2, 0x4A4, 0x4A6, 0x4A8, 0x4AA, 0x4AC, 0x4AE, 0x4B0, 0x4B2, 0x4B4, 0x4B6, 0x4B8, 0x4BA, 0x4BC, 0x4BE, 0x4C3, 0x4C5, 0x4C7, 0x4C9, 0x4CB, 0x4CD, 0x4D0, 0x4D2, 0x4D4, 0x4D6, 0x4D8, 0x4DA, 0x4DC, 0x4DE, 0x4E0, 0x4E2, 0x4E4, 0x4E6, 0x4E8, 0x4EA, 0x4EC, 0x4EE, 0x4F0, 0x4F2, 0x4F4, 0x4F6, 0x4F8, 0x4FA, 0x4FC, 0x4FE, 0x500, 0x502, 0x504, 0x506, 0x508, 0x50A, 0x50C, 0x50E, 0x510, 0x512, 0x514, 0x516, 0x518, 0x51A, 0x51C, 0x51E, 0x520, 0x522, 0x524, 0x526, 0x528, 0x52A, 0x52C, 0x52E, 0x10C7, 0x10CD, 0x1E00, 0x1E02, 0x1E04, 0x1E06, 0x1E08, 0x1E0A, 0x1E0C, 0x1E0E, 0x1E10, 0x1E12, 0x1E14, 0x1E16, 0x1E18, 0x1E1A, 0x1E1C, 0x1E1E, 0x1E20, 0x1E22, 0x1E24, 0x1E26, 0x1E28, 0x1E2A, 0x1E2C, 0x1E2E, 0x1E30, 0x1E32, 0x1E34, 0x1E36, 0x1E38, 0x1E3A, 0x1E3C, 0x1E3E, 0x1E40, 0x1E42, 0x1E44, 0x1E46, 0x1E48, 0x1E4A, 0x1E4C, 0x1E4E, 0x1E50, 0x1E52, 0x1E54, 0x1E56, 0x1E58, 0x1E5A, 0x1E5C, 0x1E5E, 0x1E60, 0x1E62, 0x1E64, 0x1E66, 0x1E68, 0x1E6A, 0x1E6C, 0x1E6E, 0x1E70, 0x1E72, 0x1E74, 0x1E76, 0x1E78, 0x1E7A, 0x1E7C, 0x1E7E, 0x1E80, 0x1E82, 0x1E84, 0x1E86, 0x1E88, 0x1E8A, 0x1E8C, 0x1E8E, 0x1E90, 0x1E92, 0x1E94, 0x1E9E, 0x1EA0, 0x1EA2, 0x1EA4, 0x1EA6, 0x1EA8, 0x1EAA, 0x1EAC, 0x1EAE, 0x1EB0, 0x1EB2, 0x1EB4, 0x1EB6, 0x1EB8, 0x1EBA, 0x1EBC, 0x1EBE, 0x1EC0, 0x1EC2, 0x1EC4, 0x1EC6, 0x1EC8, 0x1ECA, 0x1ECC, 0x1ECE, 0x1ED0, 0x1ED2, 0x1ED4, 0x1ED6, 0x1ED8, 0x1EDA, 0x1EDC, 0x1EDE, 0x1EE0, 0x1EE2, 0x1EE4, 0x1EE6, 0x1EE8, 0x1EEA, 0x1EEC, 0x1EEE, 0x1EF0, 0x1EF2, 0x1EF4, 0x1EF6, 0x1EF8, 0x1EFA, 0x1EFC, 0x1EFE, 0x1F59, 0x1F5B, 0x1F5D, 0x1F5F, 0x2126, 0x2132, 0x2183, 0x2C60, 0x2C67, 0x2C69, 0x2C6B, 0x2C72, 0x2C75, 0x2C82, 0x2C84, 0x2C86, 0x2C88, 0x2C8A, 0x2C8C, 0x2C8E, 0x2C90, 0x2C92, 0x2C94, 0x2C96, 0x2C98, 0x2C9A, 0x2C9C, 0x2C9E, 0x2CA0, 0x2CA2, 0x2CA4, 0x2CA6, 0x2CA8, 0x2CAA, 0x2CAC, 0x2CAE, 0x2CB0, 0x2CB2, 0x2CB4, 0x2CB6, 0x2CB8, 0x2CBA, 0x2CBC, 0x2CBE, 0x2CC0, 0x2CC2, 0x2CC4, 0x2CC6, 0x2CC8, 0x2CCA, 0x2CCC, 0x2CCE, 0x2CD0, 0x2CD2, 0x2CD4, 0x2CD6, 0x2CD8, 0x2CDA, 0x2CDC, 0x2CDE, 0x2CE0, 0x2CE2, 0x2CEB, 0x2CED, 0x2CF2, 0xA640, 0xA642, 0xA644, 0xA646, 0xA648, 0xA64A, 0xA64C, 0xA64E, 0xA650, 0xA652, 0xA654, 0xA656, 0xA658, 0xA65A, 0xA65C, 0xA65E, 0xA660, 0xA662, 0xA664, 0xA666, 0xA668, 0xA66A, 0xA66C, 0xA680, 0xA682, 0xA684, 0xA686, 0xA688, 0xA68A, 0xA68C, 0xA68E, 0xA690, 0xA692, 0xA694, 0xA696, 0xA698, 0xA69A, 0xA722, 0xA724, 0xA726, 0xA728, 0xA72A, 0xA72C, 0xA72E, 0xA732, 0xA734, 0xA736, 0xA738, 0xA73A, 0xA73C, 0xA73E, 0xA740, 0xA742, 0xA744, 0xA746, 0xA748, 0xA74A, 0xA74C, 0xA74E, 0xA750, 0xA752, 0xA754, 0xA756, 0xA758, 0xA75A, 0xA75C, 0xA75E, 0xA760, 0xA762, 0xA764, 0xA766, 0xA768, 0xA76A, 0xA76C, 0xA76E, 0xA779, 0xA77B, 0xA780, 0xA782, 0xA784, 0xA786, 0xA78B, 0xA78D, 0xA790, 0xA792, 0xA796, 0xA798, 0xA79A, 0xA79C, 0xA79E, 0xA7A0, 0xA7A2, 0xA7A4, 0xA7A6, 0xA7A8, 0xA7B6, 0xA7B8, 0xA7BA, 0xA7BC, 0xA7BE, 0xA7C0, 0xA7C2, 0xA7C9, 0xA7D0, 0xA7D6, 0xA7D8, 0xA7F5);\nset.addRange(0x41, 0x5A).addRange(0xC0, 0xD6).addRange(0xD8, 0xDE).addRange(0x178, 0x179).addRange(0x181, 0x182).addRange(0x186, 0x187).addRange(0x189, 0x18B).addRange(0x18E, 0x191).addRange(0x193, 0x194).addRange(0x196, 0x198).addRange(0x19C, 0x19D).addRange(0x19F, 0x1A0).addRange(0x1A6, 0x1A7).addRange(0x1AE, 0x1AF).addRange(0x1B1, 0x1B3).addRange(0x1B7, 0x1B8).addRange(0x1C4, 0x1C5).addRange(0x1C7, 0x1C8).addRange(0x1CA, 0x1CB).addRange(0x1F1, 0x1F2).addRange(0x1F6, 0x1F8).addRange(0x23A, 0x23B).addRange(0x23D, 0x23E).addRange(0x243, 0x246).addRange(0x388, 0x38A).addRange(0x38E, 0x38F).addRange(0x391, 0x3A1).addRange(0x3A3, 0x3AB).addRange(0x3F9, 0x3FA).addRange(0x3FD, 0x42F).addRange(0x4C0, 0x4C1).addRange(0x531, 0x556).addRange(0x10A0, 0x10C5).addRange(0x13A0, 0x13F5).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1F08, 0x1F0F).addRange(0x1F18, 0x1F1D).addRange(0x1F28, 0x1F2F).addRange(0x1F38, 0x1F3F).addRange(0x1F48, 0x1F4D).addRange(0x1F68, 0x1F6F).addRange(0x1F88, 0x1F8F).addRange(0x1F98, 0x1F9F).addRange(0x1FA8, 0x1FAF).addRange(0x1FB8, 0x1FBC).addRange(0x1FC8, 0x1FCC).addRange(0x1FD8, 0x1FDB).addRange(0x1FE8, 0x1FEC).addRange(0x1FF8, 0x1FFC).addRange(0x212A, 0x212B);\nset.addRange(0x2160, 0x216F).addRange(0x24B6, 0x24CF).addRange(0x2C00, 0x2C2F).addRange(0x2C62, 0x2C64).addRange(0x2C6D, 0x2C70).addRange(0x2C7E, 0x2C80).addRange(0xA77D, 0xA77E).addRange(0xA7AA, 0xA7AE).addRange(0xA7B0, 0xA7B4).addRange(0xA7C4, 0xA7C7).addRange(0xFF21, 0xFF3A).addRange(0x10400, 0x10427).addRange(0x104B0, 0x104D3).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10C80, 0x10CB2).addRange(0x118A0, 0x118BF).addRange(0x16E40, 0x16E5F).addRange(0x1E900, 0x1E921);\nmodule.exports = set;","var createWrap = require('./_createWrap');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_ARY_FLAG = 128;\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\nfunction ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n}\n\nmodule.exports = ary;\n","const set = require('regenerate')();\nset.addRange(0x10B40, 0x10B55).addRange(0x10B58, 0x10B5F);\nmodule.exports = set;","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","const set = require('regenerate')();\nset.addRange(0x16A70, 0x16ABE).addRange(0x16AC0, 0x16AC9);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0xD800, 0xDFFF);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x11100, 0x11134).addRange(0x11136, 0x11147);\nmodule.exports = set;","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","const set = require('regenerate')();\nset.addRange(0xAA80, 0xAAC2).addRange(0xAADB, 0xAADF);\nmodule.exports = set;","var call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","const set = require('regenerate')(0x100, 0x102, 0x104, 0x106, 0x108, 0x10A, 0x10C, 0x10E, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11A, 0x11C, 0x11E, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12A, 0x12C, 0x12E, 0x130, 0x132, 0x134, 0x136, 0x139, 0x13B, 0x13D, 0x13F, 0x141, 0x143, 0x145, 0x147, 0x14A, 0x14C, 0x14E, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15A, 0x15C, 0x15E, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16A, 0x16C, 0x16E, 0x170, 0x172, 0x174, 0x176, 0x17B, 0x17D, 0x184, 0x1A2, 0x1A4, 0x1A9, 0x1AC, 0x1B5, 0x1BC, 0x1C4, 0x1C7, 0x1CA, 0x1CD, 0x1CF, 0x1D1, 0x1D3, 0x1D5, 0x1D7, 0x1D9, 0x1DB, 0x1DE, 0x1E0, 0x1E2, 0x1E4, 0x1E6, 0x1E8, 0x1EA, 0x1EC, 0x1EE, 0x1F1, 0x1F4, 0x1FA, 0x1FC, 0x1FE, 0x200, 0x202, 0x204, 0x206, 0x208, 0x20A, 0x20C, 0x20E, 0x210, 0x212, 0x214, 0x216, 0x218, 0x21A, 0x21C, 0x21E, 0x220, 0x222, 0x224, 0x226, 0x228, 0x22A, 0x22C, 0x22E, 0x230, 0x232, 0x241, 0x248, 0x24A, 0x24C, 0x24E, 0x370, 0x372, 0x376, 0x37F, 0x386, 0x38C, 0x3CF, 0x3D8, 0x3DA, 0x3DC, 0x3DE, 0x3E0, 0x3E2, 0x3E4, 0x3E6, 0x3E8, 0x3EA, 0x3EC, 0x3EE, 0x3F4, 0x3F7, 0x460, 0x462, 0x464, 0x466, 0x468, 0x46A, 0x46C, 0x46E, 0x470, 0x472, 0x474, 0x476, 0x478, 0x47A, 0x47C, 0x47E, 0x480, 0x48A, 0x48C, 0x48E, 0x490, 0x492, 0x494, 0x496, 0x498, 0x49A, 0x49C, 0x49E, 0x4A0, 0x4A2, 0x4A4, 0x4A6, 0x4A8, 0x4AA, 0x4AC, 0x4AE, 0x4B0, 0x4B2, 0x4B4, 0x4B6, 0x4B8, 0x4BA, 0x4BC, 0x4BE, 0x4C3, 0x4C5, 0x4C7, 0x4C9, 0x4CB, 0x4CD, 0x4D0, 0x4D2, 0x4D4, 0x4D6, 0x4D8, 0x4DA, 0x4DC, 0x4DE, 0x4E0, 0x4E2, 0x4E4, 0x4E6, 0x4E8, 0x4EA, 0x4EC, 0x4EE, 0x4F0, 0x4F2, 0x4F4, 0x4F6, 0x4F8, 0x4FA, 0x4FC, 0x4FE, 0x500, 0x502, 0x504, 0x506, 0x508, 0x50A, 0x50C, 0x50E, 0x510, 0x512, 0x514, 0x516, 0x518, 0x51A, 0x51C, 0x51E, 0x520, 0x522, 0x524, 0x526, 0x528, 0x52A, 0x52C, 0x52E, 0x10C7, 0x10CD, 0x1E00, 0x1E02, 0x1E04, 0x1E06, 0x1E08, 0x1E0A, 0x1E0C, 0x1E0E, 0x1E10, 0x1E12, 0x1E14, 0x1E16, 0x1E18, 0x1E1A, 0x1E1C, 0x1E1E, 0x1E20, 0x1E22, 0x1E24, 0x1E26, 0x1E28, 0x1E2A, 0x1E2C, 0x1E2E, 0x1E30, 0x1E32, 0x1E34, 0x1E36, 0x1E38, 0x1E3A, 0x1E3C, 0x1E3E, 0x1E40, 0x1E42, 0x1E44, 0x1E46, 0x1E48, 0x1E4A, 0x1E4C, 0x1E4E, 0x1E50, 0x1E52, 0x1E54, 0x1E56, 0x1E58, 0x1E5A, 0x1E5C, 0x1E5E, 0x1E60, 0x1E62, 0x1E64, 0x1E66, 0x1E68, 0x1E6A, 0x1E6C, 0x1E6E, 0x1E70, 0x1E72, 0x1E74, 0x1E76, 0x1E78, 0x1E7A, 0x1E7C, 0x1E7E, 0x1E80, 0x1E82, 0x1E84, 0x1E86, 0x1E88, 0x1E8A, 0x1E8C, 0x1E8E, 0x1E90, 0x1E92, 0x1E94, 0x1E9E, 0x1EA0, 0x1EA2, 0x1EA4, 0x1EA6, 0x1EA8, 0x1EAA, 0x1EAC, 0x1EAE, 0x1EB0, 0x1EB2, 0x1EB4, 0x1EB6, 0x1EB8, 0x1EBA, 0x1EBC, 0x1EBE, 0x1EC0, 0x1EC2, 0x1EC4, 0x1EC6, 0x1EC8, 0x1ECA, 0x1ECC, 0x1ECE, 0x1ED0, 0x1ED2, 0x1ED4, 0x1ED6, 0x1ED8, 0x1EDA, 0x1EDC, 0x1EDE, 0x1EE0, 0x1EE2, 0x1EE4, 0x1EE6, 0x1EE8, 0x1EEA, 0x1EEC, 0x1EEE, 0x1EF0, 0x1EF2, 0x1EF4, 0x1EF6, 0x1EF8, 0x1EFA, 0x1EFC, 0x1EFE, 0x1F59, 0x1F5B, 0x1F5D, 0x1F5F, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x2145, 0x2183, 0x2C60, 0x2C67, 0x2C69, 0x2C6B, 0x2C72, 0x2C75, 0x2C82, 0x2C84, 0x2C86, 0x2C88, 0x2C8A, 0x2C8C, 0x2C8E, 0x2C90, 0x2C92, 0x2C94, 0x2C96, 0x2C98, 0x2C9A, 0x2C9C, 0x2C9E, 0x2CA0, 0x2CA2, 0x2CA4, 0x2CA6, 0x2CA8, 0x2CAA, 0x2CAC, 0x2CAE, 0x2CB0, 0x2CB2, 0x2CB4, 0x2CB6, 0x2CB8, 0x2CBA, 0x2CBC, 0x2CBE, 0x2CC0, 0x2CC2, 0x2CC4, 0x2CC6, 0x2CC8, 0x2CCA, 0x2CCC, 0x2CCE, 0x2CD0, 0x2CD2, 0x2CD4, 0x2CD6, 0x2CD8, 0x2CDA, 0x2CDC, 0x2CDE, 0x2CE0, 0x2CE2, 0x2CEB, 0x2CED, 0x2CF2, 0xA640, 0xA642, 0xA644, 0xA646, 0xA648, 0xA64A, 0xA64C, 0xA64E, 0xA650, 0xA652, 0xA654, 0xA656, 0xA658, 0xA65A, 0xA65C, 0xA65E, 0xA660, 0xA662, 0xA664, 0xA666, 0xA668, 0xA66A, 0xA66C, 0xA680, 0xA682, 0xA684, 0xA686, 0xA688, 0xA68A, 0xA68C, 0xA68E, 0xA690, 0xA692, 0xA694, 0xA696, 0xA698, 0xA69A, 0xA722, 0xA724, 0xA726, 0xA728, 0xA72A, 0xA72C, 0xA72E, 0xA732, 0xA734, 0xA736, 0xA738, 0xA73A, 0xA73C, 0xA73E, 0xA740, 0xA742, 0xA744, 0xA746, 0xA748, 0xA74A, 0xA74C, 0xA74E, 0xA750, 0xA752, 0xA754, 0xA756, 0xA758, 0xA75A, 0xA75C, 0xA75E, 0xA760, 0xA762, 0xA764, 0xA766, 0xA768, 0xA76A, 0xA76C, 0xA76E, 0xA779, 0xA77B, 0xA780, 0xA782, 0xA784, 0xA786, 0xA78B, 0xA78D, 0xA790, 0xA792, 0xA796, 0xA798, 0xA79A, 0xA79C, 0xA79E, 0xA7A0, 0xA7A2, 0xA7A4, 0xA7A6, 0xA7A8, 0xA7B6, 0xA7B8, 0xA7BA, 0xA7BC, 0xA7BE, 0xA7C0, 0xA7C2, 0xA7C9, 0xA7D0, 0xA7D6, 0xA7D8, 0xA7F5, 0x1D49C, 0x1D4A2, 0x1D546, 0x1D7CA);\nset.addRange(0x41, 0x5A).addRange(0xC0, 0xD6).addRange(0xD8, 0xDE).addRange(0x178, 0x179).addRange(0x181, 0x182).addRange(0x186, 0x187).addRange(0x189, 0x18B).addRange(0x18E, 0x191).addRange(0x193, 0x194).addRange(0x196, 0x198).addRange(0x19C, 0x19D).addRange(0x19F, 0x1A0).addRange(0x1A6, 0x1A7).addRange(0x1AE, 0x1AF).addRange(0x1B1, 0x1B3).addRange(0x1B7, 0x1B8).addRange(0x1F6, 0x1F8).addRange(0x23A, 0x23B).addRange(0x23D, 0x23E).addRange(0x243, 0x246).addRange(0x388, 0x38A).addRange(0x38E, 0x38F).addRange(0x391, 0x3A1).addRange(0x3A3, 0x3AB).addRange(0x3D2, 0x3D4).addRange(0x3F9, 0x3FA).addRange(0x3FD, 0x42F).addRange(0x4C0, 0x4C1).addRange(0x531, 0x556).addRange(0x10A0, 0x10C5).addRange(0x13A0, 0x13F5).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1F08, 0x1F0F).addRange(0x1F18, 0x1F1D).addRange(0x1F28, 0x1F2F).addRange(0x1F38, 0x1F3F).addRange(0x1F48, 0x1F4D).addRange(0x1F68, 0x1F6F).addRange(0x1FB8, 0x1FBB).addRange(0x1FC8, 0x1FCB).addRange(0x1FD8, 0x1FDB).addRange(0x1FE8, 0x1FEC).addRange(0x1FF8, 0x1FFB).addRange(0x210B, 0x210D).addRange(0x2110, 0x2112).addRange(0x2119, 0x211D).addRange(0x212A, 0x212D).addRange(0x2130, 0x2133).addRange(0x213E, 0x213F).addRange(0x2160, 0x216F);\nset.addRange(0x24B6, 0x24CF).addRange(0x2C00, 0x2C2F).addRange(0x2C62, 0x2C64).addRange(0x2C6D, 0x2C70).addRange(0x2C7E, 0x2C80).addRange(0xA77D, 0xA77E).addRange(0xA7AA, 0xA7AE).addRange(0xA7B0, 0xA7B4).addRange(0xA7C4, 0xA7C7).addRange(0xFF21, 0xFF3A).addRange(0x10400, 0x10427).addRange(0x104B0, 0x104D3).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10C80, 0x10CB2).addRange(0x118A0, 0x118BF).addRange(0x16E40, 0x16E5F).addRange(0x1D400, 0x1D419).addRange(0x1D434, 0x1D44D).addRange(0x1D468, 0x1D481).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B5).addRange(0x1D4D0, 0x1D4E9).addRange(0x1D504, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D538, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D56C, 0x1D585).addRange(0x1D5A0, 0x1D5B9).addRange(0x1D5D4, 0x1D5ED).addRange(0x1D608, 0x1D621).addRange(0x1D63C, 0x1D655).addRange(0x1D670, 0x1D689).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6E2, 0x1D6FA).addRange(0x1D71C, 0x1D734).addRange(0x1D756, 0x1D76E).addRange(0x1D790, 0x1D7A8).addRange(0x1E900, 0x1E921).addRange(0x1F130, 0x1F149).addRange(0x1F150, 0x1F169).addRange(0x1F170, 0x1F189);\nmodule.exports = set;","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","const set = require('regenerate')();\nset.addRange(0xA880, 0xA8C5).addRange(0xA8CE, 0xA8D9);\nmodule.exports = set;","const set = require('regenerate')(0xAD0);\nset.addRange(0xA81, 0xA83).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xABC, 0xAC5).addRange(0xAC7, 0xAC9).addRange(0xACB, 0xACD).addRange(0xAE0, 0xAE3).addRange(0xAE6, 0xAF1).addRange(0xAF9, 0xAFF);\nmodule.exports = set;","const set = require('regenerate')(0x149, 0x673, 0xF77, 0xF79, 0xE0001);\nset.addRange(0x17A3, 0x17A4).addRange(0x206A, 0x206F).addRange(0x2329, 0x232A);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x1735, 0x1736).addRange(0x1740, 0x1753);\nmodule.exports = set;","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","const set = require('regenerate')();\nset.addRange(0x10980, 0x1099F);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x7C0, 0x7FA).addRange(0x7FD, 0x7FF);\nmodule.exports = set;","const set = require('regenerate')(0x1CF2);\nset.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0xA830, 0xA839).addRange(0x11480, 0x114C7).addRange(0x114D0, 0x114D9);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x1740, 0x1753);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x10280, 0x1029C);\nmodule.exports = set;","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","const set = require('regenerate')(0x1CDA);\nset.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0xD00, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD44).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4F).addRange(0xD54, 0xD63).addRange(0xD66, 0xD7F).addRange(0xA830, 0xA832);\nmodule.exports = set;","/**\n * The default argument placeholder value for methods.\n *\n * @type {Object}\n */\nmodule.exports = {};\n","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","const set = require('regenerate')(0xB5, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10A, 0x10C, 0x10E, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11A, 0x11C, 0x11E, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12A, 0x12C, 0x12E, 0x130, 0x132, 0x134, 0x136, 0x139, 0x13B, 0x13D, 0x13F, 0x141, 0x143, 0x145, 0x147, 0x14C, 0x14E, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15A, 0x15C, 0x15E, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16A, 0x16C, 0x16E, 0x170, 0x172, 0x174, 0x176, 0x17B, 0x17D, 0x17F, 0x184, 0x1A2, 0x1A4, 0x1A9, 0x1AC, 0x1B5, 0x1BC, 0x1CD, 0x1CF, 0x1D1, 0x1D3, 0x1D5, 0x1D7, 0x1D9, 0x1DB, 0x1DE, 0x1E0, 0x1E2, 0x1E4, 0x1E6, 0x1E8, 0x1EA, 0x1EC, 0x1EE, 0x1F4, 0x1FA, 0x1FC, 0x1FE, 0x200, 0x202, 0x204, 0x206, 0x208, 0x20A, 0x20C, 0x20E, 0x210, 0x212, 0x214, 0x216, 0x218, 0x21A, 0x21C, 0x21E, 0x220, 0x222, 0x224, 0x226, 0x228, 0x22A, 0x22C, 0x22E, 0x230, 0x232, 0x241, 0x248, 0x24A, 0x24C, 0x24E, 0x345, 0x370, 0x372, 0x376, 0x37F, 0x386, 0x38C, 0x3C2, 0x3D8, 0x3DA, 0x3DC, 0x3DE, 0x3E0, 0x3E2, 0x3E4, 0x3E6, 0x3E8, 0x3EA, 0x3EC, 0x3EE, 0x3F7, 0x460, 0x462, 0x464, 0x466, 0x468, 0x46A, 0x46C, 0x46E, 0x470, 0x472, 0x474, 0x476, 0x478, 0x47A, 0x47C, 0x47E, 0x480, 0x48A, 0x48C, 0x48E, 0x490, 0x492, 0x494, 0x496, 0x498, 0x49A, 0x49C, 0x49E, 0x4A0, 0x4A2, 0x4A4, 0x4A6, 0x4A8, 0x4AA, 0x4AC, 0x4AE, 0x4B0, 0x4B2, 0x4B4, 0x4B6, 0x4B8, 0x4BA, 0x4BC, 0x4BE, 0x4C3, 0x4C5, 0x4C7, 0x4C9, 0x4CB, 0x4CD, 0x4D0, 0x4D2, 0x4D4, 0x4D6, 0x4D8, 0x4DA, 0x4DC, 0x4DE, 0x4E0, 0x4E2, 0x4E4, 0x4E6, 0x4E8, 0x4EA, 0x4EC, 0x4EE, 0x4F0, 0x4F2, 0x4F4, 0x4F6, 0x4F8, 0x4FA, 0x4FC, 0x4FE, 0x500, 0x502, 0x504, 0x506, 0x508, 0x50A, 0x50C, 0x50E, 0x510, 0x512, 0x514, 0x516, 0x518, 0x51A, 0x51C, 0x51E, 0x520, 0x522, 0x524, 0x526, 0x528, 0x52A, 0x52C, 0x52E, 0x587, 0x10C7, 0x10CD, 0x1E00, 0x1E02, 0x1E04, 0x1E06, 0x1E08, 0x1E0A, 0x1E0C, 0x1E0E, 0x1E10, 0x1E12, 0x1E14, 0x1E16, 0x1E18, 0x1E1A, 0x1E1C, 0x1E1E, 0x1E20, 0x1E22, 0x1E24, 0x1E26, 0x1E28, 0x1E2A, 0x1E2C, 0x1E2E, 0x1E30, 0x1E32, 0x1E34, 0x1E36, 0x1E38, 0x1E3A, 0x1E3C, 0x1E3E, 0x1E40, 0x1E42, 0x1E44, 0x1E46, 0x1E48, 0x1E4A, 0x1E4C, 0x1E4E, 0x1E50, 0x1E52, 0x1E54, 0x1E56, 0x1E58, 0x1E5A, 0x1E5C, 0x1E5E, 0x1E60, 0x1E62, 0x1E64, 0x1E66, 0x1E68, 0x1E6A, 0x1E6C, 0x1E6E, 0x1E70, 0x1E72, 0x1E74, 0x1E76, 0x1E78, 0x1E7A, 0x1E7C, 0x1E7E, 0x1E80, 0x1E82, 0x1E84, 0x1E86, 0x1E88, 0x1E8A, 0x1E8C, 0x1E8E, 0x1E90, 0x1E92, 0x1E94, 0x1E9E, 0x1EA0, 0x1EA2, 0x1EA4, 0x1EA6, 0x1EA8, 0x1EAA, 0x1EAC, 0x1EAE, 0x1EB0, 0x1EB2, 0x1EB4, 0x1EB6, 0x1EB8, 0x1EBA, 0x1EBC, 0x1EBE, 0x1EC0, 0x1EC2, 0x1EC4, 0x1EC6, 0x1EC8, 0x1ECA, 0x1ECC, 0x1ECE, 0x1ED0, 0x1ED2, 0x1ED4, 0x1ED6, 0x1ED8, 0x1EDA, 0x1EDC, 0x1EDE, 0x1EE0, 0x1EE2, 0x1EE4, 0x1EE6, 0x1EE8, 0x1EEA, 0x1EEC, 0x1EEE, 0x1EF0, 0x1EF2, 0x1EF4, 0x1EF6, 0x1EF8, 0x1EFA, 0x1EFC, 0x1EFE, 0x1F59, 0x1F5B, 0x1F5D, 0x1F5F, 0x2126, 0x2132, 0x2183, 0x2C60, 0x2C67, 0x2C69, 0x2C6B, 0x2C72, 0x2C75, 0x2C82, 0x2C84, 0x2C86, 0x2C88, 0x2C8A, 0x2C8C, 0x2C8E, 0x2C90, 0x2C92, 0x2C94, 0x2C96, 0x2C98, 0x2C9A, 0x2C9C, 0x2C9E, 0x2CA0, 0x2CA2, 0x2CA4, 0x2CA6, 0x2CA8, 0x2CAA, 0x2CAC, 0x2CAE, 0x2CB0, 0x2CB2, 0x2CB4, 0x2CB6, 0x2CB8, 0x2CBA, 0x2CBC, 0x2CBE, 0x2CC0, 0x2CC2, 0x2CC4, 0x2CC6, 0x2CC8, 0x2CCA, 0x2CCC, 0x2CCE, 0x2CD0, 0x2CD2, 0x2CD4, 0x2CD6, 0x2CD8, 0x2CDA, 0x2CDC, 0x2CDE, 0x2CE0, 0x2CE2, 0x2CEB, 0x2CED, 0x2CF2, 0xA640, 0xA642, 0xA644, 0xA646, 0xA648, 0xA64A, 0xA64C, 0xA64E, 0xA650, 0xA652, 0xA654, 0xA656, 0xA658, 0xA65A, 0xA65C, 0xA65E, 0xA660, 0xA662, 0xA664, 0xA666, 0xA668, 0xA66A, 0xA66C, 0xA680, 0xA682, 0xA684, 0xA686, 0xA688, 0xA68A, 0xA68C, 0xA68E, 0xA690, 0xA692, 0xA694, 0xA696, 0xA698, 0xA69A, 0xA722, 0xA724, 0xA726, 0xA728, 0xA72A, 0xA72C, 0xA72E, 0xA732, 0xA734, 0xA736, 0xA738, 0xA73A, 0xA73C, 0xA73E, 0xA740, 0xA742, 0xA744, 0xA746, 0xA748, 0xA74A, 0xA74C, 0xA74E, 0xA750, 0xA752, 0xA754, 0xA756, 0xA758, 0xA75A, 0xA75C, 0xA75E, 0xA760, 0xA762, 0xA764, 0xA766, 0xA768, 0xA76A, 0xA76C, 0xA76E, 0xA779, 0xA77B, 0xA780, 0xA782, 0xA784, 0xA786, 0xA78B, 0xA78D, 0xA790, 0xA792, 0xA796, 0xA798, 0xA79A, 0xA79C, 0xA79E, 0xA7A0, 0xA7A2, 0xA7A4, 0xA7A6, 0xA7A8, 0xA7B6, 0xA7B8, 0xA7BA, 0xA7BC, 0xA7BE, 0xA7C0, 0xA7C2, 0xA7C9, 0xA7D0, 0xA7D6, 0xA7D8, 0xA7F5);\nset.addRange(0x41, 0x5A).addRange(0xC0, 0xD6).addRange(0xD8, 0xDF).addRange(0x149, 0x14A).addRange(0x178, 0x179).addRange(0x181, 0x182).addRange(0x186, 0x187).addRange(0x189, 0x18B).addRange(0x18E, 0x191).addRange(0x193, 0x194).addRange(0x196, 0x198).addRange(0x19C, 0x19D).addRange(0x19F, 0x1A0).addRange(0x1A6, 0x1A7).addRange(0x1AE, 0x1AF).addRange(0x1B1, 0x1B3).addRange(0x1B7, 0x1B8).addRange(0x1C4, 0x1C5).addRange(0x1C7, 0x1C8).addRange(0x1CA, 0x1CB).addRange(0x1F1, 0x1F2).addRange(0x1F6, 0x1F8).addRange(0x23A, 0x23B).addRange(0x23D, 0x23E).addRange(0x243, 0x246).addRange(0x388, 0x38A).addRange(0x38E, 0x38F).addRange(0x391, 0x3A1).addRange(0x3A3, 0x3AB).addRange(0x3CF, 0x3D1).addRange(0x3D5, 0x3D6).addRange(0x3F0, 0x3F1).addRange(0x3F4, 0x3F5).addRange(0x3F9, 0x3FA).addRange(0x3FD, 0x42F).addRange(0x4C0, 0x4C1).addRange(0x531, 0x556).addRange(0x10A0, 0x10C5).addRange(0x13F8, 0x13FD).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1E9A, 0x1E9B).addRange(0x1F08, 0x1F0F).addRange(0x1F18, 0x1F1D).addRange(0x1F28, 0x1F2F).addRange(0x1F38, 0x1F3F).addRange(0x1F48, 0x1F4D).addRange(0x1F68, 0x1F6F).addRange(0x1F80, 0x1FAF).addRange(0x1FB2, 0x1FB4);\nset.addRange(0x1FB7, 0x1FBC).addRange(0x1FC2, 0x1FC4).addRange(0x1FC7, 0x1FCC).addRange(0x1FD8, 0x1FDB).addRange(0x1FE8, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF7, 0x1FFC).addRange(0x212A, 0x212B).addRange(0x2160, 0x216F).addRange(0x24B6, 0x24CF).addRange(0x2C00, 0x2C2F).addRange(0x2C62, 0x2C64).addRange(0x2C6D, 0x2C70).addRange(0x2C7E, 0x2C80).addRange(0xA77D, 0xA77E).addRange(0xA7AA, 0xA7AE).addRange(0xA7B0, 0xA7B4).addRange(0xA7C4, 0xA7C7).addRange(0xAB70, 0xABBF).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFF21, 0xFF3A).addRange(0x10400, 0x10427).addRange(0x104B0, 0x104D3).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10C80, 0x10CB2).addRange(0x118A0, 0x118BF).addRange(0x16E40, 0x16E5F).addRange(0x1E900, 0x1E921);\nmodule.exports = set;","module.exports = false;\n","const set = require('regenerate')();\nset.addRange(0x1E800, 0x1E8C4).addRange(0x1E8C7, 0x1E8D6);\nmodule.exports = set;","var LazyWrapper = require('./_LazyWrapper'),\n LodashWrapper = require('./_LodashWrapper'),\n copyArray = require('./_copyArray');\n\n/**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\nfunction wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n}\n\nmodule.exports = wrapperClone;\n","const set = require('regenerate')();\nset.addRange(0x10500, 0x10527);\nmodule.exports = set;","module.exports = require('./flow');\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","const set = require('regenerate')();\nset.addRange(0x10300, 0x10323).addRange(0x1032D, 0x1032F);\nmodule.exports = set;","const set = require('regenerate')(0xC5D);\nset.addRange(0xC00, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC3C, 0xC44).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC63).addRange(0xC66, 0xC6F).addRange(0xC77, 0xC7F);\nmodule.exports = set;","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","const set = require('regenerate')();\nset.addRange(0xA980, 0xA9CD).addRange(0xA9CF, 0xA9D9).addRange(0xA9DE, 0xA9DF);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x10C00, 0x10C48);\nmodule.exports = set;","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","var global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","const set = require('regenerate')();\nset.addRange(0x1B80, 0x1BBF).addRange(0x1CC0, 0x1CC7);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x1E100, 0x1E12C).addRange(0x1E130, 0x1E13D).addRange(0x1E140, 0x1E149).addRange(0x1E14E, 0x1E14F);\nmodule.exports = set;","const plugins = require(`./api-runner-browser-plugins`)\nconst {\n getResourcesForPathname,\n getResourcesForPathnameSync,\n getResourceURLsForPathname,\n loadPage,\n loadPageSync,\n} = require(`./loader`).publicLoader\n\nexports.apiRunner = (api, args = {}, defaultReturn, argTransform) => {\n // Hooks for gatsby-cypress's API handler\n if (process.env.CYPRESS_SUPPORT) {\n if (window.___apiHandler) {\n window.___apiHandler(api)\n } else if (window.___resolvedAPIs) {\n window.___resolvedAPIs.push(api)\n } else {\n window.___resolvedAPIs = [api]\n }\n }\n\n let results = plugins.map(plugin => {\n if (!plugin.plugin[api]) {\n return undefined\n }\n\n // Deprecated April 2019. Use `loadPageSync` instead\n args.getResourcesForPathnameSync = getResourcesForPathnameSync\n // Deprecated April 2019. Use `loadPage` instead\n args.getResourcesForPathname = getResourcesForPathname\n args.getResourceURLsForPathname = getResourceURLsForPathname\n args.loadPage = loadPage\n args.loadPageSync = loadPageSync\n\n const result = plugin.plugin[api](args, plugin.options)\n if (result && argTransform) {\n args = argTransform({ args, result, plugin })\n }\n return result\n })\n\n // Filter out undefined results.\n results = results.filter(result => typeof result !== `undefined`)\n\n if (results.length > 0) {\n return results\n } else if (defaultReturn) {\n return [defaultReturn]\n } else {\n return []\n }\n}\n\nexports.apiRunnerAsync = (api, args, defaultReturn) =>\n plugins.reduce(\n (previous, next) =>\n next.plugin[api]\n ? previous.then(() => next.plugin[api](args, next.options))\n : previous,\n Promise.resolve()\n )\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n}\n\nmodule.exports = composeArgs;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","const set = require('regenerate')(0x21, 0x2E, 0x3F, 0x589, 0x6D4, 0x7F9, 0x837, 0x839, 0x1362, 0x166E, 0x1803, 0x1809, 0x2E2E, 0x2E3C, 0x3002, 0xA4FF, 0xA6F3, 0xA6F7, 0xA92F, 0xABEB, 0xFE52, 0xFF01, 0xFF0E, 0xFF1F, 0xFF61, 0x111CD, 0x112A9, 0x11944, 0x11946, 0x16AF5, 0x16B44, 0x16E98, 0x1BC9F, 0x1DA88);\nset.addRange(0x61D, 0x61F).addRange(0x700, 0x702).addRange(0x83D, 0x83E).addRange(0x964, 0x965).addRange(0x104A, 0x104B).addRange(0x1367, 0x1368).addRange(0x1735, 0x1736).addRange(0x1944, 0x1945).addRange(0x1AA8, 0x1AAB).addRange(0x1B5A, 0x1B5B).addRange(0x1B5E, 0x1B5F).addRange(0x1B7D, 0x1B7E).addRange(0x1C3B, 0x1C3C).addRange(0x1C7E, 0x1C7F).addRange(0x203C, 0x203D).addRange(0x2047, 0x2049).addRange(0x2E53, 0x2E54).addRange(0xA60E, 0xA60F).addRange(0xA876, 0xA877).addRange(0xA8CE, 0xA8CF).addRange(0xA9C8, 0xA9C9).addRange(0xAA5D, 0xAA5F).addRange(0xAAF0, 0xAAF1).addRange(0xFE56, 0xFE57).addRange(0x10A56, 0x10A57).addRange(0x10F55, 0x10F59).addRange(0x10F86, 0x10F89).addRange(0x11047, 0x11048).addRange(0x110BE, 0x110C1).addRange(0x11141, 0x11143).addRange(0x111C5, 0x111C6).addRange(0x111DE, 0x111DF).addRange(0x11238, 0x11239).addRange(0x1123B, 0x1123C).addRange(0x1144B, 0x1144C).addRange(0x115C2, 0x115C3).addRange(0x115C9, 0x115D7).addRange(0x11641, 0x11642).addRange(0x1173C, 0x1173E).addRange(0x11A42, 0x11A43).addRange(0x11A9B, 0x11A9C).addRange(0x11C41, 0x11C42).addRange(0x11EF7, 0x11EF8).addRange(0x16A6E, 0x16A6F).addRange(0x16B37, 0x16B38);\nmodule.exports = set;","const set = require('regenerate')(0x640);\nset.addRange(0x10B80, 0x10B91).addRange(0x10B99, 0x10B9C).addRange(0x10BA9, 0x10BAF);\nmodule.exports = set;","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","const set = require('regenerate')(0x5BF, 0x5C7, 0x670, 0x711, 0x7FD, 0x9BC, 0x9D7, 0x9FE, 0xA3C, 0xA51, 0xA75, 0xABC, 0xB3C, 0xB82, 0xBD7, 0xC3C, 0xCBC, 0xD57, 0xDCA, 0xDD6, 0xE31, 0xEB1, 0xF35, 0xF37, 0xF39, 0xFC6, 0x108F, 0x17DD, 0x180F, 0x18A9, 0x1A7F, 0x1CED, 0x1CF4, 0x2D7F, 0xA802, 0xA806, 0xA80B, 0xA82C, 0xA8FF, 0xA9E5, 0xAA43, 0xAAB0, 0xAAC1, 0xFB1E, 0x101FD, 0x102E0, 0x10A3F, 0x11070, 0x110C2, 0x11173, 0x1123E, 0x11357, 0x1145E, 0x11940, 0x119E4, 0x11A47, 0x11D3A, 0x11D47, 0x16F4F, 0x16FE4, 0x1DA75, 0x1DA84, 0x1E2AE);\nset.addRange(0x300, 0x36F).addRange(0x483, 0x489).addRange(0x591, 0x5BD).addRange(0x5C1, 0x5C2).addRange(0x5C4, 0x5C5).addRange(0x610, 0x61A).addRange(0x64B, 0x65F).addRange(0x6D6, 0x6DC).addRange(0x6DF, 0x6E4).addRange(0x6E7, 0x6E8).addRange(0x6EA, 0x6ED).addRange(0x730, 0x74A).addRange(0x7A6, 0x7B0).addRange(0x7EB, 0x7F3).addRange(0x816, 0x819).addRange(0x81B, 0x823).addRange(0x825, 0x827).addRange(0x829, 0x82D).addRange(0x859, 0x85B).addRange(0x898, 0x89F).addRange(0x8CA, 0x8E1).addRange(0x8E3, 0x903).addRange(0x93A, 0x93C).addRange(0x93E, 0x94F).addRange(0x951, 0x957).addRange(0x962, 0x963).addRange(0x981, 0x983).addRange(0x9BE, 0x9C4).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CD).addRange(0x9E2, 0x9E3).addRange(0xA01, 0xA03).addRange(0xA3E, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA70, 0xA71).addRange(0xA81, 0xA83).addRange(0xABE, 0xAC5).addRange(0xAC7, 0xAC9).addRange(0xACB, 0xACD).addRange(0xAE2, 0xAE3).addRange(0xAFA, 0xAFF).addRange(0xB01, 0xB03).addRange(0xB3E, 0xB44).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4D).addRange(0xB55, 0xB57).addRange(0xB62, 0xB63).addRange(0xBBE, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCD);\nset.addRange(0xC00, 0xC04).addRange(0xC3E, 0xC44).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC62, 0xC63).addRange(0xC81, 0xC83).addRange(0xCBE, 0xCC4).addRange(0xCC6, 0xCC8).addRange(0xCCA, 0xCCD).addRange(0xCD5, 0xCD6).addRange(0xCE2, 0xCE3).addRange(0xD00, 0xD03).addRange(0xD3B, 0xD3C).addRange(0xD3E, 0xD44).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4D).addRange(0xD62, 0xD63).addRange(0xD81, 0xD83).addRange(0xDCF, 0xDD4).addRange(0xDD8, 0xDDF).addRange(0xDF2, 0xDF3).addRange(0xE34, 0xE3A).addRange(0xE47, 0xE4E).addRange(0xEB4, 0xEBC).addRange(0xEC8, 0xECD).addRange(0xF18, 0xF19).addRange(0xF3E, 0xF3F).addRange(0xF71, 0xF84).addRange(0xF86, 0xF87).addRange(0xF8D, 0xF97).addRange(0xF99, 0xFBC).addRange(0x102B, 0x103E).addRange(0x1056, 0x1059).addRange(0x105E, 0x1060).addRange(0x1062, 0x1064).addRange(0x1067, 0x106D).addRange(0x1071, 0x1074).addRange(0x1082, 0x108D).addRange(0x109A, 0x109D).addRange(0x135D, 0x135F).addRange(0x1712, 0x1715).addRange(0x1732, 0x1734).addRange(0x1752, 0x1753).addRange(0x1772, 0x1773).addRange(0x17B4, 0x17D3).addRange(0x180B, 0x180D).addRange(0x1885, 0x1886).addRange(0x1920, 0x192B).addRange(0x1930, 0x193B).addRange(0x1A17, 0x1A1B);\nset.addRange(0x1A55, 0x1A5E).addRange(0x1A60, 0x1A7C).addRange(0x1AB0, 0x1ACE).addRange(0x1B00, 0x1B04).addRange(0x1B34, 0x1B44).addRange(0x1B6B, 0x1B73).addRange(0x1B80, 0x1B82).addRange(0x1BA1, 0x1BAD).addRange(0x1BE6, 0x1BF3).addRange(0x1C24, 0x1C37).addRange(0x1CD0, 0x1CD2).addRange(0x1CD4, 0x1CE8).addRange(0x1CF7, 0x1CF9).addRange(0x1DC0, 0x1DFF).addRange(0x20D0, 0x20F0).addRange(0x2CEF, 0x2CF1).addRange(0x2DE0, 0x2DFF).addRange(0x302A, 0x302F).addRange(0x3099, 0x309A).addRange(0xA66F, 0xA672).addRange(0xA674, 0xA67D).addRange(0xA69E, 0xA69F).addRange(0xA6F0, 0xA6F1).addRange(0xA823, 0xA827).addRange(0xA880, 0xA881).addRange(0xA8B4, 0xA8C5).addRange(0xA8E0, 0xA8F1).addRange(0xA926, 0xA92D).addRange(0xA947, 0xA953).addRange(0xA980, 0xA983).addRange(0xA9B3, 0xA9C0).addRange(0xAA29, 0xAA36).addRange(0xAA4C, 0xAA4D).addRange(0xAA7B, 0xAA7D).addRange(0xAAB2, 0xAAB4).addRange(0xAAB7, 0xAAB8).addRange(0xAABE, 0xAABF).addRange(0xAAEB, 0xAAEF).addRange(0xAAF5, 0xAAF6).addRange(0xABE3, 0xABEA).addRange(0xABEC, 0xABED).addRange(0xFE00, 0xFE0F).addRange(0xFE20, 0xFE2F).addRange(0x10376, 0x1037A).addRange(0x10A01, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A0F).addRange(0x10A38, 0x10A3A).addRange(0x10AE5, 0x10AE6).addRange(0x10D24, 0x10D27).addRange(0x10EAB, 0x10EAC);\nset.addRange(0x10F46, 0x10F50).addRange(0x10F82, 0x10F85).addRange(0x11000, 0x11002).addRange(0x11038, 0x11046).addRange(0x11073, 0x11074).addRange(0x1107F, 0x11082).addRange(0x110B0, 0x110BA).addRange(0x11100, 0x11102).addRange(0x11127, 0x11134).addRange(0x11145, 0x11146).addRange(0x11180, 0x11182).addRange(0x111B3, 0x111C0).addRange(0x111C9, 0x111CC).addRange(0x111CE, 0x111CF).addRange(0x1122C, 0x11237).addRange(0x112DF, 0x112EA).addRange(0x11300, 0x11303).addRange(0x1133B, 0x1133C).addRange(0x1133E, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134D).addRange(0x11362, 0x11363).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x11435, 0x11446).addRange(0x114B0, 0x114C3).addRange(0x115AF, 0x115B5).addRange(0x115B8, 0x115C0).addRange(0x115DC, 0x115DD).addRange(0x11630, 0x11640).addRange(0x116AB, 0x116B7).addRange(0x1171D, 0x1172B).addRange(0x1182C, 0x1183A).addRange(0x11930, 0x11935).addRange(0x11937, 0x11938).addRange(0x1193B, 0x1193E).addRange(0x11942, 0x11943).addRange(0x119D1, 0x119D7).addRange(0x119DA, 0x119E0).addRange(0x11A01, 0x11A0A).addRange(0x11A33, 0x11A39).addRange(0x11A3B, 0x11A3E).addRange(0x11A51, 0x11A5B).addRange(0x11A8A, 0x11A99).addRange(0x11C2F, 0x11C36).addRange(0x11C38, 0x11C3F).addRange(0x11C92, 0x11CA7).addRange(0x11CA9, 0x11CB6).addRange(0x11D31, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D45);\nset.addRange(0x11D8A, 0x11D8E).addRange(0x11D90, 0x11D91).addRange(0x11D93, 0x11D97).addRange(0x11EF3, 0x11EF6).addRange(0x16AF0, 0x16AF4).addRange(0x16B30, 0x16B36).addRange(0x16F51, 0x16F87).addRange(0x16F8F, 0x16F92).addRange(0x16FF0, 0x16FF1).addRange(0x1BC9D, 0x1BC9E).addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1D165, 0x1D169).addRange(0x1D16D, 0x1D172).addRange(0x1D17B, 0x1D182).addRange(0x1D185, 0x1D18B).addRange(0x1D1AA, 0x1D1AD).addRange(0x1D242, 0x1D244).addRange(0x1DA00, 0x1DA36).addRange(0x1DA3B, 0x1DA6C).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A).addRange(0x1E130, 0x1E136).addRange(0x1E2EC, 0x1E2EF).addRange(0x1E8D0, 0x1E8D6).addRange(0x1E944, 0x1E94A).addRange(0xE0100, 0xE01EF);\nmodule.exports = set;","var isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","const set = require('regenerate')();\nset.addRange(0x30, 0x39).addRange(0x660, 0x669).addRange(0x6F0, 0x6F9).addRange(0x7C0, 0x7C9).addRange(0x966, 0x96F).addRange(0x9E6, 0x9EF).addRange(0xA66, 0xA6F).addRange(0xAE6, 0xAEF).addRange(0xB66, 0xB6F).addRange(0xBE6, 0xBEF).addRange(0xC66, 0xC6F).addRange(0xCE6, 0xCEF).addRange(0xD66, 0xD6F).addRange(0xDE6, 0xDEF).addRange(0xE50, 0xE59).addRange(0xED0, 0xED9).addRange(0xF20, 0xF29).addRange(0x1040, 0x1049).addRange(0x1090, 0x1099).addRange(0x17E0, 0x17E9).addRange(0x1810, 0x1819).addRange(0x1946, 0x194F).addRange(0x19D0, 0x19D9).addRange(0x1A80, 0x1A89).addRange(0x1A90, 0x1A99).addRange(0x1B50, 0x1B59).addRange(0x1BB0, 0x1BB9).addRange(0x1C40, 0x1C49).addRange(0x1C50, 0x1C59).addRange(0xA620, 0xA629).addRange(0xA8D0, 0xA8D9).addRange(0xA900, 0xA909).addRange(0xA9D0, 0xA9D9).addRange(0xA9F0, 0xA9F9).addRange(0xAA50, 0xAA59).addRange(0xABF0, 0xABF9).addRange(0xFF10, 0xFF19).addRange(0x104A0, 0x104A9).addRange(0x10D30, 0x10D39).addRange(0x11066, 0x1106F).addRange(0x110F0, 0x110F9).addRange(0x11136, 0x1113F).addRange(0x111D0, 0x111D9).addRange(0x112F0, 0x112F9).addRange(0x11450, 0x11459).addRange(0x114D0, 0x114D9).addRange(0x11650, 0x11659).addRange(0x116C0, 0x116C9).addRange(0x11730, 0x11739).addRange(0x118E0, 0x118E9).addRange(0x11950, 0x11959);\nset.addRange(0x11C50, 0x11C59).addRange(0x11D50, 0x11D59).addRange(0x11DA0, 0x11DA9).addRange(0x16A60, 0x16A69).addRange(0x16AC0, 0x16AC9).addRange(0x16B50, 0x16B59).addRange(0x1D7CE, 0x1D7FF).addRange(0x1E140, 0x1E149).addRange(0x1E2F0, 0x1E2F9).addRange(0x1E950, 0x1E959).addRange(0x1FBF0, 0x1FBF9);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x16E40, 0x16E9A);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x964, 0x96F).addRange(0xA830, 0xA839).addRange(0x11150, 0x11176);\nmodule.exports = set;","import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`We maintain two AUR packages, one building `}{`from\nsource`}{` and another one using a\n`}{`pre-compiled binary`}{`.`}

      \n

      {`These can be installed using any AUR helper, e.g. `}{`yay`}{`:`}

      \n
      {`# from source:`}{`\n`}{`$ yay tanka`}{`\n`}{`\n`}{`# using pre-compiled binary:`}{`\n`}{`$ yay tanka-bin`}
      \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n ","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAxNDQgNjguNSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTQ0IDY4LjU7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDp1cmwoI1NWR0lEXzFfKTt9Cgkuc3Qxe2ZpbGw6I0ZGRkZGRjt9Cgkuc3Qye2ZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MztzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTA7fQo8L3N0eWxlPgo8bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjcxLjQxNjMiIHkxPSItNTMuNTkiIHgyPSI3Mi4xNzAzIiB5Mj0iOTAuNDE0NCI+Cgk8c3RvcCAgb2Zmc2V0PSIwLjM5ODQiIHN0eWxlPSJzdG9wLWNvbG9yOiNGQUNBMTAiLz4KCTxzdG9wICBvZmZzZXQ9IjAuNjQ5OCIgc3R5bGU9InN0b3AtY29sb3I6I0Y0OEMyMCIvPgoJPHN0b3AgIG9mZnNldD0iMC44NjIyIiBzdHlsZT0ic3RvcC1jb2xvcjojRjA1QjJEIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNDQsNTcuOWMwLDEtMC44LDEuNy0xLjcsMS43SDEuN2MtMSwwLTEuNy0wLjgtMS43LTEuN3MwLjgtMS43LDEuNy0xLjdoMTQwLjVDMTQzLjIsNTYuMSwxNDQsNTYuOSwxNDQsNTcuOXoKCSBNMTUuNiw1MC4xaDEwMS42bDEzLjMtMzMuNWwtNTYuNiw0Ljh2LTguM0gyNS4xdjEyLjRMOC42LDI2LjlMMTUuNiw1MC4xeiBNNjYuNCw4LjloLTM0VjBoMzQuMUw2Ni40LDguOXogTTEyNC44LDY1SDE5LjIKCWMtMSwwLTEuNywwLjgtMS43LDEuN3MwLjgsMS43LDEuNywxLjdoMTA1LjVjMSwwLDEuNy0wLjgsMS43LTEuN1MxMjUuNyw2NSwxMjQuOCw2NXoiLz4KPC9zdmc+Cg==\"","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","const set = require('regenerate')();\nset.addRange(0x13000, 0x1342E).addRange(0x13430, 0x13438);\nmodule.exports = set;","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, {\n assign: assign\n});\n","const set = require('regenerate')();\nset.addRange(0x102A0, 0x102D0);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x1BC0, 0x1BF3).addRange(0x1BFC, 0x1BFF);\nmodule.exports = set;","const set = require('regenerate')();\nset.addRange(0x800, 0x82D).addRange(0x830, 0x83E);\nmodule.exports = set;","const set = require('regenerate')(0x180F);\nset.addRange(0x180B, 0x180D).addRange(0xFE00, 0xFE0F).addRange(0xE0100, 0xE01EF);\nmodule.exports = set;","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","const set = require('regenerate')(0x965, 0x1940);\nset.addRange(0x1900, 0x191E).addRange(0x1920, 0x192B).addRange(0x1930, 0x193B).addRange(0x1944, 0x194F);\nmodule.exports = set;"],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/chunk-map.json b/pr-preview/pr-1029/chunk-map.json deleted file mode 100644 index cf477c1a2..000000000 --- a/pr-preview/pr-1029/chunk-map.json +++ /dev/null @@ -1 +0,0 @@ -{"polyfill":["/polyfill-8d34c62e07e660a83f29.js"],"app":["/app-432e6e5ddac89ddf1392.js"],"component---cache-caches-gatsby-plugin-offline-app-shell-js":["/component---cache-caches-gatsby-plugin-offline-app-shell-js-099d9276a41f4ba01a3c.js"],"component---docs-completion-md":["/component---docs-completion-md-3d444c7b31269f9b6ec9.js"],"component---docs-config-md":["/component---docs-config-md-b129057e083bbcf09ffa.js"],"component---docs-diff-strategy-md":["/component---docs-diff-strategy-md-6f0ae06a737588b83c43.js"],"component---docs-directory-structure-md":["/component---docs-directory-structure-md-e8d13c22da569ecf1cd2.js"],"component---docs-env-vars-md":["/component---docs-env-vars-md-102b70747bbd7865e8e8.js"],"component---docs-exporting-md":["/component---docs-exporting-md-e8c97f5d64e97c22ef1e.js"],"component---docs-faq-md":["/component---docs-faq-md-5e30ff990ba5de27e68d.js"],"component---docs-formatting-md":["/component---docs-formatting-md-0886509974e2523e2e68.js"],"component---docs-garbage-collection-md":["/component---docs-garbage-collection-md-9e3ddba81e297bbaee58.js"],"component---docs-helm-mdx":["/component---docs-helm-mdx-4136d6f0aed36816861f.js"],"component---docs-inline-environments-mdx":["/component---docs-inline-environments-mdx-438dd359ab9fafbc9e4f.js"],"component---docs-installation-mdx":["/component---docs-installation-mdx-9fd740edb80601169d14.js"],"component---docs-introduction-mdx":["/component---docs-introduction-mdx-53424fcd5b068bb753bd.js"],"component---docs-jsonnet-injecting-values-md":["/component---docs-jsonnet-injecting-values-md-a2e9fadf417770db1b80.js"],"component---docs-jsonnet-main-md":["/component---docs-jsonnet-main-md-041efed1c891707fb3eb.js"],"component---docs-jsonnet-native-functions-md":["/component---docs-jsonnet-native-functions-md-2b62620b62d073a3473b.js"],"component---docs-jsonnet-overview-md":["/component---docs-jsonnet-overview-md-950fc05876158d586146.js"],"component---docs-known-issues-md":["/component---docs-known-issues-md-2b1c7bae83f2275bce8c.js"],"component---docs-kustomize-mdx":["/component---docs-kustomize-mdx-d5cc41c7a5346a94a8bf.js"],"component---docs-libraries-import-paths-md":["/component---docs-libraries-import-paths-md-dae2edfdde230d15f0ed.js"],"component---docs-libraries-install-publish-md":["/component---docs-libraries-install-publish-md-1cb5bebde0944f8f75bb.js"],"component---docs-libraries-overriding-md":["/component---docs-libraries-overriding-md-d4979f48cc2ef9fa7574.js"],"component---docs-namespaces-md":["/component---docs-namespaces-md-eb97277738bc0df4b534.js"],"component---docs-server-side-apply-md":["/component---docs-server-side-apply-md-218774290e157fad3f47.js"],"component---docs-targets-md":["/component---docs-targets-md-123f8be890eda328d792.js"],"component---docs-tutorial-abstraction-mdx":["/component---docs-tutorial-abstraction-mdx-b97edf44038784f040f4.js"],"component---docs-tutorial-environments-mdx":["/component---docs-tutorial-environments-mdx-b932dda633298bd4750f.js"],"component---docs-tutorial-jsonnet-mdx":["/component---docs-tutorial-jsonnet-mdx-50019ef4c18c10d96e98.js"],"component---docs-tutorial-k-lib-mdx":["/component---docs-tutorial-k-lib-mdx-62e6c0e23bef80a067c2.js"],"component---docs-tutorial-overview-mdx":["/component---docs-tutorial-overview-mdx-4eb2aa73aecb90e088d6.js"],"component---docs-tutorial-parameterizing-mdx":["/component---docs-tutorial-parameterizing-mdx-cb9c8ff66607e77042cd.js"],"component---docs-tutorial-refresher-mdx":["/component---docs-tutorial-refresher-mdx-81bba2a6cc6987e2c96b.js"],"component---src-components-home-snippet-mdx":[],"component---src-components-install-jb-arch-mdx":[],"component---src-components-install-jb-binary-mdx":[],"component---src-components-install-jb-go-mdx":[],"component---src-components-install-jb-osx-mdx":[],"component---src-components-install-tk-arch-mdx":[],"component---src-components-install-tk-binary-mdx":[],"component---src-components-install-tk-go-mdx":[],"component---src-components-install-tk-osx-mdx":[]} \ No newline at end of file diff --git a/pr-preview/pr-1029/completion/index.html b/pr-preview/pr-1029/completion/index.html index 3f777d895..57a6ab958 100644 --- a/pr-preview/pr-1029/completion/index.html +++ b/pr-preview/pr-1029/completion/index.html @@ -1,37 +1,49 @@ -Command-line completion | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      Writing Jsonnet
      Libraries
      Advanced features
      References
      Frequently asked questionsKnown issues

      Command-line Completion

      Tanka supports CLI completion for bash, zsh and fish.

      # Install
      -$ tk complete
      -
      -# Uninstall
      -$ tk complete --remove

      As tanka is its own completion handler, it needs to hook into your shell's -configuration file (.bashrc, etc).

      When using other shells than bash, Tanka relies on a Bash compatibility + Command-line completion | Grafana Tanka + + Skip to content

      Command-line completion

      Tanka supports CLI completion for bash, zsh and fish.

      +
      Terminal window
      # Install
      tk complete
      +
      # Uninstall
      tk complete --remove
      +

      As tanka is its own completion handler, it needs to hook into your shell’s +configuration file (.bashrc, etc).

      +

      When using other shells than bash, Tanka relies on a Bash compatibility mode. It enables this automatically when installing, but please make sure no other completion (e.g. OhMyZsh) interferes with this, or your completion might -not work properly.
      -It sometimes depends on the order the completions are being loaded, so try -putting Tanka before or after the others.

      \ No newline at end of file +not work properly.
      +It sometimes depends on the order the completions are being loaded, so try +putting Tanka before or after the others.

      \ No newline at end of file diff --git a/pr-preview/pr-1029/component---cache-caches-gatsby-plugin-offline-app-shell-js-099d9276a41f4ba01a3c.js b/pr-preview/pr-1029/component---cache-caches-gatsby-plugin-offline-app-shell-js-099d9276a41f4ba01a3c.js deleted file mode 100644 index 9175e44b5..000000000 --- a/pr-preview/pr-1029/component---cache-caches-gatsby-plugin-offline-app-shell-js-099d9276a41f4ba01a3c.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{zXQ9:function(t,e,n){"use strict";var u=n("TqRt");e.__esModule=!0,e.default=void 0;var a=u(n("VbXa")),o=u(n("q1tI")),r=function(t){function e(){return t.apply(this,arguments)||this}return(0,a.default)(e,t),e.prototype.render=function(){return o.default.createElement(o.default.Fragment,null)},e}(o.default.Component);e.default=r}}]); -//# sourceMappingURL=component---cache-caches-gatsby-plugin-offline-app-shell-js-099d9276a41f4ba01a3c.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---cache-caches-gatsby-plugin-offline-app-shell-js-099d9276a41f4ba01a3c.js.map b/pr-preview/pr-1029/component---cache-caches-gatsby-plugin-offline-app-shell-js-099d9276a41f4ba01a3c.js.map deleted file mode 100644 index 696c1362a..000000000 --- a/pr-preview/pr-1029/component---cache-caches-gatsby-plugin-offline-app-shell-js-099d9276a41f4ba01a3c.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./.cache/caches/gatsby-plugin-offline/app-shell.js"],"names":["_interopRequireDefault","require","exports","__esModule","default","_inheritsLoose2","_react","_default","_React$Component","AppShell","apply","this","arguments","prototype","render","createElement","Fragment","Component"],"mappings":"2FAEA,IAAIA,EAAyBC,EAAQ,QAErCC,EAAQC,YAAa,EACrBD,EAAQE,aAAU,EAElB,IAAIC,EAAkBL,EAAuBC,EAAQ,SAEjDK,EAASN,EAAuBC,EAAQ,SAkBxCM,EAhBwB,SAAUC,GAGpC,SAASC,IACP,OAAOD,EAAiBE,MAAMC,KAAMC,YAAcD,KASpD,OAZA,EAAIN,EAAgBD,SAASK,EAAUD,GAM1BC,EAASI,UAEfC,OAAS,WACd,OAAoBR,EAAOF,QAAQW,cAAcT,EAAOF,QAAQY,SAAU,OAGrEP,EAbmB,CAc1BH,EAAOF,QAAQa,WAGjBf,EAAQE,QAAUG","file":"component---cache-caches-gatsby-plugin-offline-app-shell-js-099d9276a41f4ba01a3c.js","sourcesContent":["\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar AppShell = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(AppShell, _React$Component);\n\n function AppShell() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = AppShell.prototype;\n\n _proto.render = function render() {\n return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);\n };\n\n return AppShell;\n}(_react.default.Component);\n\nvar _default = AppShell;\nexports.default = _default;"],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-completion-md-3d444c7b31269f9b6ec9.js b/pr-preview/pr-1029/component---docs-completion-md-3d444c7b31269f9b6ec9.js deleted file mode 100644 index 9bdde3ba4..000000000 --- a/pr-preview/pr-1029/component---docs-completion-md-3d444c7b31269f9b6ec9.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{pdrC:function(e,t,a){"use strict";a.r(t),a.d(t,"_frontmatter",(function(){return c})),a.d(t,"default",(function(){return p}));var n=a("wx14"),r=a("Ff2n"),o=(a("q1tI"),a("7ljp")),m=a("hhGP");a("qKvR");const l=["components"],c={};void 0!==c&&c&&c===Object(c)&&Object.isExtensible(c)&&!Object.prototype.hasOwnProperty.call(c,"__filemeta")&&Object.defineProperty(c,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/completion.md"}});const i={_frontmatter:c},s=m.a;function p(e){let{components:t}=e,a=Object(r.a)(e,l);return Object(o.b)(s,Object(n.a)({},i,a,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h1",{id:"command-line-completion"},"Command-line Completion"),Object(o.b)("p",null,"Tanka supports CLI completion for ",Object(o.b)("inlineCode",{parentName:"p"},"bash"),", ",Object(o.b)("inlineCode",{parentName:"p"},"zsh")," and ",Object(o.b)("inlineCode",{parentName:"p"},"fish"),"."),Object(o.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(o.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(o.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(o.b)("span",{parentName:"span",className:"mtk3 mtki"},"# Install")),"\n",Object(o.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(o.b)("span",{parentName:"span",className:"mtk1"},"$ tk "),Object(o.b)("span",{parentName:"span",className:"mtk9"},"complete")),"\n",Object(o.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(o.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(o.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(o.b)("span",{parentName:"span",className:"mtk3 mtki"},"# Uninstall")),"\n",Object(o.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(o.b)("span",{parentName:"span",className:"mtk1"},"$ tk "),Object(o.b)("span",{parentName:"span",className:"mtk9"},"complete"),Object(o.b)("span",{parentName:"span",className:"mtk1"}," --remove")))),Object(o.b)("p",null,"As tanka is its own completion handler, it needs to hook into your shell's\nconfiguration file (",Object(o.b)("inlineCode",{parentName:"p"},".bashrc"),", etc)."),Object(o.b)("p",null,"When using other shells than ",Object(o.b)("inlineCode",{parentName:"p"},"bash"),", Tanka relies on a ",Object(o.b)("em",{parentName:"p"},"Bash compatibility\nmode"),". It enables this automatically when installing, but please make sure no\nother completion (e.g. OhMyZsh) interferes with this, or your completion might\nnot work properly.",Object(o.b)("br",{parentName:"p"}),"\n","It sometimes depends on the order the completions are being loaded, so try\nputting Tanka before or after the others."),Object(o.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==p&&p&&p===Object(p)&&Object.isExtensible(p)&&!Object.prototype.hasOwnProperty.call(p,"__filemeta")&&Object.defineProperty(p,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/completion.md"}}),p.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-completion-md-3d444c7b31269f9b6ec9.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-completion-md-3d444c7b31269f9b6ec9.js.map b/pr-preview/pr-1029/component---docs-completion-md-3d444c7b31269f9b6ec9.js.map deleted file mode 100644 index 8bde15e94..000000000 --- a/pr-preview/pr-1029/component---docs-completion-md-3d444c7b31269f9b6ec9.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/completion.md"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","isMDXComponent"],"mappings":"wRAMaA,EAAe,QAAG,IAAAA,UAAAC,OAAAD,IAAAC,OAAAC,aAAAF,KAAAC,OAAAE,UAAAC,eAAAC,KAAAL,EAAA,eAAAC,OAAAK,eAAAN,EAAA,cAAAO,cAAA,EAAAC,MAAA,CAAAC,KAAA,eAAAC,SAAA,wBAC/B,MAAMC,EAAc,CAClBX,gBAEIY,EAAYC,IACH,SAASC,EAAUC,GAG/B,IAHgC,WACjCC,GAEDD,EADIE,EAAKC,YAAAH,EAAAI,GAER,OAAOC,YAACR,EAASS,YAAA,GAAKV,EAAiBM,EAAK,CAAED,WAAYA,EAAYM,QAAQ,cAG5EF,YAAA,MACE,GAAM,2BAAyB,2BAEjCA,YAAA,8CAAyCA,YAAA,cAAYG,WAAW,KAAG,QAAsB,KAAMH,YAAA,cAAYG,WAAW,KAAG,OAAqB,QAASH,YAAA,cAAYG,WAAW,KAAG,QAAsB,KACvMH,YAAA,OACE,UAAa,yCACb,gBAAiB,QAChBA,YAAA,QAAMG,WAAW,MAChB,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,aAAW,cACI,KACtCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,SACFH,YAAA,QAAMG,WAAW,OAClC,UAAa,QAAM,aACQ,KACrCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,UACE,KACzBH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,aAAW,gBACM,KACxCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,SACFH,YAAA,QAAMG,WAAW,OAClC,UAAa,QAAM,YACCH,YAAA,QAAMG,WAAW,OACrC,UAAa,QAAM,gBAE3BH,YAAA,4GACkBA,YAAA,cAAYG,WAAW,KAAG,WAAyB,WACrEH,YAAA,yCAAoCA,YAAA,cAAYG,WAAW,KAAG,QAAsB,uBAAwBH,YAAA,MAAIG,WAAW,KAAG,4BACvH,+KAESH,YAAA,MAAIG,WAAW,MAAS,8HAIxCH,YAAA,SACE,UAAa,2BAAyB,glCA6B3C,IAAAN,UAAAb,OAAAa,IAAAb,OAAAC,aAAAY,KAAAb,OAAAE,UAAAC,eAAAC,KAAAS,EAAA,eAAAb,OAAAK,eAAAQ,EAAA,cAAAP,cAAA,EAAAC,MAAA,CAAAC,KAAA,aAAAC,SAAA,wBAEDI,EAAWU,gBAAiB","file":"component---docs-completion-md-3d444c7b31269f9b6ec9.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`Command-line Completion`}

      \n

      {`Tanka supports CLI completion for `}{`bash`}{`, `}{`zsh`}{` and `}{`fish`}{`.`}

      \n
      {`# Install`}{`\n`}{`$ tk `}{`complete`}{`\n`}{`\n`}{`# Uninstall`}{`\n`}{`$ tk `}{`complete`}{` --remove`}
      \n

      {`As tanka is its own completion handler, it needs to hook into your shell's\nconfiguration file (`}{`.bashrc`}{`, etc).`}

      \n

      {`When using other shells than `}{`bash`}{`, Tanka relies on a `}{`Bash compatibility\nmode`}{`. It enables this automatically when installing, but please make sure no\nother completion (e.g. OhMyZsh) interferes with this, or your completion might\nnot work properly.`}

      {`\n`}{`It sometimes depends on the order the completions are being loaded, so try\nputting Tanka before or after the others.`}

      \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-config-md-b129057e083bbcf09ffa.js b/pr-preview/pr-1029/component---docs-config-md-b129057e083bbcf09ffa.js deleted file mode 100644 index 36c32226e..000000000 --- a/pr-preview/pr-1029/component---docs-config-md-b129057e083bbcf09ffa.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{"9oCR":function(a,e,s){"use strict";s.r(e),s.d(e,"_frontmatter",(function(){return b})),s.d(e,"default",(function(){return r}));var t=s("wx14"),n=s("Ff2n"),m=(s("q1tI"),s("7ljp")),p=s("hhGP");s("qKvR");const c=["components"],b={};void 0!==b&&b&&b===Object(b)&&Object.isExtensible(b)&&!Object.prototype.hasOwnProperty.call(b,"__filemeta")&&Object.defineProperty(b,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/config.md"}});const N={_frontmatter:b},l=p.a;function r(a){let{components:e}=a,s=Object(n.a)(a,c);return Object(m.b)(l,Object(t.a)({},N,s,{components:e,mdxType:"MDXLayout"}),Object(m.b)("h1",{id:"configuration-reference"},"Configuration Reference"),Object(m.b)("p",null,"Tanka's behavior can be customized per Environment using a file called ",Object(m.b)("inlineCode",{parentName:"p"},"spec.json")),Object(m.b)("h2",{id:"file-format"},"File format"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"json"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},'// Config format revision. Currently only "v1alpha1"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"apiVersion"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"v1alpha1"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},'// Always "Environment". Reserved for future use')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"kind"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"Environment"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// Descriptive fields")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"metadata"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// Name of the Environment. Automatically set to the relative")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// path from the project root")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk7"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},""),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// Arbitrary key:value string pairs. Not parsed by Tanka")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk7"},"labels"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"{"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk4"},""),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},""),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"},")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// Properties influencing Tanka's behavior")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"spec"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// The Kubernetes cluster to use.")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// Must be the full URL, e.g. https://cluster.fqdn:6443")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk7"},"apiServer"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},""),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// The Kubernetes context name(s) to use.")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// This field supports regular expressions and is mutually exclusive with apiServer field.")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk7"},"contextNames"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"["),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},""),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},"],")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," ")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// Default namespace for objects that don't explicitely specify one")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk7"},"namespace"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},""),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"|"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"default"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"default"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// diffStrategy to use. Automatically chosen by default based on")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},'// the availability of "kubectl diff".')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},'// - native: uses "kubectl diff". Recommended')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},'// - validate: uses "kubectl diff --server-side". Safest, but slower than "native"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// - subset: fallback for k8s versions below 1.13.0")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk7"},"diffStrategy"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"[native, validate, subset]"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"|"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"default"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"auto"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},'// Whether to add a "tanka.dev/environment" label to each created resource.')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},'// Required for garbage collection ("tk prune").')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk7"},"injectLabels"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},""),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"|"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"default"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"false")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")))),Object(m.b)("h2",{id:"jsonnet-access"},"Jsonnet access"),Object(m.b)("p",null,"It is possible to access above data from Jsonnet:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," tk "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"import"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"tk"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},";")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// The cluster IP")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"cluster:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," tk.env.spec.apiServer,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// The labels of your Environment")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"labels:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," tk.env.metadata.labels,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==r&&r&&r===Object(r)&&Object.isExtensible(r)&&!Object.prototype.hasOwnProperty.call(r,"__filemeta")&&Object.defineProperty(r,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/config.md"}}),r.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-config-md-b129057e083bbcf09ffa.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-config-md-b129057e083bbcf09ffa.js.map b/pr-preview/pr-1029/component---docs-config-md-b129057e083bbcf09ffa.js.map deleted file mode 100644 index 1872a12a6..000000000 --- a/pr-preview/pr-1029/component---docs-config-md-b129057e083bbcf09ffa.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/config.md"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","isMDXComponent"],"mappings":"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","file":"component---docs-config-md-b129057e083bbcf09ffa.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`Configuration Reference`}

      \n

      {`Tanka's behavior can be customized per Environment using a file called `}{`spec.json`}

      \n

      {`File format`}

      \n
      {`{`}{`\n`}{`  `}{`// Config format revision. Currently only \"v1alpha1\"`}{`\n`}{`  `}{`\"`}{`apiVersion`}{`\"`}{`:`}{` `}{`\"`}{`v1alpha1`}{`\"`}{`,`}{`\n`}{`  `}{`// Always \"Environment\". Reserved for future use`}{`\n`}{`  `}{`\"`}{`kind`}{`\"`}{`:`}{` `}{`\"`}{`Environment`}{`\"`}{`,`}{`\n`}{`\n`}{`  `}{`// Descriptive fields`}{`\n`}{`  `}{`\"`}{`metadata`}{`\"`}{`:`}{` `}{`{`}{`\n`}{`    `}{`// Name of the Environment. Automatically set to the relative`}{`\n`}{`    `}{`// path from the project root`}{`\n`}{`    `}{`\"`}{`name`}{`\"`}{`:`}{` `}{`\"`}{``}{`\"`}{`,`}{`\n`}{`\n`}{`    `}{`// Arbitrary key:value string pairs. Not parsed by Tanka`}{`\n`}{`    `}{`\"`}{`labels`}{`\"`}{`:`}{` `}{`{`}{` `}{`\"`}{``}{`\"`}{`:`}{` `}{`\"`}{``}{`\"`}{` `}{`}`}{`\n`}{`  `}{`},`}{`\n`}{`\n`}{`  `}{`// Properties influencing Tanka's behavior`}{`\n`}{`  `}{`\"`}{`spec`}{`\"`}{`:`}{` `}{`{`}{`\n`}{`    `}{`// The Kubernetes cluster to use.`}{`\n`}{`    `}{`// Must be the full URL, e.g. https://cluster.fqdn:6443`}{`\n`}{`    `}{`\"`}{`apiServer`}{`\"`}{`:`}{` `}{`\"`}{``}{`\"`}{`,`}{`\n`}{`\n`}{`    `}{`// The Kubernetes context name(s) to use.`}{`\n`}{`    `}{`// This field supports regular expressions and is mutually exclusive with apiServer field.`}{`\n`}{`    `}{`\"`}{`contextNames`}{`\"`}{`:`}{` `}{`[`}{`\"`}{``}{`\"`}{`],`}{`\n`}{`    `}{`\n`}{`    `}{`// Default namespace for objects that don't explicitely specify one`}{`\n`}{`    `}{`\"`}{`namespace`}{`\"`}{`:`}{` `}{`\"`}{``}{`\"`}{` `}{`|`}{` `}{`default`}{` `}{`=`}{` `}{`\"`}{`default`}{`\"`}{`,`}{`\n`}{`\n`}{`    `}{`// diffStrategy to use. Automatically chosen by default based on`}{`\n`}{`    `}{`// the availability of \"kubectl diff\".`}{`\n`}{`    `}{`// - native: uses \"kubectl diff\". Recommended`}{`\n`}{`    `}{`// - validate: uses \"kubectl diff --server-side\". Safest, but slower than \"native\"`}{`\n`}{`    `}{`// - subset: fallback for k8s versions below 1.13.0`}{`\n`}{`    `}{`\"`}{`diffStrategy`}{`\"`}{`:`}{` `}{`\"`}{`[native, validate, subset]`}{`\"`}{` `}{`|`}{` `}{`default`}{` `}{`=`}{` `}{`\"`}{`auto`}{`\"`}{`,`}{`\n`}{`\n`}{`    `}{`// Whether to add a \"tanka.dev/environment\" label to each created resource.`}{`\n`}{`    `}{`// Required for garbage collection (\"tk prune\").`}{`\n`}{`    `}{`\"`}{`injectLabels`}{`\"`}{`:`}{` `}{``}{` `}{`|`}{` `}{`default`}{` `}{`=`}{` `}{`false`}{`\n`}{`  `}{`}`}{`\n`}{`}`}
      \n

      {`Jsonnet access`}

      \n

      {`It is possible to access above data from Jsonnet:`}

      \n
      {`local`}{` tk `}{`=`}{` `}{`import`}{` `}{`\"tk\"`}{`;`}{`\n`}{`\n`}{`{`}{`\n`}{`  `}{`// The cluster IP`}{`\n`}{`  `}{`cluster:`}{` tk.env.spec.apiServer,`}{`\n`}{`  `}{`// The labels of your Environment`}{`\n`}{`  `}{`labels:`}{` tk.env.metadata.labels,`}{`\n`}{`}`}
      \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-diff-strategy-md-6f0ae06a737588b83c43.js b/pr-preview/pr-1029/component---docs-diff-strategy-md-6f0ae06a737588b83c43.js deleted file mode 100644 index 80cf5b51a..000000000 --- a/pr-preview/pr-1029/component---docs-diff-strategy-md-6f0ae06a737588b83c43.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{tUVA:function(e,t,a){"use strict";a.r(t),a.d(t,"_frontmatter",(function(){return o})),a.d(t,"default",(function(){return d}));var n=a("wx14"),s=a("Ff2n"),i=(a("q1tI"),a("7ljp")),r=a("hhGP");a("qKvR");const l=["components"],o={};void 0!==o&&o&&o===Object(o)&&Object.isExtensible(o)&&!Object.prototype.hasOwnProperty.call(o,"__filemeta")&&Object.defineProperty(o,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/diff-strategy.md"}});const c={_frontmatter:o},m=r.a;function d(e){let{components:t}=e,a=Object(s.a)(e,l);return Object(i.b)(m,Object(n.a)({},c,a,{components:t,mdxType:"MDXLayout"}),Object(i.b)("h1",{id:"diff-strategies"},"Diff Strategies"),Object(i.b)("p",null,"Tanka supports two different ways of computing differences between the local\nconfiguration and the live cluster state: Either ",Object(i.b)("strong",{parentName:"p"},"native")," ",Object(i.b)("inlineCode",{parentName:"p"},"kubectl diff -f -"),"\nis used, which gives the best possible results, but is only possible for\nclusters with\n",Object(i.b)("a",{parentName:"p",href:"https://kubernetes.io/blog/2019/01/14/apiserver-dry-run-and-kubectl-diff/"},"server-side diff"),"\nsupport (Kubernetes 1.13+)."),Object(i.b)("p",null,"When this is not available, Tanka falls back to ",Object(i.b)("inlineCode",{parentName:"p"},"subset")," mode."),Object(i.b)("p",null,"You can specify the diff-strategy to use on the command line as well:"),Object(i.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(i.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk3 mtki"},"# native")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"},"tk diff --diff-strategy=native "),Object(i.b)("span",{parentName:"span",className:"mtk9"},".")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk3 mtki"},"# validate: Like native but with a server-side validation")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"},"tk diff --diff-strategy=validate "),Object(i.b)("span",{parentName:"span",className:"mtk9"},".")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk3 mtki"},"# server-side")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"},"tk diff --diff-strategy=server "),Object(i.b)("span",{parentName:"span",className:"mtk9"},".")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk3 mtki"},"# subset")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"},"tk diff --diff-strategy=subset "),Object(i.b)("span",{parentName:"span",className:"mtk9"},".")))),Object(i.b)("h2",{id:"native"},"Native"),Object(i.b)("p",null,"The native diff mode is recommended, because it uses ",Object(i.b)("inlineCode",{parentName:"p"},"kubectl diff")," underneath,\nwhich sends the objects to the Kubernetes API server and computes the\ndifferences over there."),Object(i.b)("p",null,"This has the huge benefit that all possible changes by webhooks and other\ninternal components of Kubernetes can be encountered as well."),Object(i.b)("p",null,"However, this is a fairly new feature and only available on Kubernetes 1.13 or\nlater. Only the API server (master nodes) needs to have that\nversion, worker nodes do not matter."),Object(i.b)("p",null,"There is a\n",Object(i.b)("a",{parentName:"p",href:"known-issues.md#unexpected-diff-if-the-same-port-number-is-used-for-udp-and-tcp"},"known issue"),"\nwith ",Object(i.b)("inlineCode",{parentName:"p"},"kubectl diff"),", which affects ports configured to use both TCP and UDP."),Object(i.b)("h3",{id:"server-side-diffs"},"Server-side diffs"),Object(i.b)("p",null,"There are two additional modes which extend ",Object(i.b)("inlineCode",{parentName:"p"},"native"),": ",Object(i.b)("inlineCode",{parentName:"p"},"validate")," and ",Object(i.b)("inlineCode",{parentName:"p"},"server"),".\nWhile all ",Object(i.b)("inlineCode",{parentName:"p"},"kubectl diff")," commands are sent to the API server, these two\nmethods take advantage of an additional server-side diff mode (which uses the\n",Object(i.b)("inlineCode",{parentName:"p"},"kubectl diff --server-side")," flag, complementing the\n",Object(i.b)("a",{parentName:"p",href:"/pr-preview/pr-1029/server-side-apply"},"server-side apply")," mode)."),Object(i.b)("p",null,"Since a plain ",Object(i.b)("inlineCode",{parentName:"p"},"server")," diff often produces cruft, and wouldn't be representative\nof a client-side apply, the ",Object(i.b)("inlineCode",{parentName:"p"},"validate")," method allows the server-side diff to\ncheck that all models are valid server-side, but still displays the ",Object(i.b)("inlineCode",{parentName:"p"},"native"),"\ndiff output to the user."),Object(i.b)("h2",{id:"subset"},"Subset"),Object(i.b)("p",null,"If native diffing is not supported by your cluster, Tanka provides subset diff\nas a fallback method."),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"Subset diff only compares fields present in the local configuration and\nignores all other fields"),". When you remove a field locally, you will see no\ndifferences."),Object(i.b)("p",null,"This is required, because Kubernetes adds dynamic fields to the state during\nruntime, which we cannot know of on the client side. To produce a somewhat\nusable output, we can effectively only compare what we already know about."),Object(i.b)("p",null,"If this is a problem for you, consider switching to ",Object(i.b)("a",{parentName:"p",href:"#native"},"native")," mode."),Object(i.b)("h2",{id:"external-diff-utilities"},"External diff utilities"),Object(i.b)("p",null,"You can use external diff utilities by setting the environment variable\n",Object(i.b)("inlineCode",{parentName:"p"},"KUBECTL_EXTERNAL_DIFF"),". If you want to use a GUI or interactive diff utility\nyou must also set ",Object(i.b)("inlineCode",{parentName:"p"},"KUBECTL_INTERACTIVE_DIFF=1")," to prevent Tanka from capturing\nstdout."),Object(i.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==d&&d&&d===Object(d)&&Object.isExtensible(d)&&!Object.prototype.hasOwnProperty.call(d,"__filemeta")&&Object.defineProperty(d,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/diff-strategy.md"}}),d.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-diff-strategy-md-6f0ae06a737588b83c43.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-diff-strategy-md-6f0ae06a737588b83c43.js.map b/pr-preview/pr-1029/component---docs-diff-strategy-md-6f0ae06a737588b83c43.js.map deleted file mode 100644 index 673b8b569..000000000 --- a/pr-preview/pr-1029/component---docs-diff-strategy-md-6f0ae06a737588b83c43.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/diff-strategy.md"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","isMDXComponent"],"mappings":"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","file":"component---docs-diff-strategy-md-6f0ae06a737588b83c43.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`Diff Strategies`}

      \n

      {`Tanka supports two different ways of computing differences between the local\nconfiguration and the live cluster state: Either `}{`native`}{` `}{`kubectl diff -f -`}{`\nis used, which gives the best possible results, but is only possible for\nclusters with\n`}{`server-side diff`}{`\nsupport (Kubernetes 1.13+).`}

      \n

      {`When this is not available, Tanka falls back to `}{`subset`}{` mode.`}

      \n

      {`You can specify the diff-strategy to use on the command line as well:`}

      \n
      {`# native`}{`\n`}{`tk diff --diff-strategy=native `}{`.`}{`\n`}{`\n`}{`# validate: Like native but with a server-side validation`}{`\n`}{`tk diff --diff-strategy=validate `}{`.`}{`\n`}{`\n`}{`# server-side`}{`\n`}{`tk diff --diff-strategy=server `}{`.`}{`\n`}{`\n`}{`# subset`}{`\n`}{`tk diff --diff-strategy=subset `}{`.`}
      \n

      {`Native`}

      \n

      {`The native diff mode is recommended, because it uses `}{`kubectl diff`}{` underneath,\nwhich sends the objects to the Kubernetes API server and computes the\ndifferences over there.`}

      \n

      {`This has the huge benefit that all possible changes by webhooks and other\ninternal components of Kubernetes can be encountered as well.`}

      \n

      {`However, this is a fairly new feature and only available on Kubernetes 1.13 or\nlater. Only the API server (master nodes) needs to have that\nversion, worker nodes do not matter.`}

      \n

      {`There is a\n`}{`known issue`}{`\nwith `}{`kubectl diff`}{`, which affects ports configured to use both TCP and UDP.`}

      \n

      {`Server-side diffs`}

      \n

      {`There are two additional modes which extend `}{`native`}{`: `}{`validate`}{` and `}{`server`}{`.\nWhile all `}{`kubectl diff`}{` commands are sent to the API server, these two\nmethods take advantage of an additional server-side diff mode (which uses the\n`}{`kubectl diff --server-side`}{` flag, complementing the\n`}{`server-side apply`}{` mode).`}

      \n

      {`Since a plain `}{`server`}{` diff often produces cruft, and wouldn't be representative\nof a client-side apply, the `}{`validate`}{` method allows the server-side diff to\ncheck that all models are valid server-side, but still displays the `}{`native`}{`\ndiff output to the user.`}

      \n

      {`Subset`}

      \n

      {`If native diffing is not supported by your cluster, Tanka provides subset diff\nas a fallback method.`}

      \n

      {`Subset diff only compares fields present in the local configuration and\nignores all other fields`}{`. When you remove a field locally, you will see no\ndifferences.`}

      \n

      {`This is required, because Kubernetes adds dynamic fields to the state during\nruntime, which we cannot know of on the client side. To produce a somewhat\nusable output, we can effectively only compare what we already know about.`}

      \n

      {`If this is a problem for you, consider switching to `}{`native`}{` mode.`}

      \n

      {`External diff utilities`}

      \n

      {`You can use external diff utilities by setting the environment variable\n`}{`KUBECTL_EXTERNAL_DIFF`}{`. If you want to use a GUI or interactive diff utility\nyou must also set `}{`KUBECTL_INTERACTIVE_DIFF=1`}{` to prevent Tanka from capturing\nstdout.`}

      \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-directory-structure-md-e8d13c22da569ecf1cd2.js b/pr-preview/pr-1029/component---docs-directory-structure-md-e8d13c22da569ecf1cd2.js deleted file mode 100644 index 4aaf63717..000000000 --- a/pr-preview/pr-1029/component---docs-directory-structure-md-e8d13c22da569ecf1cd2.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{"6SEy":function(e,a,t){"use strict";t.r(a),t.d(a,"_frontmatter",(function(){return c})),t.d(a,"default",(function(){return m}));var n=t("wx14"),s=t("Ff2n"),i=(t("q1tI"),t("7ljp")),r=t("hhGP");t("qKvR");const l=["components"],c={};void 0!==c&&c&&c===Object(c)&&Object.isExtensible(c)&&!Object.prototype.hasOwnProperty.call(c,"__filemeta")&&Object.defineProperty(c,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/directory-structure.md"}});const o={_frontmatter:c},b=r.a;function m(e){let{components:a}=e,t=Object(s.a)(e,l);return Object(i.b)(b,Object(n.a)({},o,t,{components:a,mdxType:"MDXLayout"}),Object(i.b)("h1",{id:"directory-structure"},"Directory structure"),Object(i.b)("p",null,"Tanka uses the following directories and special files:"),Object(i.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(i.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk9"},"."),Object(i.b)("span",{parentName:"span",className:"mtk1"}," "),Object(i.b)("span",{parentName:"span",className:"mtk3 mtki"},"# the project ()")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"},"├── environments "),Object(i.b)("span",{parentName:"span",className:"mtk3 mtki"},"# code defining clusters")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"},"│   └── default "),Object(i.b)("span",{parentName:"span",className:"mtk3 mtki"},"# ")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"},"│   ├── main.jsonnet "),Object(i.b)("span",{parentName:"span",className:"mtk3 mtki"},"# starting point of the Jsonnet compilation")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"},"│   └── spec.json "),Object(i.b)("span",{parentName:"span",className:"mtk3 mtki"},"# environment's config")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"},"├── jsonnetfile.json "),Object(i.b)("span",{parentName:"span",className:"mtk3 mtki"},"# direct dependencies")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"},"├── jsonnetfile.lock.json "),Object(i.b)("span",{parentName:"span",className:"mtk3 mtki"},"# all dependencies with exact versions")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"},"├── lib "),Object(i.b)("span",{parentName:"span",className:"mtk3 mtki"},"# libraries for this project only")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"},"│   └── k.libsonnet "),Object(i.b)("span",{parentName:"span",className:"mtk3 mtki"},"# alias file for vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/main.libsonnet")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"},"└── vendor "),Object(i.b)("span",{parentName:"span",className:"mtk3 mtki"},"# external libraries installed using jb")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"}," ├── github.com")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"}," │   ├── grafana")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"}," │   │   └── jsonnet-libs")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"}," │   │   └── ksonnet-util "),Object(i.b)("span",{parentName:"span",className:"mtk3 mtki"},"# Grafana Labs' usability extensions to k.libsonnet")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"}," │   │   ├── ...")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"}," │   │   └── kausal.libsonnet")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"}," │   └── jsonnet-libs")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"}," │   └── k8s-libsonnet")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"}," │   └── 1.21 "),Object(i.b)("span",{parentName:"span",className:"mtk3 mtki"},"# kubernetes library")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"}," │   ├── ...")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"}," │   └── main.libsonnet")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"}," ├── 1.21 -"),Object(i.b)("span",{parentName:"span",className:"mtk12"},">"),Object(i.b)("span",{parentName:"span",className:"mtk1"}," github.com/jsonnet-libs/k8s-libsonnet/1.21")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"}," └── ksonnet-util -"),Object(i.b)("span",{parentName:"span",className:"mtk12"},">"),Object(i.b)("span",{parentName:"span",className:"mtk1"}," github.com/grafana/jsonnet-libs/ksonnet-util")))),Object(i.b)("h2",{id:"environments"},"Environments"),Object(i.b)("p",null,"Tanka organizes configuration in environments. For the rationale behind this,\nsee the ",Object(i.b)("a",{parentName:"p",href:"/pr-preview/pr-1029/tutorial/environments"},"section in the tutorial"),"."),Object(i.b)("p",null,"An environment consists of at least two files:"),Object(i.b)("h4",{id:"specjson"},"spec.json"),Object(i.b)("p",null,"This file configures environment properties such as cluster connection\n(",Object(i.b)("inlineCode",{parentName:"p"},"spec.apiServer"),"), default namespace (",Object(i.b)("inlineCode",{parentName:"p"},"spec.namespace"),"), etc."),Object(i.b)("p",null,"For the full set of options, see the ",Object(i.b)("a",{parentName:"p",href:"https://github.com/grafana/tanka/blob/main/pkg/spec/v1alpha1/environment.go"},"Golang source\ncode"),"."),Object(i.b)("h4",{id:"mainjsonnet"},"main.jsonnet"),Object(i.b)("p",null,"Like other programming languages, Jsonnet needs an entrypoint into the\nevaluation, something to begin with. ",Object(i.b)("inlineCode",{parentName:"p"},"main.jsonnet")," is exactly this: The very\nfirst file being evaluated, importing or directly specifying everything required\nfor this specific environment."),Object(i.b)("h2",{id:"root-and-base"},"Root and Base"),Object(i.b)("p",null,"When talking about directories, Tanka uses the following terms:"),Object(i.b)("table",null,Object(i.b)("thead",{parentName:"table"},Object(i.b)("tr",{parentName:"thead"},Object(i.b)("th",{parentName:"tr",align:null},"Term"),Object(i.b)("th",{parentName:"tr",align:null},"Description"),Object(i.b)("th",{parentName:"tr",align:null},"Identifier file"))),Object(i.b)("tbody",{parentName:"table"},Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},Object(i.b)("inlineCode",{parentName:"td"},"rootDir")),Object(i.b)("td",{parentName:"tr",align:null},"The root of your project"),Object(i.b)("td",{parentName:"tr",align:null},Object(i.b)("inlineCode",{parentName:"td"},"jsonnetfile.json")," or ",Object(i.b)("inlineCode",{parentName:"td"},"tkrc.yaml"))),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},Object(i.b)("inlineCode",{parentName:"td"},"baseDir")),Object(i.b)("td",{parentName:"tr",align:null},"The directory of the current environment"),Object(i.b)("td",{parentName:"tr",align:null},Object(i.b)("inlineCode",{parentName:"td"},"main.jsonnet"))))),Object(i.b)("p",null,"Regardless what subdirectory of the project you are in, Tanka will always be\nable to identify both directories, by searching for the identifier files in the\nparent directories.",Object(i.b)("br",{parentName:"p"}),"\n","Tanka needs these for correctly setting up the ",Object(i.b)("a",{parentName:"p",href:"/pr-preview/pr-1029/libraries/import-paths"},"import paths"),"."),Object(i.b)("p",null,"This is similar to how ",Object(i.b)("inlineCode",{parentName:"p"},"git")," always works, by looking for the ",Object(i.b)("inlineCode",{parentName:"p"},".git")," directory."),Object(i.b)("h2",{id:"libraries"},"Libraries"),Object(i.b)("p",null,"Tanka relies heavily on code-reuse, so libraries are a natural thing. Roughly\nspoken, they can be imported from two paths:"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("inlineCode",{parentName:"li"},"/lib"),": Project local libraries"),Object(i.b)("li",{parentName:"ul"},Object(i.b)("inlineCode",{parentName:"li"},"/vendor")," External libraries")),Object(i.b)("p",null,"For more details consider the ",Object(i.b)("a",{parentName:"p",href:"/pr-preview/pr-1029/libraries/import-paths"},"import paths"),"."),Object(i.b)("h3",{id:"jsonnetfilejson-and-the-lock"},"jsonnetfile.json and the lock"),Object(i.b)("p",null,Object(i.b)("inlineCode",{parentName:"p"},"jb")," records all external packages installed in a file called\n",Object(i.b)("inlineCode",{parentName:"p"},"jsonnetfile.json"),". This file is the source of truth about what should be\nincluded in ",Object(i.b)("inlineCode",{parentName:"p"},"vendor/"),". However, it should only include what is really directly\nrequired, all recursive dependencies will be handled just fine."),Object(i.b)("p",null,Object(i.b)("inlineCode",{parentName:"p"},"jsonnetfile.lock.json")," is generated on every run of jsonnet-bundler, including\na list of packages that must be included in ",Object(i.b)("inlineCode",{parentName:"p"},"vendor/"),", along with the exact\nversion and a ",Object(i.b)("inlineCode",{parentName:"p"},"sha256")," hash of the package contents."),Object(i.b)("p",null,"Both files should be checked into source control: The ",Object(i.b)("inlineCode",{parentName:"p"},"jsonnetfile.json"),"\nspecifies what you need and the ",Object(i.b)("inlineCode",{parentName:"p"},"jsonnetfile.lock.json")," is important to make\nsure that subsequent ",Object(i.b)("inlineCode",{parentName:"p"},"jb install")," invocations always do the exact same thing."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Tip"),": The ",Object(i.b)("inlineCode",{parentName:"p"},"vendor/")," directory can be safely added to ",Object(i.b)("inlineCode",{parentName:"p"},".gitignore")," to keep your\nrepository size down, as long as ",Object(i.b)("inlineCode",{parentName:"p"},"jsonnetfile.lock.json")," is checked in.")),Object(i.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==m&&m&&m===Object(m)&&Object.isExtensible(m)&&!Object.prototype.hasOwnProperty.call(m,"__filemeta")&&Object.defineProperty(m,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/directory-structure.md"}}),m.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-directory-structure-md-e8d13c22da569ecf1cd2.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-directory-structure-md-e8d13c22da569ecf1cd2.js.map b/pr-preview/pr-1029/component---docs-directory-structure-md-e8d13c22da569ecf1cd2.js.map deleted file mode 100644 index 7abcd3767..000000000 --- a/pr-preview/pr-1029/component---docs-directory-structure-md-e8d13c22da569ecf1cd2.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/directory-structure.md"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","isMDXComponent"],"mappings":"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","file":"component---docs-directory-structure-md-e8d13c22da569ecf1cd2.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`Directory structure`}

      \n

      {`Tanka uses the following directories and special files:`}

      \n
      {`.`}{` `}{`# the project ()`}{`\n`}{`├── environments `}{`# code defining clusters`}{`\n`}{`│   └── default `}{`# `}{`\n`}{`│       ├── main.jsonnet `}{`# starting point of the Jsonnet compilation`}{`\n`}{`│       └── spec.json `}{`# environment's config`}{`\n`}{`├── jsonnetfile.json `}{`# direct dependencies`}{`\n`}{`├── jsonnetfile.lock.json `}{`# all dependencies with exact versions`}{`\n`}{`├── lib `}{`# libraries for this project only`}{`\n`}{`│   └── k.libsonnet `}{`# alias file for vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/main.libsonnet`}{`\n`}{`└── vendor `}{`# external libraries installed using jb`}{`\n`}{`    ├── github.com`}{`\n`}{`    │   ├── grafana`}{`\n`}{`    │   │   └── jsonnet-libs`}{`\n`}{`    │   │       └── ksonnet-util `}{`# Grafana Labs' usability extensions to k.libsonnet`}{`\n`}{`    │   │           ├── ...`}{`\n`}{`    │   │           └── kausal.libsonnet`}{`\n`}{`    │   └── jsonnet-libs`}{`\n`}{`    │       └── k8s-libsonnet`}{`\n`}{`    │           └── 1.21 `}{`# kubernetes library`}{`\n`}{`    │               ├── ...`}{`\n`}{`    │               └── main.libsonnet`}{`\n`}{`    ├── 1.21 -`}{`>`}{` github.com/jsonnet-libs/k8s-libsonnet/1.21`}{`\n`}{`    └── ksonnet-util -`}{`>`}{` github.com/grafana/jsonnet-libs/ksonnet-util`}
      \n

      {`Environments`}

      \n

      {`Tanka organizes configuration in environments. For the rationale behind this,\nsee the `}{`section in the tutorial`}{`.`}

      \n

      {`An environment consists of at least two files:`}

      \n

      {`spec.json`}

      \n

      {`This file configures environment properties such as cluster connection\n(`}{`spec.apiServer`}{`), default namespace (`}{`spec.namespace`}{`), etc.`}

      \n

      {`For the full set of options, see the `}{`Golang source\ncode`}{`.`}

      \n

      {`main.jsonnet`}

      \n

      {`Like other programming languages, Jsonnet needs an entrypoint into the\nevaluation, something to begin with. `}{`main.jsonnet`}{` is exactly this: The very\nfirst file being evaluated, importing or directly specifying everything required\nfor this specific environment.`}

      \n

      {`Root and Base`}

      \n

      {`When talking about directories, Tanka uses the following terms:`}

      \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
      {`Term`}{`Description`}{`Identifier file`}
      {`rootDir`}{`The root of your project`}{`jsonnetfile.json`}{` or `}{`tkrc.yaml`}
      {`baseDir`}{`The directory of the current environment`}{`main.jsonnet`}
      \n

      {`Regardless what subdirectory of the project you are in, Tanka will always be\nable to identify both directories, by searching for the identifier files in the\nparent directories.`}

      {`\n`}{`Tanka needs these for correctly setting up the `}{`import paths`}{`.`}

      \n

      {`This is similar to how `}{`git`}{` always works, by looking for the `}{`.git`}{` directory.`}

      \n

      {`Libraries`}

      \n

      {`Tanka relies heavily on code-reuse, so libraries are a natural thing. Roughly\nspoken, they can be imported from two paths:`}

      \n
        \n
      • {`/lib`}{`: Project local libraries`}
      • \n
      • {`/vendor`}{` External libraries`}
      • \n
      \n

      {`For more details consider the `}{`import paths`}{`.`}

      \n

      {`jsonnetfile.json and the lock`}

      \n

      {`jb`}{` records all external packages installed in a file called\n`}{`jsonnetfile.json`}{`. This file is the source of truth about what should be\nincluded in `}{`vendor/`}{`. However, it should only include what is really directly\nrequired, all recursive dependencies will be handled just fine.`}

      \n

      {`jsonnetfile.lock.json`}{` is generated on every run of jsonnet-bundler, including\na list of packages that must be included in `}{`vendor/`}{`, along with the exact\nversion and a `}{`sha256`}{` hash of the package contents.`}

      \n

      {`Both files should be checked into source control: The `}{`jsonnetfile.json`}{`\nspecifies what you need and the `}{`jsonnetfile.lock.json`}{` is important to make\nsure that subsequent `}{`jb install`}{` invocations always do the exact same thing.`}

      \n
      \n

      {`Tip`}{`: The `}{`vendor/`}{` directory can be safely added to `}{`.gitignore`}{` to keep your\nrepository size down, as long as `}{`jsonnetfile.lock.json`}{` is checked in.`}

      \n
      \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-env-vars-md-102b70747bbd7865e8e8.js b/pr-preview/pr-1029/component---docs-env-vars-md-102b70747bbd7865e8e8.js deleted file mode 100644 index 435ba04b3..000000000 --- a/pr-preview/pr-1029/component---docs-env-vars-md-102b70747bbd7865e8e8.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{YnQe:function(e,t,n){"use strict";n.r(t),n.d(t,"_frontmatter",(function(){return o})),n.d(t,"default",(function(){return O}));var a=n("wx14"),b=n("Ff2n"),p=(n("q1tI"),n("7ljp")),r=n("hhGP");n("qKvR");const c=["components"],o={};void 0!==o&&o&&o===Object(o)&&Object.isExtensible(o)&&!Object.prototype.hasOwnProperty.call(o,"__filemeta")&&Object.defineProperty(o,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/env-vars.md"}});const i={_frontmatter:o},l=r.a;function O(e){let{components:t}=e,n=Object(b.a)(e,c);return Object(p.b)(l,Object(a.a)({},i,n,{components:t,mdxType:"MDXLayout"}),Object(p.b)("h1",{id:"environment-variables"},"Environment Variables"),Object(p.b)("h3",{id:"tanka_jb_path"},"TANKA_JB_PATH"),Object(p.b)("p",null,Object(p.b)("strong",{parentName:"p"},"Description"),": Path to the ",Object(p.b)("inlineCode",{parentName:"p"},"jb")," tool executable",Object(p.b)("br",{parentName:"p"}),"\n",Object(p.b)("strong",{parentName:"p"},"Default"),": ",Object(p.b)("inlineCode",{parentName:"p"},"$PATH/jb")),Object(p.b)("h3",{id:"tanka_kubectl_path"},"TANKA_KUBECTL_PATH"),Object(p.b)("p",null,Object(p.b)("strong",{parentName:"p"},"Description"),": Path to the ",Object(p.b)("inlineCode",{parentName:"p"},"kubectl")," tool executable",Object(p.b)("br",{parentName:"p"}),"\n",Object(p.b)("strong",{parentName:"p"},"Default"),": ",Object(p.b)("inlineCode",{parentName:"p"},"$PATH/kubectl")),Object(p.b)("h3",{id:"tanka_kubectl_trace"},"TANKA_KUBECTL_TRACE"),Object(p.b)("p",null,Object(p.b)("strong",{parentName:"p"},"Description"),": Print all calls to ",Object(p.b)("inlineCode",{parentName:"p"},"kubectl"),Object(p.b)("br",{parentName:"p"}),"\n",Object(p.b)("strong",{parentName:"p"},"Default"),": ",Object(p.b)("inlineCode",{parentName:"p"},"false")),Object(p.b)("h3",{id:"tanka_helm_path"},"TANKA_HELM_PATH"),Object(p.b)("p",null,Object(p.b)("strong",{parentName:"p"},"Description"),": Path to the ",Object(p.b)("inlineCode",{parentName:"p"},"helm")," executable",Object(p.b)("br",{parentName:"p"}),"\n",Object(p.b)("strong",{parentName:"p"},"Default"),": ",Object(p.b)("inlineCode",{parentName:"p"},"$PATH/helm")),Object(p.b)("h3",{id:"tanka_kustomize_path"},"TANKA_KUSTOMIZE_PATH"),Object(p.b)("p",null,Object(p.b)("strong",{parentName:"p"},"Description"),": Path to the ",Object(p.b)("inlineCode",{parentName:"p"},"kustomize")," executable",Object(p.b)("br",{parentName:"p"}),"\n",Object(p.b)("strong",{parentName:"p"},"Default"),": ",Object(p.b)("inlineCode",{parentName:"p"},"$PATH/kustomize")),Object(p.b)("h3",{id:"pager"},"PAGER"),Object(p.b)("p",null,Object(p.b)("strong",{parentName:"p"},"Description"),": Pager to use when displaying output. Set to an empty string to disable paging.\n",Object(p.b)("strong",{parentName:"p"},"Default"),": ",Object(p.b)("inlineCode",{parentName:"p"},"less --RAW-CONTROL-CHARS --quit-if-one-screen --no-init")))}void 0!==O&&O&&O===Object(O)&&Object.isExtensible(O)&&!Object.prototype.hasOwnProperty.call(O,"__filemeta")&&Object.defineProperty(O,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/env-vars.md"}}),O.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-env-vars-md-102b70747bbd7865e8e8.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-env-vars-md-102b70747bbd7865e8e8.js.map b/pr-preview/pr-1029/component---docs-env-vars-md-102b70747bbd7865e8e8.js.map deleted file mode 100644 index d066b0c0b..000000000 --- a/pr-preview/pr-1029/component---docs-env-vars-md-102b70747bbd7865e8e8.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/env-vars.md"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","isMDXComponent"],"mappings":"wRAMaA,EAAe,QAAG,IAAAA,UAAAC,OAAAD,IAAAC,OAAAC,aAAAF,KAAAC,OAAAE,UAAAC,eAAAC,KAAAL,EAAA,eAAAC,OAAAK,eAAAN,EAAA,cAAAO,cAAA,EAAAC,MAAA,CAAAC,KAAA,eAAAC,SAAA,sBAC/B,MAAMC,EAAc,CAClBX,gBAEIY,EAAYC,IACH,SAASC,EAAUC,GAG/B,IAHgC,WACjCC,GAEDD,EADIE,EAAKC,YAAAH,EAAAI,GAER,OAAOC,YAACR,EAASS,YAAA,GAAKV,EAAiBM,EAAK,CAAED,WAAYA,EAAYM,QAAQ,cAG5EF,YAAA,MACE,GAAM,yBAAuB,yBAE/BA,YAAA,MACE,GAAM,iBAAe,iBAEvBA,YAAA,SAAGA,YAAA,UAAQG,WAAW,KAAG,eAAyB,iBAAkBH,YAAA,cAAYG,WAAW,KAAG,MAAoB,mBAAoBH,YAAA,MAAIG,WAAW,MAAS,KAChKH,YAAA,UAAQG,WAAW,KAAG,WAAqB,KAAMH,YAAA,cAAYG,WAAW,KAAG,aACzEH,YAAA,MACE,GAAM,sBAAoB,sBAE5BA,YAAA,SAAGA,YAAA,UAAQG,WAAW,KAAG,eAAyB,iBAAkBH,YAAA,cAAYG,WAAW,KAAG,WAAyB,mBAAoBH,YAAA,MAAIG,WAAW,MAAS,KACrKH,YAAA,UAAQG,WAAW,KAAG,WAAqB,KAAMH,YAAA,cAAYG,WAAW,KAAG,kBACzEH,YAAA,MACE,GAAM,uBAAqB,uBAE7BA,YAAA,SAAGA,YAAA,UAAQG,WAAW,KAAG,eAAyB,wBAAyBH,YAAA,cAAYG,WAAW,KAAG,WAAyBH,YAAA,MAAIG,WAAW,MAAS,KACxJH,YAAA,UAAQG,WAAW,KAAG,WAAqB,KAAMH,YAAA,cAAYG,WAAW,KAAG,UACzEH,YAAA,MACE,GAAM,mBAAiB,mBAEzBA,YAAA,SAAGA,YAAA,UAAQG,WAAW,KAAG,eAAyB,iBAAkBH,YAAA,cAAYG,WAAW,KAAG,QAAsB,cAAeH,YAAA,MAAIG,WAAW,MAAS,KAC7JH,YAAA,UAAQG,WAAW,KAAG,WAAqB,KAAMH,YAAA,cAAYG,WAAW,KAAG,eACzEH,YAAA,MACE,GAAM,wBAAsB,wBAE9BA,YAAA,SAAGA,YAAA,UAAQG,WAAW,KAAG,eAAyB,iBAAkBH,YAAA,cAAYG,WAAW,KAAG,aAA2B,cAAeH,YAAA,MAAIG,WAAW,MAAS,KAClKH,YAAA,UAAQG,WAAW,KAAG,WAAqB,KAAMH,YAAA,cAAYG,WAAW,KAAG,oBACzEH,YAAA,MACE,GAAM,SAAO,SAEfA,YAAA,SAAGA,YAAA,UAAQG,WAAW,KAAG,eAAyB,qFACpDH,YAAA,UAAQG,WAAW,KAAG,WAAqB,KAAMH,YAAA,cAAYG,WAAW,KAAG,kEAG5E,IAAAT,UAAAb,OAAAa,IAAAb,OAAAC,aAAAY,KAAAb,OAAAE,UAAAC,eAAAC,KAAAS,EAAA,eAAAb,OAAAK,eAAAQ,EAAA,cAAAP,cAAA,EAAAC,MAAA,CAAAC,KAAA,aAAAC,SAAA,sBAEDI,EAAWU,gBAAiB","file":"component---docs-env-vars-md-102b70747bbd7865e8e8.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`Environment Variables`}

      \n

      {`TANKA_JB_PATH`}

      \n

      {`Description`}{`: Path to the `}{`jb`}{` tool executable`}

      {`\n`}{`Default`}{`: `}{`$PATH/jb`}

      \n

      {`TANKA_KUBECTL_PATH`}

      \n

      {`Description`}{`: Path to the `}{`kubectl`}{` tool executable`}

      {`\n`}{`Default`}{`: `}{`$PATH/kubectl`}

      \n

      {`TANKA_KUBECTL_TRACE`}

      \n

      {`Description`}{`: Print all calls to `}{`kubectl`}

      {`\n`}{`Default`}{`: `}{`false`}

      \n

      {`TANKA_HELM_PATH`}

      \n

      {`Description`}{`: Path to the `}{`helm`}{` executable`}

      {`\n`}{`Default`}{`: `}{`$PATH/helm`}

      \n

      {`TANKA_KUSTOMIZE_PATH`}

      \n

      {`Description`}{`: Path to the `}{`kustomize`}{` executable`}

      {`\n`}{`Default`}{`: `}{`$PATH/kustomize`}

      \n

      {`PAGER`}

      \n

      {`Description`}{`: Pager to use when displaying output. Set to an empty string to disable paging.\n`}{`Default`}{`: `}{`less --RAW-CONTROL-CHARS --quit-if-one-screen --no-init`}

      \n\n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-exporting-md-e8c97f5d64e97c22ef1e.js b/pr-preview/pr-1029/component---docs-exporting-md-e8c97f5d64e97c22ef1e.js deleted file mode 100644 index c1034c084..000000000 --- a/pr-preview/pr-1029/component---docs-exporting-md-e8c97f5d64e97c22ef1e.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{AXtd:function(e,a,t){"use strict";t.r(a),t.d(a,"_frontmatter",(function(){return r})),t.d(a,"default",(function(){return p}));var n=t("wx14"),s=t("Ff2n"),i=(t("q1tI"),t("7ljp")),l=t("hhGP");t("qKvR");const o=["components"],r={};void 0!==r&&r&&r===Object(r)&&Object.isExtensible(r)&&!Object.prototype.hasOwnProperty.call(r,"__filemeta")&&Object.defineProperty(r,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/exporting.md"}});const m={_frontmatter:r},c=l.a;function p(e){let{components:a}=e,t=Object(s.a)(e,o);return Object(i.b)(c,Object(n.a)({},m,t,{components:a,mdxType:"MDXLayout"}),Object(i.b)("h1",{id:"exporting-as-yaml"},"Exporting as YAML"),Object(i.b)("p",null,"Tanka provides you with a day-to-day workflow for working with Kubernetes clusters:"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("inlineCode",{parentName:"li"},"tk show")," for quickly checking the YAML representation looks good"),Object(i.b)("li",{parentName:"ul"},Object(i.b)("inlineCode",{parentName:"li"},"tk diff")," to ensure your changes will behave like they should"),Object(i.b)("li",{parentName:"ul"},Object(i.b)("inlineCode",{parentName:"li"},"tk apply")," makes it happen")),Object(i.b)("p",null,"However sometimes it can be required to integrate with other tooling that does\nonly support ",Object(i.b)("inlineCode",{parentName:"p"},".yaml")," files."),Object(i.b)("p",null,"For that case, ",Object(i.b)("inlineCode",{parentName:"p"},"tk export")," can be used:"),Object(i.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(i.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk3 mtki"},"# ")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"},"$ tk "),Object(i.b)("span",{parentName:"span",className:"mtk12"},"export"),Object(i.b)("span",{parentName:"span",className:"mtk1"}," promtail/ environments/promtail")))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Note:")," The arguments flipped in v0.14.0, the ",Object(i.b)("inlineCode",{parentName:"p"},"")," comes first now.")),Object(i.b)("p",null,"This will create a separate ",Object(i.b)("inlineCode",{parentName:"p"},".yaml")," file for each Kubernetes resource included in your Jsonnet."),Object(i.b)("h2",{id:"filenames"},"Filenames"),Object(i.b)("p",null,"Tanka by default uses the following pattern:"),Object(i.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(i.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk5"},"${"),Object(i.b)("span",{parentName:"span",className:"mtk8"},"apiVersion"),Object(i.b)("span",{parentName:"span",className:"mtk5"},"}"),Object(i.b)("span",{parentName:"span",className:"mtk1"},"."),Object(i.b)("span",{parentName:"span",className:"mtk5"},"${"),Object(i.b)("span",{parentName:"span",className:"mtk8"},"kind"),Object(i.b)("span",{parentName:"span",className:"mtk5"},"}"),Object(i.b)("span",{parentName:"span",className:"mtk1"},"-"),Object(i.b)("span",{parentName:"span",className:"mtk5"},"${"),Object(i.b)("span",{parentName:"span",className:"mtk8"},"metadata.name"),Object(i.b)("span",{parentName:"span",className:"mtk5"},"}"),Object(i.b)("span",{parentName:"span",className:"mtk1"},".yaml")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk3 mtki"},"# examples:")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"},"apps-v1.Deployment-distributor.yaml")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"},"v1.ConfigMap-loki.yaml")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"},"v1.Service-ingester.yaml")))),Object(i.b)("p",null,"If that does not fit your need, you can provide your own pattern using the ",Object(i.b)("inlineCode",{parentName:"p"},"--format")," flag:"),Object(i.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(i.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"},"tk "),Object(i.b)("span",{parentName:"span",className:"mtk12"},"export"),Object(i.b)("span",{parentName:"span",className:"mtk1"}," promtail environments/promtail --format="),Object(i.b)("span",{parentName:"span",className:"mtk5"},"'"),Object(i.b)("span",{parentName:"span",className:"mtk6"},"{{.metadata.labels.app}}-{{.metadata.name}}-{{.kind}}"),Object(i.b)("span",{parentName:"span",className:"mtk5"},"'")))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"The syntax is Go ",Object(i.b)("inlineCode",{parentName:"p"},"text/template"),". See ",Object(i.b)("a",{parentName:"p",href:"https://pkg.go.dev/text/template"},"https://pkg.go.dev/text/template"),"\nfor reference.")),Object(i.b)("p",null,"This would include the label named ",Object(i.b)("inlineCode",{parentName:"p"},"app"),", the ",Object(i.b)("inlineCode",{parentName:"p"},"name")," and ",Object(i.b)("inlineCode",{parentName:"p"},"kind")," of the resource:"),Object(i.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":""},Object(i.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},"loki-distributor-Deployment"),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},"loki-loki-ConfigMap"),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},"loki-ingester-Service"))),Object(i.b)("p",null,"You can optionally use the template function ",Object(i.b)("inlineCode",{parentName:"p"},"lower")," for lower-casing fields, e.g. in the above example"),Object(i.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(i.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"},"... --format="),Object(i.b)("span",{parentName:"span",className:"mtk5"},"'"),Object(i.b)("span",{parentName:"span",className:"mtk6"},"{{.metadata.labels.app}}-{{.metadata.name}}-{{.kind | lower}}"),Object(i.b)("span",{parentName:"span",className:"mtk5"},"'")))),Object(i.b)("p",null,"would yield"),Object(i.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":""},Object(i.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},"loki-distributor-deployment"))),Object(i.b)("p",null,"etc."),Object(i.b)("p",null,"You can also use a different file extension by providing ",Object(i.b)("inlineCode",{parentName:"p"},"--extension='yml'"),", for example."),Object(i.b)("h2",{id:"multiple-environments"},"Multiple environments"),Object(i.b)("p",null,"Tanka can also export multiple inline environments, as showcased in ",Object(i.b)("a",{parentName:"p",href:"/pr-preview/pr-1029/inline-environments#use-case-consistent-inline-environments"},"Use case: consistent inline\nenvironments"),". This follows the same\nprinciples as describe before with the addition that you can also refer to Environment specific data through the ",Object(i.b)("inlineCode",{parentName:"p"},"env"),"\nkeyword."),Object(i.b)("p",null,"For example an export might refer to data from the Environment spec:"),Object(i.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(i.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk3 mtki"},"# Format based on environment {{env.<...>}}")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"},"$ tk "),Object(i.b)("span",{parentName:"span",className:"mtk12"},"export"),Object(i.b)("span",{parentName:"span",className:"mtk1"}," exportDir environments/dev/ \\")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"}," --format "),Object(i.b)("span",{parentName:"span",className:"mtk5"},"'"),Object(i.b)("span",{parentName:"span",className:"mtk6"},"{{env.metadata.labels.cluster}}/{{env.spec.namespace}}//{{.kind}}-{{.metadata.name}}"),Object(i.b)("span",{parentName:"span",className:"mtk5"},"'")))),Object(i.b)("p",null,"Even more advanced use cases allow you to export multiple environments in a single execution:"),Object(i.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(i.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk3 mtki"},"# Export multiple environments")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"},"$ tk "),Object(i.b)("span",{parentName:"span",className:"mtk12"},"export"),Object(i.b)("span",{parentName:"span",className:"mtk1"}," exportDir environments/dev/ environments/qa/")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk3 mtki"},"# Recursive export")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"},"$ tk "),Object(i.b)("span",{parentName:"span",className:"mtk12"},"export"),Object(i.b)("span",{parentName:"span",className:"mtk1"}," exportDir environments/ --recursive")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk3 mtki"},"# Recursive export with labelSelector")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"},"$ tk "),Object(i.b)("span",{parentName:"span",className:"mtk12"},"export"),Object(i.b)("span",{parentName:"span",className:"mtk1"}," exportDir environments/ -r -l team=infra")))),Object(i.b)("h2",{id:"performance-features"},"Performance features"),Object(i.b)("p",null,"When exporting a large amount of environments, jsonnet evaluation can become a bottleneck. To speed up the process, Tanka provides a few optional features."),Object(i.b)("h3",{id:"partial-export-in-a-gitops-context"},"Partial export (in a GitOps context)"),Object(i.b)("p",null,"Given multiple environments, one may want to only export the environments that were modified since the last export. This is enabled by passing both the ",Object(i.b)("inlineCode",{parentName:"p"},"--merge-strategy=replace-envs")," flags."),Object(i.b)("p",null,"When these flags are passed, Tanka will:"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Delete the manifests that were previously exported by the environments that are being exported. This is done by looking at the ",Object(i.b)("inlineCode",{parentName:"li"},"manifest.json")," file that is generated by Tanka when exporting. The related entries are also removed from the ",Object(i.b)("inlineCode",{parentName:"li"},"manifest.json")," file."),Object(i.b)("li",{parentName:"ol"},"Generate the manifests for the targeted environments into the output directory."),Object(i.b)("li",{parentName:"ol"},"Add in the new manifests entries into the ",Object(i.b)("inlineCode",{parentName:"li"},"manifest.json")," file and re-export it.")),Object(i.b)("h4",{id:"finding-out-which-environments-to-export"},"Finding out which environments to export"),Object(i.b)("p",null,"Tanka provides the ",Object(i.b)("inlineCode",{parentName:"p"},"tk tool importers")," command to figure out which ",Object(i.b)("inlineCode",{parentName:"p"},"main.jsonnet")," need to be re-exported based on what files were modified in a workspace."),Object(i.b)("p",null,"If, for example, the ",Object(i.b)("inlineCode",{parentName:"p"},"lib/my-lib/main.libsonnet")," file was modified, you could run the command like this to find which files to export:"),Object(i.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"console"},Object(i.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},"# Find out which envs to re-export"),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},"$ tk tool importers lib/my-lib/main.libsonnet"),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},"my-repo-path/jsonnet/environments/my-env/main.jsonnet"),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"}),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},"# Re-export the envs"),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},"$ tk export myoutputdir my-repo-path/jsonnet/environments/my-env/main.jsonnet --merge-strategy=replace-envs"))),Object(i.b)("p",null,"Note that deleted environments need special consideration when doing this.\nThe ",Object(i.b)("inlineCode",{parentName:"p"},"tk tool importers")," utility only works with existing files so deleting an environment will result in stale ",Object(i.b)("inlineCode",{parentName:"p"},"manifest.json")," entries and moving an environment will result in manifest conflicts.\nIn order to correctly handle deleted environments, they need to be passed to the export command:"),Object(i.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"console"},Object(i.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},"$ tk export myoutputdir my-repo-path/jsonnet/environments/my-new-env-path/main.jsonnet --merge-strategy=replace-envs \\"),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"}," --merge-deleted-envs my-repo-path/jsonnet/environments/my-old-env-path/main.jsonnet \\"),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"}," --merge-deleted-envs my-repo-path/jsonnet/environments/other-deleted-env-path/main.jsonnet"))),Object(i.b)("h3",{id:"using-a-memory-ballast"},"Using a memory ballast"),Object(i.b)("p",null,Object(i.b)("em",{parentName:"p"},"Read ",Object(i.b)("a",{parentName:"em",href:"https://blog.twitch.tv/en/2019/04/10/go-memory-ballast-how-i-learnt-to-stop-worrying-and-love-the-heap/"},"this blog post")," for more information about memory ballasts.")),Object(i.b)("p",null,"For large environments that load lots of data into memory on evaluation, a memory ballast can dramatically improve performance. This feature is exposed through the ",Object(i.b)("inlineCode",{parentName:"p"},"--mem-ballast-size-bytes")," flag on the export command."),Object(i.b)("p",null,"Anecdotally (Grafana Labs), environments that took around a minute to load were able to load in around 45 secs with a ballast of 5GB (",Object(i.b)("inlineCode",{parentName:"p"},"--mem-ballast-size-bytes=5368709120"),"). Decreasing the ballast size resulted in negative impact on performance, and increasing it more did not result in any noticeable impact."),Object(i.b)("h3",{id:"caching"},"Caching"),Object(i.b)("p",null,"Tanka can also cache the results of the export. This is useful if you often export the same files and want to avoid recomputing them. The cache key is calculated from the main file and all of its transitive imports, so any change to any file possibly used in an environment will invalidate the cache."),Object(i.b)("p",null,"This is configured by two flags:"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("inlineCode",{parentName:"li"},"--cache-path"),": The local filesystem path where the cache will be stored. The cache is a flat directory of json files (one per environment)."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("inlineCode",{parentName:"li"},"--cache-envs"),": If exporting multiple environments, this flag can be used to specify, with regexes, which environments to cache. If not specified, all environments are cached.")),Object(i.b)("p",null,"Notes:"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Using the cache might be slower than evaluating jsonnet directy. It is only recommended for environments that are very CPU intensive to evaluate."),Object(i.b)("li",{parentName:"ul"},"To use object storage, you can point the ",Object(i.b)("inlineCode",{parentName:"li"},"--cache-path")," to a FUSE mount, such as ",Object(i.b)("a",{parentName:"li",href:"https://github.com/s3fs-fuse/s3fs-fuse"},Object(i.b)("inlineCode",{parentName:"a"},"s3fs")))),Object(i.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==p&&p&&p===Object(p)&&Object.isExtensible(p)&&!Object.prototype.hasOwnProperty.call(p,"__filemeta")&&Object.defineProperty(p,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/exporting.md"}}),p.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-exporting-md-e8c97f5d64e97c22ef1e.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-exporting-md-e8c97f5d64e97c22ef1e.js.map b/pr-preview/pr-1029/component---docs-exporting-md-e8c97f5d64e97c22ef1e.js.map deleted file mode 100644 index 63f065022..000000000 --- a/pr-preview/pr-1029/component---docs-exporting-md-e8c97f5d64e97c22ef1e.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/exporting.md"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","isMDXComponent"],"mappings":"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","file":"component---docs-exporting-md-e8c97f5d64e97c22ef1e.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`Exporting as YAML`}

      \n

      {`Tanka provides you with a day-to-day workflow for working with Kubernetes clusters:`}

      \n
        \n
      • {`tk show`}{` for quickly checking the YAML representation looks good`}
      • \n
      • {`tk diff`}{` to ensure your changes will behave like they should`}
      • \n
      • {`tk apply`}{` makes it happen`}
      • \n
      \n

      {`However sometimes it can be required to integrate with other tooling that does\nonly support `}{`.yaml`}{` files.`}

      \n

      {`For that case, `}{`tk export`}{` can be used:`}

      \n
      {`#            `}{`\n`}{`$ tk `}{`export`}{` promtail/   environments/promtail`}
      \n
      \n

      {`Note:`}{` The arguments flipped in v0.14.0, the `}{``}{` comes first now.`}

      \n
      \n

      {`This will create a separate `}{`.yaml`}{` file for each Kubernetes resource included in your Jsonnet.`}

      \n

      {`Filenames`}

      \n

      {`Tanka by default uses the following pattern:`}

      \n
      {`\\${`}{`apiVersion`}{`}`}{`.`}{`\\${`}{`kind`}{`}`}{`-`}{`\\${`}{`metadata.name`}{`}`}{`.yaml`}{`\n`}{`\n`}{`# examples:`}{`\n`}{`apps-v1.Deployment-distributor.yaml`}{`\n`}{`v1.ConfigMap-loki.yaml`}{`\n`}{`v1.Service-ingester.yaml`}
      \n

      {`If that does not fit your need, you can provide your own pattern using the `}{`--format`}{` flag:`}

      \n
      {`tk `}{`export`}{` promtail environments/promtail --format=`}{`'`}{`{{.metadata.labels.app}}-{{.metadata.name}}-{{.kind}}`}{`'`}
      \n
      \n

      {`The syntax is Go `}{`text/template`}{`. See `}{`https://pkg.go.dev/text/template`}{`\nfor reference.`}

      \n
      \n

      {`This would include the label named `}{`app`}{`, the `}{`name`}{` and `}{`kind`}{` of the resource:`}

      \n
      {`loki-distributor-Deployment`}{`\n`}{`loki-loki-ConfigMap`}{`\n`}{`loki-ingester-Service`}
      \n

      {`You can optionally use the template function `}{`lower`}{` for lower-casing fields, e.g. in the above example`}

      \n
      {`... --format=`}{`'`}{`{{.metadata.labels.app}}-{{.metadata.name}}-{{.kind | lower}}`}{`'`}
      \n

      {`would yield`}

      \n
      {`loki-distributor-deployment`}
      \n

      {`etc.`}

      \n

      {`You can also use a different file extension by providing `}{`--extension='yml'`}{`, for example.`}

      \n

      {`Multiple environments`}

      \n

      {`Tanka can also export multiple inline environments, as showcased in `}{`Use case: consistent inline\nenvironments`}{`. This follows the same\nprinciples as describe before with the addition that you can also refer to Environment specific data through the `}{`env`}{`\nkeyword.`}

      \n

      {`For example an export might refer to data from the Environment spec:`}

      \n
      {`# Format based on environment {{env.<...>}}`}{`\n`}{`$ tk `}{`export`}{` exportDir environments/dev/ \\\\`}{`\n`}{`  --format `}{`'`}{`{{env.metadata.labels.cluster}}/{{env.spec.namespace}}//{{.kind}}-{{.metadata.name}}`}{`'`}
      \n

      {`Even more advanced use cases allow you to export multiple environments in a single execution:`}

      \n
      {`# Export multiple environments`}{`\n`}{`$ tk `}{`export`}{` exportDir environments/dev/ environments/qa/`}{`\n`}{`# Recursive export`}{`\n`}{`$ tk `}{`export`}{` exportDir environments/ --recursive`}{`\n`}{`# Recursive export with labelSelector`}{`\n`}{`$ tk `}{`export`}{` exportDir environments/ -r -l team=infra`}
      \n

      {`Performance features`}

      \n

      {`When exporting a large amount of environments, jsonnet evaluation can become a bottleneck. To speed up the process, Tanka provides a few optional features.`}

      \n

      {`Partial export (in a GitOps context)`}

      \n

      {`Given multiple environments, one may want to only export the environments that were modified since the last export. This is enabled by passing both the `}{`--merge-strategy=replace-envs`}{` flags.`}

      \n

      {`When these flags are passed, Tanka will:`}

      \n
        \n
      1. {`Delete the manifests that were previously exported by the environments that are being exported. This is done by looking at the `}{`manifest.json`}{` file that is generated by Tanka when exporting. The related entries are also removed from the `}{`manifest.json`}{` file.`}
      2. \n
      3. {`Generate the manifests for the targeted environments into the output directory.`}
      4. \n
      5. {`Add in the new manifests entries into the `}{`manifest.json`}{` file and re-export it.`}
      6. \n
      \n

      {`Finding out which environments to export`}

      \n

      {`Tanka provides the `}{`tk tool importers`}{` command to figure out which `}{`main.jsonnet`}{` need to be re-exported based on what files were modified in a workspace.`}

      \n

      {`If, for example, the `}{`lib/my-lib/main.libsonnet`}{` file was modified, you could run the command like this to find which files to export:`}

      \n
      {`# Find out which envs to re-export`}{`\n`}{`$ tk tool importers lib/my-lib/main.libsonnet`}{`\n`}{`my-repo-path/jsonnet/environments/my-env/main.jsonnet`}{`\n`}{`\n`}{`# Re-export the envs`}{`\n`}{`$ tk export myoutputdir my-repo-path/jsonnet/environments/my-env/main.jsonnet --merge-strategy=replace-envs`}
      \n

      {`Note that deleted environments need special consideration when doing this.\nThe `}{`tk tool importers`}{` utility only works with existing files so deleting an environment will result in stale `}{`manifest.json`}{` entries and moving an environment will result in manifest conflicts.\nIn order to correctly handle deleted environments, they need to be passed to the export command:`}

      \n
      {`$ tk export myoutputdir my-repo-path/jsonnet/environments/my-new-env-path/main.jsonnet --merge-strategy=replace-envs \\\\`}{`\n`}{`  --merge-deleted-envs my-repo-path/jsonnet/environments/my-old-env-path/main.jsonnet \\\\`}{`\n`}{`  --merge-deleted-envs my-repo-path/jsonnet/environments/other-deleted-env-path/main.jsonnet`}
      \n

      {`Using a memory ballast`}

      \n

      {`Read `}{`this blog post`}{` for more information about memory ballasts.`}

      \n

      {`For large environments that load lots of data into memory on evaluation, a memory ballast can dramatically improve performance. This feature is exposed through the `}{`--mem-ballast-size-bytes`}{` flag on the export command.`}

      \n

      {`Anecdotally (Grafana Labs), environments that took around a minute to load were able to load in around 45 secs with a ballast of 5GB (`}{`--mem-ballast-size-bytes=5368709120`}{`). Decreasing the ballast size resulted in negative impact on performance, and increasing it more did not result in any noticeable impact.`}

      \n

      {`Caching`}

      \n

      {`Tanka can also cache the results of the export. This is useful if you often export the same files and want to avoid recomputing them. The cache key is calculated from the main file and all of its transitive imports, so any change to any file possibly used in an environment will invalidate the cache.`}

      \n

      {`This is configured by two flags:`}

      \n
        \n
      • {`--cache-path`}{`: The local filesystem path where the cache will be stored. The cache is a flat directory of json files (one per environment).`}
      • \n
      • {`--cache-envs`}{`: If exporting multiple environments, this flag can be used to specify, with regexes, which environments to cache. If not specified, all environments are cached.`}
      • \n
      \n

      {`Notes:`}

      \n
        \n
      • {`Using the cache might be slower than evaluating jsonnet directy. It is only recommended for environments that are very CPU intensive to evaluate.`}
      • \n
      • {`To use object storage, you can point the `}{`--cache-path`}{` to a FUSE mount, such as `}{`s3fs`}
      • \n
      \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-faq-md-5e30ff990ba5de27e68d.js b/pr-preview/pr-1029/component---docs-faq-md-5e30ff990ba5de27e68d.js deleted file mode 100644 index 159e4ceb0..000000000 --- a/pr-preview/pr-1029/component---docs-faq-md-5e30ff990ba5de27e68d.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{RGCZ:function(e,t,n){"use strict";n.r(t),n.d(t,"_frontmatter",(function(){return l})),n.d(t,"default",(function(){return p}));var a=n("wx14"),o=n("Ff2n"),i=(n("q1tI"),n("7ljp")),r=n("hhGP");n("qKvR");const s=["components"],l={};void 0!==l&&l&&l===Object(l)&&Object.isExtensible(l)&&!Object.prototype.hasOwnProperty.call(l,"__filemeta")&&Object.defineProperty(l,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/faq.md"}});const b={_frontmatter:l},c=r.a;function p(e){let{components:t}=e,n=Object(o.a)(e,s);return Object(i.b)(c,Object(a.a)({},b,n,{components:t,mdxType:"MDXLayout"}),Object(i.b)("h1",{id:"frequently-asked-questions"},"Frequently asked questions"),Object(i.b)("h2",{id:"what-is-jsonnet"},"What is Jsonnet?"),Object(i.b)("p",null,"Jsonnet is a data templating language, originally created by Google."),Object(i.b)("p",null,"It is a superset of JSON, which adds common structures from full programming\nlanguages to data modeling. Because it being a superset of JSON and ultimately\nalways compiling to JSON, it is guaranteed that the output will be valid JSON\n(or YAML)."),Object(i.b)("p",null,"By allowing ",Object(i.b)("em",{parentName:"p"},"functions")," and ",Object(i.b)("em",{parentName:"p"},"imports"),", rich abstraction is possible, even across\nproject boundaries."),Object(i.b)("p",null,"For more, refer to the official documentation: ",Object(i.b)("a",{parentName:"p",href:"https://jsonnet.org/"},"https://jsonnet.org/")),Object(i.b)("h2",{id:"how-is-this-different-from-ksonnet"},"How is this different from ksonnet?"),Object(i.b)("p",null,"Tanka aims to be a fully compatible, drop-in replacement for the main workflow\nof ",Object(i.b)("inlineCode",{parentName:"p"},"ksonnet")," (",Object(i.b)("inlineCode",{parentName:"p"},"show"),", ",Object(i.b)("inlineCode",{parentName:"p"},"diff"),", ",Object(i.b)("inlineCode",{parentName:"p"},"apply"),")."),Object(i.b)("p",null,"In general, both tools are very similar when it comes to how they handle Jsonnet\nand apply to a Kubernetes cluster."),Object(i.b)("p",null,"However, ",Object(i.b)("inlineCode",{parentName:"p"},"ksonnet")," included a rich code generator for establishing a CLI based\nworkflow for editing Kubernetes objects. It also used to manage dependencies\nitself and had a lot of concepts for different levels of abstractions. When\ndesigning Tanka, we felt these add more complexity for the user than they\nprovide additional value. To keep Tanka as minimal as possible, these are ",Object(i.b)("strong",{parentName:"p"},"not\navailable")," and are not likely to be ever added."),Object(i.b)("h2",{id:"what-about-kubecfg-"},"What about kubecfg ?"),Object(i.b)("p",null,"Tanka development has started at the time when kubecfg was a part of\nalready-deprecated ",Object(i.b)("inlineCode",{parentName:"p"},"ksonnet")," project. Although these projects are similar, Tanka\naims to provide continuity for ",Object(i.b)("inlineCode",{parentName:"p"},"ksonnet")," users, whereas ",Object(i.b)("inlineCode",{parentName:"p"},"kubecfg")," is (according\nto the project's ",Object(i.b)("a",{parentName:"p",href:"https://github.com/vmware-archive/kubecfg/blob/main/README.md"},"README.md"),")\nreally just a thin Kubernetes-specific wrapper around jsonnet evaluation."),Object(i.b)("h2",{id:"why-not-helm"},"Why not Helm?"),Object(i.b)("p",null,"Helm relies heavily on ",Object(i.b)("em",{parentName:"p"},"string templating")," ",Object(i.b)("inlineCode",{parentName:"p"},".yaml")," files. We feel this is the\nwrong way to approach the absence of abstractions inside of ",Object(i.b)("inlineCode",{parentName:"p"},"yaml"),", because the\ntemplating part of the application has no idea of the structure and syntax of\nyaml."),Object(i.b)("p",null,"This makes debugging very hard. Furthermore, ",Object(i.b)("inlineCode",{parentName:"p"},"helm")," is not able to provide an\nadequate solution for edge cases. If I wanted to set some parameters that are\nnot already implemented by the Chart, I have no choice but to modify the Chart\nfirst."),Object(i.b)("p",null,"Jsonnet on the other hand got you covered by supporting mixing (patching,\ndeep-merging) objects on top of the libraries output if required."))}void 0!==p&&p&&p===Object(p)&&Object.isExtensible(p)&&!Object.prototype.hasOwnProperty.call(p,"__filemeta")&&Object.defineProperty(p,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/faq.md"}}),p.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-faq-md-5e30ff990ba5de27e68d.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-faq-md-5e30ff990ba5de27e68d.js.map b/pr-preview/pr-1029/component---docs-faq-md-5e30ff990ba5de27e68d.js.map deleted file mode 100644 index a143ac748..000000000 --- a/pr-preview/pr-1029/component---docs-faq-md-5e30ff990ba5de27e68d.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/faq.md"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","isMDXComponent"],"mappings":"wRAMaA,EAAe,QAAG,IAAAA,UAAAC,OAAAD,IAAAC,OAAAC,aAAAF,KAAAC,OAAAE,UAAAC,eAAAC,KAAAL,EAAA,eAAAC,OAAAK,eAAAN,EAAA,cAAAO,cAAA,EAAAC,MAAA,CAAAC,KAAA,eAAAC,SAAA,iBAC/B,MAAMC,EAAc,CAClBX,gBAEIY,EAAYC,IACH,SAASC,EAAUC,GAG/B,IAHgC,WACjCC,GAEDD,EADIE,EAAKC,YAAAH,EAAAI,GAER,OAAOC,YAACR,EAASS,YAAA,GAAKV,EAAiBM,EAAK,CAAED,WAAYA,EAAYM,QAAQ,cAG5EF,YAAA,MACE,GAAM,8BAA4B,8BAEpCA,YAAA,MACE,GAAM,mBAAiB,oBAEzBA,YAAA,iFACAA,YAAA,oQAIAA,YAAA,wBAAmBA,YAAA,MAAIG,WAAW,KAAG,aAAmB,QAASH,YAAA,MAAIG,WAAW,KAAG,WAAiB,oEAEpGH,YAAA,2DAAsDA,YAAA,KAAGG,WAAW,IAChE,KAAQ,wBAAsB,yBAElCH,YAAA,MACE,GAAM,sCAAoC,uCAE5CA,YAAA,+FACCA,YAAA,cAAYG,WAAW,KAAG,WAAyB,KAAMH,YAAA,cAAYG,WAAW,KAAG,QAAsB,KAAMH,YAAA,cAAYG,WAAW,KAAG,QAAsB,KAAMH,YAAA,cAAYG,WAAW,KAAG,SAAuB,MACvNH,YAAA,iIAEAA,YAAA,qBAAgBA,YAAA,cAAYG,WAAW,KAAG,WAAyB,iXAIKH,YAAA,UAAQG,WAAW,KAAG,kBAC9E,yCAChBH,YAAA,MACE,GAAM,uBAAqB,wBAE7BA,YAAA,qGACiBA,YAAA,cAAYG,WAAW,KAAG,WAAyB,wFACvCH,YAAA,cAAYG,WAAW,KAAG,WAAyB,mBAAoBH,YAAA,cAAYG,WAAW,KAAG,WAAyB,oCACxIH,YAAA,KAAGG,WAAW,IACzB,KAAQ,iEAA+D,aACrD,gFAEtBH,YAAA,MACE,GAAM,gBAAc,iBAEtBA,YAAA,mCAA8BA,YAAA,MAAIG,WAAW,KAAG,qBAA2B,IAAKH,YAAA,cAAYG,WAAW,KAAG,SAAuB,4FACvEH,YAAA,cAAYG,WAAW,KAAG,QAAsB,uGAG1GH,YAAA,yDAAoDA,YAAA,cAAYG,WAAW,KAAG,QAAsB,qMAIpGH,YAAA,+JAIH,IAAAN,UAAAb,OAAAa,IAAAb,OAAAC,aAAAY,KAAAb,OAAAE,UAAAC,eAAAC,KAAAS,EAAA,eAAAb,OAAAK,eAAAQ,EAAA,cAAAP,cAAA,EAAAC,MAAA,CAAAC,KAAA,aAAAC,SAAA,iBAEDI,EAAWU,gBAAiB","file":"component---docs-faq-md-5e30ff990ba5de27e68d.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`Frequently asked questions`}

      \n

      {`What is Jsonnet?`}

      \n

      {`Jsonnet is a data templating language, originally created by Google.`}

      \n

      {`It is a superset of JSON, which adds common structures from full programming\nlanguages to data modeling. Because it being a superset of JSON and ultimately\nalways compiling to JSON, it is guaranteed that the output will be valid JSON\n(or YAML).`}

      \n

      {`By allowing `}{`functions`}{` and `}{`imports`}{`, rich abstraction is possible, even across\nproject boundaries.`}

      \n

      {`For more, refer to the official documentation: `}{`https://jsonnet.org/`}

      \n

      {`How is this different from ksonnet?`}

      \n

      {`Tanka aims to be a fully compatible, drop-in replacement for the main workflow\nof `}{`ksonnet`}{` (`}{`show`}{`, `}{`diff`}{`, `}{`apply`}{`).`}

      \n

      {`In general, both tools are very similar when it comes to how they handle Jsonnet\nand apply to a Kubernetes cluster.`}

      \n

      {`However, `}{`ksonnet`}{` included a rich code generator for establishing a CLI based\nworkflow for editing Kubernetes objects. It also used to manage dependencies\nitself and had a lot of concepts for different levels of abstractions. When\ndesigning Tanka, we felt these add more complexity for the user than they\nprovide additional value. To keep Tanka as minimal as possible, these are `}{`not\navailable`}{` and are not likely to be ever added.`}

      \n

      {`What about kubecfg ?`}

      \n

      {`Tanka development has started at the time when kubecfg was a part of\nalready-deprecated `}{`ksonnet`}{` project. Although these projects are similar, Tanka\naims to provide continuity for `}{`ksonnet`}{` users, whereas `}{`kubecfg`}{` is (according\nto the project's `}{`README.md`}{`)\nreally just a thin Kubernetes-specific wrapper around jsonnet evaluation.`}

      \n

      {`Why not Helm?`}

      \n

      {`Helm relies heavily on `}{`string templating`}{` `}{`.yaml`}{` files. We feel this is the\nwrong way to approach the absence of abstractions inside of `}{`yaml`}{`, because the\ntemplating part of the application has no idea of the structure and syntax of\nyaml.`}

      \n

      {`This makes debugging very hard. Furthermore, `}{`helm`}{` is not able to provide an\nadequate solution for edge cases. If I wanted to set some parameters that are\nnot already implemented by the Chart, I have no choice but to modify the Chart\nfirst.`}

      \n

      {`Jsonnet on the other hand got you covered by supporting mixing (patching,\ndeep-merging) objects on top of the libraries output if required.`}

      \n\n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-formatting-md-0886509974e2523e2e68.js b/pr-preview/pr-1029/component---docs-formatting-md-0886509974e2523e2e68.js deleted file mode 100644 index a78b145d5..000000000 --- a/pr-preview/pr-1029/component---docs-formatting-md-0886509974e2523e2e68.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{zzAL:function(e,t,a){"use strict";a.r(t),a.d(t,"_frontmatter",(function(){return l})),a.d(t,"default",(function(){return p}));var n=a("wx14"),m=a("Ff2n"),r=(a("q1tI"),a("7ljp")),s=a("hhGP");a("qKvR");const c=["components"],l={};void 0!==l&&l&&l===Object(l)&&Object.isExtensible(l)&&!Object.prototype.hasOwnProperty.call(l,"__filemeta")&&Object.defineProperty(l,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/formatting.md"}});const o={_frontmatter:l},i=s.a;function p(e){let{components:t}=e,a=Object(m.a)(e,c);return Object(r.b)(i,Object(n.a)({},o,a,{components:t,mdxType:"MDXLayout"}),Object(r.b)("h1",{id:"file-formatting"},"File Formatting"),Object(r.b)("p",null,"Tanka supports formatting for all ",Object(r.b)("inlineCode",{parentName:"p"},"jsonnet")," and ",Object(r.b)("inlineCode",{parentName:"p"},"libsonnet")," files using the ",Object(r.b)("inlineCode",{parentName:"p"},"tk fmt")," command."),Object(r.b)("p",null,"By default, the command excludes all ",Object(r.b)("inlineCode",{parentName:"p"},"vendor")," directories."),Object(r.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(r.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(r.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(r.b)("span",{parentName:"span",className:"mtk3 mtki"},"# Run for current and child directories. Run this in the root of the project to format all your files.")),"\n",Object(r.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(r.b)("span",{parentName:"span",className:"mtk1"},"tk fmt "),Object(r.b)("span",{parentName:"span",className:"mtk9"},".")),"\n",Object(r.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(r.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(r.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(r.b)("span",{parentName:"span",className:"mtk3 mtki"},"# Format a single file (myFile.jsonnet)")),"\n",Object(r.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(r.b)("span",{parentName:"span",className:"mtk1"},"tk fmt myFile.jsonnet")),"\n",Object(r.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(r.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(r.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(r.b)("span",{parentName:"span",className:"mtk3 mtki"},"# Use the `-t` tag to test (Dry run).")),"\n",Object(r.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(r.b)("span",{parentName:"span",className:"mtk1"},"tk fmt -t myFile.jsonnet")),"\n",Object(r.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(r.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(r.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(r.b)("span",{parentName:"span",className:"mtk3 mtki"},"# Format using verbose mode.")),"\n",Object(r.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(r.b)("span",{parentName:"span",className:"mtk1"},"tk fmt -v "),Object(r.b)("span",{parentName:"span",className:"mtk9"},".")))),Object(r.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==p&&p&&p===Object(p)&&Object.isExtensible(p)&&!Object.prototype.hasOwnProperty.call(p,"__filemeta")&&Object.defineProperty(p,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/formatting.md"}}),p.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-formatting-md-0886509974e2523e2e68.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-formatting-md-0886509974e2523e2e68.js.map b/pr-preview/pr-1029/component---docs-formatting-md-0886509974e2523e2e68.js.map deleted file mode 100644 index 9e7e7d940..000000000 --- a/pr-preview/pr-1029/component---docs-formatting-md-0886509974e2523e2e68.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/formatting.md"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","isMDXComponent"],"mappings":"yRAMaA,EAAe,QAAG,IAAAA,UAAAC,OAAAD,IAAAC,OAAAC,aAAAF,KAAAC,OAAAE,UAAAC,eAAAC,KAAAL,EAAA,eAAAC,OAAAK,eAAAN,EAAA,cAAAO,cAAA,EAAAC,MAAA,CAAAC,KAAA,eAAAC,SAAA,wBAC/B,MAAMC,EAAc,CAClBX,gBAEIY,EAAYC,IACH,SAASC,EAAUC,GAG/B,IAHgC,WACjCC,GAEDD,EADIE,EAAKC,YAAAH,EAAAI,GAER,OAAOC,YAACR,EAASS,YAAA,GAAKV,EAAiBM,EAAK,CAAED,WAAYA,EAAYM,QAAQ,cAG5EF,YAAA,MACE,GAAM,mBAAiB,mBAEzBA,YAAA,8CAAyCA,YAAA,cAAYG,WAAW,KAAG,WAAyB,QAASH,YAAA,cAAYG,WAAW,KAAG,aAA2B,oBAAqBH,YAAA,cAAYG,WAAW,KAAG,UAAwB,aACjOH,YAAA,iDAA4CA,YAAA,cAAYG,WAAW,KAAG,UAAwB,iBAC9FH,YAAA,OACE,UAAa,yCACb,gBAAiB,QAChBA,YAAA,QAAMG,WAAW,MAChB,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,aAAW,2GACiG,KACnIH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,WACAH,YAAA,QAAMG,WAAW,OACpC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,UACE,KACzBH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,aAAW,4CACkC,KACpEH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,0BACqB,KAClDH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,UACE,KACzBH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,aAAW,0CACkC,KACpEH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,6BACwB,KACrDH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,UACE,KACzBH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,aAAW,iCACuB,KACzDH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,cACGH,YAAA,QAAMG,WAAW,OACvC,UAAa,QAAM,QAG3BH,YAAA,SACE,UAAa,2BAAyB,glCA6B3C,IAAAN,UAAAb,OAAAa,IAAAb,OAAAC,aAAAY,KAAAb,OAAAE,UAAAC,eAAAC,KAAAS,EAAA,eAAAb,OAAAK,eAAAQ,EAAA,cAAAP,cAAA,EAAAC,MAAA,CAAAC,KAAA,aAAAC,SAAA,wBAEDI,EAAWU,gBAAiB","file":"component---docs-formatting-md-0886509974e2523e2e68.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`File Formatting`}

      \n

      {`Tanka supports formatting for all `}{`jsonnet`}{` and `}{`libsonnet`}{` files using the `}{`tk fmt`}{` command.`}

      \n

      {`By default, the command excludes all `}{`vendor`}{` directories.`}

      \n
      {`# Run for current and child directories. Run this in the root of the project to format all your files.`}{`\n`}{`tk fmt `}{`.`}{`\n`}{`\n`}{`# Format a single file (myFile.jsonnet)`}{`\n`}{`tk fmt myFile.jsonnet`}{`\n`}{`\n`}{`# Use the \\`-t\\` tag to test (Dry run).`}{`\n`}{`tk fmt -t myFile.jsonnet`}{`\n`}{`\n`}{`# Format using verbose mode.`}{`\n`}{`tk fmt -v `}{`.`}
      \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-garbage-collection-md-9e3ddba81e297bbaee58.js b/pr-preview/pr-1029/component---docs-garbage-collection-md-9e3ddba81e297bbaee58.js deleted file mode 100644 index 7b9a0a9af..000000000 --- a/pr-preview/pr-1029/component---docs-garbage-collection-md-9e3ddba81e297bbaee58.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{GAVx:function(e,t,a){"use strict";a.r(t),a.d(t,"_frontmatter",(function(){return m})),a.d(t,"default",(function(){return b}));var n=a("wx14"),r=a("Ff2n"),o=(a("q1tI"),a("7ljp")),l=a("hhGP");a("qKvR");const c=["components"],m={};void 0!==m&&m&&m===Object(m)&&Object.isExtensible(m)&&!Object.prototype.hasOwnProperty.call(m,"__filemeta")&&Object.defineProperty(m,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/garbage-collection.md"}});const i={_frontmatter:m},s=l.a;function b(e){let{components:t}=e,a=Object(r.a)(e,c);return Object(o.b)(s,Object(n.a)({},i,a,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h1",{id:"garbage-collection"},"Garbage collection"),Object(o.b)("p",null,"Tanka can automatically delete resources from your cluster once you remove them\nfrom Jsonnet."),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},Object(o.b)("strong",{parentName:"p"},"Note:")," This feature is ",Object(o.b)("strong",{parentName:"p"},"experimental"),". Please report problems at ",Object(o.b)("a",{parentName:"p",href:"https://github.com/grafana/tanka/issues"},"https://github.com/grafana/tanka/issues"),".")),Object(o.b)("p",null,"To accomplish this, it appends the ",Object(o.b)("inlineCode",{parentName:"p"},"tanka.dev/environment: ")," label to each created\nresource. This is used to identify those which are missing from the local state in the\nfuture."),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},Object(o.b)("strong",{parentName:"p"},"Note:")," The label value changed from the ",Object(o.b)("inlineCode",{parentName:"p"},"")," to a ",Object(o.b)("inlineCode",{parentName:"p"},"")," in v0.15.0.")),Object(o.b)("p",null,"Because the label causes a ",Object(o.b)("inlineCode",{parentName:"p"},"diff")," for every single object in your cluster and\nnot everybody wants this, it needs to be explicitly enabled. To do so, add the\nfollowing field to your ",Object(o.b)("inlineCode",{parentName:"p"},"spec.json"),":"),Object(o.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"diff"},Object(o.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(o.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(o.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(o.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(o.b)("span",{parentName:"span",className:"mtk1"},' "spec": {')),"\n",Object(o.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(o.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(o.b)("span",{parentName:"span",className:"mtk6"},' "injectLabels": true,')),"\n",Object(o.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(o.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(o.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(o.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(o.b)("p",null,"Once added, run a ",Object(o.b)("inlineCode",{parentName:"p"},"tk apply"),", make sure the label is actually added and confirm\nby typing ",Object(o.b)("inlineCode",{parentName:"p"},"yes"),"."),Object(o.b)("p",null,"From now on, you can use ",Object(o.b)("inlineCode",{parentName:"p"},"tk prune")," to remove old resources from your cluster."),Object(o.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==b&&b&&b===Object(b)&&Object.isExtensible(b)&&!Object.prototype.hasOwnProperty.call(b,"__filemeta")&&Object.defineProperty(b,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/garbage-collection.md"}}),b.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-garbage-collection-md-9e3ddba81e297bbaee58.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-garbage-collection-md-9e3ddba81e297bbaee58.js.map b/pr-preview/pr-1029/component---docs-garbage-collection-md-9e3ddba81e297bbaee58.js.map deleted file mode 100644 index dc3bd06a3..000000000 --- a/pr-preview/pr-1029/component---docs-garbage-collection-md-9e3ddba81e297bbaee58.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/garbage-collection.md"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","isMDXComponent"],"mappings":"yRAMaA,EAAe,QAAG,IAAAA,UAAAC,OAAAD,IAAAC,OAAAC,aAAAF,KAAAC,OAAAE,UAAAC,eAAAC,KAAAL,EAAA,eAAAC,OAAAK,eAAAN,EAAA,cAAAO,cAAA,EAAAC,MAAA,CAAAC,KAAA,eAAAC,SAAA,gCAC/B,MAAMC,EAAc,CAClBX,gBAEIY,EAAYC,IACH,SAASC,EAAUC,GAG/B,IAHgC,WACjCC,GAEDD,EADIE,EAAKC,YAAAH,EAAAI,GAER,OAAOC,YAACR,EAASS,YAAA,GAAKV,EAAiBM,EAAK,CAAED,WAAYA,EAAYM,QAAQ,cAG5EF,YAAA,MACE,GAAM,sBAAoB,sBAE5BA,YAAA,2GAEAA,YAAA,kBACEA,YAAA,KAAGG,WAAW,cAAaH,YAAA,UAAQG,WAAW,KAAG,SAAmB,oBAAqBH,YAAA,UAAQG,WAAW,KAAG,gBAA0B,+BAAgCH,YAAA,KAAGG,WAAW,IACnL,KAAQ,2CAAyC,2CACD,MAEtDH,YAAA,+CAA0CA,YAAA,cAAYG,WAAW,KAAG,iCAA+C,2HAGnHH,YAAA,kBACEA,YAAA,KAAGG,WAAW,cAAaH,YAAA,UAAQG,WAAW,KAAG,SAAmB,qCAAsCH,YAAA,cAAYG,WAAW,KAAG,UAAwB,SAAUH,YAAA,cAAYG,WAAW,KAAG,UAAwB,iBAE1NH,YAAA,uCAAkCA,YAAA,cAAYG,WAAW,KAAG,QAAsB,yJAE5DH,YAAA,cAAYG,WAAW,KAAG,aAA2B,KAC3EH,YAAA,OACE,UAAa,yCACb,gBAAiB,QAChBA,YAAA,QAAMG,WAAW,MAChB,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,gBACW,KACxCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,8BACyB,KACtDH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,QACG,KAChCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,QAE3BH,YAAA,8BAAyBA,YAAA,cAAYG,WAAW,KAAG,YAA0B,kEACrEH,YAAA,cAAYG,WAAW,KAAG,OAAqB,KACvDH,YAAA,qCAAgCA,YAAA,cAAYG,WAAW,KAAG,YAA0B,+CAEpFH,YAAA,SACE,UAAa,2BAAyB,glCA6B3C,IAAAN,UAAAb,OAAAa,IAAAb,OAAAC,aAAAY,KAAAb,OAAAE,UAAAC,eAAAC,KAAAS,EAAA,eAAAb,OAAAK,eAAAQ,EAAA,cAAAP,cAAA,EAAAC,MAAA,CAAAC,KAAA,aAAAC,SAAA,gCAEDI,EAAWU,gBAAiB","file":"component---docs-garbage-collection-md-9e3ddba81e297bbaee58.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`Garbage collection`}

      \n

      {`Tanka can automatically delete resources from your cluster once you remove them\nfrom Jsonnet.`}

      \n
      \n

      {`Note:`}{` This feature is `}{`experimental`}{`. Please report problems at `}{`https://github.com/grafana/tanka/issues`}{`.`}

      \n
      \n

      {`To accomplish this, it appends the `}{`tanka.dev/environment: `}{` label to each created\nresource. This is used to identify those which are missing from the local state in the\nfuture.`}

      \n
      \n

      {`Note:`}{` The label value changed from the `}{``}{` to a `}{``}{` in v0.15.0.`}

      \n
      \n

      {`Because the label causes a `}{`diff`}{` for every single object in your cluster and\nnot everybody wants this, it needs to be explicitly enabled. To do so, add the\nfollowing field to your `}{`spec.json`}{`:`}

      \n
      {`{`}{`\n`}{`  \"spec\": {`}{`\n`}{`+`}{`    \"injectLabels\": true,`}{`\n`}{`  }`}{`\n`}{`}`}
      \n

      {`Once added, run a `}{`tk apply`}{`, make sure the label is actually added and confirm\nby typing `}{`yes`}{`.`}

      \n

      {`From now on, you can use `}{`tk prune`}{` to remove old resources from your cluster.`}

      \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-helm-mdx-4136d6f0aed36816861f.js b/pr-preview/pr-1029/component---docs-helm-mdx-4136d6f0aed36816861f.js deleted file mode 100644 index 477b70b51..000000000 --- a/pr-preview/pr-1029/component---docs-helm-mdx-4136d6f0aed36816861f.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{YJCz:function(e,a,t){"use strict";t.r(a),t.d(a,"_frontmatter",(function(){return l})),t.d(a,"default",(function(){return i}));var s=t("wx14"),n=t("Ff2n"),m=(t("q1tI"),t("7ljp")),c=t("hhGP");t("qKvR");const p=["components"],l={};void 0!==l&&l&&l===Object(l)&&Object.isExtensible(l)&&!Object.prototype.hasOwnProperty.call(l,"__filemeta")&&Object.defineProperty(l,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/helm.mdx"}});const b={_frontmatter:l},r=c.a;function i(e){let{components:a}=e,t=Object(n.a)(e,p);return Object(m.b)(r,Object(s.a)({},b,t,{components:a,mdxType:"MDXLayout"}),Object(m.b)("h1",{id:"helm-support"},"Helm Support"),Object(m.b)("p",null,"The ",Object(m.b)("a",{parentName:"p",href:"https://helm.sh"},"Helm")," project is the biggest ecosystem of high quality,\nwell maintained application definitions for Kubernetes."),Object(m.b)("p",null,"Even though Grafana Tanka uses the ",Object(m.b)("a",{parentName:"p",href:"/pr-preview/pr-1029/jsonnet/overview"},"Jsonnet language")," for\nresource definition, you can still consume Helm resources, as described below."),Object(m.b)("h2",{id:"consuming-helm-charts-from-jsonnet"},"Consuming Helm Charts from Jsonnet"),Object(m.b)("p",null,"Helm support is provided using the\n",Object(m.b)("a",{parentName:"p",href:"https://github.com/grafana/jsonnet-libs/tree/master/tanka-util"},Object(m.b)("inlineCode",{parentName:"a"},"github.com/grafana/jsonnet-libs/tanka-util")),"\nlibrary. Install it with:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"jb install github.com/grafana/jsonnet-libs/tanka-util")))),Object(m.b)("p",null,"The following example shows how to extract the individual resources of the\n",Object(m.b)("a",{parentName:"p",href:"https://artifacthub.io/packages/helm/grafana/grafana"},Object(m.b)("inlineCode",{parentName:"a"},"grafana"))," Helm Chart:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," tanka "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"import"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"github.com/grafana/jsonnet-libs/tanka-util/main.libsonnet"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},";")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," helm "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," tanka.helm."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"new"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk9"},"std.thisFile"),Object(m.b)("span",{parentName:"span",className:"mtk1"},");")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"grafana:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," helm."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"template"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"grafana"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},", "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"./charts/grafana"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},", {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," namespace: "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"monitoring"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," values: {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," persistence: { enabled: "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"true"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," })")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("p",null,"The Chart itself is required to be ",Object(m.b)("a",{parentName:"p",href:"#vendoring-helm-charts"},"vendored at a relative\npath"),", in this case ",Object(m.b)("inlineCode",{parentName:"p"},"./charts/grafana"),"."),Object(m.b)("blockquote",null,Object(m.b)("p",{parentName:"blockquote"},Object(m.b)("strong",{parentName:"p"},"Important:")," You MUST include the ",Object(m.b)("inlineCode",{parentName:"p"},".new(std.thisFile)")," part in the import.\nThis is what tells Tanka where you actually call ",Object(m.b)("inlineCode",{parentName:"p"},"helm.template()")," from, so it\ncan find your vendored Charts.")),Object(m.b)("br",null),Object(m.b)("p",null,"Once invoked, the ",Object(m.b)("inlineCode",{parentName:"p"},"$.grafana")," key holds the individual resources of Helm Chart as\na regular Jsonnet object that looks roughly like so:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"cluster_role_binding_grafana_clusterrolebinding:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {"),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"/* ... */"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"},")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"cluster_role_grafana_clusterrole:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {"),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"/* ... */"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"},")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"config_map_grafana:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {"),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"/* ... */"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"},")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"config_map_grafana_test:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {"),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"/* ... */"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"},")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"deployment_grafana:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {"),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"/* ... */"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"},")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// ...")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("p",null,"Above can be ",Object(m.b)("a",{parentName:"p",href:"/pr-preview/pr-1029/tutorial/environments#patching"},"manipulated")," in the same way as any other Jsonnet data."),Object(m.b)("p",null,"Under the hood, this feature invokes the\n",Object(m.b)("a",{parentName:"p",href:"https://helm.sh/docs/helm/helm_template/"},Object(m.b)("inlineCode",{parentName:"a"},"helm template"))," CLI command.\nThe following options control how the command is invoked:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"...")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"grafana:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," helm."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"template"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"grafana"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},", "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"./charts/grafana"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},", {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," namespace: "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"monitoring"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," values: {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," persistence: { enabled: "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"true"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// Equivalent to: --api-versions v1 --api-versions apps/v1")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," apiVersions: ["),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'v1'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},", "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'apps/v1'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"]")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// Equivalent to: --kube-version v1.20.0")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," kubeVersion: "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'v1.20.0'")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// Equivalent to: --no-hooks")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," noHooks: "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"true"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("p",null,"Tanka will install Custom Resource Definitions (CRDs) automatically, if the\nHelm Chart requires them and ships them in ",Object(m.b)("inlineCode",{parentName:"p"},"crds/"),". This is equivalent to ",Object(m.b)("inlineCode",{parentName:"p"},"helm\ntemplate --include-crds"),". This can be disabled using ",Object(m.b)("inlineCode",{parentName:"p"},"includeCrds: false"),":"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"grafana:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," helm."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"template"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"grafana"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},", "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"./charts/grafana"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},", {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," includeCrds: "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"false")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," })")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("h2",{id:"vendoring-helm-charts"},"Vendoring Helm Charts"),Object(m.b)("p",null,"Tanka, like Jsonnet, is hermetic. It ",Object(m.b)("strong",{parentName:"p"},"always yields the same\nresources")," when the project is\nstrictly self-contained."),Object(m.b)("p",null,"Helm however keeps Charts and repository configuration somewhere around\n",Object(m.b)("inlineCode",{parentName:"p"},"~/.config/helm"),", which violates above requirement."),Object(m.b)("p",null,"To comply with this requirement, Tanka expects Helm Charts to be found ",Object(m.b)("strong",{parentName:"p"},"inside the\nbounds of a project"),". This means, you MUST put your Charts ",Object(m.b)("strong",{parentName:"p"},"somewhere next to\nthe file that calls ",Object(m.b)("inlineCode",{parentName:"strong"},"helm.template()")),", so that it can be referred to using a\nrelative path."),Object(m.b)("h3",{id:"vendor-location"},"Vendor Location"),Object(m.b)("p",null,"Where to actually put them inside the project is up to you, but keep in mind you\nneed to refer to them using relative paths."),Object(m.b)("p",null,"We recommend always writing libraries that wrap the actual Helm Chart, so the\nconsumer does not need to be aware of it. Whether you put these into your local ",Object(m.b)("inlineCode",{parentName:"p"},"lib/")," directory or\npublish and vendor them into the ",Object(m.b)("inlineCode",{parentName:"p"},"vendor/")," directory is up to you."),Object(m.b)("p",null,"A library usually looks like this:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":""},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"}," /jsonnetfile.json"),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"}," /main.libsonnet"))),Object(m.b)("p",null,"When adopting Helm inside it, we recommend vendoring at the top level, as such:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"diff"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," /jsonnetfile.json")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," /main.libsonnet")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"}," /charts")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"}," /charts/")))),Object(m.b)("p",null,"This way, you can refer to the charts as ",Object(m.b)("inlineCode",{parentName:"p"},"./charts/")," from inside\n",Object(m.b)("inlineCode",{parentName:"p"},"main.libsonnet"),". By keeping the chart as close to the consumer as possible, the\nlibrary is kept portable."),Object(m.b)("h3",{id:"charttool"},"Charttool"),Object(m.b)("p",null,"Helm does not make vendoring incredibly easy by itself. ",Object(m.b)("inlineCode",{parentName:"p"},"helm pull")," provides the\nrequired plumbing, but it does not record its actions in a reproducible manner."),Object(m.b)("p",null,"Therefore, Tanka ships a special utility at ",Object(m.b)("inlineCode",{parentName:"p"},"tk tool charts"),", which automates\n",Object(m.b)("inlineCode",{parentName:"p"},"helm pull"),":"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# Create a chartfile.yaml in the current directory, e.g. in lib/myLibrary")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"$ tk tool charts init")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"$ "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# Install the MySQL chart at version 1.6.7 from the stable repository")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"$ tk tool charts add stable/mysql@1.6.7")))),Object(m.b)("p",null,Object(m.b)("strong",{parentName:"p"},"Adding charts:")," To add a chart, use the following:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"$ tk tool charts add "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"<"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"repo"),Object(m.b)("span",{parentName:"span",className:"mtk12"},">"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"/"),Object(m.b)("span",{parentName:"span",className:"mtk12"},"<"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk12"},">"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"@"),Object(m.b)("span",{parentName:"span",className:"mtk12"},"<"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"version"),Object(m.b)("span",{parentName:"span",className:"mtk12"},">")))),Object(m.b)("p",null,"This will also call ",Object(m.b)("inlineCode",{parentName:"p"},"tk tool charts vendor"),", so that the ",Object(m.b)("inlineCode",{parentName:"p"},"charts/")," directory is updated."),Object(m.b)("br",null),Object(m.b)("p",null,Object(m.b)("strong",{parentName:"p"},"Adding Repositories:"),"\nBy default, the ",Object(m.b)("inlineCode",{parentName:"p"},"stable")," repository is automatically set up for you. If you wish\nto add another repository, you can use the ",Object(m.b)("inlineCode",{parentName:"p"},"add-repo")," command:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# Add the official Grafana repository")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"$ tk tool charts add-repo grafana https://grafana.github.io/helm-charts")))),Object(m.b)("p",null,"Another way is to modify ",Object(m.b)("inlineCode",{parentName:"p"},"chartfile.yaml")," directly:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"diff"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"version: 1")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"repositories:")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," - name: stable")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," url: https://charts.helm.sh/stable")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"}," - name: grafana")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"}," url: https://grafana.github.io/helm-charts")))),Object(m.b)("p",null,Object(m.b)("strong",{parentName:"p"},"Installing multiple versions of the same chart:"),"\nIf you wish to install multiple versions of the same chart, you can write them to a specific directory.",Object(m.b)("br",{parentName:"p"}),"\n","You can do so with a ",Object(m.b)("inlineCode",{parentName:"p"},":")," suffix in the ",Object(m.b)("inlineCode",{parentName:"p"},"add")," command, or by modifying the chartfile manually."),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"tk tool charts add stable/mysql@1.6.7:1.6.7")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"tk tool charts add stable/mysql@1.6.8:1.6.8")))),Object(m.b)("p",null,"The resulting chartfile will look like this:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"yaml"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"version"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"1")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"directory"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"charts")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"repositories"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"-"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"stable")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"url"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"https://charts.helm.sh/stable")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"requires"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"-"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"chart"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"stable/mysql")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"directory"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"1.6.7")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"version"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"1.6.7")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"-"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"chart"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"stable/mysql")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"directory"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"1.6.8")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"version"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"1.6.8")))),Object(m.b)("p",null,Object(m.b)("strong",{parentName:"p"},"Install charts from chartfile:")," To install charts from an existing chartfile, use the following:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"$ tk tool charts vendor")))),Object(m.b)("p",null,"Optionally, you can also pass the ",Object(m.b)("inlineCode",{parentName:"p"},"--prune")," flag to remove vendored charts that are no longer in the chartfile."),Object(m.b)("h4",{id:"oci-registry-support"},"OCI Registry Support"),Object(m.b)("p",null,"Tanka supports pulling charts from OCI registries. To use one, the chart name must be split into two parts: the registry and the chart name. "),Object(m.b)("p",null,"As example, if you wanted to pull the ",Object(m.b)("inlineCode",{parentName:"p"},"oci://public.ecr.aws/karpenter/karpenter:v0.27.3")," image, your chartfile would look like this:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"yaml"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"version"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"1")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"directory"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"charts")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"repositories"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"-"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"karpenter")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"url"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"oci://public.ecr.aws/karpenter")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"requires"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"-"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"chart"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"karpenter/karpenter")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"directory"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"v0.27.3")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"version"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"v0.27.3")))),Object(m.b)("p",null,Object(m.b)("em",{parentName:"p"},"Registry login is not supported yet.")),Object(m.b)("h2",{id:"troubleshooting"},"Troubleshooting"),Object(m.b)("h3",{id:"helm-executable-missing"},"Helm executable missing"),Object(m.b)("p",null,"Helm support in Tanka requires the ",Object(m.b)("inlineCode",{parentName:"p"},"helm")," binary installed on your system and\navailable on the ",Object(m.b)("inlineCode",{parentName:"p"},"$PATH"),". If Helm is not installed, you will see this error message:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":""},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},'evaluating jsonnet: RUNTIME ERROR: Expanding Helm Chart: exec: "helm": executable file not found in $PATH'))),Object(m.b)("p",null,"To solve this, you need to ",Object(m.b)("a",{parentName:"p",href:"https://helm.sh/docs/intro/install/"},"install Helm"),".\nIf you cannot install it system-wide, you can point Tanka at your executable\nusing ",Object(m.b)("a",{parentName:"p",href:"/pr-preview/pr-1029/env-vars#tanka_helm_path"},Object(m.b)("inlineCode",{parentName:"a"},"TANKA_HELM_PATH"))),Object(m.b)("h3",{id:"optscalledfrom-unset"},"opts.calledFrom unset"),Object(m.b)("p",null,"This occurs, when Tanka was not told where it ",Object(m.b)("inlineCode",{parentName:"p"},"helm.template()")," was invoked\nfrom. This most likely means you didn't call ",Object(m.b)("inlineCode",{parentName:"p"},"new(std.thisFile)")," when importing ",Object(m.b)("inlineCode",{parentName:"p"},"tanka-util"),":"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," tanka "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"import"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"github.com/grafana/jsonnet-libs/tanka-util/main.libsonnet"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},";")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," helm "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," tanka.helm."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"new"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk9"},"std.thisFile"),Object(m.b)("span",{parentName:"span",className:"mtk1"},");")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," ↑ This is important")))),Object(m.b)("h3",{id:"failed-to-find-chart"},"Failed to find Chart"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":""},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},"helmTemplate: Failed to find a Chart at 'stable/grafana': No such file or directory."),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},"helmTemplate: Failed to find a Chart at '/home/user/stuff/tanka/environments/default/grafana': No such file or directory."))),Object(m.b)("p",null,"Tanka failed to locate your Helm chart on the filesystem. It looked at the\nrelative path you provided in ",Object(m.b)("inlineCode",{parentName:"p"},"helm.template()"),", starting from the directory of\nthe file you called ",Object(m.b)("inlineCode",{parentName:"p"},"helm.template()")," from."),Object(m.b)("p",null,"Please check there is actually a valid Helm chart at this place. Referring to\ncharts as ",Object(m.b)("inlineCode",{parentName:"p"},"/")," is disallowed by design."),Object(m.b)("h3",{id:"two-resources-share-the-same-name"},"Two resources share the same name"),Object(m.b)("p",null,"To make customization easier, ",Object(m.b)("inlineCode",{parentName:"p"},"helm.template()")," returns the resources not as the\nlist it receives from Helm, but instead converts this into an object."),Object(m.b)("p",null,"For the indexing key it uses ",Object(m.b)("inlineCode",{parentName:"p"},"kind_name")," by default. In some rare cases, this\nmight not be enough to distinguish between two resources, namely when the same\nresource exists in two namespaces."),Object(m.b)("p",null,"To handle this, pass a custom name format, e.g. to also include the namespace:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk10"},"custom:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," helm."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"template"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'foo'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},", "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'./charts/foo'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},", {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," nameFormat: "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'\'{{ print .namespace "_" .kind "_" .metadata.name | snakecase }}\'')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"})")))),Object(m.b)("p",null,"The literal default format used is ",Object(m.b)("inlineCode",{parentName:"p"},'{{ print .kind "_" .metadata.name | snakecase }}')),Object(m.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==i&&i&&i===Object(i)&&Object.isExtensible(i)&&!Object.prototype.hasOwnProperty.call(i,"__filemeta")&&Object.defineProperty(i,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/helm.mdx"}}),i.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-helm-mdx-4136d6f0aed36816861f.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-helm-mdx-4136d6f0aed36816861f.js.map b/pr-preview/pr-1029/component---docs-helm-mdx-4136d6f0aed36816861f.js.map deleted file mode 100644 index 735ed6c5b..000000000 --- a/pr-preview/pr-1029/component---docs-helm-mdx-4136d6f0aed36816861f.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/helm.mdx"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","isMDXComponent"],"mappings":"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","file":"component---docs-helm-mdx-4136d6f0aed36816861f.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`Helm Support`}

      \n

      {`The `}{`Helm`}{` project is the biggest ecosystem of high quality,\nwell maintained application definitions for Kubernetes.`}

      \n

      {`Even though Grafana Tanka uses the `}{`Jsonnet language`}{` for\nresource definition, you can still consume Helm resources, as described below.`}

      \n

      {`Consuming Helm Charts from Jsonnet`}

      \n

      {`Helm support is provided using the\n`}{`github.com/grafana/jsonnet-libs/tanka-util`}{`\nlibrary. Install it with:`}

      \n
      {`jb install github.com/grafana/jsonnet-libs/tanka-util`}
      \n

      {`The following example shows how to extract the individual resources of the\n`}{`grafana`}{` Helm Chart:`}

      \n
      {`local`}{` tanka `}{`=`}{` `}{`import`}{` `}{`\"github.com/grafana/jsonnet-libs/tanka-util/main.libsonnet\"`}{`;`}{`\n`}{`local`}{` helm `}{`=`}{` tanka.helm.`}{`new`}{`(`}{`std.thisFile`}{`);`}{`\n`}{`\n`}{`{`}{`\n`}{`  `}{`grafana:`}{` helm.`}{`template`}{`(`}{`\"grafana\"`}{`, `}{`\"./charts/grafana\"`}{`, {`}{`\n`}{`    namespace: `}{`\"monitoring\"`}{`,`}{`\n`}{`    values: {`}{`\n`}{`      persistence: { enabled: `}{`true`}{` }`}{`\n`}{`    }`}{`\n`}{`  })`}{`\n`}{`}`}
      \n

      {`The Chart itself is required to be `}{`vendored at a relative\npath`}{`, in this case `}{`./charts/grafana`}{`.`}

      \n
      \n

      {`Important:`}{` You MUST include the `}{`.new(std.thisFile)`}{` part in the import.\nThis is what tells Tanka where you actually call `}{`helm.template()`}{` from, so it\ncan find your vendored Charts.`}

      \n
      \n
      \n

      {`Once invoked, the `}{`$.grafana`}{` key holds the individual resources of Helm Chart as\na regular Jsonnet object that looks roughly like so:`}

      \n
      {`{`}{`\n`}{`  `}{`cluster_role_binding_grafana_clusterrolebinding:`}{` {`}{`/* ... */`}{`},`}{`\n`}{`  `}{`cluster_role_grafana_clusterrole:`}{` {`}{`/* ... */`}{`},`}{`\n`}{`  `}{`config_map_grafana:`}{` {`}{`/* ... */`}{`},`}{`\n`}{`  `}{`config_map_grafana_test:`}{` {`}{`/* ... */`}{`},`}{`\n`}{`  `}{`deployment_grafana:`}{` {`}{`/* ... */`}{`},`}{`\n`}{`  `}{`// ...`}{`\n`}{`}`}
      \n

      {`Above can be `}{`manipulated`}{` in the same way as any other Jsonnet data.`}

      \n

      {`Under the hood, this feature invokes the\n`}{`helm template`}{` CLI command.\nThe following options control how the command is invoked:`}

      \n
      {`...`}{`\n`}{`\n`}{`{`}{`\n`}{`  `}{`grafana:`}{` helm.`}{`template`}{`(`}{`\"grafana\"`}{`, `}{`\"./charts/grafana\"`}{`, {`}{`\n`}{`    namespace: `}{`\"monitoring\"`}{`,`}{`\n`}{`    values: {`}{`\n`}{`      persistence: { enabled: `}{`true`}{` }`}{`\n`}{`    },`}{`\n`}{`    `}{`// Equivalent to: --api-versions v1 --api-versions apps/v1`}{`\n`}{`    apiVersions: [`}{`'v1'`}{`, `}{`'apps/v1'`}{`]`}{`\n`}{`    `}{`// Equivalent to: --kube-version v1.20.0`}{`\n`}{`    kubeVersion: `}{`'v1.20.0'`}{`\n`}{`    `}{`// Equivalent to: --no-hooks`}{`\n`}{`    noHooks: `}{`true`}{`,`}{`\n`}{`}`}
      \n

      {`Tanka will install Custom Resource Definitions (CRDs) automatically, if the\nHelm Chart requires them and ships them in `}{`crds/`}{`. This is equivalent to `}{`helm\ntemplate --include-crds`}{`. This can be disabled using `}{`includeCrds: false`}{`:`}

      \n
      {`{`}{`\n`}{`  `}{`grafana:`}{` helm.`}{`template`}{`(`}{`\"grafana\"`}{`, `}{`\"./charts/grafana\"`}{`, {`}{`\n`}{`    includeCrds: `}{`false`}{`\n`}{`  })`}{`\n`}{`}`}
      \n

      {`Vendoring Helm Charts`}

      \n

      {`Tanka, like Jsonnet, is hermetic. It `}{`always yields the same\nresources`}{` when the project is\nstrictly self-contained.`}

      \n

      {`Helm however keeps Charts and repository configuration somewhere around\n`}{`~/.config/helm`}{`, which violates above requirement.`}

      \n

      {`To comply with this requirement, Tanka expects Helm Charts to be found `}{`inside the\nbounds of a project`}{`. This means, you MUST put your Charts `}{`somewhere next to\nthe file that calls `}{`helm.template()`}{`, so that it can be referred to using a\nrelative path.`}

      \n

      {`Vendor Location`}

      \n

      {`Where to actually put them inside the project is up to you, but keep in mind you\nneed to refer to them using relative paths.`}

      \n

      {`We recommend always writing libraries that wrap the actual Helm Chart, so the\nconsumer does not need to be aware of it. Whether you put these into your local `}{`lib/`}{` directory or\npublish and vendor them into the `}{`vendor/`}{` directory is up to you.`}

      \n

      {`A library usually looks like this:`}

      \n
      {`  /jsonnetfile.json`}{`\n`}{`  /main.libsonnet`}
      \n

      {`When adopting Helm inside it, we recommend vendoring at the top level, as such:`}

      \n
      {`  /jsonnetfile.json`}{`\n`}{`  /main.libsonnet`}{`\n`}{`+`}{` /charts`}{`\n`}{`+`}{` /charts/`}
      \n

      {`This way, you can refer to the charts as `}{`./charts/`}{` from inside\n`}{`main.libsonnet`}{`. By keeping the chart as close to the consumer as possible, the\nlibrary is kept portable.`}

      \n

      {`Charttool`}

      \n

      {`Helm does not make vendoring incredibly easy by itself. `}{`helm pull`}{` provides the\nrequired plumbing, but it does not record its actions in a reproducible manner.`}

      \n

      {`Therefore, Tanka ships a special utility at `}{`tk tool charts`}{`, which automates\n`}{`helm pull`}{`:`}

      \n
      {`# Create a chartfile.yaml in the current directory, e.g. in lib/myLibrary`}{`\n`}{`$ tk tool charts init`}{`\n`}{`\n`}{`$ `}{`# Install the MySQL chart at version 1.6.7 from the stable repository`}{`\n`}{`$ tk tool charts add stable/mysql@1.6.7`}
      \n

      {`Adding charts:`}{` To add a chart, use the following:`}

      \n
      {`$ tk tool charts add `}{`<`}{`repo`}{`>`}{`/`}{`<`}{`name`}{`>`}{`@`}{`<`}{`version`}{`>`}
      \n

      {`This will also call `}{`tk tool charts vendor`}{`, so that the `}{`charts/`}{` directory is updated.`}

      \n
      \n

      {`Adding Repositories:`}{`\nBy default, the `}{`stable`}{` repository is automatically set up for you. If you wish\nto add another repository, you can use the `}{`add-repo`}{` command:`}

      \n
      {`# Add the official Grafana repository`}{`\n`}{`$ tk tool charts add-repo grafana https://grafana.github.io/helm-charts`}
      \n

      {`Another way is to modify `}{`chartfile.yaml`}{` directly:`}

      \n
      {`version: 1`}{`\n`}{`repositories:`}{`\n`}{`  - name: stable`}{`\n`}{`    url: https://charts.helm.sh/stable`}{`\n`}{`+`}{` - name: grafana`}{`\n`}{`+`}{`   url: https://grafana.github.io/helm-charts`}
      \n

      {`Installing multiple versions of the same chart:`}{`\nIf you wish to install multiple versions of the same chart, you can write them to a specific directory.`}

      {`\n`}{`You can do so with a `}{`:`}{` suffix in the `}{`add`}{` command, or by modifying the chartfile manually.`}

      \n
      {`tk tool charts add stable/mysql@1.6.7:1.6.7`}{`\n`}{`tk tool charts add stable/mysql@1.6.8:1.6.8`}
      \n

      {`The resulting chartfile will look like this:`}

      \n
      {`version`}{`:`}{` `}{`1`}{`\n`}{`directory`}{`:`}{` `}{`charts`}{`\n`}{`repositories`}{`:`}{`\n`}{`-`}{` `}{`name`}{`:`}{` `}{`stable`}{`\n`}{`  `}{`url`}{`:`}{` `}{`https://charts.helm.sh/stable`}{`\n`}{`requires`}{`:`}{`\n`}{`-`}{` `}{`chart`}{`:`}{` `}{`stable/mysql`}{`\n`}{`  `}{`directory`}{`:`}{` `}{`1.6.7`}{`\n`}{`  `}{`version`}{`:`}{` `}{`1.6.7`}{`\n`}{`-`}{` `}{`chart`}{`:`}{` `}{`stable/mysql`}{`\n`}{`  `}{`directory`}{`:`}{` `}{`1.6.8`}{`\n`}{`  `}{`version`}{`:`}{` `}{`1.6.8`}
      \n

      {`Install charts from chartfile:`}{` To install charts from an existing chartfile, use the following:`}

      \n
      {`$ tk tool charts vendor`}
      \n

      {`Optionally, you can also pass the `}{`--prune`}{` flag to remove vendored charts that are no longer in the chartfile.`}

      \n

      {`OCI Registry Support`}

      \n

      {`Tanka supports pulling charts from OCI registries. To use one, the chart name must be split into two parts: the registry and the chart name. `}

      \n

      {`As example, if you wanted to pull the `}{`oci://public.ecr.aws/karpenter/karpenter:v0.27.3`}{` image, your chartfile would look like this:`}

      \n
      {`version`}{`:`}{` `}{`1`}{`\n`}{`directory`}{`:`}{` `}{`charts`}{`\n`}{`repositories`}{`:`}{`\n`}{`-`}{` `}{`name`}{`:`}{` `}{`karpenter`}{`\n`}{`  `}{`url`}{`:`}{` `}{`oci://public.ecr.aws/karpenter`}{`\n`}{`requires`}{`:`}{`\n`}{`-`}{` `}{`chart`}{`:`}{` `}{`karpenter/karpenter`}{`\n`}{`  `}{`directory`}{`:`}{` `}{`v0.27.3`}{`\n`}{`  `}{`version`}{`:`}{` `}{`v0.27.3`}
      \n

      {`Registry login is not supported yet.`}

      \n

      {`Troubleshooting`}

      \n

      {`Helm executable missing`}

      \n

      {`Helm support in Tanka requires the `}{`helm`}{` binary installed on your system and\navailable on the `}{`$PATH`}{`. If Helm is not installed, you will see this error message:`}

      \n
      {`evaluating jsonnet: RUNTIME ERROR: Expanding Helm Chart: exec: \"helm\": executable file not found in $PATH`}
      \n

      {`To solve this, you need to `}{`install Helm`}{`.\nIf you cannot install it system-wide, you can point Tanka at your executable\nusing `}{`TANKA_HELM_PATH`}

      \n

      {`opts.calledFrom unset`}

      \n

      {`This occurs, when Tanka was not told where it `}{`helm.template()`}{` was invoked\nfrom. This most likely means you didn't call `}{`new(std.thisFile)`}{` when importing `}{`tanka-util`}{`:`}

      \n
      {`local`}{` tanka `}{`=`}{` `}{`import`}{` `}{`\"github.com/grafana/jsonnet-libs/tanka-util/main.libsonnet\"`}{`;`}{`\n`}{`local`}{` helm `}{`=`}{` tanka.helm.`}{`new`}{`(`}{`std.thisFile`}{`);`}{`\n`}{`                       ↑ This is important`}
      \n

      {`Failed to find Chart`}

      \n
      {`helmTemplate: Failed to find a Chart at 'stable/grafana': No such file or directory.`}{`\n`}{`helmTemplate: Failed to find a Chart at '/home/user/stuff/tanka/environments/default/grafana': No such file or directory.`}
      \n

      {`Tanka failed to locate your Helm chart on the filesystem. It looked at the\nrelative path you provided in `}{`helm.template()`}{`, starting from the directory of\nthe file you called `}{`helm.template()`}{` from.`}

      \n

      {`Please check there is actually a valid Helm chart at this place. Referring to\ncharts as `}{`/`}{` is disallowed by design.`}

      \n

      {`Two resources share the same name`}

      \n

      {`To make customization easier, `}{`helm.template()`}{` returns the resources not as the\nlist it receives from Helm, but instead converts this into an object.`}

      \n

      {`For the indexing key it uses `}{`kind_name`}{` by default. In some rare cases, this\nmight not be enough to distinguish between two resources, namely when the same\nresource exists in two namespaces.`}

      \n

      {`To handle this, pass a custom name format, e.g. to also include the namespace:`}

      \n
      {`custom:`}{` helm.`}{`template`}{`(`}{`'foo'`}{`, `}{`'./charts/foo'`}{`, {`}{`\n`}{`  nameFormat: `}{`'{{ print .namespace \"_\" .kind \"_\" .metadata.name | snakecase }}'`}{`\n`}{`})`}
      \n

      {`The literal default format used is `}{`{{ print .kind \"_\" .metadata.name | snakecase }}`}

      \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-inline-environments-mdx-438dd359ab9fafbc9e4f.js b/pr-preview/pr-1029/component---docs-inline-environments-mdx-438dd359ab9fafbc9e4f.js deleted file mode 100644 index 063307f06..000000000 --- a/pr-preview/pr-1029/component---docs-inline-environments-mdx-438dd359ab9fafbc9e4f.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{d0WO:function(e,a,n){"use strict";n.r(a),n.d(a,"_frontmatter",(function(){return b})),n.d(a,"default",(function(){return r}));var s=n("wx14"),t=n("Ff2n"),m=(n("q1tI"),n("7ljp")),p=n("hhGP");n("qKvR");const c=["components"],b={};void 0!==b&&b&&b===Object(b)&&Object.isExtensible(b)&&!Object.prototype.hasOwnProperty.call(b,"__filemeta")&&Object.defineProperty(b,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/inline-environments.mdx"}});const l={_frontmatter:b},N=p.a;function r(e){let{components:a}=e,n=Object(t.a)(e,c);return Object(m.b)(N,Object(s.a)({},l,n,{components:a,mdxType:"MDXLayout"}),Object(m.b)("h1",{id:"inline-environments"},"Inline environments"),Object(m.b)("p",null,"Inline environments is the practice of defining the environment's config inline\nfor evaluation at runtime as opposed to configuring it statically in\n",Object(m.b)("inlineCode",{parentName:"p"},"spec.json"),"."),Object(m.b)("p",null,"The general take away is:"),Object(m.b)("ul",null,Object(m.b)("li",{parentName:"ul"},Object(m.b)("inlineCode",{parentName:"li"},"spec.json")," will no longer be used"),Object(m.b)("li",{parentName:"ul"},Object(m.b)("inlineCode",{parentName:"li"},"main.jsonnet")," is expected to render a ",Object(m.b)("inlineCode",{parentName:"li"},"tanka.dev/Environment")," object"),Object(m.b)("li",{parentName:"ul"},"this object is expected to hold Kubernetes objects at ",Object(m.b)("inlineCode",{parentName:"li"},".data"))),Object(m.b)("h2",{id:"converting-to-an-inline-environment"},"Converting to an inline environment"),Object(m.b)("p",null,"Converting a traditional ",Object(m.b)("inlineCode",{parentName:"p"},"spec.json")," environment into an inline environment is quite\nstraight forward. Based on the example from ",Object(m.b)("a",{parentName:"p",href:"tutorial/jsonnet"},"Using Jsonnet"),":"),Object(m.b)("p",null,"The directory structure:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"sh"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"├── environments")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"│   └── default "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# default environment")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"│   ├── main.jsonnet "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# main file")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"│   └── spec.json "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# environment's config")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"├── jsonnetfile.json")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"├── lib "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# libraries")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"└── vendor "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# external libraries")))),Object(m.b)("p",null,"The original files look like this:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// main.jsonnet")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"some_deployment:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {"),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"/* ... */"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"some_service:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {"),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"/* ... */"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"json"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// spec.json")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"apiVersion"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"tanka.dev/v1alpha1"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"kind"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"Environment"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"metadata"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk7"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"default"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"},")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"spec"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk7"},"apiServer"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"https://127.0.0.1:6443"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk7"},"namespace"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"monitoring"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")))),Object(m.b)("p",null,"Converting is as simple as bringing in the ",Object(m.b)("inlineCode",{parentName:"p"},"spec.json")," into ",Object(m.b)("inlineCode",{parentName:"p"},"main.jsonnet")," and\nmoving the original ",Object(m.b)("inlineCode",{parentName:"p"},"main.jsonnet")," scope into the ",Object(m.b)("inlineCode",{parentName:"p"},"data:")," element."),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// main.jsonnet")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"apiVersion:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'tanka.dev/v1alpha1'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"kind:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'Environment'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"metadata:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'default'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"spec:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"apiServer:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'https://127.0.0.1:6443'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"namespace:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'monitoring'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"data:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," { "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// original main.jsonnet data")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"some_deployment:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {"),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"/* ... */"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"some_service:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {"),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"/* ... */"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("h2",{id:"use-case-variable-apiserver"},"Use case: variable apiServer"),Object(m.b)("p",null,"Even though the ",Object(m.b)("inlineCode",{parentName:"p"},"apiServer")," directive is originally meant to prevent that the\nmanifests don't get accidentally applied to the wrong Kubernetes cluster, there\nis a valid use case for making the ",Object(m.b)("inlineCode",{parentName:"p"},"apiServer")," variable: Local test clusters."),Object(m.b)("p",null,"Instead of modifying ",Object(m.b)("inlineCode",{parentName:"p"},"spec.json")," each time, with inline environments it is\npossible to leverage powerful jsonnet concepts, for example with top level\narguments:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// environments/minikube-test-setup/main.jsonnet")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk9"},"function"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"(apiServer) {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"apiVersion:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'tanka.dev/v1alpha1'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"kind:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'Environment'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"metadata:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'minikube-test-setup'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"spec:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"apiServer:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," apiServer,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"namespace:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'monitoring'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"data:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," { "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"/* ... */"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("p",null,"Applying this to a local Kubernetes cluster can be done like this:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"$ tk apply --tla-str apiServer=https://127.0.0.1:4758 environments/minikube-test-setup")))),Object(m.b)("p",null,"Similarly this can be used to configure any part of the Environment object, like\n",Object(m.b)("inlineCode",{parentName:"p"},"namespace:"),", ",Object(m.b)("inlineCode",{parentName:"p"},"metadata.labels"),", ..."),Object(m.b)("h2",{id:"use-case-consistent-inline-environments"},"Use case: consistent inline environments"),Object(m.b)("p",null,"It is possible to define multiple inline environments in a single jsonnet. This\nenables an operator to generate consistent Tanka environments for multiple\nKubernetes clusters."),Object(m.b)("p",null,"We can define a Tanka environment once and then repeat that for a set of\nclusters as shown in this example:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// environments/monitoring-stack/main.jsonnet")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk9"},"environment"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"(cluster)"),Object(m.b)("span",{parentName:"span",className:"mtk12"},"::"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"apiVersion:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'tanka.dev/v1alpha1'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"kind:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'Environment'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"metadata:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'environment/%s'"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"%"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," cluster.name,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"spec:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"apiServer:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," cluster.apiServer,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"namespace:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'monitoring'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"data:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," { "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"/* ... */"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk7"},"clusters::"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," [")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," { "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'us-central1'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},", "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"apiServer:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'https://127.0.0.1:6433'"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," { "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'europe-west2'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},", "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"apiServer:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'https://127.0.0.2:6433'"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," ],")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"envs:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," [cluster.name]"),Object(m.b)("span",{parentName:"span",className:"mtk12"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"$"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"environment"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"(cluster)")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5 mtki"},"for"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," cluster "),Object(m.b)("span",{parentName:"span",className:"mtk5 mtki"},"in"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"$"),Object(m.b)("span",{parentName:"span",className:"mtk1"},".clusters")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("p",null,"In the workflow you now have to use ",Object(m.b)("inlineCode",{parentName:"p"},"--name")," to select the environment you want\nto deploy:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"$ tk apply --name environment/us-central1 environments/monitoring-stack/main.jsonnet")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"$ tk diff --name environment/europe-west2 environments/monitoring-stack/main.jsonnet")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# Partial matches also work (if they match a single environment)")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"$ tk apply --name us-central1 environments/monitoring-stack/main.jsonnet")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"$ tk diff --name west2 environments/monitoring-stack/main.jsonnet")))),Object(m.b)("p",null,"For export, it is possible to use the same ",Object(m.b)("inlineCode",{parentName:"p"},"--name")," selector or you can do a\nrecursive export while using the ",Object(m.b)("inlineCode",{parentName:"p"},"--format")," option:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"$ tk "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"export"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," outputDir/ environments/monitoring-stack/main.jsonnet --recursive \\")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," --format "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"'"),Object(m.b)("span",{parentName:"span",className:"mtk6"},"{{env.metadata.name}}/{{.metadata.namespace}}/{{.kind}}-{{.metadata.name}}"),Object(m.b)("span",{parentName:"span",className:"mtk5"},"'")))),Object(m.b)("h2",{id:"caveats"},"Caveats"),Object(m.b)("h3",{id:"import-tk"},Object(m.b)("inlineCode",{parentName:"h3"},'import "tk"')),Object(m.b)("p",null,"Inline environments cannot use ",Object(m.b)("a",{parentName:"p",href:"config#jsonnet-access"},Object(m.b)("inlineCode",{parentName:"a"},'import "tk"'))," anymore as\nthis information was populated before jsonnet evaluation by the existence of\n",Object(m.b)("inlineCode",{parentName:"p"},"spec.json"),"."),Object(m.b)("h3",{id:"tk-env"},Object(m.b)("inlineCode",{parentName:"h3"},"tk env")),Object(m.b)("p",null,"The different ",Object(m.b)("inlineCode",{parentName:"p"},"tk env")," subcommands are heavily based on the ",Object(m.b)("inlineCode",{parentName:"p"},"spec.json"),"\napproach. ",Object(m.b)("inlineCode",{parentName:"p"},"tk env list")," will continue to work as expected, ",Object(m.b)("inlineCode",{parentName:"p"},"tk env\n(add|remove|set)")," will only work for ",Object(m.b)("inlineCode",{parentName:"p"},"spec.json")," based environments."),Object(m.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==r&&r&&r===Object(r)&&Object.isExtensible(r)&&!Object.prototype.hasOwnProperty.call(r,"__filemeta")&&Object.defineProperty(r,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/inline-environments.mdx"}}),r.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-inline-environments-mdx-438dd359ab9fafbc9e4f.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-inline-environments-mdx-438dd359ab9fafbc9e4f.js.map b/pr-preview/pr-1029/component---docs-inline-environments-mdx-438dd359ab9fafbc9e4f.js.map deleted file mode 100644 index a005b0940..000000000 --- a/pr-preview/pr-1029/component---docs-inline-environments-mdx-438dd359ab9fafbc9e4f.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/inline-environments.mdx"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","isMDXComponent"],"mappings":"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","file":"component---docs-inline-environments-mdx-438dd359ab9fafbc9e4f.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`Inline environments`}

      \n

      {`Inline environments is the practice of defining the environment's config inline\nfor evaluation at runtime as opposed to configuring it statically in\n`}{`spec.json`}{`.`}

      \n

      {`The general take away is:`}

      \n
        \n
      • {`spec.json`}{` will no longer be used`}
      • \n
      • {`main.jsonnet`}{` is expected to render a `}{`tanka.dev/Environment`}{` object`}
      • \n
      • {`this object is expected to hold Kubernetes objects at `}{`.data`}
      • \n
      \n

      {`Converting to an inline environment`}

      \n

      {`Converting a traditional `}{`spec.json`}{` environment into an inline environment is quite\nstraight forward. Based on the example from `}{`Using Jsonnet`}{`:`}

      \n

      {`The directory structure:`}

      \n
      {`├── environments`}{`\n`}{`│   └── default `}{`# default environment`}{`\n`}{`│       ├── main.jsonnet `}{`# main file`}{`\n`}{`│       └── spec.json `}{`# environment's config`}{`\n`}{`├── jsonnetfile.json`}{`\n`}{`├── lib `}{`# libraries`}{`\n`}{`└── vendor `}{`# external libraries`}
      \n

      {`The original files look like this:`}

      \n
      {`// main.jsonnet`}{`\n`}{`{`}{`\n`}{`  `}{`some_deployment:`}{` {`}{`/* ... */`}{` },`}{`\n`}{`  `}{`some_service:`}{` {`}{`/* ... */`}{` },`}{`\n`}{`}`}
      \n
      {`// spec.json`}{`\n`}{`{`}{`\n`}{`  `}{`\"`}{`apiVersion`}{`\"`}{`:`}{` `}{`\"`}{`tanka.dev/v1alpha1`}{`\"`}{`,`}{`\n`}{`  `}{`\"`}{`kind`}{`\"`}{`:`}{` `}{`\"`}{`Environment`}{`\"`}{`,`}{`\n`}{`  `}{`\"`}{`metadata`}{`\"`}{`:`}{` `}{`{`}{`\n`}{`    `}{`\"`}{`name`}{`\"`}{`:`}{` `}{`\"`}{`default`}{`\"`}{`\n`}{`  `}{`},`}{`\n`}{`  `}{`\"`}{`spec`}{`\"`}{`:`}{` `}{`{`}{`\n`}{`    `}{`\"`}{`apiServer`}{`\"`}{`:`}{` `}{`\"`}{`https://127.0.0.1:6443`}{`\"`}{`,`}{`\n`}{`    `}{`\"`}{`namespace`}{`\"`}{`:`}{` `}{`\"`}{`monitoring`}{`\"`}{`\n`}{`  `}{`}`}{`\n`}{`}`}
      \n

      {`Converting is as simple as bringing in the `}{`spec.json`}{` into `}{`main.jsonnet`}{` and\nmoving the original `}{`main.jsonnet`}{` scope into the `}{`data:`}{` element.`}

      \n
      {`// main.jsonnet`}{`\n`}{`{`}{`\n`}{`  `}{`apiVersion:`}{` `}{`'tanka.dev/v1alpha1'`}{`,`}{`\n`}{`  `}{`kind:`}{` `}{`'Environment'`}{`,`}{`\n`}{`  `}{`metadata:`}{` {`}{`\n`}{`    `}{`name:`}{` `}{`'default'`}{`,`}{`\n`}{`  },`}{`\n`}{`  `}{`spec:`}{` {`}{`\n`}{`    `}{`apiServer:`}{` `}{`'https://127.0.0.1:6443'`}{`,`}{`\n`}{`    `}{`namespace:`}{` `}{`'monitoring'`}{`,`}{`\n`}{`  },`}{`\n`}{`  `}{`data:`}{` { `}{`// original main.jsonnet data`}{`\n`}{`    `}{`some_deployment:`}{` {`}{`/* ... */`}{` },`}{`\n`}{`    `}{`some_service:`}{` {`}{`/* ... */`}{` },`}{`\n`}{`  },`}{`\n`}{`}`}
      \n

      {`Use case: variable apiServer`}

      \n

      {`Even though the `}{`apiServer`}{` directive is originally meant to prevent that the\nmanifests don't get accidentally applied to the wrong Kubernetes cluster, there\nis a valid use case for making the `}{`apiServer`}{` variable: Local test clusters.`}

      \n

      {`Instead of modifying `}{`spec.json`}{` each time, with inline environments it is\npossible to leverage powerful jsonnet concepts, for example with top level\narguments:`}

      \n
      {`// environments/minikube-test-setup/main.jsonnet`}{`\n`}{`function`}{`(apiServer) {`}{`\n`}{`  `}{`apiVersion:`}{` `}{`'tanka.dev/v1alpha1'`}{`,`}{`\n`}{`  `}{`kind:`}{` `}{`'Environment'`}{`,`}{`\n`}{`  `}{`metadata:`}{` {`}{`\n`}{`    `}{`name:`}{` `}{`'minikube-test-setup'`}{`,`}{`\n`}{`  },`}{`\n`}{`  `}{`spec:`}{` {`}{`\n`}{`    `}{`apiServer:`}{` apiServer,`}{`\n`}{`    `}{`namespace:`}{` `}{`'monitoring'`}{`,`}{`\n`}{`  },`}{`\n`}{`  `}{`data:`}{` { `}{`/* ... */`}{` },`}{`\n`}{`}`}
      \n

      {`Applying this to a local Kubernetes cluster can be done like this:`}

      \n
      {`$ tk apply --tla-str apiServer=https://127.0.0.1:4758 environments/minikube-test-setup`}
      \n

      {`Similarly this can be used to configure any part of the Environment object, like\n`}{`namespace:`}{`, `}{`metadata.labels`}{`, ...`}

      \n

      {`Use case: consistent inline environments`}

      \n

      {`It is possible to define multiple inline environments in a single jsonnet. This\nenables an operator to generate consistent Tanka environments for multiple\nKubernetes clusters.`}

      \n

      {`We can define a Tanka environment once and then repeat that for a set of\nclusters as shown in this example:`}

      \n
      {`// environments/monitoring-stack/main.jsonnet`}{`\n`}{`{`}{`\n`}{`  `}{`environment`}{`(cluster)`}{`::`}{` {`}{`\n`}{`    `}{`apiVersion:`}{` `}{`'tanka.dev/v1alpha1'`}{`,`}{`\n`}{`    `}{`kind:`}{` `}{`'Environment'`}{`,`}{`\n`}{`    `}{`metadata:`}{` {`}{`\n`}{`      `}{`name:`}{` `}{`'environment/%s'`}{` `}{`%`}{` cluster.name,`}{`\n`}{`    },`}{`\n`}{`    `}{`spec:`}{` {`}{`\n`}{`      `}{`apiServer:`}{` cluster.apiServer,`}{`\n`}{`      `}{`namespace:`}{` `}{`'monitoring'`}{`,`}{`\n`}{`    },`}{`\n`}{`    `}{`data:`}{` { `}{`/* ... */`}{` },`}{`\n`}{`  },`}{`\n`}{`\n`}{`  `}{`clusters::`}{` [`}{`\n`}{`    { `}{`name:`}{` `}{`'us-central1'`}{`, `}{`apiServer:`}{` `}{`'https://127.0.0.1:6433'`}{` },`}{`\n`}{`    { `}{`name:`}{` `}{`'europe-west2'`}{`, `}{`apiServer:`}{` `}{`'https://127.0.0.2:6433'`}{` },`}{`\n`}{`  ],`}{`\n`}{`\n`}{`  `}{`envs:`}{` {`}{`\n`}{`    [cluster.name]`}{`:`}{` `}{`$`}{`.`}{`environment`}{`(cluster)`}{`\n`}{`    `}{`for`}{` cluster `}{`in`}{` `}{`$`}{`.clusters`}{`\n`}{`  },`}{`\n`}{`}`}
      \n

      {`In the workflow you now have to use `}{`--name`}{` to select the environment you want\nto deploy:`}

      \n
      {`$ tk apply --name environment/us-central1 environments/monitoring-stack/main.jsonnet`}{`\n`}{`$ tk diff --name environment/europe-west2 environments/monitoring-stack/main.jsonnet`}{`\n`}{`\n`}{`# Partial matches also work (if they match a single environment)`}{`\n`}{`$ tk apply --name us-central1 environments/monitoring-stack/main.jsonnet`}{`\n`}{`$ tk diff --name west2 environments/monitoring-stack/main.jsonnet`}
      \n

      {`For export, it is possible to use the same `}{`--name`}{` selector or you can do a\nrecursive export while using the `}{`--format`}{` option:`}

      \n
      {`$ tk `}{`export`}{` outputDir/ environments/monitoring-stack/main.jsonnet --recursive \\\\`}{`\n`}{`  --format `}{`'`}{`{{env.metadata.name}}/{{.metadata.namespace}}/{{.kind}}-{{.metadata.name}}`}{`'`}
      \n

      {`Caveats`}

      \n

      {`import \"tk\"`}

      \n

      {`Inline environments cannot use `}{`import \"tk\"`}{` anymore as\nthis information was populated before jsonnet evaluation by the existence of\n`}{`spec.json`}{`.`}

      \n

      {`tk env`}

      \n

      {`The different `}{`tk env`}{` subcommands are heavily based on the `}{`spec.json`}{`\napproach. `}{`tk env list`}{` will continue to work as expected, `}{`tk env\n(add|remove|set)`}{` will only work for `}{`spec.json`}{` based environments.`}

      \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-installation-mdx-9fd740edb80601169d14.js b/pr-preview/pr-1029/component---docs-installation-mdx-9fd740edb80601169d14.js deleted file mode 100644 index cefd6d8f9..000000000 --- a/pr-preview/pr-1029/component---docs-installation-mdx-9fd740edb80601169d14.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{"5gTo":function(e,t,n){"use strict";n.r(t),n.d(t,"_frontmatter",(function(){return c})),n.d(t,"default",(function(){return d}));var a=n("wx14"),l=n("Ff2n"),o=(n("q1tI"),n("7ljp")),b=n("hhGP"),r=n("XHv3");n("qKvR");const i=["components"],c={};void 0!==c&&c&&c===Object(c)&&Object.isExtensible(c)&&!Object.prototype.hasOwnProperty.call(c,"__filemeta")&&Object.defineProperty(c,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/installation.mdx"}});const s={_frontmatter:c},m=b.a;function d(e){let{components:t}=e,n=Object(l.a)(e,i);return Object(o.b)(m,Object(a.a)({},s,n,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h1",{id:"installation"},"Installation"),Object(o.b)("p",null,"Tanka is distributed as a single binary called ",Object(o.b)("inlineCode",{parentName:"p"},"tk"),". It already includes the Jsonnet compiler, but requires some tools to be available:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"https://kubernetes.io/docs/tasks/tools/"},Object(o.b)("inlineCode",{parentName:"a"},"kubectl")),": Tanka\nuses ",Object(o.b)("inlineCode",{parentName:"li"},"kubectl")," to communicate to your cluster. This means ",Object(o.b)("inlineCode",{parentName:"li"},"kubectl")," must be\navailable somewhere on your ",Object(o.b)("inlineCode",{parentName:"li"},"$PATH"),". If you ever have worked with Kubernetes\nbefore, this should be the case anyways."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"diff"),": To compute differences, standard UNIX ",Object(o.b)("inlineCode",{parentName:"li"},"diff(1)")," is required."),Object(o.b)("li",{parentName:"ul"},"(recommended) ",Object(o.b)("inlineCode",{parentName:"li"},"jb"),": ",Object(o.b)("a",{parentName:"li",href:"#jsonnet-bundler"},"#Jsonnet Bundler"),", the Jsonnet package\nmanager"),Object(o.b)("li",{parentName:"ul"},"(recommended) ",Object(o.b)("inlineCode",{parentName:"li"},"helm"),": ",Object(o.b)("a",{parentName:"li",href:"https://helm.sh"},"Helm"),", required for ",Object(o.b)("a",{parentName:"li",href:"/pr-preview/pr-1029/helm"},"Helm\nsupport"))),Object(o.b)("br",null),Object(o.b)("h2",{id:"tanka"},"Tanka"),Object(o.b)(r.b,{elems:r.c,def:"macOS",mdxType:"PlatformInstall"}),Object(o.b)("h2",{id:"jsonnet-bundler"},"Jsonnet Bundler"),Object(o.b)("p",null,"The ",Object(o.b)("a",{parentName:"p",href:"https://github.com/jsonnet-bundler/jsonnet-bundler"},"Jsonnet Bundler")," project creates a package manager for Jsonnet\nto share and reuse code across the internet, similar to ",Object(o.b)("inlineCode",{parentName:"p"},"npm")," or ",Object(o.b)("inlineCode",{parentName:"p"},"go mod"),"."),Object(o.b)("p",null,"Tanka uses this tool by default, so it's recommended to install it as well:"),Object(o.b)(r.b,{elems:r.a,def:"macOS",mdxType:"PlatformInstall"}))}void 0!==d&&d&&d===Object(d)&&Object.isExtensible(d)&&!Object.prototype.hasOwnProperty.call(d,"__filemeta")&&Object.defineProperty(d,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/installation.mdx"}}),d.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-installation-mdx-9fd740edb80601169d14.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-installation-mdx-9fd740edb80601169d14.js.map b/pr-preview/pr-1029/component---docs-installation-mdx-9fd740edb80601169d14.js.map deleted file mode 100644 index 4ced6a942..000000000 --- a/pr-preview/pr-1029/component---docs-installation-mdx-9fd740edb80601169d14.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/installation.mdx"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","PlatformInstall","elems","Tanka","def","Jb","isMDXComponent"],"mappings":"uSAOaA,EAAe,QAAG,IAAAA,UAAAC,OAAAD,IAAAC,OAAAC,aAAAF,KAAAC,OAAAE,UAAAC,eAAAC,KAAAL,EAAA,eAAAC,OAAAK,eAAAN,EAAA,cAAAO,cAAA,EAAAC,MAAA,CAAAC,KAAA,eAAAC,SAAA,2BAC/B,MAAMC,EAAc,CAClBX,gBAEIY,EAAYC,IACH,SAASC,EAAUC,GAG/B,IAHgC,WACjCC,GAEDD,EADIE,EAAKC,YAAAH,EAAAI,GAER,OAAOC,YAACR,EAASS,YAAA,GAAKV,EAAiBM,EAAK,CAAED,WAAYA,EAAYM,QAAQ,cAI5EF,YAAA,MACE,GAAM,gBAAc,gBAEtBA,YAAA,2DAAsDA,YAAA,cAAYG,WAAW,KAAG,MAAoB,wFACpGH,YAAA,UACEA,YAAA,MAAIG,WAAW,MAAKH,YAAA,KAAGG,WAAW,KAC9B,KAAQ,2CACPH,YAAA,cAAYG,WAAW,KAAG,YAA6B,iBAC3DH,YAAA,cAAYG,WAAW,MAAI,WAAyB,+CAAgDH,YAAA,cAAYG,WAAW,MAAI,WAAyB,yCACjIH,YAAA,cAAYG,WAAW,MAAI,SAAuB,uFAE1EH,YAAA,MAAIG,WAAW,MAAKH,YAAA,cAAYG,WAAW,MAAI,QAAsB,2CAA4CH,YAAA,cAAYG,WAAW,MAAI,WAAyB,iBACrKH,YAAA,MAAIG,WAAW,MAAI,iBAAmBH,YAAA,cAAYG,WAAW,MAAI,MAAoB,KAAMH,YAAA,KAAGG,WAAW,KACrG,KAAQ,oBAAkB,oBACD,kCAE7BH,YAAA,MAAIG,WAAW,MAAI,iBAAmBH,YAAA,cAAYG,WAAW,MAAI,QAAsB,KAAMH,YAAA,KAAGG,WAAW,KACvG,KAAQ,mBAAiB,QACZ,kBAAmBH,YAAA,KAAGG,WAAW,KAC9C,KAAQ,4BAA0B,mBAIxCH,YAAA,WACAA,YAAA,MACE,GAAM,SAAO,SAEfA,YAACI,IAAe,CAACC,MAAOC,IAAOC,IAAI,QAAQL,QAAQ,oBACnDF,YAAA,MACE,GAAM,mBAAiB,mBAEzBA,YAAA,gBAAWA,YAAA,KAAGG,WAAW,IACrB,KAAQ,sDAAoD,mBACpC,2GAC0BH,YAAA,cAAYG,WAAW,KAAG,OAAqB,OAAQH,YAAA,cAAYG,WAAW,KAAG,UAAwB,KAC/JH,YAAA,wFACAA,YAACI,IAAe,CAACC,MAAOG,IAAID,IAAI,QAAQL,QAAQ,0BAGnD,IAAAR,UAAAb,OAAAa,IAAAb,OAAAC,aAAAY,KAAAb,OAAAE,UAAAC,eAAAC,KAAAS,EAAA,eAAAb,OAAAK,eAAAQ,EAAA,cAAAP,cAAA,EAAAC,MAAA,CAAAC,KAAA,aAAAC,SAAA,2BAEDI,EAAWe,gBAAiB","file":"component---docs-installation-mdx-9fd740edb80601169d14.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nimport { PlatformInstall, Tanka, Jb } from \"../src/components/install\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n\n

      {`Installation`}

      \n

      {`Tanka is distributed as a single binary called `}{`tk`}{`. It already includes the Jsonnet compiler, but requires some tools to be available:`}

      \n
        \n
      • {`kubectl`}{`: Tanka\nuses `}{`kubectl`}{` to communicate to your cluster. This means `}{`kubectl`}{` must be\navailable somewhere on your `}{`$PATH`}{`. If you ever have worked with Kubernetes\nbefore, this should be the case anyways.`}
      • \n
      • {`diff`}{`: To compute differences, standard UNIX `}{`diff(1)`}{` is required.`}
      • \n
      • {`(recommended) `}{`jb`}{`: `}{`#Jsonnet Bundler`}{`, the Jsonnet package\nmanager`}
      • \n
      • {`(recommended) `}{`helm`}{`: `}{`Helm`}{`, required for `}{`Helm\nsupport`}
      • \n
      \n
      \n

      {`Tanka`}

      \n \n

      {`Jsonnet Bundler`}

      \n

      {`The `}{`Jsonnet Bundler`}{` project creates a package manager for Jsonnet\nto share and reuse code across the internet, similar to `}{`npm`}{` or `}{`go mod`}{`.`}

      \n

      {`Tanka uses this tool by default, so it's recommended to install it as well:`}

      \n \n\n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-introduction-mdx-53424fcd5b068bb753bd.js b/pr-preview/pr-1029/component---docs-introduction-mdx-53424fcd5b068bb753bd.js deleted file mode 100644 index cdee74f76..000000000 --- a/pr-preview/pr-1029/component---docs-introduction-mdx-53424fcd5b068bb753bd.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{iQkD:function(e,t,n){"use strict";n.r(t),n.d(t,"_frontmatter",(function(){return p})),n.d(t,"default",(function(){return b}));var o=n("wx14"),a=n("Ff2n"),i=(n("q1tI"),n("7ljp")),r=n("hhGP"),c=n("oteF"),s=n("EN1A");n("qKvR");const l=["components"],p={};void 0!==p&&p&&p===Object(p)&&Object.isExtensible(p)&&!Object.prototype.hasOwnProperty.call(p,"__filemeta")&&Object.defineProperty(p,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/introduction.mdx"}});const u={_frontmatter:p},d=r.a;function b(e){let{components:t}=e,n=Object(a.a)(e,l);return Object(i.b)(d,Object(o.a)({},u,n,{components:t,mdxType:"MDXLayout"}),Object(i.b)(s.a,{mdxType:"Catcher"}),Object(i.b)("h2",{id:"highlights"},"Highlights"),Object(i.b)(c.a,{elems:{Clean:"The Jsonnet language expresses your Kubernetes apps more clearly than YAML ever did",Reusable:"Build application libraries, import them anywhere and even share them on GitHub!",Concise:"Using the Kubernetes library, you will never see boilerplate again!",Confidence:"Stop guessing and use powerful diff to know the exact changes in advance","Production ready":"Tanka deploys Grafana Cloud and many more production setups","Open Source":"Just like the popular Grafana and Loki projects, Tanka is fully open-source"},mdxType:"Highlights"}))}void 0!==b&&b&&b===Object(b)&&Object.isExtensible(b)&&!Object.prototype.hasOwnProperty.call(b,"__filemeta")&&Object.defineProperty(b,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/introduction.mdx"}}),b.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-introduction-mdx-53424fcd5b068bb753bd.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-introduction-mdx-53424fcd5b068bb753bd.js.map b/pr-preview/pr-1029/component---docs-introduction-mdx-53424fcd5b068bb753bd.js.map deleted file mode 100644 index d338695b8..000000000 --- a/pr-preview/pr-1029/component---docs-introduction-mdx-53424fcd5b068bb753bd.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/introduction.mdx"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","Catcher","Highlights","elems","Clean","Reusable","Concise","Confidence","isMDXComponent"],"mappings":"iTAQaA,EAAe,QAAG,IAAAA,UAAAC,OAAAD,IAAAC,OAAAC,aAAAF,KAAAC,OAAAE,UAAAC,eAAAC,KAAAL,EAAA,eAAAC,OAAAK,eAAAN,EAAA,cAAAO,cAAA,EAAAC,MAAA,CAAAC,KAAA,eAAAC,SAAA,2BAC/B,MAAMC,EAAc,CAClBX,gBAEIY,EAAYC,IACH,SAASC,EAAUC,GAG/B,IAHgC,WACjCC,GAEDD,EADIE,EAAKC,YAAAH,EAAAI,GAER,OAAOC,YAACR,EAASS,YAAA,GAAKV,EAAiBM,EAAK,CAAED,WAAYA,EAAYM,QAAQ,cAI5EF,YAACG,IAAO,CAACD,QAAQ,YACjBF,YAAA,MACE,GAAM,cAAY,cAEpBA,YAACI,IAAU,CAACC,MAAO,CACjBC,MAAO,sFACPC,SAAU,mFACVC,QAAS,sEACTC,WAAY,2EACZ,mBAAoB,8DACpB,cAAe,+EACdP,QAAQ,qBAGd,IAAAR,UAAAb,OAAAa,IAAAb,OAAAC,aAAAY,KAAAb,OAAAE,UAAAC,eAAAC,KAAAS,EAAA,eAAAb,OAAAK,eAAAQ,EAAA,cAAAP,cAAA,EAAAC,MAAA,CAAAC,KAAA,aAAAC,SAAA,2BAEDI,EAAWgB,gBAAiB","file":"component---docs-introduction-mdx-53424fcd5b068bb753bd.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nimport { Highlights } from \"./home\";\nimport { Catcher } from \"../src/components/home\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n\n \n

      {`Highlights`}

      \n \n\n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-jsonnet-injecting-values-md-a2e9fadf417770db1b80.js b/pr-preview/pr-1029/component---docs-jsonnet-injecting-values-md-a2e9fadf417770db1b80.js deleted file mode 100644 index e34ca7ab9..000000000 --- a/pr-preview/pr-1029/component---docs-jsonnet-injecting-values-md-a2e9fadf417770db1b80.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{"3fvT":function(e,a,t){"use strict";t.r(a),t.d(a,"_frontmatter",(function(){return r})),t.d(a,"default",(function(){return o}));var n=t("wx14"),s=t("Ff2n"),c=(t("q1tI"),t("7ljp")),m=t("hhGP");t("qKvR");const l=["components"],r={};void 0!==r&&r&&r===Object(r)&&Object.isExtensible(r)&&!Object.prototype.hasOwnProperty.call(r,"__filemeta")&&Object.defineProperty(r,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/jsonnet/injecting-values.md"}});const p={_frontmatter:r},b=m.a;function o(e){let{components:a}=e,t=Object(s.a)(e,l);return Object(c.b)(b,Object(n.a)({},p,t,{components:a,mdxType:"MDXLayout"}),Object(c.b)("h1",{id:"injecting-values"},"Injecting Values"),Object(c.b)("p",null,"Sometimes it might be required to pass externally acquired data into Jsonnet."),Object(c.b)("p",null,"There are three ways of doing so:"),Object(c.b)("ol",null,Object(c.b)("li",{parentName:"ol"},Object(c.b)("a",{parentName:"li",href:"#json-files"},"JSON files")),Object(c.b)("li",{parentName:"ol"},Object(c.b)("a",{parentName:"li",href:"#external-variables"},"External variables")),Object(c.b)("li",{parentName:"ol"},Object(c.b)("a",{parentName:"li",href:"#top-level-arguments"},"Top level arguments"))),Object(c.b)("p",null,"Also check out the ",Object(c.b)("a",{parentName:"p",href:"https://jsonnet.org/ref/language.html#passing-data-to-jsonnet"},"official Jsonnet docs on this\ntopic"),"."),Object(c.b)("h2",{id:"json-files"},"JSON files"),Object(c.b)("p",null,"Jsonnet is a superset of JSON, it treats any JSON as valid Jsonnet. Because many\nsystems can be told to output their data in JSON format, this provides a pretty\ngood interface between those."),Object(c.b)("p",null,"For example, your build tooling like ",Object(c.b)("inlineCode",{parentName:"p"},"make")," could acquire secrets from systems such as\n",Object(c.b)("a",{parentName:"p",href:"https://www.vaultproject.io/"},"Vault"),", etc. and write that into ",Object(c.b)("inlineCode",{parentName:"p"},"secrets.json"),"."),Object(c.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(c.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(c.b)("span",{parentName:"span",className:"mtk1"}," secrets "),Object(c.b)("span",{parentName:"span",className:"mtk12"},"="),Object(c.b)("span",{parentName:"span",className:"mtk1"}," "),Object(c.b)("span",{parentName:"span",className:"mtk4"},"import"),Object(c.b)("span",{parentName:"span",className:"mtk1"}," "),Object(c.b)("span",{parentName:"span",className:"mtk6"},'"secrets.json"'),Object(c.b)("span",{parentName:"span",className:"mtk1"},";")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," "),Object(c.b)("span",{parentName:"span",className:"mtk10"},"foo:"),Object(c.b)("span",{parentName:"span",className:"mtk1"}," secrets.myPassword,")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(c.b)("blockquote",null,Object(c.b)("p",{parentName:"blockquote"},Object(c.b)("strong",{parentName:"p"},"Note"),": Using ",Object(c.b)("inlineCode",{parentName:"p"},"import")," with JSON treats it as Jsonnet, so make sure to not\nuse it with untrusted code.",Object(c.b)("br",{parentName:"p"}),"\n","A safer, but more verbose, alternative is ",Object(c.b)("inlineCode",{parentName:"p"},"std.parseJson(importstr 'path_to_json.json')"))),Object(c.b)("h2",{id:"external-variables"},"External variables"),Object(c.b)("p",null,"Another way of passing values from the outside are external variables, which are specified like so:"),Object(c.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(c.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk3 mtki"},"# strings")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"},"$ tk show "),Object(c.b)("span",{parentName:"span",className:"mtk9"},"."),Object(c.b)("span",{parentName:"span",className:"mtk1"}," --ext-str hello=world")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk3 mtki"},"# any Jsonnet snippet")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"},"$ tk show "),Object(c.b)("span",{parentName:"span",className:"mtk9"},"."),Object(c.b)("span",{parentName:"span",className:"mtk1"}," --ext-code foo=4 --ext-code bar="),Object(c.b)("span",{parentName:"span",className:"mtk5"},"'"),Object(c.b)("span",{parentName:"span",className:"mtk6"},"[ 1, 3 ]"),Object(c.b)("span",{parentName:"span",className:"mtk5"},"'")))),Object(c.b)("p",null,"They can be accessed using ",Object(c.b)("inlineCode",{parentName:"p"},"std.extVar")," and the name given to them on the command line:"),Object(c.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(c.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," "),Object(c.b)("span",{parentName:"span",className:"mtk10"},"foo:"),Object(c.b)("span",{parentName:"span",className:"mtk1"}," std."),Object(c.b)("span",{parentName:"span",className:"mtk9"},"extVar"),Object(c.b)("span",{parentName:"span",className:"mtk1"},"("),Object(c.b)("span",{parentName:"span",className:"mtk6"},"'foo'"),Object(c.b)("span",{parentName:"span",className:"mtk1"},"), "),Object(c.b)("span",{parentName:"span",className:"mtk3 mtki"},"// 4, integer")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," "),Object(c.b)("span",{parentName:"span",className:"mtk10"},"bar:"),Object(c.b)("span",{parentName:"span",className:"mtk1"}," std."),Object(c.b)("span",{parentName:"span",className:"mtk9"},"extVar"),Object(c.b)("span",{parentName:"span",className:"mtk1"},"("),Object(c.b)("span",{parentName:"span",className:"mtk6"},"'bar'"),Object(c.b)("span",{parentName:"span",className:"mtk1"},"), "),Object(c.b)("span",{parentName:"span",className:"mtk3 mtki"},"// [ 1, 3 ], array")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(c.b)("blockquote",null,Object(c.b)("p",{parentName:"blockquote"},Object(c.b)("strong",{parentName:"p"},"Warning"),": External variables are directly accessible in all parts of the\nconfiguration, which can make it difficult to track where they are used and\nwhat effect they have on the final result.\nTry to use ",Object(c.b)("a",{parentName:"p",href:"#top-level-arguments"},"Top Level Arguments")," instead.")),Object(c.b)("h2",{id:"top-level-arguments"},"Top Level Arguments"),Object(c.b)("p",null,"Usually with Tanka, your ",Object(c.b)("inlineCode",{parentName:"p"},"main.jsonnet")," holds an object at the top level (most\nouter type in the generated JSON):"),Object(c.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(c.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk3 mtki"},"// main.jsonnet")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," "),Object(c.b)("span",{parentName:"span",className:"mtk3 mtki"},"/* your resources */")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(c.b)("p",null,"Another type of Jsonnet that naturally accepts parameters is the ",Object(c.b)("inlineCode",{parentName:"p"},"function"),".\nWhen the Jsonnet compiler finds a function at the top level, it invokes it and\nallows passing parameter values from the command line:"),Object(c.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(c.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk3 mtki"},"// Actual output (object) returned by function, which is taking parameters and default values")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk9"},"function"),Object(c.b)("span",{parentName:"span",className:"mtk1"},"(who, msg="),Object(c.b)("span",{parentName:"span",className:"mtk6"},'"Hello %s!"'),Object(c.b)("span",{parentName:"span",className:"mtk1"},") {")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," "),Object(c.b)("span",{parentName:"span",className:"mtk10"},"hello:"),Object(c.b)("span",{parentName:"span",className:"mtk1"}," msg "),Object(c.b)("span",{parentName:"span",className:"mtk12"},"%"),Object(c.b)("span",{parentName:"span",className:"mtk1"}," who")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(c.b)("p",null,"Here, ",Object(c.b)("inlineCode",{parentName:"p"},"who")," needs a value while ",Object(c.b)("inlineCode",{parentName:"p"},"msg")," has a default. This can be invoked like so:"),Object(c.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(c.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"},"$ tk show "),Object(c.b)("span",{parentName:"span",className:"mtk9"},"."),Object(c.b)("span",{parentName:"span",className:"mtk1"}," --tla-str who=John")))),Object(c.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==o&&o&&o===Object(o)&&Object.isExtensible(o)&&!Object.prototype.hasOwnProperty.call(o,"__filemeta")&&Object.defineProperty(o,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/jsonnet/injecting-values.md"}}),o.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-jsonnet-injecting-values-md-a2e9fadf417770db1b80.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-jsonnet-injecting-values-md-a2e9fadf417770db1b80.js.map b/pr-preview/pr-1029/component---docs-jsonnet-injecting-values-md-a2e9fadf417770db1b80.js.map deleted file mode 100644 index 2bc37c0dc..000000000 --- a/pr-preview/pr-1029/component---docs-jsonnet-injecting-values-md-a2e9fadf417770db1b80.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/jsonnet/injecting-values.md"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","isMDXComponent"],"mappings":"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","file":"component---docs-jsonnet-injecting-values-md-a2e9fadf417770db1b80.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`Injecting Values`}

      \n

      {`Sometimes it might be required to pass externally acquired data into Jsonnet.`}

      \n

      {`There are three ways of doing so:`}

      \n
        \n
      1. {`JSON files`}
      2. \n
      3. {`External variables`}
      4. \n
      5. {`Top level arguments`}
      6. \n
      \n

      {`Also check out the `}{`official Jsonnet docs on this\ntopic`}{`.`}

      \n

      {`JSON files`}

      \n

      {`Jsonnet is a superset of JSON, it treats any JSON as valid Jsonnet. Because many\nsystems can be told to output their data in JSON format, this provides a pretty\ngood interface between those.`}

      \n

      {`For example, your build tooling like `}{`make`}{` could acquire secrets from systems such as\n`}{`Vault`}{`, etc. and write that into `}{`secrets.json`}{`.`}

      \n
      {`local`}{` secrets `}{`=`}{` `}{`import`}{` `}{`\"secrets.json\"`}{`;`}{`\n`}{`\n`}{`{`}{`\n`}{`  `}{`foo:`}{` secrets.myPassword,`}{`\n`}{`}`}
      \n
      \n

      {`Note`}{`: Using `}{`import`}{` with JSON treats it as Jsonnet, so make sure to not\nuse it with untrusted code.`}

      {`\n`}{`A safer, but more verbose, alternative is `}{`std.parseJson(importstr 'path_to_json.json')`}

      \n
      \n

      {`External variables`}

      \n

      {`Another way of passing values from the outside are external variables, which are specified like so:`}

      \n
      {`# strings`}{`\n`}{`$ tk show `}{`.`}{` --ext-str hello=world`}{`\n`}{`\n`}{`# any Jsonnet snippet`}{`\n`}{`$ tk show `}{`.`}{` --ext-code foo=4 --ext-code bar=`}{`'`}{`[ 1, 3 ]`}{`'`}
      \n

      {`They can be accessed using `}{`std.extVar`}{` and the name given to them on the command line:`}

      \n
      {`{`}{`\n`}{`  `}{`foo:`}{` std.`}{`extVar`}{`(`}{`'foo'`}{`), `}{`// 4, integer`}{`\n`}{`  `}{`bar:`}{` std.`}{`extVar`}{`(`}{`'bar'`}{`), `}{`// [ 1, 3 ], array`}{`\n`}{`}`}
      \n
      \n

      {`Warning`}{`: External variables are directly accessible in all parts of the\nconfiguration, which can make it difficult to track where they are used and\nwhat effect they have on the final result.\nTry to use `}{`Top Level Arguments`}{` instead.`}

      \n
      \n

      {`Top Level Arguments`}

      \n

      {`Usually with Tanka, your `}{`main.jsonnet`}{` holds an object at the top level (most\nouter type in the generated JSON):`}

      \n
      {`// main.jsonnet`}{`\n`}{`{`}{`\n`}{`  `}{`/* your resources */`}{`\n`}{`}`}
      \n

      {`Another type of Jsonnet that naturally accepts parameters is the `}{`function`}{`.\nWhen the Jsonnet compiler finds a function at the top level, it invokes it and\nallows passing parameter values from the command line:`}

      \n
      {`// Actual output (object) returned by function, which is taking parameters and default values`}{`\n`}{`function`}{`(who, msg=`}{`\"Hello %s!\"`}{`) {`}{`\n`}{`  `}{`hello:`}{` msg `}{`%`}{` who`}{`\n`}{`}`}
      \n

      {`Here, `}{`who`}{` needs a value while `}{`msg`}{` has a default. This can be invoked like so:`}

      \n
      {`$ tk show `}{`.`}{` --tla-str who=John`}
      \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-jsonnet-main-md-041efed1c891707fb3eb.js b/pr-preview/pr-1029/component---docs-jsonnet-main-md-041efed1c891707fb3eb.js deleted file mode 100644 index 9f6c86b44..000000000 --- a/pr-preview/pr-1029/component---docs-jsonnet-main-md-041efed1c891707fb3eb.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{hUCp:function(a,e,s){"use strict";s.r(e),s.d(e,"_frontmatter",(function(){return b})),s.d(e,"default",(function(){return r}));var t=s("wx14"),n=s("Ff2n"),m=(s("q1tI"),s("7ljp")),p=s("hhGP");s("qKvR");const c=["components"],b={};void 0!==b&&b&&b===Object(b)&&Object.isExtensible(b)&&!Object.prototype.hasOwnProperty.call(b,"__filemeta")&&Object.defineProperty(b,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/jsonnet/main.md"}});const N={_frontmatter:b},l=p.a;function r(a){let{components:e}=a,s=Object(n.a)(a,c);return Object(m.b)(l,Object(t.a)({},N,s,{components:e,mdxType:"MDXLayout"}),Object(m.b)("h1",{id:"mainjsonnet"},"main.jsonnet"),Object(m.b)("p",null,"The most important file is called ",Object(m.b)("inlineCode",{parentName:"p"},"main.jsonnet"),", because this is where Tanka\ninvokes the Jsonnet compiler. Every single line of Jsonnet, including\nimports, functions and whatnot is then evaluated until a single, very big JSON\nobject is left.",Object(m.b)("br",{parentName:"p"}),"\n","This object is returned to Tanka and includes all of your Kubernetes manifests\nsomewhere in it, most probably deeply nested."),Object(m.b)("p",null,"But as ",Object(m.b)("inlineCode",{parentName:"p"},"kubectl")," expects a yaml stream, and not a nested tree, Tanka needs to\nextract your objects first. To do this, it traverses the tree until it finds\nsomething that looks like a Kubernetes manifest. An object is considered valid\nwhen it has both, ",Object(m.b)("inlineCode",{parentName:"p"},"kind")," and ",Object(m.b)("inlineCode",{parentName:"p"},"apiVersion")," set."),Object(m.b)("p",null,"To ensure Tanka can find your manifests, the output of your Jsonnet needs to\nhave one of the following structures:"),Object(m.b)("h2",{id:"deeply-nested-object-recommended"},"Deeply nested object (Recommended)"),Object(m.b)("p",null,"Most commonly used is a single big object that includes all manifests as\nleaf-nodes."),Object(m.b)("p",null,"How deeply encapsulated the actual object is does not matter, Tanka will\ntraverse down until it finds something that is valid."),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"json"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"prometheus"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk7"},"service"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// Service nested one level")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk4"},"apiVersion"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"v1"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk4"},"kind"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"Service"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk4"},"metadata"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"promSvc"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"},")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk7"},"deployment"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk4"},"apiVersion"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"apps/v1"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},","),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// apiVersion ..")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk4"},"kind"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"Deployment"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},","),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// .. and kind are required to identify an object.")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk4"},"metadata"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"prom"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"},")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"web"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk7"},"nginx"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk4"},"deployment"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// Deployment nested two levels")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk10"},"apiVersion"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"apps/v1"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk10"},"kind"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"Deployment"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk10"},"metadata"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk16"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"nginx"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")))),Object(m.b)("p",null,"Using this technique has the big benefit that it is self-documenting, as the\nnesting of keys can be used to logically group related manifests, for example by\napplication."),Object(m.b)("p",null,"An encapsulation level of zero is also possible, which means nothing else than\nregular object like it could be obtained from ",Object(m.b)("inlineCode",{parentName:"p"},"kubectl show -o json"),":"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"json"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"apiVersion"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"v1"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"kind"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"Service"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"metadata"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk7"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"foo"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")))),Object(m.b)("h2",{id:"array"},"Array"),Object(m.b)("p",null,"Using an array of objects is also fine:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"json"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"[")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"apiVersion"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"v1"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"kind"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"Service"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"metadata"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk7"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"promSvc"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"},")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"apiVersion"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"apps/v1"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"kind"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"Deployment"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"metadata"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk7"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"prom"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"]")))),Object(m.b)("h3",{id:"list-type"},"List type"),Object(m.b)("p",null,"Users of ",Object(m.b)("inlineCode",{parentName:"p"},"kubectl")," might have had contact with a type called ",Object(m.b)("inlineCode",{parentName:"p"},"List"),". It is not\npart of the official Kubernetes API but rather a pseudo-type introduced by\n",Object(m.b)("inlineCode",{parentName:"p"},"kubectl")," for dealing with multiple objects at once. Thus, Tanka does not\nsupport it out of the box."),Object(m.b)("p",null,"To take full advantage of Tankas features, you can manually flatten it:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," list "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"apiVersion:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"v1"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"kind:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"List"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"items:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," [")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"apiVersion:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"v1"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"kind:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"Service"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"/* ... */")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"/* ... */")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," ]")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"};")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# expose the `items` array on the top level:")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"list.items")))),Object(m.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==r&&r&&r===Object(r)&&Object.isExtensible(r)&&!Object.prototype.hasOwnProperty.call(r,"__filemeta")&&Object.defineProperty(r,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/jsonnet/main.md"}}),r.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-jsonnet-main-md-041efed1c891707fb3eb.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-jsonnet-main-md-041efed1c891707fb3eb.js.map b/pr-preview/pr-1029/component---docs-jsonnet-main-md-041efed1c891707fb3eb.js.map deleted file mode 100644 index 9680ded85..000000000 --- a/pr-preview/pr-1029/component---docs-jsonnet-main-md-041efed1c891707fb3eb.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/jsonnet/main.md"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","isMDXComponent"],"mappings":"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","file":"component---docs-jsonnet-main-md-041efed1c891707fb3eb.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`main.jsonnet`}

      \n

      {`The most important file is called `}{`main.jsonnet`}{`, because this is where Tanka\ninvokes the Jsonnet compiler. Every single line of Jsonnet, including\nimports, functions and whatnot is then evaluated until a single, very big JSON\nobject is left.`}

      {`\n`}{`This object is returned to Tanka and includes all of your Kubernetes manifests\nsomewhere in it, most probably deeply nested.`}

      \n

      {`But as `}{`kubectl`}{` expects a yaml stream, and not a nested tree, Tanka needs to\nextract your objects first. To do this, it traverses the tree until it finds\nsomething that looks like a Kubernetes manifest. An object is considered valid\nwhen it has both, `}{`kind`}{` and `}{`apiVersion`}{` set.`}

      \n

      {`To ensure Tanka can find your manifests, the output of your Jsonnet needs to\nhave one of the following structures:`}

      \n

      {`Deeply nested object (Recommended)`}

      \n

      {`Most commonly used is a single big object that includes all manifests as\nleaf-nodes.`}

      \n

      {`How deeply encapsulated the actual object is does not matter, Tanka will\ntraverse down until it finds something that is valid.`}

      \n
      {`{`}{`\n`}{`  `}{`\"`}{`prometheus`}{`\"`}{`:`}{` `}{`{`}{`\n`}{`    `}{`\"`}{`service`}{`\"`}{`:`}{` `}{`{`}{`\n`}{`      `}{`// Service nested one level`}{`\n`}{`      `}{`\"`}{`apiVersion`}{`\"`}{`:`}{` `}{`\"`}{`v1`}{`\"`}{`,`}{`\n`}{`      `}{`\"`}{`kind`}{`\"`}{`:`}{` `}{`\"`}{`Service`}{`\"`}{`,`}{`\n`}{`      `}{`\"`}{`metadata`}{`\"`}{`:`}{` `}{`{`}{`\n`}{`        `}{`\"`}{`name`}{`\"`}{`:`}{` `}{`\"`}{`promSvc`}{`\"`}{`\n`}{`      `}{`}`}{`\n`}{`    `}{`},`}{`\n`}{`    `}{`\"`}{`deployment`}{`\"`}{`:`}{` `}{`{`}{`\n`}{`      `}{`\"`}{`apiVersion`}{`\"`}{`:`}{` `}{`\"`}{`apps/v1`}{`\"`}{`,`}{` `}{`// apiVersion ..`}{`\n`}{`      `}{`\"`}{`kind`}{`\"`}{`:`}{` `}{`\"`}{`Deployment`}{`\"`}{`,`}{` `}{`// .. and kind are required to identify an object.`}{`\n`}{`      `}{`\"`}{`metadata`}{`\"`}{`:`}{` `}{`{`}{`\n`}{`        `}{`\"`}{`name`}{`\"`}{`:`}{` `}{`\"`}{`prom`}{`\"`}{`\n`}{`      `}{`}`}{`\n`}{`    `}{`}`}{`\n`}{`  `}{`},`}{`\n`}{`  `}{`\"`}{`web`}{`\"`}{`:`}{` `}{`{`}{`\n`}{`    `}{`\"`}{`nginx`}{`\"`}{`:`}{` `}{`{`}{`\n`}{`      `}{`\"`}{`deployment`}{`\"`}{`:`}{` `}{`{`}{`\n`}{`        `}{`// Deployment nested two levels`}{`\n`}{`        `}{`\"`}{`apiVersion`}{`\"`}{`:`}{` `}{`\"`}{`apps/v1`}{`\"`}{`,`}{`\n`}{`        `}{`\"`}{`kind`}{`\"`}{`:`}{` `}{`\"`}{`Deployment`}{`\"`}{`,`}{`\n`}{`        `}{`\"`}{`metadata`}{`\"`}{`:`}{` `}{`{`}{`\n`}{`          `}{`\"`}{`name`}{`\"`}{`:`}{` `}{`\"`}{`nginx`}{`\"`}{`\n`}{`        `}{`}`}{`\n`}{`      `}{`}`}{`\n`}{`    `}{`}`}{`\n`}{`  `}{`}`}{`\n`}{`}`}
      \n

      {`Using this technique has the big benefit that it is self-documenting, as the\nnesting of keys can be used to logically group related manifests, for example by\napplication.`}

      \n

      {`An encapsulation level of zero is also possible, which means nothing else than\nregular object like it could be obtained from `}{`kubectl show -o json`}{`:`}

      \n
      {`{`}{`\n`}{`  `}{`\"`}{`apiVersion`}{`\"`}{`:`}{` `}{`\"`}{`v1`}{`\"`}{`,`}{`\n`}{`  `}{`\"`}{`kind`}{`\"`}{`:`}{` `}{`\"`}{`Service`}{`\"`}{`,`}{`\n`}{`  `}{`\"`}{`metadata`}{`\"`}{`:`}{` `}{`{`}{`\n`}{`    `}{`\"`}{`name`}{`\"`}{`:`}{` `}{`\"`}{`foo`}{`\"`}{`\n`}{`  `}{`}`}{`\n`}{`}`}
      \n

      {`Array`}

      \n

      {`Using an array of objects is also fine:`}

      \n
      {`[`}{`\n`}{`  `}{`{`}{`\n`}{`    `}{`\"`}{`apiVersion`}{`\"`}{`:`}{` `}{`\"`}{`v1`}{`\"`}{`,`}{`\n`}{`    `}{`\"`}{`kind`}{`\"`}{`:`}{` `}{`\"`}{`Service`}{`\"`}{`,`}{`\n`}{`    `}{`\"`}{`metadata`}{`\"`}{`:`}{` `}{`{`}{`\n`}{`      `}{`\"`}{`name`}{`\"`}{`:`}{` `}{`\"`}{`promSvc`}{`\"`}{`\n`}{`    `}{`}`}{`\n`}{`  `}{`},`}{`\n`}{`  `}{`{`}{`\n`}{`    `}{`\"`}{`apiVersion`}{`\"`}{`:`}{` `}{`\"`}{`apps/v1`}{`\"`}{`,`}{`\n`}{`    `}{`\"`}{`kind`}{`\"`}{`:`}{` `}{`\"`}{`Deployment`}{`\"`}{`,`}{`\n`}{`    `}{`\"`}{`metadata`}{`\"`}{`:`}{` `}{`{`}{`\n`}{`      `}{`\"`}{`name`}{`\"`}{`:`}{` `}{`\"`}{`prom`}{`\"`}{`\n`}{`    `}{`}`}{`\n`}{`  `}{`}`}{`\n`}{`]`}
      \n

      {`List type`}

      \n

      {`Users of `}{`kubectl`}{` might have had contact with a type called `}{`List`}{`. It is not\npart of the official Kubernetes API but rather a pseudo-type introduced by\n`}{`kubectl`}{` for dealing with multiple objects at once. Thus, Tanka does not\nsupport it out of the box.`}

      \n

      {`To take full advantage of Tankas features, you can manually flatten it:`}

      \n
      {`local`}{` list `}{`=`}{` {`}{`\n`}{`  `}{`apiVersion:`}{` `}{`\"v1\"`}{`,`}{`\n`}{`  `}{`kind:`}{` `}{`\"List\"`}{`,`}{`\n`}{`  `}{`items:`}{` [`}{`\n`}{`    {`}{`\n`}{`      `}{`apiVersion:`}{` `}{`\"v1\"`}{`,`}{`\n`}{`      `}{`kind:`}{` `}{`\"Service\"`}{`,`}{`\n`}{`      `}{`/* ... */`}{`\n`}{`    }`}{`\n`}{`    `}{`/* ... */`}{`\n`}{`  ]`}{`\n`}{`};`}{`\n`}{`\n`}{`# expose the \\`items\\` array on the top level:`}{`\n`}{`list.items`}
      \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-jsonnet-native-functions-md-2b62620b62d073a3473b.js b/pr-preview/pr-1029/component---docs-jsonnet-native-functions-md-2b62620b62d073a3473b.js deleted file mode 100644 index ee6bf3f6e..000000000 --- a/pr-preview/pr-1029/component---docs-jsonnet-native-functions-md-2b62620b62d073a3473b.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{"3rzr":function(a,e,s){"use strict";s.r(e),s.d(e,"_frontmatter",(function(){return b})),s.d(e,"default",(function(){return r}));var t=s("wx14"),n=s("Ff2n"),m=(s("q1tI"),s("7ljp")),p=s("hhGP");s("qKvR");const c=["components"],b={};void 0!==b&&b&&b===Object(b)&&Object.isExtensible(b)&&!Object.prototype.hasOwnProperty.call(b,"__filemeta")&&Object.defineProperty(b,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/jsonnet/native-functions.md"}});const N={_frontmatter:b},l=p.a;function r(a){let{components:e}=a,s=Object(n.a)(a,c);return Object(m.b)(l,Object(t.a)({},N,s,{components:e,mdxType:"MDXLayout"}),Object(m.b)("h1",{id:"native-functions"},"Native Functions"),Object(m.b)("p",null,"Tanka extends Jsonnet using ",Object(m.b)("em",{parentName:"p"},"native functions"),", offering additional functionality not yet available in the standard library."),Object(m.b)("p",null,"To use them in your code, you need to access them using ",Object(m.b)("inlineCode",{parentName:"p"},"std.native")," from the standard library:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"someField:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," std."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"native"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk6"},"''"),Object(m.b)("span",{parentName:"span",className:"mtk1"},")("),Object(m.b)("span",{parentName:"span",className:"mtk12"},"<"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"arguments"),Object(m.b)("span",{parentName:"span",className:"mtk12"},">"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"),")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("p",null,Object(m.b)("inlineCode",{parentName:"p"},"std.native")," takes the native function's name as a ",Object(m.b)("inlineCode",{parentName:"p"},"string")," argument and returns a ",Object(m.b)("inlineCode",{parentName:"p"},"function"),", which is called using the second set of parentheses."),Object(m.b)("h2",{id:"sha256"},"sha256"),Object(m.b)("h3",{id:"signature"},"Signature"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"ts"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk9"},"sha256"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk8"},"string"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk8"},"str"),Object(m.b)("span",{parentName:"span",className:"mtk1"},") "),Object(m.b)("span",{parentName:"span",className:"mtk8"},"string")))),Object(m.b)("p",null,Object(m.b)("inlineCode",{parentName:"p"},"sha256")," computes the SHA256 sum of the given string."),Object(m.b)("h3",{id:"examples"},"Examples"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"sum:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," std."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"native"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'sha256'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},")("),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'Hello, World!'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"),")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("p",null,"Evaluating with Tanka results in the JSON:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"json"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"sum"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")))),Object(m.b)("h2",{id:"parsejson"},"parseJson"),Object(m.b)("h3",{id:"signature-1"},"Signature"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"ts"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk9"},"parseJson"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk8"},"string"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk8"},"json"),Object(m.b)("span",{parentName:"span",className:"mtk1"},") "),Object(m.b)("span",{parentName:"span",className:"mtk7"},"Object")))),Object(m.b)("p",null,Object(m.b)("inlineCode",{parentName:"p"},"parseJson")," parses a json string and returns the respective Jsonnet type (",Object(m.b)("inlineCode",{parentName:"p"},"Object"),", ",Object(m.b)("inlineCode",{parentName:"p"},"Array"),", etc)."),Object(m.b)("h3",{id:"examples-1"},"Examples"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"array:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," std."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"native"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'parseJson'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},")("),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'[0, 1, 2]'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"),")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"object:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," std."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"native"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'parseJson'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},")("),Object(m.b)("span",{parentName:"span",className:"mtk6"},'\'{ "foo": "bar" }\''),Object(m.b)("span",{parentName:"span",className:"mtk1"},"),")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("p",null,"Evaluating with Tanka results in the JSON:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"json"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"array"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"["),Object(m.b)("span",{parentName:"span",className:"mtk4"},"0"),Object(m.b)("span",{parentName:"span",className:"mtk5"},","),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"1"),Object(m.b)("span",{parentName:"span",className:"mtk5"},","),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"2"),Object(m.b)("span",{parentName:"span",className:"mtk5"},"],")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"object"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk7"},"foo"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"bar"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")))),Object(m.b)("h2",{id:"parseyaml"},"parseYaml"),Object(m.b)("h3",{id:"signature-2"},"Signature"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"ts"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk9"},"parseYaml"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk8"},"string"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk8"},"yaml"),Object(m.b)("span",{parentName:"span",className:"mtk1"},") []"),Object(m.b)("span",{parentName:"span",className:"mtk7"},"Object")))),Object(m.b)("p",null,Object(m.b)("inlineCode",{parentName:"p"},"parseYaml")," wraps ",Object(m.b)("inlineCode",{parentName:"p"},"yaml.Unmarshal")," to convert a string of yaml document(s) into\na set of dicts. If ",Object(m.b)("inlineCode",{parentName:"p"},"yaml")," only contains a single document, a single value array\nwill be returned."),Object(m.b)("h3",{id:"examples-2"},"Examples"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"yaml:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," std."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"native"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'parseYaml'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},")("),Object(m.b)("span",{parentName:"span",className:"mtk6"},"|||")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk6"}," ---")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk6"}," foo: bar")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk6"}," ---")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk6"}," bar: baz")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk6"}," |||"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"),")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("p",null,"Evaluating with Tanka results in the JSON:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"json"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"yaml"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"[")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk7"},"foo"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"bar"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"},")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk7"},"bar"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"baz"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"]")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")))),Object(m.b)("h2",{id:"manifestjsonfromjson"},"manifestJsonFromJson"),Object(m.b)("h3",{id:"signature-3"},"Signature"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"ts"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk9"},"manifestJsonFromJson"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk8"},"string"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk8"},"json"),Object(m.b)("span",{parentName:"span",className:"mtk5"},","),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk8"},"int"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk8"},"indent"),Object(m.b)("span",{parentName:"span",className:"mtk1"},") "),Object(m.b)("span",{parentName:"span",className:"mtk8"},"string")))),Object(m.b)("p",null,Object(m.b)("inlineCode",{parentName:"p"},"manifestJsonFromJson")," reserializes JSON and allows to change the indentation."),Object(m.b)("h3",{id:"examples-3"},"Examples"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"indentWithEightSpaces:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," std."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"native"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'manifestJsonFromJson'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},")("),Object(m.b)("span",{parentName:"span",className:"mtk6"},'\'{ "foo": { "bar": "baz" } }\''),Object(m.b)("span",{parentName:"span",className:"mtk1"},", "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"8"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"),")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("p",null,"Evaluating with Tanka results in the JSON:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"json"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"indentWithEightSpaces"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"{"),Object(m.b)("span",{parentName:"span",className:"mtk5"},"\\n"),Object(m.b)("span",{parentName:"span",className:"mtk6"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'\\"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"foo"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'\\"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},": {"),Object(m.b)("span",{parentName:"span",className:"mtk5"},"\\n"),Object(m.b)("span",{parentName:"span",className:"mtk6"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'\\"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"bar"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'\\"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},": "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'\\"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"baz"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'\\"\\n'),Object(m.b)("span",{parentName:"span",className:"mtk6"}," }"),Object(m.b)("span",{parentName:"span",className:"mtk5"},"\\n"),Object(m.b)("span",{parentName:"span",className:"mtk6"},"}"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'\\n"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")))),Object(m.b)("h2",{id:"manifestyamlfromjson"},"manifestYamlFromJson"),Object(m.b)("h3",{id:"signature-4"},"Signature"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"ts"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk9"},"manifestYamlFromJson"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk8"},"string"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk8"},"json"),Object(m.b)("span",{parentName:"span",className:"mtk1"},") "),Object(m.b)("span",{parentName:"span",className:"mtk8"},"string")))),Object(m.b)("p",null,Object(m.b)("inlineCode",{parentName:"p"},"manifestYamlFromJson")," serializes a JSON string as a YAML document."),Object(m.b)("h3",{id:"examples-4"},"Examples"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"yaml:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," std."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"native"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'manifestYamlFromJson'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},")("),Object(m.b)("span",{parentName:"span",className:"mtk6"},'\'{ "foo": { "bar": "baz" } }\''),Object(m.b)("span",{parentName:"span",className:"mtk1"},"),")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("p",null,"Evaluating with Tanka results in the JSON:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"json"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"yaml"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"foo:"),Object(m.b)("span",{parentName:"span",className:"mtk5"},"\\n"),Object(m.b)("span",{parentName:"span",className:"mtk6"}," bar: baz"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'\\n"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")))),Object(m.b)("h2",{id:"escapestringregex"},"escapeStringRegex"),Object(m.b)("h3",{id:"signature-5"},"Signature"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"ts"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk9"},"escapeStringRegex"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk8"},"string"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk8"},"s"),Object(m.b)("span",{parentName:"span",className:"mtk1"},") "),Object(m.b)("span",{parentName:"span",className:"mtk8"},"string")))),Object(m.b)("p",null,Object(m.b)("inlineCode",{parentName:"p"},"escapeStringRegex")," escapes all regular expression metacharacters and returns a\nregular expression that matches the literal text."),Object(m.b)("h3",{id:"examples-5"},"Examples"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"escaped:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," std."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"native"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'escapeStringRegex'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},")("),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'\"([0-9]+\"'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"),")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("p",null,"Evaluating with Tanka results in the JSON:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"json"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"escaped"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"\\"\\\\'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"("),Object(m.b)("span",{parentName:"span",className:"mtk5"},"\\\\"),Object(m.b)("span",{parentName:"span",className:"mtk6"},"[0-9"),Object(m.b)("span",{parentName:"span",className:"mtk5"},"\\\\"),Object(m.b)("span",{parentName:"span",className:"mtk6"},"]"),Object(m.b)("span",{parentName:"span",className:"mtk5"},"\\\\"),Object(m.b)("span",{parentName:"span",className:"mtk6"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'\\""')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")))),Object(m.b)("h2",{id:"regexmatch"},"regexMatch"),Object(m.b)("h3",{id:"signature-6"},"Signature"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"ts"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk9"},"regexMatch"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk8"},"string"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk8"},"regex"),Object(m.b)("span",{parentName:"span",className:"mtk5"},","),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk8"},"string"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk8"},"s"),Object(m.b)("span",{parentName:"span",className:"mtk1"},") "),Object(m.b)("span",{parentName:"span",className:"mtk8"},"boolean")))),Object(m.b)("p",null,Object(m.b)("inlineCode",{parentName:"p"},"regexMatch")," returns whether the given string is matched by the given\n",Object(m.b)("a",{parentName:"p",href:"https://github.com/google/re2/wiki/Syntax"},"RE2")," regular expression."),Object(m.b)("h3",{id:"examples-6"},"Examples"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"matched:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," std."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"native"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'regexMatch'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},")("),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'.'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},", "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'a'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"),")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("p",null,"Evaluating with Tanka results in the JSON:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"json"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"matched"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"true")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")))),Object(m.b)("h2",{id:"regexsubst"},"regexSubst"),Object(m.b)("h3",{id:"signature-7"},"Signature"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"ts"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk9"},"regexSubst"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk8"},"string"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk8"},"regex"),Object(m.b)("span",{parentName:"span",className:"mtk5"},","),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk8"},"string"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk8"},"src"),Object(m.b)("span",{parentName:"span",className:"mtk5"},","),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk8"},"string"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk8"},"repl"),Object(m.b)("span",{parentName:"span",className:"mtk1"},") "),Object(m.b)("span",{parentName:"span",className:"mtk8"},"string")))),Object(m.b)("p",null,Object(m.b)("inlineCode",{parentName:"p"},"regexSubst")," replaces all matches of the re2 regular expression with the\nreplacement string."),Object(m.b)("h3",{id:"examples-7"},"Examples"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"substituted:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," std."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"native"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'regexSubst'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},")("),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'p[^m]*'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},", "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'pm'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},", "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'poe'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"),")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("p",null,"Evaluating with Tanka results in the JSON:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"json"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"substituted"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"poem"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")))),Object(m.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==r&&r&&r===Object(r)&&Object.isExtensible(r)&&!Object.prototype.hasOwnProperty.call(r,"__filemeta")&&Object.defineProperty(r,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/jsonnet/native-functions.md"}}),r.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-jsonnet-native-functions-md-2b62620b62d073a3473b.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-jsonnet-native-functions-md-2b62620b62d073a3473b.js.map b/pr-preview/pr-1029/component---docs-jsonnet-native-functions-md-2b62620b62d073a3473b.js.map deleted file mode 100644 index 6115edfe5..000000000 --- a/pr-preview/pr-1029/component---docs-jsonnet-native-functions-md-2b62620b62d073a3473b.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/jsonnet/native-functions.md"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","isMDXComponent"],"mappings":"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","file":"component---docs-jsonnet-native-functions-md-2b62620b62d073a3473b.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`Native Functions`}

      \n

      {`Tanka extends Jsonnet using `}{`native functions`}{`, offering additional functionality not yet available in the standard library.`}

      \n

      {`To use them in your code, you need to access them using `}{`std.native`}{` from the standard library:`}

      \n
      {`{`}{`\n`}{`  `}{`someField:`}{`  std.`}{`native`}{`(`}{`''`}{`)(`}{`<`}{`arguments`}{`>`}{`),`}{`\n`}{`}`}
      \n

      {`std.native`}{` takes the native function's name as a `}{`string`}{` argument and returns a `}{`function`}{`, which is called using the second set of parentheses.`}

      \n

      {`sha256`}

      \n

      {`Signature`}

      \n
      {`sha256`}{`(`}{`string`}{` `}{`str`}{`) `}{`string`}
      \n

      {`sha256`}{` computes the SHA256 sum of the given string.`}

      \n

      {`Examples`}

      \n
      {`{`}{`\n`}{`  `}{`sum:`}{` std.`}{`native`}{`(`}{`'sha256'`}{`)(`}{`'Hello, World!'`}{`),`}{`\n`}{`}`}
      \n

      {`Evaluating with Tanka results in the JSON:`}

      \n
      {`{`}{`\n`}{`  `}{`\"`}{`sum`}{`\"`}{`:`}{` `}{`\"`}{`dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f`}{`\"`}{`\n`}{`}`}
      \n

      {`parseJson`}

      \n

      {`Signature`}

      \n
      {`parseJson`}{`(`}{`string`}{` `}{`json`}{`) `}{`Object`}
      \n

      {`parseJson`}{` parses a json string and returns the respective Jsonnet type (`}{`Object`}{`, `}{`Array`}{`, etc).`}

      \n

      {`Examples`}

      \n
      {`{`}{`\n`}{`  `}{`array:`}{` std.`}{`native`}{`(`}{`'parseJson'`}{`)(`}{`'[0, 1, 2]'`}{`),`}{`\n`}{`  `}{`object:`}{` std.`}{`native`}{`(`}{`'parseJson'`}{`)(`}{`'{ \"foo\": \"bar\" }'`}{`),`}{`\n`}{`}`}
      \n

      {`Evaluating with Tanka results in the JSON:`}

      \n
      {`{`}{`\n`}{`  `}{`\"`}{`array`}{`\"`}{`:`}{` `}{`[`}{`0`}{`,`}{` `}{`1`}{`,`}{` `}{`2`}{`],`}{`\n`}{`  `}{`\"`}{`object`}{`\"`}{`:`}{` `}{`{`}{`\n`}{`    `}{`\"`}{`foo`}{`\"`}{`:`}{` `}{`\"`}{`bar`}{`\"`}{`\n`}{`  `}{`}`}{`\n`}{`}`}
      \n

      {`parseYaml`}

      \n

      {`Signature`}

      \n
      {`parseYaml`}{`(`}{`string`}{` `}{`yaml`}{`) []`}{`Object`}
      \n

      {`parseYaml`}{` wraps `}{`yaml.Unmarshal`}{` to convert a string of yaml document(s) into\na set of dicts. If `}{`yaml`}{` only contains a single document, a single value array\nwill be returned.`}

      \n

      {`Examples`}

      \n
      {`{`}{`\n`}{`  `}{`yaml:`}{` std.`}{`native`}{`(`}{`'parseYaml'`}{`)(`}{`|||`}{`\n`}{`    ---`}{`\n`}{`    foo: bar`}{`\n`}{`    ---`}{`\n`}{`    bar: baz`}{`\n`}{`  |||`}{`),`}{`\n`}{`}`}
      \n

      {`Evaluating with Tanka results in the JSON:`}

      \n
      {`{`}{`\n`}{`  `}{`\"`}{`yaml`}{`\"`}{`:`}{` `}{`[`}{`\n`}{`    `}{`{`}{`\n`}{`      `}{`\"`}{`foo`}{`\"`}{`:`}{` `}{`\"`}{`bar`}{`\"`}{`\n`}{`    `}{`},`}{`\n`}{`    `}{`{`}{`\n`}{`      `}{`\"`}{`bar`}{`\"`}{`:`}{` `}{`\"`}{`baz`}{`\"`}{`\n`}{`    `}{`}`}{`\n`}{`  `}{`]`}{`\n`}{`}`}
      \n

      {`manifestJsonFromJson`}

      \n

      {`Signature`}

      \n
      {`manifestJsonFromJson`}{`(`}{`string`}{` `}{`json`}{`,`}{` `}{`int`}{` `}{`indent`}{`) `}{`string`}
      \n

      {`manifestJsonFromJson`}{` reserializes JSON and allows to change the indentation.`}

      \n

      {`Examples`}

      \n
      {`{`}{`\n`}{`  `}{`indentWithEightSpaces:`}{` std.`}{`native`}{`(`}{`'manifestJsonFromJson'`}{`)(`}{`'{ \"foo\": { \"bar\": \"baz\" } }'`}{`, `}{`8`}{`),`}{`\n`}{`}`}
      \n

      {`Evaluating with Tanka results in the JSON:`}

      \n
      {`{`}{`\n`}{`  `}{`\"`}{`indentWithEightSpaces`}{`\"`}{`:`}{` `}{`\"`}{`{`}{`\\\\n`}{`        `}{`\\\\\"`}{`foo`}{`\\\\\"`}{`: {`}{`\\\\n`}{`                `}{`\\\\\"`}{`bar`}{`\\\\\"`}{`: `}{`\\\\\"`}{`baz`}{`\\\\\"\\\\n`}{`        }`}{`\\\\n`}{`}`}{`\\\\n\"`}{`\n`}{`}`}
      \n

      {`manifestYamlFromJson`}

      \n

      {`Signature`}

      \n
      {`manifestYamlFromJson`}{`(`}{`string`}{` `}{`json`}{`) `}{`string`}
      \n

      {`manifestYamlFromJson`}{` serializes a JSON string as a YAML document.`}

      \n

      {`Examples`}

      \n
      {`{`}{`\n`}{`  `}{`yaml:`}{` std.`}{`native`}{`(`}{`'manifestYamlFromJson'`}{`)(`}{`'{ \"foo\": { \"bar\": \"baz\" } }'`}{`),`}{`\n`}{`}`}
      \n

      {`Evaluating with Tanka results in the JSON:`}

      \n
      {`{`}{`\n`}{`  `}{`\"`}{`yaml`}{`\"`}{`:`}{` `}{`\"`}{`foo:`}{`\\\\n`}{`    bar: baz`}{`\\\\n\"`}{`\n`}{`}`}
      \n

      {`escapeStringRegex`}

      \n

      {`Signature`}

      \n
      {`escapeStringRegex`}{`(`}{`string`}{` `}{`s`}{`) `}{`string`}
      \n

      {`escapeStringRegex`}{` escapes all regular expression metacharacters and returns a\nregular expression that matches the literal text.`}

      \n

      {`Examples`}

      \n
      {`{`}{`\n`}{`  `}{`escaped:`}{` std.`}{`native`}{`(`}{`'escapeStringRegex'`}{`)(`}{`'\"([0-9]+\"'`}{`),`}{`\n`}{`}`}
      \n

      {`Evaluating with Tanka results in the JSON:`}

      \n
      {`{`}{`\n`}{`  `}{`\"`}{`escaped`}{`\"`}{`:`}{` `}{`\"\\\\\"\\\\\\\\`}{`(`}{`\\\\\\\\`}{`[0-9`}{`\\\\\\\\`}{`]`}{`\\\\\\\\`}{`+`}{`\\\\\"\"`}{`\n`}{`}`}
      \n

      {`regexMatch`}

      \n

      {`Signature`}

      \n
      {`regexMatch`}{`(`}{`string`}{` `}{`regex`}{`,`}{` `}{`string`}{` `}{`s`}{`) `}{`boolean`}
      \n

      {`regexMatch`}{` returns whether the given string is matched by the given\n`}{`RE2`}{` regular expression.`}

      \n

      {`Examples`}

      \n
      {`{`}{`\n`}{`  `}{`matched:`}{` std.`}{`native`}{`(`}{`'regexMatch'`}{`)(`}{`'.'`}{`, `}{`'a'`}{`),`}{`\n`}{`}`}
      \n

      {`Evaluating with Tanka results in the JSON:`}

      \n
      {`{`}{`\n`}{`  `}{`\"`}{`matched`}{`\"`}{`:`}{` `}{`true`}{`\n`}{`}`}
      \n

      {`regexSubst`}

      \n

      {`Signature`}

      \n
      {`regexSubst`}{`(`}{`string`}{` `}{`regex`}{`,`}{` `}{`string`}{` `}{`src`}{`,`}{` `}{`string`}{` `}{`repl`}{`) `}{`string`}
      \n

      {`regexSubst`}{` replaces all matches of the re2 regular expression with the\nreplacement string.`}

      \n

      {`Examples`}

      \n
      {`{`}{`\n`}{`  `}{`substituted:`}{` std.`}{`native`}{`(`}{`'regexSubst'`}{`)(`}{`'p[^m]*'`}{`, `}{`'pm'`}{`, `}{`'poe'`}{`),`}{`\n`}{`}`}
      \n

      {`Evaluating with Tanka results in the JSON:`}

      \n
      {`{`}{`\n`}{`  `}{`\"`}{`substituted`}{`\"`}{`:`}{` `}{`\"`}{`poem`}{`\"`}{`\n`}{`}`}
      \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-jsonnet-overview-md-950fc05876158d586146.js b/pr-preview/pr-1029/component---docs-jsonnet-overview-md-950fc05876158d586146.js deleted file mode 100644 index 3d4d54277..000000000 --- a/pr-preview/pr-1029/component---docs-jsonnet-overview-md-950fc05876158d586146.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{"5bP6":function(a,e,s){"use strict";s.r(e),s.d(e,"_frontmatter",(function(){return b})),s.d(e,"default",(function(){return N}));var t=s("wx14"),n=s("Ff2n"),m=(s("q1tI"),s("7ljp")),p=s("hhGP");s("qKvR");const c=["components"],b={};void 0!==b&&b&&b===Object(b)&&Object.isExtensible(b)&&!Object.prototype.hasOwnProperty.call(b,"__filemeta")&&Object.defineProperty(b,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/jsonnet/overview.md"}});const l={_frontmatter:b},r=p.a;function N(a){let{components:e}=a,s=Object(n.a)(a,c);return Object(m.b)(r,Object(t.a)({},l,s,{components:e,mdxType:"MDXLayout"}),Object(m.b)("h1",{id:"language-overview"},"Language overview"),Object(m.b)("p",null,Object(m.b)("a",{parentName:"p",href:"https://jsonnet.org"},"Jsonnet")," is the data templating language Tanka uses for\nexpressing what shall be deployed to your Kubernetes cluster. Understanding\nJsonnet is crucial to using Tanka effectively."),Object(m.b)("p",null,"This page covers the Jsonnet language itself. For more information on how to\nuse Jsonnet with Kubernetes, see ",Object(m.b)("a",{parentName:"p",href:"/pr-preview/pr-1029/tutorial/jsonnet"},"the tutorial"),". There's\nalso ",Object(m.b)("a",{parentName:"p",href:"https://jsonnet.org/learning/tutorial.html"},"the official Jsonnet tutorial"),"\nthat provides a more detailed review of language features."),Object(m.b)("h2",{id:"syntax"},"Syntax"),Object(m.b)("p",null,"Being a superset of JSON, the syntax is very similar:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// Line comment")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"/* Block comment */")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// a local variable (not exported)")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," greeting "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"hello world!"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},";")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// the exported/returned object")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"foo:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"bar"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},", "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// string")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"bar:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"5"),Object(m.b)("span",{parentName:"span",className:"mtk1"},", "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// int")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"baz:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"false"),Object(m.b)("span",{parentName:"span",className:"mtk1"},", "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// bool")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"list:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," ["),Object(m.b)("span",{parentName:"span",className:"mtk4"},"1"),Object(m.b)("span",{parentName:"span",className:"mtk1"},","),Object(m.b)("span",{parentName:"span",className:"mtk4"},"2"),Object(m.b)("span",{parentName:"span",className:"mtk1"},","),Object(m.b)("span",{parentName:"span",className:"mtk4"},"3"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"], "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// array")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// object")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"dict:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"nested:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," greeting, "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// using the local")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk7"},"hidden::"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"incognito!"'),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// an unexported field")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("h2",{id:"abstraction"},"Abstraction"),Object(m.b)("p",null,"Jsonnet has rich abstraction features, which makes it interesting for\nconfiguring Kubernetes, as it allows to keep configurations concise, yet\nreadable."),Object(m.b)("ul",null,Object(m.b)("li",{parentName:"ul"},Object(m.b)("a",{parentName:"li",href:"#imports"},"Imports")),Object(m.b)("li",{parentName:"ul"},Object(m.b)("a",{parentName:"li",href:"#merging"},"Merging")),Object(m.b)("li",{parentName:"ul"},Object(m.b)("a",{parentName:"li",href:"#functions"},"Functions"))),Object(m.b)("h3",{id:"imports"},"Imports"),Object(m.b)("p",null,"Just as other languages, Jsonnet allows code to be imported from other files:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," secret "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"import"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"./secret.libsonnet"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},";")))),Object(m.b)("p",null,"The exported object (the only non-local one) of ",Object(m.b)("inlineCode",{parentName:"p"},"secret.libsonnet")," is now\navailable as a ",Object(m.b)("inlineCode",{parentName:"p"},"local")," variable called ",Object(m.b)("inlineCode",{parentName:"p"},"secret"),"."),Object(m.b)("p",null,"When using Tanka, it is also possible to directly import ",Object(m.b)("inlineCode",{parentName:"p"},".json")," and ",Object(m.b)("inlineCode",{parentName:"p"},".yaml"),"\nfiles, as if they were a ",Object(m.b)("inlineCode",{parentName:"p"},".libsonnet"),"."),Object(m.b)("p",null,"Make sure to also take a look at the libraries documentation to learn how to use ",Object(m.b)("inlineCode",{parentName:"p"},"import")," and re-use code.\nThe documentation on ",Object(m.b)("a",{parentName:"p",href:"/pr-preview/pr-1029/libraries/import-paths"},"Tanka import paths")," and ",Object(m.b)("a",{parentName:"p",href:"/pr-preview/pr-1029/libraries/install-publish"},"vendoring")," are useful to understand how imports work in Tanka's context."),Object(m.b)("h3",{id:"merging"},"Merging"),Object(m.b)("p",null,"Deep merging allows you to change parts of an object without touching all of it.\nConsider the following example:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," secret "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"kind:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," Secret,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"metadata:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"mySecret"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line vscode-highlight-line-highlighted"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"namespace:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"default"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},", "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// need to change that")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"data:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"foo:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," std."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"base64"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"foo"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},")")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"};")))),Object(m.b)("p",null,"To change the namespace only, we can use the special merge key ",Object(m.b)("inlineCode",{parentName:"p"},"+:")," like so:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// define the patch:")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," patch "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"metadata+:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"namespace:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"myApp"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("p",null,"The difference between ",Object(m.b)("inlineCode",{parentName:"p"},":")," and ",Object(m.b)("inlineCode",{parentName:"p"},"+:")," is that the former replaces the original\ndata at that key, while the latter applies the new object as a patch on top,\nmeaning that values will be updated if possible but all other stay like they\nare.",Object(m.b)("br",{parentName:"p"}),"\n","To merge those two, just add (",Object(m.b)("inlineCode",{parentName:"p"},"+"),") the patch to the original:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"secret "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," patch")))),Object(m.b)("p",null,"The output of this is the following JSON object:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"json"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"kind"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"Secret"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"metadata"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk7"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"mySecret"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk7"},"namespace"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"myApp"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"},")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},"data"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk7"},"foo"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"Zm9vCg=="),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")))),Object(m.b)("h3",{id:"functions"},"Functions"),Object(m.b)("p",null,"Jsonnet supports functions, similar to how Python does. They can be defined in\ntwo different ways:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk9"},"add"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"(x,y) "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," x "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," y;")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," mul "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," ("),Object(m.b)("span",{parentName:"span",className:"mtk9"},"function"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"(x, y) x "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"*"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," y);")))),Object(m.b)("p",null,"Objects can have methods:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk9"},"greet"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"(who)"),Object(m.b)("span",{parentName:"span",className:"mtk12"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"hello "'),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," who,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("p",null,"Default values, keyword-args and more examples can be found at\n",Object(m.b)("a",{parentName:"p",href:"https://jsonnet.org/learning/tutorial.html#functions"},"jsonnet.org"),"."),Object(m.b)("h2",{id:"standard-library"},"Standard library"),Object(m.b)("p",null,"The Jsonnet standard library includes many helper methods ranging from object\nand array mutation, over string utils to computation helpers."),Object(m.b)("p",null,"Documentation is available at\n",Object(m.b)("a",{parentName:"p",href:"https://jsonnet.org/ref/stdlib.html"},"jsonnet.org"),"."),Object(m.b)("h2",{id:"conditionals"},"Conditionals"),Object(m.b)("p",null,"Jsonnet supports a conditionals in a fashion similar to a ternary operator:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," tag "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5 mtki"},"if"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," prod "),Object(m.b)("span",{parentName:"span",className:"mtk5 mtki"},"then"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"v1.0"'),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5 mtki"},"else"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"latest"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},";")))),Object(m.b)("p",null,"More on ",Object(m.b)("a",{parentName:"p",href:"https://jsonnet.org/learning/tutorial.html#conditionals"},"jsonnet.org"),"."),Object(m.b)("h2",{id:"references"},"References"),Object(m.b)("p",null,"Jsonnet has multiple options to refer to parts of an object:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{ "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// this is $")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"junk:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"foo"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"nested:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," { "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// this is self")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"app:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"Tanka"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"msg:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"self"),Object(m.b)("span",{parentName:"span",className:"mtk1"},".app "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'" rocks!"'),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},'// "Tanka rocks!"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"children:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," { "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// this is also self")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"baz:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"bar"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"junk:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"$"),Object(m.b)("span",{parentName:"span",className:"mtk1"},".junk "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"self"),Object(m.b)("span",{parentName:"span",className:"mtk1"},".baz, "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},'// "foobar"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("p",null,"For more information take a look at\n",Object(m.b)("a",{parentName:"p",href:"https://jsonnet.org/learning/tutorial.html#references"},"jsonnet.org")),Object(m.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==N&&N&&N===Object(N)&&Object.isExtensible(N)&&!Object.prototype.hasOwnProperty.call(N,"__filemeta")&&Object.defineProperty(N,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/jsonnet/overview.md"}}),N.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-jsonnet-overview-md-950fc05876158d586146.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-jsonnet-overview-md-950fc05876158d586146.js.map b/pr-preview/pr-1029/component---docs-jsonnet-overview-md-950fc05876158d586146.js.map deleted file mode 100644 index 1a8eaa676..000000000 --- a/pr-preview/pr-1029/component---docs-jsonnet-overview-md-950fc05876158d586146.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/jsonnet/overview.md"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","isMDXComponent"],"mappings":"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","file":"component---docs-jsonnet-overview-md-950fc05876158d586146.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`Language overview`}

      \n

      {`Jsonnet`}{` is the data templating language Tanka uses for\nexpressing what shall be deployed to your Kubernetes cluster. Understanding\nJsonnet is crucial to using Tanka effectively.`}

      \n

      {`This page covers the Jsonnet language itself. For more information on how to\nuse Jsonnet with Kubernetes, see `}{`the tutorial`}{`. There's\nalso `}{`the official Jsonnet tutorial`}{`\nthat provides a more detailed review of language features.`}

      \n

      {`Syntax`}

      \n

      {`Being a superset of JSON, the syntax is very similar:`}

      \n
      {`// Line comment`}{`\n`}{`/* Block comment */`}{`\n`}{`\n`}{`// a local variable (not exported)`}{`\n`}{`local`}{` greeting `}{`=`}{` `}{`\"hello world!\"`}{`;`}{`\n`}{`\n`}{`// the exported/returned object`}{`\n`}{`{`}{`\n`}{`  `}{`foo:`}{` `}{`\"bar\"`}{`, `}{`// string`}{`\n`}{`  `}{`bar:`}{` `}{`5`}{`, `}{`// int`}{`\n`}{`  `}{`baz:`}{` `}{`false`}{`, `}{`// bool`}{`\n`}{`  `}{`list:`}{` [`}{`1`}{`,`}{`2`}{`,`}{`3`}{`], `}{`// array`}{`\n`}{`  `}{`// object`}{`\n`}{`  `}{`dict:`}{` {`}{`\n`}{`    `}{`nested:`}{` greeting, `}{`// using the local`}{`\n`}{`  },`}{`\n`}{`  `}{`hidden::`}{` `}{`\"incognito!\"`}{` `}{`// an unexported field`}{`\n`}{`}`}
      \n

      {`Abstraction`}

      \n

      {`Jsonnet has rich abstraction features, which makes it interesting for\nconfiguring Kubernetes, as it allows to keep configurations concise, yet\nreadable.`}

      \n \n

      {`Imports`}

      \n

      {`Just as other languages, Jsonnet allows code to be imported from other files:`}

      \n
      {`local`}{` secret `}{`=`}{` `}{`import`}{` `}{`\"./secret.libsonnet\"`}{`;`}
      \n

      {`The exported object (the only non-local one) of `}{`secret.libsonnet`}{` is now\navailable as a `}{`local`}{` variable called `}{`secret`}{`.`}

      \n

      {`When using Tanka, it is also possible to directly import `}{`.json`}{` and `}{`.yaml`}{`\nfiles, as if they were a `}{`.libsonnet`}{`.`}

      \n

      {`Make sure to also take a look at the libraries documentation to learn how to use `}{`import`}{` and re-use code.\nThe documentation on `}{`Tanka import paths`}{` and `}{`vendoring`}{` are useful to understand how imports work in Tanka's context.`}

      \n

      {`Merging`}

      \n

      {`Deep merging allows you to change parts of an object without touching all of it.\nConsider the following example:`}

      \n
      {`local`}{` secret `}{`=`}{` {`}{`\n`}{`  `}{`kind:`}{` Secret,`}{`\n`}{`  `}{`metadata:`}{` {`}{`\n`}{`    `}{`name:`}{` `}{`\"mySecret\"`}{`,`}{`\n`}{`    `}{`namespace:`}{` `}{`\"default\"`}{`, `}{`// need to change that`}{`\n`}{`  },`}{`\n`}{`  `}{`data:`}{` {`}{`\n`}{`    `}{`foo:`}{` std.`}{`base64`}{`(`}{`\"foo\"`}{`)`}{`\n`}{`  }`}{`\n`}{`};`}
      \n

      {`To change the namespace only, we can use the special merge key `}{`+:`}{` like so:`}

      \n
      {`// define the patch:`}{`\n`}{`local`}{` patch `}{`=`}{` {`}{`\n`}{`  `}{`metadata+:`}{` {`}{`\n`}{`    `}{`namespace:`}{` `}{`\"myApp\"`}{`\n`}{`  }`}{`\n`}{`}`}
      \n

      {`The difference between `}{`:`}{` and `}{`+:`}{` is that the former replaces the original\ndata at that key, while the latter applies the new object as a patch on top,\nmeaning that values will be updated if possible but all other stay like they\nare.`}

      {`\n`}{`To merge those two, just add (`}{`+`}{`) the patch to the original:`}

      \n
      {`secret `}{`+`}{` patch`}
      \n

      {`The output of this is the following JSON object:`}

      \n
      {`{`}{`\n`}{`  `}{`\"`}{`kind`}{`\"`}{`:`}{` `}{`\"`}{`Secret`}{`\"`}{`,`}{`\n`}{`  `}{`\"`}{`metadata`}{`\"`}{`:`}{` `}{`{`}{`\n`}{`    `}{`\"`}{`name`}{`\"`}{`:`}{` `}{`\"`}{`mySecret`}{`\"`}{`,`}{`\n`}{`    `}{`\"`}{`namespace`}{`\"`}{`:`}{` `}{`\"`}{`myApp`}{`\"`}{`\n`}{`  `}{`},`}{`\n`}{`  `}{`\"`}{`data`}{`\"`}{`:`}{` `}{`{`}{`\n`}{`    `}{`\"`}{`foo`}{`\"`}{`:`}{` `}{`\"`}{`Zm9vCg==`}{`\"`}{`\n`}{`  `}{`}`}{`\n`}{`}`}
      \n

      {`Functions`}

      \n

      {`Jsonnet supports functions, similar to how Python does. They can be defined in\ntwo different ways:`}

      \n
      {`local`}{` `}{`add`}{`(x,y) `}{`=`}{` x `}{`+`}{` y;`}{`\n`}{`local`}{` mul `}{`=`}{` (`}{`function`}{`(x, y) x `}{`*`}{` y);`}
      \n

      {`Objects can have methods:`}

      \n
      {`{`}{`\n`}{`  `}{`greet`}{`(who)`}{`:`}{` `}{`\"hello \"`}{` `}{`+`}{` who,`}{`\n`}{`}`}
      \n

      {`Default values, keyword-args and more examples can be found at\n`}{`jsonnet.org`}{`.`}

      \n

      {`Standard library`}

      \n

      {`The Jsonnet standard library includes many helper methods ranging from object\nand array mutation, over string utils to computation helpers.`}

      \n

      {`Documentation is available at\n`}{`jsonnet.org`}{`.`}

      \n

      {`Conditionals`}

      \n

      {`Jsonnet supports a conditionals in a fashion similar to a ternary operator:`}

      \n
      {`local`}{` tag `}{`=`}{` `}{`if`}{` prod `}{`then`}{` `}{`\"v1.0\"`}{` `}{`else`}{` `}{`\"latest\"`}{`;`}
      \n

      {`More on `}{`jsonnet.org`}{`.`}

      \n

      {`References`}

      \n

      {`Jsonnet has multiple options to refer to parts of an object:`}

      \n
      {`{ `}{`// this is $`}{`\n`}{`  `}{`junk:`}{` `}{`\"foo\"`}{`,`}{`\n`}{`  `}{`nested:`}{` { `}{`// this is self`}{`\n`}{`    `}{`app:`}{` `}{`\"Tanka\"`}{`,`}{`\n`}{`    `}{`msg:`}{` `}{`self`}{`.app `}{`+`}{` `}{`\" rocks!\"`}{` `}{`// \"Tanka rocks!\"`}{`\n`}{`  },`}{`\n`}{`  `}{`children:`}{` { `}{`// this is also self`}{`\n`}{`    `}{`baz:`}{` `}{`\"bar\"`}{`,`}{`\n`}{`    `}{`junk:`}{` `}{`$`}{`.junk `}{`+`}{` `}{`self`}{`.baz, `}{`// \"foobar\"`}{`\n`}{`  }`}{`\n`}{`}`}
      \n

      {`For more information take a look at\n`}{`jsonnet.org`}

      \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-known-issues-md-2b1c7bae83f2275bce8c.js b/pr-preview/pr-1029/component---docs-known-issues-md-2b1c7bae83f2275bce8c.js deleted file mode 100644 index 96d9a0795..000000000 --- a/pr-preview/pr-1029/component---docs-known-issues-md-2b1c7bae83f2275bce8c.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{"+sT5":function(e,t,n){"use strict";n.r(t),n.d(t,"_frontmatter",(function(){return l})),n.d(t,"default",(function(){return b}));var a=n("wx14"),r=n("Ff2n"),o=(n("q1tI"),n("7ljp")),i=n("hhGP");n("qKvR");const s=["components"],l={};void 0!==l&&l&&l===Object(l)&&Object.isExtensible(l)&&!Object.prototype.hasOwnProperty.call(l,"__filemeta")&&Object.defineProperty(l,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/known-issues.md"}});const m={_frontmatter:l},c=i.a;function b(e){let{components:t}=e,n=Object(r.a)(e,s);return Object(o.b)(c,Object(a.a)({},m,n,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h1",{id:"known-issues"},"Known Issues"),Object(o.b)("p",null,"Below is a list of common errors and how to address them."),Object(o.b)("h3",{id:"evaluating-jsonnet-runtime-error-undefined-external-variable-__ksonnetcomponents"},"Evaluating jsonnet: RUNTIME ERROR: Undefined external variable: ","_","_","ksonnet/components"),Object(o.b)("p",null,"When migrating from ",Object(o.b)("inlineCode",{parentName:"p"},"ksonnet"),", this error might occur, because Tanka does not\nprovide the global ",Object(o.b)("inlineCode",{parentName:"p"},"__ksonnet")," variable, nor does it strictly have the concept\nof components.\nYou will need to use the plain Jsonnet ",Object(o.b)("inlineCode",{parentName:"p"},"import")," feature instead. Note that this\nrequires your code to be inside of one of the\n",Object(o.b)("a",{parentName:"p",href:"directory-structure/#import-paths"},"import paths"),"."),Object(o.b)("h3",{id:"evaluating-jsonnet-runtime-error-couldnt-open-import-klibsonnet-no-match-locally-or-in-the-jsonnet-library-paths"},'Evaluating jsonnet: RUNTIME ERROR: couldn\'t open import "k.libsonnet": no match locally or in the Jsonnet library paths'),Object(o.b)("p",null,"This error can occur when the ",Object(o.b)("inlineCode",{parentName:"p"},"k8s-libsonnet")," kubernetes libraries are missing in the\nimport paths. While ",Object(o.b)("inlineCode",{parentName:"p"},"k8s-libsonnet")," used to magically include them, Tanka follows a\nmore explicit approach and requires you to install them using ",Object(o.b)("inlineCode",{parentName:"p"},"jb"),":"),Object(o.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(o.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(o.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(o.b)("span",{parentName:"span",className:"mtk1"},"$ jb install github.com/jsonnet-libs/k8s-libsonnet/1.21@main")),"\n",Object(o.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(o.b)("span",{parentName:"span",className:"mtk1"},"$ "),Object(o.b)("span",{parentName:"span",className:"mtk9"},"echo"),Object(o.b)("span",{parentName:"span",className:"mtk1"}," "),Object(o.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(o.b)("span",{parentName:"span",className:"mtk6"},"import 'github.com/jsonnet-libs/k8s-libsonnet/1.21/main.libsonnet'"),Object(o.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(o.b)("span",{parentName:"span",className:"mtk1"}," "),Object(o.b)("span",{parentName:"span",className:"mtk12"},">"),Object(o.b)("span",{parentName:"span",className:"mtk1"}," lib/k.libsonnet")))),Object(o.b)("p",null,"This does 2 things:"),Object(o.b)("p",null,"1) It installs the ",Object(o.b)("inlineCode",{parentName:"p"},"k8s-libsonnet")," library (in ",Object(o.b)("inlineCode",{parentName:"p"},"vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/"),").\nYou can replace the ",Object(o.b)("inlineCode",{parentName:"p"},"1.21")," matching the Kubernetes version you want to run against."),Object(o.b)("p",null,"2) It makes an alias for libraries importing ",Object(o.b)("inlineCode",{parentName:"p"},"k.libsonnet")," directly. See\n",Object(o.b)("a",{parentName:"p",href:"https://tanka.dev/tutorial/k-lib#aliasing"},"https://tanka.dev/tutorial/k-lib#aliasing")," for the alias rationale."),Object(o.b)("h3",{id:"unexpected-diff-if-the-same-port-number-is-used-for-udp-and-tcp"},"Unexpected diff if the same port number is used for UDP and TCP"),Object(o.b)("p",null,"A\n",Object(o.b)("a",{parentName:"p",href:"https://github.com/kubernetes/kubernetes/issues/39188"},"long-standing bug in ",Object(o.b)("inlineCode",{parentName:"a"},"kubectl")),"\nresults in an incorrect diff output if the same port number is used multiple\ntimes in differently named ports, which commonly happens if a port is specified\nusing both protocols, ",Object(o.b)("inlineCode",{parentName:"p"},"tcp")," and ",Object(o.b)("inlineCode",{parentName:"p"},"udp"),". Nevertheless, ",Object(o.b)("inlineCode",{parentName:"p"},"tk apply")," will still work\ncorrectly."),Object(o.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==b&&b&&b===Object(b)&&Object.isExtensible(b)&&!Object.prototype.hasOwnProperty.call(b,"__filemeta")&&Object.defineProperty(b,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/known-issues.md"}}),b.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-known-issues-md-2b1c7bae83f2275bce8c.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-known-issues-md-2b1c7bae83f2275bce8c.js.map b/pr-preview/pr-1029/component---docs-known-issues-md-2b1c7bae83f2275bce8c.js.map deleted file mode 100644 index 6b9dc609b..000000000 --- a/pr-preview/pr-1029/component---docs-known-issues-md-2b1c7bae83f2275bce8c.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/known-issues.md"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","isMDXComponent"],"mappings":"2RAMaA,EAAe,QAAG,IAAAA,UAAAC,OAAAD,IAAAC,OAAAC,aAAAF,KAAAC,OAAAE,UAAAC,eAAAC,KAAAL,EAAA,eAAAC,OAAAK,eAAAN,EAAA,cAAAO,cAAA,EAAAC,MAAA,CAAAC,KAAA,eAAAC,SAAA,0BAC/B,MAAMC,EAAc,CAClBX,gBAEIY,EAAYC,IACH,SAASC,EAAUC,GAG/B,IAHgC,WACjCC,GAEDD,EADIE,EAAKC,YAAAH,EAAAI,GAER,OAAOC,YAACR,EAASS,YAAA,GAAKV,EAAiBM,EAAK,CAAED,WAAYA,EAAYM,QAAQ,cAG5EF,YAAA,MACE,GAAM,gBAAc,gBAEtBA,YAAA,sEACAA,YAAA,MACE,GAAM,oFAAkF,iGAE1FA,YAAA,gCAA2BA,YAAA,cAAYG,WAAW,KAAG,WAAyB,wEAC7DH,YAAA,cAAYG,WAAW,KAAG,aAA2B,4GAEjCH,YAAA,cAAYG,WAAW,KAAG,UAAwB,oFAEzFH,YAAA,KAAGG,WAAW,IACR,KAAQ,qCAAmC,gBACtB,KACzBH,YAAA,MACE,GAAM,oHAAkH,4HAE1HA,YAAA,0CAAqCA,YAAA,cAAYG,WAAW,KAAG,iBAA+B,iEAC5EH,YAAA,cAAYG,WAAW,KAAG,iBAA+B,mHACfH,YAAA,cAAYG,WAAW,KAAG,MAAoB,KAC1GH,YAAA,OACE,UAAa,yCACb,gBAAiB,QAChBA,YAAA,QAAMG,WAAW,MAChB,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,iEAC4D,KACzFH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,MACLH,YAAA,QAAMG,WAAW,OAC/B,UAAa,QAAM,QACHH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,sEAC2DH,YAAA,QAAMG,WAAW,OAC/F,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,SAAO,KACPH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,uBAE3BH,YAAA,gCACAA,YAAA,+BAA0BA,YAAA,cAAYG,WAAW,KAAG,iBAA+B,gBAAiBH,YAAA,cAAYG,WAAW,KAAG,sDAAoE,2BAChLH,YAAA,cAAYG,WAAW,KAAG,QAAsB,6DAClEH,YAAA,yDAAoDA,YAAA,cAAYG,WAAW,KAAG,eAA6B,mBAC7GH,YAAA,KAAGG,WAAW,IACR,KAAQ,6CAA2C,6CACD,6BACtDH,YAAA,MACE,GAAM,mEAAiE,mEAEzEA,YAAA,eACFA,YAAA,KAAGG,WAAW,IACR,KAAQ,yDAAuD,wBACrCH,YAAA,cAAYG,WAAW,KAAG,YAA6B,0LAGjEH,YAAA,cAAYG,WAAW,KAAG,OAAqB,QAASH,YAAA,cAAYG,WAAW,KAAG,OAAqB,mBAAoBH,YAAA,cAAYG,WAAW,KAAG,YAA0B,gCAGnMH,YAAA,SACE,UAAa,2BAAyB,glCA6B3C,IAAAN,UAAAb,OAAAa,IAAAb,OAAAC,aAAAY,KAAAb,OAAAE,UAAAC,eAAAC,KAAAS,EAAA,eAAAb,OAAAK,eAAAQ,EAAA,cAAAP,cAAA,EAAAC,MAAA,CAAAC,KAAA,aAAAC,SAAA,0BAEDI,EAAWU,gBAAiB","file":"component---docs-known-issues-md-2b1c7bae83f2275bce8c.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`Known Issues`}

      \n

      {`Below is a list of common errors and how to address them.`}

      \n

      {`Evaluating jsonnet: RUNTIME ERROR: Undefined external variable: `}{`_`}{`_`}{`ksonnet/components`}

      \n

      {`When migrating from `}{`ksonnet`}{`, this error might occur, because Tanka does not\nprovide the global `}{`__ksonnet`}{` variable, nor does it strictly have the concept\nof components.\nYou will need to use the plain Jsonnet `}{`import`}{` feature instead. Note that this\nrequires your code to be inside of one of the\n`}{`import paths`}{`.`}

      \n

      {`Evaluating jsonnet: RUNTIME ERROR: couldn't open import \"k.libsonnet\": no match locally or in the Jsonnet library paths`}

      \n

      {`This error can occur when the `}{`k8s-libsonnet`}{` kubernetes libraries are missing in the\nimport paths. While `}{`k8s-libsonnet`}{` used to magically include them, Tanka follows a\nmore explicit approach and requires you to install them using `}{`jb`}{`:`}

      \n
      {`$ jb install github.com/jsonnet-libs/k8s-libsonnet/1.21@main`}{`\n`}{`$ `}{`echo`}{` `}{`\"`}{`import 'github.com/jsonnet-libs/k8s-libsonnet/1.21/main.libsonnet'`}{`\"`}{` `}{`>`}{` lib/k.libsonnet`}
      \n

      {`This does 2 things:`}

      \n

      {`1) It installs the `}{`k8s-libsonnet`}{` library (in `}{`vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/`}{`).\nYou can replace the `}{`1.21`}{` matching the Kubernetes version you want to run against.`}

      \n

      {`2) It makes an alias for libraries importing `}{`k.libsonnet`}{` directly. See\n`}{`https://tanka.dev/tutorial/k-lib#aliasing`}{` for the alias rationale.`}

      \n

      {`Unexpected diff if the same port number is used for UDP and TCP`}

      \n

      {`A\n`}{`long-standing bug in `}{`kubectl`}{`\nresults in an incorrect diff output if the same port number is used multiple\ntimes in differently named ports, which commonly happens if a port is specified\nusing both protocols, `}{`tcp`}{` and `}{`udp`}{`. Nevertheless, `}{`tk apply`}{` will still work\ncorrectly.`}

      \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-kustomize-mdx-d5cc41c7a5346a94a8bf.js b/pr-preview/pr-1029/component---docs-kustomize-mdx-d5cc41c7a5346a94a8bf.js deleted file mode 100644 index 3bf52a9b4..000000000 --- a/pr-preview/pr-1029/component---docs-kustomize-mdx-d5cc41c7a5346a94a8bf.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{uQoz:function(e,a,t){"use strict";t.r(a),t.d(a,"_frontmatter",(function(){return i})),t.d(a,"default",(function(){return r}));var s=t("wx14"),n=t("Ff2n"),m=(t("q1tI"),t("7ljp")),c=t("hhGP");t("qKvR");const p=["components"],i={};void 0!==i&&i&&i===Object(i)&&Object.isExtensible(i)&&!Object.prototype.hasOwnProperty.call(i,"__filemeta")&&Object.defineProperty(i,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/kustomize.mdx"}});const l={_frontmatter:i},o=c.a;function r(e){let{components:a}=e,t=Object(n.a)(e,p);return Object(m.b)(o,Object(s.a)({},l,t,{components:a,mdxType:"MDXLayout"}),Object(m.b)("h1",{id:"kustomize-support"},"Kustomize Support"),Object(m.b)("p",null,Object(m.b)("a",{parentName:"p",href:"https://kustomize.io"},"Kustomize")," provides a solution for customizing Kubernetes\nmanifests in YAML."),Object(m.b)("p",null,"Even though Grafana Tanka uses the ",Object(m.b)("a",{parentName:"p",href:"/pr-preview/pr-1029/jsonnet/overview"},"Jsonnet language")," for\nresource definition, you can still consume kustomizations, as described below."),Object(m.b)("blockquote",null,Object(m.b)("p",{parentName:"blockquote"},Object(m.b)("strong",{parentName:"p"},"Warning:")," Keep in mind this feature is considered EXPERIMENTAL")),Object(m.b)("h2",{id:"consuming-a-kustomization-from-jsonnet"},"Consuming a Kustomization from Jsonnet"),Object(m.b)("p",null,"Kustomize support is provided using the\n",Object(m.b)("a",{parentName:"p",href:"https://github.com/grafana/jsonnet-libs/tree/master/tanka-util"},Object(m.b)("inlineCode",{parentName:"a"},"github.com/grafana/jsonnet-libs/tanka-util")),"\nlibrary. Install it with:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"jb install github.com/grafana/jsonnet-libs/tanka-util")))),Object(m.b)("p",null,"The following example shows how to extract the individual resources of the\n",Object(m.b)("a",{parentName:"p",href:"https://github.com/fluxcd/flux2/tree/main/manifests/bases/source-controller"},Object(m.b)("inlineCode",{parentName:"a"},"flux2/source-controller")),"\nkustomization:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," tanka "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"import"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'github.com/grafana/jsonnet-libs/tanka-util/main.libsonnet'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},";")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," kustomize "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," tanka.kustomize."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"new"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk9"},"std.thisFile"),Object(m.b)("span",{parentName:"span",className:"mtk1"},");")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"source_controller:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," kustomize."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"build"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"(path="),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'flux2'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},")")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("p",null,"Kustomize takes a kustomization manifest as input. Go on an create this file\n",Object(m.b)("inlineCode",{parentName:"p"},"flux2/kustomization.yaml")," relative to above jsonnet:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"yaml"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"apiVersion"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"kustomize.config.k8s.io/v1beta1")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"kind"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"Kustomization")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"resources"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"-"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"https://github.com/fluxcd/flux2/archive/v0.4.3.zip//flux2-0.4.3/manifests/bases/source-controller")))),Object(m.b)("blockquote",null,Object(m.b)("p",{parentName:"blockquote"},Object(m.b)("strong",{parentName:"p"},"Important:")," You MUST include the ",Object(m.b)("inlineCode",{parentName:"p"},".new(std.thisFile)")," part in the import.\nThis is what tells Tanka where you actually call ",Object(m.b)("inlineCode",{parentName:"p"},"kustomize.build()")," from, so\nit can find your kustomization manifest.")),Object(m.b)("br",null),Object(m.b)("p",null,"Once invoked, the ",Object(m.b)("inlineCode",{parentName:"p"},"$.source_controller")," key holds the individual resources of\nthe kustomization as a regular Jsonnet object that looks roughly like so:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'custom_resource_definition_buckets.source.toolkit.fluxcd.io'"),Object(m.b)("span",{parentName:"span",className:"mtk12"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {"),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"/* ... */"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'custom_resource_definition_gitrepositories.source.toolkit.fluxcd.io'"),Object(m.b)("span",{parentName:"span",className:"mtk12"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {"),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"/* ... */"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'custom_resource_definition_helmcharts.source.toolkit.fluxcd.io'"),Object(m.b)("span",{parentName:"span",className:"mtk12"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {"),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"/* ... */"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'custom_resource_definition_helmrepositories.source.toolkit.fluxcd.io'"),Object(m.b)("span",{parentName:"span",className:"mtk12"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {"),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"/* ... */"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"deployment_source_controller:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {"),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"/* ... */"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"service_source_controller:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {"),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"/* ... */"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("p",null,"Above can be ",Object(m.b)("a",{parentName:"p",href:"/pr-preview/pr-1029/tutorial/environments#patching"},"manipulated")," in the same way as\nany other Jsonnet data."),Object(m.b)("h2",{id:"working-with-kustomize"},"Working with Kustomize"),Object(m.b)("p",null,"Tanka, like Jsonnet, is hermetic. It ",Object(m.b)("strong",{parentName:"p"},"always yields the same resources")," when\nthe project is strictly self-contained."),Object(m.b)("p",null,"Kustomize however has the ability to pull\n",Object(m.b)("a",{parentName:"p",href:"https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/resource/"},"resources"),"\nfrom different sources at runtime, which violates above requirement. This is\nalso apparent in the example above."),Object(m.b)("blockquote",null,Object(m.b)("p",{parentName:"blockquote"},Object(m.b)("strong",{parentName:"p"},"Important:")," Due to the nature of Kustomize, it is not feasible to ensure\nhermetic and reproducible kustomize builds from within Tanka. Beware of that\nwhen using Kustomize.")),Object(m.b)("h2",{id:"troubleshooting"},"Troubleshooting"),Object(m.b)("h3",{id:"kustomize-executable-missing"},"Kustomize executable missing"),Object(m.b)("p",null,"Kustomize support in Tanka requires the ",Object(m.b)("inlineCode",{parentName:"p"},"kustomize")," binary installed on your\nsystem and available on the ",Object(m.b)("inlineCode",{parentName:"p"},"$PATH"),". If Kustomize is not installed, you will see\nthis error message:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":""},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},'evaluating jsonnet: RUNTIME ERROR: Expanding Kustomize: exec: "kustomize": executable file not found in $PATH'))),Object(m.b)("p",null,"To solve this, you need to\n",Object(m.b)("a",{parentName:"p",href:"https://kubectl.docs.kubernetes.io/installation/kustomize/"},"install Kustomize"),".\nIf you cannot install it system-wide, you can point Tanka at your executable\nusing ",Object(m.b)("a",{parentName:"p",href:"/pr-preview/pr-1029/env-vars#tanka_kustomize_path"},Object(m.b)("inlineCode",{parentName:"a"},"TANKA_KUSTOMIZE_PATH"))),Object(m.b)("h3",{id:"optscalledfrom-unset"},"opts.calledFrom unset"),Object(m.b)("p",null,"This occurs, when Tanka was not told where it ",Object(m.b)("inlineCode",{parentName:"p"},"kustomize.build()")," was invoked\nfrom. This most likely means you didn't call ",Object(m.b)("inlineCode",{parentName:"p"},"new(std.thisFile)")," when importing ",Object(m.b)("inlineCode",{parentName:"p"},"tanka-util"),":"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," tanka "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"import"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"github.com/grafana/jsonnet-libs/tanka-util/main.libsonnet"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},";")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," kustomize "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," tanka.kustomize."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"new"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk9"},"std.thisFile"),Object(m.b)("span",{parentName:"span",className:"mtk1"},");")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," ↑ This is important")))),Object(m.b)("h3",{id:"failed-to-find-kustomization"},"Failed to find kustomization"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":""},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},"Error: unable to find one of 'kustomization.yaml', 'kustomization.yml' or 'Kustomization' in directory '/home/user/stuff/tanka/environments/default/flux2'"))),Object(m.b)("p",null,"Tanka failed to locate your kustomization on the filesystem. It looked at the\nrelative path you provided in ",Object(m.b)("inlineCode",{parentName:"p"},"kustomize.build()"),", starting from the directory\nof the file you called ",Object(m.b)("inlineCode",{parentName:"p"},"kustomize.build()")," from."),Object(m.b)("p",null,"Please check there is actually a valid kustomization at this place."),Object(m.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==r&&r&&r===Object(r)&&Object.isExtensible(r)&&!Object.prototype.hasOwnProperty.call(r,"__filemeta")&&Object.defineProperty(r,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/kustomize.mdx"}}),r.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-kustomize-mdx-d5cc41c7a5346a94a8bf.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-kustomize-mdx-d5cc41c7a5346a94a8bf.js.map b/pr-preview/pr-1029/component---docs-kustomize-mdx-d5cc41c7a5346a94a8bf.js.map deleted file mode 100644 index 3c2617af7..000000000 --- a/pr-preview/pr-1029/component---docs-kustomize-mdx-d5cc41c7a5346a94a8bf.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/kustomize.mdx"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","isMDXComponent"],"mappings":"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","file":"component---docs-kustomize-mdx-d5cc41c7a5346a94a8bf.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`Kustomize Support`}

      \n

      {`Kustomize`}{` provides a solution for customizing Kubernetes\nmanifests in YAML.`}

      \n

      {`Even though Grafana Tanka uses the `}{`Jsonnet language`}{` for\nresource definition, you can still consume kustomizations, as described below.`}

      \n
      \n

      {`Warning:`}{` Keep in mind this feature is considered EXPERIMENTAL`}

      \n
      \n

      {`Consuming a Kustomization from Jsonnet`}

      \n

      {`Kustomize support is provided using the\n`}{`github.com/grafana/jsonnet-libs/tanka-util`}{`\nlibrary. Install it with:`}

      \n
      {`jb install github.com/grafana/jsonnet-libs/tanka-util`}
      \n

      {`The following example shows how to extract the individual resources of the\n`}{`flux2/source-controller`}{`\nkustomization:`}

      \n
      {`local`}{` tanka `}{`=`}{` `}{`import`}{` `}{`'github.com/grafana/jsonnet-libs/tanka-util/main.libsonnet'`}{`;`}{`\n`}{`local`}{` kustomize `}{`=`}{` tanka.kustomize.`}{`new`}{`(`}{`std.thisFile`}{`);`}{`\n`}{`\n`}{`{`}{`\n`}{`  `}{`source_controller:`}{` kustomize.`}{`build`}{`(path=`}{`'flux2'`}{`)`}{`\n`}{`}`}
      \n

      {`Kustomize takes a kustomization manifest as input. Go on an create this file\n`}{`flux2/kustomization.yaml`}{` relative to above jsonnet:`}

      \n
      {`apiVersion`}{`:`}{` `}{`kustomize.config.k8s.io/v1beta1`}{`\n`}{`kind`}{`:`}{` `}{`Kustomization`}{`\n`}{`resources`}{`:`}{`\n`}{`-`}{` `}{`https://github.com/fluxcd/flux2/archive/v0.4.3.zip//flux2-0.4.3/manifests/bases/source-controller`}
      \n
      \n

      {`Important:`}{` You MUST include the `}{`.new(std.thisFile)`}{` part in the import.\nThis is what tells Tanka where you actually call `}{`kustomize.build()`}{` from, so\nit can find your kustomization manifest.`}

      \n
      \n
      \n

      {`Once invoked, the `}{`$.source_controller`}{` key holds the individual resources of\nthe kustomization as a regular Jsonnet object that looks roughly like so:`}

      \n
      {`{`}{`\n`}{`  `}{`'custom_resource_definition_buckets.source.toolkit.fluxcd.io'`}{`:`}{` {`}{`/* ... */`}{` },`}{`\n`}{`  `}{`'custom_resource_definition_gitrepositories.source.toolkit.fluxcd.io'`}{`:`}{` {`}{`/* ... */`}{` },`}{`\n`}{`  `}{`'custom_resource_definition_helmcharts.source.toolkit.fluxcd.io'`}{`:`}{` {`}{`/* ... */`}{` },`}{`\n`}{`  `}{`'custom_resource_definition_helmrepositories.source.toolkit.fluxcd.io'`}{`:`}{` {`}{`/* ... */`}{` },`}{`\n`}{`  `}{`deployment_source_controller:`}{` {`}{`/* ... */`}{` },`}{`\n`}{`  `}{`service_source_controller:`}{` {`}{`/* ... */`}{` },`}{`\n`}{`}`}
      \n

      {`Above can be `}{`manipulated`}{` in the same way as\nany other Jsonnet data.`}

      \n

      {`Working with Kustomize`}

      \n

      {`Tanka, like Jsonnet, is hermetic. It `}{`always yields the same resources`}{` when\nthe project is strictly self-contained.`}

      \n

      {`Kustomize however has the ability to pull\n`}{`resources`}{`\nfrom different sources at runtime, which violates above requirement. This is\nalso apparent in the example above.`}

      \n
      \n

      {`Important:`}{` Due to the nature of Kustomize, it is not feasible to ensure\nhermetic and reproducible kustomize builds from within Tanka. Beware of that\nwhen using Kustomize.`}

      \n
      \n

      {`Troubleshooting`}

      \n

      {`Kustomize executable missing`}

      \n

      {`Kustomize support in Tanka requires the `}{`kustomize`}{` binary installed on your\nsystem and available on the `}{`$PATH`}{`. If Kustomize is not installed, you will see\nthis error message:`}

      \n
      {`evaluating jsonnet: RUNTIME ERROR: Expanding Kustomize: exec: \"kustomize\": executable file not found in $PATH`}
      \n

      {`To solve this, you need to\n`}{`install Kustomize`}{`.\nIf you cannot install it system-wide, you can point Tanka at your executable\nusing `}{`TANKA_KUSTOMIZE_PATH`}

      \n

      {`opts.calledFrom unset`}

      \n

      {`This occurs, when Tanka was not told where it `}{`kustomize.build()`}{` was invoked\nfrom. This most likely means you didn't call `}{`new(std.thisFile)`}{` when importing `}{`tanka-util`}{`:`}

      \n
      {`local`}{` tanka `}{`=`}{` `}{`import`}{` `}{`\"github.com/grafana/jsonnet-libs/tanka-util/main.libsonnet\"`}{`;`}{`\n`}{`local`}{` kustomize `}{`=`}{` tanka.kustomize.`}{`new`}{`(`}{`std.thisFile`}{`);`}{`\n`}{`                                ↑ This is important`}
      \n

      {`Failed to find kustomization`}

      \n
      {`Error: unable to find one of 'kustomization.yaml', 'kustomization.yml' or 'Kustomization' in directory '/home/user/stuff/tanka/environments/default/flux2'`}
      \n

      {`Tanka failed to locate your kustomization on the filesystem. It looked at the\nrelative path you provided in `}{`kustomize.build()`}{`, starting from the directory\nof the file you called `}{`kustomize.build()`}{` from.`}

      \n

      {`Please check there is actually a valid kustomization at this place.`}

      \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-libraries-import-paths-md-dae2edfdde230d15f0ed.js b/pr-preview/pr-1029/component---docs-libraries-import-paths-md-dae2edfdde230d15f0ed.js deleted file mode 100644 index a657bd902..000000000 --- a/pr-preview/pr-1029/component---docs-libraries-import-paths-md-dae2edfdde230d15f0ed.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{OlZl:function(e,t,n){"use strict";n.r(t),n.d(t,"_frontmatter",(function(){return o})),n.d(t,"default",(function(){return m}));var a=n("wx14"),r=n("Ff2n"),b=(n("q1tI"),n("7ljp")),i=n("hhGP");n("qKvR");const l=["components"],o={};void 0!==o&&o&&o===Object(o)&&Object.isExtensible(o)&&!Object.prototype.hasOwnProperty.call(o,"__filemeta")&&Object.defineProperty(o,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/libraries/import-paths.md"}});const c={_frontmatter:o},p=i.a;function m(e){let{components:t}=e,n=Object(r.a)(e,l);return Object(b.b)(p,Object(a.a)({},c,n,{components:t,mdxType:"MDXLayout"}),Object(b.b)("h1",{id:"import-paths"},"Import paths"),Object(b.b)("p",null,"When using ",Object(b.b)("inlineCode",{parentName:"p"},"import")," or ",Object(b.b)("inlineCode",{parentName:"p"},"importstr"),", Tanka considers the following directories to\nfind a suitable file for that specific import:"),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Rank"),Object(b.b)("th",{parentName:"tr",align:null},"Path"),Object(b.b)("th",{parentName:"tr",align:null},"Purpose"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"4"),Object(b.b)("td",{parentName:"tr",align:null},Object(b.b)("inlineCode",{parentName:"td"},"")),Object(b.b)("td",{parentName:"tr",align:null},"The directory of your environment, e.g. ",Object(b.b)("inlineCode",{parentName:"td"},"/environments/default"),".",Object(b.b)("br",null)," Put things that belong to this very environment here.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"3"),Object(b.b)("td",{parentName:"tr",align:null},Object(b.b)("inlineCode",{parentName:"td"},"/lib")),Object(b.b)("td",{parentName:"tr",align:null},"Project-global libraries, that are used in multiple environments, but are specific to this project.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"2"),Object(b.b)("td",{parentName:"tr",align:null},Object(b.b)("inlineCode",{parentName:"td"},"/vendor")),Object(b.b)("td",{parentName:"tr",align:null},"Per-environment vendor, can be used for ",Object(b.b)("a",{parentName:"td",href:"/pr-preview/pr-1029/libraries/overriding#per-environment"},Object(b.b)("inlineCode",{parentName:"a"},"vendor")," overriding"))),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"1"),Object(b.b)("td",{parentName:"tr",align:null},Object(b.b)("inlineCode",{parentName:"td"},"/vendor")),Object(b.b)("td",{parentName:"tr",align:null},"Global vendor, holds external libraries installed using ",Object(b.b)("inlineCode",{parentName:"td"},"jb"),".")))),Object(b.b)("blockquote",null,Object(b.b)("p",{parentName:"blockquote"},Object(b.b)("strong",{parentName:"p"},"Note"),":"),Object(b.b)("ul",{parentName:"blockquote"},Object(b.b)("li",{parentName:"ul"},"If a file occurs in multiple paths, the one with the highest rank will be chosen."),Object(b.b)("li",{parentName:"ul"},Object(b.b)("inlineCode",{parentName:"li"},"/")," in above table means ",Object(b.b)("inlineCode",{parentName:"li"},""),", which is your project root."))))}void 0!==m&&m&&m===Object(m)&&Object.isExtensible(m)&&!Object.prototype.hasOwnProperty.call(m,"__filemeta")&&Object.defineProperty(m,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/libraries/import-paths.md"}}),m.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-libraries-import-paths-md-dae2edfdde230d15f0ed.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-libraries-import-paths-md-dae2edfdde230d15f0ed.js.map b/pr-preview/pr-1029/component---docs-libraries-import-paths-md-dae2edfdde230d15f0ed.js.map deleted file mode 100644 index 30200a3dc..000000000 --- a/pr-preview/pr-1029/component---docs-libraries-import-paths-md-dae2edfdde230d15f0ed.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/libraries/import-paths.md"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","isMDXComponent"],"mappings":"yRAMaA,EAAe,QAAG,IAAAA,UAAAC,OAAAD,IAAAC,OAAAC,aAAAF,KAAAC,OAAAE,UAAAC,eAAAC,KAAAL,EAAA,eAAAC,OAAAK,eAAAN,EAAA,cAAAO,cAAA,EAAAC,MAAA,CAAAC,KAAA,eAAAC,SAAA,oCAC/B,MAAMC,EAAc,CAClBX,gBAEIY,EAAYC,IACH,SAASC,EAAUC,GAG/B,IAHgC,WACjCC,GAEDD,EADIE,EAAKC,YAAAH,EAAAI,GAER,OAAOC,YAACR,EAASS,YAAA,GAAKV,EAAiBM,EAAK,CAAED,WAAYA,EAAYM,QAAQ,cAG5EF,YAAA,MACE,GAAM,gBAAc,gBAEtBA,YAAA,uBAAkBA,YAAA,cAAYG,WAAW,KAAG,UAAwB,OAAQH,YAAA,cAAYG,WAAW,KAAG,aAA2B,kGAEjIH,YAAA,aACEA,YAAA,SAAOG,WAAW,SAChBH,YAAA,MAAIG,WAAW,SACbH,YAAA,MAAIG,WAAW,KACb,MAAS,MAAI,QAEfH,YAAA,MAAIG,WAAW,KACb,MAAS,MAAI,QAEfH,YAAA,MAAIG,WAAW,KACb,MAAS,MAAI,aAInBH,YAAA,SAAOG,WAAW,SAChBH,YAAA,MAAIG,WAAW,SACbH,YAAA,MAAIG,WAAW,KACb,MAAS,MAAI,KAEfH,YAAA,MAAIG,WAAW,KACb,MAAS,MACRH,YAAA,cAAYG,WAAW,MAAI,cAC9BH,YAAA,MAAIG,WAAW,KACb,MAAS,MAAI,2CACgCH,YAAA,cAAYG,WAAW,MAAI,yBAAuC,IAAKH,YAAA,WAAM,2DAE9HA,YAAA,MAAIG,WAAW,SACbH,YAAA,MAAIG,WAAW,KACb,MAAS,MAAI,KAEfH,YAAA,MAAIG,WAAW,KACb,MAAS,MACRH,YAAA,cAAYG,WAAW,MAAI,SAC9BH,YAAA,MAAIG,WAAW,KACb,MAAS,MAAI,wGAGjBH,YAAA,MAAIG,WAAW,SACbH,YAAA,MAAIG,WAAW,KACb,MAAS,MAAI,KAEfH,YAAA,MAAIG,WAAW,KACb,MAAS,MACRH,YAAA,cAAYG,WAAW,MAAI,qBAC9BH,YAAA,MAAIG,WAAW,KACb,MAAS,MAAI,2CACgCH,YAAA,KAAGG,WAAW,KACzD,KAAQ,4DACPH,YAAA,cAAYG,WAAW,KAAG,UAAwB,iBAEzDH,YAAA,MAAIG,WAAW,SACbH,YAAA,MAAIG,WAAW,KACb,MAAS,MAAI,KAEfH,YAAA,MAAIG,WAAW,KACb,MAAS,MACRH,YAAA,cAAYG,WAAW,MAAI,YAC9BH,YAAA,MAAIG,WAAW,KACb,MAAS,MAAI,2DACgDH,YAAA,cAAYG,WAAW,MAAI,MAAoB,QAIpHH,YAAA,kBACEA,YAAA,KAAGG,WAAW,cAAaH,YAAA,UAAQG,WAAW,KAAG,QAAkB,KACnEH,YAAA,MAAIG,WAAW,cACbH,YAAA,MAAIG,WAAW,MAAI,qFACnBH,YAAA,MAAIG,WAAW,MAAKH,YAAA,cAAYG,WAAW,MAAI,KAAmB,yBAA0BH,YAAA,cAAYG,WAAW,MAAI,aAA2B,yCAKzJ,IAAAT,UAAAb,OAAAa,IAAAb,OAAAC,aAAAY,KAAAb,OAAAE,UAAAC,eAAAC,KAAAS,EAAA,eAAAb,OAAAK,eAAAQ,EAAA,cAAAP,cAAA,EAAAC,MAAA,CAAAC,KAAA,aAAAC,SAAA,oCAEDI,EAAWU,gBAAiB","file":"component---docs-libraries-import-paths-md-dae2edfdde230d15f0ed.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`Import paths`}

      \n

      {`When using `}{`import`}{` or `}{`importstr`}{`, Tanka considers the following directories to\nfind a suitable file for that specific import:`}

      \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
      {`Rank`}{`Path`}{`Purpose`}
      {`4`}{``}{`The directory of your environment, e.g. `}{`/environments/default`}{`.`}
      {` Put things that belong to this very environment here.`}
      {`3`}{`/lib`}{`Project-global libraries, that are used in multiple environments, but are specific to this project.`}
      {`2`}{`/vendor`}{`Per-environment vendor, can be used for `}{`vendor`}{` overriding`}
      {`1`}{`/vendor`}{`Global vendor, holds external libraries installed using `}{`jb`}{`.`}
      \n
      \n

      {`Note`}{`:`}

      \n
        \n
      • {`If a file occurs in multiple paths, the one with the highest rank will be chosen.`}
      • \n
      • {`/`}{` in above table means `}{``}{`, which is your project root.`}
      • \n
      \n
      \n\n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-libraries-install-publish-md-1cb5bebde0944f8f75bb.js b/pr-preview/pr-1029/component---docs-libraries-install-publish-md-1cb5bebde0944f8f75bb.js deleted file mode 100644 index d8a273e01..000000000 --- a/pr-preview/pr-1029/component---docs-libraries-install-publish-md-1cb5bebde0944f8f75bb.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{pI5B:function(a,e,t){"use strict";t.r(e),t.d(e,"_frontmatter",(function(){return r})),t.d(e,"default",(function(){return i}));var s=t("wx14"),n=t("Ff2n"),m=(t("q1tI"),t("7ljp")),p=t("hhGP");t("qKvR");const c=["components"],r={};void 0!==r&&r&&r===Object(r)&&Object.isExtensible(r)&&!Object.prototype.hasOwnProperty.call(r,"__filemeta")&&Object.defineProperty(r,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/libraries/install-publish.md"}});const b={_frontmatter:r},l=p.a;function i(a){let{components:e}=a,t=Object(n.a)(a,c);return Object(m.b)(l,Object(s.a)({},b,t,{components:e,mdxType:"MDXLayout"}),Object(m.b)("h1",{id:"installing-and-publishing"},"Installing and publishing"),Object(m.b)("p",null,"The tool for dealing with libraries is\n",Object(m.b)("a",{parentName:"p",href:"https://github.com/jsonnet-bundler/jsonnet-bundler"},Object(m.b)("inlineCode",{parentName:"a"},"jsonnet-bundler")),". It can\ninstall packages from any git source using ",Object(m.b)("inlineCode",{parentName:"p"},"ssh")," and GitHub over ",Object(m.b)("inlineCode",{parentName:"p"},"https"),"."),Object(m.b)("h2",{id:"install-a-library"},"Install a library"),Object(m.b)("p",null,"To install a library from GitHub, use one of the following:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"$ jb install github.com/"),Object(m.b)("span",{parentName:"span",className:"mtk12"},"<"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"user"),Object(m.b)("span",{parentName:"span",className:"mtk12"},">"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"/"),Object(m.b)("span",{parentName:"span",className:"mtk12"},"<"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"repo"),Object(m.b)("span",{parentName:"span",className:"mtk12"},">")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"$ jb install github.com/"),Object(m.b)("span",{parentName:"span",className:"mtk12"},"<"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"user"),Object(m.b)("span",{parentName:"span",className:"mtk12"},">"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"/"),Object(m.b)("span",{parentName:"span",className:"mtk12"},"<"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"repo"),Object(m.b)("span",{parentName:"span",className:"mtk12"},">"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"/"),Object(m.b)("span",{parentName:"span",className:"mtk12"},"<"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"subdir"),Object(m.b)("span",{parentName:"span",className:"mtk12"},">")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"$ jb install github.com/"),Object(m.b)("span",{parentName:"span",className:"mtk12"},"<"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"user"),Object(m.b)("span",{parentName:"span",className:"mtk12"},">"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"/"),Object(m.b)("span",{parentName:"span",className:"mtk12"},"<"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"repo"),Object(m.b)("span",{parentName:"span",className:"mtk12"},">"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"/"),Object(m.b)("span",{parentName:"span",className:"mtk12"},"<"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"subdir"),Object(m.b)("span",{parentName:"span",className:"mtk12"},">"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"@"),Object(m.b)("span",{parentName:"span",className:"mtk12"},"<"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"version"),Object(m.b)("span",{parentName:"span",className:"mtk12"},">")))),Object(m.b)("p",null,"Otherwise, use the ssh syntax:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"$ jb install git+ssh://git@mycode.server:"),Object(m.b)("span",{parentName:"span",className:"mtk12"},"<"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"path-to-repo"),Object(m.b)("span",{parentName:"span",className:"mtk12"},">"),Object(m.b)("span",{parentName:"span",className:"mtk1"},".git")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"$ jb install git+ssh://git@mycode.server:"),Object(m.b)("span",{parentName:"span",className:"mtk12"},"<"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"path-to-repo"),Object(m.b)("span",{parentName:"span",className:"mtk12"},">"),Object(m.b)("span",{parentName:"span",className:"mtk1"},".git/"),Object(m.b)("span",{parentName:"span",className:"mtk12"},"<"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"subdir"),Object(m.b)("span",{parentName:"span",className:"mtk12"},">")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"$ jb install git+ssh://git@mycode.server:"),Object(m.b)("span",{parentName:"span",className:"mtk12"},"<"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"path-to-repo"),Object(m.b)("span",{parentName:"span",className:"mtk12"},">"),Object(m.b)("span",{parentName:"span",className:"mtk1"},".git/"),Object(m.b)("span",{parentName:"span",className:"mtk12"},"<"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"subdir"),Object(m.b)("span",{parentName:"span",className:"mtk12"},">"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"@"),Object(m.b)("span",{parentName:"span",className:"mtk12"},"<"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"version"),Object(m.b)("span",{parentName:"span",className:"mtk12"},">")))),Object(m.b)("blockquote",null,Object(m.b)("p",{parentName:"blockquote"},Object(m.b)("strong",{parentName:"p"},"Note"),": ",Object(m.b)("inlineCode",{parentName:"p"},"version")," may be any git ref, such as commits, tags or branches")),Object(m.b)("h2",{id:"publish-to-github"},"Publish to Git(Hub)"),Object(m.b)("p",null,"Publishing is as easy as committing and pushing to a git remote.\n",Object(m.b)("a",{parentName:"p",href:"https://github.com"},"GitHub")," is recommended, as it is most common and supports\nfaster installing using http archives."),Object(m.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==i&&i&&i===Object(i)&&Object.isExtensible(i)&&!Object.prototype.hasOwnProperty.call(i,"__filemeta")&&Object.defineProperty(i,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/libraries/install-publish.md"}}),i.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-libraries-install-publish-md-1cb5bebde0944f8f75bb.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-libraries-install-publish-md-1cb5bebde0944f8f75bb.js.map b/pr-preview/pr-1029/component---docs-libraries-install-publish-md-1cb5bebde0944f8f75bb.js.map deleted file mode 100644 index 79180ac0a..000000000 --- a/pr-preview/pr-1029/component---docs-libraries-install-publish-md-1cb5bebde0944f8f75bb.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/libraries/install-publish.md"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","isMDXComponent"],"mappings":"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","file":"component---docs-libraries-install-publish-md-1cb5bebde0944f8f75bb.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`Installing and publishing`}

      \n

      {`The tool for dealing with libraries is\n`}{`jsonnet-bundler`}{`. It can\ninstall packages from any git source using `}{`ssh`}{` and GitHub over `}{`https`}{`.`}

      \n

      {`Install a library`}

      \n

      {`To install a library from GitHub, use one of the following:`}

      \n
      {`$ jb install github.com/`}{`<`}{`user`}{`>`}{`/`}{`<`}{`repo`}{`>`}{`\n`}{`$ jb install github.com/`}{`<`}{`user`}{`>`}{`/`}{`<`}{`repo`}{`>`}{`/`}{`<`}{`subdir`}{`>`}{`\n`}{`$ jb install github.com/`}{`<`}{`user`}{`>`}{`/`}{`<`}{`repo`}{`>`}{`/`}{`<`}{`subdir`}{`>`}{`@`}{`<`}{`version`}{`>`}
      \n

      {`Otherwise, use the ssh syntax:`}

      \n
      {`$ jb install git+ssh://git@mycode.server:`}{`<`}{`path-to-repo`}{`>`}{`.git`}{`\n`}{`$ jb install git+ssh://git@mycode.server:`}{`<`}{`path-to-repo`}{`>`}{`.git/`}{`<`}{`subdir`}{`>`}{`\n`}{`$ jb install git+ssh://git@mycode.server:`}{`<`}{`path-to-repo`}{`>`}{`.git/`}{`<`}{`subdir`}{`>`}{`@`}{`<`}{`version`}{`>`}
      \n
      \n

      {`Note`}{`: `}{`version`}{` may be any git ref, such as commits, tags or branches`}

      \n
      \n

      {`Publish to Git(Hub)`}

      \n

      {`Publishing is as easy as committing and pushing to a git remote.\n`}{`GitHub`}{` is recommended, as it is most common and supports\nfaster installing using http archives.`}

      \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-libraries-overriding-md-d4979f48cc2ef9fa7574.js b/pr-preview/pr-1029/component---docs-libraries-overriding-md-d4979f48cc2ef9fa7574.js deleted file mode 100644 index 5dd9c10d5..000000000 --- a/pr-preview/pr-1029/component---docs-libraries-overriding-md-d4979f48cc2ef9fa7574.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{"7Pa4":function(e,t,a){"use strict";a.r(t),a.d(t,"_frontmatter",(function(){return s})),a.d(t,"default",(function(){return b}));var n=a("wx14"),r=a("Ff2n"),o=(a("q1tI"),a("7ljp")),i=a("hhGP");a("qKvR");const l=["components"],s={};void 0!==s&&s&&s===Object(s)&&Object.isExtensible(s)&&!Object.prototype.hasOwnProperty.call(s,"__filemeta")&&Object.defineProperty(s,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/libraries/overriding.md"}});const c={_frontmatter:s},m=i.a;function b(e){let{components:t}=e,a=Object(r.a)(e,l);return Object(o.b)(m,Object(n.a)({},c,a,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h1",{id:"overriding-vendor"},"Overriding vendor"),Object(o.b)("p",null,"The ",Object(o.b)("inlineCode",{parentName:"p"},"vendor")," directory is immutable in its nature. You can't and should never\nmodify any files inside of it, ",Object(o.b)("inlineCode",{parentName:"p"},"jb")," will revert those changes on the next run anyway."),Object(o.b)("p",null,"Nevertheless, it can sometimes become required to add changes there, e.g. if an\nupstream library contains a bug that needs to be fixed immediately, without\nwaiting for the upstream maintainer to review it."),Object(o.b)("h2",{id:"shadowing"},"Shadowing"),Object(o.b)("p",null,"Because ",Object(o.b)("a",{parentName:"p",href:"/pr-preview/pr-1029/libraries/import-paths"},"import paths")," are ranked in Tanka, you can use\na technique called shadowing: By putting a file with the exact same name in a\nhigher ranked path, Tanka will prefer that file instead of the original in\n",Object(o.b)("inlineCode",{parentName:"p"},"vendor"),", which has the lowest possible rank of 1."),Object(o.b)("p",null,"For example, if ",Object(o.b)("inlineCode",{parentName:"p"},"/vendor/foo/bar.libsonnet")," contained an error, you could create\n",Object(o.b)("inlineCode",{parentName:"p"},"/lib/foo/bar.libsonnet")," and fix it there."),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},Object(o.b)("strong",{parentName:"p"},"Tip:")," Instead of copying the file to the new location and making the edits,\nuse an absolute import and ",Object(o.b)("a",{parentName:"p",href:"/pr-preview/pr-1029/tutorial/environments#patching"},"patching"),":"),Object(o.b)("pre",{parentName:"blockquote",className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(o.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(o.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(o.b)("span",{parentName:"span",className:"mtk3 mtki"},"// in /lib/foo/bar.libsonnet:")),"\n",Object(o.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(o.b)("span",{parentName:"span",className:"mtk1"},"("),Object(o.b)("span",{parentName:"span",className:"mtk4"},"import"),Object(o.b)("span",{parentName:"span",className:"mtk1"}," "),Object(o.b)("span",{parentName:"span",className:"mtk6"},'"../../vendor/foo/bar.libsonnet"'),Object(o.b)("span",{parentName:"span",className:"mtk1"},") "),Object(o.b)("span",{parentName:"span",className:"mtk12"},"+"),Object(o.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(o.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(o.b)("span",{parentName:"span",className:"mtk1"}," "),Object(o.b)("span",{parentName:"span",className:"mtk10"},"foo+:"),Object(o.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(o.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(o.b)("span",{parentName:"span",className:"mtk1"}," "),Object(o.b)("span",{parentName:"span",className:"mtk10"},"bar:"),Object(o.b)("span",{parentName:"span",className:"mtk1"}," "),Object(o.b)("span",{parentName:"span",className:"mtk6"},'"fixed"')),"\n",Object(o.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(o.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(o.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(o.b)("span",{parentName:"span",className:"mtk1"},"}"))))),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},Object(o.b)("strong",{parentName:"p"},"Important:")," If the file you override is not the one you directly import,\nbut instead imported by another file first, the override will only occur if\nthe placement of the file is alongside your ",Object(o.b)("inlineCode",{parentName:"p"},"main.libsonnet"),". This is due to\nthe logic behind the Jsonnet importer. Example: We import\n",Object(o.b)("inlineCode",{parentName:"p"},"abc/main.libsonnet")," located in ",Object(o.b)("inlineCode",{parentName:"p"},"vendor/abc"),". Because Jsonnet first looks if\nfiles are locally present before considering the ",Object(o.b)("a",{parentName:"p",href:"/pr-preview/pr-1029/libraries/import-paths"},"import\npaths"),", you need to make sure your override is\nactually picked up. In our example, you'd need to copy the ",Object(o.b)("inlineCode",{parentName:"p"},"main.libsonnet"),"\ninto ",Object(o.b)("inlineCode",{parentName:"p"},"lib/abc")," as well.")),Object(o.b)("h2",{id:"per-environment"},"Per environment"),Object(o.b)("p",null,"Another common case is overriding the entire ",Object(o.b)("inlineCode",{parentName:"p"},"vendor")," bundle per environment."),Object(o.b)("p",null,"This is handy, when you for example want to test a change of an upstream\nlibrary which is used in many environments (including ",Object(o.b)("inlineCode",{parentName:"p"},"prod"),") in a single one,\nwithout affecting all the others."),Object(o.b)("p",null,"For this, Tanka lets you have a separate ",Object(o.b)("inlineCode",{parentName:"p"},"vendor"),", ",Object(o.b)("inlineCode",{parentName:"p"},"jsonnetfile.json")," and\n",Object(o.b)("inlineCode",{parentName:"p"},"jsonnetfile.lock.json")," per environment. To do so:"),Object(o.b)("h4",{id:"create-tkrcyaml"},"Create ",Object(o.b)("inlineCode",{parentName:"h4"},"tkrc.yaml")),Object(o.b)("p",null,"Tanka normally uses the ",Object(o.b)("inlineCode",{parentName:"p"},"jsonnetfile.json")," from your project to find its root.\nAs we are going to create another one of that down the tree in the next step, we\nneed another marker for ",Object(o.b)("inlineCode",{parentName:"p"},""),"."),Object(o.b)("p",null,"For that, create an empty file called ",Object(o.b)("inlineCode",{parentName:"p"},"tkrc.yaml")," in your project's root,\nalongside the original ",Object(o.b)("inlineCode",{parentName:"p"},"jsonnetfile.json"),"."),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},Object(o.b)("strong",{parentName:"p"},"Info"),": While the name suggests that ",Object(o.b)("inlineCode",{parentName:"p"},"tkrc.yaml")," could be used for setting\nparameters, this is not the case yet.",Object(o.b)("br",{parentName:"p"}),"\n","It might however be repurposed later, in case we need such functionality")),Object(o.b)("h4",{id:"add-a-vendor-to-your-environment"},"Add a ",Object(o.b)("inlineCode",{parentName:"h4"},"vendor")," to your environment"),Object(o.b)("p",null,"In your environments folder (e.g. ",Object(o.b)("inlineCode",{parentName:"p"},"/environments/default"),"):"),Object(o.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(o.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(o.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(o.b)("span",{parentName:"span",className:"mtk3 mtki"},"# init jsonnet bundler (creates jsonnetfile.json)")),"\n",Object(o.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(o.b)("span",{parentName:"span",className:"mtk1"},"$ jb init")),"\n",Object(o.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(o.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(o.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(o.b)("span",{parentName:"span",className:"mtk3 mtki"},"# install the updated dependency")),"\n",Object(o.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(o.b)("span",{parentName:"span",className:"mtk1"},"$ jb install github.com/foo/bar@v2")))),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},Object(o.b)("strong",{parentName:"p"},"Tip"),": You don't need to install everything into the new ",Object(o.b)("inlineCode",{parentName:"p"},"vendor/"),", as\npackages not present there can still be imported from the global ",Object(o.b)("inlineCode",{parentName:"p"},"/vendor"),".")),Object(o.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==b&&b&&b===Object(b)&&Object.isExtensible(b)&&!Object.prototype.hasOwnProperty.call(b,"__filemeta")&&Object.defineProperty(b,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/libraries/overriding.md"}}),b.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-libraries-overriding-md-d4979f48cc2ef9fa7574.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-libraries-overriding-md-d4979f48cc2ef9fa7574.js.map b/pr-preview/pr-1029/component---docs-libraries-overriding-md-d4979f48cc2ef9fa7574.js.map deleted file mode 100644 index 1bd46291c..000000000 --- a/pr-preview/pr-1029/component---docs-libraries-overriding-md-d4979f48cc2ef9fa7574.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/libraries/overriding.md"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","isMDXComponent"],"mappings":"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","file":"component---docs-libraries-overriding-md-d4979f48cc2ef9fa7574.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`Overriding vendor`}

      \n

      {`The `}{`vendor`}{` directory is immutable in its nature. You can't and should never\nmodify any files inside of it, `}{`jb`}{` will revert those changes on the next run anyway.`}

      \n

      {`Nevertheless, it can sometimes become required to add changes there, e.g. if an\nupstream library contains a bug that needs to be fixed immediately, without\nwaiting for the upstream maintainer to review it.`}

      \n

      {`Shadowing`}

      \n

      {`Because `}{`import paths`}{` are ranked in Tanka, you can use\na technique called shadowing: By putting a file with the exact same name in a\nhigher ranked path, Tanka will prefer that file instead of the original in\n`}{`vendor`}{`, which has the lowest possible rank of 1.`}

      \n

      {`For example, if `}{`/vendor/foo/bar.libsonnet`}{` contained an error, you could create\n`}{`/lib/foo/bar.libsonnet`}{` and fix it there.`}

      \n
      \n

      {`Tip:`}{` Instead of copying the file to the new location and making the edits,\nuse an absolute import and `}{`patching`}{`:`}

      \n
      {`// in /lib/foo/bar.libsonnet:`}{`\n`}{`(`}{`import`}{` `}{`\"../../vendor/foo/bar.libsonnet\"`}{`) `}{`+`}{` {`}{`\n`}{`  `}{`foo+:`}{` {`}{`\n`}{`    `}{`bar:`}{` `}{`\"fixed\"`}{`\n`}{`  }`}{`\n`}{`}`}
      \n
      \n
      \n

      {`Important:`}{` If the file you override is not the one you directly import,\nbut instead imported by another file first, the override will only occur if\nthe placement of the file is alongside your `}{`main.libsonnet`}{`. This is due to\nthe logic behind the Jsonnet importer. Example: We import\n`}{`abc/main.libsonnet`}{` located in `}{`vendor/abc`}{`. Because Jsonnet first looks if\nfiles are locally present before considering the `}{`import\npaths`}{`, you need to make sure your override is\nactually picked up. In our example, you'd need to copy the `}{`main.libsonnet`}{`\ninto `}{`lib/abc`}{` as well.`}

      \n
      \n

      {`Per environment`}

      \n

      {`Another common case is overriding the entire `}{`vendor`}{` bundle per environment.`}

      \n

      {`This is handy, when you for example want to test a change of an upstream\nlibrary which is used in many environments (including `}{`prod`}{`) in a single one,\nwithout affecting all the others.`}

      \n

      {`For this, Tanka lets you have a separate `}{`vendor`}{`, `}{`jsonnetfile.json`}{` and\n`}{`jsonnetfile.lock.json`}{` per environment. To do so:`}

      \n

      {`Create `}{`tkrc.yaml`}

      \n

      {`Tanka normally uses the `}{`jsonnetfile.json`}{` from your project to find its root.\nAs we are going to create another one of that down the tree in the next step, we\nneed another marker for `}{``}{`.`}

      \n

      {`For that, create an empty file called `}{`tkrc.yaml`}{` in your project's root,\nalongside the original `}{`jsonnetfile.json`}{`.`}

      \n
      \n

      {`Info`}{`: While the name suggests that `}{`tkrc.yaml`}{` could be used for setting\nparameters, this is not the case yet.`}

      {`\n`}{`It might however be repurposed later, in case we need such functionality`}

      \n
      \n

      {`Add a `}{`vendor`}{` to your environment`}

      \n

      {`In your environments folder (e.g. `}{`/environments/default`}{`):`}

      \n
      {`# init jsonnet bundler (creates jsonnetfile.json)`}{`\n`}{`$ jb init`}{`\n`}{`\n`}{`# install the updated dependency`}{`\n`}{`$ jb install github.com/foo/bar@v2`}
      \n
      \n

      {`Tip`}{`: You don't need to install everything into the new `}{`vendor/`}{`, as\npackages not present there can still be imported from the global `}{`/vendor`}{`.`}

      \n
      \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-namespaces-md-eb97277738bc0df4b534.js b/pr-preview/pr-1029/component---docs-namespaces-md-eb97277738bc0df4b534.js deleted file mode 100644 index 63368055d..000000000 --- a/pr-preview/pr-1029/component---docs-namespaces-md-eb97277738bc0df4b534.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{"+UK2":function(e,a,t){"use strict";t.r(a),t.d(a,"_frontmatter",(function(){return l})),t.d(a,"default",(function(){return i}));var n=t("wx14"),r=t("Ff2n"),s=(t("q1tI"),t("7ljp")),m=t("hhGP");t("qKvR");const c=["components"],l={};void 0!==l&&l&&l===Object(l)&&Object.isExtensible(l)&&!Object.prototype.hasOwnProperty.call(l,"__filemeta")&&Object.defineProperty(l,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/namespaces.md"}});const o={_frontmatter:l},p=m.a;function i(e){let{components:a}=e,t=Object(r.a)(e,c);return Object(s.b)(p,Object(n.a)({},o,t,{components:a,mdxType:"MDXLayout"}),Object(s.b)("h1",{id:"namespaces"},"Namespaces"),Object(s.b)("p",null,"When using Tanka, namespaces are handled slightly different compared to\n",Object(s.b)("inlineCode",{parentName:"p"},"kubectl"),", because environments offer more granular control than contexts used\nby ",Object(s.b)("inlineCode",{parentName:"p"},"kubectl"),"."),Object(s.b)("h2",{id:"default-namespaces"},"Default namespaces"),Object(s.b)("p",null,"In the ",Object(s.b)("a",{parentName:"p",href:"/pr-preview/pr-1029/config/#file-format"},Object(s.b)("inlineCode",{parentName:"a"},"spec.json"))," of each environment, you can set the\n",Object(s.b)("inlineCode",{parentName:"p"},"spec.namespace")," field, which is the default namespace. The default namespace is\nset for every resource that ",Object(s.b)("strong",{parentName:"p"},"does not")," have a namespace ",Object(s.b)("strong",{parentName:"p"},"set from Jsonnet"),"."),Object(s.b)("table",null,Object(s.b)("thead",{parentName:"table"},Object(s.b)("tr",{parentName:"thead"},Object(s.b)("th",{parentName:"tr",align:null}),Object(s.b)("th",{parentName:"tr",align:null},"Scenario"),Object(s.b)("th",{parentName:"tr",align:null},"Action"))),Object(s.b)("tbody",{parentName:"table"},Object(s.b)("tr",{parentName:"tbody"},Object(s.b)("td",{parentName:"tr",align:null},"1."),Object(s.b)("td",{parentName:"tr",align:null},"Your resource ",Object(s.b)("strong",{parentName:"td"},"lacks namespace")," information (",Object(s.b)("inlineCode",{parentName:"td"},"metadata.namespace"),") unset or ",Object(s.b)("inlineCode",{parentName:"td"},'""')),Object(s.b)("td",{parentName:"tr",align:null},"Tanka sets ",Object(s.b)("inlineCode",{parentName:"td"},"metadata.namespace")," to the value of ",Object(s.b)("inlineCode",{parentName:"td"},"spec.namespace")," in ",Object(s.b)("inlineCode",{parentName:"td"},"spec.json"))),Object(s.b)("tr",{parentName:"tbody"},Object(s.b)("td",{parentName:"tr",align:null},"2."),Object(s.b)("td",{parentName:"tr",align:null},"Your resource ",Object(s.b)("strong",{parentName:"td"},"already has")," namespace information"),Object(s.b)("td",{parentName:"tr",align:null},"Tanka does nothing, accepting the explicit namespace")))),Object(s.b)("p",null,"While we recommend keeping environments limited to a single namespace, there are\nlegit cases where it's handy to have them span multiple namespaces, for example:"),Object(s.b)("ul",null,Object(s.b)("li",{parentName:"ul"},"Some other piece of software (Operators, etc) require resources to be in a specific namespace"),Object(s.b)("li",{parentName:"ul"},'A rarely changing "base" environment holding resources deployed for many clusters in the same way'),Object(s.b)("li",{parentName:"ul"},"etc.")),Object(s.b)("h2",{id:"cluster-wide-resources"},"Cluster-wide resources"),Object(s.b)("p",null,"Some resources in Kubernetes are cluster-wide, meaning they don't belong to a single namespace at all."),Object(s.b)("p",null,"Tanka will make an attempt to not add namespaces to ",Object(s.b)("em",{parentName:"p"},"known")," cluster-wide types.\nIt does this with a short list of types in ",Object(s.b)("a",{parentName:"p",href:"https://github.com/grafana/tanka/blob/main/pkg/process/namespace.go"},"the source code"),"."),Object(s.b)("p",null,"Tanka cannot feasibly maintain this list for all known custom resource types. In those cases, resources will have namespaces added to their manifests,\nand kubectl should happily apply them as non-namespaced resources."),Object(s.b)("p",null,"If this presents a problem for your workflow, you can ",Object(s.b)("strong",{parentName:"p"},"override this")," behavior\nper-resource, by setting the ",Object(s.b)("inlineCode",{parentName:"p"},"tanka.dev/namespaced")," annotation to ",Object(s.b)("inlineCode",{parentName:"p"},'"false"'),"\n(must be of ",Object(s.b)("inlineCode",{parentName:"p"},"string")," type):"),Object(s.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(s.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(s.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(s.b)("span",{parentName:"span",className:"mtk10"},"thing:"),Object(s.b)("span",{parentName:"span",className:"mtk1"}," clusterRole."),Object(s.b)("span",{parentName:"span",className:"mtk9"},"new"),Object(s.b)("span",{parentName:"span",className:"mtk1"},"("),Object(s.b)("span",{parentName:"span",className:"mtk6"},'"myClusterRole"'),Object(s.b)("span",{parentName:"span",className:"mtk1"},")")),"\n",Object(s.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(s.b)("span",{parentName:"span",className:"mtk1"}," "),Object(s.b)("span",{parentName:"span",className:"mtk12"},"+"),Object(s.b)("span",{parentName:"span",className:"mtk1"}," clusterRole.mixin.metadata."),Object(s.b)("span",{parentName:"span",className:"mtk9"},"withAnnotationsMixin"),Object(s.b)("span",{parentName:"span",className:"mtk1"},"({ "),Object(s.b)("span",{parentName:"span",className:"mtk6"},'"tanka.dev/namespaced"'),Object(s.b)("span",{parentName:"span",className:"mtk1"},": "),Object(s.b)("span",{parentName:"span",className:"mtk6"},'"false"'),Object(s.b)("span",{parentName:"span",className:"mtk1"}," })")))),Object(s.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==i&&i&&i===Object(i)&&Object.isExtensible(i)&&!Object.prototype.hasOwnProperty.call(i,"__filemeta")&&Object.defineProperty(i,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/namespaces.md"}}),i.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-namespaces-md-eb97277738bc0df4b534.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-namespaces-md-eb97277738bc0df4b534.js.map b/pr-preview/pr-1029/component---docs-namespaces-md-eb97277738bc0df4b534.js.map deleted file mode 100644 index 196b29220..000000000 --- a/pr-preview/pr-1029/component---docs-namespaces-md-eb97277738bc0df4b534.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/namespaces.md"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","isMDXComponent"],"mappings":"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","file":"component---docs-namespaces-md-eb97277738bc0df4b534.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`Namespaces`}

      \n

      {`When using Tanka, namespaces are handled slightly different compared to\n`}{`kubectl`}{`, because environments offer more granular control than contexts used\nby `}{`kubectl`}{`.`}

      \n

      {`Default namespaces`}

      \n

      {`In the `}{`spec.json`}{` of each environment, you can set the\n`}{`spec.namespace`}{` field, which is the default namespace. The default namespace is\nset for every resource that `}{`does not`}{` have a namespace `}{`set from Jsonnet`}{`.`}

      \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
      {`Scenario`}{`Action`}
      {`1.`}{`Your resource `}{`lacks namespace`}{` information (`}{`metadata.namespace`}{`) unset or `}{`\"\"`}{`Tanka sets `}{`metadata.namespace`}{` to the value of `}{`spec.namespace`}{` in `}{`spec.json`}
      {`2.`}{`Your resource `}{`already has`}{` namespace information`}{`Tanka does nothing, accepting the explicit namespace`}
      \n

      {`While we recommend keeping environments limited to a single namespace, there are\nlegit cases where it's handy to have them span multiple namespaces, for example:`}

      \n
        \n
      • {`Some other piece of software (Operators, etc) require resources to be in a specific namespace`}
      • \n
      • {`A rarely changing \"base\" environment holding resources deployed for many clusters in the same way`}
      • \n
      • {`etc.`}
      • \n
      \n

      {`Cluster-wide resources`}

      \n

      {`Some resources in Kubernetes are cluster-wide, meaning they don't belong to a single namespace at all.`}

      \n

      {`Tanka will make an attempt to not add namespaces to `}{`known`}{` cluster-wide types.\nIt does this with a short list of types in `}{`the source code`}{`.`}

      \n

      {`Tanka cannot feasibly maintain this list for all known custom resource types. In those cases, resources will have namespaces added to their manifests,\nand kubectl should happily apply them as non-namespaced resources.`}

      \n

      {`If this presents a problem for your workflow, you can `}{`override this`}{` behavior\nper-resource, by setting the `}{`tanka.dev/namespaced`}{` annotation to `}{`\"false\"`}{`\n(must be of `}{`string`}{` type):`}

      \n
      {`thing:`}{` clusterRole.`}{`new`}{`(`}{`\"myClusterRole\"`}{`)`}{`\n`}{`       `}{`+`}{` clusterRole.mixin.metadata.`}{`withAnnotationsMixin`}{`({ `}{`\"tanka.dev/namespaced\"`}{`: `}{`\"false\"`}{` })`}
      \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-server-side-apply-md-218774290e157fad3f47.js b/pr-preview/pr-1029/component---docs-server-side-apply-md-218774290e157fad3f47.js deleted file mode 100644 index 92d339b9b..000000000 --- a/pr-preview/pr-1029/component---docs-server-side-apply-md-218774290e157fad3f47.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{"BC+V":function(e,t,a){"use strict";a.r(t),a.d(t,"_frontmatter",(function(){return s})),a.d(t,"default",(function(){return p}));var n=a("wx14"),r=a("Ff2n"),i=(a("q1tI"),a("7ljp")),l=a("hhGP");a("qKvR");const o=["components"],s={};void 0!==s&&s&&s===Object(s)&&Object.isExtensible(s)&&!Object.prototype.hasOwnProperty.call(s,"__filemeta")&&Object.defineProperty(s,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/server-side-apply.md"}});const c={_frontmatter:s},m=l.a;function p(e){let{components:t}=e,a=Object(r.a)(e,o);return Object(i.b)(m,Object(n.a)({},c,a,{components:t,mdxType:"MDXLayout"}),Object(i.b)("h1",{id:"server-side-apply"},"Server-Side Apply"),Object(i.b)("p",null,"Tanka supports\n",Object(i.b)("a",{parentName:"p",href:"https://kubernetes.io/docs/reference/using-api/server-side-apply/"},"server-side apply"),",\nwhich requires at least Kubernetes 1.16+, and was promoted to stable status in 1.22."),Object(i.b)("p",null,"To enable server-side diff in tanka, add the following field to ",Object(i.b)("inlineCode",{parentName:"p"},"spec.json"),":"),Object(i.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"diff"},Object(i.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"},' "spec": {')),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(i.b)("span",{parentName:"span",className:"mtk6"},' "applyStrategy": "server",')),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(i.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(i.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(i.b)("p",null,"This also has the effect of changing the default ",Object(i.b)("a",{parentName:"p",href:"/pr-preview/pr-1029/diff-strategy"},"diff strategy"),"\nto ",Object(i.b)("inlineCode",{parentName:"p"},"server"),", but this can be overridden via command line flags or ",Object(i.b)("inlineCode",{parentName:"p"},"spec.json"),"."),Object(i.b)("p",null,"While server-side apply doesn't have any effect on the resources being applied\nand is intended to be a general in-place upgrade to client-side apply, there are\ndifferences in how fields are managed that can make converting existing cluster\nresources a non-trival change."),Object(i.b)("p",null,"Identifying and fixing these changes are beyond the scope of this guide, but\nmany can be found before an apply by using the ",Object(i.b)("inlineCode",{parentName:"p"},"validate")," or ",Object(i.b)("inlineCode",{parentName:"p"},"server"),"\n",Object(i.b)("a",{parentName:"p",href:"/pr-preview/pr-1029/diff-strategy"},"diff strategy"),"."),Object(i.b)("h2",{id:"field-conflicts"},"Field conflicts"),Object(i.b)("p",null,"As part of the changes, you may encounter error messages which\nrecommend the use of the ",Object(i.b)("inlineCode",{parentName:"p"},"--force-conflicts")," flag. Using ",Object(i.b)("inlineCode",{parentName:"p"},"tk apply --force"),"\nin server-side mode will enable that flag for kubectl instead of\n",Object(i.b)("inlineCode",{parentName:"p"},"kubectl --force"),", which no longer has any effect in server-side mode."),Object(i.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==p&&p&&p===Object(p)&&Object.isExtensible(p)&&!Object.prototype.hasOwnProperty.call(p,"__filemeta")&&Object.defineProperty(p,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/server-side-apply.md"}}),p.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-server-side-apply-md-218774290e157fad3f47.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-server-side-apply-md-218774290e157fad3f47.js.map b/pr-preview/pr-1029/component---docs-server-side-apply-md-218774290e157fad3f47.js.map deleted file mode 100644 index e18dcce6a..000000000 --- a/pr-preview/pr-1029/component---docs-server-side-apply-md-218774290e157fad3f47.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/server-side-apply.md"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","isMDXComponent"],"mappings":"2RAMaA,EAAe,QAAG,IAAAA,UAAAC,OAAAD,IAAAC,OAAAC,aAAAF,KAAAC,OAAAE,UAAAC,eAAAC,KAAAL,EAAA,eAAAC,OAAAK,eAAAN,EAAA,cAAAO,cAAA,EAAAC,MAAA,CAAAC,KAAA,eAAAC,SAAA,+BAC/B,MAAMC,EAAc,CAClBX,gBAEIY,EAAYC,IACH,SAASC,EAAUC,GAG/B,IAHgC,WACjCC,GAEDD,EADIE,EAAKC,YAAAH,EAAAI,GAER,OAAOC,YAACR,EAASS,YAAA,GAAKV,EAAiBM,EAAK,CAAED,WAAYA,EAAYM,QAAQ,cAG5EF,YAAA,MACE,GAAM,qBAAmB,qBAE3BA,YAAA,4BACFA,YAAA,KAAGG,WAAW,IACR,KAAQ,qEAAmE,qBACjD,2FAE9BH,YAAA,4EAAuEA,YAAA,cAAYG,WAAW,KAAG,aAA2B,KAC5HH,YAAA,OACE,UAAa,yCACb,gBAAiB,QAChBA,YAAA,QAAMG,WAAW,MAChB,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,gBACW,KACxCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,mCAC8B,KAC3DH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,QACG,KAChCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,QAE3BH,YAAA,6DAAwDA,YAAA,KAAGG,WAAW,IAClE,KAAQ,qCAAmC,iBACrB,QACzBH,YAAA,cAAYG,WAAW,KAAG,UAAwB,0DAA2DH,YAAA,cAAYG,WAAW,KAAG,aAA2B,KACnKH,YAAA,8RAIAA,YAAA,yIAC6CA,YAAA,cAAYG,WAAW,KAAG,YAA0B,OAAQH,YAAA,cAAYG,WAAW,KAAG,UAAwB,KAC7JH,YAAA,KAAGG,WAAW,IACR,KAAQ,qCAAmC,iBACrB,KAC1BH,YAAA,MACE,GAAM,mBAAiB,mBAEzBA,YAAA,qGACuBA,YAAA,cAAYG,WAAW,KAAG,qBAAmC,gBAAiBH,YAAA,cAAYG,WAAW,KAAG,oBAAkC,uEAEnKH,YAAA,cAAYG,WAAW,KAAG,mBAAiC,yDAEzDH,YAAA,SACE,UAAa,2BAAyB,glCA6B3C,IAAAN,UAAAb,OAAAa,IAAAb,OAAAC,aAAAY,KAAAb,OAAAE,UAAAC,eAAAC,KAAAS,EAAA,eAAAb,OAAAK,eAAAQ,EAAA,cAAAP,cAAA,EAAAC,MAAA,CAAAC,KAAA,aAAAC,SAAA,+BAEDI,EAAWU,gBAAiB","file":"component---docs-server-side-apply-md-218774290e157fad3f47.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`Server-Side Apply`}

      \n

      {`Tanka supports\n`}{`server-side apply`}{`,\nwhich requires at least Kubernetes 1.16+, and was promoted to stable status in 1.22.`}

      \n

      {`To enable server-side diff in tanka, add the following field to `}{`spec.json`}{`:`}

      \n
      {`{`}{`\n`}{`  \"spec\": {`}{`\n`}{`+`}{`    \"applyStrategy\": \"server\",`}{`\n`}{`  }`}{`\n`}{`}`}
      \n

      {`This also has the effect of changing the default `}{`diff strategy`}{`\nto `}{`server`}{`, but this can be overridden via command line flags or `}{`spec.json`}{`.`}

      \n

      {`While server-side apply doesn't have any effect on the resources being applied\nand is intended to be a general in-place upgrade to client-side apply, there are\ndifferences in how fields are managed that can make converting existing cluster\nresources a non-trival change.`}

      \n

      {`Identifying and fixing these changes are beyond the scope of this guide, but\nmany can be found before an apply by using the `}{`validate`}{` or `}{`server`}{`\n`}{`diff strategy`}{`.`}

      \n

      {`Field conflicts`}

      \n

      {`As part of the changes, you may encounter error messages which\nrecommend the use of the `}{`--force-conflicts`}{` flag. Using `}{`tk apply --force`}{`\nin server-side mode will enable that flag for kubectl instead of\n`}{`kubectl --force`}{`, which no longer has any effect in server-side mode.`}

      \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-targets-md-123f8be890eda328d792.js b/pr-preview/pr-1029/component---docs-targets-md-123f8be890eda328d792.js deleted file mode 100644 index 9035b58d9..000000000 --- a/pr-preview/pr-1029/component---docs-targets-md-123f8be890eda328d792.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{txtL:function(e,a,t){"use strict";t.r(a),t.d(a,"_frontmatter",(function(){return p})),t.d(a,"default",(function(){return o}));var n=t("wx14"),s=t("Ff2n"),c=(t("q1tI"),t("7ljp")),m=t("hhGP");t("qKvR");const l=["components"],p={};void 0!==p&&p&&p===Object(p)&&Object.isExtensible(p)&&!Object.prototype.hasOwnProperty.call(p,"__filemeta")&&Object.defineProperty(p,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/targets.md"}});const r={_frontmatter:p},i=m.a;function o(e){let{components:a}=e,t=Object(s.a)(e,l);return Object(c.b)(i,Object(n.a)({},r,t,{components:a,mdxType:"MDXLayout"}),Object(c.b)("h1",{id:"output-filtering"},"Output Filtering"),Object(c.b)("p",null,"When a project becomes bigger over time and includes a lot of Kubernetes\nobjects, it may become required to operate on only a subset of them (e.g. apply\nonly a part of an application)."),Object(c.b)("p",null,"Tanka helps you with this, by allowing you to limit the used objects on the\ncommand line using the ",Object(c.b)("inlineCode",{parentName:"p"},"--target")," flag. Say you are deploying an ",Object(c.b)("inlineCode",{parentName:"p"},"nginx"),"\ninstance with a special ",Object(c.b)("inlineCode",{parentName:"p"},"nginx.conf")," and want to apply the ",Object(c.b)("inlineCode",{parentName:"p"},"ConfigMap")," first:"),Object(c.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(c.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk3 mtki"},"# show the ConfigMap")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"},"$ tk show -t configmap/nginx "),Object(c.b)("span",{parentName:"span",className:"mtk9"},".")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk3 mtki"},"# all good? apply!")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"},"$ tk apply -t configmap/nginx "),Object(c.b)("span",{parentName:"span",className:"mtk9"},".")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk3 mtki"},"# and apply everything else:")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"},"$ tk apply "),Object(c.b)("span",{parentName:"span",className:"mtk9"},".")))),Object(c.b)("p",null,"The syntax of the ",Object(c.b)("inlineCode",{parentName:"p"},"--target")," / ",Object(c.b)("inlineCode",{parentName:"p"},"-t")," flag is ",Object(c.b)("inlineCode",{parentName:"p"},"--target=/"),". If\nmultiple objects match this pattern, all of them are used."),Object(c.b)("p",null,"The ",Object(c.b)("inlineCode",{parentName:"p"},"--target")," / ",Object(c.b)("inlineCode",{parentName:"p"},"-t")," flag can be specified multiple times, to work with\nmultiple objects."),Object(c.b)("h2",{id:"regular-expressions"},"Regular Expressions"),Object(c.b)("p",null,"The argument passed to the ",Object(c.b)("inlineCode",{parentName:"p"},"--target")," flag is interpreted as a\n",Object(c.b)("a",{parentName:"p",href:"https://github.com/google/re2/wiki/Syntax"},"RE2")," regular expression."),Object(c.b)("p",null,"This allows you to use all sorts of wildcards and other advanced matching\nfunctionality to select Kubernetes objects:"),Object(c.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(c.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk3 mtki"},"# show all deployments")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"},"$ tk show "),Object(c.b)("span",{parentName:"span",className:"mtk9"},"."),Object(c.b)("span",{parentName:"span",className:"mtk1"}," -t "),Object(c.b)("span",{parentName:"span",className:"mtk5"},"'"),Object(c.b)("span",{parentName:"span",className:"mtk6"},"deployment/.*"),Object(c.b)("span",{parentName:"span",className:"mtk5"},"'")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk3 mtki"},'# show all objects named "loki"')),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"},"$ tk show "),Object(c.b)("span",{parentName:"span",className:"mtk9"},"."),Object(c.b)("span",{parentName:"span",className:"mtk1"}," -t "),Object(c.b)("span",{parentName:"span",className:"mtk5"},"'"),Object(c.b)("span",{parentName:"span",className:"mtk6"},".*/loki"),Object(c.b)("span",{parentName:"span",className:"mtk5"},"'")))),Object(c.b)("h3",{id:"gotchas"},"Gotchas"),Object(c.b)("p",null,"When using regular expressions, there are some things to watch out for:"),Object(c.b)("h4",{id:"line-anchors"},"Line Anchors"),Object(c.b)("p",null,"Tanka automatically surrounds your regular expression with line anchors:"),Object(c.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"text"},Object(c.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},"^$"))),Object(c.b)("p",null,"For example, ",Object(c.b)("inlineCode",{parentName:"p"},"--target 'deployment/.*'")," becomes ",Object(c.b)("inlineCode",{parentName:"p"},"^deployment/.*$"),"."),Object(c.b)("h4",{id:"quoting"},"Quoting"),Object(c.b)("p",null,"Regular expressions may consist of characters that have special meanings in\nshell. Always make sure to properly quote your regular expression using ",Object(c.b)("strong",{parentName:"p"},"single\nquotes"),"."),Object(c.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"zsh"},Object(c.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk3 mtki"},"# shell attempts to match the wildcard itself:")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"},"zsh-5.4.2$ tk show "),Object(c.b)("span",{parentName:"span",className:"mtk9"},"."),Object(c.b)("span",{parentName:"span",className:"mtk1"}," -t deployment/."),Object(c.b)("span",{parentName:"span",className:"mtk12"},"*")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"},"zsh: no matches found: deployment/."),Object(c.b)("span",{parentName:"span",className:"mtk12"},"*")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk3 mtki"},"# properly quoted:")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"},"zsh-5.4.2$ tk show "),Object(c.b)("span",{parentName:"span",className:"mtk9"},"."),Object(c.b)("span",{parentName:"span",className:"mtk1"}," -t "),Object(c.b)("span",{parentName:"span",className:"mtk5"},"'"),Object(c.b)("span",{parentName:"span",className:"mtk6"},"deployment/.*"),Object(c.b)("span",{parentName:"span",className:"mtk5"},"'")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"},"---")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"},"apiVersion: apps/v1")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"},"kind: Deployment")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk3 mtki"},"# ...")))),Object(c.b)("h2",{id:"excluding"},"Excluding"),Object(c.b)("p",null,"Sometimes it may be desirably to exclude a single object, instead of including all others."),Object(c.b)("p",null,"To do so, prepend the regular expression with an exclamation mark (",Object(c.b)("inlineCode",{parentName:"p"},"!"),"), like so:"),Object(c.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(c.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk3 mtki"},"# filter out all Deployments")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"},"$ tk show "),Object(c.b)("span",{parentName:"span",className:"mtk9"},"."),Object(c.b)("span",{parentName:"span",className:"mtk1"}," -t "),Object(c.b)("span",{parentName:"span",className:"mtk5"},"'"),Object(c.b)("span",{parentName:"span",className:"mtk6"},"!deployment/.*"),Object(c.b)("span",{parentName:"span",className:"mtk5"},"'")))),Object(c.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==o&&o&&o===Object(o)&&Object.isExtensible(o)&&!Object.prototype.hasOwnProperty.call(o,"__filemeta")&&Object.defineProperty(o,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/targets.md"}}),o.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-targets-md-123f8be890eda328d792.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-targets-md-123f8be890eda328d792.js.map b/pr-preview/pr-1029/component---docs-targets-md-123f8be890eda328d792.js.map deleted file mode 100644 index 1da77213f..000000000 --- a/pr-preview/pr-1029/component---docs-targets-md-123f8be890eda328d792.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/targets.md"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","isMDXComponent"],"mappings":"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","file":"component---docs-targets-md-123f8be890eda328d792.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`Output Filtering`}

      \n

      {`When a project becomes bigger over time and includes a lot of Kubernetes\nobjects, it may become required to operate on only a subset of them (e.g. apply\nonly a part of an application).`}

      \n

      {`Tanka helps you with this, by allowing you to limit the used objects on the\ncommand line using the `}{`--target`}{` flag. Say you are deploying an `}{`nginx`}{`\ninstance with a special `}{`nginx.conf`}{` and want to apply the `}{`ConfigMap`}{` first:`}

      \n
      {`# show the ConfigMap`}{`\n`}{`$ tk show -t configmap/nginx `}{`.`}{`\n`}{`\n`}{`# all good? apply!`}{`\n`}{`$ tk apply -t configmap/nginx `}{`.`}{`\n`}{`\n`}{`# and apply everything else:`}{`\n`}{`$ tk apply `}{`.`}
      \n

      {`The syntax of the `}{`--target`}{` / `}{`-t`}{` flag is `}{`--target=/`}{`. If\nmultiple objects match this pattern, all of them are used.`}

      \n

      {`The `}{`--target`}{` / `}{`-t`}{` flag can be specified multiple times, to work with\nmultiple objects.`}

      \n

      {`Regular Expressions`}

      \n

      {`The argument passed to the `}{`--target`}{` flag is interpreted as a\n`}{`RE2`}{` regular expression.`}

      \n

      {`This allows you to use all sorts of wildcards and other advanced matching\nfunctionality to select Kubernetes objects:`}

      \n
      {`# show all deployments`}{`\n`}{`$ tk show `}{`.`}{` -t `}{`'`}{`deployment/.*`}{`'`}{`\n`}{`\n`}{`# show all objects named \"loki\"`}{`\n`}{`$ tk show `}{`.`}{` -t `}{`'`}{`.*/loki`}{`'`}
      \n

      {`Gotchas`}

      \n

      {`When using regular expressions, there are some things to watch out for:`}

      \n

      {`Line Anchors`}

      \n

      {`Tanka automatically surrounds your regular expression with line anchors:`}

      \n
      {`^$`}
      \n

      {`For example, `}{`--target 'deployment/.*'`}{` becomes `}{`^deployment/.*$`}{`.`}

      \n

      {`Quoting`}

      \n

      {`Regular expressions may consist of characters that have special meanings in\nshell. Always make sure to properly quote your regular expression using `}{`single\nquotes`}{`.`}

      \n
      {`# shell attempts to match the wildcard itself:`}{`\n`}{`zsh-5.4.2$ tk show `}{`.`}{` -t deployment/.`}{`*`}{`\n`}{`zsh: no matches found: deployment/.`}{`*`}{`\n`}{`\n`}{`# properly quoted:`}{`\n`}{`zsh-5.4.2$ tk show `}{`.`}{` -t `}{`'`}{`deployment/.*`}{`'`}{`\n`}{`---`}{`\n`}{`apiVersion: apps/v1`}{`\n`}{`kind: Deployment`}{`\n`}{`# ...`}
      \n

      {`Excluding`}

      \n

      {`Sometimes it may be desirably to exclude a single object, instead of including all others.`}

      \n

      {`To do so, prepend the regular expression with an exclamation mark (`}{`!`}{`), like so:`}

      \n
      {`# filter out all Deployments`}{`\n`}{`$ tk show `}{`.`}{` -t `}{`'`}{`!deployment/.*`}{`'`}
      \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-tutorial-abstraction-mdx-b97edf44038784f040f4.js b/pr-preview/pr-1029/component---docs-tutorial-abstraction-mdx-b97edf44038784f040f4.js deleted file mode 100644 index e1498cd60..000000000 --- a/pr-preview/pr-1029/component---docs-tutorial-abstraction-mdx-b97edf44038784f040f4.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{pcXi:function(a,e,s){"use strict";s.r(e),s.d(e,"_frontmatter",(function(){return N})),s.d(e,"default",(function(){return i}));var n=s("wx14"),t=s("Ff2n"),m=(s("q1tI"),s("7ljp")),p=s("hhGP"),c=s("Z+0r");s("qKvR");const b=["components"],N={};void 0!==N&&N&&N===Object(N)&&Object.isExtensible(N)&&!Object.prototype.hasOwnProperty.call(N,"__filemeta")&&Object.defineProperty(N,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/tutorial/abstraction.mdx"}});const l={_frontmatter:N},r=p.a;function i(a){let{components:e}=a,s=Object(t.a)(a,b);return Object(m.b)(r,Object(n.a)({},l,s,{components:e,mdxType:"MDXLayout"}),Object(m.b)("h1",{id:"abstraction"},"Abstraction"),Object(m.b)("p",null,"While we won't need to touch the resource definitions directly that frequently\nanymore now that we have the ",Object(m.b)("inlineCode",{parentName:"p"},"_config")," object for our tunables, the\n",Object(m.b)("inlineCode",{parentName:"p"},"main.jsonnet")," file is still very long and hard to read. Especially because of\nall the brackets, it's even worse than yaml at the moment."),Object(m.b)("h2",{id:"splitting-it-up"},"Splitting it up"),Object(m.b)("p",null,"Let's start cleaning this up by separating logical pieces into distinct files:"),Object(m.b)("ul",null,Object(m.b)("li",{parentName:"ul"},Object(m.b)("inlineCode",{parentName:"li"},"main.jsonnet"),": Still our main file, containing the ",Object(m.b)("inlineCode",{parentName:"li"},"_config")," object and importing the other files"),Object(m.b)("li",{parentName:"ul"},Object(m.b)("inlineCode",{parentName:"li"},"grafana.jsonnet"),": ",Object(m.b)("inlineCode",{parentName:"li"},"Deployment")," and ",Object(m.b)("inlineCode",{parentName:"li"},"Service")," for the Grafana instance"),Object(m.b)("li",{parentName:"ul"},Object(m.b)("inlineCode",{parentName:"li"},"prometheus.jsonnet"),": ",Object(m.b)("inlineCode",{parentName:"li"},"Deployment")," and ",Object(m.b)("inlineCode",{parentName:"li"},"Service")," for the Prometheus server")),Object(m.b)("h5",{id:"environmentsdefaultgrafanajsonnet"},"/environments/default/grafana.jsonnet"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// DO NOT use the root level here.")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// Include the grafana subkey, otherwise $ won't work.")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"grafana:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"deployment:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"apiVersion:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'apps/v1'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"kind:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'Deployment'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"metadata:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"$"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"._config.grafana.name,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"spec:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"selector:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"matchLabels:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"$"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"._config.grafana.name,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"template:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"metadata:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"labels:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"$"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"._config.grafana.name,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"spec:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"containers:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," [")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"image:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'grafana/grafana'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"$"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"._config.grafana.name,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"ports:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," [{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"containerPort:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"$"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"._config.grafana.port,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'ui'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }],")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," ],")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"service:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"apiVersion:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'v1'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"kind:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'Service'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"metadata:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"labels:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"$"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"._config.grafana.name,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"$"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"._config.grafana.name,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"spec:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"ports:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," [{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'%s-ui'"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"%"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"$"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"._config.grafana.name,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"port:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"$"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"._config.grafana.port,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"targetPort:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"$"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"._config.grafana.port,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }],")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"selector:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"$"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"._config.grafana.name,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"type:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'NodePort'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("p",null,"The file should contain just the same that was located under the ",Object(m.b)("inlineCode",{parentName:"p"},"grafana")," key\non the root object before. Do the same for ",Object(m.b)("inlineCode",{parentName:"p"},"/environments/default/prometheus.jsonnet")," as well."),Object(m.b)("h5",{id:"environmentsdefaultmainjsonnet"},"/environments/default/main.jsonnet"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// Think of `import` as copy-pasting the contents")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// of ./grafana.jsonnet here")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk4"},"import"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"grafana.jsonnet"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},") "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"+")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk4"},"import"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"prometheus.jsonnet"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},") "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"+")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk7"},"_config::"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"grafana:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"port:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"3000"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"grafana"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"prometheus:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"port:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"9090"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"prometheus"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("blockquote",null,Object(m.b)("p",{parentName:"blockquote"},Object(m.b)("strong",{parentName:"p"},"Clarification"),":",Object(m.b)("br",{parentName:"p"}),"\n","It might seem odd at first sight, that this code works, because\n",Object(m.b)("inlineCode",{parentName:"p"},"grafana.jsonnet")," still refers to the root object using ",Object(m.b)("inlineCode",{parentName:"p"},"$"),", even\nthough it is outside of the file's scope.",Object(m.b)("br",{parentName:"p"}),"\n","However, Jsonnet is lazy-evaluated which means that the contents of\n",Object(m.b)("inlineCode",{parentName:"p"},"grafana.jsonnet")," are ",Object(m.b)("strong",{parentName:"p"},'first "copied"')," into ",Object(m.b)("inlineCode",{parentName:"p"},"main.jsonnet")," (the root\nobject) and ",Object(m.b)("strong",{parentName:"p"},"then evaluated"),". This means the above code actually consists of\nall three objects joined to one big object, which is then converted to JSON.")),Object(m.b)("h2",{id:"helper-utilities"},"Helper utilities"),Object(m.b)("p",null,"While ",Object(m.b)("inlineCode",{parentName:"p"},"main.jsonnet")," is now short and very readable, the other two files are not\nreally an improvement over regular yaml, mostly because they are still full of\nboilerplate."),Object(m.b)("p",null,"Let's use functions to create some useful helpers to reduce the amount of\nrepetition. For that, we create a new file called ",Object(m.b)("inlineCode",{parentName:"p"},"kubernetes.libsonnet"),", which\nwill hold our Kubernetes utilities."),Object(m.b)("blockquote",null,Object(m.b)("p",{parentName:"blockquote"},Object(m.b)("strong",{parentName:"p"},"Note"),": The extension for Jsonnet libraries is ",Object(m.b)("inlineCode",{parentName:"p"},".libsonnet"),". While you do\nnot have to use it, it distinguishes helper code from actual configuration.")),Object(m.b)("h3",{id:"a-deployment-constructor"},"A Deployment constructor"),Object(m.b)("p",null,"Creating a ",Object(m.b)("inlineCode",{parentName:"p"},"Deployment")," requires some mandatory information and a lot of\nboilerplate. A function that creates one could look like this:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// hidden k namespace for this library")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk7"},"k::"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"deployment:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk9"},"new"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"(name, containers)"),Object(m.b)("span",{parentName:"span",className:"mtk12"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"apiVersion:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"apps/v1"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"kind:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"Deployment"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"metadata:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," name,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"spec:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"selector:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," { "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"matchLabels:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," name,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }},")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"template:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"metadata:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," { "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"labels:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," name,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }},")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"spec:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," { "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"containers:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," containers }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("p",null,"Invoking this function will substitute all the variables with the respective\npassed function parameters and return the assembled object."),Object(m.b)("p",null,"To use it, just add it to the root object in ",Object(m.b)("inlineCode",{parentName:"p"},"main.jsonnet"),":"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," ("),Object(m.b)("span",{parentName:"span",className:"mtk4"},"import"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"kubernetes.libsonnet"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},") "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// this line adds it")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," ("),Object(m.b)("span",{parentName:"span",className:"mtk4"},"import"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"grafana.jsonnet"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},") "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"+")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," ("),Object(m.b)("span",{parentName:"span",className:"mtk4"},"import"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"prometheus.jsonnet"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},") "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"+")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," { "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"/* ... */"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")))),Object(m.b)("p",null,"Let's simplify our ",Object(m.b)("inlineCode",{parentName:"p"},"grafana.jsonnet")," a bit:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"grafana:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"deployment:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"$"),Object(m.b)("span",{parentName:"span",className:"mtk1"},".k.deployment."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"new"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"grafana"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},", [{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," image: "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'grafana/grafana'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," name: "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'grafana'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," ports: [{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," containerPort: "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"3000"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," name: "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'ui'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }],")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }]),")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"service:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"apiVersion:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'v1'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"kind:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'Service'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"metadata:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"labels:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'grafana'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'grafana'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"spec:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"ports:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," [{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'grafana-ui'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"port:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"3000"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"targetPort:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"3000"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }],")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"selector:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'grafana'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"type:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'NodePort'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("p",null,"This drastically simplified the creation of the ",Object(m.b)("inlineCode",{parentName:"p"},"Deployment"),", because we do not\nneed to remember how exactly a ",Object(m.b)("inlineCode",{parentName:"p"},"Deployment")," is structured anymore. Just call use\nour helper and you are good to go."),Object(m.b)("blockquote",null,Object(m.b)("p",{parentName:"blockquote"},Object(m.b)("strong",{parentName:"p"},"Task"),": Now try adding a constructor for a ",Object(m.b)("inlineCode",{parentName:"p"},"Service")," to\n",Object(m.b)("inlineCode",{parentName:"p"},"kubernetes.libsonnet")," and use both helpers to recreate the other objects as\nwell.")),Object(m.b)(c.a,{prev:"/tutorial/parameters",next:"/tutorial/k-lib",mdxType:"TutorialButtons"}),Object(m.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==i&&i&&i===Object(i)&&Object.isExtensible(i)&&!Object.prototype.hasOwnProperty.call(i,"__filemeta")&&Object.defineProperty(i,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/tutorial/abstraction.mdx"}}),i.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-tutorial-abstraction-mdx-b97edf44038784f040f4.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-tutorial-abstraction-mdx-b97edf44038784f040f4.js.map b/pr-preview/pr-1029/component---docs-tutorial-abstraction-mdx-b97edf44038784f040f4.js.map deleted file mode 100644 index 2cf5acde2..000000000 --- a/pr-preview/pr-1029/component---docs-tutorial-abstraction-mdx-b97edf44038784f040f4.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/tutorial/abstraction.mdx"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","TutorialButtons","prev","next","isMDXComponent"],"mappings":"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","file":"component---docs-tutorial-abstraction-mdx-b97edf44038784f040f4.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nimport TutorialButtons from \"./TutorialButtons\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`Abstraction`}

      \n

      {`While we won't need to touch the resource definitions directly that frequently\nanymore now that we have the `}{`_config`}{` object for our tunables, the\n`}{`main.jsonnet`}{` file is still very long and hard to read. Especially because of\nall the brackets, it's even worse than yaml at the moment.`}

      \n

      {`Splitting it up`}

      \n

      {`Let's start cleaning this up by separating logical pieces into distinct files:`}

      \n
        \n
      • {`main.jsonnet`}{`: Still our main file, containing the `}{`_config`}{` object and importing the other files`}
      • \n
      • {`grafana.jsonnet`}{`: `}{`Deployment`}{` and `}{`Service`}{` for the Grafana instance`}
      • \n
      • {`prometheus.jsonnet`}{`: `}{`Deployment`}{` and `}{`Service`}{` for the Prometheus server`}
      • \n
      \n
      {`/environments/default/grafana.jsonnet`}
      \n
      {`{`}{`\n`}{`  `}{`// DO NOT use the root level here.`}{`\n`}{`  `}{`// Include the grafana subkey, otherwise $ won't work.`}{`\n`}{`  `}{`grafana:`}{` {`}{`\n`}{`    `}{`deployment:`}{` {`}{`\n`}{`      `}{`apiVersion:`}{` `}{`'apps/v1'`}{`,`}{`\n`}{`      `}{`kind:`}{` `}{`'Deployment'`}{`,`}{`\n`}{`      `}{`metadata:`}{` {`}{`\n`}{`        `}{`name:`}{` `}{`$`}{`._config.grafana.name,`}{`\n`}{`      },`}{`\n`}{`      `}{`spec:`}{` {`}{`\n`}{`        `}{`selector:`}{` {`}{`\n`}{`          `}{`matchLabels:`}{` {`}{`\n`}{`            `}{`name:`}{` `}{`$`}{`._config.grafana.name,`}{`\n`}{`          },`}{`\n`}{`        },`}{`\n`}{`        `}{`template:`}{` {`}{`\n`}{`          `}{`metadata:`}{` {`}{`\n`}{`            `}{`labels:`}{` {`}{`\n`}{`              `}{`name:`}{` `}{`$`}{`._config.grafana.name,`}{`\n`}{`            },`}{`\n`}{`          },`}{`\n`}{`          `}{`spec:`}{` {`}{`\n`}{`            `}{`containers:`}{` [`}{`\n`}{`              {`}{`\n`}{`                `}{`image:`}{` `}{`'grafana/grafana'`}{`,`}{`\n`}{`                `}{`name:`}{` `}{`$`}{`._config.grafana.name,`}{`\n`}{`                `}{`ports:`}{` [{`}{`\n`}{`                    `}{`containerPort:`}{` `}{`$`}{`._config.grafana.port,`}{`\n`}{`                    `}{`name:`}{` `}{`'ui'`}{`,`}{`\n`}{`                }],`}{`\n`}{`              },`}{`\n`}{`            ],`}{`\n`}{`          },`}{`\n`}{`        },`}{`\n`}{`      },`}{`\n`}{`    },`}{`\n`}{`    `}{`service:`}{` {`}{`\n`}{`      `}{`apiVersion:`}{` `}{`'v1'`}{`,`}{`\n`}{`      `}{`kind:`}{` `}{`'Service'`}{`,`}{`\n`}{`      `}{`metadata:`}{` {`}{`\n`}{`        `}{`labels:`}{` {`}{`\n`}{`          `}{`name:`}{` `}{`$`}{`._config.grafana.name,`}{`\n`}{`        },`}{`\n`}{`        `}{`name:`}{` `}{`$`}{`._config.grafana.name,`}{`\n`}{`      },`}{`\n`}{`      `}{`spec:`}{` {`}{`\n`}{`        `}{`ports:`}{` [{`}{`\n`}{`            `}{`name:`}{` `}{`'%s-ui'`}{` `}{`%`}{` `}{`$`}{`._config.grafana.name,`}{`\n`}{`            `}{`port:`}{` `}{`$`}{`._config.grafana.port,`}{`\n`}{`            `}{`targetPort:`}{` `}{`$`}{`._config.grafana.port,`}{`\n`}{`        }],`}{`\n`}{`        `}{`selector:`}{` {`}{`\n`}{`          `}{`name:`}{` `}{`$`}{`._config.grafana.name,`}{`\n`}{`        },`}{`\n`}{`        `}{`type:`}{` `}{`'NodePort'`}{`,`}{`\n`}{`      },`}{`\n`}{`    },`}{`\n`}{`  }`}{`\n`}{`}`}
      \n

      {`The file should contain just the same that was located under the `}{`grafana`}{` key\non the root object before. Do the same for `}{`/environments/default/prometheus.jsonnet`}{` as well.`}

      \n
      {`/environments/default/main.jsonnet`}
      \n
      {`// Think of \\`import\\` as copy-pasting the contents`}{`\n`}{`// of ./grafana.jsonnet here`}{`\n`}{`(`}{`import`}{` `}{`\"grafana.jsonnet\"`}{`) `}{`+`}{`\n`}{`(`}{`import`}{` `}{`\"prometheus.jsonnet\"`}{`) `}{`+`}{`\n`}{`{`}{`\n`}{`  `}{`_config::`}{` {`}{`\n`}{`    `}{`grafana:`}{` {`}{`\n`}{`      `}{`port:`}{` `}{`3000`}{`,`}{`\n`}{`      `}{`name:`}{` `}{`\"grafana\"`}{`,`}{`\n`}{`    },`}{`\n`}{`    `}{`prometheus:`}{` {`}{`\n`}{`      `}{`port:`}{` `}{`9090`}{`,`}{`\n`}{`      `}{`name:`}{` `}{`\"prometheus\"`}{`\n`}{`    }`}{`\n`}{`  }`}{`\n`}{`}`}
      \n
      \n

      {`Clarification`}{`:`}

      {`\n`}{`It might seem odd at first sight, that this code works, because\n`}{`grafana.jsonnet`}{` still refers to the root object using `}{`$`}{`, even\nthough it is outside of the file's scope.`}

      {`\n`}{`However, Jsonnet is lazy-evaluated which means that the contents of\n`}{`grafana.jsonnet`}{` are `}{`first \"copied\"`}{` into `}{`main.jsonnet`}{` (the root\nobject) and `}{`then evaluated`}{`. This means the above code actually consists of\nall three objects joined to one big object, which is then converted to JSON.`}

      \n
      \n

      {`Helper utilities`}

      \n

      {`While `}{`main.jsonnet`}{` is now short and very readable, the other two files are not\nreally an improvement over regular yaml, mostly because they are still full of\nboilerplate.`}

      \n

      {`Let's use functions to create some useful helpers to reduce the amount of\nrepetition. For that, we create a new file called `}{`kubernetes.libsonnet`}{`, which\nwill hold our Kubernetes utilities.`}

      \n
      \n

      {`Note`}{`: The extension for Jsonnet libraries is `}{`.libsonnet`}{`. While you do\nnot have to use it, it distinguishes helper code from actual configuration.`}

      \n
      \n

      {`A Deployment constructor`}

      \n

      {`Creating a `}{`Deployment`}{` requires some mandatory information and a lot of\nboilerplate. A function that creates one could look like this:`}

      \n
      {`{`}{`\n`}{`  `}{`// hidden k namespace for this library`}{`\n`}{`  `}{`k::`}{` {`}{`\n`}{`    `}{`deployment:`}{` {`}{`\n`}{`      `}{`new`}{`(name, containers)`}{`:`}{` {`}{`\n`}{`        `}{`apiVersion:`}{` `}{`\"apps/v1\"`}{`,`}{`\n`}{`        `}{`kind:`}{` `}{`\"Deployment\"`}{`,`}{`\n`}{`        `}{`metadata:`}{` {`}{`\n`}{`          `}{`name:`}{` name,`}{`\n`}{`        },`}{`\n`}{`        `}{`spec:`}{` {`}{`\n`}{`          `}{`selector:`}{` { `}{`matchLabels:`}{` {`}{`\n`}{`            `}{`name:`}{` name,`}{`\n`}{`          }},`}{`\n`}{`          `}{`template:`}{` {`}{`\n`}{`            `}{`metadata:`}{` { `}{`labels:`}{` {`}{`\n`}{`              `}{`name:`}{` name,`}{`\n`}{`            }},`}{`\n`}{`            `}{`spec:`}{` { `}{`containers:`}{` containers }`}{`\n`}{`          }`}{`\n`}{`        }`}{`\n`}{`      }`}{`\n`}{`    }`}{`\n`}{`  }`}{`\n`}{`}`}
      \n

      {`Invoking this function will substitute all the variables with the respective\npassed function parameters and return the assembled object.`}

      \n

      {`To use it, just add it to the root object in `}{`main.jsonnet`}{`:`}

      \n
      {`  (`}{`import`}{` `}{`\"kubernetes.libsonnet\"`}{`) `}{`+`}{` `}{`// this line adds it`}{`\n`}{`  (`}{`import`}{` `}{`\"grafana.jsonnet\"`}{`) `}{`+`}{`\n`}{`  (`}{`import`}{` `}{`\"prometheus.jsonnet\"`}{`) `}{`+`}{`\n`}{`  { `}{`/* ... */`}{` }`}
      \n

      {`Let's simplify our `}{`grafana.jsonnet`}{` a bit:`}

      \n
      {`{`}{`\n`}{`  `}{`grafana:`}{` {`}{`\n`}{`    `}{`deployment:`}{` `}{`$`}{`.k.deployment.`}{`new`}{`(`}{`\"grafana\"`}{`, [{`}{`\n`}{`      image: `}{`'grafana/grafana'`}{`,`}{`\n`}{`      name: `}{`'grafana'`}{`,`}{`\n`}{`      ports: [{`}{`\n`}{`          containerPort: `}{`3000`}{`,`}{`\n`}{`          name: `}{`'ui'`}{`,`}{`\n`}{`      }],`}{`\n`}{`    }]),`}{`\n`}{`    `}{`service:`}{` {`}{`\n`}{`      `}{`apiVersion:`}{` `}{`'v1'`}{`,`}{`\n`}{`      `}{`kind:`}{` `}{`'Service'`}{`,`}{`\n`}{`      `}{`metadata:`}{` {`}{`\n`}{`        `}{`labels:`}{` {`}{`\n`}{`          `}{`name:`}{` `}{`'grafana'`}{`,`}{`\n`}{`        },`}{`\n`}{`        `}{`name:`}{` `}{`'grafana'`}{`,`}{`\n`}{`      },`}{`\n`}{`      `}{`spec:`}{` {`}{`\n`}{`        `}{`ports:`}{` [{`}{`\n`}{`            `}{`name:`}{` `}{`'grafana-ui'`}{`,`}{`\n`}{`            `}{`port:`}{` `}{`3000`}{`,`}{`\n`}{`            `}{`targetPort:`}{` `}{`3000`}{`,`}{`\n`}{`        }],`}{`\n`}{`        `}{`selector:`}{` {`}{`\n`}{`          `}{`name:`}{` `}{`'grafana'`}{`,`}{`\n`}{`        },`}{`\n`}{`        `}{`type:`}{` `}{`'NodePort'`}{`,`}{`\n`}{`      },`}{`\n`}{`    },`}{`\n`}{`  }`}{`\n`}{`}`}
      \n

      {`This drastically simplified the creation of the `}{`Deployment`}{`, because we do not\nneed to remember how exactly a `}{`Deployment`}{` is structured anymore. Just call use\nour helper and you are good to go.`}

      \n
      \n

      {`Task`}{`: Now try adding a constructor for a `}{`Service`}{` to\n`}{`kubernetes.libsonnet`}{` and use both helpers to recreate the other objects as\nwell.`}

      \n
      \n\n \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-tutorial-environments-mdx-b932dda633298bd4750f.js b/pr-preview/pr-1029/component---docs-tutorial-environments-mdx-b932dda633298bd4750f.js deleted file mode 100644 index 01b1cffae..000000000 --- a/pr-preview/pr-1029/component---docs-tutorial-environments-mdx-b932dda633298bd4750f.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{RnbX:function(a,e,s){"use strict";s.r(e),s.d(e,"_frontmatter",(function(){return l})),s.d(e,"default",(function(){return i}));var n=s("wx14"),t=s("Ff2n"),m=(s("q1tI"),s("7ljp")),p=s("hhGP"),c=s("Z+0r");s("qKvR");const b=["components"],l={};void 0!==l&&l&&l===Object(l)&&Object.isExtensible(l)&&!Object.prototype.hasOwnProperty.call(l,"__filemeta")&&Object.defineProperty(l,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/tutorial/environments.mdx"}});const N={_frontmatter:l},r=p.a;function i(a){let{components:e}=a,s=Object(t.a)(a,b);return Object(m.b)(r,Object(n.a)({},N,s,{components:e,mdxType:"MDXLayout"}),Object(m.b)("h1",{id:"environments"},"Environments"),Object(m.b)("p",null,"At this point, our configuration is already flexible and concise, but not\nreally reusable. Let's take a look at Tanka's third buzzword as well: ",Object(m.b)("strong",{parentName:"p"},"Environments"),"."),Object(m.b)("p",null,"These days, the same piece of software is usually deployed many times inside a\nsingle organization. This could be ",Object(m.b)("inlineCode",{parentName:"p"},"dev"),", ",Object(m.b)("inlineCode",{parentName:"p"},"testing")," and ",Object(m.b)("inlineCode",{parentName:"p"},"prod")," environments, but\nalso regions (",Object(m.b)("inlineCode",{parentName:"p"},"europe"),", ",Object(m.b)("inlineCode",{parentName:"p"},"us"),", ",Object(m.b)("inlineCode",{parentName:"p"},"asia"),") or individual customers (",Object(m.b)("inlineCode",{parentName:"p"},"foo-corp"),",\n",Object(m.b)("inlineCode",{parentName:"p"},"bar-gmbh"),", ",Object(m.b)("inlineCode",{parentName:"p"},"baz-inc"),")."),Object(m.b)("p",null,"Most of the application however is exactly the same across those environments ...\nusually only configuration, scaling or small details are different after all.\nYAML (and thus ",Object(m.b)("inlineCode",{parentName:"p"},"kubectl"),") provides us only one solution here: Duplicating the\ndirectory, changing the details, maintaining both. But what if you have 32\nenvironments? Correct! Then you have to maintain 32 directories of YAML. And we can all\nimagine the nightmare of these files drifting apart from each other."),Object(m.b)("p",null,"But again, ",Object(m.b)("strong",{parentName:"p"},"Jsonnet can be the solution"),": By extracting the actual objects\ninto a library, you can import them in as many environments as you need!"),Object(m.b)("h2",{id:"creating-a-library"},"Creating a library"),Object(m.b)("p",null,"A library is nothing special, just a folder of ",Object(m.b)("inlineCode",{parentName:"p"},".libsonnet")," files somewhere in the import paths:"),Object(m.b)("table",null,Object(m.b)("thead",{parentName:"table"},Object(m.b)("tr",{parentName:"thead"},Object(m.b)("th",{parentName:"tr",align:null},"Path"),Object(m.b)("th",{parentName:"tr",align:null},"Description"))),Object(m.b)("tbody",{parentName:"table"},Object(m.b)("tr",{parentName:"tbody"},Object(m.b)("td",{parentName:"tr",align:null},Object(m.b)("inlineCode",{parentName:"td"},"/lib")),Object(m.b)("td",{parentName:"tr",align:null},"Custom, user-created libraries only for this project.")),Object(m.b)("tr",{parentName:"tbody"},Object(m.b)("td",{parentName:"tr",align:null},Object(m.b)("inlineCode",{parentName:"td"},"/vendor")),Object(m.b)("td",{parentName:"tr",align:null},"External libraries installed using Jsonnet-bundler")))),Object(m.b)("p",null,"So for our purpose ",Object(m.b)("inlineCode",{parentName:"p"},"/lib")," fits best, as we are only creating it for our current\nproject. Let's set one up:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"/$ mkdir lib/prom-grafana "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# a folder for our prom-grafana library")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"/$ "),Object(m.b)("span",{parentName:"span",className:"mtk9"},"cd"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," lib/prom-grafana")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"/lib/prom-grafana$ touch prom-grafana.libsonnet "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# library file that will be imported")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"/lib/prom-grafana$ touch config.libsonnet "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# _config and images")))),Object(m.b)("h5",{id:"configlibsonnet"},"config.libsonnet"),Object(m.b)("p",null,"For documentation purposes it is handy to have a separate file for parameters and used images:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// +:: is important (we don't want to override the")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// _config object, just add to it)")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk7"},"_config+::"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// define a namespace for this library")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"promgrafana:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"grafana:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"port:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"3000"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"grafana"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"prometheus:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"port:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"9090"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"prometheus"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// again, make sure to use +::")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk7"},"_images+::"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"promgrafana:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"grafana:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"grafana/grafana"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"prometheus:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"prom/prometheus"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("h5",{id:"prom-grafanalibsonnet"},"prom-grafana.libsonnet"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," k "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"import"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"ksonnet-util/kausal.libsonnet"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},";")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk4"},"import"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"./config.libsonnet"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},") "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"+")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," deployment "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," k.apps.v1.deployment,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," container "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," k.core.v1.container,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," port "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," k.core.v1.containerPort,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," service "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," k.core.v1.service,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// alias our params, too long to type every time")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," c "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"$"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"._config.promgrafana,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"promgrafana:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"prometheus:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"deployment:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," deployment."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"new"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"(")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," name=c.prometheus.name, replicas="),Object(m.b)("span",{parentName:"span",className:"mtk4"},"1"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," containers=[")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," container."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"new"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"(c.prometheus.name, $._images.promgrafana.prometheus)")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," + container."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"withPorts"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"([port."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"new"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"api"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},", c.prometheus.port)]),")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," ],")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," ),")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"service:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," k.util."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"serviceFor"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"(self.deployment),")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"grafana:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"deployment:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," deployment."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"new"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"(")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," name=c.grafana.name, replicas="),Object(m.b)("span",{parentName:"span",className:"mtk4"},"1"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," containers=[")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," container."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"new"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"(c.grafana.name, $._images.promgrafana.grafana)")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," + container."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"withPorts"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"([port."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"new"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"ui"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},", c.grafana.port)]),")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," ],")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," ),")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"service:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," ")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," k.util."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"serviceFor"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"(self.deployment)")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," service.mixin.spec."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"withType"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"NodePort"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},"),")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("h2",{id:"dev-and-prod"},"Dev and Prod"),Object(m.b)("p",null,"So far we have only used the ",Object(m.b)("inlineCode",{parentName:"p"},"environments/default")," environment. Let's create some real ones:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"/$ tk env add environments/prom-grafana/dev --namespace=prom-grafana-dev "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# one for dev ...")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"/$ tk env add environments/prom-grafana/prod --namespace=prom-grafana-prod "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# and one for prod")))),Object(m.b)("blockquote",null,Object(m.b)("p",{parentName:"blockquote"},Object(m.b)("strong",{parentName:"p"},"Note"),": Remember to set up the cluster's IP in the respective ",Object(m.b)("inlineCode",{parentName:"p"},"spec.json"),"!")),Object(m.b)("p",null,"All that's left now is importing the library and configuring it. For ",Object(m.b)("inlineCode",{parentName:"p"},"dev"),", the defaults defined in ",Object(m.b)("inlineCode",{parentName:"p"},"/lib/prom-grafana/config.libsonnet")," should be sufficient, so we do not override anything:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// environments/prom-grafana/dev")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk4"},"import"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"prom-grafana/prom-grafana.libsonnet"')))),Object(m.b)("p",null,"For ",Object(m.b)("inlineCode",{parentName:"p"},"prod")," however, it is a bad idea to rely on ",Object(m.b)("inlineCode",{parentName:"p"},"latest")," for the images .. let's\nadd some proper tags:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// environments/prom-grafana/prod")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk4"},"import"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"prom-grafana/prom-grafana.libsonnet"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},") "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"+")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// again, we only want to patch, not replace, thus +::")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk7"},"_images+::"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// we update this one entirely, so we can replace this one (:)")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"promgrafana:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"prometheus:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"prom/prometheus:v2.14"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"grafana:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"grafana/grafana:6.5.2"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("h2",{id:"patching"},"Patching"),Object(m.b)("p",null,"The above works well for libraries we control ourselves, but what when another\nteam wrote the library, it was installed using ",Object(m.b)("inlineCode",{parentName:"p"},"jb")," from GitHub or you can't\nchange it easily?"),Object(m.b)("p",null,"Here comes the already familiar ",Object(m.b)("inlineCode",{parentName:"p"},"+:")," (or ",Object(m.b)("inlineCode",{parentName:"p"},"+::"),") syntax into play. It allows to\n",Object(m.b)("strong",{parentName:"p"},"partially")," override values of an object. Let's say we wanted to add some labels to the Prometheus ",Object(m.b)("inlineCode",{parentName:"p"},"Deployment"),", but our ",Object(m.b)("inlineCode",{parentName:"p"},"_config")," params don't allow us to. We can still do this in our ",Object(m.b)("inlineCode",{parentName:"p"},"main.jsonnet"),":"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk4"},"import"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"prom-grafana/prom-grafana.libsonnet"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},") "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"+")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"promgrafana+:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"prometheus+:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"deployment+:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"metadata+:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"labels+:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"foo:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"bar"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("p",null,"By using the ",Object(m.b)("inlineCode",{parentName:"p"},"+:")," operator all the time and only ",Object(m.b)("inlineCode",{parentName:"p"},'foo: "bar"'),' uses "',Object(m.b)("inlineCode",{parentName:"p"},":"),'", we only\noverride the value of ',Object(m.b)("inlineCode",{parentName:"p"},'"foo"'),", while leaving the rest of the object like it was."),Object(m.b)("p",null,"Let's check it worked:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"yaml"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk6"},"$ tk show environments/prom-grafana/patched -t deployment/prometheus")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"apiVersion"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"apps/v1")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"kind"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"Deployment")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"metadata"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"labels"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"foo"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"bar"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# <- There it is!")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"prometheus")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"namespace"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"default")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"spec"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"minReadySeconds"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"10")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"replicas"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"1")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"revisionHistoryLimit"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"10")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"selector"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"matchLabels"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"prometheus")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"template"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"metadata"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"labels"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"prometheus")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"spec"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"containers"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"-"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"image"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"prom/prometheus")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"imagePullPolicy"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"IfNotPresent")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"prometheus")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"ports"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"-"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"containerPort"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"9090")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"api")))),Object(m.b)(c.a,{prev:"/tutorial/k-lib",mdxType:"TutorialButtons"}),Object(m.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==i&&i&&i===Object(i)&&Object.isExtensible(i)&&!Object.prototype.hasOwnProperty.call(i,"__filemeta")&&Object.defineProperty(i,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/tutorial/environments.mdx"}}),i.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-tutorial-environments-mdx-b932dda633298bd4750f.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-tutorial-environments-mdx-b932dda633298bd4750f.js.map b/pr-preview/pr-1029/component---docs-tutorial-environments-mdx-b932dda633298bd4750f.js.map deleted file mode 100644 index 2c7cab416..000000000 --- a/pr-preview/pr-1029/component---docs-tutorial-environments-mdx-b932dda633298bd4750f.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/tutorial/environments.mdx"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","TutorialButtons","prev","isMDXComponent"],"mappings":"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","file":"component---docs-tutorial-environments-mdx-b932dda633298bd4750f.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nimport TutorialButtons from \"./TutorialButtons\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`Environments`}

      \n

      {`At this point, our configuration is already flexible and concise, but not\nreally reusable. Let's take a look at Tanka's third buzzword as well: `}{`Environments`}{`.`}

      \n

      {`These days, the same piece of software is usually deployed many times inside a\nsingle organization. This could be `}{`dev`}{`, `}{`testing`}{` and `}{`prod`}{` environments, but\nalso regions (`}{`europe`}{`, `}{`us`}{`, `}{`asia`}{`) or individual customers (`}{`foo-corp`}{`,\n`}{`bar-gmbh`}{`, `}{`baz-inc`}{`).`}

      \n

      {`Most of the application however is exactly the same across those environments ...\nusually only configuration, scaling or small details are different after all.\nYAML (and thus `}{`kubectl`}{`) provides us only one solution here: Duplicating the\ndirectory, changing the details, maintaining both. But what if you have 32\nenvironments? Correct! Then you have to maintain 32 directories of YAML. And we can all\nimagine the nightmare of these files drifting apart from each other.`}

      \n

      {`But again, `}{`Jsonnet can be the solution`}{`: By extracting the actual objects\ninto a library, you can import them in as many environments as you need!`}

      \n

      {`Creating a library`}

      \n

      {`A library is nothing special, just a folder of `}{`.libsonnet`}{` files somewhere in the import paths:`}

      \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
      {`Path`}{`Description`}
      {`/lib`}{`Custom, user-created libraries only for this project.`}
      {`/vendor`}{`External libraries installed using Jsonnet-bundler`}
      \n

      {`So for our purpose `}{`/lib`}{` fits best, as we are only creating it for our current\nproject. Let's set one up:`}

      \n
      {`/$ mkdir lib/prom-grafana `}{`# a folder for our prom-grafana library`}{`\n`}{`/$ `}{`cd`}{` lib/prom-grafana`}{`\n`}{`\n`}{`/lib/prom-grafana$ touch prom-grafana.libsonnet `}{`# library file that will be imported`}{`\n`}{`/lib/prom-grafana$ touch config.libsonnet `}{`# _config and images`}
      \n
      {`config.libsonnet`}
      \n

      {`For documentation purposes it is handy to have a separate file for parameters and used images:`}

      \n
      {`{`}{`\n`}{`  `}{`// +:: is important (we don't want to override the`}{`\n`}{`  `}{`// _config object, just add to it)`}{`\n`}{`  `}{`_config+::`}{` {`}{`\n`}{`    `}{`// define a namespace for this library`}{`\n`}{`    `}{`promgrafana:`}{` {`}{`\n`}{`      `}{`grafana:`}{` {`}{`\n`}{`        `}{`port:`}{` `}{`3000`}{`,`}{`\n`}{`        `}{`name:`}{` `}{`\"grafana\"`}{`,`}{`\n`}{`      },`}{`\n`}{`      `}{`prometheus:`}{` {`}{`\n`}{`        `}{`port:`}{` `}{`9090`}{`,`}{`\n`}{`        `}{`name:`}{` `}{`\"prometheus\"`}{`\n`}{`      }`}{`\n`}{`    }`}{`\n`}{`  },`}{`\n`}{`\n`}{`  `}{`// again, make sure to use +::`}{`\n`}{`  `}{`_images+::`}{` {`}{`\n`}{`    `}{`promgrafana:`}{` {`}{`\n`}{`      `}{`grafana:`}{` `}{`\"grafana/grafana\"`}{`,`}{`\n`}{`      `}{`prometheus:`}{` `}{`\"prom/prometheus\"`}{`,`}{`\n`}{`    }`}{`\n`}{`  }`}{`\n`}{`}`}
      \n
      {`prom-grafana.libsonnet`}
      \n
      {`local`}{` k `}{`=`}{` `}{`import`}{` `}{`\"ksonnet-util/kausal.libsonnet\"`}{`;`}{`\n`}{`\n`}{`(`}{`import`}{` `}{`\"./config.libsonnet\"`}{`) `}{`+`}{`\n`}{`{`}{`\n`}{`  `}{`local`}{` deployment `}{`=`}{` k.apps.v1.deployment,`}{`\n`}{`  `}{`local`}{` container `}{`=`}{` k.core.v1.container,`}{`\n`}{`  `}{`local`}{` port `}{`=`}{` k.core.v1.containerPort,`}{`\n`}{`  `}{`local`}{` service `}{`=`}{` k.core.v1.service,`}{`\n`}{`\n`}{`  `}{`// alias our params, too long to type every time`}{`\n`}{`  `}{`local`}{` c `}{`=`}{` `}{`$`}{`._config.promgrafana,`}{`\n`}{`\n`}{`  `}{`promgrafana:`}{` {`}{`\n`}{`    `}{`prometheus:`}{` {`}{`\n`}{`      `}{`deployment:`}{` deployment.`}{`new`}{`(`}{`\n`}{`        name=c.prometheus.name, replicas=`}{`1`}{`,`}{`\n`}{`        containers=[`}{`\n`}{`          container.`}{`new`}{`(c.prometheus.name, $._images.promgrafana.prometheus)`}{`\n`}{`          + container.`}{`withPorts`}{`([port.`}{`new`}{`(`}{`\"api\"`}{`, c.prometheus.port)]),`}{`\n`}{`        ],`}{`\n`}{`      ),`}{`\n`}{`      `}{`service:`}{` k.util.`}{`serviceFor`}{`(self.deployment),`}{`\n`}{`    },`}{`\n`}{`\n`}{`    `}{`grafana:`}{` {`}{`\n`}{`      `}{`deployment:`}{` deployment.`}{`new`}{`(`}{`\n`}{`        name=c.grafana.name, replicas=`}{`1`}{`,`}{`\n`}{`        containers=[`}{`\n`}{`          container.`}{`new`}{`(c.grafana.name, $._images.promgrafana.grafana)`}{`\n`}{`          + container.`}{`withPorts`}{`([port.`}{`new`}{`(`}{`\"ui\"`}{`, c.grafana.port)]),`}{`\n`}{`        ],`}{`\n`}{`      ),`}{`\n`}{`      `}{`service:`}{` `}{`\n`}{`        k.util.`}{`serviceFor`}{`(self.deployment)`}{`\n`}{`        `}{`+`}{` service.mixin.spec.`}{`withType`}{`(`}{`\"NodePort\"`}{`),`}{`\n`}{`    },`}{`\n`}{`  }`}{`\n`}{`}`}
      \n

      {`Dev and Prod`}

      \n

      {`So far we have only used the `}{`environments/default`}{` environment. Let's create some real ones:`}

      \n
      {`/$ tk env add environments/prom-grafana/dev --namespace=prom-grafana-dev `}{`# one for dev ...`}{`\n`}{`/$ tk env add environments/prom-grafana/prod --namespace=prom-grafana-prod `}{`# and one for prod`}
      \n
      \n

      {`Note`}{`: Remember to set up the cluster's IP in the respective `}{`spec.json`}{`!`}

      \n
      \n

      {`All that's left now is importing the library and configuring it. For `}{`dev`}{`, the defaults defined in `}{`/lib/prom-grafana/config.libsonnet`}{` should be sufficient, so we do not override anything:`}

      \n
      {`// environments/prom-grafana/dev`}{`\n`}{`import`}{` `}{`\"prom-grafana/prom-grafana.libsonnet\"`}
      \n

      {`For `}{`prod`}{` however, it is a bad idea to rely on `}{`latest`}{` for the images .. let's\nadd some proper tags:`}

      \n
      {`// environments/prom-grafana/prod`}{`\n`}{`(`}{`import`}{` `}{`\"prom-grafana/prom-grafana.libsonnet\"`}{`) `}{`+`}{`\n`}{`{`}{`\n`}{`  `}{`// again, we only want to patch, not replace, thus +::`}{`\n`}{`  `}{`_images+::`}{` {`}{`\n`}{`    `}{`// we update this one entirely, so we can replace this one (:)`}{`\n`}{`    `}{`promgrafana:`}{` {`}{`\n`}{`      `}{`prometheus:`}{` `}{`\"prom/prometheus:v2.14\"`}{`,`}{`\n`}{`      `}{`grafana:`}{` `}{`\"grafana/grafana:6.5.2\"`}{`\n`}{`    }`}{`\n`}{`  }`}{`\n`}{`}`}
      \n

      {`Patching`}

      \n

      {`The above works well for libraries we control ourselves, but what when another\nteam wrote the library, it was installed using `}{`jb`}{` from GitHub or you can't\nchange it easily?`}

      \n

      {`Here comes the already familiar `}{`+:`}{` (or `}{`+::`}{`) syntax into play. It allows to\n`}{`partially`}{` override values of an object. Let's say we wanted to add some labels to the Prometheus `}{`Deployment`}{`, but our `}{`_config`}{` params don't allow us to. We can still do this in our `}{`main.jsonnet`}{`:`}

      \n
      {`(`}{`import`}{` `}{`\"prom-grafana/prom-grafana.libsonnet\"`}{`) `}{`+`}{`\n`}{`{`}{`\n`}{`  `}{`promgrafana+:`}{` {`}{`\n`}{`    `}{`prometheus+:`}{` {`}{`\n`}{`      `}{`deployment+:`}{` {`}{`\n`}{`        `}{`metadata+:`}{` {`}{`\n`}{`          `}{`labels+:`}{` {`}{`\n`}{`            `}{`foo:`}{` `}{`\"bar\"`}{`\n`}{`          }`}{`\n`}{`        }`}{`\n`}{`      }`}{`\n`}{`    }`}{`\n`}{`  }`}{`\n`}{`}`}
      \n

      {`By using the `}{`+:`}{` operator all the time and only `}{`foo: \"bar\"`}{` uses \"`}{`:`}{`\", we only\noverride the value of `}{`\"foo\"`}{`, while leaving the rest of the object like it was.`}

      \n

      {`Let's check it worked:`}

      \n
      {`$ tk show environments/prom-grafana/patched -t deployment/prometheus`}{`\n`}{`apiVersion`}{`:`}{` `}{`apps/v1`}{`\n`}{`kind`}{`:`}{` `}{`Deployment`}{`\n`}{`metadata`}{`:`}{`\n`}{`  `}{`labels`}{`:`}{`\n`}{`    `}{`foo`}{`:`}{` `}{`bar`}{` `}{`# <- There it is!`}{`\n`}{`  `}{`name`}{`:`}{` `}{`prometheus`}{`\n`}{`  `}{`namespace`}{`:`}{` `}{`default`}{`\n`}{`spec`}{`:`}{`\n`}{`  `}{`minReadySeconds`}{`:`}{` `}{`10`}{`\n`}{`  `}{`replicas`}{`:`}{` `}{`1`}{`\n`}{`  `}{`revisionHistoryLimit`}{`:`}{` `}{`10`}{`\n`}{`  `}{`selector`}{`:`}{`\n`}{`    `}{`matchLabels`}{`:`}{`\n`}{`      `}{`name`}{`:`}{` `}{`prometheus`}{`\n`}{`  `}{`template`}{`:`}{`\n`}{`    `}{`metadata`}{`:`}{`\n`}{`      `}{`labels`}{`:`}{`\n`}{`        `}{`name`}{`:`}{` `}{`prometheus`}{`\n`}{`    `}{`spec`}{`:`}{`\n`}{`      `}{`containers`}{`:`}{`\n`}{`      `}{`-`}{` `}{`image`}{`:`}{` `}{`prom/prometheus`}{`\n`}{`        `}{`imagePullPolicy`}{`:`}{` `}{`IfNotPresent`}{`\n`}{`        `}{`name`}{`:`}{` `}{`prometheus`}{`\n`}{`        `}{`ports`}{`:`}{`\n`}{`        `}{`-`}{` `}{`containerPort`}{`:`}{` `}{`9090`}{`\n`}{`          `}{`name`}{`:`}{` `}{`api`}
      \n\n \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-tutorial-jsonnet-mdx-50019ef4c18c10d96e98.js b/pr-preview/pr-1029/component---docs-tutorial-jsonnet-mdx-50019ef4c18c10d96e98.js deleted file mode 100644 index bbf7ac1b9..000000000 --- a/pr-preview/pr-1029/component---docs-tutorial-jsonnet-mdx-50019ef4c18c10d96e98.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{H1MS:function(a,e,s){"use strict";s.r(e),s.d(e,"_frontmatter",(function(){return l})),s.d(e,"default",(function(){return i}));var n=s("wx14"),t=s("Ff2n"),m=(s("q1tI"),s("7ljp")),p=s("hhGP"),c=s("Z+0r");s("qKvR");const b=["components"],l={};void 0!==l&&l&&l===Object(l)&&Object.isExtensible(l)&&!Object.prototype.hasOwnProperty.call(l,"__filemeta")&&Object.defineProperty(l,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/tutorial/jsonnet.mdx"}});const N={_frontmatter:l},r=p.a;function i(a){let{components:e}=a,s=Object(t.a)(a,b);return Object(m.b)(r,Object(n.a)({},N,s,{components:e,mdxType:"MDXLayout"}),Object(m.b)("h1",{id:"using-jsonnet"},"Using Jsonnet"),Object(m.b)("p",null,"The most powerful piece of Tanka is the ",Object(m.b)("a",{parentName:"p",href:"https://jsonnet.org"},"Jsonnet data templating\nlanguage"),". Jsonnet is a superset of JSON, adding variables,\nfunctions, patching (deep merging), arithmetic, conditionals and many more to\nit."),Object(m.b)("p",null,"It has a lot in common with more ",Object(m.b)("em",{parentName:"p"},"real")," programming languages such as JavaScript\nthan with markup languages, still it is tailored specifically to representing\ndata and configuration. As opposed to JSON (and YAML) it is a language meant for\nhumans, not for computers."),Object(m.b)("h2",{id:"creating-a-new-project"},"Creating a new project"),Object(m.b)("p",null,"To get started with Tanka and Jsonnet, let's initiate a new project, in which we will install both Prometheus and Grafana into our Kubernetes cluster:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"$ mkdir prom-grafana "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"&&"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk9"},"cd"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," prom-grafana "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# create a new folder for the project and change to it")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"$ tk init "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# initiate a new project")))),Object(m.b)("p",null,"This gives us the following directory structure:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"sh"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"├── environments")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"│   └── default "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# default environment")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"│   ├── main.jsonnet "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# main file (important!)")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"│   └── spec.json "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# environment's config")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"├── jsonnetfile.json")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"├── lib "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# libraries")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"└── vendor "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# external libraries")))),Object(m.b)("p",null,"For the moment, we only really care about the ",Object(m.b)("inlineCode",{parentName:"p"},"environments/default")," folder. The\npurpose of the other directories will be explained later in this guide (mostly\nrelated to libraries)."),Object(m.b)("h2",{id:"environments"},"Environments"),Object(m.b)("p",null,"When using Tanka, you apply ",Object(m.b)("strong",{parentName:"p"},"configuration")," for an ",Object(m.b)("strong",{parentName:"p"},"Environment")," to a\nKubernetes ",Object(m.b)("strong",{parentName:"p"},"cluster"),". An Environment is some logical group of pieces that form\nan application stack."),Object(m.b)("p",null,Object(m.b)("a",{parentName:"p",href:"https://grafana.com"},"Grafana Labs")," for example runs ",Object(m.b)("a",{parentName:"p",href:"https://grafana.com/oss/loki/"},"Loki"),",\n",Object(m.b)("a",{parentName:"p",href:"https://cortexmetrics.io"},"Cortex")," and of course\n",Object(m.b)("a",{parentName:"p",href:"https://grafana.com/grafana/"},"Grafana")," for our ",Object(m.b)("a",{parentName:"p",href:"https://grafana.com/products/cloud/"},"Grafana\nCloud")," hosted offering. For each of these, we have a\nseparate environment. Furthermore, we like to see changes to our code in\nseparate ",Object(m.b)("inlineCode",{parentName:"p"},"dev")," setups to make sure they are all good for production usage – so\nwe have ",Object(m.b)("inlineCode",{parentName:"p"},"dev")," and ",Object(m.b)("inlineCode",{parentName:"p"},"prod")," environments for each app as well, as ",Object(m.b)("inlineCode",{parentName:"p"},"prod"),"\nenvironments usually require other configuration (secrets, scale, etc) than\n",Object(m.b)("inlineCode",{parentName:"p"},"dev"),". This roughly leaves us with the following:"),Object(m.b)("table",null,Object(m.b)("thead",{parentName:"table"},Object(m.b)("tr",{parentName:"thead"},Object(m.b)("th",{parentName:"tr",align:null}),Object(m.b)("th",{parentName:"tr",align:null},"Loki"),Object(m.b)("th",{parentName:"tr",align:null},"Cortex"),Object(m.b)("th",{parentName:"tr",align:null},"Grafana"))),Object(m.b)("tbody",{parentName:"table"},Object(m.b)("tr",{parentName:"tbody"},Object(m.b)("td",{parentName:"tr",align:null},Object(m.b)("inlineCode",{parentName:"td"},"prod")),Object(m.b)("td",{parentName:"tr",align:null},"Name: ",Object(m.b)("inlineCode",{parentName:"td"},"/environments/loki/prod")," ",Object(m.b)("br",null)," Namespace: ",Object(m.b)("inlineCode",{parentName:"td"},"loki-prod")),Object(m.b)("td",{parentName:"tr",align:null},"Name: ",Object(m.b)("inlineCode",{parentName:"td"},"/environments/cortex/prod")," ",Object(m.b)("br",null)," Namespace: ",Object(m.b)("inlineCode",{parentName:"td"},"cortex-prod")),Object(m.b)("td",{parentName:"tr",align:null},"Name: ",Object(m.b)("inlineCode",{parentName:"td"},"/environments/grafana/prod")," ",Object(m.b)("br",null)," Namespace: ",Object(m.b)("inlineCode",{parentName:"td"},"grafana-prod"))),Object(m.b)("tr",{parentName:"tbody"},Object(m.b)("td",{parentName:"tr",align:null},Object(m.b)("inlineCode",{parentName:"td"},"dev")),Object(m.b)("td",{parentName:"tr",align:null},"Name: ",Object(m.b)("inlineCode",{parentName:"td"},"/environments/loki/dev")," ",Object(m.b)("br",null)," Namespace: ",Object(m.b)("inlineCode",{parentName:"td"},"loki-dev")),Object(m.b)("td",{parentName:"tr",align:null},"Name: ",Object(m.b)("inlineCode",{parentName:"td"},"/environments/cortex/dev")," ",Object(m.b)("br",null)," Namespace: ",Object(m.b)("inlineCode",{parentName:"td"},"cortex-dev")),Object(m.b)("td",{parentName:"tr",align:null},"Name: ",Object(m.b)("inlineCode",{parentName:"td"},"/environments/grafana/dev")," ",Object(m.b)("br",null)," Namespace: ",Object(m.b)("inlineCode",{parentName:"td"},"grafana-dev"))))),Object(m.b)("p",null,"There is no limit in Environment complexity, create as many as you need to model\nyour own requirements. Grafana Labs for example also has all of these multiplied per\nhigh-availability region."),Object(m.b)("p",null,"To get started, a single environment is enough. Lets use the automatically\ncreated ",Object(m.b)("inlineCode",{parentName:"p"},"environnments/default")," for that."),Object(m.b)("h2",{id:"defining-resources"},"Defining Resources"),Object(m.b)("p",null,"While ",Object(m.b)("inlineCode",{parentName:"p"},"kubectl")," loads all ",Object(m.b)("inlineCode",{parentName:"p"},".yaml")," files in a certain folder, Tanka has a single\nfile that serves as the canonical source for all contents of an environment,\ncalled ",Object(m.b)("inlineCode",{parentName:"p"},"main.jsonnet"),". This is just like Go has the ",Object(m.b)("inlineCode",{parentName:"p"},"main.go")," or C++ the\n",Object(m.b)("inlineCode",{parentName:"p"},"main.cpp"),"."),Object(m.b)("p",null,"Similar to JSON, each ",Object(m.b)("inlineCode",{parentName:"p"},".jsonnet")," file holds a single object. The one returned by\n",Object(m.b)("inlineCode",{parentName:"p"},"main.jsonnet")," will hold all of your Kubernetes resources:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// main.jsonnet")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"some_deployment"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," { "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"/* ... */"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"some_service"'),Object(m.b)("span",{parentName:"span",className:"mtk12"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," { "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"/* ... */"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("p",null,"They may be deeply nested, Tanka extracts everything that looks like a\nKubernetes resource automatically."),Object(m.b)("p",null,"So let's rewrite the ",Object(m.b)("a",{parentName:"p",href:"/pr-preview/pr-1029/tutorial/refresher#writing-the-yaml"},"previous ",Object(m.b)("inlineCode",{parentName:"a"},".yaml"))," to\nvery basic ",Object(m.b)("inlineCode",{parentName:"p"},".jsonnet"),":"),Object(m.b)("h5",{id:"environmentsdefaultmainjsonnet"},"environments/default/main.jsonnet:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// Grafana")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"grafana:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"deployment:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"apiVersion:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'apps/v1'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"kind:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'Deployment'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"metadata:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'grafana'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"spec:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"selector:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"matchLabels:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'grafana'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"template:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"metadata:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"labels:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'grafana'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"spec:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"containers:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," [")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"image:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'grafana/grafana'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'grafana'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"ports:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," [{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"containerPort:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"3000"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'ui'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }],")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," ],")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"service:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"apiVersion:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'v1'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"kind:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'Service'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"metadata:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"labels:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'grafana'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'grafana'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"spec:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"ports:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," [{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'grafana-ui'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"port:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"3000"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"targetPort:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"3000"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }],")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"selector:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'grafana'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"type:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'NodePort'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// Prometheus")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"prometheus:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"deployment:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"apiVersion:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'apps/v1'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"kind:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'Deployment'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"metadata:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'prometheus'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"spec:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"minReadySeconds:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"10"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"replicas:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"1"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"revisionHistoryLimit:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"10"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"selector:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"matchLabels:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'prometheus'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"template:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"metadata:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"labels:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'prometheus'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"spec:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"containers:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," [")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"image:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'prom/prometheus'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"imagePullPolicy:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'IfNotPresent'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'prometheus'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"ports:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," [")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"containerPort:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"9090"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'api'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," ],")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," ],")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"service:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"apiVersion:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'v1'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"kind:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'Service'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"metadata:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"labels:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'prometheus'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'prometheus'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"spec:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"ports:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," [")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'prometheus-api'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"port:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"9090"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"targetPort:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"9090"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," ],")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"selector:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"'prometheus'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("p",null,"At the moment, this is even more verbose because we have effectively converted\nYAML to JSON, which requires more characters by design."),Object(m.b)("p",null,"But Jsonnet opens up enough possibilities to improve this a lot, which will be\ncovered in the next sections."),Object(m.b)("h2",{id:"taking-a-look-at-the-generated-resources"},"Taking a look at the generated resources"),Object(m.b)("p",null,"So far so good, but can we make sure Tanka correctly finds our resources? We\ncan! By running ",Object(m.b)("inlineCode",{parentName:"p"},"tk show")," you can see the good old yaml, just as ",Object(m.b)("inlineCode",{parentName:"p"},"kubectl"),"\nreceives it:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"yaml"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# run from the project root:")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk6"},"/prom-grafana$ tk show environments/default")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"apiVersion"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"apps/v1")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"kind"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"Deployment")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"metadata"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"grafana")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"spec"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"selector"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# ...")))),Object(m.b)("p",null,"Spend some time here and try to identify resources from the output in the\n",Object(m.b)("inlineCode",{parentName:"p"},".jsonnet")," source."),Object(m.b)("blockquote",null,Object(m.b)("p",{parentName:"blockquote"},Object(m.b)("strong",{parentName:"p"},"Bonus:")," There is also ",Object(m.b)("inlineCode",{parentName:"p"},"tk eval"),", which displays the raw JSON object\n",Object(m.b)("inlineCode",{parentName:"p"},"main.jsonnet")," evaluates to. Tanka won't extract resources or mutate the structure\nhere, so you can verify how your Jsonnet works.")),Object(m.b)("h2",{id:"connecting-to-the-cluster"},"Connecting to the cluster"),Object(m.b)("p",null,"The YAML looks as expected? Let's apply it to the cluster. To do so, Tanka needs\nsome additional configuration."),Object(m.b)("p",null,"While ",Object(m.b)("inlineCode",{parentName:"p"},"kubectl")," uses a ",Object(m.b)("inlineCode",{parentName:"p"},"$KUBECONFIG")," environment variable and a file in the home\ndirectory to store the currently selected cluster, Tanka takes a more explicit\napproach:"),Object(m.b)("p",null,"Each environment has a file called ",Object(m.b)("inlineCode",{parentName:"p"},"spec.json"),", which includes the information\nto select a cluster:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"js"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"apiVersion"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},": "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"tanka.dev/v1alpha1"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"kind"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},": "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"Environment"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"metadata"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},": "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"default"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"},")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"spec"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},": "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"apiServer"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"https://127.0.0.1:6443"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},","),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// cluster to use")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"namespace"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk6"},"monitoring"),Object(m.b)("span",{parentName:"span",className:"mtk5"},'"'),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// default namespace for all created resources")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"}")))),Object(m.b)("p",null,"You still have to setup a cluster in ",Object(m.b)("inlineCode",{parentName:"p"},"$KUBECONFIG")," that matches this IP – Tanka\nwill automatically find and use it. This also means that all of your ",Object(m.b)("inlineCode",{parentName:"p"},"kubectl"),"\nclusters just work."),Object(m.b)("p",null,"This allows us to make sure that you will never accidentally apply to the wrong\ncluster."),Object(m.b)("blockquote",null,Object(m.b)("p",{parentName:"blockquote"},Object(m.b)("strong",{parentName:"p"},"Note"),": Tanka won't create the namespace for you -- you need to include it in\nJsonnet by adding it to ",Object(m.b)("inlineCode",{parentName:"p"},"environments/default/main.jsonnet"),":"),Object(m.b)("pre",{parentName:"blockquote",className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"my_namespace:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"apiVersion:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"v1"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"kind:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"Namespace"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"metadata:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"monitoring"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("p",{parentName:"blockquote"},"Alternatively, you can create the namespace manually:"),Object(m.b)("pre",{parentName:"blockquote",className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"$ kubectl create ns monitoring")))),Object(m.b)("p",{parentName:"blockquote"},"This, however, will create an object that is not tracked by Tanka\nand thus needs to be taken care of via other means.")),Object(m.b)("h2",{id:"verifying-the-changes"},"Verifying the changes"),Object(m.b)("p",null,"Before applying to the cluster, Tanka gives you a chance to check that your\nchanges actually behave as expected: ",Object(m.b)("inlineCode",{parentName:"p"},"tk diff")," works just like ",Object(m.b)("inlineCode",{parentName:"p"},"git diff")," – you\nsee what will be changed."),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"diff"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"/prom-grafana$ tk diff environments/default")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"---"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," /tmp/LIVE-610130621/apps.v1.Deployment.monitoring.grafana 2019-12-17 20:14:45.213363586 +0100")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+++"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," /tmp/MERGED-517481208/apps.v1.Deployment.monitoring.grafana 2019-12-17 20:14:45.213363586 +0100")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"@@"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," -0,0 +1,45 "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"@@")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"},"apiVersion: apps/v1")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"},"kind: Deployment")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"},"metadata:")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"}," name: grafana")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"}," namespace: monitoring")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"}," # ...")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"},"spec:")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"}," selector:")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"}," matchLabels:")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"}," name: grafana")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"}," strategy:")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"}," rollingUpdate:")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"}," maxSurge: 25%")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"}," maxUnavailable: 25%")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"}," type: RollingUpdate")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"}," template:")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"}," metadata:")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"}," creationTimestamp: null")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"}," labels:")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"}," name: grafana")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"}," spec:")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"}," containers:")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"}," - image: grafana/grafana")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"}," imagePullPolicy: IfNotPresent")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"}," # ...")))),Object(m.b)("p",null,"As you can see, it shows everything as to-be created .. just as we'd expect,\nsince we are using a blank namespace."),Object(m.b)("blockquote",null,Object(m.b)("p",{parentName:"blockquote"},Object(m.b)("strong",{parentName:"p"},"Note"),": Diff may fail before the first apply when the namespace does not yet\nexist. This is a limitation of ",Object(m.b)("inlineCode",{parentName:"p"},"kubectl")," which is used for computing the\ndifferences.")),Object(m.b)("h2",{id:"applying-to-the-cluster"},"Applying to the cluster"),Object(m.b)("p",null,"Once it's all looking good, ",Object(m.b)("inlineCode",{parentName:"p"},"tk apply")," serves the exact same purpose as ",Object(m.b)("inlineCode",{parentName:"p"},"kubectl apply"),":"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"/prom-grafana$ tk apply environments/default")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"Applying to namespace "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"'"),Object(m.b)("span",{parentName:"span",className:"mtk6"},"monitoring"),Object(m.b)("span",{parentName:"span",className:"mtk5"},"'"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," of cluster "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"'"),Object(m.b)("span",{parentName:"span",className:"mtk6"},"default"),Object(m.b)("span",{parentName:"span",className:"mtk5"},"'"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," at "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"'"),Object(m.b)("span",{parentName:"span",className:"mtk6"},"https://127.0.0.1:6443"),Object(m.b)("span",{parentName:"span",className:"mtk5"},"'"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," using context "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"'"),Object(m.b)("span",{parentName:"span",className:"mtk6"},"default"),Object(m.b)("span",{parentName:"span",className:"mtk5"},"'"),Object(m.b)("span",{parentName:"span",className:"mtk1"},".")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"Please "),Object(m.b)("span",{parentName:"span",className:"mtk9"},"type"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"'"),Object(m.b)("span",{parentName:"span",className:"mtk6"},"yes"),Object(m.b)("span",{parentName:"span",className:"mtk5"},"'"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," to confirm: yes")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"deployment.apps/grafana created")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"deployment.apps/prometheus created")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"service/grafana created")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"service/prometheus created")))),Object(m.b)("p",null,"It shows you the diff first and the chosen cluster once more and requires\ninteractive approval (type ",Object(m.b)("inlineCode",{parentName:"p"},"yes"),")."),Object(m.b)("p",null,"After that, ",Object(m.b)("inlineCode",{parentName:"p"},"kubectl")," is used to apply to the cluster. By ",Object(m.b)("strong",{parentName:"p"},"piping to\n",Object(m.b)("inlineCode",{parentName:"strong"},"kubectl"))," Tanka makes sure it ",Object(m.b)("strong",{parentName:"p"},"behaves exactly")," as you would expect it. No\nedge-cases of differing Kubernetes client implementations should ever occur."),Object(m.b)("h2",{id:"checking-it-worked"},"Checking it worked"),Object(m.b)("p",null,"Again, let's connect to Grafana:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"$ kubectl port-forward --namespace=monitoring deployments/grafana 8080:3000")))),Object(m.b)("p",null,"And go to http://localhost:8080 for Grafana's UI."),Object(m.b)(c.a,{prev:"/tutorial/refresher",next:"/tutorial/parameters",mdxType:"TutorialButtons"}),Object(m.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==i&&i&&i===Object(i)&&Object.isExtensible(i)&&!Object.prototype.hasOwnProperty.call(i,"__filemeta")&&Object.defineProperty(i,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/tutorial/jsonnet.mdx"}}),i.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-tutorial-jsonnet-mdx-50019ef4c18c10d96e98.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-tutorial-jsonnet-mdx-50019ef4c18c10d96e98.js.map b/pr-preview/pr-1029/component---docs-tutorial-jsonnet-mdx-50019ef4c18c10d96e98.js.map deleted file mode 100644 index 64901e997..000000000 --- a/pr-preview/pr-1029/component---docs-tutorial-jsonnet-mdx-50019ef4c18c10d96e98.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/tutorial/jsonnet.mdx"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","TutorialButtons","prev","next","isMDXComponent"],"mappings":"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","file":"component---docs-tutorial-jsonnet-mdx-50019ef4c18c10d96e98.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nimport TutorialButtons from \"./TutorialButtons\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`Using Jsonnet`}

      \n

      {`The most powerful piece of Tanka is the `}{`Jsonnet data templating\nlanguage`}{`. Jsonnet is a superset of JSON, adding variables,\nfunctions, patching (deep merging), arithmetic, conditionals and many more to\nit.`}

      \n

      {`It has a lot in common with more `}{`real`}{` programming languages such as JavaScript\nthan with markup languages, still it is tailored specifically to representing\ndata and configuration. As opposed to JSON (and YAML) it is a language meant for\nhumans, not for computers.`}

      \n

      {`Creating a new project`}

      \n

      {`To get started with Tanka and Jsonnet, let's initiate a new project, in which we will install both Prometheus and Grafana into our Kubernetes cluster:`}

      \n
      {`$ mkdir prom-grafana `}{`&&`}{` `}{`cd`}{` prom-grafana `}{`# create a new folder for the project and change to it`}{`\n`}{`$ tk init `}{`# initiate a new project`}
      \n

      {`This gives us the following directory structure:`}

      \n
      {`├── environments`}{`\n`}{`│   └── default `}{`# default environment`}{`\n`}{`│       ├── main.jsonnet `}{`# main file (important!)`}{`\n`}{`│       └── spec.json `}{`# environment's config`}{`\n`}{`├── jsonnetfile.json`}{`\n`}{`├── lib `}{`# libraries`}{`\n`}{`└── vendor `}{`# external libraries`}
      \n

      {`For the moment, we only really care about the `}{`environments/default`}{` folder. The\npurpose of the other directories will be explained later in this guide (mostly\nrelated to libraries).`}

      \n

      {`Environments`}

      \n

      {`When using Tanka, you apply `}{`configuration`}{` for an `}{`Environment`}{` to a\nKubernetes `}{`cluster`}{`. An Environment is some logical group of pieces that form\nan application stack.`}

      \n

      {`Grafana Labs`}{` for example runs `}{`Loki`}{`,\n`}{`Cortex`}{` and of course\n`}{`Grafana`}{` for our `}{`Grafana\nCloud`}{` hosted offering. For each of these, we have a\nseparate environment. Furthermore, we like to see changes to our code in\nseparate `}{`dev`}{` setups to make sure they are all good for production usage – so\nwe have `}{`dev`}{` and `}{`prod`}{` environments for each app as well, as `}{`prod`}{`\nenvironments usually require other configuration (secrets, scale, etc) than\n`}{`dev`}{`. This roughly leaves us with the following:`}

      \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
      {`Loki`}{`Cortex`}{`Grafana`}
      {`prod`}{`Name: `}{`/environments/loki/prod`}{` `}
      {` Namespace: `}{`loki-prod`}
      {`Name: `}{`/environments/cortex/prod`}{` `}
      {` Namespace: `}{`cortex-prod`}
      {`Name: `}{`/environments/grafana/prod`}{` `}
      {` Namespace: `}{`grafana-prod`}
      {`dev`}{`Name: `}{`/environments/loki/dev`}{` `}
      {` Namespace: `}{`loki-dev`}
      {`Name: `}{`/environments/cortex/dev`}{` `}
      {` Namespace: `}{`cortex-dev`}
      {`Name: `}{`/environments/grafana/dev`}{` `}
      {` Namespace: `}{`grafana-dev`}
      \n

      {`There is no limit in Environment complexity, create as many as you need to model\nyour own requirements. Grafana Labs for example also has all of these multiplied per\nhigh-availability region.`}

      \n

      {`To get started, a single environment is enough. Lets use the automatically\ncreated `}{`environnments/default`}{` for that.`}

      \n

      {`Defining Resources`}

      \n

      {`While `}{`kubectl`}{` loads all `}{`.yaml`}{` files in a certain folder, Tanka has a single\nfile that serves as the canonical source for all contents of an environment,\ncalled `}{`main.jsonnet`}{`. This is just like Go has the `}{`main.go`}{` or C++ the\n`}{`main.cpp`}{`.`}

      \n

      {`Similar to JSON, each `}{`.jsonnet`}{` file holds a single object. The one returned by\n`}{`main.jsonnet`}{` will hold all of your Kubernetes resources:`}

      \n
      {`// main.jsonnet`}{`\n`}{`{`}{`\n`}{`    `}{`\"some_deployment\"`}{`:`}{` { `}{`/* ... */`}{` },`}{`\n`}{`    `}{`\"some_service\"`}{`:`}{` { `}{`/* ... */`}{` }`}{`\n`}{`}`}
      \n

      {`They may be deeply nested, Tanka extracts everything that looks like a\nKubernetes resource automatically.`}

      \n

      {`So let's rewrite the `}{`previous `}{`.yaml`}{` to\nvery basic `}{`.jsonnet`}{`:`}

      \n
      {`environments/default/main.jsonnet:`}
      \n
      {`{`}{`\n`}{`  `}{`// Grafana`}{`\n`}{`  `}{`grafana:`}{` {`}{`\n`}{`    `}{`deployment:`}{` {`}{`\n`}{`      `}{`apiVersion:`}{` `}{`'apps/v1'`}{`,`}{`\n`}{`      `}{`kind:`}{` `}{`'Deployment'`}{`,`}{`\n`}{`      `}{`metadata:`}{` {`}{`\n`}{`        `}{`name:`}{` `}{`'grafana'`}{`,`}{`\n`}{`      },`}{`\n`}{`      `}{`spec:`}{` {`}{`\n`}{`        `}{`selector:`}{` {`}{`\n`}{`          `}{`matchLabels:`}{` {`}{`\n`}{`            `}{`name:`}{` `}{`'grafana'`}{`,`}{`\n`}{`          },`}{`\n`}{`        },`}{`\n`}{`        `}{`template:`}{` {`}{`\n`}{`          `}{`metadata:`}{` {`}{`\n`}{`            `}{`labels:`}{` {`}{`\n`}{`              `}{`name:`}{` `}{`'grafana'`}{`,`}{`\n`}{`            },`}{`\n`}{`          },`}{`\n`}{`          `}{`spec:`}{` {`}{`\n`}{`            `}{`containers:`}{` [`}{`\n`}{`              {`}{`\n`}{`                `}{`image:`}{` `}{`'grafana/grafana'`}{`,`}{`\n`}{`                `}{`name:`}{` `}{`'grafana'`}{`,`}{`\n`}{`                `}{`ports:`}{` [{`}{`\n`}{`                    `}{`containerPort:`}{` `}{`3000`}{`,`}{`\n`}{`                    `}{`name:`}{` `}{`'ui'`}{`,`}{`\n`}{`                }],`}{`\n`}{`              },`}{`\n`}{`            ],`}{`\n`}{`          },`}{`\n`}{`        },`}{`\n`}{`      },`}{`\n`}{`    },`}{`\n`}{`    `}{`service:`}{` {`}{`\n`}{`      `}{`apiVersion:`}{` `}{`'v1'`}{`,`}{`\n`}{`      `}{`kind:`}{` `}{`'Service'`}{`,`}{`\n`}{`      `}{`metadata:`}{` {`}{`\n`}{`        `}{`labels:`}{` {`}{`\n`}{`          `}{`name:`}{` `}{`'grafana'`}{`,`}{`\n`}{`        },`}{`\n`}{`        `}{`name:`}{` `}{`'grafana'`}{`,`}{`\n`}{`      },`}{`\n`}{`      `}{`spec:`}{` {`}{`\n`}{`        `}{`ports:`}{` [{`}{`\n`}{`            `}{`name:`}{` `}{`'grafana-ui'`}{`,`}{`\n`}{`            `}{`port:`}{` `}{`3000`}{`,`}{`\n`}{`            `}{`targetPort:`}{` `}{`3000`}{`,`}{`\n`}{`        }],`}{`\n`}{`        `}{`selector:`}{` {`}{`\n`}{`          `}{`name:`}{` `}{`'grafana'`}{`,`}{`\n`}{`        },`}{`\n`}{`        `}{`type:`}{` `}{`'NodePort'`}{`,`}{`\n`}{`      },`}{`\n`}{`    },`}{`\n`}{`  },`}{`\n`}{`\n`}{`  `}{`// Prometheus`}{`\n`}{`  `}{`prometheus:`}{` {`}{`\n`}{`    `}{`deployment:`}{` {`}{`\n`}{`      `}{`apiVersion:`}{` `}{`'apps/v1'`}{`,`}{`\n`}{`      `}{`kind:`}{` `}{`'Deployment'`}{`,`}{`\n`}{`      `}{`metadata:`}{` {`}{`\n`}{`        `}{`name:`}{` `}{`'prometheus'`}{`,`}{`\n`}{`      },`}{`\n`}{`      `}{`spec:`}{` {`}{`\n`}{`        `}{`minReadySeconds:`}{` `}{`10`}{`,`}{`\n`}{`        `}{`replicas:`}{` `}{`1`}{`,`}{`\n`}{`        `}{`revisionHistoryLimit:`}{` `}{`10`}{`,`}{`\n`}{`        `}{`selector:`}{` {`}{`\n`}{`          `}{`matchLabels:`}{` {`}{`\n`}{`            `}{`name:`}{` `}{`'prometheus'`}{`,`}{`\n`}{`          },`}{`\n`}{`        },`}{`\n`}{`        `}{`template:`}{` {`}{`\n`}{`          `}{`metadata:`}{` {`}{`\n`}{`            `}{`labels:`}{` {`}{`\n`}{`              `}{`name:`}{` `}{`'prometheus'`}{`,`}{`\n`}{`            },`}{`\n`}{`          },`}{`\n`}{`          `}{`spec:`}{` {`}{`\n`}{`            `}{`containers:`}{` [`}{`\n`}{`              {`}{`\n`}{`                `}{`image:`}{` `}{`'prom/prometheus'`}{`,`}{`\n`}{`                `}{`imagePullPolicy:`}{` `}{`'IfNotPresent'`}{`,`}{`\n`}{`                `}{`name:`}{` `}{`'prometheus'`}{`,`}{`\n`}{`                `}{`ports:`}{` [`}{`\n`}{`                  {`}{`\n`}{`                    `}{`containerPort:`}{` `}{`9090`}{`,`}{`\n`}{`                    `}{`name:`}{` `}{`'api'`}{`,`}{`\n`}{`                  },`}{`\n`}{`                ],`}{`\n`}{`              },`}{`\n`}{`            ],`}{`\n`}{`          },`}{`\n`}{`        },`}{`\n`}{`      },`}{`\n`}{`    },`}{`\n`}{`    `}{`service:`}{` {`}{`\n`}{`      `}{`apiVersion:`}{` `}{`'v1'`}{`,`}{`\n`}{`      `}{`kind:`}{` `}{`'Service'`}{`,`}{`\n`}{`      `}{`metadata:`}{` {`}{`\n`}{`        `}{`labels:`}{` {`}{`\n`}{`          `}{`name:`}{` `}{`'prometheus'`}{`,`}{`\n`}{`        },`}{`\n`}{`        `}{`name:`}{` `}{`'prometheus'`}{`,`}{`\n`}{`      },`}{`\n`}{`      `}{`spec:`}{` {`}{`\n`}{`        `}{`ports:`}{` [`}{`\n`}{`          {`}{`\n`}{`            `}{`name:`}{` `}{`'prometheus-api'`}{`,`}{`\n`}{`            `}{`port:`}{` `}{`9090`}{`,`}{`\n`}{`            `}{`targetPort:`}{` `}{`9090`}{`,`}{`\n`}{`          },`}{`\n`}{`        ],`}{`\n`}{`        `}{`selector:`}{` {`}{`\n`}{`          `}{`name:`}{` `}{`'prometheus'`}{`,`}{`\n`}{`        },`}{`\n`}{`      },`}{`\n`}{`    },`}{`\n`}{`  },`}{`\n`}{`}`}
      \n

      {`At the moment, this is even more verbose because we have effectively converted\nYAML to JSON, which requires more characters by design.`}

      \n

      {`But Jsonnet opens up enough possibilities to improve this a lot, which will be\ncovered in the next sections.`}

      \n

      {`Taking a look at the generated resources`}

      \n

      {`So far so good, but can we make sure Tanka correctly finds our resources? We\ncan! By running `}{`tk show`}{` you can see the good old yaml, just as `}{`kubectl`}{`\nreceives it:`}

      \n
      {`# run from the project root:`}{`\n`}{`/prom-grafana$ tk show environments/default`}{`\n`}{`apiVersion`}{`:`}{` `}{`apps/v1`}{`\n`}{`kind`}{`:`}{` `}{`Deployment`}{`\n`}{`metadata`}{`:`}{`\n`}{`  `}{`name`}{`:`}{` `}{`grafana`}{`\n`}{`spec`}{`:`}{`\n`}{`  `}{`selector`}{`:`}{`\n`}{`# ...`}
      \n

      {`Spend some time here and try to identify resources from the output in the\n`}{`.jsonnet`}{` source.`}

      \n
      \n

      {`Bonus:`}{` There is also `}{`tk eval`}{`, which displays the raw JSON object\n`}{`main.jsonnet`}{` evaluates to. Tanka won't extract resources or mutate the structure\nhere, so you can verify how your Jsonnet works.`}

      \n
      \n

      {`Connecting to the cluster`}

      \n

      {`The YAML looks as expected? Let's apply it to the cluster. To do so, Tanka needs\nsome additional configuration.`}

      \n

      {`While `}{`kubectl`}{` uses a `}{`$KUBECONFIG`}{` environment variable and a file in the home\ndirectory to store the currently selected cluster, Tanka takes a more explicit\napproach:`}

      \n

      {`Each environment has a file called `}{`spec.json`}{`, which includes the information\nto select a cluster:`}

      \n
      {`{`}{`\n`}{`  `}{`\"`}{`apiVersion`}{`\"`}{`: `}{`\"`}{`tanka.dev/v1alpha1`}{`\"`}{`,`}{`\n`}{`  `}{`\"`}{`kind`}{`\"`}{`: `}{`\"`}{`Environment`}{`\"`}{`,`}{`\n`}{`  `}{`\"`}{`metadata`}{`\"`}{`: `}{`{`}{`\n`}{`    `}{`\"`}{`name`}{`\"`}{`:`}{` `}{`\"`}{`default`}{`\"`}{`\n`}{`  `}{`},`}{`\n`}{`  `}{`\"`}{`spec`}{`\"`}{`: `}{`{`}{`\n`}{`    `}{`\"`}{`apiServer`}{`\"`}{`:`}{` `}{`\"`}{`https://127.0.0.1:6443`}{`\"`}{`,`}{` `}{`// cluster to use`}{`\n`}{`    `}{`\"`}{`namespace`}{`\"`}{`:`}{` `}{`\"`}{`monitoring`}{`\"`}{` `}{`// default namespace for all created resources`}{`\n`}{`  `}{`}`}{`\n`}{`}`}
      \n

      {`You still have to setup a cluster in `}{`$KUBECONFIG`}{` that matches this IP – Tanka\nwill automatically find and use it. This also means that all of your `}{`kubectl`}{`\nclusters just work.`}

      \n

      {`This allows us to make sure that you will never accidentally apply to the wrong\ncluster.`}

      \n
      \n

      {`Note`}{`: Tanka won't create the namespace for you -- you need to include it in\nJsonnet by adding it to `}{`environments/default/main.jsonnet`}{`:`}

      \n
      {`{`}{`\n`}{`  `}{`my_namespace:`}{` {`}{`\n`}{`    `}{`apiVersion:`}{` `}{`\"v1\"`}{`,`}{`\n`}{`    `}{`kind:`}{` `}{`\"Namespace\"`}{`,`}{`\n`}{`    `}{`metadata:`}{` {`}{`\n`}{`      `}{`name:`}{` `}{`\"monitoring\"`}{`\n`}{`    }`}{`\n`}{`  }`}{`\n`}{`}`}
      \n

      {`Alternatively, you can create the namespace manually:`}

      \n
      {`$ kubectl create ns monitoring`}
      \n

      {`This, however, will create an object that is not tracked by Tanka\nand thus needs to be taken care of via other means.`}

      \n
      \n

      {`Verifying the changes`}

      \n

      {`Before applying to the cluster, Tanka gives you a chance to check that your\nchanges actually behave as expected: `}{`tk diff`}{` works just like `}{`git diff`}{` – you\nsee what will be changed.`}

      \n
      {`/prom-grafana$ tk diff environments/default`}{`\n`}{`---`}{` /tmp/LIVE-610130621/apps.v1.Deployment.monitoring.grafana        2019-12-17 20:14:45.213363586 +0100`}{`\n`}{`+++`}{` /tmp/MERGED-517481208/apps.v1.Deployment.monitoring.grafana      2019-12-17 20:14:45.213363586 +0100`}{`\n`}{`@@`}{` -0,0 +1,45 `}{`@@`}{`\n`}{`+`}{`apiVersion: apps/v1`}{`\n`}{`+`}{`kind: Deployment`}{`\n`}{`+`}{`metadata:`}{`\n`}{`+`}{`  name: grafana`}{`\n`}{`+`}{`  namespace: monitoring`}{`\n`}{`+`}{`  # ...`}{`\n`}{`+`}{`spec:`}{`\n`}{`+`}{`  selector:`}{`\n`}{`+`}{`    matchLabels:`}{`\n`}{`+`}{`      name: grafana`}{`\n`}{`+`}{`  strategy:`}{`\n`}{`+`}{`    rollingUpdate:`}{`\n`}{`+`}{`      maxSurge: 25%`}{`\n`}{`+`}{`      maxUnavailable: 25%`}{`\n`}{`+`}{`    type: RollingUpdate`}{`\n`}{`+`}{`  template:`}{`\n`}{`+`}{`    metadata:`}{`\n`}{`+`}{`      creationTimestamp: null`}{`\n`}{`+`}{`      labels:`}{`\n`}{`+`}{`        name: grafana`}{`\n`}{`+`}{`    spec:`}{`\n`}{`+`}{`      containers:`}{`\n`}{`+`}{`      - image: grafana/grafana`}{`\n`}{`+`}{`        imagePullPolicy: IfNotPresent`}{`\n`}{`+`}{`    # ...`}
      \n

      {`As you can see, it shows everything as to-be created .. just as we'd expect,\nsince we are using a blank namespace.`}

      \n
      \n

      {`Note`}{`: Diff may fail before the first apply when the namespace does not yet\nexist. This is a limitation of `}{`kubectl`}{` which is used for computing the\ndifferences.`}

      \n
      \n

      {`Applying to the cluster`}

      \n

      {`Once it's all looking good, `}{`tk apply`}{` serves the exact same purpose as `}{`kubectl apply`}{`:`}

      \n
      {`/prom-grafana$ tk apply environments/default`}{`\n`}{`Applying to namespace `}{`'`}{`monitoring`}{`'`}{` of cluster `}{`'`}{`default`}{`'`}{` at `}{`'`}{`https://127.0.0.1:6443`}{`'`}{` using context `}{`'`}{`default`}{`'`}{`.`}{`\n`}{`Please `}{`type`}{` `}{`'`}{`yes`}{`'`}{` to confirm: yes`}{`\n`}{`deployment.apps/grafana created`}{`\n`}{`deployment.apps/prometheus created`}{`\n`}{`service/grafana created`}{`\n`}{`service/prometheus created`}
      \n

      {`It shows you the diff first and the chosen cluster once more and requires\ninteractive approval (type `}{`yes`}{`).`}

      \n

      {`After that, `}{`kubectl`}{` is used to apply to the cluster. By `}{`piping to\n`}{`kubectl`}{` Tanka makes sure it `}{`behaves exactly`}{` as you would expect it. No\nedge-cases of differing Kubernetes client implementations should ever occur.`}

      \n

      {`Checking it worked`}

      \n

      {`Again, let's connect to Grafana:`}

      \n
      {`$ kubectl port-forward --namespace=monitoring deployments/grafana 8080:3000`}
      \n

      {`And go to http://localhost:8080 for Grafana's UI.`}

      \n\n \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-tutorial-k-lib-mdx-62e6c0e23bef80a067c2.js b/pr-preview/pr-1029/component---docs-tutorial-k-lib-mdx-62e6c0e23bef80a067c2.js deleted file mode 100644 index f338764b8..000000000 --- a/pr-preview/pr-1029/component---docs-tutorial-k-lib-mdx-62e6c0e23bef80a067c2.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{"3kBX":function(e,a,n){"use strict";n.r(a),n.d(a,"_frontmatter",(function(){return l})),n.d(a,"default",(function(){return N}));var t=n("wx14"),s=n("Ff2n"),m=(n("q1tI"),n("7ljp")),p=n("hhGP"),c=n("Z+0r");n("qKvR");const b=["components"],l={};void 0!==l&&l&&l===Object(l)&&Object.isExtensible(l)&&!Object.prototype.hasOwnProperty.call(l,"__filemeta")&&Object.defineProperty(l,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/tutorial/k-lib.mdx"}});const r={_frontmatter:l},i=p.a;function N(e){let{components:a}=e,n=Object(s.a)(e,b);return Object(m.b)(i,Object(t.a)({},r,n,{components:a,mdxType:"MDXLayout"}),Object(m.b)("h1",{id:"kubernetes-library"},"Kubernetes library"),Object(m.b)("p",null,"The last section has shown that using a library for creating Kubernetes objects\ncan drastically simplify the code you need to write. However, there is a huge\namount of different kinds of objects and the Kubernetes API is evolving (and\nthus changing) quite rapidly."),Object(m.b)("p",null,"Writing and maintaining such a library could be a full-time job on it's own.\nLuckily, it is possible to generate such a library from the Kubernetes OpenAPI\nspecification! Even better, it has already been done for you."),Object(m.b)("h2",{id:"k8s-libsonnet"},"k8s-libsonnet"),Object(m.b)("p",null,"The library is called ",Object(m.b)("inlineCode",{parentName:"p"},"k8s-libsonnet")," (replacing the discontinued ",Object(m.b)("inlineCode",{parentName:"p"},"ksonnet-lib"),"),\ncurrently available at ",Object(m.b)("a",{parentName:"p",href:"https://github.com/jsonnet-libs/k8s-libsonnet"},"https://github.com/jsonnet-libs/k8s-libsonnet"),"."),Object(m.b)("blockquote",null,Object(m.b)("p",{parentName:"blockquote"},Object(m.b)("strong",{parentName:"p"},"Note"),": The ",Object(m.b)("inlineCode",{parentName:"p"},"ksonnet")," project has been abandoned, the library is not maintained\nanymore. However, the community backed by Grafana Labs has picked up on this with\nthe ",Object(m.b)("inlineCode",{parentName:"p"},"k8s-libsonnet")," library.")),Object(m.b)("p",null,"As ",Object(m.b)("inlineCode",{parentName:"p"},"k8s-libsonnet")," has broken compatibility in a few places with ",Object(m.b)("inlineCode",{parentName:"p"},"ksonnet-lib")," (for good\nreason), we have instrumented the widely used ",Object(m.b)("inlineCode",{parentName:"p"},"ksonnet-util")," library with a\ncompatibility layer to improve the developer and user experience:\n",Object(m.b)("a",{parentName:"p",href:"https://github.com/grafana/jsonnet-libs/tree/master/ksonnet-util"},"https://github.com/grafana/jsonnet-libs/tree/master/ksonnet-util")),Object(m.b)("p",null,"If you do not have any strong reasons against it, just adopt the wrapper as\nwell, it will ease your work. Many of the original ",Object(m.b)("inlineCode",{parentName:"p"},"ksonnet-util")," enhancements\nhave already made their way into ",Object(m.b)("inlineCode",{parentName:"p"},"k8s-libsonnet"),"."),Object(m.b)("p",null,"The docs for ",Object(m.b)("inlineCode",{parentName:"p"},"k8s-libsonnet")," library can be found here:\n",Object(m.b)("a",{parentName:"p",href:"https://jsonnet-libs.github.io/k8s-libsonnet/"},"https://jsonnet-libs.github.io/k8s-libsonnet/")),Object(m.b)("h2",{id:"installation"},"Installation"),Object(m.b)("p",null,"Like every other external library, ",Object(m.b)("inlineCode",{parentName:"p"},"k8s-libsonnet")," can be installed using\n",Object(m.b)("inlineCode",{parentName:"p"},"jsonnet-bundler"),".\nHowever, Tanka already ",Object(m.b)("strong",{parentName:"p"},"did this for you")," during ",Object(m.b)("a",{parentName:"p",href:"/pr-preview/pr-1029/tutorial/jsonnet#creating-a-new-project"},"project\ncreation (",Object(m.b)("inlineCode",{parentName:"a"},"tk init"),")"),":"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"$ tk init")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," └─ jb install github.com/jsonnet-libs/k8s-libsonnet/1.21@main github.com/grafana/jsonnet-libs/ksonnet-util")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})))),Object(m.b)("p",null,"This created the following structure in ",Object(m.b)("inlineCode",{parentName:"p"},"/vendor"),":"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"vendor")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"├── github.com")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"│   ├── grafana")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"│   │   └── jsonnet-libs")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"│   │   └── ksonnet-util")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"│   │   ├── ...")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"│   │   └── kausal.libsonnet "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# Grafana's wrapper")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"│   └── jsonnet-libs")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"│   └── k8s-libsonnet")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"│   └── 1.21")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"│   ├── ...")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"│   └── main.libsonnet "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# k8s-libsonnet entrypoint")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"├── 1.21 -"),Object(m.b)("span",{parentName:"span",className:"mtk12"},">"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," github.com/jsonnet-libs/k8s-libsonnet/1.21")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"└── ksonnet-util -"),Object(m.b)("span",{parentName:"span",className:"mtk12"},">"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," github.com/grafana/jsonnet-libs/ksonnet-util")))),Object(m.b)("blockquote",null,Object(m.b)("p",{parentName:"blockquote"},Object(m.b)("strong",{parentName:"p"},"Info"),": The ",Object(m.b)("inlineCode",{parentName:"p"},"vendor/")," is the location for external libraries, while ",Object(m.b)("inlineCode",{parentName:"p"},"lib/"),"\ncan be used for your own ones. Check ",Object(m.b)("a",{parentName:"p",href:"/pr-preview/pr-1029/libraries/import-paths"},"import paths"),"\nfor more information.")),Object(m.b)("h4",{id:"aliasing"},"Aliasing"),Object(m.b)("p",null,"Because of how ",Object(m.b)("inlineCode",{parentName:"p"},"jb")," works, the library can be imported as\n",Object(m.b)("inlineCode",{parentName:"p"},"github.com/jsonnet-libs/k8s-libsonnet/1.21/main.libsonnet"),". Most external\nlibraries (including our wrapper) expect it as a simple ",Object(m.b)("inlineCode",{parentName:"p"},"k.libsonnet")," (without\nthe package prefix)."),Object(m.b)("p",null,"To support both, Tanka automatically created an alias file for you:\n",Object(m.b)("inlineCode",{parentName:"p"},"/lib/k.libsonnet")," that just imports the actual library, exposing it under this\nalternative name as well."),Object(m.b)("blockquote",null,Object(m.b)("p",{parentName:"blockquote"},Object(m.b)("strong",{parentName:"p"},"More information"),":\nThis works, because ",Object(m.b)("inlineCode",{parentName:"p"},"import")," behaves like copy-pasting. So the contents of\n",Object(m.b)("inlineCode",{parentName:"p"},"k8s-libsonnet/1.21"),' are "copied" into our new file, making them behave exactly the\nsame.')),Object(m.b)("h2",{id:"using-it"},"Using it"),Object(m.b)("p",null,"First we need to import it in ",Object(m.b)("inlineCode",{parentName:"p"},"main.jsonnet"),":"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"diff"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"-"),Object(m.b)("span",{parentName:"span",className:"mtk10"},' local k = import "kubernetes.libsonnet";')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk6"},' local k = import "github.com/grafana/jsonnet-libs/ksonnet-util/kausal.libsonnet";')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},' local grafana = import "grafana.jsonnet";')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},' local prometheus = import "prometheus.jsonnet";')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," { /* ... */ }")))),Object(m.b)("blockquote",null,Object(m.b)("p",{parentName:"blockquote"},Object(m.b)("strong",{parentName:"p"},"Note"),": ",Object(m.b)("inlineCode",{parentName:"p"},"ksonnet-util")," imports literal ",Object(m.b)("inlineCode",{parentName:"p"},"k.libsonnet"),", so ",Object(m.b)("a",{parentName:"p",href:"#aliasing"},"aliasing")," is\na must here. This works, because ",Object(m.b)("inlineCode",{parentName:"p"},"/lib")," and ",Object(m.b)("inlineCode",{parentName:"p"},"/vendor")," are automatically searched\nfor libraries, and ",Object(m.b)("inlineCode",{parentName:"p"},"k.libsonnet")," can be found in ",Object(m.b)("inlineCode",{parentName:"p"},"/lib")," due to aforementioned\naliasing.")),Object(m.b)("p",null,"Now that we have installed the correct version, let's use it in\n",Object(m.b)("inlineCode",{parentName:"p"},"/environments/default/grafana.jsonnet")," instead of our own helper:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," k "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"import"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"github.com/grafana/jsonnet-libs/ksonnet-util/kausal.libsonnet"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},";")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// use locals to extract the parts we need")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," deploy "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," k.apps.v1.deployment,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," container "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," k.core.v1.container,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," port "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," k.core.v1.containerPort,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," service "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," k.core.v1.service,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// defining the objects:")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"grafana:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// deployment constructor: name, replicas, containers")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"deployment:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," deploy."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"new"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"(name=$._config.grafana.name, replicas="),Object(m.b)("span",{parentName:"span",className:"mtk4"},"1"),Object(m.b)("span",{parentName:"span",className:"mtk1"},", containers=[")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// container constructor")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," container."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"new"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"($._config.grafana.name, "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"grafana/grafana"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},")")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," + container."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"withPorts"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"( "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// add ports to the container")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," [port."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"new"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"ui"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},", $._config.grafana.port)] "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// port constructor")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," ),")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," ]),")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// instead of using a service constructor, our wrapper provides")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"// a handy helper to automatically generate a service for a Deployment")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"service:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," k.util.serv.util."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"serviceFor"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"(self.deployment)")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," service.mixin.spec."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"withType"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"NodePort"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},"),")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("h2",{id:"full-example"},"Full example"),Object(m.b)("p",null,"Now that creating the individual objects does not take more than 5 lines, we can\nmerge it all back into a single file (",Object(m.b)("inlineCode",{parentName:"p"},"main.jsonnet"),") and take a look at the\nwhole picture:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," k "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"import"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"github.com/grafana/jsonnet-libs/ksonnet-util/kausal.libsonnet"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},";")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk7"},"_config::"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"grafana:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"port:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"3000"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"grafana"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"prometheus:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"port:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"9090"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"prometheus"')),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," deployment "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," k.apps.v1.deployment,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," container "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," k.core.v1.container,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," port "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," k.core.v1.containerPort,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"local"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," service "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"="),Object(m.b)("span",{parentName:"span",className:"mtk1"}," k.core.v1.service,")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"})),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"prometheus:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"deployment:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," deployment."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"new"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"(")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," name=$._config.prometheus.name, replicas="),Object(m.b)("span",{parentName:"span",className:"mtk4"},"1"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," containers=[")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," container."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"new"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"($._config.prometheus.name, "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"prom/prometheus"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},")")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," + container."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"withPorts"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"([port."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"new"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"api"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},", $._config.prometheus.port)]),")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," ],")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," ),")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"service:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," k.util."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"serviceFor"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"(self.deployment),")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"grafana:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"deployment:"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," deployment."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"new"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"(")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," name=$._config.grafana.name, replicas="),Object(m.b)("span",{parentName:"span",className:"mtk4"},"1"),Object(m.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," containers=[")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," container."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"new"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"($._config.grafana.name, "),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"grafana/grafana"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},")")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," + container."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"withPorts"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"([port."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"new"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"ui"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},", $._config.grafana.port)]),")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," ],")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," ),")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk10"},"service:")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," k.util."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"serviceFor"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"(self.deployment)")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk12"},"+"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," service.mixin.spec."),Object(m.b)("span",{parentName:"span",className:"mtk9"},"withType"),Object(m.b)("span",{parentName:"span",className:"mtk1"},"("),Object(m.b)("span",{parentName:"span",className:"mtk6"},'"NodePort"'),Object(m.b)("span",{parentName:"span",className:"mtk1"},"),")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(m.b)("p",null,"That's a pretty big improvement, considering how verbose and error-prone it was\nbefore!"),Object(m.b)(c.a,{prev:"/tutorial/abstraction",next:"/tutorial/environments",mdxType:"TutorialButtons"}),Object(m.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==N&&N&&N===Object(N)&&Object.isExtensible(N)&&!Object.prototype.hasOwnProperty.call(N,"__filemeta")&&Object.defineProperty(N,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/tutorial/k-lib.mdx"}}),N.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-tutorial-k-lib-mdx-62e6c0e23bef80a067c2.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-tutorial-k-lib-mdx-62e6c0e23bef80a067c2.js.map b/pr-preview/pr-1029/component---docs-tutorial-k-lib-mdx-62e6c0e23bef80a067c2.js.map deleted file mode 100644 index fd07cedbb..000000000 --- a/pr-preview/pr-1029/component---docs-tutorial-k-lib-mdx-62e6c0e23bef80a067c2.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/tutorial/k-lib.mdx"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","TutorialButtons","prev","next","isMDXComponent"],"mappings":"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","file":"component---docs-tutorial-k-lib-mdx-62e6c0e23bef80a067c2.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nimport TutorialButtons from \"./TutorialButtons\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`Kubernetes library`}

      \n

      {`The last section has shown that using a library for creating Kubernetes objects\ncan drastically simplify the code you need to write. However, there is a huge\namount of different kinds of objects and the Kubernetes API is evolving (and\nthus changing) quite rapidly.`}

      \n

      {`Writing and maintaining such a library could be a full-time job on it's own.\nLuckily, it is possible to generate such a library from the Kubernetes OpenAPI\nspecification! Even better, it has already been done for you.`}

      \n

      {`k8s-libsonnet`}

      \n

      {`The library is called `}{`k8s-libsonnet`}{` (replacing the discontinued `}{`ksonnet-lib`}{`),\ncurrently available at `}{`https://github.com/jsonnet-libs/k8s-libsonnet`}{`.`}

      \n
      \n

      {`Note`}{`: The `}{`ksonnet`}{` project has been abandoned, the library is not maintained\nanymore. However, the community backed by Grafana Labs has picked up on this with\nthe `}{`k8s-libsonnet`}{` library.`}

      \n
      \n

      {`As `}{`k8s-libsonnet`}{` has broken compatibility in a few places with `}{`ksonnet-lib`}{` (for good\nreason), we have instrumented the widely used `}{`ksonnet-util`}{` library with a\ncompatibility layer to improve the developer and user experience:\n`}{`https://github.com/grafana/jsonnet-libs/tree/master/ksonnet-util`}

      \n

      {`If you do not have any strong reasons against it, just adopt the wrapper as\nwell, it will ease your work. Many of the original `}{`ksonnet-util`}{` enhancements\nhave already made their way into `}{`k8s-libsonnet`}{`.`}

      \n

      {`The docs for `}{`k8s-libsonnet`}{` library can be found here:\n`}{`https://jsonnet-libs.github.io/k8s-libsonnet/`}

      \n

      {`Installation`}

      \n

      {`Like every other external library, `}{`k8s-libsonnet`}{` can be installed using\n`}{`jsonnet-bundler`}{`.\nHowever, Tanka already `}{`did this for you`}{` during `}{`project\ncreation (`}{`tk init`}{`)`}{`:`}

      \n
      {`$ tk init`}{`\n`}{`  └─ jb install github.com/jsonnet-libs/k8s-libsonnet/1.21@main github.com/grafana/jsonnet-libs/ksonnet-util`}{`\n`}
      \n

      {`This created the following structure in `}{`/vendor`}{`:`}

      \n
      {`vendor`}{`\n`}{`├── github.com`}{`\n`}{`│   ├── grafana`}{`\n`}{`│   │   └── jsonnet-libs`}{`\n`}{`│   │       └── ksonnet-util`}{`\n`}{`│   │           ├── ...`}{`\n`}{`│   │           └── kausal.libsonnet `}{`# Grafana's wrapper`}{`\n`}{`│   └── jsonnet-libs`}{`\n`}{`│       └── k8s-libsonnet`}{`\n`}{`│           └── 1.21`}{`\n`}{`│               ├── ...`}{`\n`}{`│               └── main.libsonnet   `}{`# k8s-libsonnet entrypoint`}{`\n`}{`├── 1.21 -`}{`>`}{` github.com/jsonnet-libs/k8s-libsonnet/1.21`}{`\n`}{`└── ksonnet-util -`}{`>`}{` github.com/grafana/jsonnet-libs/ksonnet-util`}
      \n
      \n

      {`Info`}{`: The `}{`vendor/`}{` is the location for external libraries, while `}{`lib/`}{`\ncan be used for your own ones. Check `}{`import paths`}{`\nfor more information.`}

      \n
      \n

      {`Aliasing`}

      \n

      {`Because of how `}{`jb`}{` works, the library can be imported as\n`}{`github.com/jsonnet-libs/k8s-libsonnet/1.21/main.libsonnet`}{`. Most external\nlibraries (including our wrapper) expect it as a simple `}{`k.libsonnet`}{` (without\nthe package prefix).`}

      \n

      {`To support both, Tanka automatically created an alias file for you:\n`}{`/lib/k.libsonnet`}{` that just imports the actual library, exposing it under this\nalternative name as well.`}

      \n
      \n

      {`More information`}{`:\nThis works, because `}{`import`}{` behaves like copy-pasting. So the contents of\n`}{`k8s-libsonnet/1.21`}{` are \"copied\" into our new file, making them behave exactly the\nsame.`}

      \n
      \n

      {`Using it`}

      \n

      {`First we need to import it in `}{`main.jsonnet`}{`:`}

      \n
      {`-`}{` local k = import \"kubernetes.libsonnet\";`}{`\n`}{`+`}{` local k = import \"github.com/grafana/jsonnet-libs/ksonnet-util/kausal.libsonnet\";`}{`\n`}{`  local grafana = import \"grafana.jsonnet\";`}{`\n`}{`  local prometheus = import \"prometheus.jsonnet\";`}{`\n`}{`  { /* ... */ }`}
      \n
      \n

      {`Note`}{`: `}{`ksonnet-util`}{` imports literal `}{`k.libsonnet`}{`, so `}{`aliasing`}{` is\na must here. This works, because `}{`/lib`}{` and `}{`/vendor`}{` are automatically searched\nfor libraries, and `}{`k.libsonnet`}{` can be found in `}{`/lib`}{` due to aforementioned\naliasing.`}

      \n
      \n

      {`Now that we have installed the correct version, let's use it in\n`}{`/environments/default/grafana.jsonnet`}{` instead of our own helper:`}

      \n
      {`local`}{` k `}{`=`}{` `}{`import`}{` `}{`\"github.com/grafana/jsonnet-libs/ksonnet-util/kausal.libsonnet\"`}{`;`}{`\n`}{`\n`}{`{`}{`\n`}{`  `}{`// use locals to extract the parts we need`}{`\n`}{`  `}{`local`}{` deploy `}{`=`}{` k.apps.v1.deployment,`}{`\n`}{`  `}{`local`}{` container `}{`=`}{` k.core.v1.container,`}{`\n`}{`  `}{`local`}{` port `}{`=`}{` k.core.v1.containerPort,`}{`\n`}{`  `}{`local`}{` service `}{`=`}{` k.core.v1.service,`}{`\n`}{`  `}{`// defining the objects:`}{`\n`}{`  `}{`grafana:`}{` {`}{`\n`}{`    `}{`// deployment constructor: name, replicas, containers`}{`\n`}{`    `}{`deployment:`}{` deploy.`}{`new`}{`(name=$._config.grafana.name, replicas=`}{`1`}{`, containers=[`}{`\n`}{`      `}{`// container constructor`}{`\n`}{`      container.`}{`new`}{`($._config.grafana.name, `}{`\"grafana/grafana\"`}{`)`}{`\n`}{`      + container.`}{`withPorts`}{`( `}{`// add ports to the container`}{`\n`}{`          [port.`}{`new`}{`(`}{`\"ui\"`}{`, $._config.grafana.port)] `}{`// port constructor`}{`\n`}{`        ),`}{`\n`}{`    ]),`}{`\n`}{`\n`}{`    `}{`// instead of using a service constructor, our wrapper provides`}{`\n`}{`    `}{`// a handy helper to automatically generate a service for a Deployment`}{`\n`}{`    `}{`service:`}{` k.util.serv.util.`}{`serviceFor`}{`(self.deployment)`}{`\n`}{`             `}{`+`}{` service.mixin.spec.`}{`withType`}{`(`}{`\"NodePort\"`}{`),`}{`\n`}{`  }`}{`\n`}{`}`}
      \n

      {`Full example`}

      \n

      {`Now that creating the individual objects does not take more than 5 lines, we can\nmerge it all back into a single file (`}{`main.jsonnet`}{`) and take a look at the\nwhole picture:`}

      \n
      {`local`}{` k `}{`=`}{` `}{`import`}{` `}{`\"github.com/grafana/jsonnet-libs/ksonnet-util/kausal.libsonnet\"`}{`;`}{`\n`}{`\n`}{`{`}{`\n`}{`  `}{`_config::`}{` {`}{`\n`}{`    `}{`grafana:`}{` {`}{`\n`}{`      `}{`port:`}{` `}{`3000`}{`,`}{`\n`}{`      `}{`name:`}{` `}{`\"grafana\"`}{`,`}{`\n`}{`    },`}{`\n`}{`    `}{`prometheus:`}{` {`}{`\n`}{`      `}{`port:`}{` `}{`9090`}{`,`}{`\n`}{`      `}{`name:`}{` `}{`\"prometheus\"`}{`\n`}{`    }`}{`\n`}{`  },`}{`\n`}{`\n`}{`  `}{`local`}{` deployment `}{`=`}{` k.apps.v1.deployment,`}{`\n`}{`  `}{`local`}{` container `}{`=`}{` k.core.v1.container,`}{`\n`}{`  `}{`local`}{` port `}{`=`}{` k.core.v1.containerPort,`}{`\n`}{`  `}{`local`}{` service `}{`=`}{` k.core.v1.service,`}{`\n`}{`\n`}{`  `}{`prometheus:`}{` {`}{`\n`}{`    `}{`deployment:`}{` deployment.`}{`new`}{`(`}{`\n`}{`      name=$._config.prometheus.name, replicas=`}{`1`}{`,`}{`\n`}{`      containers=[`}{`\n`}{`        container.`}{`new`}{`($._config.prometheus.name, `}{`\"prom/prometheus\"`}{`)`}{`\n`}{`        + container.`}{`withPorts`}{`([port.`}{`new`}{`(`}{`\"api\"`}{`, $._config.prometheus.port)]),`}{`\n`}{`      ],`}{`\n`}{`    ),`}{`\n`}{`    `}{`service:`}{` k.util.`}{`serviceFor`}{`(self.deployment),`}{`\n`}{`  },`}{`\n`}{`  `}{`grafana:`}{` {`}{`\n`}{`    `}{`deployment:`}{` deployment.`}{`new`}{`(`}{`\n`}{`      name=$._config.grafana.name, replicas=`}{`1`}{`,`}{`\n`}{`      containers=[`}{`\n`}{`        container.`}{`new`}{`($._config.grafana.name, `}{`\"grafana/grafana\"`}{`)`}{`\n`}{`        + container.`}{`withPorts`}{`([port.`}{`new`}{`(`}{`\"ui\"`}{`, $._config.grafana.port)]),`}{`\n`}{`      ],`}{`\n`}{`    ),`}{`\n`}{`    `}{`service:`}{`\n`}{`      k.util.`}{`serviceFor`}{`(self.deployment)`}{`\n`}{`      `}{`+`}{` service.mixin.spec.`}{`withType`}{`(`}{`\"NodePort\"`}{`),`}{`\n`}{`  },`}{`\n`}{`}`}
      \n

      {`That's a pretty big improvement, considering how verbose and error-prone it was\nbefore!`}

      \n\n \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-tutorial-overview-mdx-4eb2aa73aecb90e088d6.js b/pr-preview/pr-1029/component---docs-tutorial-overview-mdx-4eb2aa73aecb90e088d6.js deleted file mode 100644 index 3321b58dd..000000000 --- a/pr-preview/pr-1029/component---docs-tutorial-overview-mdx-4eb2aa73aecb90e088d6.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{hwtK:function(e,t,a){"use strict";a.r(t),a.d(t,"_frontmatter",(function(){return p})),a.d(t,"default",(function(){return m}));var n=a("wx14"),r=a("Ff2n"),o=(a("q1tI"),a("7ljp")),i=a("hhGP"),l=a("Z+0r");a("qKvR");const b=["components"],p={};void 0!==p&&p&&p===Object(p)&&Object.isExtensible(p)&&!Object.prototype.hasOwnProperty.call(p,"__filemeta")&&Object.defineProperty(p,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/tutorial/overview.mdx"}});const c={_frontmatter:p},s=i.a;function m(e){let{components:t}=e,a=Object(r.a)(e,b);return Object(o.b)(s,Object(n.a)({},c,a,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h1",{id:"tutorial"},"Tutorial"),Object(o.b)("h2",{id:"learning-how-to-use-tanka"},"Learning how to use Tanka"),Object(o.b)("p",null,"Welcome to the Tanka tutorial!\nThe following sections will explain how to deploy an example stack,\n(",Object(o.b)("a",{parentName:"p",href:"https://hub.docker.com/r/grafana/grafana"},"Grafana")," and\n",Object(o.b)("a",{parentName:"p",href:"https://hub.docker.com/r/prom/prometheus"},"Prometheus"),"), to Kubernetes. We will also deal with parameters, differences between ",Object(o.b)("inlineCode",{parentName:"p"},"dev")," and ",Object(o.b)("inlineCode",{parentName:"p"},"prod")," and how to stop worrying and love libraries."),Object(o.b)("p",null,"To do so, we have the following steps:"),Object(o.b)("ol",null,Object(o.b)("li",{parentName:"ol"},Object(o.b)("a",{parentName:"li",href:"/pr-preview/pr-1029/tutorial/refresher"},"Deploying ",Object(o.b)("strong",{parentName:"a"},"without")," Tanka first"),": Using good old ",Object(o.b)("inlineCode",{parentName:"li"},"kubectl")," to understand what Tanka will do for us."),Object(o.b)("li",{parentName:"ol"},Object(o.b)("a",{parentName:"li",href:"/pr-preview/pr-1029/tutorial/jsonnet"},"Using Jsonnet"),": Doing the same thing once again, but this time with Tanka and Jsonnet."),Object(o.b)("li",{parentName:"ol"},Object(o.b)("a",{parentName:"li",href:"/pr-preview/pr-1029/tutorial/parameters"},"Parameterizing"),": Using Variables to avoid data duplication."),Object(o.b)("li",{parentName:"ol"},Object(o.b)("a",{parentName:"li",href:"/pr-preview/pr-1029/tutorial/abstraction"},"Abstraction"),": Splitting components into individual parts."),Object(o.b)("li",{parentName:"ol"},Object(o.b)("a",{parentName:"li",href:"/pr-preview/pr-1029/tutorial/environments"},"Environments"),": Dealing with differences between ",Object(o.b)("inlineCode",{parentName:"li"},"dev")," and ",Object(o.b)("inlineCode",{parentName:"li"},"prod"),"."),Object(o.b)("li",{parentName:"ol"},Object(o.b)("a",{parentName:"li",href:"/pr-preview/pr-1029/tutorial/k-lib"},Object(o.b)("inlineCode",{parentName:"a"},"k.libsonnet")),": Avoid having to remember API resources.")),Object(o.b)("p",null,"Completing this gives a solid knowledge of Tanka's fundamentals. Let's get started!"),Object(o.b)("h2",{id:"resources"},"Resources"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"The final outcome of this tutorial can be seen here:\n",Object(o.b)("a",{parentName:"li",href:"https://github.com/grafana/tanka/tree/main/examples/prom-grafana"},"https://github.com/grafana/tanka/examples/prom-grafana"))),Object(o.b)(l.a,{next:"/tutorial/refresher",mdxType:"TutorialButtons"}))}void 0!==m&&m&&m===Object(m)&&Object.isExtensible(m)&&!Object.prototype.hasOwnProperty.call(m,"__filemeta")&&Object.defineProperty(m,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/tutorial/overview.mdx"}}),m.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-tutorial-overview-mdx-4eb2aa73aecb90e088d6.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-tutorial-overview-mdx-4eb2aa73aecb90e088d6.js.map b/pr-preview/pr-1029/component---docs-tutorial-overview-mdx-4eb2aa73aecb90e088d6.js.map deleted file mode 100644 index 4f1cc95b7..000000000 --- a/pr-preview/pr-1029/component---docs-tutorial-overview-mdx-4eb2aa73aecb90e088d6.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/tutorial/overview.mdx"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","TutorialButtons","next","isMDXComponent"],"mappings":"qSAOaA,EAAe,QAAG,IAAAA,UAAAC,OAAAD,IAAAC,OAAAC,aAAAF,KAAAC,OAAAE,UAAAC,eAAAC,KAAAL,EAAA,eAAAC,OAAAK,eAAAN,EAAA,cAAAO,cAAA,EAAAC,MAAA,CAAAC,KAAA,eAAAC,SAAA,gCAC/B,MAAMC,EAAc,CAClBX,gBAEIY,EAAYC,IACH,SAASC,EAAUC,GAG/B,IAHgC,WACjCC,GAEDD,EADIE,EAAKC,YAAAH,EAAAI,GAER,OAAOC,YAACR,EAASS,YAAA,GAAKV,EAAiBM,EAAK,CAAED,WAAYA,EAAYM,QAAQ,cAG5EF,YAAA,MACE,GAAM,YAAU,YAElBA,YAAA,MACE,GAAM,6BAA2B,6BAEnCA,YAAA,kHAEDA,YAAA,KAAGG,WAAW,IACT,KAAQ,4CAA0C,WAClC,SACtBH,YAAA,KAAGG,WAAW,IACR,KAAQ,4CAA0C,cAC/B,4EAA6EH,YAAA,cAAYG,WAAW,KAAG,OAAqB,QAASH,YAAA,cAAYG,WAAW,KAAG,QAAsB,iDAC5MH,YAAA,mDACAA,YAAA,UACEA,YAAA,MAAIG,WAAW,MAAKH,YAAA,KAAGG,WAAW,KAC9B,KAAQ,0CAAwC,aACjCH,YAAA,UAAQG,WAAW,KAAG,WAAqB,gBAAoB,oBAAqBH,YAAA,cAAYG,WAAW,MAAI,WAAyB,6CAC3JH,YAAA,MAAIG,WAAW,MAAKH,YAAA,KAAGG,WAAW,KAC9B,KAAQ,wCAAsC,iBACxB,4EAC1BH,YAAA,MAAIG,WAAW,MAAKH,YAAA,KAAGG,WAAW,KAC9B,KAAQ,2CAAyC,kBAC1B,gDAC3BH,YAAA,MAAIG,WAAW,MAAKH,YAAA,KAAGG,WAAW,KAC9B,KAAQ,4CAA0C,eAC9B,iDACxBH,YAAA,MAAIG,WAAW,MAAKH,YAAA,KAAGG,WAAW,KAC9B,KAAQ,6CAA2C,gBAC9B,sCAAuCH,YAAA,cAAYG,WAAW,MAAI,OAAqB,QAASH,YAAA,cAAYG,WAAW,MAAI,QAAsB,KAC1KH,YAAA,MAAIG,WAAW,MAAKH,YAAA,KAAGG,WAAW,KAC9B,KAAQ,sCACPH,YAAA,cAAYG,WAAW,KAAG,gBAAiC,8CAElEH,YAAA,gGACAA,YAAA,MACE,GAAM,aAAW,aAEnBA,YAAA,UACEA,YAAA,MAAIG,WAAW,MAAI,yDACvBH,YAAA,KAAGG,WAAW,KACN,KAAQ,oEAAkE,4DAIhFH,YAACI,IAAe,CAACC,KAAK,sBAAsBH,QAAQ,0BAGvD,IAAAR,UAAAb,OAAAa,IAAAb,OAAAC,aAAAY,KAAAb,OAAAE,UAAAC,eAAAC,KAAAS,EAAA,eAAAb,OAAAK,eAAAQ,EAAA,cAAAP,cAAA,EAAAC,MAAA,CAAAC,KAAA,aAAAC,SAAA,gCAEDI,EAAWY,gBAAiB","file":"component---docs-tutorial-overview-mdx-4eb2aa73aecb90e088d6.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nimport TutorialButtons from \"./TutorialButtons\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`Tutorial`}

      \n

      {`Learning how to use Tanka`}

      \n

      {`Welcome to the Tanka tutorial!\nThe following sections will explain how to deploy an example stack,\n(`}{`Grafana`}{` and\n`}{`Prometheus`}{`), to Kubernetes. We will also deal with parameters, differences between `}{`dev`}{` and `}{`prod`}{` and how to stop worrying and love libraries.`}

      \n

      {`To do so, we have the following steps:`}

      \n
        \n
      1. {`Deploying `}{`without`}{` Tanka first`}{`: Using good old `}{`kubectl`}{` to understand what Tanka will do for us.`}
      2. \n
      3. {`Using Jsonnet`}{`: Doing the same thing once again, but this time with Tanka and Jsonnet.`}
      4. \n
      5. {`Parameterizing`}{`: Using Variables to avoid data duplication.`}
      6. \n
      7. {`Abstraction`}{`: Splitting components into individual parts.`}
      8. \n
      9. {`Environments`}{`: Dealing with differences between `}{`dev`}{` and `}{`prod`}{`.`}
      10. \n
      11. {`k.libsonnet`}{`: Avoid having to remember API resources.`}
      12. \n
      \n

      {`Completing this gives a solid knowledge of Tanka's fundamentals. Let's get started!`}

      \n

      {`Resources`}

      \n \n\n \n\n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-tutorial-parameterizing-mdx-cb9c8ff66607e77042cd.js b/pr-preview/pr-1029/component---docs-tutorial-parameterizing-mdx-cb9c8ff66607e77042cd.js deleted file mode 100644 index 8a700d597..000000000 --- a/pr-preview/pr-1029/component---docs-tutorial-parameterizing-mdx-cb9c8ff66607e77042cd.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{qTU8:function(e,a,t){"use strict";t.r(a),t.d(a,"_frontmatter",(function(){return r})),t.d(a,"default",(function(){return o}));var n=t("wx14"),s=t("Ff2n"),c=(t("q1tI"),t("7ljp")),m=t("hhGP"),p=t("Z+0r");t("qKvR");const l=["components"],r={};void 0!==r&&r&&r===Object(r)&&Object.isExtensible(r)&&!Object.prototype.hasOwnProperty.call(r,"__filemeta")&&Object.defineProperty(r,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/tutorial/parameterizing.mdx"}});const b={_frontmatter:r},i=m.a;function o(e){let{components:a}=e,t=Object(s.a)(e,l);return Object(c.b)(i,Object(n.a)({},b,t,{components:a,mdxType:"MDXLayout"}),Object(c.b)("h1",{id:"parameterizing"},"Parameterizing"),Object(c.b)("p",null,"Deploying using Tanka worked well, but it did not really improve the situation\nin terms of maintainability and readability."),Object(c.b)("p",null,"To do so, the following sections will explore some ways Jsonnet provides us with."),Object(c.b)("h2",{id:"config-object"},"Config object"),Object(c.b)("p",null,"The most straightforward thing to do is creating a hidden object that holds all\nactual values in a single place to be consumed by the actual resources."),Object(c.b)("p",null,"Luckily, Jsonnet has the ",Object(c.b)("inlineCode",{parentName:"p"},'key:: "value"')," stanza for private fields. Such are\nonly available during compiling and will be removed from the actual output."),Object(c.b)("p",null,"Such an object could look like this:"),Object(c.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"jsonnet"},Object(c.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"},"{")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," "),Object(c.b)("span",{parentName:"span",className:"mtk7"},"_config::"),Object(c.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," "),Object(c.b)("span",{parentName:"span",className:"mtk10"},"grafana:"),Object(c.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," "),Object(c.b)("span",{parentName:"span",className:"mtk10"},"port:"),Object(c.b)("span",{parentName:"span",className:"mtk1"}," "),Object(c.b)("span",{parentName:"span",className:"mtk4"},"3000"),Object(c.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," "),Object(c.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(c.b)("span",{parentName:"span",className:"mtk1"}," "),Object(c.b)("span",{parentName:"span",className:"mtk6"},'"grafana"'),Object(c.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," "),Object(c.b)("span",{parentName:"span",className:"mtk10"},"prometheus:"),Object(c.b)("span",{parentName:"span",className:"mtk1"}," {")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," "),Object(c.b)("span",{parentName:"span",className:"mtk10"},"port:"),Object(c.b)("span",{parentName:"span",className:"mtk1"}," "),Object(c.b)("span",{parentName:"span",className:"mtk4"},"9090"),Object(c.b)("span",{parentName:"span",className:"mtk1"},",")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," "),Object(c.b)("span",{parentName:"span",className:"mtk10"},"name:"),Object(c.b)("span",{parentName:"span",className:"mtk1"}," "),Object(c.b)("span",{parentName:"span",className:"mtk6"},'"prometheus"')),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," }")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(c.b)("p",null,"We can then replace hardcoded values with a reference to this object:"),Object(c.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"diff"},Object(c.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"},"{ // <- This is $")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," _config:: { /* .. */ },")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," grafana: {")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," service: {")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," apiVersion: 'v1',")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," kind: 'Service',")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," metadata: {")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," labels: {")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk5"},"-"),Object(c.b)("span",{parentName:"span",className:"mtk10"}," name: 'grafana',")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(c.b)("span",{parentName:"span",className:"mtk6"}," name: $._config.grafana.name, // $ refers to the outermost object")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk5"},"-"),Object(c.b)("span",{parentName:"span",className:"mtk10"}," name: 'grafana',")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(c.b)("span",{parentName:"span",className:"mtk6"}," name: $._config.grafana.name,")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," spec: {")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," ports: [{")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk5"},"-"),Object(c.b)("span",{parentName:"span",className:"mtk10"}," name: 'grafana-ui',")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(c.b)("span",{parentName:"span",className:"mtk6"}," name: '%s-ui' % $._config.grafana.name, // printf-style formatting")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk5"},"-"),Object(c.b)("span",{parentName:"span",className:"mtk10"}," port: 3000,")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(c.b)("span",{parentName:"span",className:"mtk6"}," port: $._config.grafana.port,")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk5"},"-"),Object(c.b)("span",{parentName:"span",className:"mtk10"}," targetPort: 3000,")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(c.b)("span",{parentName:"span",className:"mtk6"}," targetPort: $._config.grafana.port,")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," }],")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," selector: {")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk5"},"-"),Object(c.b)("span",{parentName:"span",className:"mtk10"}," name: 'grafana',")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk5"},"+"),Object(c.b)("span",{parentName:"span",className:"mtk6"}," name: $._config.grafana.name,")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," type: 'NodePort',")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"}," },")),"\n",Object(c.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(c.b)("span",{parentName:"span",className:"mtk1"},"}")))),Object(c.b)("p",null,"Here we see that we can easily refer to other parts of the configuration using\nthe outer-most object ",Object(c.b)("inlineCode",{parentName:"p"},"$")," (the root level). Every value is just a regular\nvariable that you can refer to using the same familiar syntax from other C-like\nlanguages."),Object(c.b)("p",null,"Now we do not only have a single place to change tunables, but also won't suffer\nfrom mismatching labels and selectors anymore, as they are defined in a single\nplace and all changed at once."),Object(c.b)(p.a,{prev:"/tutorial/jsonnet",next:"/tutorial/abstraction",mdxType:"TutorialButtons"}),Object(c.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==o&&o&&o===Object(o)&&Object.isExtensible(o)&&!Object.prototype.hasOwnProperty.call(o,"__filemeta")&&Object.defineProperty(o,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/tutorial/parameterizing.mdx"}}),o.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-tutorial-parameterizing-mdx-cb9c8ff66607e77042cd.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-tutorial-parameterizing-mdx-cb9c8ff66607e77042cd.js.map b/pr-preview/pr-1029/component---docs-tutorial-parameterizing-mdx-cb9c8ff66607e77042cd.js.map deleted file mode 100644 index 8c67f3f1f..000000000 --- a/pr-preview/pr-1029/component---docs-tutorial-parameterizing-mdx-cb9c8ff66607e77042cd.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/tutorial/parameterizing.mdx"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","TutorialButtons","prev","next","isMDXComponent"],"mappings":"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","file":"component---docs-tutorial-parameterizing-mdx-cb9c8ff66607e77042cd.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nimport TutorialButtons from \"./TutorialButtons\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`Parameterizing`}

      \n

      {`Deploying using Tanka worked well, but it did not really improve the situation\nin terms of maintainability and readability.`}

      \n

      {`To do so, the following sections will explore some ways Jsonnet provides us with.`}

      \n

      {`Config object`}

      \n

      {`The most straightforward thing to do is creating a hidden object that holds all\nactual values in a single place to be consumed by the actual resources.`}

      \n

      {`Luckily, Jsonnet has the `}{`key:: \"value\"`}{` stanza for private fields. Such are\nonly available during compiling and will be removed from the actual output.`}

      \n

      {`Such an object could look like this:`}

      \n
      {`{`}{`\n`}{`  `}{`_config::`}{` {`}{`\n`}{`    `}{`grafana:`}{` {`}{`\n`}{`      `}{`port:`}{` `}{`3000`}{`,`}{`\n`}{`      `}{`name:`}{` `}{`\"grafana\"`}{`,`}{`\n`}{`    },`}{`\n`}{`    `}{`prometheus:`}{` {`}{`\n`}{`      `}{`port:`}{` `}{`9090`}{`,`}{`\n`}{`      `}{`name:`}{` `}{`\"prometheus\"`}{`\n`}{`    }`}{`\n`}{`  }`}{`\n`}{`}`}
      \n

      {`We can then replace hardcoded values with a reference to this object:`}

      \n
      {`{ // <- This is $`}{`\n`}{`  _config:: { /* .. */ },`}{`\n`}{`  grafana: {`}{`\n`}{`    service: {`}{`\n`}{`      apiVersion: 'v1',`}{`\n`}{`      kind: 'Service',`}{`\n`}{`      metadata: {`}{`\n`}{`        labels: {`}{`\n`}{`-`}{`         name: 'grafana',`}{`\n`}{`+`}{`         name: $._config.grafana.name, // $ refers to the outermost object`}{`\n`}{`        },`}{`\n`}{`-`}{`       name: 'grafana',`}{`\n`}{`+`}{`       name: $._config.grafana.name,`}{`\n`}{`      },`}{`\n`}{`      spec: {`}{`\n`}{`        ports: [{`}{`\n`}{`-`}{`           name: 'grafana-ui',`}{`\n`}{`+`}{`           name: '%s-ui' % $._config.grafana.name, // printf-style formatting`}{`\n`}{`-`}{`           port: 3000,`}{`\n`}{`+`}{`           port: $._config.grafana.port,`}{`\n`}{`-`}{`           targetPort: 3000,`}{`\n`}{`+`}{`           targetPort: $._config.grafana.port,`}{`\n`}{`        }],`}{`\n`}{`        selector: {`}{`\n`}{`-`}{`          name: 'grafana',`}{`\n`}{`+`}{`          name: $._config.grafana.name,`}{`\n`}{`        },`}{`\n`}{`        type: 'NodePort',`}{`\n`}{`      },`}{`\n`}{`    },`}{`\n`}{`  },`}{`\n`}{`}`}
      \n

      {`Here we see that we can easily refer to other parts of the configuration using\nthe outer-most object `}{`$`}{` (the root level). Every value is just a regular\nvariable that you can refer to using the same familiar syntax from other C-like\nlanguages.`}

      \n

      {`Now we do not only have a single place to change tunables, but also won't suffer\nfrom mismatching labels and selectors anymore, as they are defined in a single\nplace and all changed at once.`}

      \n\n \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-tutorial-refresher-mdx-81bba2a6cc6987e2c96b.js b/pr-preview/pr-1029/component---docs-tutorial-refresher-mdx-81bba2a6cc6987e2c96b.js deleted file mode 100644 index 3671459a0..000000000 --- a/pr-preview/pr-1029/component---docs-tutorial-refresher-mdx-81bba2a6cc6987e2c96b.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{Xb6S:function(a,e,s){"use strict";s.r(e),s.d(e,"_frontmatter",(function(){return l})),s.d(e,"default",(function(){return i}));var t=s("wx14"),n=s("Ff2n"),m=(s("q1tI"),s("7ljp")),p=s("hhGP"),c=s("Z+0r");s("qKvR");const b=["components"],l={};void 0!==l&&l&&l===Object(l)&&Object.isExtensible(l)&&!Object.prototype.hasOwnProperty.call(l,"__filemeta")&&Object.defineProperty(l,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"docs/tutorial/refresher.mdx"}});const N={_frontmatter:l},r=p.a;function i(a){let{components:e}=a,s=Object(n.a)(a,b);return Object(m.b)(r,Object(t.a)({},N,s,{components:e,mdxType:"MDXLayout"}),Object(m.b)("h1",{id:"refresher-on-deploying"},"Refresher on deploying"),Object(m.b)("h2",{id:"deploying-to-kubernetes-using-kubectl"},"Deploying to Kubernetes using kubectl"),Object(m.b)("p",null,"To understand how Tanka works, it is important to know what steps are required\nfor the task of deploying Grafana and Prometheus to Kubernetes:"),Object(m.b)("ol",null,Object(m.b)("li",{parentName:"ol"},"Prometheus",Object(m.b)("ul",{parentName:"li"},Object(m.b)("li",{parentName:"ul"},"A ",Object(m.b)("inlineCode",{parentName:"li"},"Deployment")," must be created, to run the ",Object(m.b)("inlineCode",{parentName:"li"},"prom/prometheus")," image"),Object(m.b)("li",{parentName:"ul"},"Also a ",Object(m.b)("inlineCode",{parentName:"li"},"Service")," is needed for Grafana to be able to connect port ",Object(m.b)("inlineCode",{parentName:"li"},"9090")," of\nPrometheus."))),Object(m.b)("li",{parentName:"ol"},"Grafana",Object(m.b)("ul",{parentName:"li"},Object(m.b)("li",{parentName:"ul"},"Another ",Object(m.b)("inlineCode",{parentName:"li"},"Deployment")," is required for the Grafana server."),Object(m.b)("li",{parentName:"ul"},"To connect to the web interface, we will be using a ",Object(m.b)("inlineCode",{parentName:"li"},"Service")," of type\n",Object(m.b)("inlineCode",{parentName:"li"},"NodePort"),".")))),Object(m.b)("p",null,"Before taking a look how Tanka can help doing so, let's recall how to do it with\nplain ",Object(m.b)("inlineCode",{parentName:"p"},"kubectl"),"."),Object(m.b)("h2",{id:"writing-the-yaml"},"Writing the yaml"),Object(m.b)("p",null,Object(m.b)("inlineCode",{parentName:"p"},"kubectl")," expects the resources it should create in ",Object(m.b)("inlineCode",{parentName:"p"},".yaml")," format. For Grafana\n..."),Object(m.b)("h5",{id:"grafanayaml"},"grafana.yaml:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"yaml"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# Grafana server Deployment")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"apiVersion"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"apps/v1")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"kind"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"Deployment")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"metadata"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"grafana")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"spec"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"selector"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"matchLabels"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"grafana")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"template"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"metadata"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"labels"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"grafana")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"spec"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"containers"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"-"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"image"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"grafana/grafana")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"grafana")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"ports"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"-"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"containerPort"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"3000")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"ui")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"---")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# Grafana UI Service NodePort")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"apiVersion"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"v1")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"kind"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"Service")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"metadata"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"labels"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"grafana")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"grafana")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"spec"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"ports"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"-"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"grafana-ui")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"port"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"3000")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"targetPort"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"3000")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"selector"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"grafana")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"type"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"NodePort")))),Object(m.b)("p",null,"... and for Prometheus:"),Object(m.b)("h5",{id:"prometheusyaml"},"prometheus.yaml"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"yaml"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# Prometheus server Deployment")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"apiVersion"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"apps/v1")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"kind"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"Deployment")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"metadata"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"prometheus")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"spec"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"selector"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"matchLabels"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"prometheus")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"template"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"metadata"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"labels"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"prometheus")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"spec"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"containers"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"-"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"image"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"prom/prometheus")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"prometheus")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"ports"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"-"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"containerPort"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"9090")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"api")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"---")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# Prometheus API Service")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"apiVersion"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"v1")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"kind"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"Service")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"metadata"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"labels"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"prometheus")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"prometheus")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk11"},"spec"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"ports"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk5"},"-"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"prometheus-api")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"port"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"9090")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"targetPort"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk4"},"9090")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"selector"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk11"},"name"),Object(m.b)("span",{parentName:"span",className:"mtk5"},":"),Object(m.b)("span",{parentName:"span",className:"mtk1"}," "),Object(m.b)("span",{parentName:"span",className:"mtk6"},"prometheus")))),Object(m.b)("p",null,"That's pretty verbose, right?"),Object(m.b)("p",null,"Even worse, there are labels and matchers (e.g. ",Object(m.b)("inlineCode",{parentName:"p"},"prometheus"),") that need to be\nexactly the same scattered across the file. It's a nightmare to debug and\nfurthermore harms readability a lot."),Object(m.b)("h2",{id:"deploying-to-the-cluster"},"Deploying to the cluster"),Object(m.b)("p",null,"To actually apply those resources, copy them into ",Object(m.b)("inlineCode",{parentName:"p"},".yaml")," files and use:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"$ kubectl apply -f prometheus.yaml -f grafana.yaml")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"deployment.apps/grafana created")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"deployment.apps/prometheus created")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"service/grafana created")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"service/prometheus created")))),Object(m.b)("h2",{id:"checking-it-worked"},"Checking it worked"),Object(m.b)("p",null,"So far so good, but can we tell it actually did what we wanted? Let's test that\nGrafana can connect to Prometheus!"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk3 mtki"},"# Temporarily forward Grafana to localhost")),"\n",Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"kubectl port-forward deployments/grafana 8080:3000")))),Object(m.b)("p",null,"Now go to http://localhost:8080 in your browser and login using ",Object(m.b)("inlineCode",{parentName:"p"},"admin:admin"),".\nThen navigate to ",Object(m.b)("inlineCode",{parentName:"p"},"Connections > Data sources > Add new data source"),", choose\n",Object(m.b)("inlineCode",{parentName:"p"},"Prometheus")," as type and enter ",Object(m.b)("inlineCode",{parentName:"p"},"http://prometheus:9090")," as URL. Hit\n",Object(m.b)("inlineCode",{parentName:"p"},"Save & Test")," which should yield a big green bar telling you everything is good."),Object(m.b)("p",null,"Cool! This worked out well for this small example, but the ",Object(m.b)("inlineCode",{parentName:"p"},".yaml")," files are\nhard to read and maintain. Especially when you need to deploy this exact same\nthing in ",Object(m.b)("inlineCode",{parentName:"p"},"dev")," and ",Object(m.b)("inlineCode",{parentName:"p"},"prod")," your choices are very limited."),Object(m.b)("p",null,"Let's explore how Tanka can help us here in the next section!"),Object(m.b)("h2",{id:"cleaning-up"},"Cleaning up"),Object(m.b)("p",null,"Let's remove everything we created to start fresh with Jsonnet in the next section:"),Object(m.b)("pre",{className:"material-theme-darker vscode-highlight","data-language":"bash"},Object(m.b)("code",{parentName:"pre",className:"vscode-highlight-code"},Object(m.b)("span",{parentName:"code",className:"vscode-highlight-line"},Object(m.b)("span",{parentName:"span",className:"mtk1"},"$ kubectl delete -f prometheus.yaml -f grafana.yaml")))),Object(m.b)(c.a,{prev:"/tutorial/overview",next:"/tutorial/jsonnet",mdxType:"TutorialButtons"}),Object(m.b)("style",{className:"vscode-highlight-styles"},"\n \n .material-theme-darker {\nbackground-color: #212121;\ncolor: #EEFFFF;\n}\n\n.material-theme-darker .mtk1 { color: #FFFFFF; }\n.material-theme-darker .mtk2 { color: #212121; }\n.material-theme-darker .mtk3 { color: #545454; }\n.material-theme-darker .mtk4 { color: #F78C6C; }\n.material-theme-darker .mtk5 { color: #89DDFF; }\n.material-theme-darker .mtk6 { color: #C3E88D; }\n.material-theme-darker .mtk7 { color: #FFCB6B; }\n.material-theme-darker .mtk8 { color: #EEFFFF; }\n.material-theme-darker .mtk9 { color: #82AAFF; }\n.material-theme-darker .mtk10 { color: #FF5370; }\n.material-theme-darker .mtk11 { color: #F07178; }\n.material-theme-darker .mtk12 { color: #C792EA; }\n.material-theme-darker .mtk13 { color: #EEFFFF90; }\n.material-theme-darker .mtk14 { color: #65737E; }\n.material-theme-darker .mtk15 { color: #B2CCD6; }\n.material-theme-darker .mtk16 { color: #C17E70; }\n.material-theme-darker .mtki { font-style: italic; }\n.material-theme-darker .mtkb { font-weight: bold; }\n.material-theme-darker .mtku { text-decoration: underline; text-underline-position: under; }\n"))}void 0!==i&&i&&i===Object(i)&&Object.isExtensible(i)&&!Object.prototype.hasOwnProperty.call(i,"__filemeta")&&Object.defineProperty(i,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"docs/tutorial/refresher.mdx"}}),i.isMDXComponent=!0}}]); -//# sourceMappingURL=component---docs-tutorial-refresher-mdx-81bba2a6cc6987e2c96b.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/component---docs-tutorial-refresher-mdx-81bba2a6cc6987e2c96b.js.map b/pr-preview/pr-1029/component---docs-tutorial-refresher-mdx-81bba2a6cc6987e2c96b.js.map deleted file mode 100644 index edc59ef96..000000000 --- a/pr-preview/pr-1029/component---docs-tutorial-refresher-mdx-81bba2a6cc6987e2c96b.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./docs/tutorial/refresher.mdx"],"names":["_frontmatter","Object","isExtensible","prototype","hasOwnProperty","call","defineProperty","configurable","value","name","filename","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","TutorialButtons","prev","next","isMDXComponent"],"mappings":"qSAOaA,EAAe,QAAG,IAAAA,UAAAC,OAAAD,IAAAC,OAAAC,aAAAF,KAAAC,OAAAE,UAAAC,eAAAC,KAAAL,EAAA,eAAAC,OAAAK,eAAAN,EAAA,cAAAO,cAAA,EAAAC,MAAA,CAAAC,KAAA,eAAAC,SAAA,iCAC/B,MAAMC,EAAc,CAClBX,gBAEIY,EAAYC,IACH,SAASC,EAAUC,GAG/B,IAHgC,WACjCC,GAEDD,EADIE,EAAKC,YAAAH,EAAAI,GAER,OAAOC,YAACR,EAASS,YAAA,GAAKV,EAAiBM,EAAK,CAAED,WAAYA,EAAYM,QAAQ,cAG5EF,YAAA,MACE,GAAM,0BAAwB,0BAEhCA,YAAA,MACE,GAAM,yCAAuC,yCAE/CA,YAAA,4JAEAA,YAAA,UACEA,YAAA,MAAIG,WAAW,MAAI,aACjBH,YAAA,MAAIG,WAAW,MACbH,YAAA,MAAIG,WAAW,MAAI,KAAOH,YAAA,cAAYG,WAAW,MAAI,cAA4B,gCAAiCH,YAAA,cAAYG,WAAW,MAAI,mBAAiC,UAC9KH,YAAA,MAAIG,WAAW,MAAI,UAAYH,YAAA,cAAYG,WAAW,MAAI,WAAyB,qDAAsDH,YAAA,cAAYG,WAAW,MAAI,QAAsB,sBAI9LH,YAAA,MAAIG,WAAW,MAAI,UACjBH,YAAA,MAAIG,WAAW,MACbH,YAAA,MAAIG,WAAW,MAAI,WAAaH,YAAA,cAAYG,WAAW,MAAI,cAA4B,wCACvFH,YAAA,MAAIG,WAAW,MAAI,uDAAyDH,YAAA,cAAYG,WAAW,MAAI,WAAyB,aACxIH,YAAA,cAAYG,WAAW,MAAI,YAA0B,QAInDH,YAAA,oGACIA,YAAA,cAAYG,WAAW,KAAG,WAAyB,KACvDH,YAAA,MACE,GAAM,oBAAkB,oBAE1BA,YAAA,SAAGA,YAAA,cAAYG,WAAW,KAAG,WAAyB,8CAA+CH,YAAA,cAAYG,WAAW,KAAG,SAAuB,6BAEtJH,YAAA,MACE,GAAM,eAAa,iBAErBA,YAAA,OACE,UAAa,yCACb,gBAAiB,QAChBA,YAAA,QAAMG,WAAW,MAChB,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,aAAW,gCACsB,KACxDH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,SAAO,cACEH,YAAA,QAAMG,WAAW,OACvC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,YACO,KACpCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,eACU,KACvCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,SAAO,YACAH,YAAA,QAAMG,WAAW,OACrC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,MACLH,YAAA,QAAMG,WAAW,OAC/B,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,YACO,KACpCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,MACLH,YAAA,QAAMG,WAAW,OAC/B,UAAa,SAAO,YACAH,YAAA,QAAMG,WAAW,OACrC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,QACHH,YAAA,QAAMG,WAAW,OACjC,UAAa,SAAO,eACGH,YAAA,QAAMG,WAAW,OACxC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,UACDH,YAAA,QAAMG,WAAW,OACnC,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,YACO,KACpCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,MACLH,YAAA,QAAMG,WAAW,OAC/B,UAAa,SAAO,YACAH,YAAA,QAAMG,WAAW,OACrC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,QACHH,YAAA,QAAMG,WAAW,OACjC,UAAa,SAAO,YACAH,YAAA,QAAMG,WAAW,OACrC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,UACDH,YAAA,QAAMG,WAAW,OACnC,UAAa,SAAO,UACFH,YAAA,QAAMG,WAAW,OACnC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,YACCH,YAAA,QAAMG,WAAW,OACrC,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,YACO,KACpCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,QACHH,YAAA,QAAMG,WAAW,OACjC,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,UACDH,YAAA,QAAMG,WAAW,OACnC,UAAa,SAAO,cACEH,YAAA,QAAMG,WAAW,OACvC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,YACCH,YAAA,QAAMG,WAAW,OACrC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,SAAO,SACHH,YAAA,QAAMG,WAAW,OAClC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,oBACe,KAC5CH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,cACGH,YAAA,QAAMG,WAAW,OACvC,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,YACO,KACpCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,cACGH,YAAA,QAAMG,WAAW,OACvC,UAAa,SAAO,SACHH,YAAA,QAAMG,WAAW,OAClC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,gBACKH,YAAA,QAAMG,WAAW,OACzC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,SAAO,iBACKH,YAAA,QAAMG,WAAW,OAC1C,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,SACI,KACjCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,kBACOH,YAAA,QAAMG,WAAW,OAC3C,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,OACE,KAC/BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,QACG,KAChCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,aAAW,kCACwB,KAC1DH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,SAAO,cACEH,YAAA,QAAMG,WAAW,OACvC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,OACE,KAC/BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,YACO,KACpCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,SAAO,YACAH,YAAA,QAAMG,WAAW,OACrC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,MACLH,YAAA,QAAMG,WAAW,OAC/B,UAAa,SAAO,UACFH,YAAA,QAAMG,WAAW,OACnC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,QACHH,YAAA,QAAMG,WAAW,OACjC,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,YACO,KACpCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,MACLH,YAAA,QAAMG,WAAW,OAC/B,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,YACO,KACpCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,MACLH,YAAA,QAAMG,WAAW,OAC/B,UAAa,SAAO,SACHH,YAAA,QAAMG,WAAW,OAClC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,QACHH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,eACU,KACvCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,UACDH,YAAA,QAAMG,WAAW,OACnC,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,SACI,KACjCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,UACDH,YAAA,QAAMG,WAAW,OACnC,UAAa,SAAO,cACEH,YAAA,QAAMG,WAAW,OACvC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,SACI,KACjCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,MACLH,YAAA,QAAMG,WAAW,OAC/B,UAAa,SAAO,YACAH,YAAA,QAAMG,WAAW,OACrC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,QACHH,YAAA,QAAMG,WAAW,OACjC,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,YACO,KACpCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,MACLH,YAAA,QAAMG,WAAW,OAC/B,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,eAE3BH,YAAA,oCACAA,YAAA,MACE,GAAM,kBAAgB,mBAExBA,YAAA,OACE,UAAa,yCACb,gBAAiB,QAChBA,YAAA,QAAMG,WAAW,MAChB,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,aAAW,mCACyB,KAC3DH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,SAAO,cACEH,YAAA,QAAMG,WAAW,OACvC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,YACO,KACpCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,eACU,KACvCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,SAAO,YACAH,YAAA,QAAMG,WAAW,OACrC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,MACLH,YAAA,QAAMG,WAAW,OAC/B,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,eACU,KACvCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,MACLH,YAAA,QAAMG,WAAW,OAC/B,UAAa,SAAO,YACAH,YAAA,QAAMG,WAAW,OACrC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,QACHH,YAAA,QAAMG,WAAW,OACjC,UAAa,SAAO,eACGH,YAAA,QAAMG,WAAW,OACxC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,UACDH,YAAA,QAAMG,WAAW,OACnC,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,eACU,KACvCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,MACLH,YAAA,QAAMG,WAAW,OAC/B,UAAa,SAAO,YACAH,YAAA,QAAMG,WAAW,OACrC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,QACHH,YAAA,QAAMG,WAAW,OACjC,UAAa,SAAO,YACAH,YAAA,QAAMG,WAAW,OACrC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,UACDH,YAAA,QAAMG,WAAW,OACnC,UAAa,SAAO,UACFH,YAAA,QAAMG,WAAW,OACnC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,YACCH,YAAA,QAAMG,WAAW,OACrC,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,eACU,KACvCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,QACHH,YAAA,QAAMG,WAAW,OACjC,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,UACDH,YAAA,QAAMG,WAAW,OACnC,UAAa,SAAO,cACEH,YAAA,QAAMG,WAAW,OACvC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,YACCH,YAAA,QAAMG,WAAW,OACrC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,SAAO,SACHH,YAAA,QAAMG,WAAW,OAClC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,oBACe,KAC5CH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,cACGH,YAAA,QAAMG,WAAW,OACvC,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,eACU,KACvCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,cACGH,YAAA,QAAMG,WAAW,OACvC,UAAa,SAAO,SACHH,YAAA,QAAMG,WAAW,OAClC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,gBACKH,YAAA,QAAMG,WAAW,OACzC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,SAAO,iBACKH,YAAA,QAAMG,WAAW,OAC1C,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,SACI,KACjCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,kBACOH,YAAA,QAAMG,WAAW,OAC3C,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,QACG,KAChCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,QACG,KAChCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,aAAW,6BACmB,KACrDH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,SAAO,cACEH,YAAA,QAAMG,WAAW,OACvC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,OACE,KAC/BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,YACO,KACpCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,SAAO,YACAH,YAAA,QAAMG,WAAW,OACrC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,MACLH,YAAA,QAAMG,WAAW,OAC/B,UAAa,SAAO,UACFH,YAAA,QAAMG,WAAW,OACnC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,QACHH,YAAA,QAAMG,WAAW,OACjC,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,eACU,KACvCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,MACLH,YAAA,QAAMG,WAAW,OAC/B,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,eACU,KACvCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,MACLH,YAAA,QAAMG,WAAW,OAC/B,UAAa,SAAO,SACHH,YAAA,QAAMG,WAAW,OAClC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,QACHH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,mBACc,KAC3CH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,UACDH,YAAA,QAAMG,WAAW,OACnC,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,SACI,KACjCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,UACDH,YAAA,QAAMG,WAAW,OACnC,UAAa,SAAO,cACEH,YAAA,QAAMG,WAAW,OACvC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,SACI,KACjCH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,MACLH,YAAA,QAAMG,WAAW,OAC/B,UAAa,SAAO,YACAH,YAAA,QAAMG,WAAW,OACrC,UAAa,QAAM,MACC,KAC9BH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,QACHH,YAAA,QAAMG,WAAW,OACjC,UAAa,SAAO,QACJH,YAAA,QAAMG,WAAW,OACjC,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,KACNH,YAAA,QAAMG,WAAW,OAC9B,UAAa,QAAM,iBAE3BH,YAAA,0CACAA,YAAA,4DAAuDA,YAAA,cAAYG,WAAW,KAAG,cAA4B,sIAG7GH,YAAA,MACE,GAAM,4BAA0B,4BAElCA,YAAA,8DAAyDA,YAAA,cAAYG,WAAW,KAAG,SAAuB,mBAC1GH,YAAA,OACE,UAAa,yCACb,gBAAiB,QAChBA,YAAA,QAAMG,WAAW,MAChB,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,uDACkD,KAC/EH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,oCAC+B,KAC5DH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,uCACkC,KAC/DH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,4BACuB,KACpDH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,iCAE3BH,YAAA,MACE,GAAM,sBAAoB,sBAE5BA,YAAA,gIAEAA,YAAA,OACE,UAAa,yCACb,gBAAiB,QAChBA,YAAA,QAAMG,WAAW,MAChB,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,aAAW,+CACqC,KACvEH,YAAA,QAAMG,WAAW,OACT,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,yDAE3BH,YAAA,4EAAuEA,YAAA,cAAYG,WAAW,KAAG,eAA6B,uBAC/GH,YAAA,cAAYG,WAAW,KAAG,oDAAkE,aAC7GH,YAAA,cAAYG,WAAW,KAAG,cAA4B,sBAAuBH,YAAA,cAAYG,WAAW,KAAG,0BAAwC,iBAC/IH,YAAA,cAAYG,WAAW,KAAG,eAA6B,uEACrDH,YAAA,uEAAkEA,YAAA,cAAYG,WAAW,KAAG,SAAuB,uGAE5GH,YAAA,cAAYG,WAAW,KAAG,OAAqB,QAASH,YAAA,cAAYG,WAAW,KAAG,QAAsB,mCAC/GH,YAAA,0EACAA,YAAA,MACE,GAAM,eAAa,eAErBA,YAAA,gGACAA,YAAA,OACE,UAAa,yCACb,gBAAiB,QAChBA,YAAA,QAAMG,WAAW,MAChB,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,yBACZH,YAAA,QAAMG,WAAW,OAChB,UAAa,QAAM,0DAG3BH,YAACI,IAAe,CAACC,KAAK,qBAAqBC,KAAK,oBAAoBJ,QAAQ,oBAE5EF,YAAA,SACE,UAAa,2BAAyB,glCA6B3C,IAAAN,UAAAb,OAAAa,IAAAb,OAAAC,aAAAY,KAAAb,OAAAE,UAAAC,eAAAC,KAAAS,EAAA,eAAAb,OAAAK,eAAAQ,EAAA,cAAAP,cAAA,EAAAC,MAAA,CAAAC,KAAA,aAAAC,SAAA,iCAEDI,EAAWa,gBAAiB","file":"component---docs-tutorial-refresher-mdx-81bba2a6cc6987e2c96b.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/tanka/tanka/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nimport TutorialButtons from \"./TutorialButtons\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

      {`Refresher on deploying`}

      \n

      {`Deploying to Kubernetes using kubectl`}

      \n

      {`To understand how Tanka works, it is important to know what steps are required\nfor the task of deploying Grafana and Prometheus to Kubernetes:`}

      \n
        \n
      1. {`Prometheus`}\n
          \n
        • {`A `}{`Deployment`}{` must be created, to run the `}{`prom/prometheus`}{` image`}
        • \n
        • {`Also a `}{`Service`}{` is needed for Grafana to be able to connect port `}{`9090`}{` of\nPrometheus.`}
        • \n
        \n
      2. \n
      3. {`Grafana`}\n
          \n
        • {`Another `}{`Deployment`}{` is required for the Grafana server.`}
        • \n
        • {`To connect to the web interface, we will be using a `}{`Service`}{` of type\n`}{`NodePort`}{`.`}
        • \n
        \n
      4. \n
      \n

      {`Before taking a look how Tanka can help doing so, let's recall how to do it with\nplain `}{`kubectl`}{`.`}

      \n

      {`Writing the yaml`}

      \n

      {`kubectl`}{` expects the resources it should create in `}{`.yaml`}{` format. For Grafana\n...`}

      \n
      {`grafana.yaml:`}
      \n
      {`# Grafana server Deployment`}{`\n`}{`apiVersion`}{`:`}{` `}{`apps/v1`}{`\n`}{`kind`}{`:`}{` `}{`Deployment`}{`\n`}{`metadata`}{`:`}{`\n`}{`  `}{`name`}{`:`}{` `}{`grafana`}{`\n`}{`spec`}{`:`}{`\n`}{`  `}{`selector`}{`:`}{`\n`}{`    `}{`matchLabels`}{`:`}{`\n`}{`      `}{`name`}{`:`}{` `}{`grafana`}{`\n`}{`  `}{`template`}{`:`}{`\n`}{`    `}{`metadata`}{`:`}{`\n`}{`      `}{`labels`}{`:`}{`\n`}{`        `}{`name`}{`:`}{` `}{`grafana`}{`\n`}{`    `}{`spec`}{`:`}{`\n`}{`      `}{`containers`}{`:`}{`\n`}{`        `}{`-`}{` `}{`image`}{`:`}{` `}{`grafana/grafana`}{`\n`}{`          `}{`name`}{`:`}{` `}{`grafana`}{`\n`}{`          `}{`ports`}{`:`}{`\n`}{`            `}{`-`}{` `}{`containerPort`}{`:`}{` `}{`3000`}{`\n`}{`              `}{`name`}{`:`}{` `}{`ui`}{`\n`}{`---`}{`\n`}{`# Grafana UI Service NodePort`}{`\n`}{`apiVersion`}{`:`}{` `}{`v1`}{`\n`}{`kind`}{`:`}{` `}{`Service`}{`\n`}{`metadata`}{`:`}{`\n`}{`  `}{`labels`}{`:`}{`\n`}{`    `}{`name`}{`:`}{` `}{`grafana`}{`\n`}{`  `}{`name`}{`:`}{` `}{`grafana`}{`\n`}{`spec`}{`:`}{`\n`}{`  `}{`ports`}{`:`}{`\n`}{`    `}{`-`}{` `}{`name`}{`:`}{` `}{`grafana-ui`}{`\n`}{`      `}{`port`}{`:`}{` `}{`3000`}{`\n`}{`      `}{`targetPort`}{`:`}{` `}{`3000`}{`\n`}{`  `}{`selector`}{`:`}{`\n`}{`    `}{`name`}{`:`}{` `}{`grafana`}{`\n`}{`  `}{`type`}{`:`}{` `}{`NodePort`}
      \n

      {`... and for Prometheus:`}

      \n
      {`prometheus.yaml`}
      \n
      {`# Prometheus server Deployment`}{`\n`}{`apiVersion`}{`:`}{` `}{`apps/v1`}{`\n`}{`kind`}{`:`}{` `}{`Deployment`}{`\n`}{`metadata`}{`:`}{`\n`}{`  `}{`name`}{`:`}{` `}{`prometheus`}{`\n`}{`spec`}{`:`}{`\n`}{`  `}{`selector`}{`:`}{`\n`}{`    `}{`matchLabels`}{`:`}{`\n`}{`      `}{`name`}{`:`}{` `}{`prometheus`}{`\n`}{`  `}{`template`}{`:`}{`\n`}{`    `}{`metadata`}{`:`}{`\n`}{`      `}{`labels`}{`:`}{`\n`}{`        `}{`name`}{`:`}{` `}{`prometheus`}{`\n`}{`    `}{`spec`}{`:`}{`\n`}{`      `}{`containers`}{`:`}{`\n`}{`        `}{`-`}{` `}{`image`}{`:`}{` `}{`prom/prometheus`}{`\n`}{`          `}{`name`}{`:`}{` `}{`prometheus`}{`\n`}{`          `}{`ports`}{`:`}{`\n`}{`            `}{`-`}{` `}{`containerPort`}{`:`}{` `}{`9090`}{`\n`}{`              `}{`name`}{`:`}{` `}{`api`}{`\n`}{`---`}{`\n`}{`# Prometheus API Service`}{`\n`}{`apiVersion`}{`:`}{` `}{`v1`}{`\n`}{`kind`}{`:`}{` `}{`Service`}{`\n`}{`metadata`}{`:`}{`\n`}{`  `}{`labels`}{`:`}{`\n`}{`    `}{`name`}{`:`}{` `}{`prometheus`}{`\n`}{`  `}{`name`}{`:`}{` `}{`prometheus`}{`\n`}{`spec`}{`:`}{`\n`}{`  `}{`ports`}{`:`}{`\n`}{`    `}{`-`}{` `}{`name`}{`:`}{` `}{`prometheus-api`}{`\n`}{`      `}{`port`}{`:`}{` `}{`9090`}{`\n`}{`      `}{`targetPort`}{`:`}{` `}{`9090`}{`\n`}{`  `}{`selector`}{`:`}{`\n`}{`    `}{`name`}{`:`}{` `}{`prometheus`}
      \n

      {`That's pretty verbose, right?`}

      \n

      {`Even worse, there are labels and matchers (e.g. `}{`prometheus`}{`) that need to be\nexactly the same scattered across the file. It's a nightmare to debug and\nfurthermore harms readability a lot.`}

      \n

      {`Deploying to the cluster`}

      \n

      {`To actually apply those resources, copy them into `}{`.yaml`}{` files and use:`}

      \n
      {`$ kubectl apply -f prometheus.yaml -f grafana.yaml`}{`\n`}{`deployment.apps/grafana created`}{`\n`}{`deployment.apps/prometheus created`}{`\n`}{`service/grafana created`}{`\n`}{`service/prometheus created`}
      \n

      {`Checking it worked`}

      \n

      {`So far so good, but can we tell it actually did what we wanted? Let's test that\nGrafana can connect to Prometheus!`}

      \n
      {`# Temporarily forward Grafana to localhost`}{`\n`}{`kubectl port-forward deployments/grafana 8080:3000`}
      \n

      {`Now go to http://localhost:8080 in your browser and login using `}{`admin:admin`}{`.\nThen navigate to `}{`Connections > Data sources > Add new data source`}{`, choose\n`}{`Prometheus`}{` as type and enter `}{`http://prometheus:9090`}{` as URL. Hit\n`}{`Save & Test`}{` which should yield a big green bar telling you everything is good.`}

      \n

      {`Cool! This worked out well for this small example, but the `}{`.yaml`}{` files are\nhard to read and maintain. Especially when you need to deploy this exact same\nthing in `}{`dev`}{` and `}{`prod`}{` your choices are very limited.`}

      \n

      {`Let's explore how Tanka can help us here in the next section!`}

      \n

      {`Cleaning up`}

      \n

      {`Let's remove everything we created to start fresh with Jsonnet in the next section:`}

      \n
      {`$ kubectl delete -f prometheus.yaml -f grafana.yaml`}
      \n\n \n\n \n
      ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/config/index.html b/pr-preview/pr-1029/config/index.html index 0b3a54a91..bf3002493 100644 --- a/pr-preview/pr-1029/config/index.html +++ b/pr-preview/pr-1029/config/index.html @@ -1,54 +1,52 @@ -Configuration Reference | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      Writing Jsonnet
      Libraries
      Advanced features
      References
      Configuration ReferenceFile formatJsonnet accessDirectory structureEnvironment variablesCommand-line completionDiff strategiesNamespacesFormatting
      Frequently asked questionsKnown issues

      Configuration Reference

      Tanka's behavior can be customized per Environment using a file called spec.json

      File format

      {
      -  // Config format revision. Currently only "v1alpha1"
      -  "apiVersion": "v1alpha1",
      -  // Always "Environment". Reserved for future use
      -  "kind": "Environment",
      -
      -  // Descriptive fields
      -  "metadata": {
      -    // Name of the Environment. Automatically set to the relative
      -    // path from the project root
      -    "name": "<string>",
      -
      -    // Arbitrary key:value string pairs. Not parsed by Tanka
      -    "labels": { "<string>": "<string>" }
      -  },
      -
      -  // Properties influencing Tanka's behavior
      -  "spec": {
      -    // The Kubernetes cluster to use.
      -    // Must be the full URL, e.g. https://cluster.fqdn:6443
      -

      Jsonnet access

      It is possible to access above data from Jsonnet:

      local tk = import "tk";
      -
      -{
      -  // The cluster IP
      -  cluster: tk.env.spec.apiServer,
      -  // The labels of your Environment
      -  labels: tk.env.metadata.labels,
      -}
      \ No newline at end of file + Configuration Reference | Grafana Tanka + + Skip to content

      Configuration Reference

      Tanka’s behavior can be customized per Environment using a file called spec.json

      +

      File format

      +
      {
      // Config format revision. Currently only "v1alpha1"
      "apiVersion": "v1alpha1",
      // Always "Environment". Reserved for future use
      "kind": "Environment",
      +
      // Descriptive fields
      "metadata": {
      // Name of the Environment. Automatically set to the relative
      // path from the project root
      "name": "<string>",
      +
      // Arbitrary key:value string pairs. Not parsed by Tanka
      "labels": { "<string>": "<string>" }
      },
      +
      // Properties influencing Tanka's behavior
      "spec": {
      // The Kubernetes cluster to use.
      // Must be the full URL, e.g. https://cluster.fqdn:6443
      "apiServer": "<url>",
      +
      // The Kubernetes context name(s) to use.
      // This field supports regular expressions and is mutually exclusive with apiServer field.
      "contextNames": ["<string>"],
      +
      // Default namespace for objects that don't explicitely specify one
      "namespace": "<string>" | default = "default",
      +
      // diffStrategy to use. Automatically chosen by default based on
      // the availability of "kubectl diff".
      // - native: uses "kubectl diff". Recommended
      // - validate: uses "kubectl diff --server-side". Safest, but slower than "native"
      // - subset: fallback for k8s versions below 1.13.0
      "diffStrategy": "[native, validate, subset]" | default = "auto",
      +
      // Whether to add a "tanka.dev/environment" label to each created resource.
      // Required for garbage collection ("tk prune").
      "injectLabels": <boolean> | default = false
      }
      }
      +

      Jsonnet access

      +

      It is possible to access above data from Jsonnet:

      +
      local tk = import "tk";
      +
      {
      // The cluster IP
      cluster: tk.env.spec.apiServer,
      // The labels of your Environment
      labels: tk.env.metadata.labels,
      }
      \ No newline at end of file diff --git a/pr-preview/pr-1029/diff-strategy/index.html b/pr-preview/pr-1029/diff-strategy/index.html index 01b9d2fb5..529dcf6e5 100644 --- a/pr-preview/pr-1029/diff-strategy/index.html +++ b/pr-preview/pr-1029/diff-strategy/index.html @@ -1,64 +1,87 @@ -Diff strategies | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      Writing Jsonnet
      Libraries
      Advanced features
      References
      Configuration ReferenceDirectory structureEnvironment variablesCommand-line completionDiff strategiesNativeSubsetExternal diff utilitiesNamespacesFormatting
      Frequently asked questionsKnown issues

      Diff Strategies

      Tanka supports two different ways of computing differences between the local -configuration and the live cluster state: Either native kubectl diff -f - + Diff strategies | Grafana Tanka + + Skip to content

      Diff strategies

      Tanka supports two different ways of computing differences between the local +configuration and the live cluster state: Either native kubectl diff -f - is used, which gives the best possible results, but is only possible for clusters with -server-side diff -support (Kubernetes 1.13+).

      When this is not available, Tanka falls back to subset mode.

      You can specify the diff-strategy to use on the command line as well:

      # native
      -tk diff --diff-strategy=native .
      -
      -# validate: Like native but with a server-side validation
      -tk diff --diff-strategy=validate .
      -
      -# server-side
      -tk diff --diff-strategy=server .
      -
      -# subset
      -tk diff --diff-strategy=subset .

      Native

      The native diff mode is recommended, because it uses kubectl diff underneath, +server-side diff +support (Kubernetes 1.13+).

      +

      When this is not available, Tanka falls back to subset mode.

      +

      You can specify the diff-strategy to use on the command line as well:

      +
      Terminal window
      # native
      tk diff --diff-strategy=native .
      +
      # validate: Like native but with a server-side validation
      tk diff --diff-strategy=validate .
      +
      # server-side
      tk diff --diff-strategy=server .
      +
      # subset
      tk diff --diff-strategy=subset .
      +

      Native

      +

      The native diff mode is recommended, because it uses kubectl diff underneath, which sends the objects to the Kubernetes API server and computes the -differences over there.

      This has the huge benefit that all possible changes by webhooks and other -internal components of Kubernetes can be encountered as well.

      However, this is a fairly new feature and only available on Kubernetes 1.13 or +differences over there.

      +

      This has the huge benefit that all possible changes by webhooks and other +internal components of Kubernetes can be encountered as well.

      +

      However, this is a fairly new feature and only available on Kubernetes 1.13 or later. Only the API server (master nodes) needs to have that -version, worker nodes do not matter.

      There is a -known issue -with kubectl diff, which affects ports configured to use both TCP and UDP.

      Server-side diffs

      There are two additional modes which extend native: validate and server. -While all kubectl diff commands are sent to the API server, these two +version, worker nodes do not matter.

      +

      There is a +known issue +with kubectl diff, which affects ports configured to use both TCP and UDP.

      +

      Server-side diffs

      +

      There are two additional modes which extend native: validate and server. +While all kubectl diff commands are sent to the API server, these two methods take advantage of an additional server-side diff mode (which uses the -kubectl diff --server-side flag, complementing the -server-side apply mode).

      Since a plain server diff often produces cruft, and wouldn't be representative -of a client-side apply, the validate method allows the server-side diff to -check that all models are valid server-side, but still displays the native -diff output to the user.

      Subset

      If native diffing is not supported by your cluster, Tanka provides subset diff -as a fallback method.

      Subset diff only compares fields present in the local configuration and +kubectl diff --server-side flag, complementing the +server-side apply mode).

      +

      Since a plain server diff often produces cruft, and wouldn’t be representative +of a client-side apply, the validate method allows the server-side diff to +check that all models are valid server-side, but still displays the native +diff output to the user.

      +

      Subset

      +

      If native diffing is not supported by your cluster, Tanka provides subset diff +as a fallback method.

      +

      Subset diff only compares fields present in the local configuration and ignores all other fields. When you remove a field locally, you will see no -differences.

      This is required, because Kubernetes adds dynamic fields to the state during +differences.

      +

      This is required, because Kubernetes adds dynamic fields to the state during runtime, which we cannot know of on the client side. To produce a somewhat -usable output, we can effectively only compare what we already know about.

      If this is a problem for you, consider switching to native mode.

      External diff utilities

      You can use external diff utilities by setting the environment variable -KUBECTL_EXTERNAL_DIFF. If you want to use a GUI or interactive diff utility -you must also set KUBECTL_INTERACTIVE_DIFF=1 to prevent Tanka from capturing -stdout.

      \ No newline at end of file +usable output, we can effectively only compare what we already know about.

      +

      If this is a problem for you, consider switching to native mode.

      +

      External diff utilities

      +

      You can use external diff utilities by setting the environment variable +KUBECTL_EXTERNAL_DIFF. If you want to use a GUI or interactive diff utility +you must also set KUBECTL_INTERACTIVE_DIFF=1 to prevent Tanka from capturing +stdout.

      \ No newline at end of file diff --git a/pr-preview/pr-1029/directory-structure/index.html b/pr-preview/pr-1029/directory-structure/index.html index 31b7cdd61..2b7aff074 100644 --- a/pr-preview/pr-1029/directory-structure/index.html +++ b/pr-preview/pr-1029/directory-structure/index.html @@ -1,65 +1,115 @@ -Directory structure | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      Writing Jsonnet
      Libraries
      Advanced features
      References
      Configuration ReferenceDirectory structureEnvironmentsRoot and BaseLibrariesEnvironment variablesCommand-line completionDiff strategiesNamespacesFormatting
      Frequently asked questionsKnown issues

      Directory structure

      Tanka uses the following directories and special files:

      . # the project (<rootDir>)
      -├── environments # code defining clusters
      -│   └── default # <baseDir>
      -│       ├── main.jsonnet # starting point of the Jsonnet compilation
      -│       └── spec.json # environment's config
      -├── jsonnetfile.json # direct dependencies
      -├── jsonnetfile.lock.json # all dependencies with exact versions
      -├── lib # libraries for this project only
      -│   └── k.libsonnet # alias file for vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/main.libsonnet
      -└── vendor # external libraries installed using jb
      -    ├── github.com
      -    │   ├── grafana
      -    │   │   └── jsonnet-libs
      -    │   │       └── ksonnet-util # Grafana Labs' usability extensions to k.libsonnet
      -    │   │           ├── ...
      -    │   │           └── kausal.libsonnet
      -    │   └── jsonnet-libs
      -    │       └── k8s-libsonnet
      -    │           └── 1.21 # kubernetes library
      -    │               ├── ...
      -

      Environments

      Tanka organizes configuration in environments. For the rationale behind this, -see the section in the tutorial.

      An environment consists of at least two files:

      spec.json

      This file configures environment properties such as cluster connection -(spec.apiServer), default namespace (spec.namespace), etc.

      For the full set of options, see the Golang source -code.

      main.jsonnet

      Like other programming languages, Jsonnet needs an entrypoint into the -evaluation, something to begin with. main.jsonnet is exactly this: The very + Directory structure | Grafana Tanka + + Skip to content

      Directory structure

      Tanka uses the following directories and special files:

      +
      • Directory. the project (<rootDir>) +
        • Directoryenvironments +
          • Directorydefault default environment +
            • main.jsonnet main file
            • spec.json environment’s config
        • jsonnetfile.json direct dependencies
        • jsonnetfile.lock.json all dependencies with exact versions
        • Directorylib libraries for this project only +
          • k.libsonnet alias file for vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/main.libsonnet
        • Directoryvendor external libraries installed using jb +
          • Directorygithub.com +
            • Directorygrafana +
              • Directoryjsonnet-libs +
                • Directoryksonnet-util Grafana Labs’ usability extensions to k.libsonnet +
                  • kausal.libsonnet
            • Directoryjsonnet-libs +
              • Directoryk8s-libsonnet +
                • Directory1.21 kubernetes library +
                  • main.libsonnet
          • Directory1.21/ -> github.com/jsonnet-libs/k8s-libsonnet/1.21
          • Directoryksonnet-util/ -> github.com/grafana/jsonnet-libs/ksonnet-util
      +

      Environments

      +

      Tanka organizes configuration in environments. For the rationale behind this, +see the section in the tutorial.

      +

      An environment consists of at least two files:

      +

      spec.json

      +

      This file configures environment properties such as cluster connection +(spec.apiServer), default namespace (spec.namespace), etc.

      +

      For the full set of options, see the Golang source +code.

      +

      main.jsonnet

      +

      Like other programming languages, Jsonnet needs an entrypoint into the +evaluation, something to begin with. main.jsonnet is exactly this: The very first file being evaluated, importing or directly specifying everything required -for this specific environment.

      Root and Base

      When talking about directories, Tanka uses the following terms:

      TermDescriptionIdentifier file
      rootDirThe root of your projectjsonnetfile.json or tkrc.yaml
      baseDirThe directory of the current environmentmain.jsonnet

      Regardless what subdirectory of the project you are in, Tanka will always be +for this specific environment.

      +

      Root and Base

      +

      When talking about directories, Tanka uses the following terms:

      + + + + + + + + + + + + + + + + + + + + +
      TermDescriptionIdentifier file
      rootDirThe root of your projectjsonnetfile.json or tkrc.yaml
      baseDirThe directory of the current environmentmain.jsonnet
      +

      Regardless what subdirectory of the project you are in, Tanka will always be able to identify both directories, by searching for the identifier files in the parent directories.
      -Tanka needs these for correctly setting up the import paths.

      This is similar to how git always works, by looking for the .git directory.

      Libraries

      Tanka relies heavily on code-reuse, so libraries are a natural thing. Roughly -spoken, they can be imported from two paths:

      • /lib: Project local libraries
      • /vendor External libraries

      For more details consider the import paths.

      jsonnetfile.json and the lock

      jb records all external packages installed in a file called -jsonnetfile.json. This file is the source of truth about what should be -included in vendor/. However, it should only include what is really directly -required, all recursive dependencies will be handled just fine.

      jsonnetfile.lock.json is generated on every run of jsonnet-bundler, including -a list of packages that must be included in vendor/, along with the exact -version and a sha256 hash of the package contents.

      Both files should be checked into source control: The jsonnetfile.json -specifies what you need and the jsonnetfile.lock.json is important to make -sure that subsequent jb install invocations always do the exact same thing.

      Tip: The vendor/ directory can be safely added to .gitignore to keep your -repository size down, as long as jsonnetfile.lock.json is checked in.

      \ No newline at end of file +Tanka needs these for correctly setting up the import paths.

      +

      This is similar to how git always works, by looking for the .git directory.

      +

      Libraries

      +

      Tanka relies heavily on code-reuse, so libraries are a natural thing. Roughly +spoken, they can be imported from two paths:

      +
        +
      • /lib: Project local libraries
      • +
      • /vendor External libraries
      • +
      +

      For more details consider the import paths.

      +

      jsonnetfile.json and the lock

      +

      jb records all external packages installed in a file called +jsonnetfile.json. This file is the source of truth about what should be +included in vendor/. However, it should only include what is really directly +required, all recursive dependencies will be handled just fine.

      +

      jsonnetfile.lock.json is generated on every run of jsonnet-bundler, including +a list of packages that must be included in vendor/, along with the exact +version and a sha256 hash of the package contents.

      +

      Both files should be checked into source control: The jsonnetfile.json +specifies what you need and the jsonnetfile.lock.json is important to make +sure that subsequent jb install invocations always do the exact same thing.

      +
      \ No newline at end of file diff --git a/pr-preview/pr-1029/env-vars/index.html b/pr-preview/pr-1029/env-vars/index.html index 813fb5c9b..edf5ec4d5 100644 --- a/pr-preview/pr-1029/env-vars/index.html +++ b/pr-preview/pr-1029/env-vars/index.html @@ -1,7 +1,56 @@ -Environment variables | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      Writing Jsonnet
      Libraries
      Advanced features
      References
      Frequently asked questionsKnown issues

      Environment Variables

      TANKA_JB_PATH

      Description: Path to the jb tool executable
      -Default: $PATH/jb

      TANKA_KUBECTL_PATH

      Description: Path to the kubectl tool executable
      -Default: $PATH/kubectl

      TANKA_KUBECTL_TRACE

      Description: Print all calls to kubectl
      -Default: false

      TANKA_HELM_PATH

      Description: Path to the helm executable
      -Default: $PATH/helm

      TANKA_KUSTOMIZE_PATH

      Description: Path to the kustomize executable
      -Default: $PATH/kustomize

      PAGER

      Description: Pager to use when displaying output. Set to an empty string to disable paging. -Default: less --RAW-CONTROL-CHARS --quit-if-one-screen --no-init

      \ No newline at end of file + Environment variables | Grafana Tanka + + Skip to content

      Environment variables

      TANKA_JB_PATH

      +

      Description: Path to the jb tool executable
      +Default: $PATH/jb

      +

      TANKA_KUBECTL_PATH

      +

      Description: Path to the kubectl tool executable
      +Default: $PATH/kubectl

      +

      TANKA_KUBECTL_TRACE

      +

      Description: Print all calls to kubectl
      +Default: false

      +

      TANKA_HELM_PATH

      +

      Description: Path to the helm executable
      +Default: $PATH/helm

      +

      TANKA_KUSTOMIZE_PATH

      +

      Description: Path to the kustomize executable
      +Default: $PATH/kustomize

      +

      PAGER

      +

      Description: Pager to use when displaying output. Set to an empty string to disable paging. +Default: less --RAW-CONTROL-CHARS --quit-if-one-screen --no-init

      \ No newline at end of file diff --git a/pr-preview/pr-1029/exporting/index.html b/pr-preview/pr-1029/exporting/index.html index 323428d69..a39d9520d 100644 --- a/pr-preview/pr-1029/exporting/index.html +++ b/pr-preview/pr-1029/exporting/index.html @@ -1,56 +1,112 @@ -Exporting as YAML | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      Writing Jsonnet
      Libraries
      Advanced features
      Garbage collectionHelm supportKustomize supportOutput filteringExporting as YAMLFilenamesMultiple environmentsPerformance featuresInline environmentsServer-Side Apply
      References
      Frequently asked questionsKnown issues

      Exporting as YAML

      Tanka provides you with a day-to-day workflow for working with Kubernetes clusters:

      • tk show for quickly checking the YAML representation looks good
      • tk diff to ensure your changes will behave like they should
      • tk apply makes it happen

      However sometimes it can be required to integrate with other tooling that does -only support .yaml files.

      For that case, tk export can be used:

      #           <outputDir> <environment>
      -$ tk export promtail/   environments/promtail

      Note: The arguments flipped in v0.14.0, the <outputDir> comes first now.

      This will create a separate .yaml file for each Kubernetes resource included in your Jsonnet.

      Filenames

      Tanka by default uses the following pattern:

      ${apiVersion}.${kind}-${metadata.name}.yaml
      -
      -# examples:
      -apps-v1.Deployment-distributor.yaml
      -v1.ConfigMap-loki.yaml
      -v1.Service-ingester.yaml

      If that does not fit your need, you can provide your own pattern using the --format flag:

      tk export promtail environments/promtail --format='{{.metadata.labels.app}}-{{.metadata.name}}-{{.kind}}'

      The syntax is Go text/template. See https://pkg.go.dev/text/template -for reference.

      This would include the label named app, the name and kind of the resource:

      loki-distributor-Deployment
      -loki-loki-ConfigMap
      -loki-ingester-Service

      You can optionally use the template function lower for lower-casing fields, e.g. in the above example

      ... --format='{{.metadata.labels.app}}-{{.metadata.name}}-{{.kind | lower}}'

      would yield

      loki-distributor-deployment

      etc.

      You can also use a different file extension by providing --extension='yml', for example.

      Multiple environments

      Tanka can also export multiple inline environments, as showcased in Use case: consistent inline + Exporting as YAML | Grafana Tanka + + Skip to content

      Exporting as YAML

      Tanka provides you with a day-to-day workflow for working with Kubernetes clusters:

      +
        +
      • tk show for quickly checking the YAML representation looks good
      • +
      • tk diff to ensure your changes will behave like they should
      • +
      • tk apply makes it happen
      • +
      +

      However sometimes it can be required to integrate with other tooling that does +only support .yaml files.

      +

      For that case, tk export can be used:

      +
      Terminal window
      # <outputDir> <environment>
      tk export promtail/ environments/promtail
      + +

      This will create a separate .yaml file for each Kubernetes resource included in your Jsonnet.

      +

      Filenames

      +

      Tanka by default uses the following pattern:

      +
      Terminal window
      ${apiVersion}.${kind}-${metadata.name}.yaml
      +
      # examples:
      apps-v1.Deployment-distributor.yaml
      v1.ConfigMap-loki.yaml
      v1.Service-ingester.yaml
      +

      If that does not fit your need, you can provide your own pattern using the --format flag:

      +
      Terminal window
      tk export promtail environments/promtail --format='{{.metadata.labels.app}}-{{.metadata.name}}-{{.kind}}'
      +
      +

      The syntax is Go text/template. See https://pkg.go.dev/text/template +for reference.

      +
      +

      This would include the label named app, the name and kind of the resource:

      +
      loki-distributor-Deployment
      loki-loki-ConfigMap
      loki-ingester-Service
      +

      You can optionally use the template function lower for lower-casing fields, e.g. in the above example

      +
      Terminal window
      ... --format='{{.metadata.labels.app}}-{{.metadata.name}}-{{.kind | lower}}'
      +

      would yield

      +
      loki-distributor-deployment
      +

      etc.

      +

      You can also use a different file extension by providing --extension='yml', for example.

      +

      Multiple environments

      +

      Tanka can also export multiple inline environments, as showcased in Use case: consistent inline environments. This follows the same -principles as describe before with the addition that you can also refer to Environment specific data through the env -keyword.

      For example an export might refer to data from the Environment spec:

      # Format based on environment {{env.<...>}}
      -$ tk export exportDir environments/dev/ \
      -  --format '{{env.metadata.labels.cluster}}/{{env.spec.namespace}}//{{.kind}}-{{.metadata.name}}'

      Even more advanced use cases allow you to export multiple environments in a single execution:

      # Export multiple environments
      -$ tk export exportDir environments/dev/ environments/qa/
      -# Recursive export
      -$ tk export exportDir environments/ --recursive
      -# Recursive export with labelSelector
      -$ tk export exportDir environments/ -r -l team=infra

      Performance features

      When exporting a large amount of environments, jsonnet evaluation can become a bottleneck. To speed up the process, Tanka provides a few optional features.

      Partial export (in a GitOps context)

      Given multiple environments, one may want to only export the environments that were modified since the last export. This is enabled by passing both the --merge-strategy=replace-envs flags.

      When these flags are passed, Tanka will:

      1. Delete the manifests that were previously exported by the environments that are being exported. This is done by looking at the manifest.json file that is generated by Tanka when exporting. The related entries are also removed from the manifest.json file.
      2. Generate the manifests for the targeted environments into the output directory.
      3. Add in the new manifests entries into the manifest.json file and re-export it.

      Finding out which environments to export

      Tanka provides the tk tool importers command to figure out which main.jsonnet need to be re-exported based on what files were modified in a workspace.

      If, for example, the lib/my-lib/main.libsonnet file was modified, you could run the command like this to find which files to export:

      # Find out which envs to re-export
      -$ tk tool importers lib/my-lib/main.libsonnet
      -my-repo-path/jsonnet/environments/my-env/main.jsonnet
      -
      -# Re-export the envs
      -$ tk export myoutputdir my-repo-path/jsonnet/environments/my-env/main.jsonnet --merge-strategy=replace-envs

      Note that deleted environments need special consideration when doing this. -The tk tool importers utility only works with existing files so deleting an environment will result in stale manifest.json entries and moving an environment will result in manifest conflicts. -In order to correctly handle deleted environments, they need to be passed to the export command:

      $ tk export myoutputdir my-repo-path/jsonnet/environments/my-new-env-path/main.jsonnet --merge-strategy=replace-envs \
      -  --merge-deleted-envs my-repo-path/jsonnet/environments/my-old-env-path/main.jsonnet \
      -  --merge-deleted-envs my-repo-path/jsonnet/environments/other-deleted-env-path/main.jsonnet

      Using a memory ballast

      Read this blog post for more information about memory ballasts.

      For large environments that load lots of data into memory on evaluation, a memory ballast can dramatically improve performance. This feature is exposed through the --mem-ballast-size-bytes flag on the export command.

      Anecdotally (Grafana Labs), environments that took around a minute to load were able to load in around 45 secs with a ballast of 5GB (--mem-ballast-size-bytes=5368709120). Decreasing the ballast size resulted in negative impact on performance, and increasing it more did not result in any noticeable impact.

      Caching

      Tanka can also cache the results of the export. This is useful if you often export the same files and want to avoid recomputing them. The cache key is calculated from the main file and all of its transitive imports, so any change to any file possibly used in an environment will invalidate the cache.

      This is configured by two flags:

      • --cache-path: The local filesystem path where the cache will be stored. The cache is a flat directory of json files (one per environment).
      • --cache-envs: If exporting multiple environments, this flag can be used to specify, with regexes, which environments to cache. If not specified, all environments are cached.

      Notes:

      • Using the cache might be slower than evaluating jsonnet directy. It is only recommended for environments that are very CPU intensive to evaluate.
      • To use object storage, you can point the --cache-path to a FUSE mount, such as s3fs
      \ No newline at end of file +principles as describe before with the addition that you can also refer to Environment specific data through the env +keyword.

      +

      For example an export might refer to data from the Environment spec:

      +
      Terminal window
      # Format based on environment {{env.<...>}}
      tk export exportDir environments/dev/ \
      --format '{{env.metadata.labels.cluster}}/{{env.spec.namespace}}//{{.kind}}-{{.metadata.name}}'
      +

      Even more advanced use cases allow you to export multiple environments in a single execution:

      +
      Terminal window
      # Export multiple environments
      tk export exportDir environments/dev/ environments/qa/
      # Recursive export
      tk export exportDir environments/ --recursive
      # Recursive export with labelSelector
      tk export exportDir environments/ -r -l team=infra
      +

      Performance features

      +

      When exporting a large amount of environments, jsonnet evaluation can become a bottleneck. To speed up the process, Tanka provides a few optional features.

      +

      Partial export (in a GitOps context)

      +

      Given multiple environments, one may want to only export the environments that were modified since the last export. This is enabled by passing both the --merge-strategy=replace-envs flags.

      +

      When these flags are passed, Tanka will:

      +
        +
      1. Delete the manifests that were previously exported by the environments that are being exported. This is done by looking at the manifest.json file that is generated by Tanka when exporting. The related entries are also removed from the manifest.json file.
      2. +
      3. Generate the manifests for the targeted environments into the output directory.
      4. +
      5. Add in the new manifests entries into the manifest.json file and re-export it.
      6. +
      +

      Finding out which environments to export

      +

      Tanka provides the tk tool importers command to figure out which main.jsonnet need to be re-exported based on what files were modified in a workspace.

      +

      If, for example, the lib/my-lib/main.libsonnet file was modified, you could run the command like this to find which files to export:

      +
      Terminal window
      # Find out which envs to re-export
      tk tool importers lib/my-lib/main.libsonnet
      > my-repo-path/jsonnet/environments/my-env/main.jsonnet
      +
      # Re-export the envs
      tk export myoutputdir my-repo-path/jsonnet/environments/my-env/main.jsonnet --merge-strategy=replace-envs
      +

      Note that deleted environments need special consideration when doing this. +The tk tool importers utility only works with existing files so deleting an environment will result in stale manifest.json entries and moving an environment will result in manifest conflicts. +In order to correctly handle deleted environments, they need to be passed to the export command:

      +
      Terminal window
      tk export myoutputdir my-repo-path/jsonnet/environments/my-new-env-path/main.jsonnet --merge-strategy=replace-envs \
      --merge-deleted-envs my-repo-path/jsonnet/environments/my-old-env-path/main.jsonnet \
      --merge-deleted-envs my-repo-path/jsonnet/environments/other-deleted-env-path/main.jsonnet
      +

      Using a memory ballast

      +

      Read this blog post for more information about memory ballasts.

      +

      For large environments that load lots of data into memory on evaluation, a memory ballast can dramatically improve performance. This feature is exposed through the --mem-ballast-size-bytes flag on the export command.

      +

      Anecdotally (Grafana Labs), environments that took around a minute to load were able to load in around 45 secs with a ballast of 5GB (--mem-ballast-size-bytes=5368709120). Decreasing the ballast size resulted in negative impact on performance, and increasing it more did not result in any noticeable impact.

      +

      Caching

      +

      Tanka can also cache the results of the export. This is useful if you often export the same files and want to avoid recomputing them. The cache key is calculated from the main file and all of its transitive imports, so any change to any file possibly used in an environment will invalidate the cache.

      +

      This is configured by two flags:

      +
        +
      • --cache-path: The local filesystem path where the cache will be stored. The cache is a flat directory of json files (one per environment).
      • +
      • --cache-envs: If exporting multiple environments, this flag can be used to specify, with regexes, which environments to cache. If not specified, all environments are cached.
      • +
      +

      Notes:

      +
        +
      • Using the cache might be slower than evaluating jsonnet directy. It is only recommended for environments that are very CPU intensive to evaluate.
      • +
      • To use object storage, you can point the --cache-path to a FUSE mount, such as s3fs
      • +
      \ No newline at end of file diff --git a/pr-preview/pr-1029/f0e45107-91cefa4606c78384043e.js b/pr-preview/pr-1029/f0e45107-91cefa4606c78384043e.js deleted file mode 100644 index fafdfc58c..000000000 --- a/pr-preview/pr-1029/f0e45107-91cefa4606c78384043e.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{p7SW:function(t,e,i){"use strict";i.d(e,"a",(function(){return ri}));i("U3f4");var s=i("pNPk"),r=i.n(s),n=i("2EcY"),a={3:"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile",5:"class enum extends super const export import",6:"enum",strict:"implements interface let package private protected public static yield",strictBind:"eval arguments"},o="break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this",p={5:o,6:o+" const class extends export import super"},h=/^in(stanceof)?$/,c="ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙՠ-ֈא-תׯ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࡠ-ࡪࢠ-ࢴࢶ-ࢽऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱৼਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౠౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡸᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᲀ-ᲈᲐ-ᲺᲽ-Ჿᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕ℘-ℝℤΩℨK-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々-〇〡-〩〱-〵〸-〼ぁ-ゖ゛-ゟァ-ヺー-ヿㄅ-ㄯㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿯ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞹꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꣾꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭥꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ",l="‌‍·̀-ͯ·҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-٩ٰۖ-ۜ۟-۪ۤۧۨ-ۭ۰-۹ܑܰ-݊ަ-ް߀-߉߫-߽߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛࣓-ࣣ࣡-ःऺ-़ा-ॏ॑-ॗॢॣ०-९ঁ-ঃ়া-ৄেৈো-্ৗৢৣ০-৯৾ਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑ੦-ੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣ૦-૯ૺ-૿ଁ-ଃ଼ା-ୄେୈୋ-୍ୖୗୢୣ୦-୯ஂா-ூெ-ைொ-்ௗ௦-௯ఀ-ఄా-ౄె-ైొ-్ౕౖౢౣ౦-౯ಁ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣ೦-೯ഀ-ഃ഻഼ാ-ൄെ-ൈൊ-്ൗൢൣ൦-൯ංඃ්ා-ුූෘ-ෟ෦-෯ෲෳัิ-ฺ็-๎๐-๙ັິ-ູົຼ່-ໍ໐-໙༘༙༠-༩༹༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှ၀-၉ၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏ-ႝ፝-፟፩-፱ᜒ-᜔ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝០-៩᠋-᠍᠐-᠙ᢩᤠ-ᤫᤰ-᤻᥆-᥏᧐-᧚ᨗ-ᨛᩕ-ᩞ᩠-᩿᩼-᪉᪐-᪙᪰-᪽ᬀ-ᬄ᬴-᭄᭐-᭙᭫-᭳ᮀ-ᮂᮡ-ᮭ᮰-᮹᯦-᯳ᰤ-᰷᱀-᱉᱐-᱙᳐-᳔᳒-᳨᳭ᳲ-᳴᳷-᳹᷀-᷹᷻-᷿‿⁀⁔⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯꘠-꘩꙯ꙴ-꙽ꚞꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧꢀꢁꢴ-ꣅ꣐-꣙꣠-꣱ꣿ-꤉ꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀꧐-꧙ꧥ꧰-꧹ꨩ-ꨶꩃꩌꩍ꩐-꩙ꩻ-ꩽꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭꯰-꯹ﬞ︀-️︠-︯︳︴﹍-﹏0-9_",u=new RegExp("["+c+"]"),d=new RegExp("["+c+l+"]");c=l=null;var f=[0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,477,28,11,0,9,21,190,52,76,44,33,24,27,35,30,0,12,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,54,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,86,26,230,43,117,63,32,0,257,0,11,39,8,0,22,0,12,39,3,3,20,0,35,56,264,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,270,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,689,63,129,68,12,0,67,12,65,1,31,6129,15,754,9486,286,82,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,4149,196,60,67,1213,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,3,5761,15,7472,3104,541],m=[509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,525,10,176,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,4,9,83,11,7,0,161,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,243,14,166,9,280,9,41,6,2,3,9,0,10,10,47,15,406,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,19306,9,135,4,60,6,26,9,1016,45,17,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,2214,6,110,6,6,9,792487,239];function y(t,e){for(var i=65536,s=0;st)return!1;if((i+=e[s+1])>=t)return!0}}function g(t,e){return t<65?36===t:t<91||(t<97?95===t:t<123||(t<=65535?t>=170&&u.test(String.fromCharCode(t)):!1!==e&&y(t,f)))}function v(t,e){return t<48?36===t:t<58||!(t<65)&&(t<91||(t<97?95===t:t<123||(t<=65535?t>=170&&d.test(String.fromCharCode(t)):!1!==e&&(y(t,f)||y(t,m)))))}var x=function(t,e){void 0===e&&(e={}),this.label=t,this.keyword=e.keyword,this.beforeExpr=!!e.beforeExpr,this.startsExpr=!!e.startsExpr,this.isLoop=!!e.isLoop,this.isAssign=!!e.isAssign,this.prefix=!!e.prefix,this.postfix=!!e.postfix,this.binop=e.binop||null,this.updateContext=null};function b(t,e){return new x(t,{beforeExpr:!0,binop:e})}var _={beforeExpr:!0},k={startsExpr:!0},S={};function w(t,e){return void 0===e&&(e={}),e.keyword=t,S[t]=new x(t,e)}var E={num:new x("num",k),regexp:new x("regexp",k),string:new x("string",k),name:new x("name",k),eof:new x("eof"),bracketL:new x("[",{beforeExpr:!0,startsExpr:!0}),bracketR:new x("]"),braceL:new x("{",{beforeExpr:!0,startsExpr:!0}),braceR:new x("}"),parenL:new x("(",{beforeExpr:!0,startsExpr:!0}),parenR:new x(")"),comma:new x(",",_),semi:new x(";",_),colon:new x(":",_),dot:new x("."),question:new x("?",_),arrow:new x("=>",_),template:new x("template"),invalidTemplate:new x("invalidTemplate"),ellipsis:new x("...",_),backQuote:new x("`",k),dollarBraceL:new x("${",{beforeExpr:!0,startsExpr:!0}),eq:new x("=",{beforeExpr:!0,isAssign:!0}),assign:new x("_=",{beforeExpr:!0,isAssign:!0}),incDec:new x("++/--",{prefix:!0,postfix:!0,startsExpr:!0}),prefix:new x("!/~",{beforeExpr:!0,prefix:!0,startsExpr:!0}),logicalOR:b("||",1),logicalAND:b("&&",2),bitwiseOR:b("|",3),bitwiseXOR:b("^",4),bitwiseAND:b("&",5),equality:b("==/!=/===/!==",6),relational:b("/<=/>=",7),bitShift:b("<>/>>>",8),plusMin:new x("+/-",{beforeExpr:!0,binop:9,prefix:!0,startsExpr:!0}),modulo:b("%",10),star:b("*",10),slash:b("/",10),starstar:new x("**",{beforeExpr:!0}),_break:w("break"),_case:w("case",_),_catch:w("catch"),_continue:w("continue"),_debugger:w("debugger"),_default:w("default",_),_do:w("do",{isLoop:!0,beforeExpr:!0}),_else:w("else",_),_finally:w("finally"),_for:w("for",{isLoop:!0}),_function:w("function",k),_if:w("if"),_return:w("return",_),_switch:w("switch"),_throw:w("throw",_),_try:w("try"),_var:w("var"),_const:w("const"),_while:w("while",{isLoop:!0}),_with:w("with"),_new:w("new",{beforeExpr:!0,startsExpr:!0}),_this:w("this",k),_super:w("super",k),_class:w("class",k),_extends:w("extends",_),_export:w("export"),_import:w("import"),_null:w("null",k),_true:w("true",k),_false:w("false",k),_in:w("in",{beforeExpr:!0,binop:7}),_instanceof:w("instanceof",{beforeExpr:!0,binop:7}),_typeof:w("typeof",{beforeExpr:!0,prefix:!0,startsExpr:!0}),_void:w("void",{beforeExpr:!0,prefix:!0,startsExpr:!0}),_delete:w("delete",{beforeExpr:!0,prefix:!0,startsExpr:!0})},A=/\r\n?|\n|\u2028|\u2029/,C=new RegExp(A.source,"g");function I(t,e){return 10===t||13===t||!e&&(8232===t||8233===t)}var L=/[\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff]/,P=/(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g,N=Object.prototype,T=N.hasOwnProperty,R=N.toString;function O(t,e){return T.call(t,e)}var j=Array.isArray||function(t){return"[object Array]"===R.call(t)},V=function(t,e){this.line=t,this.column=e};V.prototype.offset=function(t){return new V(this.line,this.column+t)};var D=function(t,e,i){this.start=e,this.end=i,null!==t.sourceFile&&(this.source=t.sourceFile)};function F(t,e){for(var i=1,s=0;;){C.lastIndex=s;var r=C.exec(t);if(!(r&&r.index=2015&&(e.ecmaVersion-=2009),null==e.allowReserved&&(e.allowReserved=e.ecmaVersion<5),j(e.onToken)){var s=e.onToken;e.onToken=function(t){return s.push(t)}}return j(e.onComment)&&(e.onComment=function(t,e){return function(i,s,r,n,a,o){var p={type:i?"Block":"Line",value:s,start:r,end:n};t.locations&&(p.loc=new D(this,a,o)),t.ranges&&(p.range=[r,n]),e.push(p)}}(e,e.onComment)),e}function U(t,e){return 2|(t?4:0)|(e?8:0)}function q(t){return new RegExp("^(?:"+t.replace(/ /g,"|")+")$")}var X=function(t,e,i){this.options=t=M(t),this.sourceFile=t.sourceFile,this.keywords=q(p[t.ecmaVersion>=6?6:5]);var s="";if(!t.allowReserved){for(var r=t.ecmaVersion;!(s=a[r]);r--);"module"===t.sourceType&&(s+=" await")}this.reservedWords=q(s);var n=(s?s+" ":"")+a.strict;this.reservedWordsStrict=q(n),this.reservedWordsStrictBind=q(n+" "+a.strictBind),this.input=String(e),this.containsEsc=!1,i?(this.pos=i,this.lineStart=this.input.lastIndexOf("\n",i-1)+1,this.curLine=this.input.slice(0,this.lineStart).split(A).length):(this.pos=this.lineStart=0,this.curLine=1),this.type=E.eof,this.value=null,this.start=this.end=this.pos,this.startLoc=this.endLoc=this.curPosition(),this.lastTokEndLoc=this.lastTokStartLoc=null,this.lastTokStart=this.lastTokEnd=this.pos,this.context=this.initialContext(),this.exprAllowed=!0,this.inModule="module"===t.sourceType,this.strict=this.inModule||this.strictDirective(this.pos),this.potentialArrowAt=-1,this.yieldPos=this.awaitPos=0,this.labels=[],0===this.pos&&t.allowHashBang&&"#!"===this.input.slice(0,2)&&this.skipLineComment(2),this.scopeStack=[],this.enterScope(1),this.regexpState=null},J={inFunction:{configurable:!0},inGenerator:{configurable:!0},inAsync:{configurable:!0}};X.prototype.parse=function(){var t=this.options.program||this.startNode();return this.nextToken(),this.parseTopLevel(t)},J.inFunction.get=function(){return(2&this.currentVarScope().flags)>0},J.inGenerator.get=function(){return(8&this.currentVarScope().flags)>0},J.inAsync.get=function(){return(4&this.currentVarScope().flags)>0},X.extend=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];for(var i=this,s=0;s-1&&this.raiseRecoverable(t.trailingComma,"Comma is not permitted after the rest element");var i=e?t.parenthesizedAssign:t.parenthesizedBind;i>-1&&this.raiseRecoverable(i,"Parenthesized pattern")}},W.checkExpressionErrors=function(t,e){if(!t)return!1;var i=t.shorthandAssign,s=t.doubleProto;if(!e)return i>=0||s>=0;i>=0&&this.raise(i,"Shorthand property assignments are valid only in destructuring patterns"),s>=0&&this.raiseRecoverable(s,"Redefinition of __proto__ property")},W.checkYieldAwaitInDefaultParams=function(){this.yieldPos&&(!this.awaitPos||this.yieldPos=6&&(t.sourceType=this.options.sourceType),this.finishNode(t,"Program")};var Q={kind:"loop"},K={kind:"switch"};G.isLet=function(){if(this.options.ecmaVersion<6||!this.isContextual("let"))return!1;P.lastIndex=this.pos;var t=P.exec(this.input),e=this.pos+t[0].length,i=this.input.charCodeAt(e);if(91===i||123===i)return!0;if(g(i,!0)){for(var s=e+1;v(this.input.charCodeAt(s),!0);)++s;var r=this.input.slice(e,s);if(!h.test(r))return!0}return!1},G.isAsyncFunction=function(){if(this.options.ecmaVersion<8||!this.isContextual("async"))return!1;P.lastIndex=this.pos;var t=P.exec(this.input),e=this.pos+t[0].length;return!(A.test(this.input.slice(this.pos,e))||"function"!==this.input.slice(e,e+8)||e+8!==this.input.length&&v(this.input.charAt(e+8)))},G.parseStatement=function(t,e,i){var s,r=this.type,n=this.startNode();switch(this.isLet()&&(r=E._var,s="let"),r){case E._break:case E._continue:return this.parseBreakContinueStatement(n,r.keyword);case E._debugger:return this.parseDebuggerStatement(n);case E._do:return this.parseDoStatement(n);case E._for:return this.parseForStatement(n);case E._function:return t&&(this.strict||"if"!==t)&&this.options.ecmaVersion>=6&&this.unexpected(),this.parseFunctionStatement(n,!1,!t);case E._class:return t&&this.unexpected(),this.parseClass(n,!0);case E._if:return this.parseIfStatement(n);case E._return:return this.parseReturnStatement(n);case E._switch:return this.parseSwitchStatement(n);case E._throw:return this.parseThrowStatement(n);case E._try:return this.parseTryStatement(n);case E._const:case E._var:return s=s||this.value,t&&"var"!==s&&this.unexpected(),this.parseVarStatement(n,s);case E._while:return this.parseWhileStatement(n);case E._with:return this.parseWithStatement(n);case E.braceL:return this.parseBlock(!0,n);case E.semi:return this.parseEmptyStatement(n);case E._export:case E._import:return this.options.allowImportExportEverywhere||(e||this.raise(this.start,"'import' and 'export' may only appear at the top level"),this.inModule||this.raise(this.start,"'import' and 'export' may appear only with 'sourceType: module'")),r===E._import?this.parseImport(n):this.parseExport(n,i);default:if(this.isAsyncFunction())return t&&this.unexpected(),this.next(),this.parseFunctionStatement(n,!0,!t);var a=this.value,o=this.parseExpression();return r===E.name&&"Identifier"===o.type&&this.eat(E.colon)?this.parseLabeledStatement(n,a,o,t):this.parseExpressionStatement(n,o)}},G.parseBreakContinueStatement=function(t,e){var i="break"===e;this.next(),this.eat(E.semi)||this.insertSemicolon()?t.label=null:this.type!==E.name?this.unexpected():(t.label=this.parseIdent(),this.semicolon());for(var s=0;s=6?this.eat(E.semi):this.semicolon(),this.finishNode(t,"DoWhileStatement")},G.parseForStatement=function(t){this.next();var e=this.options.ecmaVersion>=9&&(this.inAsync||!this.inFunction&&this.options.allowAwaitOutsideFunction)&&this.eatContextual("await")?this.lastTokStart:-1;if(this.labels.push(Q),this.enterScope(0),this.expect(E.parenL),this.type===E.semi)return e>-1&&this.unexpected(e),this.parseFor(t,null);var i=this.isLet();if(this.type===E._var||this.type===E._const||i){var s=this.startNode(),r=i?"let":this.value;return this.next(),this.parseVar(s,!0,r),this.finishNode(s,"VariableDeclaration"),!(this.type===E._in||this.options.ecmaVersion>=6&&this.isContextual("of"))||1!==s.declarations.length||"var"!==r&&s.declarations[0].init?(e>-1&&this.unexpected(e),this.parseFor(t,s)):(this.options.ecmaVersion>=9&&(this.type===E._in?e>-1&&this.unexpected(e):t.await=e>-1),this.parseForIn(t,s))}var n=new z,a=this.parseExpression(!0,n);return this.type===E._in||this.options.ecmaVersion>=6&&this.isContextual("of")?(this.options.ecmaVersion>=9&&(this.type===E._in?e>-1&&this.unexpected(e):t.await=e>-1),this.toAssignable(a,!1,n),this.checkLVal(a),this.parseForIn(t,a)):(this.checkExpressionErrors(n,!0),e>-1&&this.unexpected(e),this.parseFor(t,a))},G.parseFunctionStatement=function(t,e,i){return this.next(),this.parseFunction(t,Y|(i?0:Z),!1,e)},G.parseIfStatement=function(t){return this.next(),t.test=this.parseParenExpression(),t.consequent=this.parseStatement("if"),t.alternate=this.eat(E._else)?this.parseStatement("if"):null,this.finishNode(t,"IfStatement")},G.parseReturnStatement=function(t){return this.inFunction||this.options.allowReturnOutsideFunction||this.raise(this.start,"'return' outside of function"),this.next(),this.eat(E.semi)||this.insertSemicolon()?t.argument=null:(t.argument=this.parseExpression(),this.semicolon()),this.finishNode(t,"ReturnStatement")},G.parseSwitchStatement=function(t){var e;this.next(),t.discriminant=this.parseParenExpression(),t.cases=[],this.expect(E.braceL),this.labels.push(K),this.enterScope(0);for(var i=!1;this.type!==E.braceR;)if(this.type===E._case||this.type===E._default){var s=this.type===E._case;e&&this.finishNode(e,"SwitchCase"),t.cases.push(e=this.startNode()),e.consequent=[],this.next(),s?e.test=this.parseExpression():(i&&this.raiseRecoverable(this.lastTokStart,"Multiple default clauses"),i=!0,e.test=null),this.expect(E.colon)}else e||this.unexpected(),e.consequent.push(this.parseStatement(null));return this.exitScope(),e&&this.finishNode(e,"SwitchCase"),this.next(),this.labels.pop(),this.finishNode(t,"SwitchStatement")},G.parseThrowStatement=function(t){return this.next(),A.test(this.input.slice(this.lastTokEnd,this.start))&&this.raise(this.lastTokEnd,"Illegal newline after throw"),t.argument=this.parseExpression(),this.semicolon(),this.finishNode(t,"ThrowStatement")};var $=[];G.parseTryStatement=function(t){if(this.next(),t.block=this.parseBlock(),t.handler=null,this.type===E._catch){var e=this.startNode();if(this.next(),this.eat(E.parenL)){e.param=this.parseBindingAtom();var i="Identifier"===e.param.type;this.enterScope(i?32:0),this.checkLVal(e.param,i?4:2),this.expect(E.parenR)}else this.options.ecmaVersion<10&&this.unexpected(),e.param=null,this.enterScope(0);e.body=this.parseBlock(!1),this.exitScope(),t.handler=this.finishNode(e,"CatchClause")}return t.finalizer=this.eat(E._finally)?this.parseBlock():null,t.handler||t.finalizer||this.raise(t.start,"Missing catch or finally clause"),this.finishNode(t,"TryStatement")},G.parseVarStatement=function(t,e){return this.next(),this.parseVar(t,!1,e),this.semicolon(),this.finishNode(t,"VariableDeclaration")},G.parseWhileStatement=function(t){return this.next(),t.test=this.parseParenExpression(),this.labels.push(Q),t.body=this.parseStatement("while"),this.labels.pop(),this.finishNode(t,"WhileStatement")},G.parseWithStatement=function(t){return this.strict&&this.raise(this.start,"'with' in strict mode"),this.next(),t.object=this.parseParenExpression(),t.body=this.parseStatement("with"),this.finishNode(t,"WithStatement")},G.parseEmptyStatement=function(t){return this.next(),this.finishNode(t,"EmptyStatement")},G.parseLabeledStatement=function(t,e,i,s){for(var r=0,n=this.labels;r=0;o--){var p=this.labels[o];if(p.statementStart!==t.start)break;p.statementStart=this.start,p.kind=a}return this.labels.push({name:e,kind:a,statementStart:this.start}),t.body=this.parseStatement(s),("ClassDeclaration"===t.body.type||"VariableDeclaration"===t.body.type&&"var"!==t.body.kind||"FunctionDeclaration"===t.body.type&&(this.strict||t.body.generator||t.body.async))&&this.raiseRecoverable(t.body.start,"Invalid labeled declaration"),this.labels.pop(),t.label=i,this.finishNode(t,"LabeledStatement")},G.parseExpressionStatement=function(t,e){return t.expression=e,this.semicolon(),this.finishNode(t,"ExpressionStatement")},G.parseBlock=function(t,e){for(void 0===t&&(t=!0),void 0===e&&(e=this.startNode()),e.body=[],this.expect(E.braceL),t&&this.enterScope(0);!this.eat(E.braceR);){var i=this.parseStatement(null);e.body.push(i)}return t&&this.exitScope(),this.finishNode(e,"BlockStatement")},G.parseFor=function(t,e){return t.init=e,this.expect(E.semi),t.test=this.type===E.semi?null:this.parseExpression(),this.expect(E.semi),t.update=this.type===E.parenR?null:this.parseExpression(),this.expect(E.parenR),this.exitScope(),t.body=this.parseStatement("for"),this.labels.pop(),this.finishNode(t,"ForStatement")},G.parseForIn=function(t,e){var i=this.type===E._in?"ForInStatement":"ForOfStatement";return this.next(),"ForInStatement"===i&&("AssignmentPattern"===e.type||"VariableDeclaration"===e.type&&null!=e.declarations[0].init&&(this.strict||"Identifier"!==e.declarations[0].id.type))&&this.raise(e.start,"Invalid assignment in for-in loop head"),t.left=e,t.right="ForInStatement"===i?this.parseExpression():this.parseMaybeAssign(),this.expect(E.parenR),this.exitScope(),t.body=this.parseStatement("for"),this.labels.pop(),this.finishNode(t,i)},G.parseVar=function(t,e,i){for(t.declarations=[],t.kind=i;;){var s=this.startNode();if(this.parseVarId(s,i),this.eat(E.eq)?s.init=this.parseMaybeAssign(e):"const"!==i||this.type===E._in||this.options.ecmaVersion>=6&&this.isContextual("of")?"Identifier"===s.id.type||e&&(this.type===E._in||this.isContextual("of"))?s.init=null:this.raise(this.lastTokEnd,"Complex binding patterns require an initialization value"):this.unexpected(),t.declarations.push(this.finishNode(s,"VariableDeclarator")),!this.eat(E.comma))break}return t},G.parseVarId=function(t,e){t.id=this.parseBindingAtom(e),this.checkLVal(t.id,"var"===e?1:2,!1)};var Y=1,Z=2;G.parseFunction=function(t,e,i,s){this.initFunction(t),(this.options.ecmaVersion>=9||this.options.ecmaVersion>=6&&!s)&&(t.generator=this.eat(E.star)),this.options.ecmaVersion>=8&&(t.async=!!s),e&Y&&(t.id=4&e&&this.type!==E.name?null:this.parseIdent(),!t.id||e&Z||this.checkLVal(t.id,this.inModule&&!this.inFunction?2:3));var r=this.yieldPos,n=this.awaitPos;return this.yieldPos=0,this.awaitPos=0,this.enterScope(U(t.async,t.generator)),e&Y||(t.id=this.type===E.name?this.parseIdent():null),this.parseFunctionParams(t),this.parseFunctionBody(t,i),this.yieldPos=r,this.awaitPos=n,this.finishNode(t,e&Y?"FunctionDeclaration":"FunctionExpression")},G.parseFunctionParams=function(t){this.expect(E.parenL),t.params=this.parseBindingList(E.parenR,!1,this.options.ecmaVersion>=8),this.checkYieldAwaitInDefaultParams()},G.parseClass=function(t,e){this.next(),this.parseClassId(t,e),this.parseClassSuper(t);var i=this.startNode(),s=!1;for(i.body=[],this.expect(E.braceL);!this.eat(E.braceR);){var r=this.parseClassElement();r&&(i.body.push(r),"MethodDefinition"===r.type&&"constructor"===r.kind&&(s&&this.raise(r.start,"Duplicate constructor in the same class"),s=!0))}return t.body=this.finishNode(i,"ClassBody"),this.finishNode(t,e?"ClassDeclaration":"ClassExpression")},G.parseClassElement=function(){var t=this;if(this.eat(E.semi))return null;var e=this.startNode(),i=function(i,s){void 0===s&&(s=!1);var r=t.start,n=t.startLoc;return!!t.eatContextual(i)&&(!(t.type===E.parenL||s&&t.canInsertSemicolon())||(e.key&&t.unexpected(),e.computed=!1,e.key=t.startNodeAt(r,n),e.key.name=i,t.finishNode(e.key,"Identifier"),!1))};e.kind="method",e.static=i("static");var s=this.eat(E.star),r=!1;s||(this.options.ecmaVersion>=8&&i("async",!0)?(r=!0,s=this.options.ecmaVersion>=9&&this.eat(E.star)):i("get")?e.kind="get":i("set")&&(e.kind="set")),e.key||this.parsePropertyName(e);var n=e.key;return e.computed||e.static||!("Identifier"===n.type&&"constructor"===n.name||"Literal"===n.type&&"constructor"===n.value)?e.static&&"Identifier"===n.type&&"prototype"===n.name&&this.raise(n.start,"Classes may not have a static property named prototype"):("method"!==e.kind&&this.raise(n.start,"Constructor can't have get/set modifier"),s&&this.raise(n.start,"Constructor can't be a generator"),r&&this.raise(n.start,"Constructor can't be an async method"),e.kind="constructor"),this.parseClassMethod(e,s,r),"get"===e.kind&&0!==e.value.params.length&&this.raiseRecoverable(e.value.start,"getter should have no params"),"set"===e.kind&&1!==e.value.params.length&&this.raiseRecoverable(e.value.start,"setter should have exactly one param"),"set"===e.kind&&"RestElement"===e.value.params[0].type&&this.raiseRecoverable(e.value.params[0].start,"Setter cannot use rest params"),e},G.parseClassMethod=function(t,e,i){return t.value=this.parseMethod(e,i),this.finishNode(t,"MethodDefinition")},G.parseClassId=function(t,e){t.id=this.type===E.name?this.parseIdent():!0===e?this.unexpected():null},G.parseClassSuper=function(t){t.superClass=this.eat(E._extends)?this.parseExprSubscripts():null},G.parseExport=function(t,e){if(this.next(),this.eat(E.star))return this.expectContextual("from"),this.type!==E.string&&this.unexpected(),t.source=this.parseExprAtom(),this.semicolon(),this.finishNode(t,"ExportAllDeclaration");if(this.eat(E._default)){var i;if(this.checkExport(e,"default",this.lastTokStart),this.type===E._function||(i=this.isAsyncFunction())){var s=this.startNode();this.next(),i&&this.next(),t.declaration=this.parseFunction(s,4|Y,!1,i,!0)}else if(this.type===E._class){var r=this.startNode();t.declaration=this.parseClass(r,"nullableID")}else t.declaration=this.parseMaybeAssign(),this.semicolon();return this.finishNode(t,"ExportDefaultDeclaration")}if(this.shouldParseExportStatement())t.declaration=this.parseStatement(null),"VariableDeclaration"===t.declaration.type?this.checkVariableExport(e,t.declaration.declarations):this.checkExport(e,t.declaration.id.name,t.declaration.id.start),t.specifiers=[],t.source=null;else{if(t.declaration=null,t.specifiers=this.parseExportSpecifiers(e),this.eatContextual("from"))this.type!==E.string&&this.unexpected(),t.source=this.parseExprAtom();else{for(var n=0,a=t.specifiers;n=6&&t)switch(t.type){case"Identifier":this.inAsync&&"await"===t.name&&this.raise(t.start,"Can not use 'await' as identifier inside an async function");break;case"ObjectPattern":case"ArrayPattern":case"RestElement":break;case"ObjectExpression":t.type="ObjectPattern",i&&this.checkPatternErrors(i,!0);for(var s=0,r=t.properties;s=8&&!n&&"async"===a.name&&!this.canInsertSemicolon()&&this.eat(E._function))return this.parseFunction(this.startNodeAt(s,r),0,!1,!0);if(i&&!this.canInsertSemicolon()){if(this.eat(E.arrow))return this.parseArrowExpression(this.startNodeAt(s,r),[a],!1);if(this.options.ecmaVersion>=8&&"async"===a.name&&this.type===E.name&&!n)return a=this.parseIdent(),!this.canInsertSemicolon()&&this.eat(E.arrow)||this.unexpected(),this.parseArrowExpression(this.startNodeAt(s,r),[a],!0)}return a;case E.regexp:var o=this.value;return(e=this.parseLiteral(o.value)).regex={pattern:o.pattern,flags:o.flags},e;case E.num:case E.string:return this.parseLiteral(this.value);case E._null:case E._true:case E._false:return(e=this.startNode()).value=this.type===E._null?null:this.type===E._true,e.raw=this.type.keyword,this.next(),this.finishNode(e,"Literal");case E.parenL:var p=this.start,h=this.parseParenAndDistinguishExpression(i);return t&&(t.parenthesizedAssign<0&&!this.isSimpleAssignTarget(h)&&(t.parenthesizedAssign=p),t.parenthesizedBind<0&&(t.parenthesizedBind=p)),h;case E.bracketL:return e=this.startNode(),this.next(),e.elements=this.parseExprList(E.bracketR,!0,!0,t),this.finishNode(e,"ArrayExpression");case E.braceL:return this.parseObj(!1,t);case E._function:return e=this.startNode(),this.next(),this.parseFunction(e,0);case E._class:return this.parseClass(this.startNode(),!1);case E._new:return this.parseNew();case E.backQuote:return this.parseTemplate();default:this.unexpected()}},et.parseLiteral=function(t){var e=this.startNode();return e.value=t,e.raw=this.input.slice(this.start,this.end),this.next(),this.finishNode(e,"Literal")},et.parseParenExpression=function(){this.expect(E.parenL);var t=this.parseExpression();return this.expect(E.parenR),t},et.parseParenAndDistinguishExpression=function(t){var e,i=this.start,s=this.startLoc,r=this.options.ecmaVersion>=8;if(this.options.ecmaVersion>=6){this.next();var n,a=this.start,o=this.startLoc,p=[],h=!0,c=!1,l=new z,u=this.yieldPos,d=this.awaitPos;for(this.yieldPos=0,this.awaitPos=0;this.type!==E.parenR;){if(h?h=!1:this.expect(E.comma),r&&this.afterTrailingComma(E.parenR,!0)){c=!0;break}if(this.type===E.ellipsis){n=this.start,p.push(this.parseParenItem(this.parseRestBinding())),this.type===E.comma&&this.raise(this.start,"Comma is not permitted after the rest element");break}p.push(this.parseMaybeAssign(!1,l,this.parseParenItem))}var f=this.start,m=this.startLoc;if(this.expect(E.parenR),t&&!this.canInsertSemicolon()&&this.eat(E.arrow))return this.checkPatternErrors(l,!1),this.checkYieldAwaitInDefaultParams(),this.yieldPos=u,this.awaitPos=d,this.parseParenArrowList(i,s,p);p.length&&!c||this.unexpected(this.lastTokStart),n&&this.unexpected(n),this.checkExpressionErrors(l,!0),this.yieldPos=u||this.yieldPos,this.awaitPos=d||this.awaitPos,p.length>1?((e=this.startNodeAt(a,o)).expressions=p,this.finishNodeAt(e,"SequenceExpression",f,m)):e=p[0]}else e=this.parseParenExpression();if(this.options.preserveParens){var y=this.startNodeAt(i,s);return y.expression=e,this.finishNode(y,"ParenthesizedExpression")}return e},et.parseParenItem=function(t){return t},et.parseParenArrowList=function(t,e,i){return this.parseArrowExpression(this.startNodeAt(t,e),i)};var it=[];et.parseNew=function(){var t=this.startNode(),e=this.parseIdent(!0);if(this.options.ecmaVersion>=6&&this.eat(E.dot)){t.meta=e;var i=this.containsEsc;return t.property=this.parseIdent(!0),("target"!==t.property.name||i)&&this.raiseRecoverable(t.property.start,"The only valid meta property for new is new.target"),this.inNonArrowFunction()||this.raiseRecoverable(t.start,"new.target can only be used in functions"),this.finishNode(t,"MetaProperty")}var s=this.start,r=this.startLoc;return t.callee=this.parseSubscripts(this.parseExprAtom(),s,r,!0),this.eat(E.parenL)?t.arguments=this.parseExprList(E.parenR,this.options.ecmaVersion>=8,!1):t.arguments=it,this.finishNode(t,"NewExpression")},et.parseTemplateElement=function(t){var e=t.isTagged,i=this.startNode();return this.type===E.invalidTemplate?(e||this.raiseRecoverable(this.start,"Bad escape sequence in untagged template literal"),i.value={raw:this.value,cooked:null}):i.value={raw:this.input.slice(this.start,this.end).replace(/\r\n?/g,"\n"),cooked:this.value},this.next(),i.tail=this.type===E.backQuote,this.finishNode(i,"TemplateElement")},et.parseTemplate=function(t){void 0===t&&(t={});var e=t.isTagged;void 0===e&&(e=!1);var i=this.startNode();this.next(),i.expressions=[];var s=this.parseTemplateElement({isTagged:e});for(i.quasis=[s];!s.tail;)this.type===E.eof&&this.raise(this.pos,"Unterminated template literal"),this.expect(E.dollarBraceL),i.expressions.push(this.parseExpression()),this.expect(E.braceR),i.quasis.push(s=this.parseTemplateElement({isTagged:e}));return this.next(),this.finishNode(i,"TemplateLiteral")},et.isAsyncProp=function(t){return!t.computed&&"Identifier"===t.key.type&&"async"===t.key.name&&(this.type===E.name||this.type===E.num||this.type===E.string||this.type===E.bracketL||this.type.keyword||this.options.ecmaVersion>=9&&this.type===E.star)&&!A.test(this.input.slice(this.lastTokEnd,this.start))},et.parseObj=function(t,e){var i=this.startNode(),s=!0,r={};for(i.properties=[],this.next();!this.eat(E.braceR);){if(s)s=!1;else if(this.expect(E.comma),this.afterTrailingComma(E.braceR))break;var n=this.parseProperty(t,e);t||this.checkPropClash(n,r,e),i.properties.push(n)}return this.finishNode(i,t?"ObjectPattern":"ObjectExpression")},et.parseProperty=function(t,e){var i,s,r,n,a=this.startNode();if(this.options.ecmaVersion>=9&&this.eat(E.ellipsis))return t?(a.argument=this.parseIdent(!1),this.type===E.comma&&this.raise(this.start,"Comma is not permitted after the rest element"),this.finishNode(a,"RestElement")):(this.type===E.parenL&&e&&(e.parenthesizedAssign<0&&(e.parenthesizedAssign=this.start),e.parenthesizedBind<0&&(e.parenthesizedBind=this.start)),a.argument=this.parseMaybeAssign(!1,e),this.type===E.comma&&e&&e.trailingComma<0&&(e.trailingComma=this.start),this.finishNode(a,"SpreadElement"));this.options.ecmaVersion>=6&&(a.method=!1,a.shorthand=!1,(t||e)&&(r=this.start,n=this.startLoc),t||(i=this.eat(E.star)));var o=this.containsEsc;return this.parsePropertyName(a),!t&&!o&&this.options.ecmaVersion>=8&&!i&&this.isAsyncProp(a)?(s=!0,i=this.options.ecmaVersion>=9&&this.eat(E.star),this.parsePropertyName(a,e)):s=!1,this.parsePropertyValue(a,t,i,s,r,n,e,o),this.finishNode(a,"Property")},et.parsePropertyValue=function(t,e,i,s,r,n,a,o){if((i||s)&&this.type===E.colon&&this.unexpected(),this.eat(E.colon))t.value=e?this.parseMaybeDefault(this.start,this.startLoc):this.parseMaybeAssign(!1,a),t.kind="init";else if(this.options.ecmaVersion>=6&&this.type===E.parenL)e&&this.unexpected(),t.kind="init",t.method=!0,t.value=this.parseMethod(i,s);else if(e||o||!(this.options.ecmaVersion>=5)||t.computed||"Identifier"!==t.key.type||"get"!==t.key.name&&"set"!==t.key.name||this.type===E.comma||this.type===E.braceR)this.options.ecmaVersion>=6&&!t.computed&&"Identifier"===t.key.type?(this.checkUnreserved(t.key),t.kind="init",e?t.value=this.parseMaybeDefault(r,n,t.key):this.type===E.eq&&a?(a.shorthandAssign<0&&(a.shorthandAssign=this.start),t.value=this.parseMaybeDefault(r,n,t.key)):t.value=t.key,t.shorthand=!0):this.unexpected();else{(i||s)&&this.unexpected(),t.kind=t.key.name,this.parsePropertyName(t),t.value=this.parseMethod(!1);var p="get"===t.kind?0:1;if(t.value.params.length!==p){var h=t.value.start;"get"===t.kind?this.raiseRecoverable(h,"getter should have no params"):this.raiseRecoverable(h,"setter should have exactly one param")}else"set"===t.kind&&"RestElement"===t.value.params[0].type&&this.raiseRecoverable(t.value.params[0].start,"Setter cannot use rest params")}},et.parsePropertyName=function(t){if(this.options.ecmaVersion>=6){if(this.eat(E.bracketL))return t.computed=!0,t.key=this.parseMaybeAssign(),this.expect(E.bracketR),t.key;t.computed=!1}return t.key=this.type===E.num||this.type===E.string?this.parseExprAtom():this.parseIdent(!0)},et.initFunction=function(t){t.id=null,this.options.ecmaVersion>=6&&(t.generator=t.expression=!1),this.options.ecmaVersion>=8&&(t.async=!1)},et.parseMethod=function(t,e){var i=this.startNode(),s=this.yieldPos,r=this.awaitPos;return this.initFunction(i),this.options.ecmaVersion>=6&&(i.generator=t),this.options.ecmaVersion>=8&&(i.async=!!e),this.yieldPos=0,this.awaitPos=0,this.enterScope(U(e,i.generator)),this.expect(E.parenL),i.params=this.parseBindingList(E.parenR,!1,this.options.ecmaVersion>=8),this.checkYieldAwaitInDefaultParams(),this.parseFunctionBody(i,!1),this.yieldPos=s,this.awaitPos=r,this.finishNode(i,"FunctionExpression")},et.parseArrowExpression=function(t,e,i){var s=this.yieldPos,r=this.awaitPos;return this.enterScope(16|U(i,!1)),this.initFunction(t),this.options.ecmaVersion>=8&&(t.async=!!i),this.yieldPos=0,this.awaitPos=0,t.params=this.toAssignableList(e,!0),this.parseFunctionBody(t,!0),this.yieldPos=s,this.awaitPos=r,this.finishNode(t,"ArrowFunctionExpression")},et.parseFunctionBody=function(t,e){var i=e&&this.type!==E.braceL,s=this.strict,r=!1;if(i)t.body=this.parseMaybeAssign(),t.expression=!0,this.checkParams(t,!1);else{var n=this.options.ecmaVersion>=7&&!this.isSimpleParamList(t.params);s&&!n||(r=this.strictDirective(this.end))&&n&&this.raiseRecoverable(t.start,"Illegal 'use strict' directive in function with non-simple parameter list");var a=this.labels;this.labels=[],r&&(this.strict=!0),this.checkParams(t,!s&&!r&&!e&&this.isSimpleParamList(t.params)),t.body=this.parseBlock(!1),t.expression=!1,this.adaptDirectivePrologue(t.body.body),this.labels=a}this.exitScope(),this.strict&&t.id&&this.checkLVal(t.id,5),this.strict=s},et.isSimpleParamList=function(t){for(var e=0,i=t;e-1||r.var.indexOf(t)>-1,r.lexical.push(t)}else if(4===e){this.currentScope().lexical.push(t)}else if(3===e){var n=this.currentScope();s=n.lexical.indexOf(t)>-1,n.var.push(t)}else for(var a=this.scopeStack.length-1;a>=0;--a){var o=this.scopeStack[a];if(o.lexical.indexOf(t)>-1&&!(32&o.flags)&&o.lexical[0]===t&&(s=!0),o.var.push(t),3&o.flags)break}s&&this.raiseRecoverable(i,"Identifier '"+t+"' has already been declared")},rt.currentScope=function(){return this.scopeStack[this.scopeStack.length-1]},rt.currentVarScope=function(){for(var t=this.scopeStack.length-1;;t--){var e=this.scopeStack[t];if(3&e.flags)return e}},rt.inNonArrowFunction=function(){for(var t=this.scopeStack.length-1;t>=0;t--)if(2&this.scopeStack[t].flags&&!(16&this.scopeStack[t].flags))return!0;return!1};var at=function(t,e,i){this.type="",this.start=e,this.end=0,t.options.locations&&(this.loc=new D(t,i)),t.options.directSourceFile&&(this.sourceFile=t.options.directSourceFile),t.options.ranges&&(this.range=[e,0])},ot=X.prototype;function pt(t,e,i,s){return t.type=e,t.end=i,this.options.locations&&(t.loc.end=s),this.options.ranges&&(t.range[1]=i),t}ot.startNode=function(){return new at(this,this.start,this.startLoc)},ot.startNodeAt=function(t,e){return new at(this,t,e)},ot.finishNode=function(t,e){return pt.call(this,t,e,this.lastTokEnd,this.lastTokEndLoc)},ot.finishNodeAt=function(t,e,i,s){return pt.call(this,t,e,i,s)};var ht=function(t,e,i,s,r){this.token=t,this.isExpr=!!e,this.preserveSpace=!!i,this.override=s,this.generator=!!r},ct={b_stat:new ht("{",!1),b_expr:new ht("{",!0),b_tmpl:new ht("${",!1),p_stat:new ht("(",!1),p_expr:new ht("(",!0),q_tmpl:new ht("`",!0,!0,(function(t){return t.tryReadTemplateToken()})),f_stat:new ht("function",!1),f_expr:new ht("function",!0),f_expr_gen:new ht("function",!0,!1,null,!0),f_gen:new ht("function",!1,!1,null,!0)},lt=X.prototype;lt.initialContext=function(){return[ct.b_stat]},lt.braceIsBlock=function(t){var e=this.curContext();return e===ct.f_expr||e===ct.f_stat||(t!==E.colon||e!==ct.b_stat&&e!==ct.b_expr?t===E._return||t===E.name&&this.exprAllowed?A.test(this.input.slice(this.lastTokEnd,this.start)):t===E._else||t===E.semi||t===E.eof||t===E.parenR||t===E.arrow||(t===E.braceL?e===ct.b_stat:t!==E._var&&t!==E.name&&!this.exprAllowed):!e.isExpr)},lt.inGeneratorContext=function(){for(var t=this.context.length-1;t>=1;t--){var e=this.context[t];if("function"===e.token)return e.generator}return!1},lt.updateContext=function(t){var e,i=this.type;i.keyword&&t===E.dot?this.exprAllowed=!1:(e=i.updateContext)?e.call(this,t):this.exprAllowed=i.beforeExpr},E.parenR.updateContext=E.braceR.updateContext=function(){if(1!==this.context.length){var t=this.context.pop();t===ct.b_stat&&"function"===this.curContext().token&&(t=this.context.pop()),this.exprAllowed=!t.isExpr}else this.exprAllowed=!0},E.braceL.updateContext=function(t){this.context.push(this.braceIsBlock(t)?ct.b_stat:ct.b_expr),this.exprAllowed=!0},E.dollarBraceL.updateContext=function(){this.context.push(ct.b_tmpl),this.exprAllowed=!0},E.parenL.updateContext=function(t){var e=t===E._if||t===E._for||t===E._with||t===E._while;this.context.push(e?ct.p_stat:ct.p_expr),this.exprAllowed=!0},E.incDec.updateContext=function(){},E._function.updateContext=E._class.updateContext=function(t){t.beforeExpr&&t!==E.semi&&t!==E._else&&(t!==E.colon&&t!==E.braceL||this.curContext()!==ct.b_stat)?this.context.push(ct.f_expr):this.context.push(ct.f_stat),this.exprAllowed=!1},E.backQuote.updateContext=function(){this.curContext()===ct.q_tmpl?this.context.pop():this.context.push(ct.q_tmpl),this.exprAllowed=!1},E.star.updateContext=function(t){if(t===E._function){var e=this.context.length-1;this.context[e]===ct.f_expr?this.context[e]=ct.f_expr_gen:this.context[e]=ct.f_gen}this.exprAllowed=!0},E.name.updateContext=function(t){var e=!1;this.options.ecmaVersion>=6&&t!==E.dot&&("of"===this.value&&!this.exprAllowed||"yield"===this.value&&this.inGeneratorContext())&&(e=!0),this.exprAllowed=e};var ut={$LONE:["ASCII","ASCII_Hex_Digit","AHex","Alphabetic","Alpha","Any","Assigned","Bidi_Control","Bidi_C","Bidi_Mirrored","Bidi_M","Case_Ignorable","CI","Cased","Changes_When_Casefolded","CWCF","Changes_When_Casemapped","CWCM","Changes_When_Lowercased","CWL","Changes_When_NFKC_Casefolded","CWKCF","Changes_When_Titlecased","CWT","Changes_When_Uppercased","CWU","Dash","Default_Ignorable_Code_Point","DI","Deprecated","Dep","Diacritic","Dia","Emoji","Emoji_Component","Emoji_Modifier","Emoji_Modifier_Base","Emoji_Presentation","Extender","Ext","Grapheme_Base","Gr_Base","Grapheme_Extend","Gr_Ext","Hex_Digit","Hex","IDS_Binary_Operator","IDSB","IDS_Trinary_Operator","IDST","ID_Continue","IDC","ID_Start","IDS","Ideographic","Ideo","Join_Control","Join_C","Logical_Order_Exception","LOE","Lowercase","Lower","Math","Noncharacter_Code_Point","NChar","Pattern_Syntax","Pat_Syn","Pattern_White_Space","Pat_WS","Quotation_Mark","QMark","Radical","Regional_Indicator","RI","Sentence_Terminal","STerm","Soft_Dotted","SD","Terminal_Punctuation","Term","Unified_Ideograph","UIdeo","Uppercase","Upper","Variation_Selector","VS","White_Space","space","XID_Continue","XIDC","XID_Start","XIDS"],General_Category:["Cased_Letter","LC","Close_Punctuation","Pe","Connector_Punctuation","Pc","Control","Cc","cntrl","Currency_Symbol","Sc","Dash_Punctuation","Pd","Decimal_Number","Nd","digit","Enclosing_Mark","Me","Final_Punctuation","Pf","Format","Cf","Initial_Punctuation","Pi","Letter","L","Letter_Number","Nl","Line_Separator","Zl","Lowercase_Letter","Ll","Mark","M","Combining_Mark","Math_Symbol","Sm","Modifier_Letter","Lm","Modifier_Symbol","Sk","Nonspacing_Mark","Mn","Number","N","Open_Punctuation","Ps","Other","C","Other_Letter","Lo","Other_Number","No","Other_Punctuation","Po","Other_Symbol","So","Paragraph_Separator","Zp","Private_Use","Co","Punctuation","P","punct","Separator","Z","Space_Separator","Zs","Spacing_Mark","Mc","Surrogate","Cs","Symbol","S","Titlecase_Letter","Lt","Unassigned","Cn","Uppercase_Letter","Lu"],Script:["Adlam","Adlm","Ahom","Anatolian_Hieroglyphs","Hluw","Arabic","Arab","Armenian","Armn","Avestan","Avst","Balinese","Bali","Bamum","Bamu","Bassa_Vah","Bass","Batak","Batk","Bengali","Beng","Bhaiksuki","Bhks","Bopomofo","Bopo","Brahmi","Brah","Braille","Brai","Buginese","Bugi","Buhid","Buhd","Canadian_Aboriginal","Cans","Carian","Cari","Caucasian_Albanian","Aghb","Chakma","Cakm","Cham","Cherokee","Cher","Common","Zyyy","Coptic","Copt","Qaac","Cuneiform","Xsux","Cypriot","Cprt","Cyrillic","Cyrl","Deseret","Dsrt","Devanagari","Deva","Duployan","Dupl","Egyptian_Hieroglyphs","Egyp","Elbasan","Elba","Ethiopic","Ethi","Georgian","Geor","Glagolitic","Glag","Gothic","Goth","Grantha","Gran","Greek","Grek","Gujarati","Gujr","Gurmukhi","Guru","Han","Hani","Hangul","Hang","Hanunoo","Hano","Hatran","Hatr","Hebrew","Hebr","Hiragana","Hira","Imperial_Aramaic","Armi","Inherited","Zinh","Qaai","Inscriptional_Pahlavi","Phli","Inscriptional_Parthian","Prti","Javanese","Java","Kaithi","Kthi","Kannada","Knda","Katakana","Kana","Kayah_Li","Kali","Kharoshthi","Khar","Khmer","Khmr","Khojki","Khoj","Khudawadi","Sind","Lao","Laoo","Latin","Latn","Lepcha","Lepc","Limbu","Limb","Linear_A","Lina","Linear_B","Linb","Lisu","Lycian","Lyci","Lydian","Lydi","Mahajani","Mahj","Malayalam","Mlym","Mandaic","Mand","Manichaean","Mani","Marchen","Marc","Masaram_Gondi","Gonm","Meetei_Mayek","Mtei","Mende_Kikakui","Mend","Meroitic_Cursive","Merc","Meroitic_Hieroglyphs","Mero","Miao","Plrd","Modi","Mongolian","Mong","Mro","Mroo","Multani","Mult","Myanmar","Mymr","Nabataean","Nbat","New_Tai_Lue","Talu","Newa","Nko","Nkoo","Nushu","Nshu","Ogham","Ogam","Ol_Chiki","Olck","Old_Hungarian","Hung","Old_Italic","Ital","Old_North_Arabian","Narb","Old_Permic","Perm","Old_Persian","Xpeo","Old_South_Arabian","Sarb","Old_Turkic","Orkh","Oriya","Orya","Osage","Osge","Osmanya","Osma","Pahawh_Hmong","Hmng","Palmyrene","Palm","Pau_Cin_Hau","Pauc","Phags_Pa","Phag","Phoenician","Phnx","Psalter_Pahlavi","Phlp","Rejang","Rjng","Runic","Runr","Samaritan","Samr","Saurashtra","Saur","Sharada","Shrd","Shavian","Shaw","Siddham","Sidd","SignWriting","Sgnw","Sinhala","Sinh","Sora_Sompeng","Sora","Soyombo","Soyo","Sundanese","Sund","Syloti_Nagri","Sylo","Syriac","Syrc","Tagalog","Tglg","Tagbanwa","Tagb","Tai_Le","Tale","Tai_Tham","Lana","Tai_Viet","Tavt","Takri","Takr","Tamil","Taml","Tangut","Tang","Telugu","Telu","Thaana","Thaa","Thai","Tibetan","Tibt","Tifinagh","Tfng","Tirhuta","Tirh","Ugaritic","Ugar","Vai","Vaii","Warang_Citi","Wara","Yi","Yiii","Zanabazar_Square","Zanb"]};Array.prototype.push.apply(ut.$LONE,ut.General_Category),ut.gc=ut.General_Category,ut.sc=ut.Script_Extensions=ut.scx=ut.Script;var dt=X.prototype,ft=function(t){this.parser=t,this.validFlags="gim"+(t.options.ecmaVersion>=6?"uy":"")+(t.options.ecmaVersion>=9?"s":""),this.source="",this.flags="",this.start=0,this.switchU=!1,this.switchN=!1,this.pos=0,this.lastIntValue=0,this.lastStringValue="",this.lastAssertionIsQuantifiable=!1,this.numCapturingParens=0,this.maxBackReference=0,this.groupNames=[],this.backReferenceNames=[]};function mt(t){return t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10),56320+(1023&t)))}function yt(t){return 36===t||t>=40&&t<=43||46===t||63===t||t>=91&&t<=94||t>=123&&t<=125}function gt(t){return t>=65&&t<=90||t>=97&&t<=122}function vt(t){return gt(t)||95===t}function xt(t){return vt(t)||bt(t)}function bt(t){return t>=48&&t<=57}function _t(t){return t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102}function kt(t){return t>=65&&t<=70?t-65+10:t>=97&&t<=102?t-97+10:t-48}function St(t){return t>=48&&t<=55}ft.prototype.reset=function(t,e,i){var s=-1!==i.indexOf("u");this.start=0|t,this.source=e+"",this.flags=i,this.switchU=s&&this.parser.options.ecmaVersion>=6,this.switchN=s&&this.parser.options.ecmaVersion>=9},ft.prototype.raise=function(t){this.parser.raiseRecoverable(this.start,"Invalid regular expression: /"+this.source+"/: "+t)},ft.prototype.at=function(t){var e=this.source,i=e.length;if(t>=i)return-1;var s=e.charCodeAt(t);return!this.switchU||s<=55295||s>=57344||t+1>=i?s:(s<<10)+e.charCodeAt(t+1)-56613888},ft.prototype.nextIndex=function(t){var e=this.source,i=e.length;if(t>=i)return i;var s=e.charCodeAt(t);return!this.switchU||s<=55295||s>=57344||t+1>=i?t+1:t+2},ft.prototype.current=function(){return this.at(this.pos)},ft.prototype.lookahead=function(){return this.at(this.nextIndex(this.pos))},ft.prototype.advance=function(){this.pos=this.nextIndex(this.pos)},ft.prototype.eat=function(t){return this.current()===t&&(this.advance(),!0)},dt.validateRegExpFlags=function(t){for(var e=t.validFlags,i=t.flags,s=0;s-1&&this.raise(t.start,"Duplicate regular expression flag")}},dt.validateRegExpPattern=function(t){this.regexp_pattern(t),!t.switchN&&this.options.ecmaVersion>=9&&t.groupNames.length>0&&(t.switchN=!0,this.regexp_pattern(t))},dt.regexp_pattern=function(t){t.pos=0,t.lastIntValue=0,t.lastStringValue="",t.lastAssertionIsQuantifiable=!1,t.numCapturingParens=0,t.maxBackReference=0,t.groupNames.length=0,t.backReferenceNames.length=0,this.regexp_disjunction(t),t.pos!==t.source.length&&(t.eat(41)&&t.raise("Unmatched ')'"),(t.eat(93)||t.eat(125))&&t.raise("Lone quantifier brackets")),t.maxBackReference>t.numCapturingParens&&t.raise("Invalid escape");for(var e=0,i=t.backReferenceNames;e=9&&(i=t.eat(60)),t.eat(61)||t.eat(33))return this.regexp_disjunction(t),t.eat(41)||t.raise("Unterminated group"),t.lastAssertionIsQuantifiable=!i,!0}return t.pos=e,!1},dt.regexp_eatQuantifier=function(t,e){return void 0===e&&(e=!1),!!this.regexp_eatQuantifierPrefix(t,e)&&(t.eat(63),!0)},dt.regexp_eatQuantifierPrefix=function(t,e){return t.eat(42)||t.eat(43)||t.eat(63)||this.regexp_eatBracedQuantifier(t,e)},dt.regexp_eatBracedQuantifier=function(t,e){var i=t.pos;if(t.eat(123)){var s=0,r=-1;if(this.regexp_eatDecimalDigits(t)&&(s=t.lastIntValue,t.eat(44)&&this.regexp_eatDecimalDigits(t)&&(r=t.lastIntValue),t.eat(125)))return-1!==r&&r=9?this.regexp_groupSpecifier(t):63===t.current()&&t.raise("Invalid group"),this.regexp_disjunction(t),t.eat(41))return t.numCapturingParens+=1,!0;t.raise("Unterminated group")}return!1},dt.regexp_eatExtendedAtom=function(t){return t.eat(46)||this.regexp_eatReverseSolidusAtomEscape(t)||this.regexp_eatCharacterClass(t)||this.regexp_eatUncapturingGroup(t)||this.regexp_eatCapturingGroup(t)||this.regexp_eatInvalidBracedQuantifier(t)||this.regexp_eatExtendedPatternCharacter(t)},dt.regexp_eatInvalidBracedQuantifier=function(t){return this.regexp_eatBracedQuantifier(t,!0)&&t.raise("Nothing to repeat"),!1},dt.regexp_eatSyntaxCharacter=function(t){var e=t.current();return!!yt(e)&&(t.lastIntValue=e,t.advance(),!0)},dt.regexp_eatPatternCharacters=function(t){for(var e=t.pos,i=0;-1!==(i=t.current())&&!yt(i);)t.advance();return t.pos!==e},dt.regexp_eatExtendedPatternCharacter=function(t){var e=t.current();return!(-1===e||36===e||e>=40&&e<=43||46===e||63===e||91===e||94===e||124===e)&&(t.advance(),!0)},dt.regexp_groupSpecifier=function(t){if(t.eat(63)){if(this.regexp_eatGroupName(t))return-1!==t.groupNames.indexOf(t.lastStringValue)&&t.raise("Duplicate capture group name"),void t.groupNames.push(t.lastStringValue);t.raise("Invalid group")}},dt.regexp_eatGroupName=function(t){if(t.lastStringValue="",t.eat(60)){if(this.regexp_eatRegExpIdentifierName(t)&&t.eat(62))return!0;t.raise("Invalid capture group name")}return!1},dt.regexp_eatRegExpIdentifierName=function(t){if(t.lastStringValue="",this.regexp_eatRegExpIdentifierStart(t)){for(t.lastStringValue+=mt(t.lastIntValue);this.regexp_eatRegExpIdentifierPart(t);)t.lastStringValue+=mt(t.lastIntValue);return!0}return!1},dt.regexp_eatRegExpIdentifierStart=function(t){var e=t.pos,i=t.current();return t.advance(),92===i&&this.regexp_eatRegExpUnicodeEscapeSequence(t)&&(i=t.lastIntValue),function(t){return g(t,!0)||36===t||95===t}(i)?(t.lastIntValue=i,!0):(t.pos=e,!1)},dt.regexp_eatRegExpIdentifierPart=function(t){var e=t.pos,i=t.current();return t.advance(),92===i&&this.regexp_eatRegExpUnicodeEscapeSequence(t)&&(i=t.lastIntValue),function(t){return v(t,!0)||36===t||95===t||8204===t||8205===t}(i)?(t.lastIntValue=i,!0):(t.pos=e,!1)},dt.regexp_eatAtomEscape=function(t){return!!(this.regexp_eatBackReference(t)||this.regexp_eatCharacterClassEscape(t)||this.regexp_eatCharacterEscape(t)||t.switchN&&this.regexp_eatKGroupName(t))||(t.switchU&&(99===t.current()&&t.raise("Invalid unicode escape"),t.raise("Invalid escape")),!1)},dt.regexp_eatBackReference=function(t){var e=t.pos;if(this.regexp_eatDecimalEscape(t)){var i=t.lastIntValue;if(t.switchU)return i>t.maxBackReference&&(t.maxBackReference=i),!0;if(i<=t.numCapturingParens)return!0;t.pos=e}return!1},dt.regexp_eatKGroupName=function(t){if(t.eat(107)){if(this.regexp_eatGroupName(t))return t.backReferenceNames.push(t.lastStringValue),!0;t.raise("Invalid named reference")}return!1},dt.regexp_eatCharacterEscape=function(t){return this.regexp_eatControlEscape(t)||this.regexp_eatCControlLetter(t)||this.regexp_eatZero(t)||this.regexp_eatHexEscapeSequence(t)||this.regexp_eatRegExpUnicodeEscapeSequence(t)||!t.switchU&&this.regexp_eatLegacyOctalEscapeSequence(t)||this.regexp_eatIdentityEscape(t)},dt.regexp_eatCControlLetter=function(t){var e=t.pos;if(t.eat(99)){if(this.regexp_eatControlLetter(t))return!0;t.pos=e}return!1},dt.regexp_eatZero=function(t){return 48===t.current()&&!bt(t.lookahead())&&(t.lastIntValue=0,t.advance(),!0)},dt.regexp_eatControlEscape=function(t){var e=t.current();return 116===e?(t.lastIntValue=9,t.advance(),!0):110===e?(t.lastIntValue=10,t.advance(),!0):118===e?(t.lastIntValue=11,t.advance(),!0):102===e?(t.lastIntValue=12,t.advance(),!0):114===e&&(t.lastIntValue=13,t.advance(),!0)},dt.regexp_eatControlLetter=function(t){var e=t.current();return!!gt(e)&&(t.lastIntValue=e%32,t.advance(),!0)},dt.regexp_eatRegExpUnicodeEscapeSequence=function(t){var e,i=t.pos;if(t.eat(117)){if(this.regexp_eatFixedHexDigits(t,4)){var s=t.lastIntValue;if(t.switchU&&s>=55296&&s<=56319){var r=t.pos;if(t.eat(92)&&t.eat(117)&&this.regexp_eatFixedHexDigits(t,4)){var n=t.lastIntValue;if(n>=56320&&n<=57343)return t.lastIntValue=1024*(s-55296)+(n-56320)+65536,!0}t.pos=r,t.lastIntValue=s}return!0}if(t.switchU&&t.eat(123)&&this.regexp_eatHexDigits(t)&&t.eat(125)&&((e=t.lastIntValue)>=0&&e<=1114111))return!0;t.switchU&&t.raise("Invalid unicode escape"),t.pos=i}return!1},dt.regexp_eatIdentityEscape=function(t){if(t.switchU)return!!this.regexp_eatSyntaxCharacter(t)||!!t.eat(47)&&(t.lastIntValue=47,!0);var e=t.current();return!(99===e||t.switchN&&107===e)&&(t.lastIntValue=e,t.advance(),!0)},dt.regexp_eatDecimalEscape=function(t){t.lastIntValue=0;var e=t.current();if(e>=49&&e<=57){do{t.lastIntValue=10*t.lastIntValue+(e-48),t.advance()}while((e=t.current())>=48&&e<=57);return!0}return!1},dt.regexp_eatCharacterClassEscape=function(t){var e=t.current();if(function(t){return 100===t||68===t||115===t||83===t||119===t||87===t}(e))return t.lastIntValue=-1,t.advance(),!0;if(t.switchU&&this.options.ecmaVersion>=9&&(80===e||112===e)){if(t.lastIntValue=-1,t.advance(),t.eat(123)&&this.regexp_eatUnicodePropertyValueExpression(t)&&t.eat(125))return!0;t.raise("Invalid property name")}return!1},dt.regexp_eatUnicodePropertyValueExpression=function(t){var e=t.pos;if(this.regexp_eatUnicodePropertyName(t)&&t.eat(61)){var i=t.lastStringValue;if(this.regexp_eatUnicodePropertyValue(t)){var s=t.lastStringValue;return this.regexp_validateUnicodePropertyNameAndValue(t,i,s),!0}}if(t.pos=e,this.regexp_eatLoneUnicodePropertyNameOrValue(t)){var r=t.lastStringValue;return this.regexp_validateUnicodePropertyNameOrValue(t,r),!0}return!1},dt.regexp_validateUnicodePropertyNameAndValue=function(t,e,i){ut.hasOwnProperty(e)&&-1!==ut[e].indexOf(i)||t.raise("Invalid property name")},dt.regexp_validateUnicodePropertyNameOrValue=function(t,e){-1===ut.$LONE.indexOf(e)&&t.raise("Invalid property name")},dt.regexp_eatUnicodePropertyName=function(t){var e=0;for(t.lastStringValue="";vt(e=t.current());)t.lastStringValue+=mt(e),t.advance();return""!==t.lastStringValue},dt.regexp_eatUnicodePropertyValue=function(t){var e=0;for(t.lastStringValue="";xt(e=t.current());)t.lastStringValue+=mt(e),t.advance();return""!==t.lastStringValue},dt.regexp_eatLoneUnicodePropertyNameOrValue=function(t){return this.regexp_eatUnicodePropertyValue(t)},dt.regexp_eatCharacterClass=function(t){if(t.eat(91)){if(t.eat(94),this.regexp_classRanges(t),t.eat(93))return!0;t.raise("Unterminated character class")}return!1},dt.regexp_classRanges=function(t){for(;this.regexp_eatClassAtom(t);){var e=t.lastIntValue;if(t.eat(45)&&this.regexp_eatClassAtom(t)){var i=t.lastIntValue;!t.switchU||-1!==e&&-1!==i||t.raise("Invalid character class"),-1!==e&&-1!==i&&e>i&&t.raise("Range out of order in character class")}}},dt.regexp_eatClassAtom=function(t){var e=t.pos;if(t.eat(92)){if(this.regexp_eatClassEscape(t))return!0;if(t.switchU){var i=t.current();(99===i||St(i))&&t.raise("Invalid class escape"),t.raise("Invalid escape")}t.pos=e}var s=t.current();return 93!==s&&(t.lastIntValue=s,t.advance(),!0)},dt.regexp_eatClassEscape=function(t){var e=t.pos;if(t.eat(98))return t.lastIntValue=8,!0;if(t.switchU&&t.eat(45))return t.lastIntValue=45,!0;if(!t.switchU&&t.eat(99)){if(this.regexp_eatClassControlLetter(t))return!0;t.pos=e}return this.regexp_eatCharacterClassEscape(t)||this.regexp_eatCharacterEscape(t)},dt.regexp_eatClassControlLetter=function(t){var e=t.current();return!(!bt(e)&&95!==e)&&(t.lastIntValue=e%32,t.advance(),!0)},dt.regexp_eatHexEscapeSequence=function(t){var e=t.pos;if(t.eat(120)){if(this.regexp_eatFixedHexDigits(t,2))return!0;t.switchU&&t.raise("Invalid escape"),t.pos=e}return!1},dt.regexp_eatDecimalDigits=function(t){var e=t.pos,i=0;for(t.lastIntValue=0;bt(i=t.current());)t.lastIntValue=10*t.lastIntValue+(i-48),t.advance();return t.pos!==e},dt.regexp_eatHexDigits=function(t){var e=t.pos,i=0;for(t.lastIntValue=0;_t(i=t.current());)t.lastIntValue=16*t.lastIntValue+kt(i),t.advance();return t.pos!==e},dt.regexp_eatLegacyOctalEscapeSequence=function(t){if(this.regexp_eatOctalDigit(t)){var e=t.lastIntValue;if(this.regexp_eatOctalDigit(t)){var i=t.lastIntValue;e<=3&&this.regexp_eatOctalDigit(t)?t.lastIntValue=64*e+8*i+t.lastIntValue:t.lastIntValue=8*e+i}else t.lastIntValue=e;return!0}return!1},dt.regexp_eatOctalDigit=function(t){var e=t.current();return St(e)?(t.lastIntValue=e-48,t.advance(),!0):(t.lastIntValue=0,!1)},dt.regexp_eatFixedHexDigits=function(t,e){var i=t.pos;t.lastIntValue=0;for(var s=0;s>10),56320+(1023&t)))}Et.next=function(){this.options.onToken&&this.options.onToken(new wt(this)),this.lastTokEnd=this.end,this.lastTokStart=this.start,this.lastTokEndLoc=this.endLoc,this.lastTokStartLoc=this.startLoc,this.nextToken()},Et.getToken=function(){return this.next(),new wt(this)},"undefined"!=typeof Symbol&&(Et[Symbol.iterator]=function(){var t=this;return{next:function(){var e=t.getToken();return{done:e.type===E.eof,value:e}}}}),Et.curContext=function(){return this.context[this.context.length-1]},Et.nextToken=function(){var t=this.curContext();return t&&t.preserveSpace||this.skipSpace(),this.start=this.pos,this.options.locations&&(this.startLoc=this.curPosition()),this.pos>=this.input.length?this.finishToken(E.eof):t.override?t.override(this):void this.readToken(this.fullCharCodeAtPos())},Et.readToken=function(t){return g(t,this.options.ecmaVersion>=6)||92===t?this.readWord():this.getTokenFromCode(t)},Et.fullCharCodeAtPos=function(){var t=this.input.charCodeAt(this.pos);return t<=55295||t>=57344?t:(t<<10)+this.input.charCodeAt(this.pos+1)-56613888},Et.skipBlockComment=function(){var t,e=this.options.onComment&&this.curPosition(),i=this.pos,s=this.input.indexOf("*/",this.pos+=2);if(-1===s&&this.raise(this.pos-2,"Unterminated comment"),this.pos=s+2,this.options.locations)for(C.lastIndex=i;(t=C.exec(this.input))&&t.index8&&t<14||t>=5760&&L.test(String.fromCharCode(t))))break t;++this.pos}}},Et.finishToken=function(t,e){this.end=this.pos,this.options.locations&&(this.endLoc=this.curPosition());var i=this.type;this.type=t,this.value=e,this.updateContext(i)},Et.readToken_dot=function(){var t=this.input.charCodeAt(this.pos+1);if(t>=48&&t<=57)return this.readNumber(!0);var e=this.input.charCodeAt(this.pos+2);return this.options.ecmaVersion>=6&&46===t&&46===e?(this.pos+=3,this.finishToken(E.ellipsis)):(++this.pos,this.finishToken(E.dot))},Et.readToken_slash=function(){var t=this.input.charCodeAt(this.pos+1);return this.exprAllowed?(++this.pos,this.readRegexp()):61===t?this.finishOp(E.assign,2):this.finishOp(E.slash,1)},Et.readToken_mult_modulo_exp=function(t){var e=this.input.charCodeAt(this.pos+1),i=1,s=42===t?E.star:E.modulo;return this.options.ecmaVersion>=7&&42===t&&42===e&&(++i,s=E.starstar,e=this.input.charCodeAt(this.pos+2)),61===e?this.finishOp(E.assign,i+1):this.finishOp(s,i)},Et.readToken_pipe_amp=function(t){var e=this.input.charCodeAt(this.pos+1);return e===t?this.finishOp(124===t?E.logicalOR:E.logicalAND,2):61===e?this.finishOp(E.assign,2):this.finishOp(124===t?E.bitwiseOR:E.bitwiseAND,1)},Et.readToken_caret=function(){return 61===this.input.charCodeAt(this.pos+1)?this.finishOp(E.assign,2):this.finishOp(E.bitwiseXOR,1)},Et.readToken_plus_min=function(t){var e=this.input.charCodeAt(this.pos+1);return e===t?45!==e||this.inModule||62!==this.input.charCodeAt(this.pos+2)||0!==this.lastTokEnd&&!A.test(this.input.slice(this.lastTokEnd,this.pos))?this.finishOp(E.incDec,2):(this.skipLineComment(3),this.skipSpace(),this.nextToken()):61===e?this.finishOp(E.assign,2):this.finishOp(E.plusMin,1)},Et.readToken_lt_gt=function(t){var e=this.input.charCodeAt(this.pos+1),i=1;return e===t?(i=62===t&&62===this.input.charCodeAt(this.pos+2)?3:2,61===this.input.charCodeAt(this.pos+i)?this.finishOp(E.assign,i+1):this.finishOp(E.bitShift,i)):33!==e||60!==t||this.inModule||45!==this.input.charCodeAt(this.pos+2)||45!==this.input.charCodeAt(this.pos+3)?(61===e&&(i=2),this.finishOp(E.relational,i)):(this.skipLineComment(4),this.skipSpace(),this.nextToken())},Et.readToken_eq_excl=function(t){var e=this.input.charCodeAt(this.pos+1);return 61===e?this.finishOp(E.equality,61===this.input.charCodeAt(this.pos+2)?3:2):61===t&&62===e&&this.options.ecmaVersion>=6?(this.pos+=2,this.finishToken(E.arrow)):this.finishOp(61===t?E.eq:E.prefix,1)},Et.getTokenFromCode=function(t){switch(t){case 46:return this.readToken_dot();case 40:return++this.pos,this.finishToken(E.parenL);case 41:return++this.pos,this.finishToken(E.parenR);case 59:return++this.pos,this.finishToken(E.semi);case 44:return++this.pos,this.finishToken(E.comma);case 91:return++this.pos,this.finishToken(E.bracketL);case 93:return++this.pos,this.finishToken(E.bracketR);case 123:return++this.pos,this.finishToken(E.braceL);case 125:return++this.pos,this.finishToken(E.braceR);case 58:return++this.pos,this.finishToken(E.colon);case 63:return++this.pos,this.finishToken(E.question);case 96:if(this.options.ecmaVersion<6)break;return++this.pos,this.finishToken(E.backQuote);case 48:var e=this.input.charCodeAt(this.pos+1);if(120===e||88===e)return this.readRadixNumber(16);if(this.options.ecmaVersion>=6){if(111===e||79===e)return this.readRadixNumber(8);if(98===e||66===e)return this.readRadixNumber(2)}case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.readNumber(!1);case 34:case 39:return this.readString(t);case 47:return this.readToken_slash();case 37:case 42:return this.readToken_mult_modulo_exp(t);case 124:case 38:return this.readToken_pipe_amp(t);case 94:return this.readToken_caret();case 43:case 45:return this.readToken_plus_min(t);case 60:case 62:return this.readToken_lt_gt(t);case 61:case 33:return this.readToken_eq_excl(t);case 126:return this.finishOp(E.prefix,1)}this.raise(this.pos,"Unexpected character '"+At(t)+"'")},Et.finishOp=function(t,e){var i=this.input.slice(this.pos,this.pos+e);return this.pos+=e,this.finishToken(t,i)},Et.readRegexp=function(){for(var t,e,i=this.pos;;){this.pos>=this.input.length&&this.raise(i,"Unterminated regular expression");var s=this.input.charAt(this.pos);if(A.test(s)&&this.raise(i,"Unterminated regular expression"),t)t=!1;else{if("["===s)e=!0;else if("]"===s&&e)e=!1;else if("/"===s&&!e)break;t="\\"===s}++this.pos}var r=this.input.slice(i,this.pos);++this.pos;var n=this.pos,a=this.readWord1();this.containsEsc&&this.unexpected(n);var o=this.regexpState||(this.regexpState=new ft(this));o.reset(i,r,a),this.validateRegExpFlags(o),this.validateRegExpPattern(o);var p=null;try{p=new RegExp(r,a)}catch(h){}return this.finishToken(E.regexp,{pattern:r,flags:a,value:p})},Et.readInt=function(t,e){for(var i=this.pos,s=0,r=0,n=null==e?1/0:e;r=97?a-97+10:a>=65?a-65+10:a>=48&&a<=57?a-48:1/0)>=t)break;++this.pos,s=s*t+o}return this.pos===i||null!=e&&this.pos-i!==e?null:s},Et.readRadixNumber=function(t){this.pos+=2;var e=this.readInt(t);return null==e&&this.raise(this.start+2,"Expected number in radix "+t),g(this.fullCharCodeAtPos())&&this.raise(this.pos,"Identifier directly after number"),this.finishToken(E.num,e)},Et.readNumber=function(t){var e=this.pos;t||null!==this.readInt(10)||this.raise(e,"Invalid number");var i=this.pos-e>=2&&48===this.input.charCodeAt(e);i&&this.strict&&this.raise(e,"Invalid number"),i&&/[89]/.test(this.input.slice(e,this.pos))&&(i=!1);var s=this.input.charCodeAt(this.pos);46!==s||i||(++this.pos,this.readInt(10),s=this.input.charCodeAt(this.pos)),69!==s&&101!==s||i||(43!==(s=this.input.charCodeAt(++this.pos))&&45!==s||++this.pos,null===this.readInt(10)&&this.raise(e,"Invalid number")),g(this.fullCharCodeAtPos())&&this.raise(this.pos,"Identifier directly after number");var r=this.input.slice(e,this.pos),n=i?parseInt(r,8):parseFloat(r);return this.finishToken(E.num,n)},Et.readCodePoint=function(){var t;if(123===this.input.charCodeAt(this.pos)){this.options.ecmaVersion<6&&this.unexpected();var e=++this.pos;t=this.readHexChar(this.input.indexOf("}",this.pos)-this.pos),++this.pos,t>1114111&&this.invalidStringToken(e,"Code point out of bounds")}else t=this.readHexChar(4);return t},Et.readString=function(t){for(var e="",i=++this.pos;;){this.pos>=this.input.length&&this.raise(this.start,"Unterminated string constant");var s=this.input.charCodeAt(this.pos);if(s===t)break;92===s?(e+=this.input.slice(i,this.pos),e+=this.readEscapedChar(!1),i=this.pos):(I(s,this.options.ecmaVersion>=10)&&this.raise(this.start,"Unterminated string constant"),++this.pos)}return e+=this.input.slice(i,this.pos++),this.finishToken(E.string,e)};var Ct={};Et.tryReadTemplateToken=function(){this.inTemplateElement=!0;try{this.readTmplToken()}catch(t){if(t!==Ct)throw t;this.readInvalidTemplateToken()}this.inTemplateElement=!1},Et.invalidStringToken=function(t,e){if(this.inTemplateElement&&this.options.ecmaVersion>=9)throw Ct;this.raise(t,e)},Et.readTmplToken=function(){for(var t="",e=this.pos;;){this.pos>=this.input.length&&this.raise(this.start,"Unterminated template");var i=this.input.charCodeAt(this.pos);if(96===i||36===i&&123===this.input.charCodeAt(this.pos+1))return this.pos!==this.start||this.type!==E.template&&this.type!==E.invalidTemplate?(t+=this.input.slice(e,this.pos),this.finishToken(E.template,t)):36===i?(this.pos+=2,this.finishToken(E.dollarBraceL)):(++this.pos,this.finishToken(E.backQuote));if(92===i)t+=this.input.slice(e,this.pos),t+=this.readEscapedChar(!0),e=this.pos;else if(I(i)){switch(t+=this.input.slice(e,this.pos),++this.pos,i){case 13:10===this.input.charCodeAt(this.pos)&&++this.pos;case 10:t+="\n";break;default:t+=String.fromCharCode(i)}this.options.locations&&(++this.curLine,this.lineStart=this.pos),e=this.pos}else++this.pos}},Et.readInvalidTemplateToken=function(){for(;this.pos=48&&e<=55){var i=this.input.substr(this.pos-1,3).match(/^[0-7]+/)[0],s=parseInt(i,8);return s>255&&(i=i.slice(0,-1),s=parseInt(i,8)),this.pos+=i.length-1,e=this.input.charCodeAt(this.pos),"0"===i&&56!==e&&57!==e||!this.strict&&!t||this.invalidStringToken(this.pos-1-i.length,t?"Octal literal in template string":"Octal literal in strict mode"),String.fromCharCode(s)}return String.fromCharCode(e)}},Et.readHexChar=function(t){var e=this.pos,i=this.readInt(16,t);return null===i&&this.invalidStringToken(e,"Bad character escape sequence"),i},Et.readWord1=function(){this.containsEsc=!1;for(var t="",e=!0,i=this.pos,s=this.options.ecmaVersion>=6;this.pos",nbsp:" ",iexcl:"¡",cent:"¢",pound:"£",curren:"¤",yen:"¥",brvbar:"¦",sect:"§",uml:"¨",copy:"©",ordf:"ª",laquo:"«",not:"¬",shy:"­",reg:"®",macr:"¯",deg:"°",plusmn:"±",sup2:"²",sup3:"³",acute:"´",micro:"µ",para:"¶",middot:"·",cedil:"¸",sup1:"¹",ordm:"º",raquo:"»",frac14:"¼",frac12:"½",frac34:"¾",iquest:"¿",Agrave:"À",Aacute:"Á",Acirc:"Â",Atilde:"Ã",Auml:"Ä",Aring:"Å",AElig:"Æ",Ccedil:"Ç",Egrave:"È",Eacute:"É",Ecirc:"Ê",Euml:"Ë",Igrave:"Ì",Iacute:"Í",Icirc:"Î",Iuml:"Ï",ETH:"Ð",Ntilde:"Ñ",Ograve:"Ò",Oacute:"Ó",Ocirc:"Ô",Otilde:"Õ",Ouml:"Ö",times:"×",Oslash:"Ø",Ugrave:"Ù",Uacute:"Ú",Ucirc:"Û",Uuml:"Ü",Yacute:"Ý",THORN:"Þ",szlig:"ß",agrave:"à",aacute:"á",acirc:"â",atilde:"ã",auml:"ä",aring:"å",aelig:"æ",ccedil:"ç",egrave:"è",eacute:"é",ecirc:"ê",euml:"ë",igrave:"ì",iacute:"í",icirc:"î",iuml:"ï",eth:"ð",ntilde:"ñ",ograve:"ò",oacute:"ó",ocirc:"ô",otilde:"õ",ouml:"ö",divide:"÷",oslash:"ø",ugrave:"ù",uacute:"ú",ucirc:"û",uuml:"ü",yacute:"ý",thorn:"þ",yuml:"ÿ",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",fnof:"ƒ",circ:"ˆ",tilde:"˜",Alpha:"Α",Beta:"Β",Gamma:"Γ",Delta:"Δ",Epsilon:"Ε",Zeta:"Ζ",Eta:"Η",Theta:"Θ",Iota:"Ι",Kappa:"Κ",Lambda:"Λ",Mu:"Μ",Nu:"Ν",Xi:"Ξ",Omicron:"Ο",Pi:"Π",Rho:"Ρ",Sigma:"Σ",Tau:"Τ",Upsilon:"Υ",Phi:"Φ",Chi:"Χ",Psi:"Ψ",Omega:"Ω",alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ε",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigmaf:"ς",sigma:"σ",tau:"τ",upsilon:"υ",phi:"φ",chi:"χ",psi:"ψ",omega:"ω",thetasym:"ϑ",upsih:"ϒ",piv:"ϖ",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",bull:"•",hellip:"…",permil:"‰",prime:"′",Prime:"″",lsaquo:"‹",rsaquo:"›",oline:"‾",frasl:"⁄",euro:"€",image:"ℑ",weierp:"℘",real:"ℜ",trade:"™",alefsym:"ℵ",larr:"←",uarr:"↑",rarr:"→",darr:"↓",harr:"↔",crarr:"↵",lArr:"⇐",uArr:"⇑",rArr:"⇒",dArr:"⇓",hArr:"⇔",forall:"∀",part:"∂",exist:"∃",empty:"∅",nabla:"∇",isin:"∈",notin:"∉",ni:"∋",prod:"∏",sum:"∑",minus:"−",lowast:"∗",radic:"√",prop:"∝",infin:"∞",ang:"∠",and:"∧",or:"∨",cap:"∩",cup:"∪",int:"∫",there4:"∴",sim:"∼",cong:"≅",asymp:"≈",ne:"≠",equiv:"≡",le:"≤",ge:"≥",sub:"⊂",sup:"⊃",nsub:"⊄",sube:"⊆",supe:"⊇",oplus:"⊕",otimes:"⊗",perp:"⊥",sdot:"⋅",lceil:"⌈",rceil:"⌉",lfloor:"⌊",rfloor:"⌋",lang:"〈",rang:"〉",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦"},Pt=/^[\da-fA-F]+$/,Nt=/^\d+$/,Tt=It.tokTypes,Rt=It.TokContext,Ot=It.tokContexts,jt=It.TokenType,Vt=It.isNewLine,Dt=It.isIdentifierStart,Ft=It.isIdentifierChar,Bt=new Rt("...
      ",!0,!0),qt={jsxName:new jt("jsxName"),jsxText:new jt("jsxText",{beforeExpr:!0}),jsxTagStart:new jt("jsxTagStart"),jsxTagEnd:new jt("jsxTagEnd")};function Xt(t){return t?"JSXIdentifier"===t.type?t.name:"JSXNamespacedName"===t.type?t.namespace.name+":"+t.name.name:"JSXMemberExpression"===t.type?Xt(t.object)+"."+Xt(t.property):void 0:t}qt.jsxTagStart.updateContext=function(){this.context.push(Ut),this.context.push(Bt),this.exprAllowed=!1},qt.jsxTagEnd.updateContext=function(t){var e=this.context.pop();e===Bt&&t===Tt.slash||e===Mt?(this.context.pop(),this.exprAllowed=this.curContext()===Ut):this.exprAllowed=!0};var Jt=function(t){return void 0===t&&(t={}),function(e){return function(t,e){return function(e){function i(){e.apply(this,arguments)}return e&&(i.__proto__=e),i.prototype=Object.create(e&&e.prototype),i.prototype.constructor=i,i.prototype.jsx_readToken=function(){for(var t="",e=this.pos;;){this.pos>=this.input.length&&this.raise(this.start,"Unterminated JSX contents");var i=this.input.charCodeAt(this.pos);switch(i){case 60:case 123:return this.pos===this.start?60===i&&this.exprAllowed?(++this.pos,this.finishToken(qt.jsxTagStart)):this.getTokenFromCode(i):(t+=this.input.slice(e,this.pos),this.finishToken(qt.jsxText,t));case 38:t+=this.input.slice(e,this.pos),t+=this.jsx_readEntity(),e=this.pos;break;default:Vt(i)?(t+=this.input.slice(e,this.pos),t+=this.jsx_readNewLine(!0),e=this.pos):++this.pos}}},i.prototype.jsx_readNewLine=function(t){var e,i=this.input.charCodeAt(this.pos);return++this.pos,13===i&&10===this.input.charCodeAt(this.pos)?(++this.pos,e=t?"\n":"\r\n"):e=String.fromCharCode(i),this.options.locations&&(++this.curLine,this.lineStart=this.pos),e},i.prototype.jsx_readString=function(t){for(var e="",i=++this.pos;;){this.pos>=this.input.length&&this.raise(this.start,"Unterminated string constant");var s=this.input.charCodeAt(this.pos);if(s===t)break;38===s?(e+=this.input.slice(i,this.pos),e+=this.jsx_readEntity(),i=this.pos):Vt(s)?(e+=this.input.slice(i,this.pos),e+=this.jsx_readNewLine(!1),i=this.pos):++this.pos}return e+=this.input.slice(i,this.pos++),this.finishToken(Tt.string,e)},i.prototype.jsx_readEntity=function(){var t,e="",i=0,s=this.input[this.pos];"&"!==s&&this.raise(this.pos,"Entity must start with an ampersand");for(var r=++this.pos;this.pos")}var a=r.name?"Element":"Fragment";return i["opening"+a]=r,i["closing"+a]=n,i.children=s,this.type===Tt.relational&&"<"===this.value&&this.raise(this.start,"Adjacent JSX elements must be wrapped in an enclosing tag"),this.finishNode(i,"JSX"+a)},i.prototype.jsx_parseText=function(t){var e=this.parseLiteral(t);return e.type="JSXText",e},i.prototype.jsx_parseElement=function(){var t=this.start,e=this.startLoc;return this.next(),this.jsx_parseElementAt(t,e)},i.prototype.parseExprAtom=function(t){return this.type===qt.jsxText?this.jsx_parseText(this.value):this.type===qt.jsxTagStart?this.jsx_parseElement():e.prototype.parseExprAtom.call(this,t)},i.prototype.readToken=function(t){var i=this.curContext();if(i===Ut)return this.jsx_readToken();if(i===Bt||i===Mt){if(Dt(t))return this.jsx_readWord();if(62==t)return++this.pos,this.finishToken(qt.jsxTagEnd);if((34===t||39===t)&&i==Bt)return this.jsx_readString(t)}return 60===t&&this.exprAllowed&&33!==this.input.charCodeAt(this.pos+1)?(++this.pos,this.finishToken(qt.jsxTagStart)):e.prototype.readToken.call(this,t)},i.prototype.updateContext=function(t){if(this.type==Tt.braceL){var i=this.curContext();i==Bt?this.context.push(Ot.b_expr):i==Ut?this.context.push(Ot.b_tmpl):e.prototype.updateContext.call(this,t),this.exprAllowed=!0}else{if(this.type!==Tt.slash||t!==qt.jsxTagStart)return e.prototype.updateContext.call(this,t);this.context.length-=2,this.context.push(Mt),this.exprAllowed=!1}},i}(e)}({allowNamespaces:!1!==t.allowNamespaces,allowNamespacedObjects:!!t.allowNamespacedObjects},e)}};Jt.tokTypes=qt;var Wt,Ht=function(t,e){return t(e={exports:{}},e.exports),e.exports}((function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.DynamicImportKey=void 0;var i=function(){function t(t,e){for(var i=0;ie)return{line:i+1,column:e-n,char:i};n=a}throw new Error("Could not determine location of character")}function ee(t,e){for(var i="";e--;)i+=t;return i}function ie(t,e,i){void 0===i&&(i=1);var s=Math.max(e.line-5,0),r=e.line,n=String(r).length,a=t.split("\n").slice(s,r),o=a[a.length-1].slice(0,e.column).replace(/\t/g," ").length,p=a.map((function(t,e){return i=n,(r=String(e+s+1))+ee(" ",i-r.length)+" : "+t.replace(/\t/g," ");var i,r})).join("\n");return p+="\n"+ee(" ",n+3+o)+ee("^",i)}"do if in for let new try var case else enum eval null this true void with await break catch class const false super throw while yield delete export import public return static switch typeof default extends finally package private continue debugger function arguments interface protected implements instanceof".split(" ").forEach((function(t){return Yt[t]=!0})),Zt.prototype={addDeclaration:function(t,e){for(var i=0,s=Kt(t);i1&&(c=e(n),o.push((function(e,i,o){t.prependRight(r.start,(a?"":i+"var ")+c+" = "),t.overwrite(r.start,s=r.start+1,n),t.appendLeft(s,o),t.overwrite(r.start,s=r.start+1,(a?"":i+"var ")+c+" = "+n+o),t.move(r.start,s,e)}))),pe(t,e,i,r,c,a,o);break;case"ArrayPattern":if(t.remove(s,s=r.start),r.elements.filter(Boolean).length>1){var l=e(n);o.push((function(e,i,o){t.prependRight(r.start,(a?"":i+"var ")+l+" = "),t.overwrite(r.start,s=r.start+1,n,{contentOnly:!0}),t.appendLeft(s,o),t.move(r.start,s,e)})),r.elements.forEach((function(r,n){r&&("RestElement"===r.type?he(t,e,i,s,r.argument,l+".slice("+n+")",a,o):he(t,e,i,s,r,l+"["+n+"]",a,o),s=r.end)}))}else{var u=re(r.elements,Boolean),d=r.elements[u];"RestElement"===d.type?he(t,e,i,s,d.argument,n+".slice("+u+")",a,o):he(t,e,i,s,d,n+"["+u+"]",a,o),s=d.end}t.remove(s,r.end);break;default:throw new Error("Unexpected node type in destructuring ("+r.type+")")}}var ce=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.createScope=function(){var t=this;this.parentIsFunction=/Function/.test(this.parent.type),this.isFunctionBlock=this.parentIsFunction||"Root"===this.parent.type,this.scope=new Zt({block:!this.isFunctionBlock,parent:this.parent.findScope(!1),declare:function(e){return t.createdDeclarations.push(e)}}),this.parentIsFunction&&this.parent.params.forEach((function(e){t.scope.addDeclaration(e,"param")}))},e.prototype.initialise=function(t){this.thisAlias=null,this.argumentsAlias=null,this.defaultParameters=[],this.createdDeclarations=[],this.scope||this.createScope(),this.body.forEach((function(e){return e.initialise(t)})),this.scope.consolidate()},e.prototype.findLexicalBoundary=function(){return"Program"===this.type||/^Function/.test(this.parent.type)?this:this.parent.findLexicalBoundary()},e.prototype.findScope=function(t){return t&&!this.isFunctionBlock?this.parent.findScope(t):this.scope},e.prototype.getArgumentsAlias=function(){return this.argumentsAlias||(this.argumentsAlias=this.scope.createIdentifier("arguments")),this.argumentsAlias},e.prototype.getArgumentsArrayAlias=function(){return this.argumentsArrayAlias||(this.argumentsArrayAlias=this.scope.createIdentifier("argsArray")),this.argumentsArrayAlias},e.prototype.getThisAlias=function(){return this.thisAlias||(this.thisAlias=this.scope.createIdentifier("this")),this.thisAlias},e.prototype.getIndentation=function(){if(void 0===this.indentation){for(var t=this.program.magicString.original,e=this.synthetic||!this.body.length,i=e?this.start:this.body[0].start;i&&"\n"!==t[i];)i-=1;for(this.indentation="";;){var s=t[i+=1];if(" "!==s&&"\t"!==s)break;this.indentation+=s}for(var r=this.program.magicString.getIndentString(),n=this.parent;n;)"constructor"!==n.kind||n.parent.parent.superClass||(this.indentation=this.indentation.replace(r,"")),n=n.parent;e&&(this.indentation+=r)}return this.indentation},e.prototype.transpile=function(e,i){var s,r,n=this,a=this.getIndentation(),o=[];if(this.argumentsAlias&&o.push((function(t,i,s){var r=i+"var "+n.argumentsAlias+" = arguments"+s;e.appendLeft(t,r)})),this.thisAlias&&o.push((function(t,i,s){var r=i+"var "+n.thisAlias+" = this"+s;e.appendLeft(t,r)})),this.argumentsArrayAlias&&o.push((function(t,i,s){var r=n.scope.createIdentifier("i"),o=i+"var "+r+" = arguments.length, "+n.argumentsArrayAlias+" = Array("+r+");\n"+a+"while ( "+r+"-- ) "+n.argumentsArrayAlias+"["+r+"] = arguments["+r+"]"+s;e.appendLeft(t,o)})),/Function/.test(this.parent.type)?this.transpileParameters(this.parent.params,e,i,a,o):"CatchClause"===this.parent.type&&this.transpileParameters([this.parent.param],e,i,a,o),i.letConst&&this.isFunctionBlock&&this.transpileBlockScopedIdentifiers(e),t.prototype.transpile.call(this,e,i),this.createdDeclarations.length&&o.push((function(t,i,s){var r=i+"var "+n.createdDeclarations.join(", ")+s;e.appendLeft(t,r)})),this.synthetic)if("ArrowFunctionExpression"===this.parent.type){var p=this.body[0];o.length?(e.appendLeft(this.start,"{").prependRight(this.end,this.parent.getIndentation()+"}"),e.prependRight(p.start,"\n"+a+"return "),e.appendLeft(p.end,";\n")):i.arrow&&(e.prependRight(p.start,"{ return "),e.appendLeft(p.end,"; }"))}else o.length&&e.prependRight(this.start,"{").appendLeft(this.end,"}");r=this.body[0],s=r&&"ExpressionStatement"===r.type&&"Literal"===r.expression.type&&"use strict"===r.expression.value?this.body[0].end:this.synthetic||"Root"===this.parent.type?this.start:this.start+1;var h="\n"+a,c=";";o.forEach((function(t,e){e===o.length-1&&(c=";\n"),t(s,h,c)}))},e.prototype.transpileParameters=function(t,e,i,s,r){var n=this;t.forEach((function(a){if("AssignmentPattern"===a.type&&"Identifier"===a.left.type)i.defaultParameter&&r.push((function(t,i,s){var r=i+"if ( "+a.left.name+" === void 0 ) "+a.left.name;e.prependRight(a.left.end,r).move(a.left.end,a.right.end,t).appendLeft(a.right.end,s)}));else if("RestElement"===a.type)i.spreadRest&&r.push((function(i,r,o){var p=t[t.length-2];if(p)e.remove(p?p.end:a.start,a.end);else{for(var h=a.start,c=a.end;/\s/.test(e.original[h-1]);)h-=1;for(;/\s/.test(e.original[c]);)c+=1;e.remove(h,c)}var l=a.argument.name,u=n.scope.createIdentifier("len"),d=t.length-1;d?e.prependRight(i,r+"var "+l+" = [], "+u+" = arguments.length - "+d+";\n"+s+"while ( "+u+"-- > 0 ) "+l+"[ "+u+" ] = arguments[ "+u+" + "+d+" ]"+o):e.prependRight(i,r+"var "+l+" = [], "+u+" = arguments.length;\n"+s+"while ( "+u+"-- ) "+l+"[ "+u+" ] = arguments[ "+u+" ]"+o)}));else if("Identifier"!==a.type&&i.parameterDestructuring){var o=n.scope.createIdentifier("ref");ae(e,(function(t){return n.scope.createIdentifier(t)}),(function(t){var e=t.name;return n.scope.resolveName(e)}),a,o,!1,r),e.prependRight(a.start,o)}}))},e.prototype.transpileBlockScopedIdentifiers=function(t){var e=this;Object.keys(this.scope.blockScopedDeclarations).forEach((function(i){for(var s=0,r=e.scope.blockScopedDeclarations[i];s0},e}(Qt);function ye(t,e){var i=e.findDeclaration(t.name);if(i&&"const"===i.kind)throw new se(t.name+" is read-only",t)}var ge=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.initialise=function(e){if("Identifier"===this.left.type){var i=this.findScope(!1).findDeclaration(this.left.name),s=i&&i.node.ancestor(3);s&&"ForStatement"===s.type&&s.body.contains(this)&&(s.reassigned[this.left.name]=!0)}t.prototype.initialise.call(this,e)},e.prototype.transpile=function(e,i){"Identifier"===this.left.type&&ye(this.left,this.findScope(!1)),"**="===this.operator&&i.exponentiation?this.transpileExponentiation(e,i):/Pattern/.test(this.left.type)&&i.destructuring&&this.transpileDestructuring(e),t.prototype.transpile.call(this,e,i)},e.prototype.transpileDestructuring=function(t){var e=this,i=this.findScope(!0),s=this.findScope(!1),r=i.createDeclaration("assign");t.appendRight(this.left.end,"("+r),t.appendLeft(this.right.end,", ");var n=[];ae(t,(function(t){return i.createDeclaration(t)}),(function(t){var e=s.resolveName(t.name);return ye(t,s),e}),this.left,r,!0,n);var a=", ";n.forEach((function(t,i){i===n.length-1&&(a=""),t(e.end,"",a)})),"ExpressionStatement"===this.unparenthesizedParent().type?t.prependRight(this.end,")"):t.appendRight(this.end,", "+r+")")},e.prototype.transpileExponentiation=function(t){for(var e,i=this.findScope(!1),s=this.left.end;"*"!==t.original[s];)s+=1;t.remove(s,s+2);var r=this.left.unparenthesize();if("Identifier"===r.type)e=i.resolveName(r.name);else if("MemberExpression"===r.type){var n,a,o=!1,p=!1,h=this.findNearest(/(?:Statement|Declaration)$/),c=h.getIndentation();"Identifier"===r.property.type?a=r.computed?i.resolveName(r.property.name):r.property.name:(a=i.createDeclaration("property"),p=!0),"Identifier"===r.object.type?n=i.resolveName(r.object.name):(n=i.createDeclaration("object"),o=!0),r.start===h.start?o&&p?(t.prependRight(h.start,n+" = "),t.overwrite(r.object.end,r.property.start,";\n"+c+a+" = "),t.overwrite(r.property.end,r.end,";\n"+c+n+"["+a+"]")):o?(t.prependRight(h.start,n+" = "),t.appendLeft(r.object.end,";\n"+c),t.appendLeft(r.object.end,n)):p&&(t.prependRight(r.property.start,a+" = "),t.appendLeft(r.property.end,";\n"+c),t.move(r.property.start,r.property.end,this.start),t.appendLeft(r.object.end,"["+a+"]"),t.remove(r.object.end,r.property.start),t.remove(r.property.end,r.end)):(o&&p?(t.prependRight(r.start,"( "+n+" = "),t.overwrite(r.object.end,r.property.start,", "+a+" = "),t.overwrite(r.property.end,r.end,", "+n+"["+a+"]")):o?(t.prependRight(r.start,"( "+n+" = "),t.appendLeft(r.object.end,", "+n)):p&&(t.prependRight(r.property.start,"( "+a+" = "),t.appendLeft(r.property.end,", "),t.move(r.property.start,r.property.end,r.start),t.overwrite(r.object.end,r.property.start,"["+a+"]"),t.remove(r.property.end,r.end)),p&&t.appendLeft(this.end," )")),e=n+(r.computed||p?"["+a+"]":"."+a)}t.prependRight(this.right.start,"Math.pow( "+e+", "),t.appendLeft(this.right.end," )")},e}(Qt),ve=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.transpile=function(e,i){"**"===this.operator&&i.exponentiation&&(e.prependRight(this.start,"Math.pow( "),e.overwrite(this.left.end,this.right.start,", "),e.appendLeft(this.end," )")),t.prototype.transpile.call(this,e,i)},e}(Qt),xe=/(?:For(?:In|Of)?|While)Statement/,be=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.initialise=function(){var t=this.findNearest(xe),e=this.findNearest("SwitchCase");t&&(!e||t.depth>e.depth)&&(t.canBreak=!0,this.loop=t)},e.prototype.transpile=function(t){if(this.loop&&this.loop.shouldRewriteAsFunction){if(this.label)throw new se("Labels are not currently supported in a loop with locally-scoped variables",this);t.overwrite(this.start,this.start+5,"return 'break'")}},e}(Qt),_e=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.initialise=function(e){if(e.spreadRest&&this.arguments.length>1)for(var i=this.findLexicalBoundary(),s=this.arguments.length;s--;){var r=this.arguments[s];"SpreadElement"===r.type&&le(r.argument)&&(this.argumentsArrayAlias=i.getArgumentsArrayAlias())}t.prototype.initialise.call(this,e)},e.prototype.transpile=function(e,i){if(i.spreadRest&&this.arguments.length){var s,r=!1,n=this.arguments[0];if(1===this.arguments.length?"SpreadElement"===n.type&&(e.remove(n.start,n.argument.start),r=!0):r=ue(e,this.arguments,n.start,this.argumentsArrayAlias),r){var a=null;if("Super"===this.callee.type?a=this.callee:"MemberExpression"===this.callee.type&&"Super"===this.callee.object.type&&(a=this.callee.object),a||"MemberExpression"!==this.callee.type)s="void 0";else if("Identifier"===this.callee.object.type)s=this.callee.object.name;else{s=this.findScope(!0).createDeclaration("ref");var o=this.callee.object;e.prependRight(o.start,"("+s+" = "),e.appendLeft(o.end,")")}e.appendLeft(this.callee.end,".apply"),a?(a.noCall=!0,this.arguments.length>1&&("SpreadElement"!==n.type&&e.prependRight(n.start,"[ "),e.appendLeft(this.arguments[this.arguments.length-1].end," )"))):1===this.arguments.length?e.prependRight(n.start,s+", "):("SpreadElement"===n.type?e.appendLeft(n.start,s+", "):e.appendLeft(n.start,s+", [ "),e.appendLeft(this.arguments[this.arguments.length-1].end," )"))}}i.trailingFunctionCommas&&this.arguments.length&&fe(e,this.arguments[this.arguments.length-1].end),t.prototype.transpile.call(this,e,i)},e}(Qt),ke=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.transpile=function(e,i,s,r){var n=this;if(i.classes){var a=this.parent.name,o=e.getIndentString(),p=this.getIndentation()+(s?o:""),h=p+o,c=re(this.body,(function(t){return"constructor"===t.kind})),l=this.body[c],u="",d="";if(this.body.length?(e.remove(this.start,this.body[0].start),e.remove(this.body[this.body.length-1].end,this.end)):e.remove(this.start,this.end),l){l.value.body.isConstructorBody=!0;var f=this.body[c-1],m=this.body[c+1];c>0&&(e.remove(f.end,l.start),e.move(l.start,m?m.start:this.end-1,this.body[0].start)),s||e.appendLeft(l.end,";")}var y=!1!==this.program.options.namedFunctionExpressions,g=y||this.parent.superClass||"ClassDeclaration"!==this.parent.type;if(this.parent.superClass){var v="if ( "+r+" ) "+a+".__proto__ = "+r+";\n"+p+a+".prototype = Object.create( "+r+" && "+r+".prototype );\n"+p+a+".prototype.constructor = "+a+";";if(l)u+="\n\n"+p+v;else u+=(v="function "+a+" () {"+(r?"\n"+h+r+".apply(this, arguments);\n"+p+"}":"}")+(s?"":";")+(this.body.length?"\n\n"+p:"")+v)+"\n\n"+p}else if(!l){var x="function "+(g?a+" ":"")+"() {}";"ClassDeclaration"===this.parent.type&&(x+=";"),this.body.length&&(x+="\n\n"+p),u+=x}var b,_,k=this.findScope(!1),S=[],w=[];if(this.body.forEach((function(t,s){if(("get"===t.kind||"set"===t.kind)&&i.getterSetter)throw new se("getters and setters are not supported. Use `transforms: { getterSetter: false }` to skip transformation and disable this error",t);if("constructor"!==t.kind){if(t.static){var r=" "==e.original[t.start+6]?7:6;e.remove(t.start,t.start+r)}var o,h="method"!==t.kind,l=t.key.name;(Yt[l]||t.value.body.scope.references[l])&&(l=k.createIdentifier(l));var u=!1;if(t.computed||"Literal"!==t.key.type||(u=!0,t.computed=!0),h){if(t.computed)throw new Error("Computed accessor properties are not currently supported");e.remove(t.start,t.key.start),t.static?(~w.indexOf(t.key.name)||w.push(t.key.name),_||(_=k.createIdentifier("staticAccessors")),o=""+_):(~S.indexOf(t.key.name)||S.push(t.key.name),b||(b=k.createIdentifier("prototypeAccessors")),o=""+b)}else o=t.static?""+a:a+".prototype";t.computed||(o+="."),(c>0&&s===c+1||0===s&&c===n.body.length-1)&&(o="\n\n"+p+o);var d=t.key.end;if(t.computed)if(u)e.prependRight(t.key.start,"["),e.appendLeft(t.key.end,"]");else{for(;"]"!==e.original[d];)d+=1;d+=1}var f=t.computed||h||!y?"":l+" ",m=(h?"."+t.kind:"")+" = function"+(t.value.generator?"* ":" ")+f;e.remove(d,t.value.start),e.prependRight(t.value.start,m),e.appendLeft(t.end,";"),t.value.generator&&e.remove(t.start,t.key.start),e.prependRight(t.start,o)}else{var v=g?" "+a:"";e.overwrite(t.key.start,t.key.end,"function"+v)}})),S.length||w.length){var E=[],A=[];S.length&&(E.push("var "+b+" = { "+S.map((function(t){return t+": { configurable: true }"})).join(",")+" };"),A.push("Object.defineProperties( "+a+".prototype, "+b+" );")),w.length&&(E.push("var "+_+" = { "+w.map((function(t){return t+": { configurable: true }"})).join(",")+" };"),A.push("Object.defineProperties( "+a+", "+_+" );")),l&&(u+="\n\n"+p),u+=E.join("\n"+p),l||(u+="\n\n"+p),d+="\n\n"+p+A.join("\n"+p)}l?e.appendLeft(l.end,u):e.prependRight(this.start,u),e.appendLeft(this.end,d)}t.prototype.transpile.call(this,e,i)},e}(Qt);var Se=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.initialise=function(e){this.id?(this.name=this.id.name,this.findScope(!0).addDeclaration(this.id,"class")):this.name=this.findScope(!0).createIdentifier("defaultExport"),t.prototype.initialise.call(this,e)},e.prototype.transpile=function(t,e){if(e.classes){this.superClass||function(t,e){var i=t.start,s=t.end,r=e.getIndentString(),n=r.length,a=i-n;t.program.indentExclusions[a]||e.original.slice(a,i)!==r||e.remove(a,i);for(var o,p=new RegExp(r+"\\S","g"),h=e.original.slice(i,s);o=p.exec(h);){var c=i+o.index;t.program.indentExclusions[c]||e.remove(c,c+n)}}(this.body,t);var i=this.superClass&&(this.superClass.name||"superclass"),s=this.getIndentation(),r=s+t.getIndentString(),n="ExportDefaultDeclaration"===this.parent.type;n&&t.remove(this.parent.start,this.start);var a=this.start;this.id?(t.overwrite(a,this.id.start,"var "),a=this.id.end):t.prependLeft(a,"var "+this.name),this.superClass?this.superClass.end===this.body.start?(t.remove(a,this.superClass.start),t.appendLeft(a," = /*@__PURE__*/(function ("+i+") {\n"+r)):(t.overwrite(a,this.superClass.start," = "),t.overwrite(this.superClass.end,this.body.start,"/*@__PURE__*/(function ("+i+") {\n"+r)):a===this.body.start?t.appendLeft(a," = "):t.overwrite(a,this.body.start," = "),this.body.transpile(t,e,!!this.superClass,i);var o=n?"\n\n"+s+"export default "+this.name+";":"";this.superClass?(t.appendLeft(this.end,"\n\n"+r+"return "+this.name+";\n"+s+"}("),t.move(this.superClass.start,this.superClass.end,this.end),t.prependRight(this.end,"));"+o)):o&&t.prependRight(this.end,o)}else this.body.transpile(t,e,!1,null)},e}(Qt),we=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.initialise=function(e){this.name=(this.id?this.id.name:"VariableDeclarator"===this.parent.type?this.parent.id.name:"AssignmentExpression"!==this.parent.type?null:"Identifier"===this.parent.left.type?this.parent.left.name:"MemberExpression"===this.parent.left.type?this.parent.left.property.name:null)||this.findScope(!0).createIdentifier("anonymous"),t.prototype.initialise.call(this,e)},e.prototype.transpile=function(t,e){if(e.classes){var i=this.superClass&&(this.superClass.name||"superclass"),s=this.getIndentation(),r=s+t.getIndentString();this.superClass?(t.remove(this.start,this.superClass.start),t.remove(this.superClass.end,this.body.start),t.appendRight(this.start,"/*@__PURE__*/(function ("+i+") {\n"+r)):t.overwrite(this.start,this.body.start,"/*@__PURE__*/(function () {\n"+r),this.body.transpile(t,e,!0,i);var n="";this.superClass&&(n=t.slice(this.superClass.start,this.superClass.end),t.remove(this.superClass.start,this.superClass.end)),t.appendLeft(this.end,"\n\n"+r+"return "+this.name+";\n"+s+"}("+n+"))")}else this.body.transpile(t,e,!1)},e}(Qt),Ee=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.transpile=function(t){if(this.findNearest(xe).shouldRewriteAsFunction){if(this.label)throw new se("Labels are not currently supported in a loop with locally-scoped variables",this);t.overwrite(this.start,this.start+8,"return")}},e}(Qt),Ae=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.initialise=function(e){if(e.moduleExport)throw new se("export is not supported",this);t.prototype.initialise.call(this,e)},e}(Qt),Ce=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.initialise=function(e){if(e.moduleExport)throw new se("export is not supported",this);t.prototype.initialise.call(this,e)},e}(Qt),Ie=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.findScope=function(t){return t||!this.createdScope?this.parent.findScope(t):this.body.scope},e.prototype.initialise=function(e){if(this.body.createScope(),this.createdScope=!0,this.reassigned=Object.create(null),this.aliases=Object.create(null),this.thisRefs=[],t.prototype.initialise.call(this,e),e.letConst)for(var i=Object.keys(this.body.scope.declarations),s=i.length;s--;){for(var r=i[s],n=this.body.scope.declarations[r],a=n.instances.length;a--;){var o=n.instances[a].findNearest(/Function/);if(o&&o.depth>this.depth){this.shouldRewriteAsFunction=!0;for(var p=0,h=this.thisRefs;pe.depth&&(this.alias=e.getArgumentsAlias()),s&&s.body.contains(this)&&s.depth>e.depth&&(this.alias=e.getArgumentsAlias())}this.findScope(!1).addReference(this)}},e.prototype.transpile=function(t){this.alias&&t.overwrite(this.start,this.end,this.alias,{storeName:!0,contentOnly:!0})},e}(Qt),je=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.initialise=function(e){t.prototype.initialise.call(this,e)},e.prototype.transpile=function(e,i){("BlockStatement"!==this.consequent.type||"BlockStatement"===this.consequent.type&&this.consequent.synthetic)&&(e.appendLeft(this.consequent.start,"{ "),e.prependRight(this.consequent.end," }")),this.alternate&&"IfStatement"!==this.alternate.type&&("BlockStatement"!==this.alternate.type||"BlockStatement"===this.alternate.type&&this.alternate.synthetic)&&(e.appendLeft(this.alternate.start,"{ "),e.prependRight(this.alternate.end," }")),t.prototype.transpile.call(this,e,i)},e}(Qt),Ve=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.initialise=function(e){if(e.moduleImport)throw new se("import is not supported",this);t.prototype.initialise.call(this,e)},e}(Qt),De=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.initialise=function(e){this.findScope(!0).addDeclaration(this.local,"import"),t.prototype.initialise.call(this,e)},e}(Qt),Fe=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.initialise=function(e){this.findScope(!0).addDeclaration(this.local,"import"),t.prototype.initialise.call(this,e)},e}(Qt),Be=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.transpile=function(e,i){var s,r=this.name,n=r.start,a=r.name,o=this.value?this.value.start:this.name.end;e.overwrite(n,o,(/-/.test(s=a)?"'"+s+"'":s)+": "+(this.value?"":"true")),t.prototype.transpile.call(this,e,i)},e}(Qt);var Me=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.transpile=function(t){var e,i=!0,s=this.parent.children[this.parent.children.length-1];(s&&("JSXText"===(e=s).type&&!/\S/.test(e.value)&&/\n/.test(e.value))||this.parent.openingElement.attributes.length)&&(i=!1),t.overwrite(this.start,this.end,i?" )":")")},e}(Qt);var Ue=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.transpile=function(t){var e,i=!0,s=this.parent.children[this.parent.children.length-1];s&&("JSXText"===(e=s).type&&!/\S/.test(e.value)&&/\n/.test(e.value))&&(i=!1),t.overwrite(this.start,this.end,i?" )":")")},e}(Qt);function qe(t,e){return t=t.replace(/\u00a0/g," "),e&&/\n/.test(t)&&(t=t.replace(/\s+$/,"")),t=t.replace(/^\n\r?\s+/,"").replace(/\s*\n\r?\s*/gm," "),JSON.stringify(t)}var Xe=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.transpile=function(e,i){t.prototype.transpile.call(this,e,i);var s=this.children.filter((function(t){return"JSXText"!==t.type||(/\S/.test(t.raw)||!/\n/.test(t.raw))}));if(s.length){var r,n=(this.openingElement||this.openingFragment).end;for(r=0;r0&&(c.start===n?e.prependRight(n,", "):e.overwrite(n,c.start,", ")),h&&"JSXSpreadAttribute"!==c.type){var l=this.attributes[a-1],u=this.attributes[a+1];l&&"JSXSpreadAttribute"!==l.type||e.prependRight(c.start,"{ "),u&&"JSXSpreadAttribute"!==u.type||e.appendLeft(c.end," }")}n=c.end}if(h)if(1===r)p=s?"',":",";else{if(!this.program.options.objectAssign)throw new se("Mixed JSX attributes ending in spread requires specified objectAssign option with 'Object.assign' or polyfill helper.",this);p=s?"', "+this.program.options.objectAssign+"({},":", "+this.program.options.objectAssign+"({},",o=")"}else p=s?"', {":", {",o=" }";e.prependRight(this.name.end,p),o&&e.appendLeft(this.attributes[r-1].end,o)}else e.appendLeft(this.name.end,s?"', null":", null"),n=this.name.end;this.selfClosing?e.overwrite(n,this.end,this.attributes.length?")":" )"):e.remove(n,this.end)},e}(Qt),ze=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.transpile=function(t){t.overwrite(this.start,this.end,this.program.jsx+"( React.Fragment, null")},e}(Qt),Ge=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.transpile=function(e,i){e.remove(this.start,this.argument.start),e.remove(this.argument.end,this.end),t.prototype.transpile.call(this,e,i)},e}(Qt),Qe=/[\u2028-\u2029]/g,Ke={ArrayExpression:de,ArrowFunctionExpression:me,AssignmentExpression:ge,BinaryExpression:ve,BreakStatement:be,CallExpression:_e,ClassBody:ke,ClassDeclaration:Se,ClassExpression:we,ContinueStatement:Ee,DoWhileStatement:Ie,ExportNamedDeclaration:Ce,ExportDefaultDeclaration:Ae,ForStatement:Le,ForInStatement:Pe,ForOfStatement:Ne,FunctionDeclaration:Te,FunctionExpression:Re,Identifier:Oe,IfStatement:je,ImportDeclaration:Ve,ImportDefaultSpecifier:De,ImportSpecifier:Fe,JSXAttribute:Be,JSXClosingElement:Me,JSXClosingFragment:Ue,JSXElement:Xe,JSXExpressionContainer:Je,JSXFragment:We,JSXOpeningElement:He,JSXOpeningFragment:ze,JSXSpreadAttribute:Ge,Literal:function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.initialise=function(){"string"==typeof this.value&&this.program.indentExclusionElements.push(this)},e.prototype.transpile=function(t,e){if(e.numericLiteral&&this.raw.match(/^0[bo]/i)&&t.overwrite(this.start,this.end,String(this.value),{storeName:!0,contentOnly:!0}),this.regex){var i=this.regex,s=i.pattern,n=i.flags;if(e.stickyRegExp&&/y/.test(n))throw new se("Regular expression sticky flag is not supported",this);e.unicodeRegExp&&/u/.test(n)&&t.overwrite(this.start,this.end,"/"+r()(s,n)+"/"+n.replace("u",""),{contentOnly:!0})}else"string"==typeof this.value&&this.value.match(Qe)&&t.overwrite(this.start,this.end,this.raw.replace(Qe,(function(t){return"\u2028"==t?"\\u2028":"\\u2029"})),{contentOnly:!0})},e}(Qt),MemberExpression:function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.transpile=function(e,i){i.reservedProperties&&Yt[this.property.name]&&(e.overwrite(this.object.end,this.property.start,"['"),e.appendLeft(this.property.end,"']")),t.prototype.transpile.call(this,e,i)},e}(Qt),NewExpression:function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.initialise=function(e){if(e.spreadRest&&this.arguments.length)for(var i=this.findLexicalBoundary(),s=this.arguments.length;s--;){var r=this.arguments[s];if("SpreadElement"===r.type&&le(r.argument)){this.argumentsArrayAlias=i.getArgumentsArrayAlias();break}}t.prototype.initialise.call(this,e)},e.prototype.transpile=function(e,i){if(t.prototype.transpile.call(this,e,i),i.spreadRest&&this.arguments.length){var s=this.arguments[0];ue(e,this.arguments,s.start,this.argumentsArrayAlias,!0)&&(e.prependRight(this.start+"new".length," (Function.prototype.bind.apply("),e.overwrite(this.callee.end,s.start,", [ null ].concat( "),e.appendLeft(this.end," ))"))}this.arguments.length&&fe(e,this.arguments[this.arguments.length-1].end)},e}(Qt),ObjectExpression:function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.transpile=function(e,i){t.prototype.transpile.call(this,e,i);for(var s=this.start+1,r=0,n=0,a=null,o=null,p=0;pI&&e.remove(I,w.value.start),e.prependLeft(I," = ")):e.overwrite(w.start,w.key.end+1,"["+e.slice(w.start,w.key.end)+"] = "),!w.method||!w.computed&&i.conciseMethodProperty||(w.value.generator&&e.remove(w.start,w.key.start),e.prependRight(w.value.start,"function"+(w.value.generator?"*":"")+" "))}else"SpreadElement"===w.type?m&&S>0&&(x||(x=this.properties[S-1]),e.appendLeft(x.end,", "+m+" )"),x=null,m=null):(!k&&r&&(e.prependRight(w.start,"{"),e.appendLeft(w.end,"}")),_=!0);if(k&&("SpreadElement"===w.type||w.computed)){var L=_?this.properties[this.properties.length-1].end:this.end-1;","==e.original[L]&&++L;var P=e.slice(L,v);e.prependLeft(E,P),e.remove(L,v),k=!1}var N=w.end;if(Sthis.nearestFunction.depth)&&(this.loop.canReturn=!0,this.shouldWrap=!0),this.argument&&this.argument.initialise(t)},e.prototype.transpile=function(t,e){var i=this.shouldWrap&&this.loop&&this.loop.shouldRewriteAsFunction;this.argument?(i&&t.prependRight(this.argument.start,"{ v: "),this.argument.transpile(t,e),i&&t.appendLeft(this.argument.end," }")):i&&t.appendLeft(this.start+6," {}")},e}(Qt),Super:function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.initialise=function(t){if(t.classes){if(this.method=this.findNearest("MethodDefinition"),!this.method)throw new se("use of super outside class method",this);var e=this.findNearest("ClassBody").parent;if(this.superClassName=e.superClass&&(e.superClass.name||"superclass"),!this.superClassName)throw new se("super used in base class",this);if(this.isCalled="CallExpression"===this.parent.type&&this===this.parent.callee,"constructor"!==this.method.kind&&this.isCalled)throw new se("super() not allowed outside class constructor",this);if(this.isMember="MemberExpression"===this.parent.type,!this.isCalled&&!this.isMember)throw new se("Unexpected use of `super` (expected `super(...)` or `super.*`)",this)}if(t.arrow){var i=this.findLexicalBoundary(),s=this.findNearest("ArrowFunctionExpression"),r=this.findNearest(xe);s&&s.depth>i.depth&&(this.thisAlias=i.getThisAlias()),r&&r.body.contains(this)&&r.depth>i.depth&&(this.thisAlias=i.getThisAlias())}},e.prototype.transpile=function(t,e){if(e.classes){var i=this.isCalled||this.method.static?this.superClassName:this.superClassName+".prototype";t.overwrite(this.start,this.end,i,{storeName:!0,contentOnly:!0});var s=this.isCalled?this.parent:this.parent.parent;if(s&&"CallExpression"===s.type){this.noCall||t.appendLeft(s.callee.end,".call");var r=this.thisAlias||"this";s.arguments.length?t.appendLeft(s.arguments[0].start,r+", "):t.appendLeft(s.end-1,""+r)}}},e}(Qt),TaggedTemplateExpression:function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.initialise=function(e){if(e.templateString&&!e.dangerousTaggedTemplateString)throw new se("Tagged template strings are not supported. Use `transforms: { templateString: false }` to skip transformation and disable this error, or `transforms: { dangerousTaggedTemplateString: true }` if you know what you're doing",this);t.prototype.initialise.call(this,e)},e.prototype.transpile=function(e,i){if(i.templateString&&i.dangerousTaggedTemplateString){var s=this.quasi.expressions.concat(this.quasi.quasis).sort((function(t,e){return t.start-e.start})),r=this.program.body.scope,n=this.quasi.quasis.map((function(t){return JSON.stringify(t.value.cooked)})).join(", "),a=this.program.templateLiteralQuasis[n];a||(a=r.createIdentifier("templateObject"),e.prependRight(this.program.prependAt,"var "+a+" = Object.freeze(["+n+"]);\n"),this.program.templateLiteralQuasis[n]=a),e.overwrite(this.tag.end,s[0].start,"("+a);var o=s[0].start;s.forEach((function(t){"TemplateElement"===t.type?e.remove(o,t.end):e.overwrite(o,t.start,", "),o=t.end})),e.overwrite(o,this.end,")")}t.prototype.transpile.call(this,e,i)},e}(Qt),TemplateElement:function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.initialise=function(){this.program.indentExclusionElements.push(this)},e}(Qt),TemplateLiteral:function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.transpile=function(e,i){if(t.prototype.transpile.call(this,e,i),i.templateString&&"TaggedTemplateExpression"!==this.parent.type){var s=this.expressions.concat(this.quasis).sort((function(t,e){return t.start-e.start||t.end-e.end})).filter((function(t,e){return"TemplateElement"!==t.type||(!!t.value.raw||!e)}));if(s.length>=3){var r=s[0],n=s[2];"TemplateElement"===r.type&&""===r.value.raw&&"TemplateElement"===n.type&&s.shift()}var a=!(1===this.quasis.length&&0===this.expressions.length||"TemplateLiteral"===this.parent.type||"AssignmentExpression"===this.parent.type||"AssignmentPattern"===this.parent.type||"VariableDeclarator"===this.parent.type||"BinaryExpression"===this.parent.type&&"+"===this.parent.operator);a&&e.appendRight(this.start,"(");var o=this.start;s.forEach((function(t,i){var s=0===i?a?"(":"":" + ";if("TemplateElement"===t.type)e.overwrite(o,t.end,s+JSON.stringify(t.value.cooked));else{var r="Identifier"!==t.type;r&&(s+="("),e.remove(o,t.start),s&&e.prependRight(t.start,s),r&&e.appendLeft(t.end,")")}o=t.end})),a&&e.appendLeft(o,")"),e.overwrite(o,this.end,"",{contentOnly:!0})}},e}(Qt),ThisExpression:function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.initialise=function(t){var e=this.findLexicalBoundary();if(t.letConst)for(var i=this.findNearest(xe);i&&i.depth>e.depth;)i.thisRefs.push(this),i=i.parent.findNearest(xe);if(t.arrow){var s=this.findNearest("ArrowFunctionExpression");s&&s.depth>e.depth&&(this.alias=e.getThisAlias())}},e.prototype.transpile=function(t){this.alias&&t.overwrite(this.start,this.end,this.alias,{storeName:!0,contentOnly:!0})},e}(Qt),UpdateExpression:function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.initialise=function(e){if("Identifier"===this.argument.type){var i=this.findScope(!1).findDeclaration(this.argument.name),s=i&&i.node.ancestor(3);s&&"ForStatement"===s.type&&s.body.contains(this)&&(s.reassigned[this.argument.name]=!0)}t.prototype.initialise.call(this,e)},e.prototype.transpile=function(e,i){"Identifier"===this.argument.type&&ye(this.argument,this.findScope(!1)),t.prototype.transpile.call(this,e,i)},e}(Qt),VariableDeclaration:function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.initialise=function(t){this.scope=this.findScope("var"===this.kind),this.declarations.forEach((function(e){return e.initialise(t)}))},e.prototype.transpile=function(t,e){var i=this,s=this.getIndentation(),r=this.kind;if(e.letConst&&"var"!==r&&(r="var",t.overwrite(this.start,this.start+this.kind.length,r,{contentOnly:!0,storeName:!0})),e.destructuring&&"ForOfStatement"!==this.parent.type&&"ForInStatement"!==this.parent.type){var n,a=this.start;this.declarations.forEach((function(r,o){if(r.transpile(t,e),"Identifier"===r.id.type)o>0&&"Identifier"!==i.declarations[o-1].id.type&&t.overwrite(a,r.id.start,"var ");else{var p=xe.test(i.parent.type);0===o?t.remove(a,r.id.start):t.overwrite(a,r.id.start,";\n"+s);var h="Identifier"===r.init.type&&!r.init.rewritten,c=h?r.init.alias||r.init.name:r.findScope(!0).createIdentifier("ref");a=r.start;var l=[];h?t.remove(r.id.end,r.end):l.push((function(e,i,s){t.prependRight(r.id.end,"var "+c),t.appendLeft(r.init.end,""+s),t.move(r.id.end,r.end,e)}));var u=r.findScope(!1);ae(t,(function(t){return u.createIdentifier(t)}),(function(t){var e=t.name;return u.resolveName(e)}),r.id,c,p,l);var d=p?"var ":"",f=p?", ":";\n"+s;l.forEach((function(t,e){o===i.declarations.length-1&&e===l.length-1&&(f=p?"":";"),t(r.start,0===e?d:"",f)}))}a=r.end,n="Identifier"!==r.id.type})),n&&this.end>a&&t.overwrite(a,this.end,"",{contentOnly:!0})}else this.declarations.forEach((function(i){i.transpile(t,e)}))},e}(Qt),VariableDeclarator:function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.initialise=function(e){var i=this.parent.kind;"let"===i&&"ForStatement"===this.parent.parent.type&&(i="for.let"),this.parent.scope.addDeclaration(this.id,i),t.prototype.initialise.call(this,e)},e.prototype.transpile=function(t,e){if(!this.init&&e.letConst&&"var"!==this.parent.kind){var i=this.findNearest(/Function|^For(In|Of)?Statement|^(?:Do)?WhileStatement/);!i||/Function/.test(i.type)||this.isLeftDeclaratorOfLoop()||t.appendLeft(this.id.end," = (void 0)")}this.id&&this.id.transpile(t,e),this.init&&this.init.transpile(t,e)},e.prototype.isLeftDeclaratorOfLoop=function(){return this.parent&&"VariableDeclaration"===this.parent.type&&this.parent.parent&&("ForInStatement"===this.parent.parent.type||"ForOfStatement"===this.parent.parent.type)&&this.parent.parent.left&&this.parent.parent.left.declarations[0]===this},e}(Qt),WhileStatement:Ie},$e={Program:["body"],Literal:[]},Ye={IfStatement:"consequent",ForStatement:"body",ForInStatement:"body",ForOfStatement:"body",WhileStatement:"body",DoWhileStatement:"body",ArrowFunctionExpression:"body"};function Ze(t,e,i,s){this.type="Root",this.jsx=s.jsx||"React.createElement",this.options=s,this.source=t,this.magicString=new n.a(t),this.ast=e,this.depth=0,function t(e,i){if(e)if("length"in e)for(var s=e.length;s--;)t(e[s],i);else if(!e.__wrapped){e.__wrapped=!0,$e[e.type]||($e[e.type]=Object.keys(e).filter((function(t){return"object"==typeof e[t]})));var r=Ye[e.type];if(r&&"BlockStatement"!==e[r].type){var n=e[r];e[r]={start:n.start,end:n.end,type:"BlockStatement",body:[n],synthetic:!0}}e.parent=i,e.program=i.program||i,e.depth=i.depth+1,e.keys=$e[e.type],e.indentation=void 0;for(var a=0,o=$e[e.type];a0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by bin/generate-identifier-regex.js\n\n// eslint-disable-next-line comma-spacing\nvar astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 157, 310, 10, 21, 11, 7, 153, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 477, 28, 11, 0, 9, 21, 190, 52, 76, 44, 33, 24, 27, 35, 30, 0, 12, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 85, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 54, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 86, 26, 230, 43, 117, 63, 32, 0, 257, 0, 11, 39, 8, 0, 22, 0, 12, 39, 3, 3, 20, 0, 35, 56, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 270, 921, 103, 110, 18, 195, 2749, 1070, 4050, 582, 8634, 568, 8, 30, 114, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 68, 12, 0, 67, 12, 65, 1, 31, 6129, 15, 754, 9486, 286, 82, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 4149, 196, 60, 67, 1213, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42710, 42, 4148, 12, 221, 3, 5761, 15, 7472, 3104, 541];\n\n// eslint-disable-next-line comma-spacing\nvar astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 525, 10, 176, 2, 54, 14, 32, 9, 16, 3, 46, 10, 54, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 4, 9, 83, 11, 7, 0, 161, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 280, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 19306, 9, 135, 4, 60, 6, 26, 9, 1016, 45, 17, 3, 19723, 1, 5319, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 2214, 6, 110, 6, 6, 9, 792487, 239];\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code, set) {\n var pos = 0x10000;\n for (var i = 0; i < set.length; i += 2) {\n pos += set[i];\n if (pos > code) {\n return false;\n }\n pos += set[i + 1];\n if (pos >= code) {\n return true;\n }\n }\n}\n\n// Test whether a given character code starts an identifier.\n\nfunction isIdentifierStart(code, astral) {\n if (code < 65) {\n return code === 36;\n }\n if (code < 91) {\n return true;\n }\n if (code < 97) {\n return code === 95;\n }\n if (code < 123) {\n return true;\n }\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));\n }\n if (astral === false) {\n return false;\n }\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\n// Test whether a given character is part of an identifier.\n\nfunction isIdentifierChar(code, astral) {\n if (code < 48) {\n return code === 36;\n }\n if (code < 58) {\n return true;\n }\n if (code < 65) {\n return false;\n }\n if (code < 91) {\n return true;\n }\n if (code < 97) {\n return code === 95;\n }\n if (code < 123) {\n return true;\n }\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n }\n if (astral === false) {\n return false;\n }\n return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);\n}\n\n// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between regular\n// expressions and divisions. It is set on all token types that can\n// be followed by an expression (thus, a slash after them would be a\n// regular expression).\n//\n// The `startsExpr` property is used to check if the token ends a\n// `yield` expression. It is set on all token types that either can\n// directly start an expression (like a quotation mark) or can\n// continue an expression (like the body of a string).\n//\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nvar TokenType = function TokenType(label, conf) {\n if (conf === void 0) conf = {};\n this.label = label;\n this.keyword = conf.keyword;\n this.beforeExpr = !!conf.beforeExpr;\n this.startsExpr = !!conf.startsExpr;\n this.isLoop = !!conf.isLoop;\n this.isAssign = !!conf.isAssign;\n this.prefix = !!conf.prefix;\n this.postfix = !!conf.postfix;\n this.binop = conf.binop || null;\n this.updateContext = null;\n};\nfunction binop(name, prec) {\n return new TokenType(name, {\n beforeExpr: true,\n binop: prec\n });\n}\nvar beforeExpr = {\n beforeExpr: true\n};\nvar startsExpr = {\n startsExpr: true\n};\n\n// Map keyword names to token types.\n\nvar keywords$1 = {};\n\n// Succinct definitions of keyword token types\nfunction kw(name, options) {\n if (options === void 0) options = {};\n options.keyword = name;\n return keywords$1[name] = new TokenType(name, options);\n}\nvar types = {\n num: new TokenType(\"num\", startsExpr),\n regexp: new TokenType(\"regexp\", startsExpr),\n string: new TokenType(\"string\", startsExpr),\n name: new TokenType(\"name\", startsExpr),\n eof: new TokenType(\"eof\"),\n // Punctuation token types.\n bracketL: new TokenType(\"[\", {\n beforeExpr: true,\n startsExpr: true\n }),\n bracketR: new TokenType(\"]\"),\n braceL: new TokenType(\"{\", {\n beforeExpr: true,\n startsExpr: true\n }),\n braceR: new TokenType(\"}\"),\n parenL: new TokenType(\"(\", {\n beforeExpr: true,\n startsExpr: true\n }),\n parenR: new TokenType(\")\"),\n comma: new TokenType(\",\", beforeExpr),\n semi: new TokenType(\";\", beforeExpr),\n colon: new TokenType(\":\", beforeExpr),\n dot: new TokenType(\".\"),\n question: new TokenType(\"?\", beforeExpr),\n arrow: new TokenType(\"=>\", beforeExpr),\n template: new TokenType(\"template\"),\n invalidTemplate: new TokenType(\"invalidTemplate\"),\n ellipsis: new TokenType(\"...\", beforeExpr),\n backQuote: new TokenType(\"`\", startsExpr),\n dollarBraceL: new TokenType(\"${\", {\n beforeExpr: true,\n startsExpr: true\n }),\n // Operators. These carry several kinds of properties to help the\n // parser use them properly (the presence of these properties is\n // what categorizes them as operators).\n //\n // `binop`, when present, specifies that this operator is a binary\n // operator, and will refer to its precedence.\n //\n // `prefix` and `postfix` mark the operator as a prefix or postfix\n // unary operator.\n //\n // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n // binary operators with a very low precedence, that should result\n // in AssignmentExpression nodes.\n\n eq: new TokenType(\"=\", {\n beforeExpr: true,\n isAssign: true\n }),\n assign: new TokenType(\"_=\", {\n beforeExpr: true,\n isAssign: true\n }),\n incDec: new TokenType(\"++/--\", {\n prefix: true,\n postfix: true,\n startsExpr: true\n }),\n prefix: new TokenType(\"!/~\", {\n beforeExpr: true,\n prefix: true,\n startsExpr: true\n }),\n logicalOR: binop(\"||\", 1),\n logicalAND: binop(\"&&\", 2),\n bitwiseOR: binop(\"|\", 3),\n bitwiseXOR: binop(\"^\", 4),\n bitwiseAND: binop(\"&\", 5),\n equality: binop(\"==/!=/===/!==\", 6),\n relational: binop(\"/<=/>=\", 7),\n bitShift: binop(\"<>/>>>\", 8),\n plusMin: new TokenType(\"+/-\", {\n beforeExpr: true,\n binop: 9,\n prefix: true,\n startsExpr: true\n }),\n modulo: binop(\"%\", 10),\n star: binop(\"*\", 10),\n slash: binop(\"/\", 10),\n starstar: new TokenType(\"**\", {\n beforeExpr: true\n }),\n // Keyword token types.\n _break: kw(\"break\"),\n _case: kw(\"case\", beforeExpr),\n _catch: kw(\"catch\"),\n _continue: kw(\"continue\"),\n _debugger: kw(\"debugger\"),\n _default: kw(\"default\", beforeExpr),\n _do: kw(\"do\", {\n isLoop: true,\n beforeExpr: true\n }),\n _else: kw(\"else\", beforeExpr),\n _finally: kw(\"finally\"),\n _for: kw(\"for\", {\n isLoop: true\n }),\n _function: kw(\"function\", startsExpr),\n _if: kw(\"if\"),\n _return: kw(\"return\", beforeExpr),\n _switch: kw(\"switch\"),\n _throw: kw(\"throw\", beforeExpr),\n _try: kw(\"try\"),\n _var: kw(\"var\"),\n _const: kw(\"const\"),\n _while: kw(\"while\", {\n isLoop: true\n }),\n _with: kw(\"with\"),\n _new: kw(\"new\", {\n beforeExpr: true,\n startsExpr: true\n }),\n _this: kw(\"this\", startsExpr),\n _super: kw(\"super\", startsExpr),\n _class: kw(\"class\", startsExpr),\n _extends: kw(\"extends\", beforeExpr),\n _export: kw(\"export\"),\n _import: kw(\"import\"),\n _null: kw(\"null\", startsExpr),\n _true: kw(\"true\", startsExpr),\n _false: kw(\"false\", startsExpr),\n _in: kw(\"in\", {\n beforeExpr: true,\n binop: 7\n }),\n _instanceof: kw(\"instanceof\", {\n beforeExpr: true,\n binop: 7\n }),\n _typeof: kw(\"typeof\", {\n beforeExpr: true,\n prefix: true,\n startsExpr: true\n }),\n _void: kw(\"void\", {\n beforeExpr: true,\n prefix: true,\n startsExpr: true\n }),\n _delete: kw(\"delete\", {\n beforeExpr: true,\n prefix: true,\n startsExpr: true\n })\n};\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\n\nvar lineBreak = /\\r\\n?|\\n|\\u2028|\\u2029/;\nvar lineBreakG = new RegExp(lineBreak.source, \"g\");\nfunction isNewLine(code, ecma2019String) {\n return code === 10 || code === 13 || !ecma2019String && (code === 0x2028 || code === 0x2029);\n}\nvar nonASCIIwhitespace = /[\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/;\nvar skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\nvar ref = Object.prototype;\nvar hasOwnProperty = ref.hasOwnProperty;\nvar toString = ref.toString;\n\n// Checks if an object has a property.\n\nfunction has(obj, propName) {\n return hasOwnProperty.call(obj, propName);\n}\nvar isArray = Array.isArray || function (obj) {\n return toString.call(obj) === \"[object Array]\";\n};\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nvar Position = function Position(line, col) {\n this.line = line;\n this.column = col;\n};\nPosition.prototype.offset = function offset(n) {\n return new Position(this.line, this.column + n);\n};\nvar SourceLocation = function SourceLocation(p, start, end) {\n this.start = start;\n this.end = end;\n if (p.sourceFile !== null) {\n this.source = p.sourceFile;\n }\n};\n\n// The `getLineInfo` function is mostly useful when the\n// `locations` option is off (for performance reasons) and you\n// want to find the line/column position for a given character\n// offset. `input` should be the code string that the offset refers\n// into.\n\nfunction getLineInfo(input, offset) {\n for (var line = 1, cur = 0;;) {\n lineBreakG.lastIndex = cur;\n var match = lineBreakG.exec(input);\n if (match && match.index < offset) {\n ++line;\n cur = match.index + match[0].length;\n } else {\n return new Position(line, offset - cur);\n }\n }\n}\n\n// A second optional argument can be given to further configure\n// the parser process. These options are recognized:\n\nvar defaultOptions = {\n // `ecmaVersion` indicates the ECMAScript version to parse. Must be\n // either 3, 5, 6 (2015), 7 (2016), 8 (2017), 9 (2018), or 10\n // (2019). This influences support for strict mode, the set of\n // reserved words, and support for new syntax features. The default\n // is 9.\n ecmaVersion: 9,\n // `sourceType` indicates the mode the code should be parsed in.\n // Can be either `\"script\"` or `\"module\"`. This influences global\n // strict mode and parsing of `import` and `export` declarations.\n sourceType: \"script\",\n // `onInsertedSemicolon` can be a callback that will be called\n // when a semicolon is automatically inserted. It will be passed\n // th position of the comma as an offset, and if `locations` is\n // enabled, it is given the location as a `{line, column}` object\n // as second argument.\n onInsertedSemicolon: null,\n // `onTrailingComma` is similar to `onInsertedSemicolon`, but for\n // trailing commas.\n onTrailingComma: null,\n // By default, reserved words are only enforced if ecmaVersion >= 5.\n // Set `allowReserved` to a boolean value to explicitly turn this on\n // an off. When this option has the value \"never\", reserved words\n // and keywords can also not be used as property names.\n allowReserved: null,\n // When enabled, a return at the top level is not considered an\n // error.\n allowReturnOutsideFunction: false,\n // When enabled, import/export statements are not constrained to\n // appearing at the top of the program.\n allowImportExportEverywhere: false,\n // When enabled, await identifiers are allowed to appear at the top-level scope,\n // but they are still not allowed in non-async functions.\n allowAwaitOutsideFunction: false,\n // When enabled, hashbang directive in the beginning of file\n // is allowed and treated as a line comment.\n allowHashBang: false,\n // When `locations` is on, `loc` properties holding objects with\n // `start` and `end` properties in `{line, column}` form (with\n // line being 1-based and column 0-based) will be attached to the\n // nodes.\n locations: false,\n // A function can be passed as `onToken` option, which will\n // cause Acorn to call that function with object in the same\n // format as tokens returned from `tokenizer().getToken()`. Note\n // that you are not allowed to call the parser from the\n // callback—that will corrupt its internal state.\n onToken: null,\n // A function can be passed as `onComment` option, which will\n // cause Acorn to call that function with `(block, text, start,\n // end)` parameters whenever a comment is skipped. `block` is a\n // boolean indicating whether this is a block (`/* */`) comment,\n // `text` is the content of the comment, and `start` and `end` are\n // character offsets that denote the start and end of the comment.\n // When the `locations` option is on, two more parameters are\n // passed, the full `{line, column}` locations of the start and\n // end of the comments. Note that you are not allowed to call the\n // parser from the callback—that will corrupt its internal state.\n onComment: null,\n // Nodes have their start and end characters offsets recorded in\n // `start` and `end` properties (directly on the node, rather than\n // the `loc` object, which holds line/column data. To also add a\n // [semi-standardized][range] `range` property holding a `[start,\n // end]` array with the same numbers, set the `ranges` option to\n // `true`.\n //\n // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n ranges: false,\n // It is possible to parse multiple files into a single AST by\n // passing the tree produced by parsing the first file as\n // `program` option in subsequent parses. This will add the\n // toplevel forms of the parsed file to the `Program` (top) node\n // of an existing parse tree.\n program: null,\n // When `locations` is on, you can pass this to record the source\n // file in every node's `loc` object.\n sourceFile: null,\n // This value, if given, is stored in every node, whether\n // `locations` is on or off.\n directSourceFile: null,\n // When enabled, parenthesized expressions are represented by\n // (non-standard) ParenthesizedExpression nodes\n preserveParens: false\n};\n\n// Interpret and default an options object\n\nfunction getOptions(opts) {\n var options = {};\n for (var opt in defaultOptions) {\n options[opt] = opts && has(opts, opt) ? opts[opt] : defaultOptions[opt];\n }\n if (options.ecmaVersion >= 2015) {\n options.ecmaVersion -= 2009;\n }\n if (options.allowReserved == null) {\n options.allowReserved = options.ecmaVersion < 5;\n }\n if (isArray(options.onToken)) {\n var tokens = options.onToken;\n options.onToken = function (token) {\n return tokens.push(token);\n };\n }\n if (isArray(options.onComment)) {\n options.onComment = pushComment(options, options.onComment);\n }\n return options;\n}\nfunction pushComment(options, array) {\n return function (block, text, start, end, startLoc, endLoc) {\n var comment = {\n type: block ? \"Block\" : \"Line\",\n value: text,\n start: start,\n end: end\n };\n if (options.locations) {\n comment.loc = new SourceLocation(this, startLoc, endLoc);\n }\n if (options.ranges) {\n comment.range = [start, end];\n }\n array.push(comment);\n };\n}\n\n// Each scope gets a bitset that may contain these flags\nvar SCOPE_TOP = 1;\nvar SCOPE_FUNCTION = 2;\nvar SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION;\nvar SCOPE_ASYNC = 4;\nvar SCOPE_GENERATOR = 8;\nvar SCOPE_ARROW = 16;\nvar SCOPE_SIMPLE_CATCH = 32;\nfunction functionFlags(async, generator) {\n return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0);\n}\n\n// Used in checkLVal and declareName to determine the type of a binding\nvar BIND_NONE = 0;\nvar BIND_VAR = 1;\nvar BIND_LEXICAL = 2;\nvar BIND_FUNCTION = 3;\nvar BIND_SIMPLE_CATCH = 4;\nvar BIND_OUTSIDE = 5; // Special case for function names as bound inside the function\n\nfunction keywordRegexp(words) {\n return new RegExp(\"^(?:\" + words.replace(/ /g, \"|\") + \")$\");\n}\nvar Parser = function Parser(options, input, startPos) {\n this.options = options = getOptions(options);\n this.sourceFile = options.sourceFile;\n this.keywords = keywordRegexp(keywords[options.ecmaVersion >= 6 ? 6 : 5]);\n var reserved = \"\";\n if (!options.allowReserved) {\n for (var v = options.ecmaVersion;; v--) {\n if (reserved = reservedWords[v]) {\n break;\n }\n }\n if (options.sourceType === \"module\") {\n reserved += \" await\";\n }\n }\n this.reservedWords = keywordRegexp(reserved);\n var reservedStrict = (reserved ? reserved + \" \" : \"\") + reservedWords.strict;\n this.reservedWordsStrict = keywordRegexp(reservedStrict);\n this.reservedWordsStrictBind = keywordRegexp(reservedStrict + \" \" + reservedWords.strictBind);\n this.input = String(input);\n\n // Used to signal to callers of `readWord1` whether the word\n // contained any escape sequences. This is needed because words with\n // escape sequences must not be interpreted as keywords.\n this.containsEsc = false;\n\n // Set up token state\n\n // The current position of the tokenizer in the input.\n if (startPos) {\n this.pos = startPos;\n this.lineStart = this.input.lastIndexOf(\"\\n\", startPos - 1) + 1;\n this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length;\n } else {\n this.pos = this.lineStart = 0;\n this.curLine = 1;\n }\n\n // Properties of the current token:\n // Its type\n this.type = types.eof;\n // For tokens that include more information than their type, the value\n this.value = null;\n // Its start and end offset\n this.start = this.end = this.pos;\n // And, if locations are used, the {line, column} object\n // corresponding to those offsets\n this.startLoc = this.endLoc = this.curPosition();\n\n // Position information for the previous token\n this.lastTokEndLoc = this.lastTokStartLoc = null;\n this.lastTokStart = this.lastTokEnd = this.pos;\n\n // The context stack is used to superficially track syntactic\n // context to predict whether a regular expression is allowed in a\n // given position.\n this.context = this.initialContext();\n this.exprAllowed = true;\n\n // Figure out if it's a module code.\n this.inModule = options.sourceType === \"module\";\n this.strict = this.inModule || this.strictDirective(this.pos);\n\n // Used to signify the start of a potential arrow function\n this.potentialArrowAt = -1;\n\n // Positions to delayed-check that yield/await does not exist in default parameters.\n this.yieldPos = this.awaitPos = 0;\n // Labels in scope.\n this.labels = [];\n\n // If enabled, skip leading hashbang line.\n if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === \"#!\") {\n this.skipLineComment(2);\n }\n\n // Scope tracking for duplicate variable names (see scope.js)\n this.scopeStack = [];\n this.enterScope(SCOPE_TOP);\n\n // For RegExp validation\n this.regexpState = null;\n};\nvar prototypeAccessors = {\n inFunction: {\n configurable: true\n },\n inGenerator: {\n configurable: true\n },\n inAsync: {\n configurable: true\n }\n};\nParser.prototype.parse = function parse() {\n var node = this.options.program || this.startNode();\n this.nextToken();\n return this.parseTopLevel(node);\n};\nprototypeAccessors.inFunction.get = function () {\n return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0;\n};\nprototypeAccessors.inGenerator.get = function () {\n return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0;\n};\nprototypeAccessors.inAsync.get = function () {\n return (this.currentVarScope().flags & SCOPE_ASYNC) > 0;\n};\nParser.extend = function extend() {\n var plugins = [],\n len = arguments.length;\n while (len--) plugins[len] = arguments[len];\n var cls = this;\n for (var i = 0; i < plugins.length; i++) {\n cls = plugins[i](cls);\n }\n return cls;\n};\nParser.parse = function parse(input, options) {\n return new this(options, input).parse();\n};\nParser.parseExpressionAt = function parseExpressionAt(input, pos, options) {\n var parser = new this(options, input, pos);\n parser.nextToken();\n return parser.parseExpression();\n};\nParser.tokenizer = function tokenizer(input, options) {\n return new this(options, input);\n};\nObject.defineProperties(Parser.prototype, prototypeAccessors);\nvar pp = Parser.prototype;\n\n// ## Parser utilities\n\nvar literal = /^(?:'((?:\\\\.|[^'])*?)'|\"((?:\\\\.|[^\"])*?)\"|;)/;\npp.strictDirective = function (start) {\n var this$1 = this;\n for (;;) {\n skipWhiteSpace.lastIndex = start;\n start += skipWhiteSpace.exec(this$1.input)[0].length;\n var match = literal.exec(this$1.input.slice(start));\n if (!match) {\n return false;\n }\n if ((match[1] || match[2]) === \"use strict\") {\n return true;\n }\n start += match[0].length;\n }\n};\n\n// Predicate that tests whether the next token is of the given\n// type, and if yes, consumes it as a side effect.\n\npp.eat = function (type) {\n if (this.type === type) {\n this.next();\n return true;\n } else {\n return false;\n }\n};\n\n// Tests whether parsed token is a contextual keyword.\n\npp.isContextual = function (name) {\n return this.type === types.name && this.value === name && !this.containsEsc;\n};\n\n// Consumes contextual keyword if possible.\n\npp.eatContextual = function (name) {\n if (!this.isContextual(name)) {\n return false;\n }\n this.next();\n return true;\n};\n\n// Asserts that following token is given contextual keyword.\n\npp.expectContextual = function (name) {\n if (!this.eatContextual(name)) {\n this.unexpected();\n }\n};\n\n// Test whether a semicolon can be inserted at the current position.\n\npp.canInsertSemicolon = function () {\n return this.type === types.eof || this.type === types.braceR || lineBreak.test(this.input.slice(this.lastTokEnd, this.start));\n};\npp.insertSemicolon = function () {\n if (this.canInsertSemicolon()) {\n if (this.options.onInsertedSemicolon) {\n this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc);\n }\n return true;\n }\n};\n\n// Consume a semicolon, or, failing that, see if we are allowed to\n// pretend that there is a semicolon at this position.\n\npp.semicolon = function () {\n if (!this.eat(types.semi) && !this.insertSemicolon()) {\n this.unexpected();\n }\n};\npp.afterTrailingComma = function (tokType, notNext) {\n if (this.type === tokType) {\n if (this.options.onTrailingComma) {\n this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc);\n }\n if (!notNext) {\n this.next();\n }\n return true;\n }\n};\n\n// Expect a token of a given type. If found, consume it, otherwise,\n// raise an unexpected token error.\n\npp.expect = function (type) {\n this.eat(type) || this.unexpected();\n};\n\n// Raise an unexpected token error.\n\npp.unexpected = function (pos) {\n this.raise(pos != null ? pos : this.start, \"Unexpected token\");\n};\nfunction DestructuringErrors() {\n this.shorthandAssign = this.trailingComma = this.parenthesizedAssign = this.parenthesizedBind = this.doubleProto = -1;\n}\npp.checkPatternErrors = function (refDestructuringErrors, isAssign) {\n if (!refDestructuringErrors) {\n return;\n }\n if (refDestructuringErrors.trailingComma > -1) {\n this.raiseRecoverable(refDestructuringErrors.trailingComma, \"Comma is not permitted after the rest element\");\n }\n var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind;\n if (parens > -1) {\n this.raiseRecoverable(parens, \"Parenthesized pattern\");\n }\n};\npp.checkExpressionErrors = function (refDestructuringErrors, andThrow) {\n if (!refDestructuringErrors) {\n return false;\n }\n var shorthandAssign = refDestructuringErrors.shorthandAssign;\n var doubleProto = refDestructuringErrors.doubleProto;\n if (!andThrow) {\n return shorthandAssign >= 0 || doubleProto >= 0;\n }\n if (shorthandAssign >= 0) {\n this.raise(shorthandAssign, \"Shorthand property assignments are valid only in destructuring patterns\");\n }\n if (doubleProto >= 0) {\n this.raiseRecoverable(doubleProto, \"Redefinition of __proto__ property\");\n }\n};\npp.checkYieldAwaitInDefaultParams = function () {\n if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos)) {\n this.raise(this.yieldPos, \"Yield expression cannot be a default value\");\n }\n if (this.awaitPos) {\n this.raise(this.awaitPos, \"Await expression cannot be a default value\");\n }\n};\npp.isSimpleAssignTarget = function (expr) {\n if (expr.type === \"ParenthesizedExpression\") {\n return this.isSimpleAssignTarget(expr.expression);\n }\n return expr.type === \"Identifier\" || expr.type === \"MemberExpression\";\n};\nvar pp$1 = Parser.prototype;\n\n// ### Statement parsing\n\n// Parse a program. Initializes the parser, reads any number of\n// statements, and wraps them in a Program node. Optionally takes a\n// `program` argument. If present, the statements will be appended\n// to its body instead of creating a new node.\n\npp$1.parseTopLevel = function (node) {\n var this$1 = this;\n var exports = {};\n if (!node.body) {\n node.body = [];\n }\n while (this.type !== types.eof) {\n var stmt = this$1.parseStatement(null, true, exports);\n node.body.push(stmt);\n }\n this.adaptDirectivePrologue(node.body);\n this.next();\n if (this.options.ecmaVersion >= 6) {\n node.sourceType = this.options.sourceType;\n }\n return this.finishNode(node, \"Program\");\n};\nvar loopLabel = {\n kind: \"loop\"\n};\nvar switchLabel = {\n kind: \"switch\"\n};\npp$1.isLet = function () {\n if (this.options.ecmaVersion < 6 || !this.isContextual(\"let\")) {\n return false;\n }\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length,\n nextCh = this.input.charCodeAt(next);\n if (nextCh === 91 || nextCh === 123) {\n return true;\n } // '{' and '['\n if (isIdentifierStart(nextCh, true)) {\n var pos = next + 1;\n while (isIdentifierChar(this.input.charCodeAt(pos), true)) {\n ++pos;\n }\n var ident = this.input.slice(next, pos);\n if (!keywordRelationalOperator.test(ident)) {\n return true;\n }\n }\n return false;\n};\n\n// check 'async [no LineTerminator here] function'\n// - 'async /*foo*/ function' is OK.\n// - 'async /*\\n*/ function' is invalid.\npp$1.isAsyncFunction = function () {\n if (this.options.ecmaVersion < 8 || !this.isContextual(\"async\")) {\n return false;\n }\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length;\n return !lineBreak.test(this.input.slice(this.pos, next)) && this.input.slice(next, next + 8) === \"function\" && (next + 8 === this.input.length || !isIdentifierChar(this.input.charAt(next + 8)));\n};\n\n// Parse a single statement.\n//\n// If expecting a statement and finding a slash operator, parse a\n// regular expression literal. This is to handle cases like\n// `if (foo) /blah/.exec(foo)`, where looking at the previous token\n// does not help.\n\npp$1.parseStatement = function (context, topLevel, exports) {\n var starttype = this.type,\n node = this.startNode(),\n kind;\n if (this.isLet()) {\n starttype = types._var;\n kind = \"let\";\n }\n\n // Most types of statements are recognized by the keyword they\n // start with. Many are trivial to parse, some require a bit of\n // complexity.\n\n switch (starttype) {\n case types._break:\n case types._continue:\n return this.parseBreakContinueStatement(node, starttype.keyword);\n case types._debugger:\n return this.parseDebuggerStatement(node);\n case types._do:\n return this.parseDoStatement(node);\n case types._for:\n return this.parseForStatement(node);\n case types._function:\n if (context && (this.strict || context !== \"if\") && this.options.ecmaVersion >= 6) {\n this.unexpected();\n }\n return this.parseFunctionStatement(node, false, !context);\n case types._class:\n if (context) {\n this.unexpected();\n }\n return this.parseClass(node, true);\n case types._if:\n return this.parseIfStatement(node);\n case types._return:\n return this.parseReturnStatement(node);\n case types._switch:\n return this.parseSwitchStatement(node);\n case types._throw:\n return this.parseThrowStatement(node);\n case types._try:\n return this.parseTryStatement(node);\n case types._const:\n case types._var:\n kind = kind || this.value;\n if (context && kind !== \"var\") {\n this.unexpected();\n }\n return this.parseVarStatement(node, kind);\n case types._while:\n return this.parseWhileStatement(node);\n case types._with:\n return this.parseWithStatement(node);\n case types.braceL:\n return this.parseBlock(true, node);\n case types.semi:\n return this.parseEmptyStatement(node);\n case types._export:\n case types._import:\n if (!this.options.allowImportExportEverywhere) {\n if (!topLevel) {\n this.raise(this.start, \"'import' and 'export' may only appear at the top level\");\n }\n if (!this.inModule) {\n this.raise(this.start, \"'import' and 'export' may appear only with 'sourceType: module'\");\n }\n }\n return starttype === types._import ? this.parseImport(node) : this.parseExport(node, exports);\n\n // If the statement does not start with a statement keyword or a\n // brace, it's an ExpressionStatement or LabeledStatement. We\n // simply start parsing an expression, and afterwards, if the\n // next token is a colon and the expression was a simple\n // Identifier node, we switch to interpreting it as a label.\n default:\n if (this.isAsyncFunction()) {\n if (context) {\n this.unexpected();\n }\n this.next();\n return this.parseFunctionStatement(node, true, !context);\n }\n var maybeName = this.value,\n expr = this.parseExpression();\n if (starttype === types.name && expr.type === \"Identifier\" && this.eat(types.colon)) {\n return this.parseLabeledStatement(node, maybeName, expr, context);\n } else {\n return this.parseExpressionStatement(node, expr);\n }\n }\n};\npp$1.parseBreakContinueStatement = function (node, keyword) {\n var this$1 = this;\n var isBreak = keyword === \"break\";\n this.next();\n if (this.eat(types.semi) || this.insertSemicolon()) {\n node.label = null;\n } else if (this.type !== types.name) {\n this.unexpected();\n } else {\n node.label = this.parseIdent();\n this.semicolon();\n }\n\n // Verify that there is an actual destination to break or\n // continue to.\n var i = 0;\n for (; i < this.labels.length; ++i) {\n var lab = this$1.labels[i];\n if (node.label == null || lab.name === node.label.name) {\n if (lab.kind != null && (isBreak || lab.kind === \"loop\")) {\n break;\n }\n if (node.label && isBreak) {\n break;\n }\n }\n }\n if (i === this.labels.length) {\n this.raise(node.start, \"Unsyntactic \" + keyword);\n }\n return this.finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\");\n};\npp$1.parseDebuggerStatement = function (node) {\n this.next();\n this.semicolon();\n return this.finishNode(node, \"DebuggerStatement\");\n};\npp$1.parseDoStatement = function (node) {\n this.next();\n this.labels.push(loopLabel);\n node.body = this.parseStatement(\"do\");\n this.labels.pop();\n this.expect(types._while);\n node.test = this.parseParenExpression();\n if (this.options.ecmaVersion >= 6) {\n this.eat(types.semi);\n } else {\n this.semicolon();\n }\n return this.finishNode(node, \"DoWhileStatement\");\n};\n\n// Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n// loop is non-trivial. Basically, we have to parse the init `var`\n// statement or expression, disallowing the `in` operator (see\n// the second parameter to `parseExpression`), and then check\n// whether the next token is `in` or `of`. When there is no init\n// part (semicolon immediately after the opening parenthesis), it\n// is a regular `for` loop.\n\npp$1.parseForStatement = function (node) {\n this.next();\n var awaitAt = this.options.ecmaVersion >= 9 && (this.inAsync || !this.inFunction && this.options.allowAwaitOutsideFunction) && this.eatContextual(\"await\") ? this.lastTokStart : -1;\n this.labels.push(loopLabel);\n this.enterScope(0);\n this.expect(types.parenL);\n if (this.type === types.semi) {\n if (awaitAt > -1) {\n this.unexpected(awaitAt);\n }\n return this.parseFor(node, null);\n }\n var isLet = this.isLet();\n if (this.type === types._var || this.type === types._const || isLet) {\n var init$1 = this.startNode(),\n kind = isLet ? \"let\" : this.value;\n this.next();\n this.parseVar(init$1, true, kind);\n this.finishNode(init$1, \"VariableDeclaration\");\n if ((this.type === types._in || this.options.ecmaVersion >= 6 && this.isContextual(\"of\")) && init$1.declarations.length === 1 && !(kind !== \"var\" && init$1.declarations[0].init)) {\n if (this.options.ecmaVersion >= 9) {\n if (this.type === types._in) {\n if (awaitAt > -1) {\n this.unexpected(awaitAt);\n }\n } else {\n node.await = awaitAt > -1;\n }\n }\n return this.parseForIn(node, init$1);\n }\n if (awaitAt > -1) {\n this.unexpected(awaitAt);\n }\n return this.parseFor(node, init$1);\n }\n var refDestructuringErrors = new DestructuringErrors();\n var init = this.parseExpression(true, refDestructuringErrors);\n if (this.type === types._in || this.options.ecmaVersion >= 6 && this.isContextual(\"of\")) {\n if (this.options.ecmaVersion >= 9) {\n if (this.type === types._in) {\n if (awaitAt > -1) {\n this.unexpected(awaitAt);\n }\n } else {\n node.await = awaitAt > -1;\n }\n }\n this.toAssignable(init, false, refDestructuringErrors);\n this.checkLVal(init);\n return this.parseForIn(node, init);\n } else {\n this.checkExpressionErrors(refDestructuringErrors, true);\n }\n if (awaitAt > -1) {\n this.unexpected(awaitAt);\n }\n return this.parseFor(node, init);\n};\npp$1.parseFunctionStatement = function (node, isAsync, declarationPosition) {\n this.next();\n return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), false, isAsync);\n};\npp$1.parseIfStatement = function (node) {\n this.next();\n node.test = this.parseParenExpression();\n // allow function declarations in branches, but only in non-strict mode\n node.consequent = this.parseStatement(\"if\");\n node.alternate = this.eat(types._else) ? this.parseStatement(\"if\") : null;\n return this.finishNode(node, \"IfStatement\");\n};\npp$1.parseReturnStatement = function (node) {\n if (!this.inFunction && !this.options.allowReturnOutsideFunction) {\n this.raise(this.start, \"'return' outside of function\");\n }\n this.next();\n\n // In `return` (and `break`/`continue`), the keywords with\n // optional arguments, we eagerly look for a semicolon or the\n // possibility to insert one.\n\n if (this.eat(types.semi) || this.insertSemicolon()) {\n node.argument = null;\n } else {\n node.argument = this.parseExpression();\n this.semicolon();\n }\n return this.finishNode(node, \"ReturnStatement\");\n};\npp$1.parseSwitchStatement = function (node) {\n var this$1 = this;\n this.next();\n node.discriminant = this.parseParenExpression();\n node.cases = [];\n this.expect(types.braceL);\n this.labels.push(switchLabel);\n this.enterScope(0);\n\n // Statements under must be grouped (by label) in SwitchCase\n // nodes. `cur` is used to keep the node that we are currently\n // adding statements to.\n\n var cur;\n for (var sawDefault = false; this.type !== types.braceR;) {\n if (this$1.type === types._case || this$1.type === types._default) {\n var isCase = this$1.type === types._case;\n if (cur) {\n this$1.finishNode(cur, \"SwitchCase\");\n }\n node.cases.push(cur = this$1.startNode());\n cur.consequent = [];\n this$1.next();\n if (isCase) {\n cur.test = this$1.parseExpression();\n } else {\n if (sawDefault) {\n this$1.raiseRecoverable(this$1.lastTokStart, \"Multiple default clauses\");\n }\n sawDefault = true;\n cur.test = null;\n }\n this$1.expect(types.colon);\n } else {\n if (!cur) {\n this$1.unexpected();\n }\n cur.consequent.push(this$1.parseStatement(null));\n }\n }\n this.exitScope();\n if (cur) {\n this.finishNode(cur, \"SwitchCase\");\n }\n this.next(); // Closing brace\n this.labels.pop();\n return this.finishNode(node, \"SwitchStatement\");\n};\npp$1.parseThrowStatement = function (node) {\n this.next();\n if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) {\n this.raise(this.lastTokEnd, \"Illegal newline after throw\");\n }\n node.argument = this.parseExpression();\n this.semicolon();\n return this.finishNode(node, \"ThrowStatement\");\n};\n\n// Reused empty array added for node fields that are always empty.\n\nvar empty = [];\npp$1.parseTryStatement = function (node) {\n this.next();\n node.block = this.parseBlock();\n node.handler = null;\n if (this.type === types._catch) {\n var clause = this.startNode();\n this.next();\n if (this.eat(types.parenL)) {\n clause.param = this.parseBindingAtom();\n var simple = clause.param.type === \"Identifier\";\n this.enterScope(simple ? SCOPE_SIMPLE_CATCH : 0);\n this.checkLVal(clause.param, simple ? BIND_SIMPLE_CATCH : BIND_LEXICAL);\n this.expect(types.parenR);\n } else {\n if (this.options.ecmaVersion < 10) {\n this.unexpected();\n }\n clause.param = null;\n this.enterScope(0);\n }\n clause.body = this.parseBlock(false);\n this.exitScope();\n node.handler = this.finishNode(clause, \"CatchClause\");\n }\n node.finalizer = this.eat(types._finally) ? this.parseBlock() : null;\n if (!node.handler && !node.finalizer) {\n this.raise(node.start, \"Missing catch or finally clause\");\n }\n return this.finishNode(node, \"TryStatement\");\n};\npp$1.parseVarStatement = function (node, kind) {\n this.next();\n this.parseVar(node, false, kind);\n this.semicolon();\n return this.finishNode(node, \"VariableDeclaration\");\n};\npp$1.parseWhileStatement = function (node) {\n this.next();\n node.test = this.parseParenExpression();\n this.labels.push(loopLabel);\n node.body = this.parseStatement(\"while\");\n this.labels.pop();\n return this.finishNode(node, \"WhileStatement\");\n};\npp$1.parseWithStatement = function (node) {\n if (this.strict) {\n this.raise(this.start, \"'with' in strict mode\");\n }\n this.next();\n node.object = this.parseParenExpression();\n node.body = this.parseStatement(\"with\");\n return this.finishNode(node, \"WithStatement\");\n};\npp$1.parseEmptyStatement = function (node) {\n this.next();\n return this.finishNode(node, \"EmptyStatement\");\n};\npp$1.parseLabeledStatement = function (node, maybeName, expr, context) {\n var this$1 = this;\n for (var i$1 = 0, list = this$1.labels; i$1 < list.length; i$1 += 1) {\n var label = list[i$1];\n if (label.name === maybeName) {\n this$1.raise(expr.start, \"Label '\" + maybeName + \"' is already declared\");\n }\n }\n var kind = this.type.isLoop ? \"loop\" : this.type === types._switch ? \"switch\" : null;\n for (var i = this.labels.length - 1; i >= 0; i--) {\n var label$1 = this$1.labels[i];\n if (label$1.statementStart === node.start) {\n // Update information about previous labels on this node\n label$1.statementStart = this$1.start;\n label$1.kind = kind;\n } else {\n break;\n }\n }\n this.labels.push({\n name: maybeName,\n kind: kind,\n statementStart: this.start\n });\n node.body = this.parseStatement(context);\n if (node.body.type === \"ClassDeclaration\" || node.body.type === \"VariableDeclaration\" && node.body.kind !== \"var\" || node.body.type === \"FunctionDeclaration\" && (this.strict || node.body.generator || node.body.async)) {\n this.raiseRecoverable(node.body.start, \"Invalid labeled declaration\");\n }\n this.labels.pop();\n node.label = expr;\n return this.finishNode(node, \"LabeledStatement\");\n};\npp$1.parseExpressionStatement = function (node, expr) {\n node.expression = expr;\n this.semicolon();\n return this.finishNode(node, \"ExpressionStatement\");\n};\n\n// Parse a semicolon-enclosed block of statements, handling `\"use\n// strict\"` declarations when `allowStrict` is true (used for\n// function bodies).\n\npp$1.parseBlock = function (createNewLexicalScope, node) {\n var this$1 = this;\n if (createNewLexicalScope === void 0) createNewLexicalScope = true;\n if (node === void 0) node = this.startNode();\n node.body = [];\n this.expect(types.braceL);\n if (createNewLexicalScope) {\n this.enterScope(0);\n }\n while (!this.eat(types.braceR)) {\n var stmt = this$1.parseStatement(null);\n node.body.push(stmt);\n }\n if (createNewLexicalScope) {\n this.exitScope();\n }\n return this.finishNode(node, \"BlockStatement\");\n};\n\n// Parse a regular `for` loop. The disambiguation code in\n// `parseStatement` will already have parsed the init statement or\n// expression.\n\npp$1.parseFor = function (node, init) {\n node.init = init;\n this.expect(types.semi);\n node.test = this.type === types.semi ? null : this.parseExpression();\n this.expect(types.semi);\n node.update = this.type === types.parenR ? null : this.parseExpression();\n this.expect(types.parenR);\n this.exitScope();\n node.body = this.parseStatement(\"for\");\n this.labels.pop();\n return this.finishNode(node, \"ForStatement\");\n};\n\n// Parse a `for`/`in` and `for`/`of` loop, which are almost\n// same from parser's perspective.\n\npp$1.parseForIn = function (node, init) {\n var type = this.type === types._in ? \"ForInStatement\" : \"ForOfStatement\";\n this.next();\n if (type === \"ForInStatement\") {\n if (init.type === \"AssignmentPattern\" || init.type === \"VariableDeclaration\" && init.declarations[0].init != null && (this.strict || init.declarations[0].id.type !== \"Identifier\")) {\n this.raise(init.start, \"Invalid assignment in for-in loop head\");\n }\n }\n node.left = init;\n node.right = type === \"ForInStatement\" ? this.parseExpression() : this.parseMaybeAssign();\n this.expect(types.parenR);\n this.exitScope();\n node.body = this.parseStatement(\"for\");\n this.labels.pop();\n return this.finishNode(node, type);\n};\n\n// Parse a list of variable declarations.\n\npp$1.parseVar = function (node, isFor, kind) {\n var this$1 = this;\n node.declarations = [];\n node.kind = kind;\n for (;;) {\n var decl = this$1.startNode();\n this$1.parseVarId(decl, kind);\n if (this$1.eat(types.eq)) {\n decl.init = this$1.parseMaybeAssign(isFor);\n } else if (kind === \"const\" && !(this$1.type === types._in || this$1.options.ecmaVersion >= 6 && this$1.isContextual(\"of\"))) {\n this$1.unexpected();\n } else if (decl.id.type !== \"Identifier\" && !(isFor && (this$1.type === types._in || this$1.isContextual(\"of\")))) {\n this$1.raise(this$1.lastTokEnd, \"Complex binding patterns require an initialization value\");\n } else {\n decl.init = null;\n }\n node.declarations.push(this$1.finishNode(decl, \"VariableDeclarator\"));\n if (!this$1.eat(types.comma)) {\n break;\n }\n }\n return node;\n};\npp$1.parseVarId = function (decl, kind) {\n decl.id = this.parseBindingAtom(kind);\n this.checkLVal(decl.id, kind === \"var\" ? BIND_VAR : BIND_LEXICAL, false);\n};\nvar FUNC_STATEMENT = 1;\nvar FUNC_HANGING_STATEMENT = 2;\nvar FUNC_NULLABLE_ID = 4;\n\n// Parse a function declaration or literal (depending on the\n// `isStatement` parameter).\n\npp$1.parseFunction = function (node, statement, allowExpressionBody, isAsync) {\n this.initFunction(node);\n if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) {\n node.generator = this.eat(types.star);\n }\n if (this.options.ecmaVersion >= 8) {\n node.async = !!isAsync;\n }\n if (statement & FUNC_STATEMENT) {\n node.id = statement & FUNC_NULLABLE_ID && this.type !== types.name ? null : this.parseIdent();\n if (node.id && !(statement & FUNC_HANGING_STATEMENT)) {\n this.checkLVal(node.id, this.inModule && !this.inFunction ? BIND_LEXICAL : BIND_FUNCTION);\n }\n }\n var oldYieldPos = this.yieldPos,\n oldAwaitPos = this.awaitPos;\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.enterScope(functionFlags(node.async, node.generator));\n if (!(statement & FUNC_STATEMENT)) {\n node.id = this.type === types.name ? this.parseIdent() : null;\n }\n this.parseFunctionParams(node);\n this.parseFunctionBody(node, allowExpressionBody);\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n return this.finishNode(node, statement & FUNC_STATEMENT ? \"FunctionDeclaration\" : \"FunctionExpression\");\n};\npp$1.parseFunctionParams = function (node) {\n this.expect(types.parenL);\n node.params = this.parseBindingList(types.parenR, false, this.options.ecmaVersion >= 8);\n this.checkYieldAwaitInDefaultParams();\n};\n\n// Parse a class declaration or literal (depending on the\n// `isStatement` parameter).\n\npp$1.parseClass = function (node, isStatement) {\n var this$1 = this;\n this.next();\n this.parseClassId(node, isStatement);\n this.parseClassSuper(node);\n var classBody = this.startNode();\n var hadConstructor = false;\n classBody.body = [];\n this.expect(types.braceL);\n while (!this.eat(types.braceR)) {\n var element = this$1.parseClassElement();\n if (element) {\n classBody.body.push(element);\n if (element.type === \"MethodDefinition\" && element.kind === \"constructor\") {\n if (hadConstructor) {\n this$1.raise(element.start, \"Duplicate constructor in the same class\");\n }\n hadConstructor = true;\n }\n }\n }\n node.body = this.finishNode(classBody, \"ClassBody\");\n return this.finishNode(node, isStatement ? \"ClassDeclaration\" : \"ClassExpression\");\n};\npp$1.parseClassElement = function () {\n var this$1 = this;\n if (this.eat(types.semi)) {\n return null;\n }\n var method = this.startNode();\n var tryContextual = function (k, noLineBreak) {\n if (noLineBreak === void 0) noLineBreak = false;\n var start = this$1.start,\n startLoc = this$1.startLoc;\n if (!this$1.eatContextual(k)) {\n return false;\n }\n if (this$1.type !== types.parenL && (!noLineBreak || !this$1.canInsertSemicolon())) {\n return true;\n }\n if (method.key) {\n this$1.unexpected();\n }\n method.computed = false;\n method.key = this$1.startNodeAt(start, startLoc);\n method.key.name = k;\n this$1.finishNode(method.key, \"Identifier\");\n return false;\n };\n method.kind = \"method\";\n method.static = tryContextual(\"static\");\n var isGenerator = this.eat(types.star);\n var isAsync = false;\n if (!isGenerator) {\n if (this.options.ecmaVersion >= 8 && tryContextual(\"async\", true)) {\n isAsync = true;\n isGenerator = this.options.ecmaVersion >= 9 && this.eat(types.star);\n } else if (tryContextual(\"get\")) {\n method.kind = \"get\";\n } else if (tryContextual(\"set\")) {\n method.kind = \"set\";\n }\n }\n if (!method.key) {\n this.parsePropertyName(method);\n }\n var key = method.key;\n if (!method.computed && !method.static && (key.type === \"Identifier\" && key.name === \"constructor\" || key.type === \"Literal\" && key.value === \"constructor\")) {\n if (method.kind !== \"method\") {\n this.raise(key.start, \"Constructor can't have get/set modifier\");\n }\n if (isGenerator) {\n this.raise(key.start, \"Constructor can't be a generator\");\n }\n if (isAsync) {\n this.raise(key.start, \"Constructor can't be an async method\");\n }\n method.kind = \"constructor\";\n } else if (method.static && key.type === \"Identifier\" && key.name === \"prototype\") {\n this.raise(key.start, \"Classes may not have a static property named prototype\");\n }\n this.parseClassMethod(method, isGenerator, isAsync);\n if (method.kind === \"get\" && method.value.params.length !== 0) {\n this.raiseRecoverable(method.value.start, \"getter should have no params\");\n }\n if (method.kind === \"set\" && method.value.params.length !== 1) {\n this.raiseRecoverable(method.value.start, \"setter should have exactly one param\");\n }\n if (method.kind === \"set\" && method.value.params[0].type === \"RestElement\") {\n this.raiseRecoverable(method.value.params[0].start, \"Setter cannot use rest params\");\n }\n return method;\n};\npp$1.parseClassMethod = function (method, isGenerator, isAsync) {\n method.value = this.parseMethod(isGenerator, isAsync);\n return this.finishNode(method, \"MethodDefinition\");\n};\npp$1.parseClassId = function (node, isStatement) {\n node.id = this.type === types.name ? this.parseIdent() : isStatement === true ? this.unexpected() : null;\n};\npp$1.parseClassSuper = function (node) {\n node.superClass = this.eat(types._extends) ? this.parseExprSubscripts() : null;\n};\n\n// Parses module export declaration.\n\npp$1.parseExport = function (node, exports) {\n var this$1 = this;\n this.next();\n // export * from '...'\n if (this.eat(types.star)) {\n this.expectContextual(\"from\");\n if (this.type !== types.string) {\n this.unexpected();\n }\n node.source = this.parseExprAtom();\n this.semicolon();\n return this.finishNode(node, \"ExportAllDeclaration\");\n }\n if (this.eat(types._default)) {\n // export default ...\n this.checkExport(exports, \"default\", this.lastTokStart);\n var isAsync;\n if (this.type === types._function || (isAsync = this.isAsyncFunction())) {\n var fNode = this.startNode();\n this.next();\n if (isAsync) {\n this.next();\n }\n node.declaration = this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync, true);\n } else if (this.type === types._class) {\n var cNode = this.startNode();\n node.declaration = this.parseClass(cNode, \"nullableID\");\n } else {\n node.declaration = this.parseMaybeAssign();\n this.semicolon();\n }\n return this.finishNode(node, \"ExportDefaultDeclaration\");\n }\n // export var|const|let|function|class ...\n if (this.shouldParseExportStatement()) {\n node.declaration = this.parseStatement(null);\n if (node.declaration.type === \"VariableDeclaration\") {\n this.checkVariableExport(exports, node.declaration.declarations);\n } else {\n this.checkExport(exports, node.declaration.id.name, node.declaration.id.start);\n }\n node.specifiers = [];\n node.source = null;\n } else {\n // export { x, y as z } [from '...']\n node.declaration = null;\n node.specifiers = this.parseExportSpecifiers(exports);\n if (this.eatContextual(\"from\")) {\n if (this.type !== types.string) {\n this.unexpected();\n }\n node.source = this.parseExprAtom();\n } else {\n // check for keywords used as local names\n for (var i = 0, list = node.specifiers; i < list.length; i += 1) {\n var spec = list[i];\n this$1.checkUnreserved(spec.local);\n }\n node.source = null;\n }\n this.semicolon();\n }\n return this.finishNode(node, \"ExportNamedDeclaration\");\n};\npp$1.checkExport = function (exports, name, pos) {\n if (!exports) {\n return;\n }\n if (has(exports, name)) {\n this.raiseRecoverable(pos, \"Duplicate export '\" + name + \"'\");\n }\n exports[name] = true;\n};\npp$1.checkPatternExport = function (exports, pat) {\n var this$1 = this;\n var type = pat.type;\n if (type === \"Identifier\") {\n this.checkExport(exports, pat.name, pat.start);\n } else if (type === \"ObjectPattern\") {\n for (var i = 0, list = pat.properties; i < list.length; i += 1) {\n var prop = list[i];\n this$1.checkPatternExport(exports, prop);\n }\n } else if (type === \"ArrayPattern\") {\n for (var i$1 = 0, list$1 = pat.elements; i$1 < list$1.length; i$1 += 1) {\n var elt = list$1[i$1];\n if (elt) {\n this$1.checkPatternExport(exports, elt);\n }\n }\n } else if (type === \"Property\") {\n this.checkPatternExport(exports, pat.value);\n } else if (type === \"AssignmentPattern\") {\n this.checkPatternExport(exports, pat.left);\n } else if (type === \"RestElement\") {\n this.checkPatternExport(exports, pat.argument);\n } else if (type === \"ParenthesizedExpression\") {\n this.checkPatternExport(exports, pat.expression);\n }\n};\npp$1.checkVariableExport = function (exports, decls) {\n var this$1 = this;\n if (!exports) {\n return;\n }\n for (var i = 0, list = decls; i < list.length; i += 1) {\n var decl = list[i];\n this$1.checkPatternExport(exports, decl.id);\n }\n};\npp$1.shouldParseExportStatement = function () {\n return this.type.keyword === \"var\" || this.type.keyword === \"const\" || this.type.keyword === \"class\" || this.type.keyword === \"function\" || this.isLet() || this.isAsyncFunction();\n};\n\n// Parses a comma-separated list of module exports.\n\npp$1.parseExportSpecifiers = function (exports) {\n var this$1 = this;\n var nodes = [],\n first = true;\n // export { x, y as z } [from '...']\n this.expect(types.braceL);\n while (!this.eat(types.braceR)) {\n if (!first) {\n this$1.expect(types.comma);\n if (this$1.afterTrailingComma(types.braceR)) {\n break;\n }\n } else {\n first = false;\n }\n var node = this$1.startNode();\n node.local = this$1.parseIdent(true);\n node.exported = this$1.eatContextual(\"as\") ? this$1.parseIdent(true) : node.local;\n this$1.checkExport(exports, node.exported.name, node.exported.start);\n nodes.push(this$1.finishNode(node, \"ExportSpecifier\"));\n }\n return nodes;\n};\n\n// Parses import declaration.\n\npp$1.parseImport = function (node) {\n this.next();\n // import '...'\n if (this.type === types.string) {\n node.specifiers = empty;\n node.source = this.parseExprAtom();\n } else {\n node.specifiers = this.parseImportSpecifiers();\n this.expectContextual(\"from\");\n node.source = this.type === types.string ? this.parseExprAtom() : this.unexpected();\n }\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\");\n};\n\n// Parses a comma-separated list of module imports.\n\npp$1.parseImportSpecifiers = function () {\n var this$1 = this;\n var nodes = [],\n first = true;\n if (this.type === types.name) {\n // import defaultObj, { x, y as z } from '...'\n var node = this.startNode();\n node.local = this.parseIdent();\n this.checkLVal(node.local, BIND_LEXICAL);\n nodes.push(this.finishNode(node, \"ImportDefaultSpecifier\"));\n if (!this.eat(types.comma)) {\n return nodes;\n }\n }\n if (this.type === types.star) {\n var node$1 = this.startNode();\n this.next();\n this.expectContextual(\"as\");\n node$1.local = this.parseIdent();\n this.checkLVal(node$1.local, BIND_LEXICAL);\n nodes.push(this.finishNode(node$1, \"ImportNamespaceSpecifier\"));\n return nodes;\n }\n this.expect(types.braceL);\n while (!this.eat(types.braceR)) {\n if (!first) {\n this$1.expect(types.comma);\n if (this$1.afterTrailingComma(types.braceR)) {\n break;\n }\n } else {\n first = false;\n }\n var node$2 = this$1.startNode();\n node$2.imported = this$1.parseIdent(true);\n if (this$1.eatContextual(\"as\")) {\n node$2.local = this$1.parseIdent();\n } else {\n this$1.checkUnreserved(node$2.imported);\n node$2.local = node$2.imported;\n }\n this$1.checkLVal(node$2.local, BIND_LEXICAL);\n nodes.push(this$1.finishNode(node$2, \"ImportSpecifier\"));\n }\n return nodes;\n};\n\n// Set `ExpressionStatement#directive` property for directive prologues.\npp$1.adaptDirectivePrologue = function (statements) {\n for (var i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) {\n statements[i].directive = statements[i].expression.raw.slice(1, -1);\n }\n};\npp$1.isDirectiveCandidate = function (statement) {\n return statement.type === \"ExpressionStatement\" && statement.expression.type === \"Literal\" && typeof statement.expression.value === \"string\" && (\n // Reject parenthesized strings.\n this.input[statement.start] === \"\\\"\" || this.input[statement.start] === \"'\");\n};\nvar pp$2 = Parser.prototype;\n\n// Convert existing expression atom to assignable pattern\n// if possible.\n\npp$2.toAssignable = function (node, isBinding, refDestructuringErrors) {\n var this$1 = this;\n if (this.options.ecmaVersion >= 6 && node) {\n switch (node.type) {\n case \"Identifier\":\n if (this.inAsync && node.name === \"await\") {\n this.raise(node.start, \"Can not use 'await' as identifier inside an async function\");\n }\n break;\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"RestElement\":\n break;\n case \"ObjectExpression\":\n node.type = \"ObjectPattern\";\n if (refDestructuringErrors) {\n this.checkPatternErrors(refDestructuringErrors, true);\n }\n for (var i = 0, list = node.properties; i < list.length; i += 1) {\n var prop = list[i];\n this$1.toAssignable(prop, isBinding);\n // Early error:\n // AssignmentRestProperty[Yield, Await] :\n // `...` DestructuringAssignmentTarget[Yield, Await]\n //\n // It is a Syntax Error if |DestructuringAssignmentTarget| is an |ArrayLiteral| or an |ObjectLiteral|.\n if (prop.type === \"RestElement\" && (prop.argument.type === \"ArrayPattern\" || prop.argument.type === \"ObjectPattern\")) {\n this$1.raise(prop.argument.start, \"Unexpected token\");\n }\n }\n break;\n case \"Property\":\n // AssignmentProperty has type === \"Property\"\n if (node.kind !== \"init\") {\n this.raise(node.key.start, \"Object pattern can't contain getter or setter\");\n }\n this.toAssignable(node.value, isBinding);\n break;\n case \"ArrayExpression\":\n node.type = \"ArrayPattern\";\n if (refDestructuringErrors) {\n this.checkPatternErrors(refDestructuringErrors, true);\n }\n this.toAssignableList(node.elements, isBinding);\n break;\n case \"SpreadElement\":\n node.type = \"RestElement\";\n this.toAssignable(node.argument, isBinding);\n if (node.argument.type === \"AssignmentPattern\") {\n this.raise(node.argument.start, \"Rest elements cannot have a default value\");\n }\n break;\n case \"AssignmentExpression\":\n if (node.operator !== \"=\") {\n this.raise(node.left.end, \"Only '=' operator can be used for specifying default value.\");\n }\n node.type = \"AssignmentPattern\";\n delete node.operator;\n this.toAssignable(node.left, isBinding);\n // falls through to AssignmentPattern\n\n case \"AssignmentPattern\":\n break;\n case \"ParenthesizedExpression\":\n this.toAssignable(node.expression, isBinding);\n break;\n case \"MemberExpression\":\n if (!isBinding) {\n break;\n }\n default:\n this.raise(node.start, \"Assigning to rvalue\");\n }\n } else if (refDestructuringErrors) {\n this.checkPatternErrors(refDestructuringErrors, true);\n }\n return node;\n};\n\n// Convert list of expression atoms to binding list.\n\npp$2.toAssignableList = function (exprList, isBinding) {\n var this$1 = this;\n var end = exprList.length;\n for (var i = 0; i < end; i++) {\n var elt = exprList[i];\n if (elt) {\n this$1.toAssignable(elt, isBinding);\n }\n }\n if (end) {\n var last = exprList[end - 1];\n if (this.options.ecmaVersion === 6 && isBinding && last && last.type === \"RestElement\" && last.argument.type !== \"Identifier\") {\n this.unexpected(last.argument.start);\n }\n }\n return exprList;\n};\n\n// Parses spread element.\n\npp$2.parseSpread = function (refDestructuringErrors) {\n var node = this.startNode();\n this.next();\n node.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n return this.finishNode(node, \"SpreadElement\");\n};\npp$2.parseRestBinding = function () {\n var node = this.startNode();\n this.next();\n\n // RestElement inside of a function parameter must be an identifier\n if (this.options.ecmaVersion === 6 && this.type !== types.name) {\n this.unexpected();\n }\n node.argument = this.parseBindingAtom();\n return this.finishNode(node, \"RestElement\");\n};\n\n// Parses lvalue (assignable) atom.\n\npp$2.parseBindingAtom = function () {\n if (this.options.ecmaVersion >= 6) {\n switch (this.type) {\n case types.bracketL:\n var node = this.startNode();\n this.next();\n node.elements = this.parseBindingList(types.bracketR, true, true);\n return this.finishNode(node, \"ArrayPattern\");\n case types.braceL:\n return this.parseObj(true);\n }\n }\n return this.parseIdent();\n};\npp$2.parseBindingList = function (close, allowEmpty, allowTrailingComma) {\n var this$1 = this;\n var elts = [],\n first = true;\n while (!this.eat(close)) {\n if (first) {\n first = false;\n } else {\n this$1.expect(types.comma);\n }\n if (allowEmpty && this$1.type === types.comma) {\n elts.push(null);\n } else if (allowTrailingComma && this$1.afterTrailingComma(close)) {\n break;\n } else if (this$1.type === types.ellipsis) {\n var rest = this$1.parseRestBinding();\n this$1.parseBindingListItem(rest);\n elts.push(rest);\n if (this$1.type === types.comma) {\n this$1.raise(this$1.start, \"Comma is not permitted after the rest element\");\n }\n this$1.expect(close);\n break;\n } else {\n var elem = this$1.parseMaybeDefault(this$1.start, this$1.startLoc);\n this$1.parseBindingListItem(elem);\n elts.push(elem);\n }\n }\n return elts;\n};\npp$2.parseBindingListItem = function (param) {\n return param;\n};\n\n// Parses assignment pattern around given atom if possible.\n\npp$2.parseMaybeDefault = function (startPos, startLoc, left) {\n left = left || this.parseBindingAtom();\n if (this.options.ecmaVersion < 6 || !this.eat(types.eq)) {\n return left;\n }\n var node = this.startNodeAt(startPos, startLoc);\n node.left = left;\n node.right = this.parseMaybeAssign();\n return this.finishNode(node, \"AssignmentPattern\");\n};\n\n// Verify that a node is an lval — something that can be assigned\n// to.\n// bindingType can be either:\n// 'var' indicating that the lval creates a 'var' binding\n// 'let' indicating that the lval creates a lexical ('let' or 'const') binding\n// 'none' indicating that the binding should be checked for illegal identifiers, but not for duplicate references\n\npp$2.checkLVal = function (expr, bindingType, checkClashes) {\n var this$1 = this;\n if (bindingType === void 0) bindingType = BIND_NONE;\n switch (expr.type) {\n case \"Identifier\":\n if (this.strict && this.reservedWordsStrictBind.test(expr.name)) {\n this.raiseRecoverable(expr.start, (bindingType ? \"Binding \" : \"Assigning to \") + expr.name + \" in strict mode\");\n }\n if (checkClashes) {\n if (has(checkClashes, expr.name)) {\n this.raiseRecoverable(expr.start, \"Argument name clash\");\n }\n checkClashes[expr.name] = true;\n }\n if (bindingType !== BIND_NONE && bindingType !== BIND_OUTSIDE) {\n this.declareName(expr.name, bindingType, expr.start);\n }\n break;\n case \"MemberExpression\":\n if (bindingType) {\n this.raiseRecoverable(expr.start, \"Binding member expression\");\n }\n break;\n case \"ObjectPattern\":\n for (var i = 0, list = expr.properties; i < list.length; i += 1) {\n var prop = list[i];\n this$1.checkLVal(prop, bindingType, checkClashes);\n }\n break;\n case \"Property\":\n // AssignmentProperty has type === \"Property\"\n this.checkLVal(expr.value, bindingType, checkClashes);\n break;\n case \"ArrayPattern\":\n for (var i$1 = 0, list$1 = expr.elements; i$1 < list$1.length; i$1 += 1) {\n var elem = list$1[i$1];\n if (elem) {\n this$1.checkLVal(elem, bindingType, checkClashes);\n }\n }\n break;\n case \"AssignmentPattern\":\n this.checkLVal(expr.left, bindingType, checkClashes);\n break;\n case \"RestElement\":\n this.checkLVal(expr.argument, bindingType, checkClashes);\n break;\n case \"ParenthesizedExpression\":\n this.checkLVal(expr.expression, bindingType, checkClashes);\n break;\n default:\n this.raise(expr.start, (bindingType ? \"Binding\" : \"Assigning to\") + \" rvalue\");\n }\n};\n\n// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts — that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\nvar pp$3 = Parser.prototype;\n\n// Check if property name clashes with already added.\n// Object/class getters and setters are not allowed to clash —\n// either with each other or with an init property — and in\n// strict mode, init properties are also not allowed to be repeated.\n\npp$3.checkPropClash = function (prop, propHash, refDestructuringErrors) {\n if (this.options.ecmaVersion >= 9 && prop.type === \"SpreadElement\") {\n return;\n }\n if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand)) {\n return;\n }\n var key = prop.key;\n var name;\n switch (key.type) {\n case \"Identifier\":\n name = key.name;\n break;\n case \"Literal\":\n name = String(key.value);\n break;\n default:\n return;\n }\n var kind = prop.kind;\n if (this.options.ecmaVersion >= 6) {\n if (name === \"__proto__\" && kind === \"init\") {\n if (propHash.proto) {\n if (refDestructuringErrors && refDestructuringErrors.doubleProto < 0) {\n refDestructuringErrors.doubleProto = key.start;\n }\n // Backwards-compat kludge. Can be removed in version 6.0\n else {\n this.raiseRecoverable(key.start, \"Redefinition of __proto__ property\");\n }\n }\n propHash.proto = true;\n }\n return;\n }\n name = \"$\" + name;\n var other = propHash[name];\n if (other) {\n var redefinition;\n if (kind === \"init\") {\n redefinition = this.strict && other.init || other.get || other.set;\n } else {\n redefinition = other.init || other[kind];\n }\n if (redefinition) {\n this.raiseRecoverable(key.start, \"Redefinition of property\");\n }\n } else {\n other = propHash[name] = {\n init: false,\n get: false,\n set: false\n };\n }\n other[kind] = true;\n};\n\n// ### Expression parsing\n\n// These nest, from the most general expression type at the top to\n// 'atomic', nondivisible expression types at the bottom. Most of\n// the functions will simply let the function(s) below them parse,\n// and, *if* the syntactic construct they handle is present, wrap\n// the AST node that the inner parser gave them in another node.\n\n// Parse a full expression. The optional arguments are used to\n// forbid the `in` operator (in for loops initalization expressions)\n// and provide reference for storing '=' operator inside shorthand\n// property assignment in contexts where both object expression\n// and object pattern might appear (so it's possible to raise\n// delayed syntax error at correct position).\n\npp$3.parseExpression = function (noIn, refDestructuringErrors) {\n var this$1 = this;\n var startPos = this.start,\n startLoc = this.startLoc;\n var expr = this.parseMaybeAssign(noIn, refDestructuringErrors);\n if (this.type === types.comma) {\n var node = this.startNodeAt(startPos, startLoc);\n node.expressions = [expr];\n while (this.eat(types.comma)) {\n node.expressions.push(this$1.parseMaybeAssign(noIn, refDestructuringErrors));\n }\n return this.finishNode(node, \"SequenceExpression\");\n }\n return expr;\n};\n\n// Parse an assignment expression. This includes applications of\n// operators like `+=`.\n\npp$3.parseMaybeAssign = function (noIn, refDestructuringErrors, afterLeftParse) {\n if (this.isContextual(\"yield\")) {\n if (this.inGenerator) {\n return this.parseYield();\n }\n // The tokenizer will assume an expression is allowed after\n // `yield`, but this isn't that kind of yield\n else {\n this.exprAllowed = false;\n }\n }\n var ownDestructuringErrors = false,\n oldParenAssign = -1,\n oldTrailingComma = -1,\n oldShorthandAssign = -1;\n if (refDestructuringErrors) {\n oldParenAssign = refDestructuringErrors.parenthesizedAssign;\n oldTrailingComma = refDestructuringErrors.trailingComma;\n oldShorthandAssign = refDestructuringErrors.shorthandAssign;\n refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.shorthandAssign = -1;\n } else {\n refDestructuringErrors = new DestructuringErrors();\n ownDestructuringErrors = true;\n }\n var startPos = this.start,\n startLoc = this.startLoc;\n if (this.type === types.parenL || this.type === types.name) {\n this.potentialArrowAt = this.start;\n }\n var left = this.parseMaybeConditional(noIn, refDestructuringErrors);\n if (afterLeftParse) {\n left = afterLeftParse.call(this, left, startPos, startLoc);\n }\n if (this.type.isAssign) {\n var node = this.startNodeAt(startPos, startLoc);\n node.operator = this.value;\n node.left = this.type === types.eq ? this.toAssignable(left, false, refDestructuringErrors) : left;\n if (!ownDestructuringErrors) {\n DestructuringErrors.call(refDestructuringErrors);\n }\n refDestructuringErrors.shorthandAssign = -1; // reset because shorthand default was used correctly\n this.checkLVal(left);\n this.next();\n node.right = this.parseMaybeAssign(noIn);\n return this.finishNode(node, \"AssignmentExpression\");\n } else {\n if (ownDestructuringErrors) {\n this.checkExpressionErrors(refDestructuringErrors, true);\n }\n }\n if (oldParenAssign > -1) {\n refDestructuringErrors.parenthesizedAssign = oldParenAssign;\n }\n if (oldTrailingComma > -1) {\n refDestructuringErrors.trailingComma = oldTrailingComma;\n }\n if (oldShorthandAssign > -1) {\n refDestructuringErrors.shorthandAssign = oldShorthandAssign;\n }\n return left;\n};\n\n// Parse a ternary conditional (`?:`) operator.\n\npp$3.parseMaybeConditional = function (noIn, refDestructuringErrors) {\n var startPos = this.start,\n startLoc = this.startLoc;\n var expr = this.parseExprOps(noIn, refDestructuringErrors);\n if (this.checkExpressionErrors(refDestructuringErrors)) {\n return expr;\n }\n if (this.eat(types.question)) {\n var node = this.startNodeAt(startPos, startLoc);\n node.test = expr;\n node.consequent = this.parseMaybeAssign();\n this.expect(types.colon);\n node.alternate = this.parseMaybeAssign(noIn);\n return this.finishNode(node, \"ConditionalExpression\");\n }\n return expr;\n};\n\n// Start the precedence parser.\n\npp$3.parseExprOps = function (noIn, refDestructuringErrors) {\n var startPos = this.start,\n startLoc = this.startLoc;\n var expr = this.parseMaybeUnary(refDestructuringErrors, false);\n if (this.checkExpressionErrors(refDestructuringErrors)) {\n return expr;\n }\n return expr.start === startPos && expr.type === \"ArrowFunctionExpression\" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, noIn);\n};\n\n// Parse binary operators with the operator precedence parsing\n// algorithm. `left` is the left-hand side of the operator.\n// `minPrec` provides context that allows the function to stop and\n// defer further parser to one of its callers when it encounters an\n// operator that has a lower precedence than the set it is parsing.\n\npp$3.parseExprOp = function (left, leftStartPos, leftStartLoc, minPrec, noIn) {\n var prec = this.type.binop;\n if (prec != null && (!noIn || this.type !== types._in)) {\n if (prec > minPrec) {\n var logical = this.type === types.logicalOR || this.type === types.logicalAND;\n var op = this.value;\n this.next();\n var startPos = this.start,\n startLoc = this.startLoc;\n var right = this.parseExprOp(this.parseMaybeUnary(null, false), startPos, startLoc, prec, noIn);\n var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical);\n return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn);\n }\n }\n return left;\n};\npp$3.buildBinary = function (startPos, startLoc, left, right, op, logical) {\n var node = this.startNodeAt(startPos, startLoc);\n node.left = left;\n node.operator = op;\n node.right = right;\n return this.finishNode(node, logical ? \"LogicalExpression\" : \"BinaryExpression\");\n};\n\n// Parse unary operators, both prefix and postfix.\n\npp$3.parseMaybeUnary = function (refDestructuringErrors, sawUnary) {\n var this$1 = this;\n var startPos = this.start,\n startLoc = this.startLoc,\n expr;\n if (this.isContextual(\"await\") && (this.inAsync || !this.inFunction && this.options.allowAwaitOutsideFunction)) {\n expr = this.parseAwait();\n sawUnary = true;\n } else if (this.type.prefix) {\n var node = this.startNode(),\n update = this.type === types.incDec;\n node.operator = this.value;\n node.prefix = true;\n this.next();\n node.argument = this.parseMaybeUnary(null, true);\n this.checkExpressionErrors(refDestructuringErrors, true);\n if (update) {\n this.checkLVal(node.argument);\n } else if (this.strict && node.operator === \"delete\" && node.argument.type === \"Identifier\") {\n this.raiseRecoverable(node.start, \"Deleting local variable in strict mode\");\n } else {\n sawUnary = true;\n }\n expr = this.finishNode(node, update ? \"UpdateExpression\" : \"UnaryExpression\");\n } else {\n expr = this.parseExprSubscripts(refDestructuringErrors);\n if (this.checkExpressionErrors(refDestructuringErrors)) {\n return expr;\n }\n while (this.type.postfix && !this.canInsertSemicolon()) {\n var node$1 = this$1.startNodeAt(startPos, startLoc);\n node$1.operator = this$1.value;\n node$1.prefix = false;\n node$1.argument = expr;\n this$1.checkLVal(expr);\n this$1.next();\n expr = this$1.finishNode(node$1, \"UpdateExpression\");\n }\n }\n if (!sawUnary && this.eat(types.starstar)) {\n return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false), \"**\", false);\n } else {\n return expr;\n }\n};\n\n// Parse call, dot, and `[]`-subscript expressions.\n\npp$3.parseExprSubscripts = function (refDestructuringErrors) {\n var startPos = this.start,\n startLoc = this.startLoc;\n var expr = this.parseExprAtom(refDestructuringErrors);\n var skipArrowSubscripts = expr.type === \"ArrowFunctionExpression\" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== \")\";\n if (this.checkExpressionErrors(refDestructuringErrors) || skipArrowSubscripts) {\n return expr;\n }\n var result = this.parseSubscripts(expr, startPos, startLoc);\n if (refDestructuringErrors && result.type === \"MemberExpression\") {\n if (refDestructuringErrors.parenthesizedAssign >= result.start) {\n refDestructuringErrors.parenthesizedAssign = -1;\n }\n if (refDestructuringErrors.parenthesizedBind >= result.start) {\n refDestructuringErrors.parenthesizedBind = -1;\n }\n }\n return result;\n};\npp$3.parseSubscripts = function (base, startPos, startLoc, noCalls) {\n var this$1 = this;\n var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === \"Identifier\" && base.name === \"async\" && this.lastTokEnd === base.end && !this.canInsertSemicolon() && this.input.slice(base.start, base.end) === \"async\";\n for (var computed = void 0;;) {\n if ((computed = this$1.eat(types.bracketL)) || this$1.eat(types.dot)) {\n var node = this$1.startNodeAt(startPos, startLoc);\n node.object = base;\n node.property = computed ? this$1.parseExpression() : this$1.parseIdent(true);\n node.computed = !!computed;\n if (computed) {\n this$1.expect(types.bracketR);\n }\n base = this$1.finishNode(node, \"MemberExpression\");\n } else if (!noCalls && this$1.eat(types.parenL)) {\n var refDestructuringErrors = new DestructuringErrors(),\n oldYieldPos = this$1.yieldPos,\n oldAwaitPos = this$1.awaitPos;\n this$1.yieldPos = 0;\n this$1.awaitPos = 0;\n var exprList = this$1.parseExprList(types.parenR, this$1.options.ecmaVersion >= 8, false, refDestructuringErrors);\n if (maybeAsyncArrow && !this$1.canInsertSemicolon() && this$1.eat(types.arrow)) {\n this$1.checkPatternErrors(refDestructuringErrors, false);\n this$1.checkYieldAwaitInDefaultParams();\n this$1.yieldPos = oldYieldPos;\n this$1.awaitPos = oldAwaitPos;\n return this$1.parseArrowExpression(this$1.startNodeAt(startPos, startLoc), exprList, true);\n }\n this$1.checkExpressionErrors(refDestructuringErrors, true);\n this$1.yieldPos = oldYieldPos || this$1.yieldPos;\n this$1.awaitPos = oldAwaitPos || this$1.awaitPos;\n var node$1 = this$1.startNodeAt(startPos, startLoc);\n node$1.callee = base;\n node$1.arguments = exprList;\n base = this$1.finishNode(node$1, \"CallExpression\");\n } else if (this$1.type === types.backQuote) {\n var node$2 = this$1.startNodeAt(startPos, startLoc);\n node$2.tag = base;\n node$2.quasi = this$1.parseTemplate({\n isTagged: true\n });\n base = this$1.finishNode(node$2, \"TaggedTemplateExpression\");\n } else {\n return base;\n }\n }\n};\n\n// Parse an atomic expression — either a single token that is an\n// expression, an expression started by a keyword like `function` or\n// `new`, or an expression wrapped in punctuation like `()`, `[]`,\n// or `{}`.\n\npp$3.parseExprAtom = function (refDestructuringErrors) {\n var node,\n canBeArrow = this.potentialArrowAt === this.start;\n switch (this.type) {\n case types._super:\n if (!this.inFunction) {\n this.raise(this.start, \"'super' outside of function or class\");\n }\n node = this.startNode();\n this.next();\n // The `super` keyword can appear at below:\n // SuperProperty:\n // super [ Expression ]\n // super . IdentifierName\n // SuperCall:\n // super Arguments\n if (this.type !== types.dot && this.type !== types.bracketL && this.type !== types.parenL) {\n this.unexpected();\n }\n return this.finishNode(node, \"Super\");\n case types._this:\n node = this.startNode();\n this.next();\n return this.finishNode(node, \"ThisExpression\");\n case types.name:\n var startPos = this.start,\n startLoc = this.startLoc,\n containsEsc = this.containsEsc;\n var id = this.parseIdent(this.type !== types.name);\n if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === \"async\" && !this.canInsertSemicolon() && this.eat(types._function)) {\n return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true);\n }\n if (canBeArrow && !this.canInsertSemicolon()) {\n if (this.eat(types.arrow)) {\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false);\n }\n if (this.options.ecmaVersion >= 8 && id.name === \"async\" && this.type === types.name && !containsEsc) {\n id = this.parseIdent();\n if (this.canInsertSemicolon() || !this.eat(types.arrow)) {\n this.unexpected();\n }\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true);\n }\n }\n return id;\n case types.regexp:\n var value = this.value;\n node = this.parseLiteral(value.value);\n node.regex = {\n pattern: value.pattern,\n flags: value.flags\n };\n return node;\n case types.num:\n case types.string:\n return this.parseLiteral(this.value);\n case types._null:\n case types._true:\n case types._false:\n node = this.startNode();\n node.value = this.type === types._null ? null : this.type === types._true;\n node.raw = this.type.keyword;\n this.next();\n return this.finishNode(node, \"Literal\");\n case types.parenL:\n var start = this.start,\n expr = this.parseParenAndDistinguishExpression(canBeArrow);\n if (refDestructuringErrors) {\n if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr)) {\n refDestructuringErrors.parenthesizedAssign = start;\n }\n if (refDestructuringErrors.parenthesizedBind < 0) {\n refDestructuringErrors.parenthesizedBind = start;\n }\n }\n return expr;\n case types.bracketL:\n node = this.startNode();\n this.next();\n node.elements = this.parseExprList(types.bracketR, true, true, refDestructuringErrors);\n return this.finishNode(node, \"ArrayExpression\");\n case types.braceL:\n return this.parseObj(false, refDestructuringErrors);\n case types._function:\n node = this.startNode();\n this.next();\n return this.parseFunction(node, 0);\n case types._class:\n return this.parseClass(this.startNode(), false);\n case types._new:\n return this.parseNew();\n case types.backQuote:\n return this.parseTemplate();\n default:\n this.unexpected();\n }\n};\npp$3.parseLiteral = function (value) {\n var node = this.startNode();\n node.value = value;\n node.raw = this.input.slice(this.start, this.end);\n this.next();\n return this.finishNode(node, \"Literal\");\n};\npp$3.parseParenExpression = function () {\n this.expect(types.parenL);\n var val = this.parseExpression();\n this.expect(types.parenR);\n return val;\n};\npp$3.parseParenAndDistinguishExpression = function (canBeArrow) {\n var this$1 = this;\n var startPos = this.start,\n startLoc = this.startLoc,\n val,\n allowTrailingComma = this.options.ecmaVersion >= 8;\n if (this.options.ecmaVersion >= 6) {\n this.next();\n var innerStartPos = this.start,\n innerStartLoc = this.startLoc;\n var exprList = [],\n first = true,\n lastIsComma = false;\n var refDestructuringErrors = new DestructuringErrors(),\n oldYieldPos = this.yieldPos,\n oldAwaitPos = this.awaitPos,\n spreadStart;\n this.yieldPos = 0;\n this.awaitPos = 0;\n while (this.type !== types.parenR) {\n first ? first = false : this$1.expect(types.comma);\n if (allowTrailingComma && this$1.afterTrailingComma(types.parenR, true)) {\n lastIsComma = true;\n break;\n } else if (this$1.type === types.ellipsis) {\n spreadStart = this$1.start;\n exprList.push(this$1.parseParenItem(this$1.parseRestBinding()));\n if (this$1.type === types.comma) {\n this$1.raise(this$1.start, \"Comma is not permitted after the rest element\");\n }\n break;\n } else {\n exprList.push(this$1.parseMaybeAssign(false, refDestructuringErrors, this$1.parseParenItem));\n }\n }\n var innerEndPos = this.start,\n innerEndLoc = this.startLoc;\n this.expect(types.parenR);\n if (canBeArrow && !this.canInsertSemicolon() && this.eat(types.arrow)) {\n this.checkPatternErrors(refDestructuringErrors, false);\n this.checkYieldAwaitInDefaultParams();\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n return this.parseParenArrowList(startPos, startLoc, exprList);\n }\n if (!exprList.length || lastIsComma) {\n this.unexpected(this.lastTokStart);\n }\n if (spreadStart) {\n this.unexpected(spreadStart);\n }\n this.checkExpressionErrors(refDestructuringErrors, true);\n this.yieldPos = oldYieldPos || this.yieldPos;\n this.awaitPos = oldAwaitPos || this.awaitPos;\n if (exprList.length > 1) {\n val = this.startNodeAt(innerStartPos, innerStartLoc);\n val.expressions = exprList;\n this.finishNodeAt(val, \"SequenceExpression\", innerEndPos, innerEndLoc);\n } else {\n val = exprList[0];\n }\n } else {\n val = this.parseParenExpression();\n }\n if (this.options.preserveParens) {\n var par = this.startNodeAt(startPos, startLoc);\n par.expression = val;\n return this.finishNode(par, \"ParenthesizedExpression\");\n } else {\n return val;\n }\n};\npp$3.parseParenItem = function (item) {\n return item;\n};\npp$3.parseParenArrowList = function (startPos, startLoc, exprList) {\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList);\n};\n\n// New's precedence is slightly tricky. It must allow its argument to\n// be a `[]` or dot subscript expression, but not a call — at least,\n// not without wrapping it in parentheses. Thus, it uses the noCalls\n// argument to parseSubscripts to prevent it from consuming the\n// argument list.\n\nvar empty$1 = [];\npp$3.parseNew = function () {\n var node = this.startNode();\n var meta = this.parseIdent(true);\n if (this.options.ecmaVersion >= 6 && this.eat(types.dot)) {\n node.meta = meta;\n var containsEsc = this.containsEsc;\n node.property = this.parseIdent(true);\n if (node.property.name !== \"target\" || containsEsc) {\n this.raiseRecoverable(node.property.start, \"The only valid meta property for new is new.target\");\n }\n if (!this.inNonArrowFunction()) {\n this.raiseRecoverable(node.start, \"new.target can only be used in functions\");\n }\n return this.finishNode(node, \"MetaProperty\");\n }\n var startPos = this.start,\n startLoc = this.startLoc;\n node.callee = this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true);\n if (this.eat(types.parenL)) {\n node.arguments = this.parseExprList(types.parenR, this.options.ecmaVersion >= 8, false);\n } else {\n node.arguments = empty$1;\n }\n return this.finishNode(node, \"NewExpression\");\n};\n\n// Parse template expression.\n\npp$3.parseTemplateElement = function (ref) {\n var isTagged = ref.isTagged;\n var elem = this.startNode();\n if (this.type === types.invalidTemplate) {\n if (!isTagged) {\n this.raiseRecoverable(this.start, \"Bad escape sequence in untagged template literal\");\n }\n elem.value = {\n raw: this.value,\n cooked: null\n };\n } else {\n elem.value = {\n raw: this.input.slice(this.start, this.end).replace(/\\r\\n?/g, \"\\n\"),\n cooked: this.value\n };\n }\n this.next();\n elem.tail = this.type === types.backQuote;\n return this.finishNode(elem, \"TemplateElement\");\n};\npp$3.parseTemplate = function (ref) {\n var this$1 = this;\n if (ref === void 0) ref = {};\n var isTagged = ref.isTagged;\n if (isTagged === void 0) isTagged = false;\n var node = this.startNode();\n this.next();\n node.expressions = [];\n var curElt = this.parseTemplateElement({\n isTagged: isTagged\n });\n node.quasis = [curElt];\n while (!curElt.tail) {\n if (this$1.type === types.eof) {\n this$1.raise(this$1.pos, \"Unterminated template literal\");\n }\n this$1.expect(types.dollarBraceL);\n node.expressions.push(this$1.parseExpression());\n this$1.expect(types.braceR);\n node.quasis.push(curElt = this$1.parseTemplateElement({\n isTagged: isTagged\n }));\n }\n this.next();\n return this.finishNode(node, \"TemplateLiteral\");\n};\npp$3.isAsyncProp = function (prop) {\n return !prop.computed && prop.key.type === \"Identifier\" && prop.key.name === \"async\" && (this.type === types.name || this.type === types.num || this.type === types.string || this.type === types.bracketL || this.type.keyword || this.options.ecmaVersion >= 9 && this.type === types.star) && !lineBreak.test(this.input.slice(this.lastTokEnd, this.start));\n};\n\n// Parse an object literal or binding pattern.\n\npp$3.parseObj = function (isPattern, refDestructuringErrors) {\n var this$1 = this;\n var node = this.startNode(),\n first = true,\n propHash = {};\n node.properties = [];\n this.next();\n while (!this.eat(types.braceR)) {\n if (!first) {\n this$1.expect(types.comma);\n if (this$1.afterTrailingComma(types.braceR)) {\n break;\n }\n } else {\n first = false;\n }\n var prop = this$1.parseProperty(isPattern, refDestructuringErrors);\n if (!isPattern) {\n this$1.checkPropClash(prop, propHash, refDestructuringErrors);\n }\n node.properties.push(prop);\n }\n return this.finishNode(node, isPattern ? \"ObjectPattern\" : \"ObjectExpression\");\n};\npp$3.parseProperty = function (isPattern, refDestructuringErrors) {\n var prop = this.startNode(),\n isGenerator,\n isAsync,\n startPos,\n startLoc;\n if (this.options.ecmaVersion >= 9 && this.eat(types.ellipsis)) {\n if (isPattern) {\n prop.argument = this.parseIdent(false);\n if (this.type === types.comma) {\n this.raise(this.start, \"Comma is not permitted after the rest element\");\n }\n return this.finishNode(prop, \"RestElement\");\n }\n // To disallow parenthesized identifier via `this.toAssignable()`.\n if (this.type === types.parenL && refDestructuringErrors) {\n if (refDestructuringErrors.parenthesizedAssign < 0) {\n refDestructuringErrors.parenthesizedAssign = this.start;\n }\n if (refDestructuringErrors.parenthesizedBind < 0) {\n refDestructuringErrors.parenthesizedBind = this.start;\n }\n }\n // Parse argument.\n prop.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n // To disallow trailing comma via `this.toAssignable()`.\n if (this.type === types.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0) {\n refDestructuringErrors.trailingComma = this.start;\n }\n // Finish\n return this.finishNode(prop, \"SpreadElement\");\n }\n if (this.options.ecmaVersion >= 6) {\n prop.method = false;\n prop.shorthand = false;\n if (isPattern || refDestructuringErrors) {\n startPos = this.start;\n startLoc = this.startLoc;\n }\n if (!isPattern) {\n isGenerator = this.eat(types.star);\n }\n }\n var containsEsc = this.containsEsc;\n this.parsePropertyName(prop);\n if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) {\n isAsync = true;\n isGenerator = this.options.ecmaVersion >= 9 && this.eat(types.star);\n this.parsePropertyName(prop, refDestructuringErrors);\n } else {\n isAsync = false;\n }\n this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc);\n return this.finishNode(prop, \"Property\");\n};\npp$3.parsePropertyValue = function (prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) {\n if ((isGenerator || isAsync) && this.type === types.colon) {\n this.unexpected();\n }\n if (this.eat(types.colon)) {\n prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors);\n prop.kind = \"init\";\n } else if (this.options.ecmaVersion >= 6 && this.type === types.parenL) {\n if (isPattern) {\n this.unexpected();\n }\n prop.kind = \"init\";\n prop.method = true;\n prop.value = this.parseMethod(isGenerator, isAsync);\n } else if (!isPattern && !containsEsc && this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === \"Identifier\" && (prop.key.name === \"get\" || prop.key.name === \"set\") && this.type !== types.comma && this.type !== types.braceR) {\n if (isGenerator || isAsync) {\n this.unexpected();\n }\n prop.kind = prop.key.name;\n this.parsePropertyName(prop);\n prop.value = this.parseMethod(false);\n var paramCount = prop.kind === \"get\" ? 0 : 1;\n if (prop.value.params.length !== paramCount) {\n var start = prop.value.start;\n if (prop.kind === \"get\") {\n this.raiseRecoverable(start, \"getter should have no params\");\n } else {\n this.raiseRecoverable(start, \"setter should have exactly one param\");\n }\n } else {\n if (prop.kind === \"set\" && prop.value.params[0].type === \"RestElement\") {\n this.raiseRecoverable(prop.value.params[0].start, \"Setter cannot use rest params\");\n }\n }\n } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === \"Identifier\") {\n this.checkUnreserved(prop.key);\n prop.kind = \"init\";\n if (isPattern) {\n prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key);\n } else if (this.type === types.eq && refDestructuringErrors) {\n if (refDestructuringErrors.shorthandAssign < 0) {\n refDestructuringErrors.shorthandAssign = this.start;\n }\n prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key);\n } else {\n prop.value = prop.key;\n }\n prop.shorthand = true;\n } else {\n this.unexpected();\n }\n};\npp$3.parsePropertyName = function (prop) {\n if (this.options.ecmaVersion >= 6) {\n if (this.eat(types.bracketL)) {\n prop.computed = true;\n prop.key = this.parseMaybeAssign();\n this.expect(types.bracketR);\n return prop.key;\n } else {\n prop.computed = false;\n }\n }\n return prop.key = this.type === types.num || this.type === types.string ? this.parseExprAtom() : this.parseIdent(true);\n};\n\n// Initialize empty function node.\n\npp$3.initFunction = function (node) {\n node.id = null;\n if (this.options.ecmaVersion >= 6) {\n node.generator = node.expression = false;\n }\n if (this.options.ecmaVersion >= 8) {\n node.async = false;\n }\n};\n\n// Parse object or class method.\n\npp$3.parseMethod = function (isGenerator, isAsync) {\n var node = this.startNode(),\n oldYieldPos = this.yieldPos,\n oldAwaitPos = this.awaitPos;\n this.initFunction(node);\n if (this.options.ecmaVersion >= 6) {\n node.generator = isGenerator;\n }\n if (this.options.ecmaVersion >= 8) {\n node.async = !!isAsync;\n }\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.enterScope(functionFlags(isAsync, node.generator));\n this.expect(types.parenL);\n node.params = this.parseBindingList(types.parenR, false, this.options.ecmaVersion >= 8);\n this.checkYieldAwaitInDefaultParams();\n this.parseFunctionBody(node, false);\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n return this.finishNode(node, \"FunctionExpression\");\n};\n\n// Parse arrow function expression with given parameters.\n\npp$3.parseArrowExpression = function (node, params, isAsync) {\n var oldYieldPos = this.yieldPos,\n oldAwaitPos = this.awaitPos;\n this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW);\n this.initFunction(node);\n if (this.options.ecmaVersion >= 8) {\n node.async = !!isAsync;\n }\n this.yieldPos = 0;\n this.awaitPos = 0;\n node.params = this.toAssignableList(params, true);\n this.parseFunctionBody(node, true);\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n return this.finishNode(node, \"ArrowFunctionExpression\");\n};\n\n// Parse function body and check parameters.\n\npp$3.parseFunctionBody = function (node, isArrowFunction) {\n var isExpression = isArrowFunction && this.type !== types.braceL;\n var oldStrict = this.strict,\n useStrict = false;\n if (isExpression) {\n node.body = this.parseMaybeAssign();\n node.expression = true;\n this.checkParams(node, false);\n } else {\n var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params);\n if (!oldStrict || nonSimple) {\n useStrict = this.strictDirective(this.end);\n // If this is a strict mode function, verify that argument names\n // are not repeated, and it does not try to bind the words `eval`\n // or `arguments`.\n if (useStrict && nonSimple) {\n this.raiseRecoverable(node.start, \"Illegal 'use strict' directive in function with non-simple parameter list\");\n }\n }\n // Start a new scope with regard to labels and the `inFunction`\n // flag (restore them to their old value afterwards).\n var oldLabels = this.labels;\n this.labels = [];\n if (useStrict) {\n this.strict = true;\n }\n\n // Add the params to varDeclaredNames to ensure that an error is thrown\n // if a let/const declaration in the function clashes with one of the params.\n this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && this.isSimpleParamList(node.params));\n node.body = this.parseBlock(false);\n node.expression = false;\n this.adaptDirectivePrologue(node.body.body);\n this.labels = oldLabels;\n }\n this.exitScope();\n\n // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'\n if (this.strict && node.id) {\n this.checkLVal(node.id, BIND_OUTSIDE);\n }\n this.strict = oldStrict;\n};\npp$3.isSimpleParamList = function (params) {\n for (var i = 0, list = params; i < list.length; i += 1) {\n var param = list[i];\n if (param.type !== \"Identifier\") {\n return false;\n }\n }\n return true;\n};\n\n// Checks function params for various disallowed patterns such as using \"eval\"\n// or \"arguments\" and duplicate parameters.\n\npp$3.checkParams = function (node, allowDuplicates) {\n var this$1 = this;\n var nameHash = {};\n for (var i = 0, list = node.params; i < list.length; i += 1) {\n var param = list[i];\n this$1.checkLVal(param, BIND_VAR, allowDuplicates ? null : nameHash);\n }\n};\n\n// Parses a comma-separated list of expressions, and returns them as\n// an array. `close` is the token type that ends the list, and\n// `allowEmpty` can be turned on to allow subsequent commas with\n// nothing in between them to be parsed as `null` (which is needed\n// for array literals).\n\npp$3.parseExprList = function (close, allowTrailingComma, allowEmpty, refDestructuringErrors) {\n var this$1 = this;\n var elts = [],\n first = true;\n while (!this.eat(close)) {\n if (!first) {\n this$1.expect(types.comma);\n if (allowTrailingComma && this$1.afterTrailingComma(close)) {\n break;\n }\n } else {\n first = false;\n }\n var elt = void 0;\n if (allowEmpty && this$1.type === types.comma) {\n elt = null;\n } else if (this$1.type === types.ellipsis) {\n elt = this$1.parseSpread(refDestructuringErrors);\n if (refDestructuringErrors && this$1.type === types.comma && refDestructuringErrors.trailingComma < 0) {\n refDestructuringErrors.trailingComma = this$1.start;\n }\n } else {\n elt = this$1.parseMaybeAssign(false, refDestructuringErrors);\n }\n elts.push(elt);\n }\n return elts;\n};\npp$3.checkUnreserved = function (ref) {\n var start = ref.start;\n var end = ref.end;\n var name = ref.name;\n if (this.inGenerator && name === \"yield\") {\n this.raiseRecoverable(start, \"Can not use 'yield' as identifier inside a generator\");\n }\n if (this.inAsync && name === \"await\") {\n this.raiseRecoverable(start, \"Can not use 'await' as identifier inside an async function\");\n }\n if (this.keywords.test(name)) {\n this.raise(start, \"Unexpected keyword '\" + name + \"'\");\n }\n if (this.options.ecmaVersion < 6 && this.input.slice(start, end).indexOf(\"\\\\\") !== -1) {\n return;\n }\n var re = this.strict ? this.reservedWordsStrict : this.reservedWords;\n if (re.test(name)) {\n if (!this.inAsync && name === \"await\") {\n this.raiseRecoverable(start, \"Can not use keyword 'await' outside an async function\");\n }\n this.raiseRecoverable(start, \"The keyword '\" + name + \"' is reserved\");\n }\n};\n\n// Parse the next token as an identifier. If `liberal` is true (used\n// when parsing properties), it will also convert keywords into\n// identifiers.\n\npp$3.parseIdent = function (liberal, isBinding) {\n var node = this.startNode();\n if (liberal && this.options.allowReserved === \"never\") {\n liberal = false;\n }\n if (this.type === types.name) {\n node.name = this.value;\n } else if (this.type.keyword) {\n node.name = this.type.keyword;\n\n // To fix https://github.com/acornjs/acorn/issues/575\n // `class` and `function` keywords push new context into this.context.\n // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name.\n // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword\n if ((node.name === \"class\" || node.name === \"function\") && (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46)) {\n this.context.pop();\n }\n } else {\n this.unexpected();\n }\n this.next();\n this.finishNode(node, \"Identifier\");\n if (!liberal) {\n this.checkUnreserved(node);\n }\n return node;\n};\n\n// Parses yield expression inside generator.\n\npp$3.parseYield = function () {\n if (!this.yieldPos) {\n this.yieldPos = this.start;\n }\n var node = this.startNode();\n this.next();\n if (this.type === types.semi || this.canInsertSemicolon() || this.type !== types.star && !this.type.startsExpr) {\n node.delegate = false;\n node.argument = null;\n } else {\n node.delegate = this.eat(types.star);\n node.argument = this.parseMaybeAssign();\n }\n return this.finishNode(node, \"YieldExpression\");\n};\npp$3.parseAwait = function () {\n if (!this.awaitPos) {\n this.awaitPos = this.start;\n }\n var node = this.startNode();\n this.next();\n node.argument = this.parseMaybeUnary(null, true);\n return this.finishNode(node, \"AwaitExpression\");\n};\nvar pp$4 = Parser.prototype;\n\n// This function is used to raise exceptions on parse errors. It\n// takes an offset integer (into the current `input`) to indicate\n// the location of the error, attaches the position to the end\n// of the error message, and then raises a `SyntaxError` with that\n// message.\n\npp$4.raise = function (pos, message) {\n var loc = getLineInfo(this.input, pos);\n message += \" (\" + loc.line + \":\" + loc.column + \")\";\n var err = new SyntaxError(message);\n err.pos = pos;\n err.loc = loc;\n err.raisedAt = this.pos;\n throw err;\n};\npp$4.raiseRecoverable = pp$4.raise;\npp$4.curPosition = function () {\n if (this.options.locations) {\n return new Position(this.curLine, this.pos - this.lineStart);\n }\n};\nvar pp$5 = Parser.prototype;\nvar Scope = function Scope(flags) {\n this.flags = flags;\n // A list of var-declared names in the current lexical scope\n this.var = [];\n // A list of lexically-declared names in the current lexical scope\n this.lexical = [];\n};\n\n// The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names.\n\npp$5.enterScope = function (flags) {\n this.scopeStack.push(new Scope(flags));\n};\npp$5.exitScope = function () {\n this.scopeStack.pop();\n};\npp$5.declareName = function (name, bindingType, pos) {\n var this$1 = this;\n var redeclared = false;\n if (bindingType === BIND_LEXICAL) {\n var scope = this.currentScope();\n redeclared = scope.lexical.indexOf(name) > -1 || scope.var.indexOf(name) > -1;\n scope.lexical.push(name);\n } else if (bindingType === BIND_SIMPLE_CATCH) {\n var scope$1 = this.currentScope();\n scope$1.lexical.push(name);\n } else if (bindingType === BIND_FUNCTION) {\n var scope$2 = this.currentScope();\n redeclared = scope$2.lexical.indexOf(name) > -1;\n scope$2.var.push(name);\n } else {\n for (var i = this.scopeStack.length - 1; i >= 0; --i) {\n var scope$3 = this$1.scopeStack[i];\n if (scope$3.lexical.indexOf(name) > -1 && !(scope$3.flags & SCOPE_SIMPLE_CATCH) && scope$3.lexical[0] === name) {\n redeclared = true;\n }\n scope$3.var.push(name);\n if (scope$3.flags & SCOPE_VAR) {\n break;\n }\n }\n }\n if (redeclared) {\n this.raiseRecoverable(pos, \"Identifier '\" + name + \"' has already been declared\");\n }\n};\npp$5.currentScope = function () {\n return this.scopeStack[this.scopeStack.length - 1];\n};\npp$5.currentVarScope = function () {\n var this$1 = this;\n for (var i = this.scopeStack.length - 1;; i--) {\n var scope = this$1.scopeStack[i];\n if (scope.flags & SCOPE_VAR) {\n return scope;\n }\n }\n};\npp$5.inNonArrowFunction = function () {\n var this$1 = this;\n for (var i = this.scopeStack.length - 1; i >= 0; i--) {\n if (this$1.scopeStack[i].flags & SCOPE_FUNCTION && !(this$1.scopeStack[i].flags & SCOPE_ARROW)) {\n return true;\n }\n }\n return false;\n};\nvar Node = function Node(parser, pos, loc) {\n this.type = \"\";\n this.start = pos;\n this.end = 0;\n if (parser.options.locations) {\n this.loc = new SourceLocation(parser, loc);\n }\n if (parser.options.directSourceFile) {\n this.sourceFile = parser.options.directSourceFile;\n }\n if (parser.options.ranges) {\n this.range = [pos, 0];\n }\n};\n\n// Start an AST node, attaching a start offset.\n\nvar pp$6 = Parser.prototype;\npp$6.startNode = function () {\n return new Node(this, this.start, this.startLoc);\n};\npp$6.startNodeAt = function (pos, loc) {\n return new Node(this, pos, loc);\n};\n\n// Finish an AST node, adding `type` and `end` properties.\n\nfunction finishNodeAt(node, type, pos, loc) {\n node.type = type;\n node.end = pos;\n if (this.options.locations) {\n node.loc.end = loc;\n }\n if (this.options.ranges) {\n node.range[1] = pos;\n }\n return node;\n}\npp$6.finishNode = function (node, type) {\n return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc);\n};\n\n// Finish node at given position\n\npp$6.finishNodeAt = function (node, type, pos, loc) {\n return finishNodeAt.call(this, node, type, pos, loc);\n};\n\n// The algorithm used to determine whether a regexp can appear at a\n// given point in the program is loosely based on sweet.js' approach.\n// See https://github.com/mozilla/sweet.js/wiki/design\n\nvar TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) {\n this.token = token;\n this.isExpr = !!isExpr;\n this.preserveSpace = !!preserveSpace;\n this.override = override;\n this.generator = !!generator;\n};\nvar types$1 = {\n b_stat: new TokContext(\"{\", false),\n b_expr: new TokContext(\"{\", true),\n b_tmpl: new TokContext(\"${\", false),\n p_stat: new TokContext(\"(\", false),\n p_expr: new TokContext(\"(\", true),\n q_tmpl: new TokContext(\"`\", true, true, function (p) {\n return p.tryReadTemplateToken();\n }),\n f_stat: new TokContext(\"function\", false),\n f_expr: new TokContext(\"function\", true),\n f_expr_gen: new TokContext(\"function\", true, false, null, true),\n f_gen: new TokContext(\"function\", false, false, null, true)\n};\nvar pp$7 = Parser.prototype;\npp$7.initialContext = function () {\n return [types$1.b_stat];\n};\npp$7.braceIsBlock = function (prevType) {\n var parent = this.curContext();\n if (parent === types$1.f_expr || parent === types$1.f_stat) {\n return true;\n }\n if (prevType === types.colon && (parent === types$1.b_stat || parent === types$1.b_expr)) {\n return !parent.isExpr;\n }\n\n // The check for `tt.name && exprAllowed` detects whether we are\n // after a `yield` or `of` construct. See the `updateContext` for\n // `tt.name`.\n if (prevType === types._return || prevType === types.name && this.exprAllowed) {\n return lineBreak.test(this.input.slice(this.lastTokEnd, this.start));\n }\n if (prevType === types._else || prevType === types.semi || prevType === types.eof || prevType === types.parenR || prevType === types.arrow) {\n return true;\n }\n if (prevType === types.braceL) {\n return parent === types$1.b_stat;\n }\n if (prevType === types._var || prevType === types.name) {\n return false;\n }\n return !this.exprAllowed;\n};\npp$7.inGeneratorContext = function () {\n var this$1 = this;\n for (var i = this.context.length - 1; i >= 1; i--) {\n var context = this$1.context[i];\n if (context.token === \"function\") {\n return context.generator;\n }\n }\n return false;\n};\npp$7.updateContext = function (prevType) {\n var update,\n type = this.type;\n if (type.keyword && prevType === types.dot) {\n this.exprAllowed = false;\n } else if (update = type.updateContext) {\n update.call(this, prevType);\n } else {\n this.exprAllowed = type.beforeExpr;\n }\n};\n\n// Token-specific context update code\n\ntypes.parenR.updateContext = types.braceR.updateContext = function () {\n if (this.context.length === 1) {\n this.exprAllowed = true;\n return;\n }\n var out = this.context.pop();\n if (out === types$1.b_stat && this.curContext().token === \"function\") {\n out = this.context.pop();\n }\n this.exprAllowed = !out.isExpr;\n};\ntypes.braceL.updateContext = function (prevType) {\n this.context.push(this.braceIsBlock(prevType) ? types$1.b_stat : types$1.b_expr);\n this.exprAllowed = true;\n};\ntypes.dollarBraceL.updateContext = function () {\n this.context.push(types$1.b_tmpl);\n this.exprAllowed = true;\n};\ntypes.parenL.updateContext = function (prevType) {\n var statementParens = prevType === types._if || prevType === types._for || prevType === types._with || prevType === types._while;\n this.context.push(statementParens ? types$1.p_stat : types$1.p_expr);\n this.exprAllowed = true;\n};\ntypes.incDec.updateContext = function () {\n // tokExprAllowed stays unchanged\n};\ntypes._function.updateContext = types._class.updateContext = function (prevType) {\n if (prevType.beforeExpr && prevType !== types.semi && prevType !== types._else && !((prevType === types.colon || prevType === types.braceL) && this.curContext() === types$1.b_stat)) {\n this.context.push(types$1.f_expr);\n } else {\n this.context.push(types$1.f_stat);\n }\n this.exprAllowed = false;\n};\ntypes.backQuote.updateContext = function () {\n if (this.curContext() === types$1.q_tmpl) {\n this.context.pop();\n } else {\n this.context.push(types$1.q_tmpl);\n }\n this.exprAllowed = false;\n};\ntypes.star.updateContext = function (prevType) {\n if (prevType === types._function) {\n var index = this.context.length - 1;\n if (this.context[index] === types$1.f_expr) {\n this.context[index] = types$1.f_expr_gen;\n } else {\n this.context[index] = types$1.f_gen;\n }\n }\n this.exprAllowed = true;\n};\ntypes.name.updateContext = function (prevType) {\n var allowed = false;\n if (this.options.ecmaVersion >= 6 && prevType !== types.dot) {\n if (this.value === \"of\" && !this.exprAllowed || this.value === \"yield\" && this.inGeneratorContext()) {\n allowed = true;\n }\n }\n this.exprAllowed = allowed;\n};\nvar data = {\n \"$LONE\": [\"ASCII\", \"ASCII_Hex_Digit\", \"AHex\", \"Alphabetic\", \"Alpha\", \"Any\", \"Assigned\", \"Bidi_Control\", \"Bidi_C\", \"Bidi_Mirrored\", \"Bidi_M\", \"Case_Ignorable\", \"CI\", \"Cased\", \"Changes_When_Casefolded\", \"CWCF\", \"Changes_When_Casemapped\", \"CWCM\", \"Changes_When_Lowercased\", \"CWL\", \"Changes_When_NFKC_Casefolded\", \"CWKCF\", \"Changes_When_Titlecased\", \"CWT\", \"Changes_When_Uppercased\", \"CWU\", \"Dash\", \"Default_Ignorable_Code_Point\", \"DI\", \"Deprecated\", \"Dep\", \"Diacritic\", \"Dia\", \"Emoji\", \"Emoji_Component\", \"Emoji_Modifier\", \"Emoji_Modifier_Base\", \"Emoji_Presentation\", \"Extender\", \"Ext\", \"Grapheme_Base\", \"Gr_Base\", \"Grapheme_Extend\", \"Gr_Ext\", \"Hex_Digit\", \"Hex\", \"IDS_Binary_Operator\", \"IDSB\", \"IDS_Trinary_Operator\", \"IDST\", \"ID_Continue\", \"IDC\", \"ID_Start\", \"IDS\", \"Ideographic\", \"Ideo\", \"Join_Control\", \"Join_C\", \"Logical_Order_Exception\", \"LOE\", \"Lowercase\", \"Lower\", \"Math\", \"Noncharacter_Code_Point\", \"NChar\", \"Pattern_Syntax\", \"Pat_Syn\", \"Pattern_White_Space\", \"Pat_WS\", \"Quotation_Mark\", \"QMark\", \"Radical\", \"Regional_Indicator\", \"RI\", \"Sentence_Terminal\", \"STerm\", \"Soft_Dotted\", \"SD\", \"Terminal_Punctuation\", \"Term\", \"Unified_Ideograph\", \"UIdeo\", \"Uppercase\", \"Upper\", \"Variation_Selector\", \"VS\", \"White_Space\", \"space\", \"XID_Continue\", \"XIDC\", \"XID_Start\", \"XIDS\"],\n \"General_Category\": [\"Cased_Letter\", \"LC\", \"Close_Punctuation\", \"Pe\", \"Connector_Punctuation\", \"Pc\", \"Control\", \"Cc\", \"cntrl\", \"Currency_Symbol\", \"Sc\", \"Dash_Punctuation\", \"Pd\", \"Decimal_Number\", \"Nd\", \"digit\", \"Enclosing_Mark\", \"Me\", \"Final_Punctuation\", \"Pf\", \"Format\", \"Cf\", \"Initial_Punctuation\", \"Pi\", \"Letter\", \"L\", \"Letter_Number\", \"Nl\", \"Line_Separator\", \"Zl\", \"Lowercase_Letter\", \"Ll\", \"Mark\", \"M\", \"Combining_Mark\", \"Math_Symbol\", \"Sm\", \"Modifier_Letter\", \"Lm\", \"Modifier_Symbol\", \"Sk\", \"Nonspacing_Mark\", \"Mn\", \"Number\", \"N\", \"Open_Punctuation\", \"Ps\", \"Other\", \"C\", \"Other_Letter\", \"Lo\", \"Other_Number\", \"No\", \"Other_Punctuation\", \"Po\", \"Other_Symbol\", \"So\", \"Paragraph_Separator\", \"Zp\", \"Private_Use\", \"Co\", \"Punctuation\", \"P\", \"punct\", \"Separator\", \"Z\", \"Space_Separator\", \"Zs\", \"Spacing_Mark\", \"Mc\", \"Surrogate\", \"Cs\", \"Symbol\", \"S\", \"Titlecase_Letter\", \"Lt\", \"Unassigned\", \"Cn\", \"Uppercase_Letter\", \"Lu\"],\n \"Script\": [\"Adlam\", \"Adlm\", \"Ahom\", \"Anatolian_Hieroglyphs\", \"Hluw\", \"Arabic\", \"Arab\", \"Armenian\", \"Armn\", \"Avestan\", \"Avst\", \"Balinese\", \"Bali\", \"Bamum\", \"Bamu\", \"Bassa_Vah\", \"Bass\", \"Batak\", \"Batk\", \"Bengali\", \"Beng\", \"Bhaiksuki\", \"Bhks\", \"Bopomofo\", \"Bopo\", \"Brahmi\", \"Brah\", \"Braille\", \"Brai\", \"Buginese\", \"Bugi\", \"Buhid\", \"Buhd\", \"Canadian_Aboriginal\", \"Cans\", \"Carian\", \"Cari\", \"Caucasian_Albanian\", \"Aghb\", \"Chakma\", \"Cakm\", \"Cham\", \"Cherokee\", \"Cher\", \"Common\", \"Zyyy\", \"Coptic\", \"Copt\", \"Qaac\", \"Cuneiform\", \"Xsux\", \"Cypriot\", \"Cprt\", \"Cyrillic\", \"Cyrl\", \"Deseret\", \"Dsrt\", \"Devanagari\", \"Deva\", \"Duployan\", \"Dupl\", \"Egyptian_Hieroglyphs\", \"Egyp\", \"Elbasan\", \"Elba\", \"Ethiopic\", \"Ethi\", \"Georgian\", \"Geor\", \"Glagolitic\", \"Glag\", \"Gothic\", \"Goth\", \"Grantha\", \"Gran\", \"Greek\", \"Grek\", \"Gujarati\", \"Gujr\", \"Gurmukhi\", \"Guru\", \"Han\", \"Hani\", \"Hangul\", \"Hang\", \"Hanunoo\", \"Hano\", \"Hatran\", \"Hatr\", \"Hebrew\", \"Hebr\", \"Hiragana\", \"Hira\", \"Imperial_Aramaic\", \"Armi\", \"Inherited\", \"Zinh\", \"Qaai\", \"Inscriptional_Pahlavi\", \"Phli\", \"Inscriptional_Parthian\", \"Prti\", \"Javanese\", \"Java\", \"Kaithi\", \"Kthi\", \"Kannada\", \"Knda\", \"Katakana\", \"Kana\", \"Kayah_Li\", \"Kali\", \"Kharoshthi\", \"Khar\", \"Khmer\", \"Khmr\", \"Khojki\", \"Khoj\", \"Khudawadi\", \"Sind\", \"Lao\", \"Laoo\", \"Latin\", \"Latn\", \"Lepcha\", \"Lepc\", \"Limbu\", \"Limb\", \"Linear_A\", \"Lina\", \"Linear_B\", \"Linb\", \"Lisu\", \"Lycian\", \"Lyci\", \"Lydian\", \"Lydi\", \"Mahajani\", \"Mahj\", \"Malayalam\", \"Mlym\", \"Mandaic\", \"Mand\", \"Manichaean\", \"Mani\", \"Marchen\", \"Marc\", \"Masaram_Gondi\", \"Gonm\", \"Meetei_Mayek\", \"Mtei\", \"Mende_Kikakui\", \"Mend\", \"Meroitic_Cursive\", \"Merc\", \"Meroitic_Hieroglyphs\", \"Mero\", \"Miao\", \"Plrd\", \"Modi\", \"Mongolian\", \"Mong\", \"Mro\", \"Mroo\", \"Multani\", \"Mult\", \"Myanmar\", \"Mymr\", \"Nabataean\", \"Nbat\", \"New_Tai_Lue\", \"Talu\", \"Newa\", \"Nko\", \"Nkoo\", \"Nushu\", \"Nshu\", \"Ogham\", \"Ogam\", \"Ol_Chiki\", \"Olck\", \"Old_Hungarian\", \"Hung\", \"Old_Italic\", \"Ital\", \"Old_North_Arabian\", \"Narb\", \"Old_Permic\", \"Perm\", \"Old_Persian\", \"Xpeo\", \"Old_South_Arabian\", \"Sarb\", \"Old_Turkic\", \"Orkh\", \"Oriya\", \"Orya\", \"Osage\", \"Osge\", \"Osmanya\", \"Osma\", \"Pahawh_Hmong\", \"Hmng\", \"Palmyrene\", \"Palm\", \"Pau_Cin_Hau\", \"Pauc\", \"Phags_Pa\", \"Phag\", \"Phoenician\", \"Phnx\", \"Psalter_Pahlavi\", \"Phlp\", \"Rejang\", \"Rjng\", \"Runic\", \"Runr\", \"Samaritan\", \"Samr\", \"Saurashtra\", \"Saur\", \"Sharada\", \"Shrd\", \"Shavian\", \"Shaw\", \"Siddham\", \"Sidd\", \"SignWriting\", \"Sgnw\", \"Sinhala\", \"Sinh\", \"Sora_Sompeng\", \"Sora\", \"Soyombo\", \"Soyo\", \"Sundanese\", \"Sund\", \"Syloti_Nagri\", \"Sylo\", \"Syriac\", \"Syrc\", \"Tagalog\", \"Tglg\", \"Tagbanwa\", \"Tagb\", \"Tai_Le\", \"Tale\", \"Tai_Tham\", \"Lana\", \"Tai_Viet\", \"Tavt\", \"Takri\", \"Takr\", \"Tamil\", \"Taml\", \"Tangut\", \"Tang\", \"Telugu\", \"Telu\", \"Thaana\", \"Thaa\", \"Thai\", \"Tibetan\", \"Tibt\", \"Tifinagh\", \"Tfng\", \"Tirhuta\", \"Tirh\", \"Ugaritic\", \"Ugar\", \"Vai\", \"Vaii\", \"Warang_Citi\", \"Wara\", \"Yi\", \"Yiii\", \"Zanabazar_Square\", \"Zanb\"]\n};\nArray.prototype.push.apply(data.$LONE, data.General_Category);\ndata.gc = data.General_Category;\ndata.sc = data.Script_Extensions = data.scx = data.Script;\nvar pp$9 = Parser.prototype;\nvar RegExpValidationState = function RegExpValidationState(parser) {\n this.parser = parser;\n this.validFlags = \"gim\" + (parser.options.ecmaVersion >= 6 ? \"uy\" : \"\") + (parser.options.ecmaVersion >= 9 ? \"s\" : \"\");\n this.source = \"\";\n this.flags = \"\";\n this.start = 0;\n this.switchU = false;\n this.switchN = false;\n this.pos = 0;\n this.lastIntValue = 0;\n this.lastStringValue = \"\";\n this.lastAssertionIsQuantifiable = false;\n this.numCapturingParens = 0;\n this.maxBackReference = 0;\n this.groupNames = [];\n this.backReferenceNames = [];\n};\nRegExpValidationState.prototype.reset = function reset(start, pattern, flags) {\n var unicode = flags.indexOf(\"u\") !== -1;\n this.start = start | 0;\n this.source = pattern + \"\";\n this.flags = flags;\n this.switchU = unicode && this.parser.options.ecmaVersion >= 6;\n this.switchN = unicode && this.parser.options.ecmaVersion >= 9;\n};\nRegExpValidationState.prototype.raise = function raise(message) {\n this.parser.raiseRecoverable(this.start, \"Invalid regular expression: /\" + this.source + \"/: \" + message);\n};\n\n// If u flag is given, this returns the code point at the index (it combines a surrogate pair).\n// Otherwise, this returns the code unit of the index (can be a part of a surrogate pair).\nRegExpValidationState.prototype.at = function at(i) {\n var s = this.source;\n var l = s.length;\n if (i >= l) {\n return -1;\n }\n var c = s.charCodeAt(i);\n if (!this.switchU || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) {\n return c;\n }\n return (c << 10) + s.charCodeAt(i + 1) - 0x35FDC00;\n};\nRegExpValidationState.prototype.nextIndex = function nextIndex(i) {\n var s = this.source;\n var l = s.length;\n if (i >= l) {\n return l;\n }\n var c = s.charCodeAt(i);\n if (!this.switchU || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) {\n return i + 1;\n }\n return i + 2;\n};\nRegExpValidationState.prototype.current = function current() {\n return this.at(this.pos);\n};\nRegExpValidationState.prototype.lookahead = function lookahead() {\n return this.at(this.nextIndex(this.pos));\n};\nRegExpValidationState.prototype.advance = function advance() {\n this.pos = this.nextIndex(this.pos);\n};\nRegExpValidationState.prototype.eat = function eat(ch) {\n if (this.current() === ch) {\n this.advance();\n return true;\n }\n return false;\n};\nfunction codePointToString$1(ch) {\n if (ch <= 0xFFFF) {\n return String.fromCharCode(ch);\n }\n ch -= 0x10000;\n return String.fromCharCode((ch >> 10) + 0xD800, (ch & 0x03FF) + 0xDC00);\n}\n\n/**\n * Validate the flags part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp$9.validateRegExpFlags = function (state) {\n var this$1 = this;\n var validFlags = state.validFlags;\n var flags = state.flags;\n for (var i = 0; i < flags.length; i++) {\n var flag = flags.charAt(i);\n if (validFlags.indexOf(flag) === -1) {\n this$1.raise(state.start, \"Invalid regular expression flag\");\n }\n if (flags.indexOf(flag, i + 1) > -1) {\n this$1.raise(state.start, \"Duplicate regular expression flag\");\n }\n }\n};\n\n/**\n * Validate the pattern part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp$9.validateRegExpPattern = function (state) {\n this.regexp_pattern(state);\n\n // The goal symbol for the parse is |Pattern[~U, ~N]|. If the result of\n // parsing contains a |GroupName|, reparse with the goal symbol\n // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError*\n // exception if _P_ did not conform to the grammar, if any elements of _P_\n // were not matched by the parse, or if any Early Error conditions exist.\n if (!state.switchN && this.options.ecmaVersion >= 9 && state.groupNames.length > 0) {\n state.switchN = true;\n this.regexp_pattern(state);\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Pattern\npp$9.regexp_pattern = function (state) {\n state.pos = 0;\n state.lastIntValue = 0;\n state.lastStringValue = \"\";\n state.lastAssertionIsQuantifiable = false;\n state.numCapturingParens = 0;\n state.maxBackReference = 0;\n state.groupNames.length = 0;\n state.backReferenceNames.length = 0;\n this.regexp_disjunction(state);\n if (state.pos !== state.source.length) {\n // Make the same messages as V8.\n if (state.eat(0x29 /* ) */)) {\n state.raise(\"Unmatched ')'\");\n }\n if (state.eat(0x5D /* [ */) || state.eat(0x7D /* } */)) {\n state.raise(\"Lone quantifier brackets\");\n }\n }\n if (state.maxBackReference > state.numCapturingParens) {\n state.raise(\"Invalid escape\");\n }\n for (var i = 0, list = state.backReferenceNames; i < list.length; i += 1) {\n var name = list[i];\n if (state.groupNames.indexOf(name) === -1) {\n state.raise(\"Invalid named capture referenced\");\n }\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction\npp$9.regexp_disjunction = function (state) {\n var this$1 = this;\n this.regexp_alternative(state);\n while (state.eat(0x7C /* | */)) {\n this$1.regexp_alternative(state);\n }\n\n // Make the same message as V8.\n if (this.regexp_eatQuantifier(state, true)) {\n state.raise(\"Nothing to repeat\");\n }\n if (state.eat(0x7B /* { */)) {\n state.raise(\"Lone quantifier brackets\");\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative\npp$9.regexp_alternative = function (state) {\n while (state.pos < state.source.length && this.regexp_eatTerm(state)) {}\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term\npp$9.regexp_eatTerm = function (state) {\n if (this.regexp_eatAssertion(state)) {\n // Handle `QuantifiableAssertion Quantifier` alternative.\n // `state.lastAssertionIsQuantifiable` is true if the last eaten Assertion\n // is a QuantifiableAssertion.\n if (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state)) {\n // Make the same message as V8.\n if (state.switchU) {\n state.raise(\"Invalid quantifier\");\n }\n }\n return true;\n }\n if (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) {\n this.regexp_eatQuantifier(state);\n return true;\n }\n return false;\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Assertion\npp$9.regexp_eatAssertion = function (state) {\n var start = state.pos;\n state.lastAssertionIsQuantifiable = false;\n\n // ^, $\n if (state.eat(0x5E /* ^ */) || state.eat(0x24 /* $ */)) {\n return true;\n }\n\n // \\b \\B\n if (state.eat(0x5C /* \\ */)) {\n if (state.eat(0x42 /* B */) || state.eat(0x62 /* b */)) {\n return true;\n }\n state.pos = start;\n }\n\n // Lookahead / Lookbehind\n if (state.eat(0x28 /* ( */) && state.eat(0x3F /* ? */)) {\n var lookbehind = false;\n if (this.options.ecmaVersion >= 9) {\n lookbehind = state.eat(0x3C /* < */);\n }\n\n if (state.eat(0x3D /* = */) || state.eat(0x21 /* ! */)) {\n this.regexp_disjunction(state);\n if (!state.eat(0x29 /* ) */)) {\n state.raise(\"Unterminated group\");\n }\n state.lastAssertionIsQuantifiable = !lookbehind;\n return true;\n }\n }\n state.pos = start;\n return false;\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Quantifier\npp$9.regexp_eatQuantifier = function (state, noError) {\n if (noError === void 0) noError = false;\n if (this.regexp_eatQuantifierPrefix(state, noError)) {\n state.eat(0x3F /* ? */);\n return true;\n }\n return false;\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-QuantifierPrefix\npp$9.regexp_eatQuantifierPrefix = function (state, noError) {\n return state.eat(0x2A /* * */) || state.eat(0x2B /* + */) || state.eat(0x3F /* ? */) || this.regexp_eatBracedQuantifier(state, noError);\n};\npp$9.regexp_eatBracedQuantifier = function (state, noError) {\n var start = state.pos;\n if (state.eat(0x7B /* { */)) {\n var min = 0,\n max = -1;\n if (this.regexp_eatDecimalDigits(state)) {\n min = state.lastIntValue;\n if (state.eat(0x2C /* , */) && this.regexp_eatDecimalDigits(state)) {\n max = state.lastIntValue;\n }\n if (state.eat(0x7D /* } */)) {\n // SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-term\n if (max !== -1 && max < min && !noError) {\n state.raise(\"numbers out of order in {} quantifier\");\n }\n return true;\n }\n }\n if (state.switchU && !noError) {\n state.raise(\"Incomplete quantifier\");\n }\n state.pos = start;\n }\n return false;\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Atom\npp$9.regexp_eatAtom = function (state) {\n return this.regexp_eatPatternCharacters(state) || state.eat(0x2E /* . */) || this.regexp_eatReverseSolidusAtomEscape(state) || this.regexp_eatCharacterClass(state) || this.regexp_eatUncapturingGroup(state) || this.regexp_eatCapturingGroup(state);\n};\npp$9.regexp_eatReverseSolidusAtomEscape = function (state) {\n var start = state.pos;\n if (state.eat(0x5C /* \\ */)) {\n if (this.regexp_eatAtomEscape(state)) {\n return true;\n }\n state.pos = start;\n }\n return false;\n};\npp$9.regexp_eatUncapturingGroup = function (state) {\n var start = state.pos;\n if (state.eat(0x28 /* ( */)) {\n if (state.eat(0x3F /* ? */) && state.eat(0x3A /* : */)) {\n this.regexp_disjunction(state);\n if (state.eat(0x29 /* ) */)) {\n return true;\n }\n state.raise(\"Unterminated group\");\n }\n state.pos = start;\n }\n return false;\n};\npp$9.regexp_eatCapturingGroup = function (state) {\n if (state.eat(0x28 /* ( */)) {\n if (this.options.ecmaVersion >= 9) {\n this.regexp_groupSpecifier(state);\n } else if (state.current() === 0x3F /* ? */) {\n state.raise(\"Invalid group\");\n }\n this.regexp_disjunction(state);\n if (state.eat(0x29 /* ) */)) {\n state.numCapturingParens += 1;\n return true;\n }\n state.raise(\"Unterminated group\");\n }\n return false;\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedAtom\npp$9.regexp_eatExtendedAtom = function (state) {\n return state.eat(0x2E /* . */) || this.regexp_eatReverseSolidusAtomEscape(state) || this.regexp_eatCharacterClass(state) || this.regexp_eatUncapturingGroup(state) || this.regexp_eatCapturingGroup(state) || this.regexp_eatInvalidBracedQuantifier(state) || this.regexp_eatExtendedPatternCharacter(state);\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-InvalidBracedQuantifier\npp$9.regexp_eatInvalidBracedQuantifier = function (state) {\n if (this.regexp_eatBracedQuantifier(state, true)) {\n state.raise(\"Nothing to repeat\");\n }\n return false;\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-SyntaxCharacter\npp$9.regexp_eatSyntaxCharacter = function (state) {\n var ch = state.current();\n if (isSyntaxCharacter(ch)) {\n state.lastIntValue = ch;\n state.advance();\n return true;\n }\n return false;\n};\nfunction isSyntaxCharacter(ch) {\n return ch === 0x24 /* $ */ || ch >= 0x28 /* ( */ && ch <= 0x2B /* + */ || ch === 0x2E /* . */ || ch === 0x3F /* ? */ || ch >= 0x5B /* [ */ && ch <= 0x5E /* ^ */ || ch >= 0x7B /* { */ && ch <= 0x7D /* } */;\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-PatternCharacter\n// But eat eager.\npp$9.regexp_eatPatternCharacters = function (state) {\n var start = state.pos;\n var ch = 0;\n while ((ch = state.current()) !== -1 && !isSyntaxCharacter(ch)) {\n state.advance();\n }\n return state.pos !== start;\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedPatternCharacter\npp$9.regexp_eatExtendedPatternCharacter = function (state) {\n var ch = state.current();\n if (ch !== -1 && ch !== 0x24 /* $ */ && !(ch >= 0x28 /* ( */ && ch <= 0x2B /* + */) && ch !== 0x2E /* . */ && ch !== 0x3F /* ? */ && ch !== 0x5B /* [ */ && ch !== 0x5E /* ^ */ && ch !== 0x7C /* | */) {\n state.advance();\n return true;\n }\n return false;\n};\n\n// GroupSpecifier[U] ::\n// [empty]\n// `?` GroupName[?U]\npp$9.regexp_groupSpecifier = function (state) {\n if (state.eat(0x3F /* ? */)) {\n if (this.regexp_eatGroupName(state)) {\n if (state.groupNames.indexOf(state.lastStringValue) !== -1) {\n state.raise(\"Duplicate capture group name\");\n }\n state.groupNames.push(state.lastStringValue);\n return;\n }\n state.raise(\"Invalid group\");\n }\n};\n\n// GroupName[U] ::\n// `<` RegExpIdentifierName[?U] `>`\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp$9.regexp_eatGroupName = function (state) {\n state.lastStringValue = \"\";\n if (state.eat(0x3C /* < */)) {\n if (this.regexp_eatRegExpIdentifierName(state) && state.eat(0x3E /* > */)) {\n return true;\n }\n state.raise(\"Invalid capture group name\");\n }\n return false;\n};\n\n// RegExpIdentifierName[U] ::\n// RegExpIdentifierStart[?U]\n// RegExpIdentifierName[?U] RegExpIdentifierPart[?U]\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp$9.regexp_eatRegExpIdentifierName = function (state) {\n state.lastStringValue = \"\";\n if (this.regexp_eatRegExpIdentifierStart(state)) {\n state.lastStringValue += codePointToString$1(state.lastIntValue);\n while (this.regexp_eatRegExpIdentifierPart(state)) {\n state.lastStringValue += codePointToString$1(state.lastIntValue);\n }\n return true;\n }\n return false;\n};\n\n// RegExpIdentifierStart[U] ::\n// UnicodeIDStart\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[?U]\npp$9.regexp_eatRegExpIdentifierStart = function (state) {\n var start = state.pos;\n var ch = state.current();\n state.advance();\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state)) {\n ch = state.lastIntValue;\n }\n if (isRegExpIdentifierStart(ch)) {\n state.lastIntValue = ch;\n return true;\n }\n state.pos = start;\n return false;\n};\nfunction isRegExpIdentifierStart(ch) {\n return isIdentifierStart(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F; /* _ */\n}\n\n// RegExpIdentifierPart[U] ::\n// UnicodeIDContinue\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[?U]\n// \n// \npp$9.regexp_eatRegExpIdentifierPart = function (state) {\n var start = state.pos;\n var ch = state.current();\n state.advance();\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state)) {\n ch = state.lastIntValue;\n }\n if (isRegExpIdentifierPart(ch)) {\n state.lastIntValue = ch;\n return true;\n }\n state.pos = start;\n return false;\n};\nfunction isRegExpIdentifierPart(ch) {\n return isIdentifierChar(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ || ch === 0x200C /* */ || ch === 0x200D; /* */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-AtomEscape\npp$9.regexp_eatAtomEscape = function (state) {\n if (this.regexp_eatBackReference(state) || this.regexp_eatCharacterClassEscape(state) || this.regexp_eatCharacterEscape(state) || state.switchN && this.regexp_eatKGroupName(state)) {\n return true;\n }\n if (state.switchU) {\n // Make the same message as V8.\n if (state.current() === 0x63 /* c */) {\n state.raise(\"Invalid unicode escape\");\n }\n state.raise(\"Invalid escape\");\n }\n return false;\n};\npp$9.regexp_eatBackReference = function (state) {\n var start = state.pos;\n if (this.regexp_eatDecimalEscape(state)) {\n var n = state.lastIntValue;\n if (state.switchU) {\n // For SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-atomescape\n if (n > state.maxBackReference) {\n state.maxBackReference = n;\n }\n return true;\n }\n if (n <= state.numCapturingParens) {\n return true;\n }\n state.pos = start;\n }\n return false;\n};\npp$9.regexp_eatKGroupName = function (state) {\n if (state.eat(0x6B /* k */)) {\n if (this.regexp_eatGroupName(state)) {\n state.backReferenceNames.push(state.lastStringValue);\n return true;\n }\n state.raise(\"Invalid named reference\");\n }\n return false;\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-CharacterEscape\npp$9.regexp_eatCharacterEscape = function (state) {\n return this.regexp_eatControlEscape(state) || this.regexp_eatCControlLetter(state) || this.regexp_eatZero(state) || this.regexp_eatHexEscapeSequence(state) || this.regexp_eatRegExpUnicodeEscapeSequence(state) || !state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state) || this.regexp_eatIdentityEscape(state);\n};\npp$9.regexp_eatCControlLetter = function (state) {\n var start = state.pos;\n if (state.eat(0x63 /* c */)) {\n if (this.regexp_eatControlLetter(state)) {\n return true;\n }\n state.pos = start;\n }\n return false;\n};\npp$9.regexp_eatZero = function (state) {\n if (state.current() === 0x30 /* 0 */ && !isDecimalDigit(state.lookahead())) {\n state.lastIntValue = 0;\n state.advance();\n return true;\n }\n return false;\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlEscape\npp$9.regexp_eatControlEscape = function (state) {\n var ch = state.current();\n if (ch === 0x74 /* t */) {\n state.lastIntValue = 0x09; /* \\t */\n state.advance();\n return true;\n }\n if (ch === 0x6E /* n */) {\n state.lastIntValue = 0x0A; /* \\n */\n state.advance();\n return true;\n }\n if (ch === 0x76 /* v */) {\n state.lastIntValue = 0x0B; /* \\v */\n state.advance();\n return true;\n }\n if (ch === 0x66 /* f */) {\n state.lastIntValue = 0x0C; /* \\f */\n state.advance();\n return true;\n }\n if (ch === 0x72 /* r */) {\n state.lastIntValue = 0x0D; /* \\r */\n state.advance();\n return true;\n }\n return false;\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlLetter\npp$9.regexp_eatControlLetter = function (state) {\n var ch = state.current();\n if (isControlLetter(ch)) {\n state.lastIntValue = ch % 0x20;\n state.advance();\n return true;\n }\n return false;\n};\nfunction isControlLetter(ch) {\n return ch >= 0x41 /* A */ && ch <= 0x5A /* Z */ || ch >= 0x61 /* a */ && ch <= 0x7A /* z */;\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-RegExpUnicodeEscapeSequence\npp$9.regexp_eatRegExpUnicodeEscapeSequence = function (state) {\n var start = state.pos;\n if (state.eat(0x75 /* u */)) {\n if (this.regexp_eatFixedHexDigits(state, 4)) {\n var lead = state.lastIntValue;\n if (state.switchU && lead >= 0xD800 && lead <= 0xDBFF) {\n var leadSurrogateEnd = state.pos;\n if (state.eat(0x5C /* \\ */) && state.eat(0x75 /* u */) && this.regexp_eatFixedHexDigits(state, 4)) {\n var trail = state.lastIntValue;\n if (trail >= 0xDC00 && trail <= 0xDFFF) {\n state.lastIntValue = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;\n return true;\n }\n }\n state.pos = leadSurrogateEnd;\n state.lastIntValue = lead;\n }\n return true;\n }\n if (state.switchU && state.eat(0x7B /* { */) && this.regexp_eatHexDigits(state) && state.eat(0x7D /* } */) && isValidUnicode(state.lastIntValue)) {\n return true;\n }\n if (state.switchU) {\n state.raise(\"Invalid unicode escape\");\n }\n state.pos = start;\n }\n return false;\n};\nfunction isValidUnicode(ch) {\n return ch >= 0 && ch <= 0x10FFFF;\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-IdentityEscape\npp$9.regexp_eatIdentityEscape = function (state) {\n if (state.switchU) {\n if (this.regexp_eatSyntaxCharacter(state)) {\n return true;\n }\n if (state.eat(0x2F /* / */)) {\n state.lastIntValue = 0x2F; /* / */\n return true;\n }\n return false;\n }\n var ch = state.current();\n if (ch !== 0x63 /* c */ && (!state.switchN || ch !== 0x6B /* k */)) {\n state.lastIntValue = ch;\n state.advance();\n return true;\n }\n return false;\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalEscape\npp$9.regexp_eatDecimalEscape = function (state) {\n state.lastIntValue = 0;\n var ch = state.current();\n if (ch >= 0x31 /* 1 */ && ch <= 0x39 /* 9 */) {\n do {\n state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n state.advance();\n } while ((ch = state.current()) >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */);\n return true;\n }\n return false;\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClassEscape\npp$9.regexp_eatCharacterClassEscape = function (state) {\n var ch = state.current();\n if (isCharacterClassEscape(ch)) {\n state.lastIntValue = -1;\n state.advance();\n return true;\n }\n if (state.switchU && this.options.ecmaVersion >= 9 && (ch === 0x50 /* P */ || ch === 0x70 /* p */)) {\n state.lastIntValue = -1;\n state.advance();\n if (state.eat(0x7B /* { */) && this.regexp_eatUnicodePropertyValueExpression(state) && state.eat(0x7D /* } */)) {\n return true;\n }\n state.raise(\"Invalid property name\");\n }\n return false;\n};\nfunction isCharacterClassEscape(ch) {\n return ch === 0x64 /* d */ || ch === 0x44 /* D */ || ch === 0x73 /* s */ || ch === 0x53 /* S */ || ch === 0x77 /* w */ || ch === 0x57 /* W */;\n}\n\n// UnicodePropertyValueExpression ::\n// UnicodePropertyName `=` UnicodePropertyValue\n// LoneUnicodePropertyNameOrValue\npp$9.regexp_eatUnicodePropertyValueExpression = function (state) {\n var start = state.pos;\n\n // UnicodePropertyName `=` UnicodePropertyValue\n if (this.regexp_eatUnicodePropertyName(state) && state.eat(0x3D /* = */)) {\n var name = state.lastStringValue;\n if (this.regexp_eatUnicodePropertyValue(state)) {\n var value = state.lastStringValue;\n this.regexp_validateUnicodePropertyNameAndValue(state, name, value);\n return true;\n }\n }\n state.pos = start;\n\n // LoneUnicodePropertyNameOrValue\n if (this.regexp_eatLoneUnicodePropertyNameOrValue(state)) {\n var nameOrValue = state.lastStringValue;\n this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue);\n return true;\n }\n return false;\n};\npp$9.regexp_validateUnicodePropertyNameAndValue = function (state, name, value) {\n if (!data.hasOwnProperty(name) || data[name].indexOf(value) === -1) {\n state.raise(\"Invalid property name\");\n }\n};\npp$9.regexp_validateUnicodePropertyNameOrValue = function (state, nameOrValue) {\n if (data.$LONE.indexOf(nameOrValue) === -1) {\n state.raise(\"Invalid property name\");\n }\n};\n\n// UnicodePropertyName ::\n// UnicodePropertyNameCharacters\npp$9.regexp_eatUnicodePropertyName = function (state) {\n var ch = 0;\n state.lastStringValue = \"\";\n while (isUnicodePropertyNameCharacter(ch = state.current())) {\n state.lastStringValue += codePointToString$1(ch);\n state.advance();\n }\n return state.lastStringValue !== \"\";\n};\nfunction isUnicodePropertyNameCharacter(ch) {\n return isControlLetter(ch) || ch === 0x5F; /* _ */\n}\n\n// UnicodePropertyValue ::\n// UnicodePropertyValueCharacters\npp$9.regexp_eatUnicodePropertyValue = function (state) {\n var ch = 0;\n state.lastStringValue = \"\";\n while (isUnicodePropertyValueCharacter(ch = state.current())) {\n state.lastStringValue += codePointToString$1(ch);\n state.advance();\n }\n return state.lastStringValue !== \"\";\n};\nfunction isUnicodePropertyValueCharacter(ch) {\n return isUnicodePropertyNameCharacter(ch) || isDecimalDigit(ch);\n}\n\n// LoneUnicodePropertyNameOrValue ::\n// UnicodePropertyValueCharacters\npp$9.regexp_eatLoneUnicodePropertyNameOrValue = function (state) {\n return this.regexp_eatUnicodePropertyValue(state);\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClass\npp$9.regexp_eatCharacterClass = function (state) {\n if (state.eat(0x5B /* [ */)) {\n state.eat(0x5E /* ^ */);\n this.regexp_classRanges(state);\n if (state.eat(0x5D /* [ */)) {\n return true;\n }\n // Unreachable since it threw \"unterminated regular expression\" error before.\n state.raise(\"Unterminated character class\");\n }\n return false;\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassRanges\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRanges\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRangesNoDash\npp$9.regexp_classRanges = function (state) {\n var this$1 = this;\n while (this.regexp_eatClassAtom(state)) {\n var left = state.lastIntValue;\n if (state.eat(0x2D /* - */) && this$1.regexp_eatClassAtom(state)) {\n var right = state.lastIntValue;\n if (state.switchU && (left === -1 || right === -1)) {\n state.raise(\"Invalid character class\");\n }\n if (left !== -1 && right !== -1 && left > right) {\n state.raise(\"Range out of order in character class\");\n }\n }\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtom\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtomNoDash\npp$9.regexp_eatClassAtom = function (state) {\n var start = state.pos;\n if (state.eat(0x5C /* \\ */)) {\n if (this.regexp_eatClassEscape(state)) {\n return true;\n }\n if (state.switchU) {\n // Make the same message as V8.\n var ch$1 = state.current();\n if (ch$1 === 0x63 /* c */ || isOctalDigit(ch$1)) {\n state.raise(\"Invalid class escape\");\n }\n state.raise(\"Invalid escape\");\n }\n state.pos = start;\n }\n var ch = state.current();\n if (ch !== 0x5D /* [ */) {\n state.lastIntValue = ch;\n state.advance();\n return true;\n }\n return false;\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassEscape\npp$9.regexp_eatClassEscape = function (state) {\n var start = state.pos;\n if (state.eat(0x62 /* b */)) {\n state.lastIntValue = 0x08; /* */\n return true;\n }\n if (state.switchU && state.eat(0x2D /* - */)) {\n state.lastIntValue = 0x2D; /* - */\n return true;\n }\n if (!state.switchU && state.eat(0x63 /* c */)) {\n if (this.regexp_eatClassControlLetter(state)) {\n return true;\n }\n state.pos = start;\n }\n return this.regexp_eatCharacterClassEscape(state) || this.regexp_eatCharacterEscape(state);\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassControlLetter\npp$9.regexp_eatClassControlLetter = function (state) {\n var ch = state.current();\n if (isDecimalDigit(ch) || ch === 0x5F /* _ */) {\n state.lastIntValue = ch % 0x20;\n state.advance();\n return true;\n }\n return false;\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp$9.regexp_eatHexEscapeSequence = function (state) {\n var start = state.pos;\n if (state.eat(0x78 /* x */)) {\n if (this.regexp_eatFixedHexDigits(state, 2)) {\n return true;\n }\n if (state.switchU) {\n state.raise(\"Invalid escape\");\n }\n state.pos = start;\n }\n return false;\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalDigits\npp$9.regexp_eatDecimalDigits = function (state) {\n var start = state.pos;\n var ch = 0;\n state.lastIntValue = 0;\n while (isDecimalDigit(ch = state.current())) {\n state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n state.advance();\n }\n return state.pos !== start;\n};\nfunction isDecimalDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x39; /* 9 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigits\npp$9.regexp_eatHexDigits = function (state) {\n var start = state.pos;\n var ch = 0;\n state.lastIntValue = 0;\n while (isHexDigit(ch = state.current())) {\n state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n state.advance();\n }\n return state.pos !== start;\n};\nfunction isHexDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */ || ch >= 0x41 /* A */ && ch <= 0x46 /* F */ || ch >= 0x61 /* a */ && ch <= 0x66 /* f */;\n}\n\nfunction hexToInt(ch) {\n if (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) {\n return 10 + (ch - 0x41 /* A */);\n }\n\n if (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) {\n return 10 + (ch - 0x61 /* a */);\n }\n\n return ch - 0x30; /* 0 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-LegacyOctalEscapeSequence\n// Allows only 0-377(octal) i.e. 0-255(decimal).\npp$9.regexp_eatLegacyOctalEscapeSequence = function (state) {\n if (this.regexp_eatOctalDigit(state)) {\n var n1 = state.lastIntValue;\n if (this.regexp_eatOctalDigit(state)) {\n var n2 = state.lastIntValue;\n if (n1 <= 3 && this.regexp_eatOctalDigit(state)) {\n state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue;\n } else {\n state.lastIntValue = n1 * 8 + n2;\n }\n } else {\n state.lastIntValue = n1;\n }\n return true;\n }\n return false;\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-OctalDigit\npp$9.regexp_eatOctalDigit = function (state) {\n var ch = state.current();\n if (isOctalDigit(ch)) {\n state.lastIntValue = ch - 0x30; /* 0 */\n state.advance();\n return true;\n }\n state.lastIntValue = 0;\n return false;\n};\nfunction isOctalDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x37; /* 7 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Hex4Digits\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigit\n// And HexDigit HexDigit in https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp$9.regexp_eatFixedHexDigits = function (state, length) {\n var start = state.pos;\n state.lastIntValue = 0;\n for (var i = 0; i < length; ++i) {\n var ch = state.current();\n if (!isHexDigit(ch)) {\n state.pos = start;\n return false;\n }\n state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n state.advance();\n }\n return true;\n};\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nvar Token = function Token(p) {\n this.type = p.type;\n this.value = p.value;\n this.start = p.start;\n this.end = p.end;\n if (p.options.locations) {\n this.loc = new SourceLocation(p, p.startLoc, p.endLoc);\n }\n if (p.options.ranges) {\n this.range = [p.start, p.end];\n }\n};\n\n// ## Tokenizer\n\nvar pp$8 = Parser.prototype;\n\n// Move to the next token\n\npp$8.next = function () {\n if (this.options.onToken) {\n this.options.onToken(new Token(this));\n }\n this.lastTokEnd = this.end;\n this.lastTokStart = this.start;\n this.lastTokEndLoc = this.endLoc;\n this.lastTokStartLoc = this.startLoc;\n this.nextToken();\n};\npp$8.getToken = function () {\n this.next();\n return new Token(this);\n};\n\n// If we're in an ES6 environment, make parsers iterable\nif (typeof Symbol !== \"undefined\") {\n pp$8[Symbol.iterator] = function () {\n var this$1 = this;\n return {\n next: function () {\n var token = this$1.getToken();\n return {\n done: token.type === types.eof,\n value: token\n };\n }\n };\n };\n}\n\n// Toggle strict mode. Re-reads the next number or string to please\n// pedantic tests (`\"use strict\"; 010;` should fail).\n\npp$8.curContext = function () {\n return this.context[this.context.length - 1];\n};\n\n// Read a single token, updating the parser object's token-related\n// properties.\n\npp$8.nextToken = function () {\n var curContext = this.curContext();\n if (!curContext || !curContext.preserveSpace) {\n this.skipSpace();\n }\n this.start = this.pos;\n if (this.options.locations) {\n this.startLoc = this.curPosition();\n }\n if (this.pos >= this.input.length) {\n return this.finishToken(types.eof);\n }\n if (curContext.override) {\n return curContext.override(this);\n } else {\n this.readToken(this.fullCharCodeAtPos());\n }\n};\npp$8.readToken = function (code) {\n // Identifier or keyword. '\\uXXXX' sequences are allowed in\n // identifiers, so '\\' also dispatches to that.\n if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\\' */) {\n return this.readWord();\n }\n return this.getTokenFromCode(code);\n};\npp$8.fullCharCodeAtPos = function () {\n var code = this.input.charCodeAt(this.pos);\n if (code <= 0xd7ff || code >= 0xe000) {\n return code;\n }\n var next = this.input.charCodeAt(this.pos + 1);\n return (code << 10) + next - 0x35fdc00;\n};\npp$8.skipBlockComment = function () {\n var this$1 = this;\n var startLoc = this.options.onComment && this.curPosition();\n var start = this.pos,\n end = this.input.indexOf(\"*/\", this.pos += 2);\n if (end === -1) {\n this.raise(this.pos - 2, \"Unterminated comment\");\n }\n this.pos = end + 2;\n if (this.options.locations) {\n lineBreakG.lastIndex = start;\n var match;\n while ((match = lineBreakG.exec(this.input)) && match.index < this.pos) {\n ++this$1.curLine;\n this$1.lineStart = match.index + match[0].length;\n }\n }\n if (this.options.onComment) {\n this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos, startLoc, this.curPosition());\n }\n};\npp$8.skipLineComment = function (startSkip) {\n var this$1 = this;\n var start = this.pos;\n var startLoc = this.options.onComment && this.curPosition();\n var ch = this.input.charCodeAt(this.pos += startSkip);\n while (this.pos < this.input.length && !isNewLine(ch)) {\n ch = this$1.input.charCodeAt(++this$1.pos);\n }\n if (this.options.onComment) {\n this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos, startLoc, this.curPosition());\n }\n};\n\n// Called at the start of the parse and after every token. Skips\n// whitespace and comments, and.\n\npp$8.skipSpace = function () {\n var this$1 = this;\n loop: while (this.pos < this.input.length) {\n var ch = this$1.input.charCodeAt(this$1.pos);\n switch (ch) {\n case 32:\n case 160:\n // ' '\n ++this$1.pos;\n break;\n case 13:\n if (this$1.input.charCodeAt(this$1.pos + 1) === 10) {\n ++this$1.pos;\n }\n case 10:\n case 8232:\n case 8233:\n ++this$1.pos;\n if (this$1.options.locations) {\n ++this$1.curLine;\n this$1.lineStart = this$1.pos;\n }\n break;\n case 47:\n // '/'\n switch (this$1.input.charCodeAt(this$1.pos + 1)) {\n case 42:\n // '*'\n this$1.skipBlockComment();\n break;\n case 47:\n this$1.skipLineComment(2);\n break;\n default:\n break loop;\n }\n break;\n default:\n if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {\n ++this$1.pos;\n } else {\n break loop;\n }\n }\n }\n};\n\n// Called at the end of every token. Sets `end`, `val`, and\n// maintains `context` and `exprAllowed`, and skips the space after\n// the token, so that the next one's `start` will point at the\n// right position.\n\npp$8.finishToken = function (type, val) {\n this.end = this.pos;\n if (this.options.locations) {\n this.endLoc = this.curPosition();\n }\n var prevType = this.type;\n this.type = type;\n this.value = val;\n this.updateContext(prevType);\n};\n\n// ### Token reading\n\n// This is the function that is called to fetch the next token. It\n// is somewhat obscure, because it works in character codes rather\n// than characters, and because operator parsing has been inlined\n// into it.\n//\n// All in the name of speed.\n//\npp$8.readToken_dot = function () {\n var next = this.input.charCodeAt(this.pos + 1);\n if (next >= 48 && next <= 57) {\n return this.readNumber(true);\n }\n var next2 = this.input.charCodeAt(this.pos + 2);\n if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) {\n // 46 = dot '.'\n this.pos += 3;\n return this.finishToken(types.ellipsis);\n } else {\n ++this.pos;\n return this.finishToken(types.dot);\n }\n};\npp$8.readToken_slash = function () {\n // '/'\n var next = this.input.charCodeAt(this.pos + 1);\n if (this.exprAllowed) {\n ++this.pos;\n return this.readRegexp();\n }\n if (next === 61) {\n return this.finishOp(types.assign, 2);\n }\n return this.finishOp(types.slash, 1);\n};\npp$8.readToken_mult_modulo_exp = function (code) {\n // '%*'\n var next = this.input.charCodeAt(this.pos + 1);\n var size = 1;\n var tokentype = code === 42 ? types.star : types.modulo;\n\n // exponentiation operator ** and **=\n if (this.options.ecmaVersion >= 7 && code === 42 && next === 42) {\n ++size;\n tokentype = types.starstar;\n next = this.input.charCodeAt(this.pos + 2);\n }\n if (next === 61) {\n return this.finishOp(types.assign, size + 1);\n }\n return this.finishOp(tokentype, size);\n};\npp$8.readToken_pipe_amp = function (code) {\n // '|&'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === code) {\n return this.finishOp(code === 124 ? types.logicalOR : types.logicalAND, 2);\n }\n if (next === 61) {\n return this.finishOp(types.assign, 2);\n }\n return this.finishOp(code === 124 ? types.bitwiseOR : types.bitwiseAND, 1);\n};\npp$8.readToken_caret = function () {\n // '^'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 61) {\n return this.finishOp(types.assign, 2);\n }\n return this.finishOp(types.bitwiseXOR, 1);\n};\npp$8.readToken_plus_min = function (code) {\n // '+-'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === code) {\n if (next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 && (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) {\n // A `-->` line comment\n this.skipLineComment(3);\n this.skipSpace();\n return this.nextToken();\n }\n return this.finishOp(types.incDec, 2);\n }\n if (next === 61) {\n return this.finishOp(types.assign, 2);\n }\n return this.finishOp(types.plusMin, 1);\n};\npp$8.readToken_lt_gt = function (code) {\n // '<>'\n var next = this.input.charCodeAt(this.pos + 1);\n var size = 1;\n if (next === code) {\n size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2;\n if (this.input.charCodeAt(this.pos + size) === 61) {\n return this.finishOp(types.assign, size + 1);\n }\n return this.finishOp(types.bitShift, size);\n }\n if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 && this.input.charCodeAt(this.pos + 3) === 45) {\n // `You can do so with a :<directory> suffix in the add command, or by modifying the chartfile manually.

      tk tool charts add stable/mysql@1.6.7:1.6.7
      -tk tool charts add stable/mysql@1.6.8:1.6.8

      The resulting chartfile will look like this:

      version: 1
      -directory: charts
      -repositories:
      -- name: stable
      -  url: https://charts.helm.sh/stable
      -requires:
      -- chart: stable/mysql
      -  directory: 1.6.7
      -  version: 1.6.7
      -- chart: stable/mysql
      -  directory: 1.6.8
      -  version: 1.6.8

      Install charts from chartfile: To install charts from an existing chartfile, use the following:

      $ tk tool charts vendor

      Optionally, you can also pass the --prune flag to remove vendored charts that are no longer in the chartfile.

      OCI Registry Support

      Tanka supports pulling charts from OCI registries. To use one, the chart name must be split into two parts: the registry and the chart name.

      As example, if you wanted to pull the oci://public.ecr.aws/karpenter/karpenter:v0.27.3 image, your chartfile would look like this:

      version: 1
      -directory: charts
      -repositories:
      -- name: karpenter
      -  url: oci://public.ecr.aws/karpenter
      -requires:
      -- chart: karpenter/karpenter
      -  directory: v0.27.3
      -  version: v0.27.3

      Registry login is not supported yet.

      Troubleshooting

      Helm executable missing

      Helm support in Tanka requires the helm binary installed on your system and -available on the $PATH. If Helm is not installed, you will see this error message:

      evaluating jsonnet: RUNTIME ERROR: Expanding Helm Chart: exec: "helm": executable file not found in $PATH

      To solve this, you need to install Helm. +strictly self-contained.

      +

      Helm however keeps Charts and repository configuration somewhere around +~/.config/helm, which violates above requirement.

      +

      To comply with this requirement, Tanka expects Helm Charts to be found inside the +bounds of a project. This means, you MUST put your Charts somewhere next to +the file that calls helm.template(), so that it can be referred to using a +relative path.

      +

      Vendor Location

      +

      Where to actually put them inside the project is up to you, but keep in mind you +need to refer to them using relative paths.

      +

      We recommend always writing libraries that wrap the actual Helm Chart, so the +consumer does not need to be aware of it. Whether you put these into your local lib/ directory or +publish and vendor them into the vendor/ directory is up to you.

      +

      A library usually looks like this:

      +
      • Directory/ +
        • jsonnetfile.json
        • main.libsonnet
      +

      When adopting Helm inside it, we recommend vendoring at the top level, as such:

      +
      • Directory/ +
        • jsonnetfile.json
        • main.libsonnet
      • Directorycharts
        • <someChart>
      +

      This way, you can refer to the charts as ./charts/<someChart> from inside +main.libsonnet. By keeping the chart as close to the consumer as possible, the +library is kept portable.

      +

      Charttool

      +

      Helm does not make vendoring incredibly easy by itself. helm pull provides the +required plumbing, but it does not record its actions in a reproducible manner.

      +

      Therefore, Tanka ships a special utility at tk tool charts, which automates +helm pull:

      +
      Terminal window
      # Create a chartfile.yaml in the current directory, e.g. in lib/myLibrary
      tk tool charts init
      +
      # Install the MySQL chart at version 1.6.7 from the stable repository
      tk tool charts add stable/mysql@1.6.7
      +

      Adding charts

      +

      To add a chart, use the following:

      +
      Terminal window
      tk tool charts add <repo>/<name>@<version>
      +

      This will also call tk tool charts vendor, so that the charts/ directory is updated.

      +

      Adding repositories

      +

      By default, the stable repository is automatically set up for you. If you wish +to add another repository, you can use the add-repo command:

      +
      Terminal window
      # Add the official Grafana repository
      tk tool charts add-repo grafana https://grafana.github.io/helm-charts
      +

      Another way is to modify chartfile.yaml directly:

      +
      chartfile.yaml
      version: 1
      repositories:
      - name: stable
      url: https://charts.helm.sh/stable
      - name: grafana
      url: https://grafana.github.io/helm-charts
      +

      Installing multiple versions of the same chart

      +

      If you wish to install multiple versions of the same chart, you can write them to a specific directory.
      +You can do so with a :<directory> suffix in the add command, or by modifying the chartfile manually.

      +
      Terminal window
      tk tool charts add stable/mysql@1.6.7:1.6.7
      tk tool charts add stable/mysql@1.6.8:1.6.8
      +

      The resulting chartfile will look like this:

      +
      version: 1
      directory: charts
      repositories:
      - name: stable
      url: https://charts.helm.sh/stable
      requires:
      - chart: stable/mysql
      directory: 1.6.7
      version: 1.6.7
      - chart: stable/mysql
      directory: 1.6.8
      version: 1.6.8
      +

      Install charts from chartfile

      +

      To install charts from an existing chartfile, use the following:

      +
      Terminal window
      tk tool charts vendor
      +

      Optionally, you can also pass the --prune flag to remove vendored charts that are no longer in the chartfile.

      +

      OCI Registry Support

      +

      Tanka supports pulling charts from OCI registries. To use one, the chart name must be split into two parts: the registry and the chart name.

      +

      As example, if you wanted to pull the oci://public.ecr.aws/karpenter/karpenter:v0.27.3 image, your chartfile would look like this:

      +
      version: 1
      directory: charts
      repositories:
      - name: karpenter
      url: oci://public.ecr.aws/karpenter
      requires:
      - chart: karpenter/karpenter
      directory: v0.27.3
      version: v0.27.3
      +

      Registry login is not supported yet.

      +

      Troubleshooting

      +

      Helm executable missing

      +

      Helm support in Tanka requires the helm binary installed on your system and +available on the $PATH. If Helm is not installed, you will see this error message:

      +
      evaluating jsonnet: RUNTIME ERROR: Expanding Helm Chart: exec: "helm": executable file not found in $PATH
      +

      To solve this, you need to install Helm. If you cannot install it system-wide, you can point Tanka at your executable -using TANKA_HELM_PATH

      opts.calledFrom unset

      This occurs, when Tanka was not told where it helm.template() was invoked -from. This most likely means you didn't call new(std.thisFile) when importing tanka-util:

      local tanka = import "github.com/grafana/jsonnet-libs/tanka-util/main.libsonnet";
      -local helm = tanka.helm.new(std.thisFile);
      -                       ↑ This is important

      Failed to find Chart

      helmTemplate: Failed to find a Chart at 'stable/grafana': No such file or directory.
      -helmTemplate: Failed to find a Chart at '/home/user/stuff/tanka/environments/default/grafana': No such file or directory.

      Tanka failed to locate your Helm chart on the filesystem. It looked at the -relative path you provided in helm.template(), starting from the directory of -the file you called helm.template() from.

      Please check there is actually a valid Helm chart at this place. Referring to -charts as <repo>/<name> is disallowed by design.

      Two resources share the same name

      To make customization easier, helm.template() returns the resources not as the -list it receives from Helm, but instead converts this into an object.

      For the indexing key it uses kind_name by default. In some rare cases, this +using TANKA_HELM_PATH

      +

      opts.calledFrom unset

      +

      This occurs, when Tanka was not told where it helm.template() was invoked +from. This most likely means you didn’t call new(std.thisFile) when importing tanka-util:

      +
      local tanka = import "github.com/grafana/jsonnet-libs/tanka-util/main.libsonnet";
      local helm = tanka.helm.new(std.thisFile);
      ↑ This is important
      +

      Failed to find Chart

      +
      helmTemplate: Failed to find a Chart at 'stable/grafana': No such file or directory.
      helmTemplate: Failed to find a Chart at '/home/user/stuff/tanka/environments/default/grafana': No such file or directory.
      +

      Tanka failed to locate your Helm chart on the filesystem. It looked at the +relative path you provided in helm.template(), starting from the directory of +the file you called helm.template() from.

      +

      Please check there is actually a valid Helm chart at this place. Referring to +charts as <repo>/<name> is disallowed by design.

      +

      Two resources share the same name

      +

      To make customization easier, helm.template() returns the resources not as the +list it receives from Helm, but instead converts this into an object.

      +

      For the indexing key it uses kind_name by default. In some rare cases, this might not be enough to distinguish between two resources, namely when the same -resource exists in two namespaces.

      To handle this, pass a custom name format, e.g. to also include the namespace:

      custom: helm.template('foo', './charts/foo', {
      -  nameFormat: '{{ print .namespace "_" .kind "_" .metadata.name | snakecase }}'
      -})

      The literal default format used is {{ print .kind "_" .metadata.name | snakecase }}

      \ No newline at end of file +resource exists in two namespaces.

      +

      To handle this, pass a custom name format, e.g. to also include the namespace:

      +
      custom: helm.template('foo', './charts/foo', {
      nameFormat: '{{ print .namespace "_" .kind "_" .metadata.name | snakecase }}'
      })
      +

      The literal default format used is {{ print .kind "_" .metadata.name | snakecase }}

      \ No newline at end of file diff --git a/pr-preview/pr-1029/icons/icon-144x144.png b/pr-preview/pr-1029/icons/icon-144x144.png deleted file mode 100644 index cc6b57efa..000000000 Binary files a/pr-preview/pr-1029/icons/icon-144x144.png and /dev/null differ diff --git a/pr-preview/pr-1029/icons/icon-192x192.png b/pr-preview/pr-1029/icons/icon-192x192.png deleted file mode 100644 index 567c9c444..000000000 Binary files a/pr-preview/pr-1029/icons/icon-192x192.png and /dev/null differ diff --git a/pr-preview/pr-1029/icons/icon-256x256.png b/pr-preview/pr-1029/icons/icon-256x256.png deleted file mode 100644 index 7ec3fde6e..000000000 Binary files a/pr-preview/pr-1029/icons/icon-256x256.png and /dev/null differ diff --git a/pr-preview/pr-1029/icons/icon-384x384.png b/pr-preview/pr-1029/icons/icon-384x384.png deleted file mode 100644 index 9c0f5f783..000000000 Binary files a/pr-preview/pr-1029/icons/icon-384x384.png and /dev/null differ diff --git a/pr-preview/pr-1029/icons/icon-48x48.png b/pr-preview/pr-1029/icons/icon-48x48.png deleted file mode 100644 index b48922e8e..000000000 Binary files a/pr-preview/pr-1029/icons/icon-48x48.png and /dev/null differ diff --git a/pr-preview/pr-1029/icons/icon-512x512.png b/pr-preview/pr-1029/icons/icon-512x512.png deleted file mode 100644 index bc6c68026..000000000 Binary files a/pr-preview/pr-1029/icons/icon-512x512.png and /dev/null differ diff --git a/pr-preview/pr-1029/icons/icon-72x72.png b/pr-preview/pr-1029/icons/icon-72x72.png deleted file mode 100644 index d96d0271e..000000000 Binary files a/pr-preview/pr-1029/icons/icon-72x72.png and /dev/null differ diff --git a/pr-preview/pr-1029/icons/icon-96x96.png b/pr-preview/pr-1029/icons/icon-96x96.png deleted file mode 100644 index e3b34fbfc..000000000 Binary files a/pr-preview/pr-1029/icons/icon-96x96.png and /dev/null differ diff --git a/pr-preview/pr-1029/idb-keyval-3.2.0-iife.min.js b/pr-preview/pr-1029/idb-keyval-3.2.0-iife.min.js deleted file mode 100644 index 067a966f6..000000000 --- a/pr-preview/pr-1029/idb-keyval-3.2.0-iife.min.js +++ /dev/null @@ -1 +0,0 @@ -var idbKeyval=function(e){"use strict";class t{constructor(e="keyval-store",t="keyval"){this.storeName=t,this._dbp=new Promise((r,n)=>{const o=indexedDB.open(e,1);o.onerror=(()=>n(o.error)),o.onsuccess=(()=>r(o.result)),o.onupgradeneeded=(()=>{o.result.createObjectStore(t)})})}_withIDBStore(e,t){return this._dbp.then(r=>new Promise((n,o)=>{const s=r.transaction(this.storeName,e);s.oncomplete=(()=>n()),s.onabort=s.onerror=(()=>o(s.error)),t(s.objectStore(this.storeName))}))}}let r;function n(){return r||(r=new t),r}return e.Store=t,e.get=function(e,t=n()){let r;return t._withIDBStore("readonly",t=>{r=t.get(e)}).then(()=>r.result)},e.set=function(e,t,r=n()){return r._withIDBStore("readwrite",r=>{r.put(t,e)})},e.del=function(e,t=n()){return t._withIDBStore("readwrite",t=>{t.delete(e)})},e.clear=function(e=n()){return e._withIDBStore("readwrite",e=>{e.clear()})},e.keys=function(e=n()){const t=[];return e._withIDBStore("readonly",e=>{(e.openKeyCursor||e.openCursor).call(e).onsuccess=function(){this.result&&(t.push(this.result.key),this.result.continue())}}).then(()=>t)},e}({}); \ No newline at end of file diff --git a/pr-preview/pr-1029/index.html b/pr-preview/pr-1029/index.html index 285e863fe..acf2cf44a 100644 --- a/pr-preview/pr-1029/index.html +++ b/pr-preview/pr-1029/index.html @@ -1,41 +1,49 @@ -Introduction | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionHighlightsInstallation
      Tutorial
      Writing Jsonnet
      Libraries
      Advanced features
      References
      Frequently asked questionsKnown issues

      Define. Reuse. Override.

      Grafana Tanka is the robust configuration utility for your Kubernetes cluster, powered by the unique Jsonnet language

      InstallTutorial
      local k = import "k.libsonnet";
      -
      -{
      -    grafana: k.apps.v1.deployment.new(
      -        name="grafana",
      -        replicas=1,
      -        containers=[k.core.v1.container.new(
      -            name="grafana",
      -            image="grafana/grafana",
      -        )]
      -    )
      -}
      Kubernetes Deployment. That's all it takes.

      Highlights

      Clean

      The Jsonnet language expresses your Kubernetes apps more clearly than YAML ever did

      Reusable

      Build application libraries, import them anywhere and even share them on GitHub!

      Concise

      Using the Kubernetes library, you will never see boilerplate again!

      Confidence

      Stop guessing and use powerful diff to know the exact changes in advance

      Production ready

      Tanka deploys Grafana Cloud and many more production setups

      Open Source

      Just like the popular Grafana and Loki projects, Tanka is fully open-source
      \ No newline at end of file + Grafana Tanka + + Skip to content
      main.libsonnet
      local k = import "k.libsonnet";
      +
      {
      grafana: k.apps.v1.deployment.new(
      name="grafana",
      replicas=1,
      containers=[k.core.v1.container.new(
      name="grafana",
      image="grafana/grafana",
      )]
      )
      }
      +Kubernetes Deployment. That's all it takes. +

      Define. Reuse. Override.

      Grafana Tanka is the robust configuration utility for your Kubernetes cluster, powered by the unique Jsonnet language

      Why Grafana Tanka?

      +

      Clean

      The Jsonnet language expresses your Kubernetes apps more clearly than YAML +ever did

      Reusable

      Build application libraries, import them anywhere and even share them on +GitHub!

      Concise

      Using the Kubernetes library, you will never see boilerplate again!

      Reliable

      Stop guessing and use powerful diff to know the exact changes in advance

      Production ready

      Tanka deploys Grafana Cloud and many more production setups

      Open Source

      Just like the popular Grafana and Loki projects, Tanka is fully open-source

      \ No newline at end of file diff --git a/pr-preview/pr-1029/inline-environments/index.html b/pr-preview/pr-1029/inline-environments/index.html index 56becb7ce..30eef667c 100644 --- a/pr-preview/pr-1029/inline-environments/index.html +++ b/pr-preview/pr-1029/inline-environments/index.html @@ -1,119 +1,96 @@ -Inline environments | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      Writing Jsonnet
      Libraries
      Advanced features
      Garbage collectionHelm supportKustomize supportOutput filteringExporting as YAMLInline environmentsConverting to an inline environmentUse case: variable apiServerUse case: consistent inline environmentsCaveatsServer-Side Apply
      References
      Frequently asked questionsKnown issues

      Inline environments

      Inline environments is the practice of defining the environment's config inline + Inline environments | Grafana Tanka + + Skip to content

      Inline environments

      Inline environments is the practice of defining the environment’s config inline for evaluation at runtime as opposed to configuring it statically in -spec.json.

      The general take away is:

      • spec.json will no longer be used
      • main.jsonnet is expected to render a tanka.dev/Environment object
      • this object is expected to hold Kubernetes objects at .data

      Converting to an inline environment

      Converting a traditional spec.json environment into an inline environment is quite -straight forward. Based on the example from Using Jsonnet:

      The directory structure:

      ├── environments
      -│   └── default # default environment
      -│       ├── main.jsonnet # main file
      -│       └── spec.json # environment's config
      -├── jsonnetfile.json
      -├── lib # libraries
      -└── vendor # external libraries

      The original files look like this:

      // main.jsonnet
      -{
      -  some_deployment: {/* ... */ },
      -  some_service: {/* ... */ },
      -}
      // spec.json
      -{
      -  "apiVersion": "tanka.dev/v1alpha1",
      -  "kind": "Environment",
      -  "metadata": {
      -    "name": "default"
      -  },
      -  "spec": {
      -    "apiServer": "https://127.0.0.1:6443",
      -    "namespace": "monitoring"
      -  }
      -}

      Converting is as simple as bringing in the spec.json into main.jsonnet and -moving the original main.jsonnet scope into the data: element.

      // main.jsonnet
      -{
      -  apiVersion: 'tanka.dev/v1alpha1',
      -  kind: 'Environment',
      -  metadata: {
      -    name: 'default',
      -  },
      -  spec: {
      -    apiServer: 'https://127.0.0.1:6443',
      -    namespace: 'monitoring',
      -  },
      -  data: { // original main.jsonnet data
      -    some_deployment: {/* ... */ },
      -    some_service: {/* ... */ },
      -  },
      -}

      Use case: variable apiServer

      Even though the apiServer directive is originally meant to prevent that the -manifests don't get accidentally applied to the wrong Kubernetes cluster, there -is a valid use case for making the apiServer variable: Local test clusters.

      Instead of modifying spec.json each time, with inline environments it is +spec.json.

      +

      The general take away is:

      +
        +
      • spec.json will no longer be used
      • +
      • main.jsonnet is expected to render a tanka.dev/Environment object
      • +
      • this object is expected to hold Kubernetes objects at .data
      • +
      +

      Converting to an inline environment

      +

      Converting a traditional spec.json environment into an inline environment is quite +straight forward. Based on the example from Using Jsonnet:

      +

      The directory structure:

      +
      • Directoryenvironments +
        • Directorydefault # default environment +
          • main.jsonnet # main file
          • spec.json # environment’s config
        • jsonnetfile.json
        • Directorylib/ # libraries
        • Directoryvendor/ # external libraries
      +

      The original files look like this:

      +
      main.jsonnet
      {
      some_deployment: {/* ... */ },
      some_service: {/* ... */ },
      }
      +
      spec.json
      {
      "apiVersion": "tanka.dev/v1alpha1",
      "kind": "Environment",
      "metadata": {
      "name": "default"
      },
      "spec": {
      "apiServer": "https://127.0.0.1:6443",
      "namespace": "monitoring"
      }
      }
      +

      Converting is as simple as bringing in the spec.json into main.jsonnet and +moving the original main.jsonnet scope into the data: element.

      +
      main.jsonnet
      {
      apiVersion: 'tanka.dev/v1alpha1',
      kind: 'Environment',
      metadata: {
      name: 'default',
      },
      spec: {
      apiServer: 'https://127.0.0.1:6443',
      namespace: 'monitoring',
      },
      data: { // original main.jsonnet data
      some_deployment: {/* ... */ },
      some_service: {/* ... */ },
      },
      }
      +

      Use case: variable apiServer

      +

      Even though the apiServer directive is originally meant to prevent that the +manifests don’t get accidentally applied to the wrong Kubernetes cluster, there +is a valid use case for making the apiServer variable: Local test clusters.

      +

      Instead of modifying spec.json each time, with inline environments it is possible to leverage powerful jsonnet concepts, for example with top level -arguments:

      // environments/minikube-test-setup/main.jsonnet
      -function(apiServer) {
      -  apiVersion: 'tanka.dev/v1alpha1',
      -  kind: 'Environment',
      -  metadata: {
      -    name: 'minikube-test-setup',
      -  },
      -  spec: {
      -    apiServer: apiServer,
      -    namespace: 'monitoring',
      -  },
      -  data: { /* ... */ },
      -}

      Applying this to a local Kubernetes cluster can be done like this:

      $ tk apply --tla-str apiServer=https://127.0.0.1:4758 environments/minikube-test-setup

      Similarly this can be used to configure any part of the Environment object, like -namespace:, metadata.labels, ...

      Use case: consistent inline environments

      It is possible to define multiple inline environments in a single jsonnet. This +arguments:

      +
      environments/minikube-test-setup/main.jsonnet
      function(apiServer) {
      apiVersion: 'tanka.dev/v1alpha1',
      kind: 'Environment',
      metadata: {
      name: 'minikube-test-setup',
      },
      spec: {
      apiServer: apiServer,
      namespace: 'monitoring',
      },
      data: { /* ... */ },
      }
      +

      Applying this to a local Kubernetes cluster can be done like this:

      +
      Terminal window
      tk apply --tla-str apiServer=https://127.0.0.1:4758 environments/minikube-test-setup
      +

      Similarly this can be used to configure any part of the Environment object, like +namespace:, metadata.labels, …

      +

      Use case: consistent inline environments

      +

      It is possible to define multiple inline environments in a single jsonnet. This enables an operator to generate consistent Tanka environments for multiple -Kubernetes clusters.

      We can define a Tanka environment once and then repeat that for a set of -clusters as shown in this example:

      // environments/monitoring-stack/main.jsonnet
      -{
      -  environment(cluster):: {
      -    apiVersion: 'tanka.dev/v1alpha1',
      -    kind: 'Environment',
      -    metadata: {
      -      name: 'environment/%s' % cluster.name,
      -    },
      -    spec: {
      -      apiServer: cluster.apiServer,
      -      namespace: 'monitoring',
      -    },
      -    data: { /* ... */ },
      -  },
      -
      -  clusters:: [
      -    { name: 'us-central1', apiServer: 'https://127.0.0.1:6433' },
      -    { name: 'europe-west2', apiServer: 'https://127.0.0.2:6433' },
      -  ],
      -
      -

      In the workflow you now have to use --name to select the environment you want -to deploy:

      $ tk apply --name environment/us-central1 environments/monitoring-stack/main.jsonnet
      -$ tk diff --name environment/europe-west2 environments/monitoring-stack/main.jsonnet
      -
      -# Partial matches also work (if they match a single environment)
      -$ tk apply --name us-central1 environments/monitoring-stack/main.jsonnet
      -$ tk diff --name west2 environments/monitoring-stack/main.jsonnet

      For export, it is possible to use the same --name selector or you can do a -recursive export while using the --format option:

      $ tk export outputDir/ environments/monitoring-stack/main.jsonnet --recursive \
      -  --format '{{env.metadata.name}}/{{.metadata.namespace}}/{{.kind}}-{{.metadata.name}}'

      Caveats

      import "tk"

      Inline environments cannot use import "tk" anymore as +Kubernetes clusters.

      +

      We can define a Tanka environment once and then repeat that for a set of +clusters as shown in this example:

      +
      environments/monitoring-stack/main.jsonnet
      {
      environment(cluster):: {
      apiVersion: 'tanka.dev/v1alpha1',
      kind: 'Environment',
      metadata: {
      name: 'environment/%s' % cluster.name,
      },
      spec: {
      apiServer: cluster.apiServer,
      namespace: 'monitoring',
      },
      data: { /* ... */ },
      },
      +
      clusters:: [
      { name: 'us-central1', apiServer: 'https://127.0.0.1:6433' },
      { name: 'europe-west2', apiServer: 'https://127.0.0.2:6433' },
      ],
      +
      envs: {
      [cluster.name]: $.environment(cluster)
      for cluster in $.clusters
      },
      }
      +

      In the workflow you now have to use --name to select the environment you want +to deploy:

      +
      Terminal window
      tk apply --name environment/us-central1 environments/monitoring-stack/main.jsonnet
      tk diff --name environment/europe-west2 environments/monitoring-stack/main.jsonnet
      +
      # Partial matches also work (if they match a single environment)
      tk apply --name us-central1 environments/monitoring-stack/main.jsonnet
      tk diff --name west2 environments/monitoring-stack/main.jsonnet
      +

      For export, it is possible to use the same --name selector or you can do a +recursive export while using the --format option:

      +
      Terminal window
      tk export outputDir/ environments/monitoring-stack/main.jsonnet --recursive \
      --format '{{env.metadata.name}}/{{.metadata.namespace}}/{{.kind}}-{{.metadata.name}}'
      +

      Caveats

      +

      import "tk"

      +

      Inline environments cannot use import "tk" anymore as this information was populated before jsonnet evaluation by the existence of -spec.json.

      tk env

      The different tk env subcommands are heavily based on the spec.json -approach. tk env list will continue to work as expected, tk env -(add|remove|set) will only work for spec.json based environments.

      \ No newline at end of file +spec.json.

      +

      tk env

      +

      The different tk env subcommands are heavily based on the spec.json +approach. tk env list will continue to work as expected, tk env (add|remove|set) will only work for spec.json based environments.

      \ No newline at end of file diff --git a/pr-preview/pr-1029/install/index.html b/pr-preview/pr-1029/install/index.html index d78fed3a4..97e1dbcf5 100644 --- a/pr-preview/pr-1029/install/index.html +++ b/pr-preview/pr-1029/install/index.html @@ -1,61 +1,61 @@ -Installation | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallationTankaJsonnet Bundler
      Tutorial
      Writing Jsonnet
      Libraries
      Advanced features
      References
      Frequently asked questionsKnown issues

      Installation

      Tanka is distributed as a single binary called tk. It already includes the Jsonnet compiler, but requires some tools to be available:

      • kubectl: Tanka -uses kubectl to communicate to your cluster. This means kubectl must be -available somewhere on your $PATH. If you ever have worked with Kubernetes -before, this should be the case anyways.
      • diff: To compute differences, standard UNIX diff(1) is required.
      • (recommended) jb: #Jsonnet Bundler, the Jsonnet package -manager
      • (recommended) helm: Helm, required for Helm -support

      Tanka

      On macOS, Tanka is best installed using brew:

      $ brew install tanka

      This downloads the most recent version of Tanka and installs it.
      -Also, Tanka is automatically kept up to date as part of brew upgrade.

      Jsonnet Bundler

      The Jsonnet Bundler project creates a package manager for Jsonnet -to share and reuse code across the internet, similar to npm or go mod.

      Tanka uses this tool by default, so it's recommended to install it as well:

      On macOS, Jsonnet Bundler is best installed using brew:

      $ brew install jsonnet-bundler

      This downloads the most recent version of Jsonnet Bundler and installs it.
      -Also, Jsonnet Bundler is automatically kept up to date as part of brew upgrade.

      \ No newline at end of file + Installation | Grafana Tanka + + Skip to content

      Installation

      Tanka is distributed as a single binary called tk. It already includes the Jsonnet compiler, but requires some tools to be available:

      +
        +
      • kubectl: Tanka +uses kubectl to communicate to your cluster. This means kubectl must be +available somewhere on your $PATH. If you ever have worked with Kubernetes +before, this should be the case anyways.
      • +
      • diff: To compute differences, standard UNIX diff(1) is required.
      • +
      • (recommended) jb: #Jsonnet Bundler, the Jsonnet package +manager
      • +
      • (recommended) helm: Helm, required for Helm +support
      • +
      +

      Tanka

      +

      On macOS, Tanka is best installed using brew:

      Terminal window
      brew install tanka

      This downloads the most recent version of Tanka and installs it. +Also, Tanka is automatically kept up to date as part of brew upgrade.

      +

      Jsonnet Bundler

      +

      The Jsonnet Bundler project creates a package manager for Jsonnet +to share and reuse code across the internet, similar to npm or go mod.

      +

      Tanka uses this tool by default, so it’s recommended to install it as well:

      +

      On macOS, Jsonnet Bundler is best installed using brew:

      Terminal window
      brew install jsonnet-bundler

      This downloads the most recent version of Jsonnet Bundler and installs it.
      +Also, Jsonnet Bundler is automatically kept up to date as part of brew upgrade.

      \ No newline at end of file diff --git a/pr-preview/pr-1029/jsonnet/injecting-values/index.html b/pr-preview/pr-1029/jsonnet/injecting-values/index.html index dc54be37a..c13b76233 100644 --- a/pr-preview/pr-1029/jsonnet/injecting-values/index.html +++ b/pr-preview/pr-1029/jsonnet/injecting-values/index.html @@ -1,56 +1,78 @@ -Injecting Values | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      Writing Jsonnet
      Syntax overviewmain.jsonnetNative FunctionsInjecting ValuesJSON filesExternal variablesTop Level Arguments
      Libraries
      Advanced features
      References
      Frequently asked questionsKnown issues

      Injecting Values

      Sometimes it might be required to pass externally acquired data into Jsonnet.

      There are three ways of doing so:

      1. JSON files
      2. External variables
      3. Top level arguments

      Also check out the official Jsonnet docs on this -topic.

      JSON files

      Jsonnet is a superset of JSON, it treats any JSON as valid Jsonnet. Because many + Injecting Values | Grafana Tanka + + Skip to content

      Injecting Values

      Sometimes it might be required to pass externally acquired data into Jsonnet.

      +

      There are three ways of doing so:

      +
        +
      1. JSON files
      2. +
      3. External variables
      4. +
      5. Top level arguments
      6. +
      +

      Also check out the official Jsonnet docs on this +topic.

      +

      JSON files

      +

      Jsonnet is a superset of JSON, it treats any JSON as valid Jsonnet. Because many systems can be told to output their data in JSON format, this provides a pretty -good interface between those.

      For example, your build tooling like make could acquire secrets from systems such as -Vault, etc. and write that into secrets.json.

      local secrets = import "secrets.json";
      -
      -{
      -  foo: secrets.myPassword,
      -}

      Note: Using import with JSON treats it as Jsonnet, so make sure to not -use it with untrusted code.
      -A safer, but more verbose, alternative is std.parseJson(importstr 'path_to_json.json')

      External variables

      Another way of passing values from the outside are external variables, which are specified like so:

      # strings
      -$ tk show . --ext-str hello=world
      -
      -# any Jsonnet snippet
      -$ tk show . --ext-code foo=4 --ext-code bar='[ 1, 3 ]'

      They can be accessed using std.extVar and the name given to them on the command line:

      {
      -  foo: std.extVar('foo'), // 4, integer
      -  bar: std.extVar('bar'), // [ 1, 3 ], array
      -}

      Warning: External variables are directly accessible in all parts of the +good interface between those.

      +

      For example, your build tooling like make could acquire secrets from systems such as +Vault, etc. and write that into secrets.json.

      +
      local secrets = import "secrets.json";
      +
      {
      foo: secrets.myPassword,
      }
      + +

      External variables

      +

      Another way of passing values from the outside are external variables, which are specified like so:

      +
      Terminal window
      # strings
      tk show . --ext-str hello=world
      +
      # any Jsonnet snippet
      tk show . --ext-code foo=4 --ext-code bar='[ 1, 3 ]'
      +

      They can be accessed using std.extVar and the name given to them on the command line:

      +
      {
      foo: std.extVar('foo'), // 4, integer
      bar: std.extVar('bar'), // [ 1, 3 ], array
      }
      +

      Top Level Arguments

      Usually with Tanka, your main.jsonnet holds an object at the top level (most -outer type in the generated JSON):

      // main.jsonnet
      -{
      -  /* your resources */
      -}

      Another type of Jsonnet that naturally accepts parameters is the function. +Try to use Top Level Arguments instead.

      +

      Top Level Arguments

      +

      Usually with Tanka, your main.jsonnet holds an object at the top level (most +outer type in the generated JSON):

      +
      main.jsonnet
      {
      /* your resources */
      }
      +

      Another type of Jsonnet that naturally accepts parameters is the function. When the Jsonnet compiler finds a function at the top level, it invokes it and -allows passing parameter values from the command line:

      // Actual output (object) returned by function, which is taking parameters and default values
      -function(who, msg="Hello %s!") {
      -  hello: msg % who
      -}

      Here, who needs a value while msg has a default. This can be invoked like so:

      $ tk show . --tla-str who=John
      \ No newline at end of file +allows passing parameter values from the command line:

      +
      // Actual output (object) returned by function, which is taking parameters and default values
      function(who, msg="Hello %s!") {
      hello: msg % who
      }
      +

      Here, who needs a value while msg has a default. This can be invoked like so:

      +
      Terminal window
      tk show . --tla-str who=John
      \ No newline at end of file diff --git a/pr-preview/pr-1029/jsonnet/main/index.html b/pr-preview/pr-1029/jsonnet/main/index.html index 3edb41dfd..3288c1cf1 100644 --- a/pr-preview/pr-1029/jsonnet/main/index.html +++ b/pr-preview/pr-1029/jsonnet/main/index.html @@ -1,99 +1,73 @@ -main.jsonnet | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      Writing Jsonnet
      Syntax overviewmain.jsonnetDeeply nested object (Recommended)ArrayNative FunctionsInjecting Values
      Libraries
      Advanced features
      References
      Frequently asked questionsKnown issues

      main.jsonnet

      The most important file is called main.jsonnet, because this is where Tanka + main.jsonnet | Grafana Tanka + + Skip to content

      main.jsonnet

      The most important file is called main.jsonnet, because this is where Tanka invokes the Jsonnet compiler. Every single line of Jsonnet, including imports, functions and whatnot is then evaluated until a single, very big JSON -object is left.
      -This object is returned to Tanka and includes all of your Kubernetes manifests -somewhere in it, most probably deeply nested.

      But as kubectl expects a yaml stream, and not a nested tree, Tanka needs to +object is left.
      +This object is returned to Tanka and includes all of your Kubernetes manifests +somewhere in it, most probably deeply nested.

      +

      But as kubectl expects a yaml stream, and not a nested tree, Tanka needs to extract your objects first. To do this, it traverses the tree until it finds something that looks like a Kubernetes manifest. An object is considered valid -when it has both, kind and apiVersion set.

      To ensure Tanka can find your manifests, the output of your Jsonnet needs to -have one of the following structures:

      Most commonly used is a single big object that includes all manifests as -leaf-nodes.

      How deeply encapsulated the actual object is does not matter, Tanka will -traverse down until it finds something that is valid.

      {
      -  "prometheus": {
      -    "service": {
      -      // Service nested one level
      -      "apiVersion": "v1",
      -      "kind": "Service",
      -      "metadata": {
      -        "name": "promSvc"
      -      }
      -    },
      -    "deployment": {
      -      "apiVersion": "apps/v1", // apiVersion ..
      -      "kind": "Deployment", // .. and kind are required to identify an object.
      -      "metadata": {
      -        "name": "prom"
      -      }
      -    }
      -  },
      -  "web": {
      -    "nginx": {
      -

      Using this technique has the big benefit that it is self-documenting, as the +when it has both, kind and apiVersion set.

      +

      To ensure Tanka can find your manifests, the output of your Jsonnet needs to +have one of the following structures:

      + +

      Most commonly used is a single big object that includes all manifests as +leaf-nodes.

      +

      How deeply encapsulated the actual object is does not matter, Tanka will +traverse down until it finds something that is valid.

      +
      {
      "prometheus": {
      "service": {
      // Service nested one level
      "apiVersion": "v1",
      "kind": "Service",
      "metadata": {
      "name": "promSvc"
      }
      },
      "deployment": {
      "apiVersion": "apps/v1", // apiVersion ..
      "kind": "Deployment", // .. and kind are required to identify an object.
      "metadata": {
      "name": "prom"
      }
      }
      },
      "web": {
      "nginx": {
      "deployment": {
      // Deployment nested two levels
      "apiVersion": "apps/v1",
      "kind": "Deployment",
      "metadata": {
      "name": "nginx"
      }
      }
      }
      }
      }
      +

      Using this technique has the big benefit that it is self-documenting, as the nesting of keys can be used to logically group related manifests, for example by -application.

      An encapsulation level of zero is also possible, which means nothing else than -regular object like it could be obtained from kubectl show -o json:

      {
      -  "apiVersion": "v1",
      -  "kind": "Service",
      -  "metadata": {
      -    "name": "foo"
      -  }
      -}

      Array

      Using an array of objects is also fine:

      [
      -  {
      -    "apiVersion": "v1",
      -    "kind": "Service",
      -    "metadata": {
      -      "name": "promSvc"
      -    }
      -  },
      -  {
      -    "apiVersion": "apps/v1",
      -    "kind": "Deployment",
      -    "metadata": {
      -      "name": "prom"
      -    }
      -  }
      -]

      List type

      Users of kubectl might have had contact with a type called List. It is not +application.

      +

      An encapsulation level of zero is also possible, which means nothing else than +regular object like it could be obtained from kubectl show -o json:

      +
      {
      "apiVersion": "v1",
      "kind": "Service",
      "metadata": {
      "name": "foo"
      }
      }
      +

      Array

      +

      Using an array of objects is also fine:

      +
      [
      {
      "apiVersion": "v1",
      "kind": "Service",
      "metadata": {
      "name": "promSvc"
      }
      },
      {
      "apiVersion": "apps/v1",
      "kind": "Deployment",
      "metadata": {
      "name": "prom"
      }
      }
      ]
      +

      List type

      +

      Users of kubectl might have had contact with a type called List. It is not part of the official Kubernetes API but rather a pseudo-type introduced by -kubectl for dealing with multiple objects at once. Thus, Tanka does not -support it out of the box.

      To take full advantage of Tankas features, you can manually flatten it:

      local list = {
      -  apiVersion: "v1",
      -  kind: "List",
      -  items: [
      -    {
      -      apiVersion: "v1",
      -      kind: "Service",
      -      /* ... */
      -    }
      -    /* ... */
      -  ]
      -};
      -
      -# expose the `items` array on the top level:
      -list.items
      \ No newline at end of file +kubectl for dealing with multiple objects at once. Thus, Tanka does not +support it out of the box.

      +

      To take full advantage of Tankas features, you can manually flatten it:

      +
      local list = {
      apiVersion: "v1",
      kind: "List",
      items: [
      {
      apiVersion: "v1",
      kind: "Service",
      /* ... */
      }
      /* ... */
      ]
      };
      +
      # expose the `items` array on the top level:
      list.items
      \ No newline at end of file diff --git a/pr-preview/pr-1029/jsonnet/native/index.html b/pr-preview/pr-1029/jsonnet/native/index.html index ddc496397..aa8a8fbba 100644 --- a/pr-preview/pr-1029/jsonnet/native/index.html +++ b/pr-preview/pr-1029/jsonnet/native/index.html @@ -1,82 +1,111 @@ -Native Functions | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      Writing Jsonnet
      Syntax overviewmain.jsonnetNative Functionssha256parseJsonparseYamlmanifestJsonFromJsonmanifestYamlFromJsonescapeStringRegexregexMatchregexSubstInjecting Values
      Libraries
      Advanced features
      References
      Frequently asked questionsKnown issues

      Native Functions

      Tanka extends Jsonnet using native functions, offering additional functionality not yet available in the standard library.

      To use them in your code, you need to access them using std.native from the standard library:

      {
      -  someField:  std.native('<name>')(<arguments>),
      -}

      std.native takes the native function's name as a string argument and returns a function, which is called using the second set of parentheses.

      sha256

      Signature

      sha256(string str) string

      sha256 computes the SHA256 sum of the given string.

      Examples

      {
      -  sum: std.native('sha256')('Hello, World!'),
      -}

      Evaluating with Tanka results in the JSON:

      {
      -  "sum": "dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f"
      -}

      parseJson

      Signature

      parseJson(string json) Object

      parseJson parses a json string and returns the respective Jsonnet type (Object, Array, etc).

      Examples

      {
      -  array: std.native('parseJson')('[0, 1, 2]'),
      -  object: std.native('parseJson')('{ "foo": "bar" }'),
      -}

      Evaluating with Tanka results in the JSON:

      {
      -  "array": [0, 1, 2],
      -  "object": {
      -    "foo": "bar"
      -  }
      -}

      parseYaml

      Signature

      parseYaml(string yaml) []Object

      parseYaml wraps yaml.Unmarshal to convert a string of yaml document(s) into -a set of dicts. If yaml only contains a single document, a single value array -will be returned.

      Examples

      {
      -  yaml: std.native('parseYaml')(|||
      -    ---
      -    foo: bar
      -    ---
      -    bar: baz
      -  |||),
      -}

      Evaluating with Tanka results in the JSON:

      {
      -  "yaml": [
      -    {
      -      "foo": "bar"
      -    },
      -    {
      -      "bar": "baz"
      -    }
      -  ]
      -}

      manifestJsonFromJson

      Signature

      manifestJsonFromJson(string json, int indent) string

      manifestJsonFromJson reserializes JSON and allows to change the indentation.

      Examples

      {
      -  indentWithEightSpaces: std.native('manifestJsonFromJson')('{ "foo": { "bar": "baz" } }', 8),
      -}

      Evaluating with Tanka results in the JSON:

      {
      -  "indentWithEightSpaces": "{\n        \"foo\": {\n                \"bar\": \"baz\"\n        }\n}\n"
      -}

      manifestYamlFromJson

      Signature

      manifestYamlFromJson(string json) string

      manifestYamlFromJson serializes a JSON string as a YAML document.

      Examples

      {
      -  yaml: std.native('manifestYamlFromJson')('{ "foo": { "bar": "baz" } }'),
      -}

      Evaluating with Tanka results in the JSON:

      {
      -  "yaml": "foo:\n    bar: baz\n"
      -}

      escapeStringRegex

      Signature

      escapeStringRegex(string s) string

      escapeStringRegex escapes all regular expression metacharacters and returns a -regular expression that matches the literal text.

      Examples

      {
      -  escaped: std.native('escapeStringRegex')('"([0-9]+"'),
      -}

      Evaluating with Tanka results in the JSON:

      {
      -  "escaped": "\"\\(\\[0-9\\]\\+\""
      -}

      regexMatch

      Signature

      regexMatch(string regex, string s) boolean

      regexMatch returns whether the given string is matched by the given -RE2 regular expression.

      Examples

      {
      -  matched: std.native('regexMatch')('.', 'a'),
      -}

      Evaluating with Tanka results in the JSON:

      {
      -  "matched": true
      -}

      regexSubst

      Signature

      regexSubst(string regex, string src, string repl) string

      regexSubst replaces all matches of the re2 regular expression with the -replacement string.

      Examples

      {
      -  substituted: std.native('regexSubst')('p[^m]*', 'pm', 'poe'),
      -}

      Evaluating with Tanka results in the JSON:

      {
      -  "substituted": "poem"
      -}
      \ No newline at end of file + Native Functions | Grafana Tanka + + Skip to content

      Native Functions

      Tanka extends Jsonnet using native functions, offering additional functionality not yet available in the standard library.

      +

      To use them in your code, you need to access them using std.native from the standard library:

      +
      {
      someField: std.native('<name>')(<arguments>),
      }
      +

      std.native takes the native function’s name as a string argument and returns a function, which is called using the second set of parentheses.

      +

      sha256

      +

      Signature

      +
      sha256(string str) string
      +

      sha256 computes the SHA256 sum of the given string.

      +

      Examples

      +
      {
      sum: std.native('sha256')('Hello, World!'),
      }
      +

      Evaluating with Tanka results in the JSON:

      +
      {
      "sum": "dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f"
      }
      +

      parseJson

      +

      Signature

      +
      parseJson(string json) Object
      +

      parseJson parses a json string and returns the respective Jsonnet type (Object, Array, etc).

      +

      Examples

      +
      {
      array: std.native('parseJson')('[0, 1, 2]'),
      object: std.native('parseJson')('{ "foo": "bar" }'),
      }
      +

      Evaluating with Tanka results in the JSON:

      +
      {
      "array": [0, 1, 2],
      "object": {
      "foo": "bar"
      }
      }
      +

      parseYaml

      +

      Signature

      +
      parseYaml(string yaml) []Object
      +

      parseYaml wraps yaml.Unmarshal to convert a string of yaml document(s) into +a set of dicts. If yaml only contains a single document, a single value array +will be returned.

      +

      Examples

      +
      {
      yaml: std.native('parseYaml')(|||
      ---
      foo: bar
      ---
      bar: baz
      |||),
      }
      +

      Evaluating with Tanka results in the JSON:

      +
      {
      "yaml": [
      {
      "foo": "bar"
      },
      {
      "bar": "baz"
      }
      ]
      }
      +

      manifestJsonFromJson

      +

      Signature

      +
      manifestJsonFromJson(string json, int indent) string
      +

      manifestJsonFromJson reserializes JSON and allows to change the indentation.

      +

      Examples

      +
      {
      indentWithEightSpaces: std.native('manifestJsonFromJson')('{ "foo": { "bar": "baz" } }', 8),
      }
      +

      Evaluating with Tanka results in the JSON:

      +
      {
      "indentWithEightSpaces": "{\n \"foo\": {\n \"bar\": \"baz\"\n }\n}\n"
      }
      +

      manifestYamlFromJson

      +

      Signature

      +
      manifestYamlFromJson(string json) string
      +

      manifestYamlFromJson serializes a JSON string as a YAML document.

      +

      Examples

      +
      {
      yaml: std.native('manifestYamlFromJson')('{ "foo": { "bar": "baz" } }'),
      }
      +

      Evaluating with Tanka results in the JSON:

      +
      {
      "yaml": "foo:\n bar: baz\n"
      }
      +

      escapeStringRegex

      +

      Signature

      +
      escapeStringRegex(string s) string
      +

      escapeStringRegex escapes all regular expression metacharacters and returns a +regular expression that matches the literal text.

      +

      Examples

      +
      {
      escaped: std.native('escapeStringRegex')('"([0-9]+"'),
      }
      +

      Evaluating with Tanka results in the JSON:

      +
      {
      "escaped": "\"\\(\\[0-9\\]\\+\""
      }
      +

      regexMatch

      +

      Signature

      +
      regexMatch(string regex, string s) boolean
      +

      regexMatch returns whether the given string is matched by the given +RE2 regular expression.

      +

      Examples

      +
      {
      matched: std.native('regexMatch')('.', 'a'),
      }
      +

      Evaluating with Tanka results in the JSON:

      +
      {
      "matched": true
      }
      +

      regexSubst

      +

      Signature

      +
      regexSubst(string regex, string src, string repl) string
      +

      regexSubst replaces all matches of the re2 regular expression with the +replacement string.

      +

      Examples

      +
      {
      substituted: std.native('regexSubst')('p[^m]*', 'pm', 'poe'),
      }
      +

      Evaluating with Tanka results in the JSON:

      +
      {
      "substituted": "poem"
      }
      \ No newline at end of file diff --git a/pr-preview/pr-1029/jsonnet/overview/index.html b/pr-preview/pr-1029/jsonnet/overview/index.html index 83c2db18f..42de6cf5d 100644 --- a/pr-preview/pr-1029/jsonnet/overview/index.html +++ b/pr-preview/pr-1029/jsonnet/overview/index.html @@ -1,100 +1,104 @@ -Syntax overview | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      Writing Jsonnet
      Syntax overviewSyntaxAbstractionStandard libraryConditionalsReferencesmain.jsonnetNative FunctionsInjecting Values
      Libraries
      Advanced features
      References
      Frequently asked questionsKnown issues

      Language overview

      Jsonnet is the data templating language Tanka uses for + Syntax overview | Grafana Tanka + + Skip to content

      Syntax overview

      Jsonnet is the data templating language Tanka uses for expressing what shall be deployed to your Kubernetes cluster. Understanding -Jsonnet is crucial to using Tanka effectively.

      This page covers the Jsonnet language itself. For more information on how to -use Jsonnet with Kubernetes, see the tutorial. There's -also the official Jsonnet tutorial -that provides a more detailed review of language features.

      Syntax

      Being a superset of JSON, the syntax is very similar:

      // Line comment
      -/* Block comment */
      -
      -// a local variable (not exported)
      -local greeting = "hello world!";
      -
      -// the exported/returned object
      -{
      -  foo: "bar", // string
      -  bar: 5, // int
      -  baz: false, // bool
      -  list: [1,2,3], // array
      -  // object
      -  dict: {
      -    nested: greeting, // using the local
      -  },
      -  hidden:: "incognito!" // an unexported field
      -}

      Abstraction

      Jsonnet has rich abstraction features, which makes it interesting for +Jsonnet is crucial to using Tanka effectively.

      +

      This page covers the Jsonnet language itself. For more information on how to +use Jsonnet with Kubernetes, see the tutorial. There’s +also the official Jsonnet tutorial +that provides a more detailed review of language features.

      +

      Syntax

      +

      Being a superset of JSON, the syntax is very similar:

      +
      // Line comment
      /* Block comment */
      +
      // a local variable (not exported)
      local greeting = "hello world!";
      +
      // the exported/returned object
      {
      foo: "bar", // string
      bar: 5, // int
      baz: false, // bool
      list: [1,2,3], // array
      // object
      dict: {
      nested: greeting, // using the local
      },
      hidden:: "incognito!" // an unexported field
      }
      +

      Abstraction

      +

      Jsonnet has rich abstraction features, which makes it interesting for configuring Kubernetes, as it allows to keep configurations concise, yet -readable.

      • Imports
      • Merging
      • Functions

      Imports

      Just as other languages, Jsonnet allows code to be imported from other files:

      local secret = import "./secret.libsonnet";

      The exported object (the only non-local one) of secret.libsonnet is now -available as a local variable called secret.

      When using Tanka, it is also possible to directly import .json and .yaml -files, as if they were a .libsonnet.

      Make sure to also take a look at the libraries documentation to learn how to use import and re-use code. -The documentation on Tanka import paths and vendoring are useful to understand how imports work in Tanka's context.

      Merging

      Deep merging allows you to change parts of an object without touching all of it. -Consider the following example:

      local secret = {
      -  kind: Secret,
      -  metadata: {
      -    name: "mySecret",
      -    namespace: "default", // need to change that
      -  },
      -  data: {
      -    foo: std.base64("foo")
      -  }
      -};

      To change the namespace only, we can use the special merge key +: like so:

      // define the patch:
      -local patch = {
      -  metadata+: {
      -    namespace: "myApp"
      -  }
      -}

      The difference between : and +: is that the former replaces the original +readable.

      + +

      Imports

      +

      Just as other languages, Jsonnet allows code to be imported from other files:

      +
      local secret = import "./secret.libsonnet";
      +

      The exported object (the only non-local one) of secret.libsonnet is now +available as a local variable called secret.

      +

      When using Tanka, it is also possible to directly import .json and .yaml +files, as if they were a .libsonnet.

      +

      Make sure to also take a look at the libraries documentation to learn how to use import and re-use code. +The documentation on Tanka import paths and vendoring are useful to understand how imports work in Tanka’s context.

      +

      Merging

      +

      Deep merging allows you to change parts of an object without touching all of it. +Consider the following example:

      +
      local secret = {
      kind: Secret,
      metadata: {
      name: "mySecret",
      namespace: "default", // need to change that
      },
      data: {
      foo: std.base64("foo")
      }
      };
      +

      To change the namespace only, we can use the special merge key +: like so:

      +
      // define the patch:
      local patch = {
      metadata+: {
      namespace: "myApp"
      }
      }
      +

      The difference between : and +: is that the former replaces the original data at that key, while the latter applies the new object as a patch on top, meaning that values will be updated if possible but all other stay like they -are.
      -To merge those two, just add (+) the patch to the original:

      secret + patch

      The output of this is the following JSON object:

      {
      -  "kind": "Secret",
      -  "metadata": {
      -    "name": "mySecret",
      -    "namespace": "myApp"
      -  },
      -  "data": {
      -    "foo": "Zm9vCg=="
      -  }
      -}

      Functions

      Jsonnet supports functions, similar to how Python does. They can be defined in -two different ways:

      local add(x,y) = x + y;
      -local mul = (function(x, y) x * y);

      Objects can have methods:

      {
      -  greet(who): "hello " + who,
      -}

      Default values, keyword-args and more examples can be found at -jsonnet.org.

      Standard library

      The Jsonnet standard library includes many helper methods ranging from object -and array mutation, over string utils to computation helpers.

      Documentation is available at -jsonnet.org.

      Conditionals

      Jsonnet supports a conditionals in a fashion similar to a ternary operator:

      local tag = if prod then "v1.0" else "latest";

      More on jsonnet.org.

      References

      Jsonnet has multiple options to refer to parts of an object:

      { // this is $
      -  junk: "foo",
      -  nested: { // this is self
      -    app: "Tanka",
      -    msg: self.app + " rocks!" // "Tanka rocks!"
      -  },
      -  children: { // this is also self
      -    baz: "bar",
      -    junk: $.junk + self.baz, // "foobar"
      -  }
      -}

      For more information take a look at -jsonnet.org

      \ No newline at end of file +are.
      +To merge those two, just add (+) the patch to the original:

      +
      secret + patch
      +

      The output of this is the following JSON object:

      +
      {
      "kind": "Secret",
      "metadata": {
      "name": "mySecret",
      "namespace": "myApp"
      },
      "data": {
      "foo": "Zm9vCg=="
      }
      }
      +

      Functions

      +

      Jsonnet supports functions, similar to how Python does. They can be defined in +two different ways:

      +
      local add(x,y) = x + y;
      local mul = (function(x, y) x * y);
      +

      Objects can have methods:

      +
      {
      greet(who): "hello " + who,
      }
      +

      Default values, keyword-args and more examples can be found at +jsonnet.org.

      +

      Standard library

      +

      The Jsonnet standard library includes many helper methods ranging from object +and array mutation, over string utils to computation helpers.

      +

      Documentation is available at +jsonnet.org.

      +

      Conditionals

      +

      Jsonnet supports a conditionals in a fashion similar to a ternary operator:

      +
      local tag = if prod then "v1.0" else "latest";
      +

      More on jsonnet.org.

      +

      References

      +

      Jsonnet has multiple options to refer to parts of an object:

      +
      { // this is $
      junk: "foo",
      nested: { // this is self
      app: "Tanka",
      msg: self.app + " rocks!" // "Tanka rocks!"
      },
      children: { // this is also self
      baz: "bar",
      junk: $.junk + self.baz, // "foobar"
      }
      }
      +

      For more information take a look at +jsonnet.org

      \ No newline at end of file diff --git a/pr-preview/pr-1029/known-issues/index.html b/pr-preview/pr-1029/known-issues/index.html index 2300d450d..f63a061fc 100644 --- a/pr-preview/pr-1029/known-issues/index.html +++ b/pr-preview/pr-1029/known-issues/index.html @@ -1,42 +1,68 @@ -Known issues | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      Writing Jsonnet
      Libraries
      Advanced features
      References
      Frequently asked questionsKnown issues

      Known Issues

      Below is a list of common errors and how to address them.

      Evaluating jsonnet: RUNTIME ERROR: Undefined external variable: __ksonnet/components

      When migrating from ksonnet, this error might occur, because Tanka does not -provide the global __ksonnet variable, nor does it strictly have the concept + Known issues | Grafana Tanka + + Skip to content

      Known issues

      Below is a list of common errors and how to address them.

      +

      Evaluating jsonnet: RUNTIME ERROR: Undefined external variable: __ksonnet/components

      +

      When migrating from ksonnet, this error might occur, because Tanka does not +provide the global __ksonnet variable, nor does it strictly have the concept of components. -You will need to use the plain Jsonnet import feature instead. Note that this +You will need to use the plain Jsonnet import feature instead. Note that this requires your code to be inside of one of the -import paths.

      Evaluating jsonnet: RUNTIME ERROR: couldn't open import "k.libsonnet": no match locally or in the Jsonnet library paths

      This error can occur when the k8s-libsonnet kubernetes libraries are missing in the -import paths. While k8s-libsonnet used to magically include them, Tanka follows a -more explicit approach and requires you to install them using jb:

      $ jb install github.com/jsonnet-libs/k8s-libsonnet/1.21@main
      -$ echo "import 'github.com/jsonnet-libs/k8s-libsonnet/1.21/main.libsonnet'" > lib/k.libsonnet

      This does 2 things:

      1) It installs the k8s-libsonnet library (in vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/). -You can replace the 1.21 matching the Kubernetes version you want to run against.

      2) It makes an alias for libraries importing k.libsonnet directly. See -https://tanka.dev/tutorial/k-lib#aliasing for the alias rationale.

      Unexpected diff if the same port number is used for UDP and TCP

      A -long-standing bug in kubectl +import paths.

      +

      Evaluating jsonnet: RUNTIME ERROR: couldn't open import "k.libsonnet": no match locally or in the Jsonnet library paths

      +

      This error can occur when the k8s-libsonnet kubernetes libraries are missing in the +import paths. While k8s-libsonnet used to magically include them, Tanka follows a +more explicit approach and requires you to install them using jb:

      +
      Terminal window
      jb install github.com/jsonnet-libs/k8s-libsonnet/1.21@main
      echo "import 'github.com/jsonnet-libs/k8s-libsonnet/1.21/main.libsonnet'" > lib/k.libsonnet
      +

      This does 2 things:

      +
        +
      1. +

        It installs the k8s-libsonnet library (in vendor/github.com/jsonnet-libs/k8s-libsonnet/1.21/). +You can replace the 1.21 matching the Kubernetes version you want to run against.

        +
      2. +
      3. +

        It makes an alias for libraries importing k.libsonnet directly. See +Aliasing for the alias rationale.

        +
      4. +
      +

      Unexpected diff if the same port number is used for UDP and TCP

      +

      A long-standing bug in kubectl results in an incorrect diff output if the same port number is used multiple times in differently named ports, which commonly happens if a port is specified -using both protocols, tcp and udp. Nevertheless, tk apply will still work -correctly.

      \ No newline at end of file +using both protocols, tcp and udp. Nevertheless, tk apply will still work +correctly.

      \ No newline at end of file diff --git a/pr-preview/pr-1029/kustomize/index.html b/pr-preview/pr-1029/kustomize/index.html index bc9fb29ba..af82e0c44 100644 --- a/pr-preview/pr-1029/kustomize/index.html +++ b/pr-preview/pr-1029/kustomize/index.html @@ -1,69 +1,94 @@ -Kustomize support | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      Writing Jsonnet
      Libraries
      Advanced features
      Garbage collectionHelm supportKustomize supportConsuming a Kustomization from JsonnetWorking with KustomizeTroubleshootingOutput filteringExporting as YAMLInline environmentsServer-Side Apply
      References
      Frequently asked questionsKnown issues

      Kustomize Support

      Kustomize provides a solution for customizing Kubernetes -manifests in YAML.

      Even though Grafana Tanka uses the Jsonnet language for -resource definition, you can still consume kustomizations, as described below.

      Warning: Keep in mind this feature is considered EXPERIMENTAL

      Consuming a Kustomization from Jsonnet

      Kustomize support is provided using the -github.com/grafana/jsonnet-libs/tanka-util -library. Install it with:

      jb install github.com/grafana/jsonnet-libs/tanka-util

      The following example shows how to extract the individual resources of the -flux2/source-controller -kustomization:

      local tanka = import 'github.com/grafana/jsonnet-libs/tanka-util/main.libsonnet';
      -local kustomize = tanka.kustomize.new(std.thisFile);
      -
      -{
      -  source_controller: kustomize.build(path='flux2')
      -}

      Kustomize takes a kustomization manifest as input. Go on an create this file -flux2/kustomization.yaml relative to above jsonnet:

      apiVersion: kustomize.config.k8s.io/v1beta1
      -kind: Kustomization
      -resources:
      -- https://github.com/fluxcd/flux2/archive/v0.4.3.zip//flux2-0.4.3/manifests/bases/source-controller

      Important: You MUST include the .new(std.thisFile) part in the import. -This is what tells Tanka where you actually call kustomize.build() from, so -it can find your kustomization manifest.


      Once invoked, the $.source_controller key holds the individual resources of -the kustomization as a regular Jsonnet object that looks roughly like so:

      {
      -  'custom_resource_definition_buckets.source.toolkit.fluxcd.io': {/* ... */ },
      -  'custom_resource_definition_gitrepositories.source.toolkit.fluxcd.io': {/* ... */ },
      -  'custom_resource_definition_helmcharts.source.toolkit.fluxcd.io': {/* ... */ },
      -  'custom_resource_definition_helmrepositories.source.toolkit.fluxcd.io': {/* ... */ },
      -  deployment_source_controller: {/* ... */ },
      -  service_source_controller: {/* ... */ },
      -}

      Above can be manipulated in the same way as -any other Jsonnet data.

      Working with Kustomize

      Tanka, like Jsonnet, is hermetic. It always yields the same resources when -the project is strictly self-contained.

      Kustomize however has the ability to pull -resources + Kustomize support | Grafana Tanka + + Skip to content

      Kustomize support

      Kustomize provides a solution for customizing Kubernetes +manifests in YAML.

      +

      Even though Grafana Tanka uses the Jsonnet language for +resource definition, you can still consume kustomizations, as described below.

      + +

      Consuming a Kustomization from Jsonnet

      +

      Kustomize support is provided using the +github.com/grafana/jsonnet-libs/tanka-util +library. Install it with:

      +
      Terminal window
      jb install github.com/grafana/jsonnet-libs/tanka-util
      +

      The following example shows how to extract the individual resources of the +flux2/source-controller +kustomization:

      +
      local tanka = import 'github.com/grafana/jsonnet-libs/tanka-util/main.libsonnet';
      local kustomize = tanka.kustomize.new(std.thisFile);
      +
      {
      source_controller: kustomize.build(path='flux2')
      }
      +

      Kustomize takes a kustomization manifest as input. Go on an create this file +flux2/kustomization.yaml relative to above jsonnet:

      +
      apiVersion: kustomize.config.k8s.io/v1beta1
      kind: Kustomization
      resources:
      - https://github.com/fluxcd/flux2/archive/v0.4.3.zip//flux2-0.4.3/manifests/bases/source-controller
      + +

      Once invoked, the $.source_controller key holds the individual resources of +the kustomization as a regular Jsonnet object that looks roughly like so:

      +
      {
      'custom_resource_definition_buckets.source.toolkit.fluxcd.io': {/* ... */ },
      'custom_resource_definition_gitrepositories.source.toolkit.fluxcd.io': {/* ... */ },
      'custom_resource_definition_helmcharts.source.toolkit.fluxcd.io': {/* ... */ },
      'custom_resource_definition_helmrepositories.source.toolkit.fluxcd.io': {/* ... */ },
      deployment_source_controller: {/* ... */ },
      service_source_controller: {/* ... */ },
      }
      +

      Above can be manipulated in the same way as +any other Jsonnet data.

      +

      Working with Kustomize

      +

      Tanka, like Jsonnet, is hermetic. It always yields the same resources when +the project is strictly self-contained.

      +

      Kustomize however has the ability to pull +resources from different sources at runtime, which violates above requirement. This is -also apparent in the example above.

      Important: Due to the nature of Kustomize, it is not feasible to ensure +also apparent in the example above.

      +

      Troubleshooting

      Kustomize executable missing

      Kustomize support in Tanka requires the kustomize binary installed on your -system and available on the $PATH. If Kustomize is not installed, you will see -this error message:

      evaluating jsonnet: RUNTIME ERROR: Expanding Kustomize: exec: "kustomize": executable file not found in $PATH

      To solve this, you need to -install Kustomize. +when using Kustomize.

      +

      Troubleshooting

      +

      Kustomize executable missing

      +

      Kustomize support in Tanka requires the kustomize binary installed on your +system and available on the $PATH. If Kustomize is not installed, you will see +this error message:

      +
      evaluating jsonnet: RUNTIME ERROR: Expanding Kustomize: exec: "kustomize": executable file not found in $PATH
      +

      To solve this, you need to +install Kustomize. If you cannot install it system-wide, you can point Tanka at your executable -using TANKA_KUSTOMIZE_PATH

      opts.calledFrom unset

      This occurs, when Tanka was not told where it kustomize.build() was invoked -from. This most likely means you didn't call new(std.thisFile) when importing tanka-util:

      local tanka = import "github.com/grafana/jsonnet-libs/tanka-util/main.libsonnet";
      -local kustomize = tanka.kustomize.new(std.thisFile);
      -                                ↑ This is important

      Failed to find kustomization

      Error: unable to find one of 'kustomization.yaml', 'kustomization.yml' or 'Kustomization' in directory '/home/user/stuff/tanka/environments/default/flux2'

      Tanka failed to locate your kustomization on the filesystem. It looked at the -relative path you provided in kustomize.build(), starting from the directory -of the file you called kustomize.build() from.

      Please check there is actually a valid kustomization at this place.

      \ No newline at end of file +using TANKA_KUSTOMIZE_PATH

      +

      opts.calledFrom unset

      +

      This occurs, when Tanka was not told where it kustomize.build() was invoked +from. This most likely means you didn’t call new(std.thisFile) when importing tanka-util:

      +
      local tanka = import "github.com/grafana/jsonnet-libs/tanka-util/main.libsonnet";
      local kustomize = tanka.kustomize.new(std.thisFile);
      ↑ This is important
      +

      Failed to find kustomization

      +
      Error: unable to find one of 'kustomization.yaml', 'kustomization.yml' or 'Kustomization' in directory '/home/user/stuff/tanka/environments/default/flux2'
      +

      Tanka failed to locate your kustomization on the filesystem. It looked at the +relative path you provided in kustomize.build(), starting from the directory +of the file you called kustomize.build() from.

      +

      Please check there is actually a valid kustomization at this place.

      \ No newline at end of file diff --git a/pr-preview/pr-1029/libraries/import-paths/index.html b/pr-preview/pr-1029/libraries/import-paths/index.html index 591b132a3..01952d8b9 100644 --- a/pr-preview/pr-1029/libraries/import-paths/index.html +++ b/pr-preview/pr-1029/libraries/import-paths/index.html @@ -1,2 +1,75 @@ -Import paths | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      Writing Jsonnet
      Libraries
      Advanced features
      References
      Frequently asked questionsKnown issues

      Import paths

      When using import or importstr, Tanka considers the following directories to -find a suitable file for that specific import:

      RankPathPurpose
      4<baseDir>The directory of your environment, e.g. /environments/default.
      Put things that belong to this very environment here.
      3/libProject-global libraries, that are used in multiple environments, but are specific to this project.
      2<baseDir>/vendorPer-environment vendor, can be used for vendor overriding
      1/vendorGlobal vendor, holds external libraries installed using jb.

      Note:

      • If a file occurs in multiple paths, the one with the highest rank will be chosen.
      • / in above table means <rootDir>, which is your project root.
      \ No newline at end of file + Import paths | Grafana Tanka + + Skip to content

      Import paths

      When using import or importstr, Tanka considers the following directories to +find a suitable file for that specific import:

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      RankPathPurpose
      4<baseDir>The directory of your environment, e.g. /environments/default.
      Put things that belong to this very environment here.
      3/libProject-global libraries, that are used in multiple environments, but are specific to this project.
      2<baseDir>/vendorPer-environment vendor, can be used for vendor overriding
      1/vendorGlobal vendor, holds external libraries installed using jb.
      +
      \ No newline at end of file diff --git a/pr-preview/pr-1029/libraries/install-publish/index.html b/pr-preview/pr-1029/libraries/install-publish/index.html index 7baf88dcd..4f6bc00c8 100644 --- a/pr-preview/pr-1029/libraries/install-publish/index.html +++ b/pr-preview/pr-1029/libraries/install-publish/index.html @@ -1,35 +1,51 @@ -Installing and publishing | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      Writing Jsonnet
      Libraries
      Import pathsInstalling and publishingInstall a libraryPublish to Git(Hub)Overriding
      Advanced features
      References
      Frequently asked questionsKnown issues

      Installing and publishing

      The tool for dealing with libraries is -jsonnet-bundler. It can -install packages from any git source using ssh and GitHub over https.

      Install a library

      To install a library from GitHub, use one of the following:

      $ jb install github.com/<user>/<repo>
      -$ jb install github.com/<user>/<repo>/<subdir>
      -$ jb install github.com/<user>/<repo>/<subdir>@<version>

      Otherwise, use the ssh syntax:

      $ jb install git+ssh://git@mycode.server:<path-to-repo>.git
      -$ jb install git+ssh://git@mycode.server:<path-to-repo>.git/<subdir>
      -$ jb install git+ssh://git@mycode.server:<path-to-repo>.git/<subdir>@<version>

      Note: version may be any git ref, such as commits, tags or branches

      Publish to Git(Hub)

      Publishing is as easy as committing and pushing to a git remote. -GitHub is recommended, as it is most common and supports -faster installing using http archives.

      \ No newline at end of file + Installing and publishing | Grafana Tanka + + Skip to content

      Installing and publishing

      The tool for dealing with libraries is +jsonnet-bundler. It can +install packages from any git source using ssh and GitHub over https.

      +

      Install a library

      +

      To install a library from GitHub, use one of the following:

      +
      Terminal window
      jb install github.com/<user>/<repo>
      jb install github.com/<user>/<repo>/<subdir>
      jb install github.com/<user>/<repo>/<subdir>@<version>
      +

      Otherwise, use the ssh syntax:

      +
      Terminal window
      jb install git+ssh://git@mycode.server:<path-to-repo>.git
      jb install git+ssh://git@mycode.server:<path-to-repo>.git/<subdir>
      jb install git+ssh://git@mycode.server:<path-to-repo>.git/<subdir>@<version>
      + +

      Publish to Git(Hub)

      +

      Publishing is as easy as committing and pushing to a git remote. +GitHub is recommended, as it is most common and supports +faster installing using http archives.

      \ No newline at end of file diff --git a/pr-preview/pr-1029/libraries/overriding/index.html b/pr-preview/pr-1029/libraries/overriding/index.html index e6733b350..d6bdb0e0c 100644 --- a/pr-preview/pr-1029/libraries/overriding/index.html +++ b/pr-preview/pr-1029/libraries/overriding/index.html @@ -1,61 +1,83 @@ -Overriding | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      Writing Jsonnet
      Libraries
      Import pathsInstalling and publishingOverridingShadowingPer environment
      Advanced features
      References
      Frequently asked questionsKnown issues

      Overriding vendor

      The vendor directory is immutable in its nature. You can't and should never -modify any files inside of it, jb will revert those changes on the next run anyway.

      Nevertheless, it can sometimes become required to add changes there, e.g. if an + Overriding vendor | Grafana Tanka + + Skip to content

      Overriding vendor

      The vendor directory is immutable in its nature. You can’t and should never +modify any files inside of it, jb will revert those changes on the next run anyway.

      +

      Nevertheless, it can sometimes become required to add changes there, e.g. if an upstream library contains a bug that needs to be fixed immediately, without -waiting for the upstream maintainer to review it.

      Shadowing

      Because import paths are ranked in Tanka, you can use +waiting for the upstream maintainer to review it.

      +

      Shadowing

      +

      Because import paths are ranked in Tanka, you can use a technique called shadowing: By putting a file with the exact same name in a higher ranked path, Tanka will prefer that file instead of the original in -vendor, which has the lowest possible rank of 1.

      For example, if /vendor/foo/bar.libsonnet contained an error, you could create -/lib/foo/bar.libsonnet and fix it there.

      Tip: Instead of copying the file to the new location and making the edits, -use an absolute import and patching:

      // in /lib/foo/bar.libsonnet:
      -(import "../../vendor/foo/bar.libsonnet") + {
      -  foo+: {
      -    bar: "fixed"
      -  }
      -}

      Important: If the file you override is not the one you directly import, +vendor, which has the lowest possible rank of 1.

      +

      For example, if /vendor/foo/bar.libsonnet contained an error, you could create +/lib/foo/bar.libsonnet and fix it there.

      + +

      Per environment

      Another common case is overriding the entire vendor bundle per environment.

      This is handy, when you for example want to test a change of an upstream -library which is used in many environments (including prod) in a single one, -without affecting all the others.

      For this, Tanka lets you have a separate vendor, jsonnetfile.json and -jsonnetfile.lock.json per environment. To do so:

      Create tkrc.yaml

      Tanka normally uses the jsonnetfile.json from your project to find its root. +actually picked up. In our example, you’d need to copy the main.libsonnet +into lib/abc as well.

      +

      Per environment

      +

      Another common case is overriding the entire vendor bundle per environment.

      +

      This is handy, when you for example want to test a change of an upstream +library which is used in many environments (including prod) in a single one, +without affecting all the others.

      +

      For this, Tanka lets you have a separate vendor, jsonnetfile.json and +jsonnetfile.lock.json per environment. To do so:

      +

      Create tkrc.yaml

      +

      Tanka normally uses the jsonnetfile.json from your project to find its root. As we are going to create another one of that down the tree in the next step, we -need another marker for <rootDir>.

      For that, create an empty file called tkrc.yaml in your project's root, -alongside the original jsonnetfile.json.

      Info: While the name suggests that tkrc.yaml could be used for setting -parameters, this is not the case yet.
      -It might however be repurposed later, in case we need such functionality

      Add a vendor to your environment

      In your environments folder (e.g. /environments/default):

      # init jsonnet bundler (creates jsonnetfile.json)
      -$ jb init
      -
      -# install the updated dependency
      -$ jb install github.com/foo/bar@v2

      Tip: You don't need to install everything into the new vendor/, as -packages not present there can still be imported from the global /vendor.

      \ No newline at end of file +need another marker for <rootDir>.

      +

      For that, create an empty file called tkrc.yaml in your project’s root, +alongside the original jsonnetfile.json.

      + +

      Add a vendor to your environment

      +

      In your environments folder (e.g. /environments/default):

      +
      Terminal window
      # init jsonnet bundler (creates jsonnetfile.json)
      jb init
      +
      # install the updated dependency
      jb install github.com/foo/bar@v2
      +
      \ No newline at end of file diff --git a/pr-preview/pr-1029/manifest.webmanifest b/pr-preview/pr-1029/manifest.webmanifest deleted file mode 100644 index 3a739a544..000000000 --- a/pr-preview/pr-1029/manifest.webmanifest +++ /dev/null @@ -1 +0,0 @@ -{"name":"Grafana Tanka","short_name":"Tanka","start_url":"/pr-preview/pr-1029/","display":"standalone","background_color":"#ffffff","theme_color":"#000000","cacheDigest":"815afb474b603167d9aafa836ab02617","icons":[{"src":"/pr-preview/pr-1029/icons/icon-48x48.png?v=815afb474b603167d9aafa836ab02617","sizes":"48x48","type":"image/png"},{"src":"/pr-preview/pr-1029/icons/icon-72x72.png?v=815afb474b603167d9aafa836ab02617","sizes":"72x72","type":"image/png"},{"src":"/pr-preview/pr-1029/icons/icon-96x96.png?v=815afb474b603167d9aafa836ab02617","sizes":"96x96","type":"image/png"},{"src":"/pr-preview/pr-1029/icons/icon-144x144.png?v=815afb474b603167d9aafa836ab02617","sizes":"144x144","type":"image/png"},{"src":"/pr-preview/pr-1029/icons/icon-192x192.png?v=815afb474b603167d9aafa836ab02617","sizes":"192x192","type":"image/png"},{"src":"/pr-preview/pr-1029/icons/icon-256x256.png?v=815afb474b603167d9aafa836ab02617","sizes":"256x256","type":"image/png"},{"src":"/pr-preview/pr-1029/icons/icon-384x384.png?v=815afb474b603167d9aafa836ab02617","sizes":"384x384","type":"image/png"},{"src":"/pr-preview/pr-1029/icons/icon-512x512.png?v=815afb474b603167d9aafa836ab02617","sizes":"512x512","type":"image/png"}]} \ No newline at end of file diff --git a/pr-preview/pr-1029/namespaces/index.html b/pr-preview/pr-1029/namespaces/index.html index 305749f32..cea56502f 100644 --- a/pr-preview/pr-1029/namespaces/index.html +++ b/pr-preview/pr-1029/namespaces/index.html @@ -1,37 +1,83 @@ -Namespaces | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      Writing Jsonnet
      Libraries
      Advanced features
      References
      Configuration ReferenceDirectory structureEnvironment variablesCommand-line completionDiff strategiesNamespacesDefault namespacesCluster-wide resourcesFormatting
      Frequently asked questionsKnown issues

      Namespaces

      When using Tanka, namespaces are handled slightly different compared to -kubectl, because environments offer more granular control than contexts used -by kubectl.

      Default namespaces

      In the spec.json of each environment, you can set the -spec.namespace field, which is the default namespace. The default namespace is -set for every resource that does not have a namespace set from Jsonnet.

      ScenarioAction
      1.Your resource lacks namespace information (metadata.namespace) unset or ""Tanka sets metadata.namespace to the value of spec.namespace in spec.json
      2.Your resource already has namespace informationTanka does nothing, accepting the explicit namespace

      While we recommend keeping environments limited to a single namespace, there are -legit cases where it's handy to have them span multiple namespaces, for example:

      • Some other piece of software (Operators, etc) require resources to be in a specific namespace
      • A rarely changing "base" environment holding resources deployed for many clusters in the same way
      • etc.

      Cluster-wide resources

      Some resources in Kubernetes are cluster-wide, meaning they don't belong to a single namespace at all.

      Tanka will make an attempt to not add namespaces to known cluster-wide types. -It does this with a short list of types in the source code.

      Tanka cannot feasibly maintain this list for all known custom resource types. In those cases, resources will have namespaces added to their manifests, -and kubectl should happily apply them as non-namespaced resources.

      If this presents a problem for your workflow, you can override this behavior -per-resource, by setting the tanka.dev/namespaced annotation to "false" -(must be of string type):

      thing: clusterRole.new("myClusterRole")
      -       + clusterRole.mixin.metadata.withAnnotationsMixin({ "tanka.dev/namespaced": "false" })
      \ No newline at end of file + Namespaces | Grafana Tanka + + Skip to content

      Namespaces

      When using Tanka, namespaces are handled slightly different compared to +kubectl, because environments offer more granular control than contexts used +by kubectl.

      +

      Default namespaces

      +

      In the spec.json of each environment, you can set the +spec.namespace field, which is the default namespace. The default namespace is +set for every resource that does not have a namespace set from Jsonnet.

      + + + + + + + + + + + + + + + + + + + + +
      ScenarioAction
      1.Your resource lacks namespace information (metadata.namespace) unset or ""Tanka sets metadata.namespace to the value of spec.namespace in spec.json
      2.Your resource already has namespace informationTanka does nothing, accepting the explicit namespace
      +

      While we recommend keeping environments limited to a single namespace, there are +legit cases where it’s handy to have them span multiple namespaces, for example:

      +
        +
      • Some other piece of software (Operators, etc) require resources to be in a specific namespace
      • +
      • A rarely changing “base” environment holding resources deployed for many clusters in the same way
      • +
      • etc.
      • +
      +

      Cluster-wide resources

      +

      Some resources in Kubernetes are cluster-wide, meaning they don’t belong to a single namespace at all.

      +

      Tanka will make an attempt to not add namespaces to known cluster-wide types. +It does this with a short list of types in the source code.

      +

      Tanka cannot feasibly maintain this list for all known custom resource types. In those cases, resources will have namespaces added to their manifests, +and kubectl should happily apply them as non-namespaced resources.

      +

      If this presents a problem for your workflow, you can override this behavior +per-resource, by setting the tanka.dev/namespaced annotation to "false" +(must be of string type):

      +
      thing: clusterRole.new("myClusterRole")
      + clusterRole.mixin.metadata.withAnnotationsMixin({ "tanka.dev/namespaced": "false" })
      \ No newline at end of file diff --git a/pr-preview/pr-1029/offline-plugin-app-shell-fallback/index.html b/pr-preview/pr-1029/offline-plugin-app-shell-fallback/index.html deleted file mode 100644 index 596e0ad9d..000000000 --- a/pr-preview/pr-1029/offline-plugin-app-shell-fallback/index.html +++ /dev/null @@ -1 +0,0 @@ -
      \ No newline at end of file diff --git a/pr-preview/pr-1029/output-filtering/index.html b/pr-preview/pr-1029/output-filtering/index.html index 68641ce62..5e85ea42b 100644 --- a/pr-preview/pr-1029/output-filtering/index.html +++ b/pr-preview/pr-1029/output-filtering/index.html @@ -1,58 +1,74 @@ -Output filtering | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      Writing Jsonnet
      Libraries
      Advanced features
      Garbage collectionHelm supportKustomize supportOutput filteringRegular ExpressionsExcludingExporting as YAMLInline environmentsServer-Side Apply
      References
      Frequently asked questionsKnown issues

      Output Filtering

      When a project becomes bigger over time and includes a lot of Kubernetes + Output filtering | Grafana Tanka + + Skip to content

      Output filtering

      When a project becomes bigger over time and includes a lot of Kubernetes objects, it may become required to operate on only a subset of them (e.g. apply -only a part of an application).

      Tanka helps you with this, by allowing you to limit the used objects on the -command line using the --target flag. Say you are deploying an nginx -instance with a special nginx.conf and want to apply the ConfigMap first:

      # show the ConfigMap
      -$ tk show -t configmap/nginx .
      -
      -# all good? apply!
      -$ tk apply -t configmap/nginx .
      -
      -# and apply everything else:
      -$ tk apply .

      The syntax of the --target / -t flag is --target=<kind>/<name>. If -multiple objects match this pattern, all of them are used.

      The --target / -t flag can be specified multiple times, to work with -multiple objects.

      Regular Expressions

      The argument passed to the --target flag is interpreted as a -RE2 regular expression.

      This allows you to use all sorts of wildcards and other advanced matching -functionality to select Kubernetes objects:

      # show all deployments
      -$ tk show . -t 'deployment/.*'
      -
      -# show all objects named "loki"
      -$ tk show . -t '.*/loki'

      Gotchas

      When using regular expressions, there are some things to watch out for:

      Line Anchors

      Tanka automatically surrounds your regular expression with line anchors:

      ^<your expression>$

      For example, --target 'deployment/.*' becomes ^deployment/.*$.

      Quoting

      Regular expressions may consist of characters that have special meanings in -shell. Always make sure to properly quote your regular expression using single -quotes.

      # shell attempts to match the wildcard itself:
      -zsh-5.4.2$ tk show . -t deployment/.*
      -zsh: no matches found: deployment/.*
      -
      -# properly quoted:
      -zsh-5.4.2$ tk show . -t 'deployment/.*'
      ----
      -apiVersion: apps/v1
      -kind: Deployment
      -# ...

      Excluding

      Sometimes it may be desirably to exclude a single object, instead of including all others.

      To do so, prepend the regular expression with an exclamation mark (!), like so:

      # filter out all Deployments
      -$ tk show . -t '!deployment/.*'
      \ No newline at end of file +only a part of an application).

      +

      Tanka helps you with this, by allowing you to limit the used objects on the +command line using the --target flag. Say you are deploying an nginx +instance with a special nginx.conf and want to apply the ConfigMap first:

      +
      Terminal window
      # show the ConfigMap
      tk show -t configmap/nginx .
      +
      # all good? apply!
      tk apply -t configmap/nginx .
      +
      # and apply everything else:
      tk apply .
      +

      The syntax of the --target / -t flag is --target=<kind>/<name>. If +multiple objects match this pattern, all of them are used.

      +

      The --target / -t flag can be specified multiple times, to work with +multiple objects.

      +

      Regular Expressions

      +

      The argument passed to the --target flag is interpreted as a +RE2 regular expression.

      +

      This allows you to use all sorts of wildcards and other advanced matching +functionality to select Kubernetes objects:

      +
      Terminal window
      # show all deployments
      tk show . -t 'deployment/.*'
      +
      # show all objects named "loki"
      tk show . -t '.*/loki'
      +

      Gotchas

      +

      When using regular expressions, there are some things to watch out for:

      +

      Line Anchors

      +

      Tanka automatically surrounds your regular expression with line anchors:

      +
      ^<your expression>$
      +

      For example, --target 'deployment/.*' becomes ^deployment/.*$.

      +

      Quoting

      +

      Regular expressions may consist of characters that have special meanings in +shell. Always make sure to properly quote your regular expression using single +quotes.

      +
      Terminal window
      # shell attempts to match the wildcard itself:
      zsh-5.4.2$ tk show . -t deployment/.*
      zsh: no matches found: deployment/.*
      +
      # properly quoted:
      zsh-5.4.2$ tk show . -t 'deployment/.*'
      ---
      apiVersion: apps/v1
      kind: Deployment
      # ...
      +

      Excluding

      +

      Sometimes it may be desirably to exclude a single object, instead of including all others.

      +

      To do so, prepend the regular expression with an exclamation mark (!), like so:

      +
      Terminal window
      # filter out all Deployments
      tk show . -t '!deployment/.*'
      \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/app-data.json b/pr-preview/pr-1029/page-data/app-data.json deleted file mode 100644 index 64a6fc83d..000000000 --- a/pr-preview/pr-1029/page-data/app-data.json +++ /dev/null @@ -1 +0,0 @@ -{"webpackCompilationHash":"23db4a44935abc98b3e4"} diff --git a/pr-preview/pr-1029/page-data/completion/page-data.json b/pr-preview/pr-1029/page-data/completion/page-data.json deleted file mode 100644 index 1d3ec11dd..000000000 --- a/pr-preview/pr-1029/page-data/completion/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-completion-md","path":"/completion","result":{"pageContext":{"frontmatter":{"name":"Command-line completion","route":"/completion","menu":"References"},"entry":{"id":"6de512d6fb9b9e2f96e5aba4d1bfe8be","filepath":"docs/completion.md","fullpath":"/home/runner/work/tanka/tanka/docs/docs/completion.md","route":"/completion","slug":"docs-completion","name":"Command-line completion","menu":"References","headings":[{"slug":"command-line-completion","depth":1,"value":"Command-line Completion"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/config/page-data.json b/pr-preview/pr-1029/page-data/config/page-data.json deleted file mode 100644 index 73687d8e8..000000000 --- a/pr-preview/pr-1029/page-data/config/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-config-md","path":"/config","result":{"pageContext":{"frontmatter":{"name":"Configuration Reference","route":"/config","menu":"References"},"entry":{"id":"d39a8a737bc5c13f36e41aa92a0c7602","filepath":"docs/config.md","fullpath":"/home/runner/work/tanka/tanka/docs/docs/config.md","route":"/config","slug":"docs-config","name":"Configuration Reference","menu":"References","headings":[{"slug":"configuration-reference","depth":1,"value":"Configuration Reference"},{"slug":"file-format","depth":2,"value":"File format"},{"slug":"jsonnet-access","depth":2,"value":"Jsonnet access"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/diff-strategy/page-data.json b/pr-preview/pr-1029/page-data/diff-strategy/page-data.json deleted file mode 100644 index dd2fabd81..000000000 --- a/pr-preview/pr-1029/page-data/diff-strategy/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-diff-strategy-md","path":"/diff-strategy","result":{"pageContext":{"frontmatter":{"name":"Diff strategies","route":"/diff-strategy","menu":"References"},"entry":{"id":"85761282c796f73643cd8ecf98912d4e","filepath":"docs/diff-strategy.md","fullpath":"/home/runner/work/tanka/tanka/docs/docs/diff-strategy.md","route":"/diff-strategy","slug":"docs-diff-strategy","name":"Diff strategies","menu":"References","headings":[{"slug":"diff-strategies","depth":1,"value":"Diff Strategies"},{"slug":"native","depth":2,"value":"Native"},{"slug":"server-side-diffs","depth":3,"value":"Server-side diffs"},{"slug":"subset","depth":2,"value":"Subset"},{"slug":"external-diff-utilities","depth":2,"value":"External diff utilities"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/directory-structure/page-data.json b/pr-preview/pr-1029/page-data/directory-structure/page-data.json deleted file mode 100644 index 910b99b68..000000000 --- a/pr-preview/pr-1029/page-data/directory-structure/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-directory-structure-md","path":"/directory-structure","result":{"pageContext":{"frontmatter":{"name":"Directory structure","route":"/directory-structure","menu":"References"},"entry":{"id":"fde470357cdb6126d81b3c115604ce81","filepath":"docs/directory-structure.md","fullpath":"/home/runner/work/tanka/tanka/docs/docs/directory-structure.md","route":"/directory-structure","slug":"docs-directory-structure","name":"Directory structure","menu":"References","headings":[{"slug":"directory-structure","depth":1,"value":"Directory structure"},{"slug":"environments","depth":2,"value":"Environments"},{"slug":"specjson","depth":4,"value":"spec.json"},{"slug":"mainjsonnet","depth":4,"value":"main.jsonnet"},{"slug":"root-and-base","depth":2,"value":"Root and Base"},{"slug":"libraries","depth":2,"value":"Libraries"},{"slug":"jsonnetfilejson-and-the-lock","depth":3,"value":"jsonnetfile.json and the lock"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/env-vars/page-data.json b/pr-preview/pr-1029/page-data/env-vars/page-data.json deleted file mode 100644 index bf9ba881d..000000000 --- a/pr-preview/pr-1029/page-data/env-vars/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-env-vars-md","path":"/env-vars","result":{"pageContext":{"frontmatter":{"name":"Environment variables","route":"/env-vars","menu":"References"},"entry":{"id":"a6bb05fffc38645f7934dba4335cfdfe","filepath":"docs/env-vars.md","fullpath":"/home/runner/work/tanka/tanka/docs/docs/env-vars.md","route":"/env-vars","slug":"docs-env-vars","name":"Environment variables","menu":"References","headings":[{"slug":"environment-variables","depth":1,"value":"Environment Variables"},{"slug":"tanka_jb_path","depth":3,"value":"TANKA_JB_PATH"},{"slug":"tanka_kubectl_path","depth":3,"value":"TANKA_KUBECTL_PATH"},{"slug":"tanka_kubectl_trace","depth":3,"value":"TANKA_KUBECTL_TRACE"},{"slug":"tanka_helm_path","depth":3,"value":"TANKA_HELM_PATH"},{"slug":"tanka_kustomize_path","depth":3,"value":"TANKA_KUSTOMIZE_PATH"},{"slug":"pager","depth":3,"value":"PAGER"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/exporting/page-data.json b/pr-preview/pr-1029/page-data/exporting/page-data.json deleted file mode 100644 index ba3ea186d..000000000 --- a/pr-preview/pr-1029/page-data/exporting/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-exporting-md","path":"/exporting","result":{"pageContext":{"frontmatter":{"name":"Exporting as YAML","route":"/exporting","menu":"Advanced features"},"entry":{"id":"50377a0bc983b1abf5460404e841bde8","filepath":"docs/exporting.md","fullpath":"/home/runner/work/tanka/tanka/docs/docs/exporting.md","route":"/exporting","slug":"docs-exporting","name":"Exporting as YAML","menu":"Advanced features","headings":[{"slug":"exporting-as-yaml","depth":1,"value":"Exporting as YAML"},{"slug":"filenames","depth":2,"value":"Filenames"},{"slug":"multiple-environments","depth":2,"value":"Multiple environments"},{"slug":"performance-features","depth":2,"value":"Performance features"},{"slug":"partial-export-in-a-gitops-context","depth":3,"value":"Partial export (in a GitOps context)"},{"slug":"finding-out-which-environments-to-export","depth":4,"value":"Finding out which environments to export"},{"slug":"using-a-memory-ballast","depth":3,"value":"Using a memory ballast"},{"slug":"caching","depth":3,"value":"Caching"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/faq/page-data.json b/pr-preview/pr-1029/page-data/faq/page-data.json deleted file mode 100644 index 425d69a52..000000000 --- a/pr-preview/pr-1029/page-data/faq/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-faq-md","path":"/faq","result":{"pageContext":{"frontmatter":{"name":"Frequently asked questions","route":"/faq"},"entry":{"id":"956da29f025cba37fca9fe6b80ab5d48","filepath":"docs/faq.md","fullpath":"/home/runner/work/tanka/tanka/docs/docs/faq.md","route":"/faq","slug":"docs-faq","name":"Frequently asked questions","menu":"","headings":[{"slug":"frequently-asked-questions","depth":1,"value":"Frequently asked questions"},{"slug":"what-is-jsonnet","depth":2,"value":"What is Jsonnet?"},{"slug":"how-is-this-different-from-ksonnet","depth":2,"value":"How is this different from ksonnet?"},{"slug":"what-about-kubecfg-","depth":2,"value":"What about kubecfg ?"},{"slug":"why-not-helm","depth":2,"value":"Why not Helm?"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/formatting/page-data.json b/pr-preview/pr-1029/page-data/formatting/page-data.json deleted file mode 100644 index 835dcff10..000000000 --- a/pr-preview/pr-1029/page-data/formatting/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-formatting-md","path":"/formatting","result":{"pageContext":{"frontmatter":{"name":"Formatting","route":"/formatting","menu":"References"},"entry":{"id":"74bd0e6032f9ecc217673404095ee24f","filepath":"docs/formatting.md","fullpath":"/home/runner/work/tanka/tanka/docs/docs/formatting.md","route":"/formatting","slug":"docs-formatting","name":"Formatting","menu":"References","headings":[{"slug":"file-formatting","depth":1,"value":"File Formatting"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/garbage-collection/page-data.json b/pr-preview/pr-1029/page-data/garbage-collection/page-data.json deleted file mode 100644 index 1645ab356..000000000 --- a/pr-preview/pr-1029/page-data/garbage-collection/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-garbage-collection-md","path":"/garbage-collection","result":{"pageContext":{"frontmatter":{"name":"Garbage collection","route":"/garbage-collection","menu":"Advanced features"},"entry":{"id":"5455488e3d9bd51edeec38b0116de6ef","filepath":"docs/garbage-collection.md","fullpath":"/home/runner/work/tanka/tanka/docs/docs/garbage-collection.md","route":"/garbage-collection","slug":"docs-garbage-collection","name":"Garbage collection","menu":"Advanced features","headings":[{"slug":"garbage-collection","depth":1,"value":"Garbage collection"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/helm/page-data.json b/pr-preview/pr-1029/page-data/helm/page-data.json deleted file mode 100644 index badd99e5a..000000000 --- a/pr-preview/pr-1029/page-data/helm/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-helm-mdx","path":"/helm","result":{"pageContext":{"frontmatter":{"name":"Helm support","route":"/helm","menu":"Advanced features"},"entry":{"id":"6c8dc7c350f6722bfc5a9e40bd3ad604","filepath":"docs/helm.mdx","fullpath":"/home/runner/work/tanka/tanka/docs/docs/helm.mdx","route":"/helm","slug":"docs-helm","name":"Helm support","menu":"Advanced features","headings":[{"slug":"helm-support","depth":1,"value":"Helm Support"},{"slug":"consuming-helm-charts-from-jsonnet","depth":2,"value":"Consuming Helm Charts from Jsonnet"},{"slug":"vendoring-helm-charts","depth":2,"value":"Vendoring Helm Charts"},{"slug":"vendor-location","depth":3,"value":"Vendor Location"},{"slug":"charttool","depth":3,"value":"Charttool"},{"slug":"oci-registry-support","depth":4,"value":"OCI Registry Support"},{"slug":"troubleshooting","depth":2,"value":"Troubleshooting"},{"slug":"helm-executable-missing","depth":3,"value":"Helm executable missing"},{"slug":"optscalledfrom-unset","depth":3,"value":"opts.calledFrom unset"},{"slug":"failed-to-find-chart","depth":3,"value":"Failed to find Chart"},{"slug":"two-resources-share-the-same-name","depth":3,"value":"Two resources share the same name"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/index/page-data.json b/pr-preview/pr-1029/page-data/index/page-data.json deleted file mode 100644 index b9f7a003e..000000000 --- a/pr-preview/pr-1029/page-data/index/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-introduction-mdx","path":"/","result":{"pageContext":{"frontmatter":{"route":"/","title":"Introduction","seoTitle":"Grafana Tanka: Define. Reuse. Override.","description":"Grafana Tanka is the robust configuration utility for your Kubernetes cluster, powered by the Jsonnet language.\n"},"entry":{"id":"dcb8d76187bb876677644bdd455b2636","filepath":"docs/introduction.mdx","fullpath":"/home/runner/work/tanka/tanka/docs/docs/introduction.mdx","route":"/","slug":"docs-introduction","name":"Introduction","menu":"","headings":[{"slug":"highlights","depth":2,"value":"Highlights"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/inline-environments/page-data.json b/pr-preview/pr-1029/page-data/inline-environments/page-data.json deleted file mode 100644 index ede9b0a5b..000000000 --- a/pr-preview/pr-1029/page-data/inline-environments/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-inline-environments-mdx","path":"/inline-environments","result":{"pageContext":{"frontmatter":{"name":"Inline environments","route":"/inline-environments","menu":"Advanced features"},"entry":{"id":"216f90a7d459f853a6222ff908e968c9","filepath":"docs/inline-environments.mdx","fullpath":"/home/runner/work/tanka/tanka/docs/docs/inline-environments.mdx","route":"/inline-environments","slug":"docs-inline-environments","name":"Inline environments","menu":"Advanced features","headings":[{"slug":"inline-environments","depth":1,"value":"Inline environments"},{"slug":"converting-to-an-inline-environment","depth":2,"value":"Converting to an inline environment"},{"slug":"use-case-variable-apiserver","depth":2,"value":"Use case: variable apiServer"},{"slug":"use-case-consistent-inline-environments","depth":2,"value":"Use case: consistent inline environments"},{"slug":"caveats","depth":2,"value":"Caveats"},{"slug":"import-tk","depth":3,"value":"import \"tk\""},{"slug":"tk-env","depth":3,"value":"tk env"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/install/page-data.json b/pr-preview/pr-1029/page-data/install/page-data.json deleted file mode 100644 index a24b29407..000000000 --- a/pr-preview/pr-1029/page-data/install/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-installation-mdx","path":"/install","result":{"pageContext":{"frontmatter":{"name":"Installation","route":"/install"},"entry":{"id":"8611d72134d1e4a2e08fb3a7407fbc83","filepath":"docs/installation.mdx","fullpath":"/home/runner/work/tanka/tanka/docs/docs/installation.mdx","route":"/install","slug":"docs-installation","name":"Installation","menu":"","headings":[{"slug":"installation","depth":1,"value":"Installation"},{"slug":"tanka","depth":2,"value":"Tanka"},{"slug":"jsonnet-bundler","depth":2,"value":"Jsonnet Bundler"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/jsonnet/injecting-values/page-data.json b/pr-preview/pr-1029/page-data/jsonnet/injecting-values/page-data.json deleted file mode 100644 index b6ae0f3b7..000000000 --- a/pr-preview/pr-1029/page-data/jsonnet/injecting-values/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-jsonnet-injecting-values-md","path":"/jsonnet/injecting-values","result":{"pageContext":{"frontmatter":{"name":"Injecting Values","route":"/jsonnet/injecting-values","menu":"Writing Jsonnet"},"entry":{"id":"533525eaf42edb5872860399d73d9d16","filepath":"docs/jsonnet/injecting-values.md","fullpath":"/home/runner/work/tanka/tanka/docs/docs/jsonnet/injecting-values.md","route":"/jsonnet/injecting-values","slug":"docs-jsonnet-injecting-values","name":"Injecting Values","menu":"Writing Jsonnet","headings":[{"slug":"injecting-values","depth":1,"value":"Injecting Values"},{"slug":"json-files","depth":2,"value":"JSON files"},{"slug":"external-variables","depth":2,"value":"External variables"},{"slug":"top-level-arguments","depth":2,"value":"Top Level Arguments"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/jsonnet/main/page-data.json b/pr-preview/pr-1029/page-data/jsonnet/main/page-data.json deleted file mode 100644 index 8e5bec1cd..000000000 --- a/pr-preview/pr-1029/page-data/jsonnet/main/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-jsonnet-main-md","path":"/jsonnet/main","result":{"pageContext":{"frontmatter":{"name":"main.jsonnet","route":"/jsonnet/main","menu":"Writing Jsonnet"},"entry":{"id":"cd81b7a477ada5c8e4c40d3ed2e92fa9","filepath":"docs/jsonnet/main.md","fullpath":"/home/runner/work/tanka/tanka/docs/docs/jsonnet/main.md","route":"/jsonnet/main","slug":"docs-jsonnet-main","name":"main.jsonnet","menu":"Writing Jsonnet","headings":[{"slug":"mainjsonnet","depth":1,"value":"main.jsonnet"},{"slug":"deeply-nested-object-recommended","depth":2,"value":"Deeply nested object (Recommended)"},{"slug":"array","depth":2,"value":"Array"},{"slug":"list-type","depth":3,"value":"List type"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/jsonnet/native/page-data.json b/pr-preview/pr-1029/page-data/jsonnet/native/page-data.json deleted file mode 100644 index f7f5e32d6..000000000 --- a/pr-preview/pr-1029/page-data/jsonnet/native/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-jsonnet-native-functions-md","path":"/jsonnet/native","result":{"pageContext":{"frontmatter":{"name":"Native Functions","route":"/jsonnet/native","menu":"Writing Jsonnet"},"entry":{"id":"49fcb61baced806253b6c0c86ce1fa11","filepath":"docs/jsonnet/native-functions.md","fullpath":"/home/runner/work/tanka/tanka/docs/docs/jsonnet/native-functions.md","route":"/jsonnet/native","slug":"docs-jsonnet-native-functions","name":"Native Functions","menu":"Writing Jsonnet","headings":[{"slug":"native-functions","depth":1,"value":"Native Functions"},{"slug":"sha256","depth":2,"value":"sha256"},{"slug":"signature","depth":3,"value":"Signature"},{"slug":"examples","depth":3,"value":"Examples"},{"slug":"parsejson","depth":2,"value":"parseJson"},{"slug":"signature-1","depth":3,"value":"Signature"},{"slug":"examples-1","depth":3,"value":"Examples"},{"slug":"parseyaml","depth":2,"value":"parseYaml"},{"slug":"signature-2","depth":3,"value":"Signature"},{"slug":"examples-2","depth":3,"value":"Examples"},{"slug":"manifestjsonfromjson","depth":2,"value":"manifestJsonFromJson"},{"slug":"signature-3","depth":3,"value":"Signature"},{"slug":"examples-3","depth":3,"value":"Examples"},{"slug":"manifestyamlfromjson","depth":2,"value":"manifestYamlFromJson"},{"slug":"signature-4","depth":3,"value":"Signature"},{"slug":"examples-4","depth":3,"value":"Examples"},{"slug":"escapestringregex","depth":2,"value":"escapeStringRegex"},{"slug":"signature-5","depth":3,"value":"Signature"},{"slug":"examples-5","depth":3,"value":"Examples"},{"slug":"regexmatch","depth":2,"value":"regexMatch"},{"slug":"signature-6","depth":3,"value":"Signature"},{"slug":"examples-6","depth":3,"value":"Examples"},{"slug":"regexsubst","depth":2,"value":"regexSubst"},{"slug":"signature-7","depth":3,"value":"Signature"},{"slug":"examples-7","depth":3,"value":"Examples"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/jsonnet/overview/page-data.json b/pr-preview/pr-1029/page-data/jsonnet/overview/page-data.json deleted file mode 100644 index cb0ec0298..000000000 --- a/pr-preview/pr-1029/page-data/jsonnet/overview/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-jsonnet-overview-md","path":"/jsonnet/overview","result":{"pageContext":{"frontmatter":{"name":"Syntax overview","route":"/jsonnet/overview","menu":"Writing Jsonnet"},"entry":{"id":"d05476a46d649063a34b6f96ddf75372","filepath":"docs/jsonnet/overview.md","fullpath":"/home/runner/work/tanka/tanka/docs/docs/jsonnet/overview.md","route":"/jsonnet/overview","slug":"docs-jsonnet-overview","name":"Syntax overview","menu":"Writing Jsonnet","headings":[{"slug":"language-overview","depth":1,"value":"Language overview"},{"slug":"syntax","depth":2,"value":"Syntax"},{"slug":"abstraction","depth":2,"value":"Abstraction"},{"slug":"imports","depth":3,"value":"Imports"},{"slug":"merging","depth":3,"value":"Merging"},{"slug":"functions","depth":3,"value":"Functions"},{"slug":"standard-library","depth":2,"value":"Standard library"},{"slug":"conditionals","depth":2,"value":"Conditionals"},{"slug":"references","depth":2,"value":"References"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/known-issues/page-data.json b/pr-preview/pr-1029/page-data/known-issues/page-data.json deleted file mode 100644 index 9f22ed481..000000000 --- a/pr-preview/pr-1029/page-data/known-issues/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-known-issues-md","path":"/known-issues","result":{"pageContext":{"frontmatter":{"name":"Known issues","route":"/known-issues"},"entry":{"id":"953f909962c1baf7bbddd4e078770b27","filepath":"docs/known-issues.md","fullpath":"/home/runner/work/tanka/tanka/docs/docs/known-issues.md","route":"/known-issues","slug":"docs-known-issues","name":"Known issues","menu":"","headings":[{"slug":"known-issues","depth":1,"value":"Known Issues"},{"slug":"evaluating-jsonnet-runtime-error-undefined-external-variable-__ksonnetcomponents","depth":3,"value":"Evaluating jsonnet: RUNTIME ERROR: Undefined external variable: _ _ ksonnet/components"},{"slug":"evaluating-jsonnet-runtime-error-couldnt-open-import-klibsonnet-no-match-locally-or-in-the-jsonnet-library-paths","depth":3,"value":"Evaluating jsonnet: RUNTIME ERROR: couldn't open import \"k.libsonnet\": no match locally or in the Jsonnet library paths"},{"slug":"unexpected-diff-if-the-same-port-number-is-used-for-udp-and-tcp","depth":3,"value":"Unexpected diff if the same port number is used for UDP and TCP"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/kustomize/page-data.json b/pr-preview/pr-1029/page-data/kustomize/page-data.json deleted file mode 100644 index c311c7caf..000000000 --- a/pr-preview/pr-1029/page-data/kustomize/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-kustomize-mdx","path":"/kustomize","result":{"pageContext":{"frontmatter":{"name":"Kustomize support","route":"/kustomize","menu":"Advanced features"},"entry":{"id":"497139bf8c3fe8cec5b1b3b45f80f906","filepath":"docs/kustomize.mdx","fullpath":"/home/runner/work/tanka/tanka/docs/docs/kustomize.mdx","route":"/kustomize","slug":"docs-kustomize","name":"Kustomize support","menu":"Advanced features","headings":[{"slug":"kustomize-support","depth":1,"value":"Kustomize Support"},{"slug":"consuming-a-kustomization-from-jsonnet","depth":2,"value":"Consuming a Kustomization from Jsonnet"},{"slug":"working-with-kustomize","depth":2,"value":"Working with Kustomize"},{"slug":"troubleshooting","depth":2,"value":"Troubleshooting"},{"slug":"kustomize-executable-missing","depth":3,"value":"Kustomize executable missing"},{"slug":"optscalledfrom-unset","depth":3,"value":"opts.calledFrom unset"},{"slug":"failed-to-find-kustomization","depth":3,"value":"Failed to find kustomization"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/libraries/import-paths/page-data.json b/pr-preview/pr-1029/page-data/libraries/import-paths/page-data.json deleted file mode 100644 index 829562717..000000000 --- a/pr-preview/pr-1029/page-data/libraries/import-paths/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-libraries-import-paths-md","path":"/libraries/import-paths","result":{"pageContext":{"frontmatter":{"name":"Import paths","route":"/libraries/import-paths","menu":"Libraries"},"entry":{"id":"81914da3a8050b5a5afb4ae46de0df36","filepath":"docs/libraries/import-paths.md","fullpath":"/home/runner/work/tanka/tanka/docs/docs/libraries/import-paths.md","route":"/libraries/import-paths","slug":"docs-libraries-import-paths","name":"Import paths","menu":"Libraries","headings":[{"slug":"import-paths","depth":1,"value":"Import paths"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/libraries/install-publish/page-data.json b/pr-preview/pr-1029/page-data/libraries/install-publish/page-data.json deleted file mode 100644 index c83ede926..000000000 --- a/pr-preview/pr-1029/page-data/libraries/install-publish/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-libraries-install-publish-md","path":"/libraries/install-publish","result":{"pageContext":{"frontmatter":{"name":"Installing and publishing","route":"/libraries/install-publish","menu":"Libraries"},"entry":{"id":"550135e5b63c89a69450dd7504b88e45","filepath":"docs/libraries/install-publish.md","fullpath":"/home/runner/work/tanka/tanka/docs/docs/libraries/install-publish.md","route":"/libraries/install-publish","slug":"docs-libraries-install-publish","name":"Installing and publishing","menu":"Libraries","headings":[{"slug":"installing-and-publishing","depth":1,"value":"Installing and publishing"},{"slug":"install-a-library","depth":2,"value":"Install a library"},{"slug":"publish-to-github","depth":2,"value":"Publish to Git(Hub)"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/libraries/overriding/page-data.json b/pr-preview/pr-1029/page-data/libraries/overriding/page-data.json deleted file mode 100644 index 6c59099c7..000000000 --- a/pr-preview/pr-1029/page-data/libraries/overriding/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-libraries-overriding-md","path":"/libraries/overriding","result":{"pageContext":{"frontmatter":{"name":"Overriding","route":"/libraries/overriding","menu":"Libraries"},"entry":{"id":"aa0a7e9e7b6de98d78addf7cc95d4eb9","filepath":"docs/libraries/overriding.md","fullpath":"/home/runner/work/tanka/tanka/docs/docs/libraries/overriding.md","route":"/libraries/overriding","slug":"docs-libraries-overriding","name":"Overriding","menu":"Libraries","headings":[{"slug":"overriding-vendor","depth":1,"value":"Overriding vendor"},{"slug":"shadowing","depth":2,"value":"Shadowing"},{"slug":"per-environment","depth":2,"value":"Per environment"},{"slug":"create-tkrcyaml","depth":4,"value":"Create tkrc.yaml"},{"slug":"add-a-vendor-to-your-environment","depth":4,"value":"Add a vendor to your environment"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/namespaces/page-data.json b/pr-preview/pr-1029/page-data/namespaces/page-data.json deleted file mode 100644 index 398d0c1d3..000000000 --- a/pr-preview/pr-1029/page-data/namespaces/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-namespaces-md","path":"/namespaces","result":{"pageContext":{"frontmatter":{"name":"Namespaces","route":"/namespaces","menu":"References"},"entry":{"id":"1647de15976991b7fa5e2617866b3d15","filepath":"docs/namespaces.md","fullpath":"/home/runner/work/tanka/tanka/docs/docs/namespaces.md","route":"/namespaces","slug":"docs-namespaces","name":"Namespaces","menu":"References","headings":[{"slug":"namespaces","depth":1,"value":"Namespaces"},{"slug":"default-namespaces","depth":2,"value":"Default namespaces"},{"slug":"cluster-wide-resources","depth":2,"value":"Cluster-wide resources"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/offline-plugin-app-shell-fallback/page-data.json b/pr-preview/pr-1029/page-data/offline-plugin-app-shell-fallback/page-data.json deleted file mode 100644 index 1e99ec4ed..000000000 --- a/pr-preview/pr-1029/page-data/offline-plugin-app-shell-fallback/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---cache-caches-gatsby-plugin-offline-app-shell-js","path":"/offline-plugin-app-shell-fallback/","result":{"pageContext":{}},"staticQueryHashes":["1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/output-filtering/page-data.json b/pr-preview/pr-1029/page-data/output-filtering/page-data.json deleted file mode 100644 index af8410a6a..000000000 --- a/pr-preview/pr-1029/page-data/output-filtering/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-targets-md","path":"/output-filtering","result":{"pageContext":{"frontmatter":{"name":"Output filtering","route":"/output-filtering","menu":"Advanced features"},"entry":{"id":"920c4575b9a73f9aa03517d31b458bf5","filepath":"docs/targets.md","fullpath":"/home/runner/work/tanka/tanka/docs/docs/targets.md","route":"/output-filtering","slug":"docs-targets","name":"Output filtering","menu":"Advanced features","headings":[{"slug":"output-filtering","depth":1,"value":"Output Filtering"},{"slug":"regular-expressions","depth":2,"value":"Regular Expressions"},{"slug":"gotchas","depth":3,"value":"Gotchas"},{"slug":"line-anchors","depth":4,"value":"Line Anchors"},{"slug":"quoting","depth":4,"value":"Quoting"},{"slug":"excluding","depth":2,"value":"Excluding"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/server-side-apply/page-data.json b/pr-preview/pr-1029/page-data/server-side-apply/page-data.json deleted file mode 100644 index 90bead5b9..000000000 --- a/pr-preview/pr-1029/page-data/server-side-apply/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-server-side-apply-md","path":"/server-side-apply","result":{"pageContext":{"frontmatter":{"name":"Server-Side Apply","route":"/server-side-apply","menu":"Advanced features"},"entry":{"id":"068a02b9d5e63587a9127cb04b43d056","filepath":"docs/server-side-apply.md","fullpath":"/home/runner/work/tanka/tanka/docs/docs/server-side-apply.md","route":"/server-side-apply","slug":"docs-server-side-apply","name":"Server-Side Apply","menu":"Advanced features","headings":[{"slug":"server-side-apply","depth":1,"value":"Server-Side Apply"},{"slug":"field-conflicts","depth":2,"value":"Field conflicts"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/sq/d/1635659820.json b/pr-preview/pr-1029/page-data/sq/d/1635659820.json deleted file mode 100644 index 13af1d1b6..000000000 --- a/pr-preview/pr-1029/page-data/sq/d/1635659820.json +++ /dev/null @@ -1 +0,0 @@ -{"data":{"doczDb":{"id":"ace00e2b-9c46-5e24-a19a-5ed242ca9c64","db":"{\"config\":{\"title\":\"Tanka\",\"description\":\"Flexible, reusable and concise configuration for Kubernetes\",\"menu\":[\"Introduction\",\"Installation\",{\"name\":\"Tutorial\",\"menu\":[\"Overview\",\"Refresher on deploying\",\"Using Jsonnet\",\"Parameterizing\",\"Abstraction\",\"Kubernetes library\",\"Environments\"]},{\"name\":\"Writing Jsonnet\",\"menu\":[\"Syntax overview\",\"main.jsonnet\",\"Native Functions\"]},{\"name\":\"Libraries\",\"menu\":[\"Import paths\",\"Installing and publishing\",\"Overriding\"]},{\"name\":\"Advanced features\",\"menu\":[\"Garbage collection\",\"Helm support\",\"Kustomize support\",\"Output filtering\",\"Exporting as YAML\"]},{\"name\":\"References\",\"menu\":[\"Configuration Reference\",\"Directory structure\",\"Environment variables\",\"Command-line completion\",\"Diff strategies\",\"Namespaces\"]},\"Frequently asked questions\",\"Known issues\"],\"repository\":\"https://github.com/grafana/tanka\",\"native\":false,\"themeConfig\":{\"showDarkModeSwitch\":false},\"separator\":\"-\",\"public\":\"/static\",\"ignore\":[\"design/**\",\".vscodeext/**\"],\"editBranch\":\"main\"},\"entries\":[{\"key\":\"docs/completion.md\",\"value\":{\"name\":\"Command-line completion\",\"route\":\"/completion\",\"menu\":\"References\",\"id\":\"6de512d6fb9b9e2f96e5aba4d1bfe8be\",\"filepath\":\"docs/completion.md\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/completion.md\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/completion.md\",\"hidden\":false,\"slug\":\"docs-completion\",\"headings\":[{\"slug\":\"command-line-completion\",\"depth\":1,\"value\":\"Command-line Completion\"}]}},{\"key\":\"docs/config.md\",\"value\":{\"name\":\"Configuration Reference\",\"route\":\"/config\",\"menu\":\"References\",\"id\":\"d39a8a737bc5c13f36e41aa92a0c7602\",\"filepath\":\"docs/config.md\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/config.md\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/config.md\",\"hidden\":false,\"slug\":\"docs-config\",\"headings\":[{\"slug\":\"configuration-reference\",\"depth\":1,\"value\":\"Configuration Reference\"},{\"slug\":\"file-format\",\"depth\":2,\"value\":\"File format\"},{\"slug\":\"jsonnet-access\",\"depth\":2,\"value\":\"Jsonnet access\"}]}},{\"key\":\"docs/diff-strategy.md\",\"value\":{\"name\":\"Diff strategies\",\"route\":\"/diff-strategy\",\"menu\":\"References\",\"id\":\"85761282c796f73643cd8ecf98912d4e\",\"filepath\":\"docs/diff-strategy.md\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/diff-strategy.md\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/diff-strategy.md\",\"hidden\":false,\"slug\":\"docs-diff-strategy\",\"headings\":[{\"slug\":\"diff-strategies\",\"depth\":1,\"value\":\"Diff Strategies\"},{\"slug\":\"native\",\"depth\":2,\"value\":\"Native\"},{\"slug\":\"server-side-diffs\",\"depth\":3,\"value\":\"Server-side diffs\"},{\"slug\":\"subset\",\"depth\":2,\"value\":\"Subset\"},{\"slug\":\"external-diff-utilities\",\"depth\":2,\"value\":\"External diff utilities\"}]}},{\"key\":\"docs/directory-structure.md\",\"value\":{\"name\":\"Directory structure\",\"route\":\"/directory-structure\",\"menu\":\"References\",\"id\":\"fde470357cdb6126d81b3c115604ce81\",\"filepath\":\"docs/directory-structure.md\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/directory-structure.md\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/directory-structure.md\",\"hidden\":false,\"slug\":\"docs-directory-structure\",\"headings\":[{\"slug\":\"directory-structure\",\"depth\":1,\"value\":\"Directory structure\"},{\"slug\":\"environments\",\"depth\":2,\"value\":\"Environments\"},{\"slug\":\"specjson\",\"depth\":4,\"value\":\"spec.json\"},{\"slug\":\"mainjsonnet\",\"depth\":4,\"value\":\"main.jsonnet\"},{\"slug\":\"root-and-base\",\"depth\":2,\"value\":\"Root and Base\"},{\"slug\":\"libraries\",\"depth\":2,\"value\":\"Libraries\"},{\"slug\":\"jsonnetfilejson-and-the-lock\",\"depth\":3,\"value\":\"jsonnetfile.json and the lock\"}]}},{\"key\":\"docs/env-vars.md\",\"value\":{\"name\":\"Environment variables\",\"route\":\"/env-vars\",\"menu\":\"References\",\"id\":\"a6bb05fffc38645f7934dba4335cfdfe\",\"filepath\":\"docs/env-vars.md\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/env-vars.md\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/env-vars.md\",\"hidden\":false,\"slug\":\"docs-env-vars\",\"headings\":[{\"slug\":\"environment-variables\",\"depth\":1,\"value\":\"Environment Variables\"},{\"slug\":\"tanka_jb_path\",\"depth\":3,\"value\":\"TANKA_JB_PATH\"},{\"slug\":\"tanka_kubectl_path\",\"depth\":3,\"value\":\"TANKA_KUBECTL_PATH\"},{\"slug\":\"tanka_kubectl_trace\",\"depth\":3,\"value\":\"TANKA_KUBECTL_TRACE\"},{\"slug\":\"tanka_helm_path\",\"depth\":3,\"value\":\"TANKA_HELM_PATH\"},{\"slug\":\"tanka_kustomize_path\",\"depth\":3,\"value\":\"TANKA_KUSTOMIZE_PATH\"},{\"slug\":\"pager\",\"depth\":3,\"value\":\"PAGER\"}]}},{\"key\":\"docs/exporting.md\",\"value\":{\"name\":\"Exporting as YAML\",\"route\":\"/exporting\",\"menu\":\"Advanced features\",\"id\":\"50377a0bc983b1abf5460404e841bde8\",\"filepath\":\"docs/exporting.md\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/exporting.md\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/exporting.md\",\"hidden\":false,\"slug\":\"docs-exporting\",\"headings\":[{\"slug\":\"exporting-as-yaml\",\"depth\":1,\"value\":\"Exporting as YAML\"},{\"slug\":\"filenames\",\"depth\":2,\"value\":\"Filenames\"},{\"slug\":\"multiple-environments\",\"depth\":2,\"value\":\"Multiple environments\"},{\"slug\":\"performance-features\",\"depth\":2,\"value\":\"Performance features\"},{\"slug\":\"partial-export-in-a-gitops-context\",\"depth\":3,\"value\":\"Partial export (in a GitOps context)\"},{\"slug\":\"finding-out-which-environments-to-export\",\"depth\":4,\"value\":\"Finding out which environments to export\"},{\"slug\":\"using-a-memory-ballast\",\"depth\":3,\"value\":\"Using a memory ballast\"},{\"slug\":\"caching\",\"depth\":3,\"value\":\"Caching\"}]}},{\"key\":\"docs/faq.md\",\"value\":{\"name\":\"Frequently asked questions\",\"route\":\"/faq\",\"id\":\"956da29f025cba37fca9fe6b80ab5d48\",\"filepath\":\"docs/faq.md\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/faq.md\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/faq.md\",\"hidden\":false,\"slug\":\"docs-faq\",\"menu\":\"\",\"headings\":[{\"slug\":\"frequently-asked-questions\",\"depth\":1,\"value\":\"Frequently asked questions\"},{\"slug\":\"what-is-jsonnet\",\"depth\":2,\"value\":\"What is Jsonnet?\"},{\"slug\":\"how-is-this-different-from-ksonnet\",\"depth\":2,\"value\":\"How is this different from ksonnet?\"},{\"slug\":\"what-about-kubecfg-\",\"depth\":2,\"value\":\"What about kubecfg ?\"},{\"slug\":\"why-not-helm\",\"depth\":2,\"value\":\"Why not Helm?\"}]}},{\"key\":\"docs/formatting.md\",\"value\":{\"name\":\"Formatting\",\"route\":\"/formatting\",\"menu\":\"References\",\"id\":\"74bd0e6032f9ecc217673404095ee24f\",\"filepath\":\"docs/formatting.md\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/formatting.md\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/formatting.md\",\"hidden\":false,\"slug\":\"docs-formatting\",\"headings\":[{\"slug\":\"file-formatting\",\"depth\":1,\"value\":\"File Formatting\"}]}},{\"key\":\"docs/garbage-collection.md\",\"value\":{\"name\":\"Garbage collection\",\"route\":\"/garbage-collection\",\"menu\":\"Advanced features\",\"id\":\"5455488e3d9bd51edeec38b0116de6ef\",\"filepath\":\"docs/garbage-collection.md\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/garbage-collection.md\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/garbage-collection.md\",\"hidden\":false,\"slug\":\"docs-garbage-collection\",\"headings\":[{\"slug\":\"garbage-collection\",\"depth\":1,\"value\":\"Garbage collection\"}]}},{\"key\":\"docs/helm.mdx\",\"value\":{\"name\":\"Helm support\",\"route\":\"/helm\",\"menu\":\"Advanced features\",\"id\":\"6c8dc7c350f6722bfc5a9e40bd3ad604\",\"filepath\":\"docs/helm.mdx\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/helm.mdx\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/helm.mdx\",\"hidden\":false,\"slug\":\"docs-helm\",\"headings\":[{\"slug\":\"helm-support\",\"depth\":1,\"value\":\"Helm Support\"},{\"slug\":\"consuming-helm-charts-from-jsonnet\",\"depth\":2,\"value\":\"Consuming Helm Charts from Jsonnet\"},{\"slug\":\"vendoring-helm-charts\",\"depth\":2,\"value\":\"Vendoring Helm Charts\"},{\"slug\":\"vendor-location\",\"depth\":3,\"value\":\"Vendor Location\"},{\"slug\":\"charttool\",\"depth\":3,\"value\":\"Charttool\"},{\"slug\":\"oci-registry-support\",\"depth\":4,\"value\":\"OCI Registry Support\"},{\"slug\":\"troubleshooting\",\"depth\":2,\"value\":\"Troubleshooting\"},{\"slug\":\"helm-executable-missing\",\"depth\":3,\"value\":\"Helm executable missing\"},{\"slug\":\"optscalledfrom-unset\",\"depth\":3,\"value\":\"opts.calledFrom unset\"},{\"slug\":\"failed-to-find-chart\",\"depth\":3,\"value\":\"Failed to find Chart\"},{\"slug\":\"two-resources-share-the-same-name\",\"depth\":3,\"value\":\"Two resources share the same name\"}]}},{\"key\":\"docs/inline-environments.mdx\",\"value\":{\"name\":\"Inline environments\",\"route\":\"/inline-environments\",\"menu\":\"Advanced features\",\"id\":\"216f90a7d459f853a6222ff908e968c9\",\"filepath\":\"docs/inline-environments.mdx\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/inline-environments.mdx\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/inline-environments.mdx\",\"hidden\":false,\"slug\":\"docs-inline-environments\",\"headings\":[{\"slug\":\"inline-environments\",\"depth\":1,\"value\":\"Inline environments\"},{\"slug\":\"converting-to-an-inline-environment\",\"depth\":2,\"value\":\"Converting to an inline environment\"},{\"slug\":\"use-case-variable-apiserver\",\"depth\":2,\"value\":\"Use case: variable apiServer\"},{\"slug\":\"use-case-consistent-inline-environments\",\"depth\":2,\"value\":\"Use case: consistent inline environments\"},{\"slug\":\"caveats\",\"depth\":2,\"value\":\"Caveats\"},{\"slug\":\"import-tk\",\"depth\":3,\"value\":\"import \\\"tk\\\"\"},{\"slug\":\"tk-env\",\"depth\":3,\"value\":\"tk env\"}]}},{\"key\":\"docs/installation.mdx\",\"value\":{\"name\":\"Installation\",\"route\":\"/install\",\"id\":\"8611d72134d1e4a2e08fb3a7407fbc83\",\"filepath\":\"docs/installation.mdx\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/installation.mdx\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/installation.mdx\",\"hidden\":false,\"slug\":\"docs-installation\",\"menu\":\"\",\"headings\":[{\"slug\":\"installation\",\"depth\":1,\"value\":\"Installation\"},{\"slug\":\"tanka\",\"depth\":2,\"value\":\"Tanka\"},{\"slug\":\"jsonnet-bundler\",\"depth\":2,\"value\":\"Jsonnet Bundler\"}]}},{\"key\":\"docs/introduction.mdx\",\"value\":{\"route\":\"/\",\"title\":\"Introduction\",\"seoTitle\":\"Grafana Tanka: Define. Reuse. Override.\",\"description\":\"Grafana Tanka is the robust configuration utility for your Kubernetes cluster, powered by the Jsonnet language.\\n\",\"id\":\"dcb8d76187bb876677644bdd455b2636\",\"filepath\":\"docs/introduction.mdx\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/introduction.mdx\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/introduction.mdx\",\"hidden\":false,\"slug\":\"docs-introduction\",\"name\":\"Introduction\",\"menu\":\"\",\"headings\":[{\"slug\":\"highlights\",\"depth\":2,\"value\":\"Highlights\"}]}},{\"key\":\"docs/known-issues.md\",\"value\":{\"name\":\"Known issues\",\"route\":\"/known-issues\",\"id\":\"953f909962c1baf7bbddd4e078770b27\",\"filepath\":\"docs/known-issues.md\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/known-issues.md\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/known-issues.md\",\"hidden\":false,\"slug\":\"docs-known-issues\",\"menu\":\"\",\"headings\":[{\"slug\":\"known-issues\",\"depth\":1,\"value\":\"Known Issues\"},{\"slug\":\"evaluating-jsonnet-runtime-error-undefined-external-variable-__ksonnetcomponents\",\"depth\":3,\"value\":\"Evaluating jsonnet: RUNTIME ERROR: Undefined external variable: _ _ ksonnet/components\"},{\"slug\":\"evaluating-jsonnet-runtime-error-couldnt-open-import-klibsonnet-no-match-locally-or-in-the-jsonnet-library-paths\",\"depth\":3,\"value\":\"Evaluating jsonnet: RUNTIME ERROR: couldn't open import \\\"k.libsonnet\\\": no match locally or in the Jsonnet library paths\"},{\"slug\":\"unexpected-diff-if-the-same-port-number-is-used-for-udp-and-tcp\",\"depth\":3,\"value\":\"Unexpected diff if the same port number is used for UDP and TCP\"}]}},{\"key\":\"docs/kustomize.mdx\",\"value\":{\"name\":\"Kustomize support\",\"route\":\"/kustomize\",\"menu\":\"Advanced features\",\"id\":\"497139bf8c3fe8cec5b1b3b45f80f906\",\"filepath\":\"docs/kustomize.mdx\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/kustomize.mdx\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/kustomize.mdx\",\"hidden\":false,\"slug\":\"docs-kustomize\",\"headings\":[{\"slug\":\"kustomize-support\",\"depth\":1,\"value\":\"Kustomize Support\"},{\"slug\":\"consuming-a-kustomization-from-jsonnet\",\"depth\":2,\"value\":\"Consuming a Kustomization from Jsonnet\"},{\"slug\":\"working-with-kustomize\",\"depth\":2,\"value\":\"Working with Kustomize\"},{\"slug\":\"troubleshooting\",\"depth\":2,\"value\":\"Troubleshooting\"},{\"slug\":\"kustomize-executable-missing\",\"depth\":3,\"value\":\"Kustomize executable missing\"},{\"slug\":\"optscalledfrom-unset\",\"depth\":3,\"value\":\"opts.calledFrom unset\"},{\"slug\":\"failed-to-find-kustomization\",\"depth\":3,\"value\":\"Failed to find kustomization\"}]}},{\"key\":\"docs/namespaces.md\",\"value\":{\"name\":\"Namespaces\",\"route\":\"/namespaces\",\"menu\":\"References\",\"id\":\"1647de15976991b7fa5e2617866b3d15\",\"filepath\":\"docs/namespaces.md\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/namespaces.md\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/namespaces.md\",\"hidden\":false,\"slug\":\"docs-namespaces\",\"headings\":[{\"slug\":\"namespaces\",\"depth\":1,\"value\":\"Namespaces\"},{\"slug\":\"default-namespaces\",\"depth\":2,\"value\":\"Default namespaces\"},{\"slug\":\"cluster-wide-resources\",\"depth\":2,\"value\":\"Cluster-wide resources\"}]}},{\"key\":\"docs/server-side-apply.md\",\"value\":{\"name\":\"Server-Side Apply\",\"route\":\"/server-side-apply\",\"menu\":\"Advanced features\",\"id\":\"068a02b9d5e63587a9127cb04b43d056\",\"filepath\":\"docs/server-side-apply.md\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/server-side-apply.md\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/server-side-apply.md\",\"hidden\":false,\"slug\":\"docs-server-side-apply\",\"headings\":[{\"slug\":\"server-side-apply\",\"depth\":1,\"value\":\"Server-Side Apply\"},{\"slug\":\"field-conflicts\",\"depth\":2,\"value\":\"Field conflicts\"}]}},{\"key\":\"docs/targets.md\",\"value\":{\"name\":\"Output filtering\",\"route\":\"/output-filtering\",\"menu\":\"Advanced features\",\"id\":\"920c4575b9a73f9aa03517d31b458bf5\",\"filepath\":\"docs/targets.md\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/targets.md\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/targets.md\",\"hidden\":false,\"slug\":\"docs-targets\",\"headings\":[{\"slug\":\"output-filtering\",\"depth\":1,\"value\":\"Output Filtering\"},{\"slug\":\"regular-expressions\",\"depth\":2,\"value\":\"Regular Expressions\"},{\"slug\":\"gotchas\",\"depth\":3,\"value\":\"Gotchas\"},{\"slug\":\"line-anchors\",\"depth\":4,\"value\":\"Line Anchors\"},{\"slug\":\"quoting\",\"depth\":4,\"value\":\"Quoting\"},{\"slug\":\"excluding\",\"depth\":2,\"value\":\"Excluding\"}]}},{\"key\":\"docs/jsonnet/injecting-values.md\",\"value\":{\"name\":\"Injecting Values\",\"route\":\"/jsonnet/injecting-values\",\"menu\":\"Writing Jsonnet\",\"id\":\"533525eaf42edb5872860399d73d9d16\",\"filepath\":\"docs/jsonnet/injecting-values.md\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/jsonnet/injecting-values.md\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/jsonnet/injecting-values.md\",\"hidden\":false,\"slug\":\"docs-jsonnet-injecting-values\",\"headings\":[{\"slug\":\"injecting-values\",\"depth\":1,\"value\":\"Injecting Values\"},{\"slug\":\"json-files\",\"depth\":2,\"value\":\"JSON files\"},{\"slug\":\"external-variables\",\"depth\":2,\"value\":\"External variables\"},{\"slug\":\"top-level-arguments\",\"depth\":2,\"value\":\"Top Level Arguments\"}]}},{\"key\":\"docs/jsonnet/main.md\",\"value\":{\"name\":\"main.jsonnet\",\"route\":\"/jsonnet/main\",\"menu\":\"Writing Jsonnet\",\"id\":\"cd81b7a477ada5c8e4c40d3ed2e92fa9\",\"filepath\":\"docs/jsonnet/main.md\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/jsonnet/main.md\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/jsonnet/main.md\",\"hidden\":false,\"slug\":\"docs-jsonnet-main\",\"headings\":[{\"slug\":\"mainjsonnet\",\"depth\":1,\"value\":\"main.jsonnet\"},{\"slug\":\"deeply-nested-object-recommended\",\"depth\":2,\"value\":\"Deeply nested object (Recommended)\"},{\"slug\":\"array\",\"depth\":2,\"value\":\"Array\"},{\"slug\":\"list-type\",\"depth\":3,\"value\":\"List type\"}]}},{\"key\":\"docs/jsonnet/native-functions.md\",\"value\":{\"name\":\"Native Functions\",\"route\":\"/jsonnet/native\",\"menu\":\"Writing Jsonnet\",\"id\":\"49fcb61baced806253b6c0c86ce1fa11\",\"filepath\":\"docs/jsonnet/native-functions.md\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/jsonnet/native-functions.md\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/jsonnet/native-functions.md\",\"hidden\":false,\"slug\":\"docs-jsonnet-native-functions\",\"headings\":[{\"slug\":\"native-functions\",\"depth\":1,\"value\":\"Native Functions\"},{\"slug\":\"sha256\",\"depth\":2,\"value\":\"sha256\"},{\"slug\":\"signature\",\"depth\":3,\"value\":\"Signature\"},{\"slug\":\"examples\",\"depth\":3,\"value\":\"Examples\"},{\"slug\":\"parsejson\",\"depth\":2,\"value\":\"parseJson\"},{\"slug\":\"signature-1\",\"depth\":3,\"value\":\"Signature\"},{\"slug\":\"examples-1\",\"depth\":3,\"value\":\"Examples\"},{\"slug\":\"parseyaml\",\"depth\":2,\"value\":\"parseYaml\"},{\"slug\":\"signature-2\",\"depth\":3,\"value\":\"Signature\"},{\"slug\":\"examples-2\",\"depth\":3,\"value\":\"Examples\"},{\"slug\":\"manifestjsonfromjson\",\"depth\":2,\"value\":\"manifestJsonFromJson\"},{\"slug\":\"signature-3\",\"depth\":3,\"value\":\"Signature\"},{\"slug\":\"examples-3\",\"depth\":3,\"value\":\"Examples\"},{\"slug\":\"manifestyamlfromjson\",\"depth\":2,\"value\":\"manifestYamlFromJson\"},{\"slug\":\"signature-4\",\"depth\":3,\"value\":\"Signature\"},{\"slug\":\"examples-4\",\"depth\":3,\"value\":\"Examples\"},{\"slug\":\"escapestringregex\",\"depth\":2,\"value\":\"escapeStringRegex\"},{\"slug\":\"signature-5\",\"depth\":3,\"value\":\"Signature\"},{\"slug\":\"examples-5\",\"depth\":3,\"value\":\"Examples\"},{\"slug\":\"regexmatch\",\"depth\":2,\"value\":\"regexMatch\"},{\"slug\":\"signature-6\",\"depth\":3,\"value\":\"Signature\"},{\"slug\":\"examples-6\",\"depth\":3,\"value\":\"Examples\"},{\"slug\":\"regexsubst\",\"depth\":2,\"value\":\"regexSubst\"},{\"slug\":\"signature-7\",\"depth\":3,\"value\":\"Signature\"},{\"slug\":\"examples-7\",\"depth\":3,\"value\":\"Examples\"}]}},{\"key\":\"docs/jsonnet/overview.md\",\"value\":{\"name\":\"Syntax overview\",\"route\":\"/jsonnet/overview\",\"menu\":\"Writing Jsonnet\",\"id\":\"d05476a46d649063a34b6f96ddf75372\",\"filepath\":\"docs/jsonnet/overview.md\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/jsonnet/overview.md\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/jsonnet/overview.md\",\"hidden\":false,\"slug\":\"docs-jsonnet-overview\",\"headings\":[{\"slug\":\"language-overview\",\"depth\":1,\"value\":\"Language overview\"},{\"slug\":\"syntax\",\"depth\":2,\"value\":\"Syntax\"},{\"slug\":\"abstraction\",\"depth\":2,\"value\":\"Abstraction\"},{\"slug\":\"imports\",\"depth\":3,\"value\":\"Imports\"},{\"slug\":\"merging\",\"depth\":3,\"value\":\"Merging\"},{\"slug\":\"functions\",\"depth\":3,\"value\":\"Functions\"},{\"slug\":\"standard-library\",\"depth\":2,\"value\":\"Standard library\"},{\"slug\":\"conditionals\",\"depth\":2,\"value\":\"Conditionals\"},{\"slug\":\"references\",\"depth\":2,\"value\":\"References\"}]}},{\"key\":\"docs/libraries/import-paths.md\",\"value\":{\"name\":\"Import paths\",\"route\":\"/libraries/import-paths\",\"menu\":\"Libraries\",\"id\":\"81914da3a8050b5a5afb4ae46de0df36\",\"filepath\":\"docs/libraries/import-paths.md\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/libraries/import-paths.md\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/libraries/import-paths.md\",\"hidden\":false,\"slug\":\"docs-libraries-import-paths\",\"headings\":[{\"slug\":\"import-paths\",\"depth\":1,\"value\":\"Import paths\"}]}},{\"key\":\"docs/libraries/install-publish.md\",\"value\":{\"name\":\"Installing and publishing\",\"route\":\"/libraries/install-publish\",\"menu\":\"Libraries\",\"id\":\"550135e5b63c89a69450dd7504b88e45\",\"filepath\":\"docs/libraries/install-publish.md\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/libraries/install-publish.md\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/libraries/install-publish.md\",\"hidden\":false,\"slug\":\"docs-libraries-install-publish\",\"headings\":[{\"slug\":\"installing-and-publishing\",\"depth\":1,\"value\":\"Installing and publishing\"},{\"slug\":\"install-a-library\",\"depth\":2,\"value\":\"Install a library\"},{\"slug\":\"publish-to-github\",\"depth\":2,\"value\":\"Publish to Git(Hub)\"}]}},{\"key\":\"docs/libraries/overriding.md\",\"value\":{\"name\":\"Overriding\",\"route\":\"/libraries/overriding\",\"menu\":\"Libraries\",\"id\":\"aa0a7e9e7b6de98d78addf7cc95d4eb9\",\"filepath\":\"docs/libraries/overriding.md\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/libraries/overriding.md\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/libraries/overriding.md\",\"hidden\":false,\"slug\":\"docs-libraries-overriding\",\"headings\":[{\"slug\":\"overriding-vendor\",\"depth\":1,\"value\":\"Overriding vendor\"},{\"slug\":\"shadowing\",\"depth\":2,\"value\":\"Shadowing\"},{\"slug\":\"per-environment\",\"depth\":2,\"value\":\"Per environment\"},{\"slug\":\"create-tkrcyaml\",\"depth\":4,\"value\":\"Create tkrc.yaml\"},{\"slug\":\"add-a-vendor-to-your-environment\",\"depth\":4,\"value\":\"Add a vendor to your environment\"}]}},{\"key\":\"docs/tutorial/abstraction.mdx\",\"value\":{\"name\":\"Abstraction\",\"route\":\"/tutorial/abstraction\",\"menu\":\"Tutorial\",\"id\":\"f945b6e9db6df8b5bf73f014bd7c951a\",\"filepath\":\"docs/tutorial/abstraction.mdx\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/tutorial/abstraction.mdx\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/tutorial/abstraction.mdx\",\"hidden\":false,\"slug\":\"docs-tutorial-abstraction\",\"headings\":[{\"slug\":\"abstraction\",\"depth\":1,\"value\":\"Abstraction\"},{\"slug\":\"splitting-it-up\",\"depth\":2,\"value\":\"Splitting it up\"},{\"slug\":\"environmentsdefaultgrafanajsonnet\",\"depth\":5,\"value\":\"/environments/default/grafana.jsonnet\"},{\"slug\":\"environmentsdefaultmainjsonnet\",\"depth\":5,\"value\":\"/environments/default/main.jsonnet\"},{\"slug\":\"helper-utilities\",\"depth\":2,\"value\":\"Helper utilities\"},{\"slug\":\"a-deployment-constructor\",\"depth\":3,\"value\":\"A Deployment constructor\"}]}},{\"key\":\"docs/tutorial/environments.mdx\",\"value\":{\"name\":\"Environments\",\"route\":\"/tutorial/environments\",\"menu\":\"Tutorial\",\"id\":\"183b823a0db649ad71660d84cdf474a8\",\"filepath\":\"docs/tutorial/environments.mdx\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/tutorial/environments.mdx\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/tutorial/environments.mdx\",\"hidden\":false,\"slug\":\"docs-tutorial-environments\",\"headings\":[{\"slug\":\"environments\",\"depth\":1,\"value\":\"Environments\"},{\"slug\":\"creating-a-library\",\"depth\":2,\"value\":\"Creating a library\"},{\"slug\":\"configlibsonnet\",\"depth\":5,\"value\":\"config.libsonnet\"},{\"slug\":\"prom-grafanalibsonnet\",\"depth\":5,\"value\":\"prom-grafana.libsonnet\"},{\"slug\":\"dev-and-prod\",\"depth\":2,\"value\":\"Dev and Prod\"},{\"slug\":\"patching\",\"depth\":2,\"value\":\"Patching\"}]}},{\"key\":\"docs/tutorial/jsonnet.mdx\",\"value\":{\"name\":\"Using Jsonnet\",\"menu\":\"Tutorial\",\"route\":\"/tutorial/jsonnet\",\"id\":\"342a1d7c3c6486c175046ba0b51b6677\",\"filepath\":\"docs/tutorial/jsonnet.mdx\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/tutorial/jsonnet.mdx\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/tutorial/jsonnet.mdx\",\"hidden\":false,\"slug\":\"docs-tutorial-jsonnet\",\"headings\":[{\"slug\":\"using-jsonnet\",\"depth\":1,\"value\":\"Using Jsonnet\"},{\"slug\":\"creating-a-new-project\",\"depth\":2,\"value\":\"Creating a new project\"},{\"slug\":\"environments\",\"depth\":2,\"value\":\"Environments\"},{\"slug\":\"defining-resources\",\"depth\":2,\"value\":\"Defining Resources\"},{\"slug\":\"environmentsdefaultmainjsonnet\",\"depth\":5,\"value\":\"environments/default/main.jsonnet:\"},{\"slug\":\"taking-a-look-at-the-generated-resources\",\"depth\":2,\"value\":\"Taking a look at the generated resources\"},{\"slug\":\"connecting-to-the-cluster\",\"depth\":2,\"value\":\"Connecting to the cluster\"},{\"slug\":\"verifying-the-changes\",\"depth\":2,\"value\":\"Verifying the changes\"},{\"slug\":\"applying-to-the-cluster\",\"depth\":2,\"value\":\"Applying to the cluster\"},{\"slug\":\"checking-it-worked\",\"depth\":2,\"value\":\"Checking it worked\"}]}},{\"key\":\"docs/tutorial/k-lib.mdx\",\"value\":{\"name\":\"Kubernetes library\",\"route\":\"/tutorial/k-lib\",\"menu\":\"Tutorial\",\"id\":\"7dfc0f60f19fc82a84462ae800f1b6d9\",\"filepath\":\"docs/tutorial/k-lib.mdx\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/tutorial/k-lib.mdx\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/tutorial/k-lib.mdx\",\"hidden\":false,\"slug\":\"docs-tutorial-k-lib\",\"headings\":[{\"slug\":\"kubernetes-library\",\"depth\":1,\"value\":\"Kubernetes library\"},{\"slug\":\"k8s-libsonnet\",\"depth\":2,\"value\":\"k8s-libsonnet\"},{\"slug\":\"installation\",\"depth\":2,\"value\":\"Installation\"},{\"slug\":\"aliasing\",\"depth\":4,\"value\":\"Aliasing\"},{\"slug\":\"using-it\",\"depth\":2,\"value\":\"Using it\"},{\"slug\":\"full-example\",\"depth\":2,\"value\":\"Full example\"}]}},{\"key\":\"docs/tutorial/overview.mdx\",\"value\":{\"title\":\"Overview\",\"menu\":\"Tutorial\",\"route\":\"/tutorial/overview\",\"id\":\"48976e3ee25e3aebf403b62369ea6f1e\",\"filepath\":\"docs/tutorial/overview.mdx\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/tutorial/overview.mdx\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/tutorial/overview.mdx\",\"hidden\":false,\"slug\":\"docs-tutorial-overview\",\"name\":\"Overview\",\"headings\":[{\"slug\":\"tutorial\",\"depth\":1,\"value\":\"Tutorial\"},{\"slug\":\"learning-how-to-use-tanka\",\"depth\":2,\"value\":\"Learning how to use Tanka\"},{\"slug\":\"resources\",\"depth\":2,\"value\":\"Resources\"}]}},{\"key\":\"docs/tutorial/parameterizing.mdx\",\"value\":{\"name\":\"Parameterizing\",\"menu\":\"Tutorial\",\"route\":\"/tutorial/parameters\",\"id\":\"09109c64435da397cca6874b3045d45b\",\"filepath\":\"docs/tutorial/parameterizing.mdx\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/tutorial/parameterizing.mdx\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/tutorial/parameterizing.mdx\",\"hidden\":false,\"slug\":\"docs-tutorial-parameterizing\",\"headings\":[{\"slug\":\"parameterizing\",\"depth\":1,\"value\":\"Parameterizing\"},{\"slug\":\"config-object\",\"depth\":2,\"value\":\"Config object\"}]}},{\"key\":\"docs/tutorial/refresher.mdx\",\"value\":{\"name\":\"Refresher on deploying\",\"menu\":\"Tutorial\",\"route\":\"/tutorial/refresher\",\"id\":\"d1a87cdb27dd635484b3c716f2fdf09f\",\"filepath\":\"docs/tutorial/refresher.mdx\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/docs/tutorial/refresher.mdx\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/docs/tutorial/refresher.mdx\",\"hidden\":false,\"slug\":\"docs-tutorial-refresher\",\"headings\":[{\"slug\":\"refresher-on-deploying\",\"depth\":1,\"value\":\"Refresher on deploying\"},{\"slug\":\"deploying-to-kubernetes-using-kubectl\",\"depth\":2,\"value\":\"Deploying to Kubernetes using kubectl\"},{\"slug\":\"writing-the-yaml\",\"depth\":2,\"value\":\"Writing the yaml\"},{\"slug\":\"grafanayaml\",\"depth\":5,\"value\":\"grafana.yaml:\"},{\"slug\":\"prometheusyaml\",\"depth\":5,\"value\":\"prometheus.yaml\"},{\"slug\":\"deploying-to-the-cluster\",\"depth\":2,\"value\":\"Deploying to the cluster\"},{\"slug\":\"checking-it-worked\",\"depth\":2,\"value\":\"Checking it worked\"},{\"slug\":\"cleaning-up\",\"depth\":2,\"value\":\"Cleaning up\"}]}},{\"key\":\"src/components/home/snippet.mdx\",\"value\":{\"hidden\":true,\"id\":\"777165a59036418d2cdac41483f38a79\",\"filepath\":\"src/components/home/snippet.mdx\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/src/components/home/snippet.mdx\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/src/components/home/snippet.mdx\",\"slug\":\"src-components-home-snippet\",\"route\":\"/src-components-home-snippet\",\"name\":\"Snippet\",\"menu\":\"\",\"headings\":[]}},{\"key\":\"src/components/install/jb/arch.mdx\",\"value\":{\"hidden\":true,\"id\":\"5679512da61c5afb01fe241a85f25bdb\",\"filepath\":\"src/components/install/jb/arch.mdx\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/src/components/install/jb/arch.mdx\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/src/components/install/jb/arch.mdx\",\"slug\":\"src-components-install-jb-arch\",\"route\":\"/src-components-install-jb-arch\",\"name\":\"Arch\",\"menu\":\"\",\"headings\":[]}},{\"key\":\"src/components/install/jb/binary.mdx\",\"value\":{\"hidden\":true,\"id\":\"8ff53c664044aef26208275b8dfbd238\",\"filepath\":\"src/components/install/jb/binary.mdx\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/src/components/install/jb/binary.mdx\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/src/components/install/jb/binary.mdx\",\"slug\":\"src-components-install-jb-binary\",\"route\":\"/src-components-install-jb-binary\",\"name\":\"Binary\",\"menu\":\"\",\"headings\":[{\"slug\":\"linux-macos\",\"depth\":4,\"value\":\"Linux, macOS\"}]}},{\"key\":\"src/components/install/jb/go.mdx\",\"value\":{\"hidden\":true,\"id\":\"513737da6524a0fc3ed685b6d634d154\",\"filepath\":\"src/components/install/jb/go.mdx\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/src/components/install/jb/go.mdx\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/src/components/install/jb/go.mdx\",\"slug\":\"src-components-install-jb-go\",\"route\":\"/src-components-install-jb-go\",\"name\":\"Go\",\"menu\":\"\",\"headings\":[]}},{\"key\":\"src/components/install/jb/osx.mdx\",\"value\":{\"hidden\":true,\"id\":\"898f15c0135306ce23c11043d1d910df\",\"filepath\":\"src/components/install/jb/osx.mdx\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/src/components/install/jb/osx.mdx\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/src/components/install/jb/osx.mdx\",\"slug\":\"src-components-install-jb-osx\",\"route\":\"/src-components-install-jb-osx\",\"name\":\"Osx\",\"menu\":\"\",\"headings\":[]}},{\"key\":\"src/components/install/tk/arch.mdx\",\"value\":{\"hidden\":true,\"id\":\"685c482266b1ae833325211315e94805\",\"filepath\":\"src/components/install/tk/arch.mdx\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/src/components/install/tk/arch.mdx\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/src/components/install/tk/arch.mdx\",\"slug\":\"src-components-install-tk-arch\",\"route\":\"/src-components-install-tk-arch\",\"name\":\"Arch\",\"menu\":\"\",\"headings\":[]}},{\"key\":\"src/components/install/tk/binary.mdx\",\"value\":{\"hidden\":true,\"id\":\"e3ed44dc189ecff27b2033fdd34fba8a\",\"filepath\":\"src/components/install/tk/binary.mdx\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/src/components/install/tk/binary.mdx\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/src/components/install/tk/binary.mdx\",\"slug\":\"src-components-install-tk-binary\",\"route\":\"/src-components-install-tk-binary\",\"name\":\"Binary\",\"menu\":\"\",\"headings\":[{\"slug\":\"linux-macos\",\"depth\":4,\"value\":\"Linux, macOS\"}]}},{\"key\":\"src/components/install/tk/go.mdx\",\"value\":{\"hidden\":true,\"id\":\"98a2ce5e43d549994b247eaba759ca7e\",\"filepath\":\"src/components/install/tk/go.mdx\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/src/components/install/tk/go.mdx\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/src/components/install/tk/go.mdx\",\"slug\":\"src-components-install-tk-go\",\"route\":\"/src-components-install-tk-go\",\"name\":\"Go\",\"menu\":\"\",\"headings\":[]}},{\"key\":\"src/components/install/tk/osx.mdx\",\"value\":{\"hidden\":true,\"id\":\"e144ba9ebf597c9b41db8d6c3d704eb5\",\"filepath\":\"src/components/install/tk/osx.mdx\",\"fullpath\":\"/home/runner/work/tanka/tanka/docs/src/components/install/tk/osx.mdx\",\"link\":\"https://github.com/grafana/tanka/edit/main/docs/src/components/install/tk/osx.mdx\",\"slug\":\"src-components-install-tk-osx\",\"route\":\"/src-components-install-tk-osx\",\"name\":\"Osx\",\"menu\":\"\",\"headings\":[]}}],\"props\":[{\"key\":\"docs/tutorial/TutorialButtons.js\",\"value\":[{\"description\":\"\",\"methods\":[]}]},{\"key\":\"src/components/home/index.js\",\"value\":[{\"description\":\"\",\"displayName\":\"Catcher\",\"methods\":[],\"actualName\":\"Catcher\"}]},{\"key\":\"src/components/install/index.js\",\"value\":[{\"description\":\"\",\"displayName\":\"PlatformInstall\",\"methods\":[],\"actualName\":\"PlatformInstall\"}]},{\"key\":\"src/gatsby-theme-docz/components/Logo/index.js\",\"value\":[{\"description\":\"\",\"displayName\":\"Logo\",\"methods\":[],\"actualName\":\"Logo\"}]}]}"}}} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/src-components-home-snippet/page-data.json b/pr-preview/pr-1029/page-data/src-components-home-snippet/page-data.json deleted file mode 100644 index c27fded7b..000000000 --- a/pr-preview/pr-1029/page-data/src-components-home-snippet/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---src-components-home-snippet-mdx","path":"/src-components-home-snippet","result":{"pageContext":{"frontmatter":{"hidden":true},"entry":{"id":"777165a59036418d2cdac41483f38a79","filepath":"src/components/home/snippet.mdx","fullpath":"/home/runner/work/tanka/tanka/docs/src/components/home/snippet.mdx","route":"/src-components-home-snippet","slug":"src-components-home-snippet","name":"Snippet","menu":"","headings":[]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/src-components-install-jb-arch/page-data.json b/pr-preview/pr-1029/page-data/src-components-install-jb-arch/page-data.json deleted file mode 100644 index 8c6d0f0de..000000000 --- a/pr-preview/pr-1029/page-data/src-components-install-jb-arch/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---src-components-install-jb-arch-mdx","path":"/src-components-install-jb-arch","result":{"pageContext":{"frontmatter":{"hidden":true},"entry":{"id":"5679512da61c5afb01fe241a85f25bdb","filepath":"src/components/install/jb/arch.mdx","fullpath":"/home/runner/work/tanka/tanka/docs/src/components/install/jb/arch.mdx","route":"/src-components-install-jb-arch","slug":"src-components-install-jb-arch","name":"Arch","menu":"","headings":[]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/src-components-install-jb-binary/page-data.json b/pr-preview/pr-1029/page-data/src-components-install-jb-binary/page-data.json deleted file mode 100644 index 51c43cf82..000000000 --- a/pr-preview/pr-1029/page-data/src-components-install-jb-binary/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---src-components-install-jb-binary-mdx","path":"/src-components-install-jb-binary","result":{"pageContext":{"frontmatter":{"hidden":true},"entry":{"id":"8ff53c664044aef26208275b8dfbd238","filepath":"src/components/install/jb/binary.mdx","fullpath":"/home/runner/work/tanka/tanka/docs/src/components/install/jb/binary.mdx","route":"/src-components-install-jb-binary","slug":"src-components-install-jb-binary","name":"Binary","menu":"","headings":[{"slug":"linux-macos","depth":4,"value":"Linux, macOS"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/src-components-install-jb-go/page-data.json b/pr-preview/pr-1029/page-data/src-components-install-jb-go/page-data.json deleted file mode 100644 index 4a365a5c4..000000000 --- a/pr-preview/pr-1029/page-data/src-components-install-jb-go/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---src-components-install-jb-go-mdx","path":"/src-components-install-jb-go","result":{"pageContext":{"frontmatter":{"hidden":true},"entry":{"id":"513737da6524a0fc3ed685b6d634d154","filepath":"src/components/install/jb/go.mdx","fullpath":"/home/runner/work/tanka/tanka/docs/src/components/install/jb/go.mdx","route":"/src-components-install-jb-go","slug":"src-components-install-jb-go","name":"Go","menu":"","headings":[]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/src-components-install-jb-osx/page-data.json b/pr-preview/pr-1029/page-data/src-components-install-jb-osx/page-data.json deleted file mode 100644 index 1bcdbc4ca..000000000 --- a/pr-preview/pr-1029/page-data/src-components-install-jb-osx/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---src-components-install-jb-osx-mdx","path":"/src-components-install-jb-osx","result":{"pageContext":{"frontmatter":{"hidden":true},"entry":{"id":"898f15c0135306ce23c11043d1d910df","filepath":"src/components/install/jb/osx.mdx","fullpath":"/home/runner/work/tanka/tanka/docs/src/components/install/jb/osx.mdx","route":"/src-components-install-jb-osx","slug":"src-components-install-jb-osx","name":"Osx","menu":"","headings":[]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/src-components-install-tk-arch/page-data.json b/pr-preview/pr-1029/page-data/src-components-install-tk-arch/page-data.json deleted file mode 100644 index 92069f192..000000000 --- a/pr-preview/pr-1029/page-data/src-components-install-tk-arch/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---src-components-install-tk-arch-mdx","path":"/src-components-install-tk-arch","result":{"pageContext":{"frontmatter":{"hidden":true},"entry":{"id":"685c482266b1ae833325211315e94805","filepath":"src/components/install/tk/arch.mdx","fullpath":"/home/runner/work/tanka/tanka/docs/src/components/install/tk/arch.mdx","route":"/src-components-install-tk-arch","slug":"src-components-install-tk-arch","name":"Arch","menu":"","headings":[]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/src-components-install-tk-binary/page-data.json b/pr-preview/pr-1029/page-data/src-components-install-tk-binary/page-data.json deleted file mode 100644 index 21298c357..000000000 --- a/pr-preview/pr-1029/page-data/src-components-install-tk-binary/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---src-components-install-tk-binary-mdx","path":"/src-components-install-tk-binary","result":{"pageContext":{"frontmatter":{"hidden":true},"entry":{"id":"e3ed44dc189ecff27b2033fdd34fba8a","filepath":"src/components/install/tk/binary.mdx","fullpath":"/home/runner/work/tanka/tanka/docs/src/components/install/tk/binary.mdx","route":"/src-components-install-tk-binary","slug":"src-components-install-tk-binary","name":"Binary","menu":"","headings":[{"slug":"linux-macos","depth":4,"value":"Linux, macOS"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/src-components-install-tk-go/page-data.json b/pr-preview/pr-1029/page-data/src-components-install-tk-go/page-data.json deleted file mode 100644 index c350a6143..000000000 --- a/pr-preview/pr-1029/page-data/src-components-install-tk-go/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---src-components-install-tk-go-mdx","path":"/src-components-install-tk-go","result":{"pageContext":{"frontmatter":{"hidden":true},"entry":{"id":"98a2ce5e43d549994b247eaba759ca7e","filepath":"src/components/install/tk/go.mdx","fullpath":"/home/runner/work/tanka/tanka/docs/src/components/install/tk/go.mdx","route":"/src-components-install-tk-go","slug":"src-components-install-tk-go","name":"Go","menu":"","headings":[]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/src-components-install-tk-osx/page-data.json b/pr-preview/pr-1029/page-data/src-components-install-tk-osx/page-data.json deleted file mode 100644 index 502c1c9b4..000000000 --- a/pr-preview/pr-1029/page-data/src-components-install-tk-osx/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---src-components-install-tk-osx-mdx","path":"/src-components-install-tk-osx","result":{"pageContext":{"frontmatter":{"hidden":true},"entry":{"id":"e144ba9ebf597c9b41db8d6c3d704eb5","filepath":"src/components/install/tk/osx.mdx","fullpath":"/home/runner/work/tanka/tanka/docs/src/components/install/tk/osx.mdx","route":"/src-components-install-tk-osx","slug":"src-components-install-tk-osx","name":"Osx","menu":"","headings":[]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/tutorial/abstraction/page-data.json b/pr-preview/pr-1029/page-data/tutorial/abstraction/page-data.json deleted file mode 100644 index bea7144c1..000000000 --- a/pr-preview/pr-1029/page-data/tutorial/abstraction/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-tutorial-abstraction-mdx","path":"/tutorial/abstraction","result":{"pageContext":{"frontmatter":{"name":"Abstraction","route":"/tutorial/abstraction","menu":"Tutorial"},"entry":{"id":"f945b6e9db6df8b5bf73f014bd7c951a","filepath":"docs/tutorial/abstraction.mdx","fullpath":"/home/runner/work/tanka/tanka/docs/docs/tutorial/abstraction.mdx","route":"/tutorial/abstraction","slug":"docs-tutorial-abstraction","name":"Abstraction","menu":"Tutorial","headings":[{"slug":"abstraction","depth":1,"value":"Abstraction"},{"slug":"splitting-it-up","depth":2,"value":"Splitting it up"},{"slug":"environmentsdefaultgrafanajsonnet","depth":5,"value":"/environments/default/grafana.jsonnet"},{"slug":"environmentsdefaultmainjsonnet","depth":5,"value":"/environments/default/main.jsonnet"},{"slug":"helper-utilities","depth":2,"value":"Helper utilities"},{"slug":"a-deployment-constructor","depth":3,"value":"A Deployment constructor"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/tutorial/environments/page-data.json b/pr-preview/pr-1029/page-data/tutorial/environments/page-data.json deleted file mode 100644 index 865b953d2..000000000 --- a/pr-preview/pr-1029/page-data/tutorial/environments/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-tutorial-environments-mdx","path":"/tutorial/environments","result":{"pageContext":{"frontmatter":{"name":"Environments","route":"/tutorial/environments","menu":"Tutorial"},"entry":{"id":"183b823a0db649ad71660d84cdf474a8","filepath":"docs/tutorial/environments.mdx","fullpath":"/home/runner/work/tanka/tanka/docs/docs/tutorial/environments.mdx","route":"/tutorial/environments","slug":"docs-tutorial-environments","name":"Environments","menu":"Tutorial","headings":[{"slug":"environments","depth":1,"value":"Environments"},{"slug":"creating-a-library","depth":2,"value":"Creating a library"},{"slug":"configlibsonnet","depth":5,"value":"config.libsonnet"},{"slug":"prom-grafanalibsonnet","depth":5,"value":"prom-grafana.libsonnet"},{"slug":"dev-and-prod","depth":2,"value":"Dev and Prod"},{"slug":"patching","depth":2,"value":"Patching"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/tutorial/jsonnet/page-data.json b/pr-preview/pr-1029/page-data/tutorial/jsonnet/page-data.json deleted file mode 100644 index 5a9543039..000000000 --- a/pr-preview/pr-1029/page-data/tutorial/jsonnet/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-tutorial-jsonnet-mdx","path":"/tutorial/jsonnet","result":{"pageContext":{"frontmatter":{"name":"Using Jsonnet","menu":"Tutorial","route":"/tutorial/jsonnet"},"entry":{"id":"342a1d7c3c6486c175046ba0b51b6677","filepath":"docs/tutorial/jsonnet.mdx","fullpath":"/home/runner/work/tanka/tanka/docs/docs/tutorial/jsonnet.mdx","route":"/tutorial/jsonnet","slug":"docs-tutorial-jsonnet","name":"Using Jsonnet","menu":"Tutorial","headings":[{"slug":"using-jsonnet","depth":1,"value":"Using Jsonnet"},{"slug":"creating-a-new-project","depth":2,"value":"Creating a new project"},{"slug":"environments","depth":2,"value":"Environments"},{"slug":"defining-resources","depth":2,"value":"Defining Resources"},{"slug":"environmentsdefaultmainjsonnet","depth":5,"value":"environments/default/main.jsonnet:"},{"slug":"taking-a-look-at-the-generated-resources","depth":2,"value":"Taking a look at the generated resources"},{"slug":"connecting-to-the-cluster","depth":2,"value":"Connecting to the cluster"},{"slug":"verifying-the-changes","depth":2,"value":"Verifying the changes"},{"slug":"applying-to-the-cluster","depth":2,"value":"Applying to the cluster"},{"slug":"checking-it-worked","depth":2,"value":"Checking it worked"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/tutorial/k-lib/page-data.json b/pr-preview/pr-1029/page-data/tutorial/k-lib/page-data.json deleted file mode 100644 index 8ccb35cde..000000000 --- a/pr-preview/pr-1029/page-data/tutorial/k-lib/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-tutorial-k-lib-mdx","path":"/tutorial/k-lib","result":{"pageContext":{"frontmatter":{"name":"Kubernetes library","route":"/tutorial/k-lib","menu":"Tutorial"},"entry":{"id":"7dfc0f60f19fc82a84462ae800f1b6d9","filepath":"docs/tutorial/k-lib.mdx","fullpath":"/home/runner/work/tanka/tanka/docs/docs/tutorial/k-lib.mdx","route":"/tutorial/k-lib","slug":"docs-tutorial-k-lib","name":"Kubernetes library","menu":"Tutorial","headings":[{"slug":"kubernetes-library","depth":1,"value":"Kubernetes library"},{"slug":"k8s-libsonnet","depth":2,"value":"k8s-libsonnet"},{"slug":"installation","depth":2,"value":"Installation"},{"slug":"aliasing","depth":4,"value":"Aliasing"},{"slug":"using-it","depth":2,"value":"Using it"},{"slug":"full-example","depth":2,"value":"Full example"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/tutorial/overview/page-data.json b/pr-preview/pr-1029/page-data/tutorial/overview/page-data.json deleted file mode 100644 index 37fc2f287..000000000 --- a/pr-preview/pr-1029/page-data/tutorial/overview/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-tutorial-overview-mdx","path":"/tutorial/overview","result":{"pageContext":{"frontmatter":{"title":"Overview","menu":"Tutorial","route":"/tutorial/overview"},"entry":{"id":"48976e3ee25e3aebf403b62369ea6f1e","filepath":"docs/tutorial/overview.mdx","fullpath":"/home/runner/work/tanka/tanka/docs/docs/tutorial/overview.mdx","route":"/tutorial/overview","slug":"docs-tutorial-overview","name":"Overview","menu":"Tutorial","headings":[{"slug":"tutorial","depth":1,"value":"Tutorial"},{"slug":"learning-how-to-use-tanka","depth":2,"value":"Learning how to use Tanka"},{"slug":"resources","depth":2,"value":"Resources"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/tutorial/parameters/page-data.json b/pr-preview/pr-1029/page-data/tutorial/parameters/page-data.json deleted file mode 100644 index 0c6cc8789..000000000 --- a/pr-preview/pr-1029/page-data/tutorial/parameters/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-tutorial-parameterizing-mdx","path":"/tutorial/parameters","result":{"pageContext":{"frontmatter":{"name":"Parameterizing","menu":"Tutorial","route":"/tutorial/parameters"},"entry":{"id":"09109c64435da397cca6874b3045d45b","filepath":"docs/tutorial/parameterizing.mdx","fullpath":"/home/runner/work/tanka/tanka/docs/docs/tutorial/parameterizing.mdx","route":"/tutorial/parameters","slug":"docs-tutorial-parameterizing","name":"Parameterizing","menu":"Tutorial","headings":[{"slug":"parameterizing","depth":1,"value":"Parameterizing"},{"slug":"config-object","depth":2,"value":"Config object"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/page-data/tutorial/refresher/page-data.json b/pr-preview/pr-1029/page-data/tutorial/refresher/page-data.json deleted file mode 100644 index d9262d87a..000000000 --- a/pr-preview/pr-1029/page-data/tutorial/refresher/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---docs-tutorial-refresher-mdx","path":"/tutorial/refresher","result":{"pageContext":{"frontmatter":{"name":"Refresher on deploying","menu":"Tutorial","route":"/tutorial/refresher"},"entry":{"id":"d1a87cdb27dd635484b3c716f2fdf09f","filepath":"docs/tutorial/refresher.mdx","fullpath":"/home/runner/work/tanka/tanka/docs/docs/tutorial/refresher.mdx","route":"/tutorial/refresher","slug":"docs-tutorial-refresher","name":"Refresher on deploying","menu":"Tutorial","headings":[{"slug":"refresher-on-deploying","depth":1,"value":"Refresher on deploying"},{"slug":"deploying-to-kubernetes-using-kubectl","depth":2,"value":"Deploying to Kubernetes using kubectl"},{"slug":"writing-the-yaml","depth":2,"value":"Writing the yaml"},{"slug":"grafanayaml","depth":5,"value":"grafana.yaml:"},{"slug":"prometheusyaml","depth":5,"value":"prometheus.yaml"},{"slug":"deploying-to-the-cluster","depth":2,"value":"Deploying to the cluster"},{"slug":"checking-it-worked","depth":2,"value":"Checking it worked"},{"slug":"cleaning-up","depth":2,"value":"Cleaning up"}]}}},"staticQueryHashes":["1635659820","1635659820"]} \ No newline at end of file diff --git a/pr-preview/pr-1029/pagefind/fragment/en_0fc8f5a.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_0fc8f5a.pf_fragment new file mode 100644 index 000000000..114da3490 Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_0fc8f5a.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_3088548.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_3088548.pf_fragment new file mode 100644 index 000000000..3c73820dd Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_3088548.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_3a2eabd.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_3a2eabd.pf_fragment new file mode 100644 index 000000000..68e14bcfb Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_3a2eabd.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_3ae7828.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_3ae7828.pf_fragment new file mode 100644 index 000000000..16df914f6 Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_3ae7828.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_3c3d4b3.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_3c3d4b3.pf_fragment new file mode 100644 index 000000000..6c972206e Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_3c3d4b3.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_50d6499.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_50d6499.pf_fragment new file mode 100644 index 000000000..adc05bb1e Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_50d6499.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_56f8363.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_56f8363.pf_fragment new file mode 100644 index 000000000..8af8f5d65 Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_56f8363.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_5e18fa1.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_5e18fa1.pf_fragment new file mode 100644 index 000000000..f280a3c86 Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_5e18fa1.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_63a9427.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_63a9427.pf_fragment new file mode 100644 index 000000000..1ea4dc60b Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_63a9427.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_667d1ac.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_667d1ac.pf_fragment new file mode 100644 index 000000000..9a294f962 Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_667d1ac.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_6fa2666.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_6fa2666.pf_fragment new file mode 100644 index 000000000..88110a6c6 Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_6fa2666.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_75cf752.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_75cf752.pf_fragment new file mode 100644 index 000000000..5f1104c8e Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_75cf752.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_7e9a1a8.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_7e9a1a8.pf_fragment new file mode 100644 index 000000000..f4217ce82 Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_7e9a1a8.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_817ca38.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_817ca38.pf_fragment new file mode 100644 index 000000000..7515bcbe7 Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_817ca38.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_874ae6c.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_874ae6c.pf_fragment new file mode 100644 index 000000000..63418057d Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_874ae6c.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_96737f1.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_96737f1.pf_fragment new file mode 100644 index 000000000..2d5999e33 Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_96737f1.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_a1f6a0a.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_a1f6a0a.pf_fragment new file mode 100644 index 000000000..cd4ebd3d0 Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_a1f6a0a.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_a6c9c36.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_a6c9c36.pf_fragment new file mode 100644 index 000000000..c147d782f Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_a6c9c36.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_a771159.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_a771159.pf_fragment new file mode 100644 index 000000000..63c851c53 Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_a771159.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_a8a746d.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_a8a746d.pf_fragment new file mode 100644 index 000000000..c50848b23 Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_a8a746d.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_aac9ce8.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_aac9ce8.pf_fragment new file mode 100644 index 000000000..4e51df739 Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_aac9ce8.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_abda8a6.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_abda8a6.pf_fragment new file mode 100644 index 000000000..28acb01c5 Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_abda8a6.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_ae35d97.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_ae35d97.pf_fragment new file mode 100644 index 000000000..e87da3439 Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_ae35d97.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_af299fc.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_af299fc.pf_fragment new file mode 100644 index 000000000..119caceeb Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_af299fc.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_bbc3b44.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_bbc3b44.pf_fragment new file mode 100644 index 000000000..8fbbd1d56 Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_bbc3b44.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_bf5aafb.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_bf5aafb.pf_fragment new file mode 100644 index 000000000..77ac0604a Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_bf5aafb.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_c9ec2c5.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_c9ec2c5.pf_fragment new file mode 100644 index 000000000..37394d162 Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_c9ec2c5.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_cb3c689.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_cb3c689.pf_fragment new file mode 100644 index 000000000..95541423f Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_cb3c689.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_d7405cf.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_d7405cf.pf_fragment new file mode 100644 index 000000000..f6c64c4ae Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_d7405cf.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_e139ecf.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_e139ecf.pf_fragment new file mode 100644 index 000000000..aecc06ab4 Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_e139ecf.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_ea6c521.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_ea6c521.pf_fragment new file mode 100644 index 000000000..747a763f3 Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_ea6c521.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/fragment/en_ee40eab.pf_fragment b/pr-preview/pr-1029/pagefind/fragment/en_ee40eab.pf_fragment new file mode 100644 index 000000000..e3a146590 Binary files /dev/null and b/pr-preview/pr-1029/pagefind/fragment/en_ee40eab.pf_fragment differ diff --git a/pr-preview/pr-1029/pagefind/index/en_8ad1533.pf_index b/pr-preview/pr-1029/pagefind/index/en_8ad1533.pf_index new file mode 100644 index 000000000..eca3455d0 Binary files /dev/null and b/pr-preview/pr-1029/pagefind/index/en_8ad1533.pf_index differ diff --git a/pr-preview/pr-1029/pagefind/index/en_914fbe0.pf_index b/pr-preview/pr-1029/pagefind/index/en_914fbe0.pf_index new file mode 100644 index 000000000..ad77e7d0f Binary files /dev/null and b/pr-preview/pr-1029/pagefind/index/en_914fbe0.pf_index differ diff --git a/pr-preview/pr-1029/pagefind/pagefind-entry.json b/pr-preview/pr-1029/pagefind/pagefind-entry.json new file mode 100644 index 000000000..61da852d4 --- /dev/null +++ b/pr-preview/pr-1029/pagefind/pagefind-entry.json @@ -0,0 +1 @@ +{"version":"1.1.0","languages":{"en":{"hash":"en_d494bdd24a","wasm":"en","page_count":32}}} \ No newline at end of file diff --git a/pr-preview/pr-1029/pagefind/pagefind-highlight.js b/pr-preview/pr-1029/pagefind/pagefind-highlight.js new file mode 100644 index 000000000..c823fbfe7 --- /dev/null +++ b/pr-preview/pr-1029/pagefind/pagefind-highlight.js @@ -0,0 +1,1069 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +// node_modules/mark.js/dist/mark.js +var require_mark = __commonJS({ + "node_modules/mark.js/dist/mark.js"(exports, module) { + (function(global, factory) { + typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : global.Mark = factory(); + })(exports, function() { + "use strict"; + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) { + return typeof obj; + } : function(obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + var classCallCheck = function(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + }; + var createClass = function() { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) + descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + return function(Constructor, protoProps, staticProps) { + if (protoProps) + defineProperties(Constructor.prototype, protoProps); + if (staticProps) + defineProperties(Constructor, staticProps); + return Constructor; + }; + }(); + var _extends = Object.assign || function(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + return target; + }; + var DOMIterator = function() { + function DOMIterator2(ctx) { + var iframes = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; + var exclude = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : []; + var iframesTimeout = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 5e3; + classCallCheck(this, DOMIterator2); + this.ctx = ctx; + this.iframes = iframes; + this.exclude = exclude; + this.iframesTimeout = iframesTimeout; + } + createClass(DOMIterator2, [{ + key: "getContexts", + value: function getContexts() { + var ctx = void 0, filteredCtx = []; + if (typeof this.ctx === "undefined" || !this.ctx) { + ctx = []; + } else if (NodeList.prototype.isPrototypeOf(this.ctx)) { + ctx = Array.prototype.slice.call(this.ctx); + } else if (Array.isArray(this.ctx)) { + ctx = this.ctx; + } else if (typeof this.ctx === "string") { + ctx = Array.prototype.slice.call(document.querySelectorAll(this.ctx)); + } else { + ctx = [this.ctx]; + } + ctx.forEach(function(ctx2) { + var isDescendant = filteredCtx.filter(function(contexts) { + return contexts.contains(ctx2); + }).length > 0; + if (filteredCtx.indexOf(ctx2) === -1 && !isDescendant) { + filteredCtx.push(ctx2); + } + }); + return filteredCtx; + } + }, { + key: "getIframeContents", + value: function getIframeContents(ifr, successFn) { + var errorFn = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : function() { + }; + var doc = void 0; + try { + var ifrWin = ifr.contentWindow; + doc = ifrWin.document; + if (!ifrWin || !doc) { + throw new Error("iframe inaccessible"); + } + } catch (e) { + errorFn(); + } + if (doc) { + successFn(doc); + } + } + }, { + key: "isIframeBlank", + value: function isIframeBlank(ifr) { + var bl = "about:blank", src = ifr.getAttribute("src").trim(), href = ifr.contentWindow.location.href; + return href === bl && src !== bl && src; + } + }, { + key: "observeIframeLoad", + value: function observeIframeLoad(ifr, successFn, errorFn) { + var _this = this; + var called = false, tout = null; + var listener = function listener2() { + if (called) { + return; + } + called = true; + clearTimeout(tout); + try { + if (!_this.isIframeBlank(ifr)) { + ifr.removeEventListener("load", listener2); + _this.getIframeContents(ifr, successFn, errorFn); + } + } catch (e) { + errorFn(); + } + }; + ifr.addEventListener("load", listener); + tout = setTimeout(listener, this.iframesTimeout); + } + }, { + key: "onIframeReady", + value: function onIframeReady(ifr, successFn, errorFn) { + try { + if (ifr.contentWindow.document.readyState === "complete") { + if (this.isIframeBlank(ifr)) { + this.observeIframeLoad(ifr, successFn, errorFn); + } else { + this.getIframeContents(ifr, successFn, errorFn); + } + } else { + this.observeIframeLoad(ifr, successFn, errorFn); + } + } catch (e) { + errorFn(); + } + } + }, { + key: "waitForIframes", + value: function waitForIframes(ctx, done) { + var _this2 = this; + var eachCalled = 0; + this.forEachIframe(ctx, function() { + return true; + }, function(ifr) { + eachCalled++; + _this2.waitForIframes(ifr.querySelector("html"), function() { + if (!--eachCalled) { + done(); + } + }); + }, function(handled) { + if (!handled) { + done(); + } + }); + } + }, { + key: "forEachIframe", + value: function forEachIframe(ctx, filter, each) { + var _this3 = this; + var end = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : function() { + }; + var ifr = ctx.querySelectorAll("iframe"), open = ifr.length, handled = 0; + ifr = Array.prototype.slice.call(ifr); + var checkEnd = function checkEnd2() { + if (--open <= 0) { + end(handled); + } + }; + if (!open) { + checkEnd(); + } + ifr.forEach(function(ifr2) { + if (DOMIterator2.matches(ifr2, _this3.exclude)) { + checkEnd(); + } else { + _this3.onIframeReady(ifr2, function(con) { + if (filter(ifr2)) { + handled++; + each(con); + } + checkEnd(); + }, checkEnd); + } + }); + } + }, { + key: "createIterator", + value: function createIterator(ctx, whatToShow, filter) { + return document.createNodeIterator(ctx, whatToShow, filter, false); + } + }, { + key: "createInstanceOnIframe", + value: function createInstanceOnIframe(contents) { + return new DOMIterator2(contents.querySelector("html"), this.iframes); + } + }, { + key: "compareNodeIframe", + value: function compareNodeIframe(node, prevNode, ifr) { + var compCurr = node.compareDocumentPosition(ifr), prev = Node.DOCUMENT_POSITION_PRECEDING; + if (compCurr & prev) { + if (prevNode !== null) { + var compPrev = prevNode.compareDocumentPosition(ifr), after = Node.DOCUMENT_POSITION_FOLLOWING; + if (compPrev & after) { + return true; + } + } else { + return true; + } + } + return false; + } + }, { + key: "getIteratorNode", + value: function getIteratorNode(itr) { + var prevNode = itr.previousNode(); + var node = void 0; + if (prevNode === null) { + node = itr.nextNode(); + } else { + node = itr.nextNode() && itr.nextNode(); + } + return { + prevNode, + node + }; + } + }, { + key: "checkIframeFilter", + value: function checkIframeFilter(node, prevNode, currIfr, ifr) { + var key = false, handled = false; + ifr.forEach(function(ifrDict, i) { + if (ifrDict.val === currIfr) { + key = i; + handled = ifrDict.handled; + } + }); + if (this.compareNodeIframe(node, prevNode, currIfr)) { + if (key === false && !handled) { + ifr.push({ + val: currIfr, + handled: true + }); + } else if (key !== false && !handled) { + ifr[key].handled = true; + } + return true; + } + if (key === false) { + ifr.push({ + val: currIfr, + handled: false + }); + } + return false; + } + }, { + key: "handleOpenIframes", + value: function handleOpenIframes(ifr, whatToShow, eCb, fCb) { + var _this4 = this; + ifr.forEach(function(ifrDict) { + if (!ifrDict.handled) { + _this4.getIframeContents(ifrDict.val, function(con) { + _this4.createInstanceOnIframe(con).forEachNode(whatToShow, eCb, fCb); + }); + } + }); + } + }, { + key: "iterateThroughNodes", + value: function iterateThroughNodes(whatToShow, ctx, eachCb, filterCb, doneCb) { + var _this5 = this; + var itr = this.createIterator(ctx, whatToShow, filterCb); + var ifr = [], elements = [], node = void 0, prevNode = void 0, retrieveNodes = function retrieveNodes2() { + var _getIteratorNode = _this5.getIteratorNode(itr); + prevNode = _getIteratorNode.prevNode; + node = _getIteratorNode.node; + return node; + }; + while (retrieveNodes()) { + if (this.iframes) { + this.forEachIframe(ctx, function(currIfr) { + return _this5.checkIframeFilter(node, prevNode, currIfr, ifr); + }, function(con) { + _this5.createInstanceOnIframe(con).forEachNode(whatToShow, function(ifrNode) { + return elements.push(ifrNode); + }, filterCb); + }); + } + elements.push(node); + } + elements.forEach(function(node2) { + eachCb(node2); + }); + if (this.iframes) { + this.handleOpenIframes(ifr, whatToShow, eachCb, filterCb); + } + doneCb(); + } + }, { + key: "forEachNode", + value: function forEachNode(whatToShow, each, filter) { + var _this6 = this; + var done = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : function() { + }; + var contexts = this.getContexts(); + var open = contexts.length; + if (!open) { + done(); + } + contexts.forEach(function(ctx) { + var ready = function ready2() { + _this6.iterateThroughNodes(whatToShow, ctx, each, filter, function() { + if (--open <= 0) { + done(); + } + }); + }; + if (_this6.iframes) { + _this6.waitForIframes(ctx, ready); + } else { + ready(); + } + }); + } + }], [{ + key: "matches", + value: function matches(element, selector) { + var selectors = typeof selector === "string" ? [selector] : selector, fn = element.matches || element.matchesSelector || element.msMatchesSelector || element.mozMatchesSelector || element.oMatchesSelector || element.webkitMatchesSelector; + if (fn) { + var match = false; + selectors.every(function(sel) { + if (fn.call(element, sel)) { + match = true; + return false; + } + return true; + }); + return match; + } else { + return false; + } + } + }]); + return DOMIterator2; + }(); + var Mark$1 = function() { + function Mark3(ctx) { + classCallCheck(this, Mark3); + this.ctx = ctx; + this.ie = false; + var ua = window.navigator.userAgent; + if (ua.indexOf("MSIE") > -1 || ua.indexOf("Trident") > -1) { + this.ie = true; + } + } + createClass(Mark3, [{ + key: "log", + value: function log(msg) { + var level = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "debug"; + var log2 = this.opt.log; + if (!this.opt.debug) { + return; + } + if ((typeof log2 === "undefined" ? "undefined" : _typeof(log2)) === "object" && typeof log2[level] === "function") { + log2[level]("mark.js: " + msg); + } + } + }, { + key: "escapeStr", + value: function escapeStr(str) { + return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); + } + }, { + key: "createRegExp", + value: function createRegExp(str) { + if (this.opt.wildcards !== "disabled") { + str = this.setupWildcardsRegExp(str); + } + str = this.escapeStr(str); + if (Object.keys(this.opt.synonyms).length) { + str = this.createSynonymsRegExp(str); + } + if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) { + str = this.setupIgnoreJoinersRegExp(str); + } + if (this.opt.diacritics) { + str = this.createDiacriticsRegExp(str); + } + str = this.createMergedBlanksRegExp(str); + if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) { + str = this.createJoinersRegExp(str); + } + if (this.opt.wildcards !== "disabled") { + str = this.createWildcardsRegExp(str); + } + str = this.createAccuracyRegExp(str); + return str; + } + }, { + key: "createSynonymsRegExp", + value: function createSynonymsRegExp(str) { + var syn = this.opt.synonyms, sens = this.opt.caseSensitive ? "" : "i", joinerPlaceholder = this.opt.ignoreJoiners || this.opt.ignorePunctuation.length ? "\0" : ""; + for (var index in syn) { + if (syn.hasOwnProperty(index)) { + var value = syn[index], k1 = this.opt.wildcards !== "disabled" ? this.setupWildcardsRegExp(index) : this.escapeStr(index), k2 = this.opt.wildcards !== "disabled" ? this.setupWildcardsRegExp(value) : this.escapeStr(value); + if (k1 !== "" && k2 !== "") { + str = str.replace(new RegExp("(" + this.escapeStr(k1) + "|" + this.escapeStr(k2) + ")", "gm" + sens), joinerPlaceholder + ("(" + this.processSynomyms(k1) + "|") + (this.processSynomyms(k2) + ")") + joinerPlaceholder); + } + } + } + return str; + } + }, { + key: "processSynomyms", + value: function processSynomyms(str) { + if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) { + str = this.setupIgnoreJoinersRegExp(str); + } + return str; + } + }, { + key: "setupWildcardsRegExp", + value: function setupWildcardsRegExp(str) { + str = str.replace(/(?:\\)*\?/g, function(val) { + return val.charAt(0) === "\\" ? "?" : ""; + }); + return str.replace(/(?:\\)*\*/g, function(val) { + return val.charAt(0) === "\\" ? "*" : ""; + }); + } + }, { + key: "createWildcardsRegExp", + value: function createWildcardsRegExp(str) { + var spaces = this.opt.wildcards === "withSpaces"; + return str.replace(/\u0001/g, spaces ? "[\\S\\s]?" : "\\S?").replace(/\u0002/g, spaces ? "[\\S\\s]*?" : "\\S*"); + } + }, { + key: "setupIgnoreJoinersRegExp", + value: function setupIgnoreJoinersRegExp(str) { + return str.replace(/[^(|)\\]/g, function(val, indx, original) { + var nextChar = original.charAt(indx + 1); + if (/[(|)\\]/.test(nextChar) || nextChar === "") { + return val; + } else { + return val + "\0"; + } + }); + } + }, { + key: "createJoinersRegExp", + value: function createJoinersRegExp(str) { + var joiner = []; + var ignorePunctuation = this.opt.ignorePunctuation; + if (Array.isArray(ignorePunctuation) && ignorePunctuation.length) { + joiner.push(this.escapeStr(ignorePunctuation.join(""))); + } + if (this.opt.ignoreJoiners) { + joiner.push("\\u00ad\\u200b\\u200c\\u200d"); + } + return joiner.length ? str.split(/\u0000+/).join("[" + joiner.join("") + "]*") : str; + } + }, { + key: "createDiacriticsRegExp", + value: function createDiacriticsRegExp(str) { + var sens = this.opt.caseSensitive ? "" : "i", dct = this.opt.caseSensitive ? ["a\xE0\xE1\u1EA3\xE3\u1EA1\u0103\u1EB1\u1EAF\u1EB3\u1EB5\u1EB7\xE2\u1EA7\u1EA5\u1EA9\u1EAB\u1EAD\xE4\xE5\u0101\u0105", "A\xC0\xC1\u1EA2\xC3\u1EA0\u0102\u1EB0\u1EAE\u1EB2\u1EB4\u1EB6\xC2\u1EA6\u1EA4\u1EA8\u1EAA\u1EAC\xC4\xC5\u0100\u0104", "c\xE7\u0107\u010D", "C\xC7\u0106\u010C", "d\u0111\u010F", "D\u0110\u010E", "e\xE8\xE9\u1EBB\u1EBD\u1EB9\xEA\u1EC1\u1EBF\u1EC3\u1EC5\u1EC7\xEB\u011B\u0113\u0119", "E\xC8\xC9\u1EBA\u1EBC\u1EB8\xCA\u1EC0\u1EBE\u1EC2\u1EC4\u1EC6\xCB\u011A\u0112\u0118", "i\xEC\xED\u1EC9\u0129\u1ECB\xEE\xEF\u012B", "I\xCC\xCD\u1EC8\u0128\u1ECA\xCE\xCF\u012A", "l\u0142", "L\u0141", "n\xF1\u0148\u0144", "N\xD1\u0147\u0143", "o\xF2\xF3\u1ECF\xF5\u1ECD\xF4\u1ED3\u1ED1\u1ED5\u1ED7\u1ED9\u01A1\u1EDF\u1EE1\u1EDB\u1EDD\u1EE3\xF6\xF8\u014D", "O\xD2\xD3\u1ECE\xD5\u1ECC\xD4\u1ED2\u1ED0\u1ED4\u1ED6\u1ED8\u01A0\u1EDE\u1EE0\u1EDA\u1EDC\u1EE2\xD6\xD8\u014C", "r\u0159", "R\u0158", "s\u0161\u015B\u0219\u015F", "S\u0160\u015A\u0218\u015E", "t\u0165\u021B\u0163", "T\u0164\u021A\u0162", "u\xF9\xFA\u1EE7\u0169\u1EE5\u01B0\u1EEB\u1EE9\u1EED\u1EEF\u1EF1\xFB\xFC\u016F\u016B", "U\xD9\xDA\u1EE6\u0168\u1EE4\u01AF\u1EEA\u1EE8\u1EEC\u1EEE\u1EF0\xDB\xDC\u016E\u016A", "y\xFD\u1EF3\u1EF7\u1EF9\u1EF5\xFF", "Y\xDD\u1EF2\u1EF6\u1EF8\u1EF4\u0178", "z\u017E\u017C\u017A", "Z\u017D\u017B\u0179"] : ["a\xE0\xE1\u1EA3\xE3\u1EA1\u0103\u1EB1\u1EAF\u1EB3\u1EB5\u1EB7\xE2\u1EA7\u1EA5\u1EA9\u1EAB\u1EAD\xE4\xE5\u0101\u0105A\xC0\xC1\u1EA2\xC3\u1EA0\u0102\u1EB0\u1EAE\u1EB2\u1EB4\u1EB6\xC2\u1EA6\u1EA4\u1EA8\u1EAA\u1EAC\xC4\xC5\u0100\u0104", "c\xE7\u0107\u010DC\xC7\u0106\u010C", "d\u0111\u010FD\u0110\u010E", "e\xE8\xE9\u1EBB\u1EBD\u1EB9\xEA\u1EC1\u1EBF\u1EC3\u1EC5\u1EC7\xEB\u011B\u0113\u0119E\xC8\xC9\u1EBA\u1EBC\u1EB8\xCA\u1EC0\u1EBE\u1EC2\u1EC4\u1EC6\xCB\u011A\u0112\u0118", "i\xEC\xED\u1EC9\u0129\u1ECB\xEE\xEF\u012BI\xCC\xCD\u1EC8\u0128\u1ECA\xCE\xCF\u012A", "l\u0142L\u0141", "n\xF1\u0148\u0144N\xD1\u0147\u0143", "o\xF2\xF3\u1ECF\xF5\u1ECD\xF4\u1ED3\u1ED1\u1ED5\u1ED7\u1ED9\u01A1\u1EDF\u1EE1\u1EDB\u1EDD\u1EE3\xF6\xF8\u014DO\xD2\xD3\u1ECE\xD5\u1ECC\xD4\u1ED2\u1ED0\u1ED4\u1ED6\u1ED8\u01A0\u1EDE\u1EE0\u1EDA\u1EDC\u1EE2\xD6\xD8\u014C", "r\u0159R\u0158", "s\u0161\u015B\u0219\u015FS\u0160\u015A\u0218\u015E", "t\u0165\u021B\u0163T\u0164\u021A\u0162", "u\xF9\xFA\u1EE7\u0169\u1EE5\u01B0\u1EEB\u1EE9\u1EED\u1EEF\u1EF1\xFB\xFC\u016F\u016BU\xD9\xDA\u1EE6\u0168\u1EE4\u01AF\u1EEA\u1EE8\u1EEC\u1EEE\u1EF0\xDB\xDC\u016E\u016A", "y\xFD\u1EF3\u1EF7\u1EF9\u1EF5\xFFY\xDD\u1EF2\u1EF6\u1EF8\u1EF4\u0178", "z\u017E\u017C\u017AZ\u017D\u017B\u0179"]; + var handled = []; + str.split("").forEach(function(ch) { + dct.every(function(dct2) { + if (dct2.indexOf(ch) !== -1) { + if (handled.indexOf(dct2) > -1) { + return false; + } + str = str.replace(new RegExp("[" + dct2 + "]", "gm" + sens), "[" + dct2 + "]"); + handled.push(dct2); + } + return true; + }); + }); + return str; + } + }, { + key: "createMergedBlanksRegExp", + value: function createMergedBlanksRegExp(str) { + return str.replace(/[\s]+/gmi, "[\\s]+"); + } + }, { + key: "createAccuracyRegExp", + value: function createAccuracyRegExp(str) { + var _this = this; + var chars = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\xA1\xBF"; + var acc = this.opt.accuracy, val = typeof acc === "string" ? acc : acc.value, ls = typeof acc === "string" ? [] : acc.limiters, lsJoin = ""; + ls.forEach(function(limiter) { + lsJoin += "|" + _this.escapeStr(limiter); + }); + switch (val) { + case "partially": + default: + return "()(" + str + ")"; + case "complementary": + lsJoin = "\\s" + (lsJoin ? lsJoin : this.escapeStr(chars)); + return "()([^" + lsJoin + "]*" + str + "[^" + lsJoin + "]*)"; + case "exactly": + return "(^|\\s" + lsJoin + ")(" + str + ")(?=$|\\s" + lsJoin + ")"; + } + } + }, { + key: "getSeparatedKeywords", + value: function getSeparatedKeywords(sv) { + var _this2 = this; + var stack = []; + sv.forEach(function(kw) { + if (!_this2.opt.separateWordSearch) { + if (kw.trim() && stack.indexOf(kw) === -1) { + stack.push(kw); + } + } else { + kw.split(" ").forEach(function(kwSplitted) { + if (kwSplitted.trim() && stack.indexOf(kwSplitted) === -1) { + stack.push(kwSplitted); + } + }); + } + }); + return { + "keywords": stack.sort(function(a, b) { + return b.length - a.length; + }), + "length": stack.length + }; + } + }, { + key: "isNumeric", + value: function isNumeric(value) { + return Number(parseFloat(value)) == value; + } + }, { + key: "checkRanges", + value: function checkRanges(array) { + var _this3 = this; + if (!Array.isArray(array) || Object.prototype.toString.call(array[0]) !== "[object Object]") { + this.log("markRanges() will only accept an array of objects"); + this.opt.noMatch(array); + return []; + } + var stack = []; + var last = 0; + array.sort(function(a, b) { + return a.start - b.start; + }).forEach(function(item) { + var _callNoMatchOnInvalid = _this3.callNoMatchOnInvalidRanges(item, last), start = _callNoMatchOnInvalid.start, end = _callNoMatchOnInvalid.end, valid = _callNoMatchOnInvalid.valid; + if (valid) { + item.start = start; + item.length = end - start; + stack.push(item); + last = end; + } + }); + return stack; + } + }, { + key: "callNoMatchOnInvalidRanges", + value: function callNoMatchOnInvalidRanges(range, last) { + var start = void 0, end = void 0, valid = false; + if (range && typeof range.start !== "undefined") { + start = parseInt(range.start, 10); + end = start + parseInt(range.length, 10); + if (this.isNumeric(range.start) && this.isNumeric(range.length) && end - last > 0 && end - start > 0) { + valid = true; + } else { + this.log("Ignoring invalid or overlapping range: " + ("" + JSON.stringify(range))); + this.opt.noMatch(range); + } + } else { + this.log("Ignoring invalid range: " + JSON.stringify(range)); + this.opt.noMatch(range); + } + return { + start, + end, + valid + }; + } + }, { + key: "checkWhitespaceRanges", + value: function checkWhitespaceRanges(range, originalLength, string) { + var end = void 0, valid = true, max = string.length, offset = originalLength - max, start = parseInt(range.start, 10) - offset; + start = start > max ? max : start; + end = start + parseInt(range.length, 10); + if (end > max) { + end = max; + this.log("End range automatically set to the max value of " + max); + } + if (start < 0 || end - start < 0 || start > max || end > max) { + valid = false; + this.log("Invalid range: " + JSON.stringify(range)); + this.opt.noMatch(range); + } else if (string.substring(start, end).replace(/\s+/g, "") === "") { + valid = false; + this.log("Skipping whitespace only range: " + JSON.stringify(range)); + this.opt.noMatch(range); + } + return { + start, + end, + valid + }; + } + }, { + key: "getTextNodes", + value: function getTextNodes(cb) { + var _this4 = this; + var val = "", nodes = []; + this.iterator.forEachNode(NodeFilter.SHOW_TEXT, function(node) { + nodes.push({ + start: val.length, + end: (val += node.textContent).length, + node + }); + }, function(node) { + if (_this4.matchesExclude(node.parentNode)) { + return NodeFilter.FILTER_REJECT; + } else { + return NodeFilter.FILTER_ACCEPT; + } + }, function() { + cb({ + value: val, + nodes + }); + }); + } + }, { + key: "matchesExclude", + value: function matchesExclude(el) { + return DOMIterator.matches(el, this.opt.exclude.concat(["script", "style", "title", "head", "html"])); + } + }, { + key: "wrapRangeInTextNode", + value: function wrapRangeInTextNode(node, start, end) { + var hEl = !this.opt.element ? "mark" : this.opt.element, startNode = node.splitText(start), ret = startNode.splitText(end - start); + var repl = document.createElement(hEl); + repl.setAttribute("data-markjs", "true"); + if (this.opt.className) { + repl.setAttribute("class", this.opt.className); + } + repl.textContent = startNode.textContent; + startNode.parentNode.replaceChild(repl, startNode); + return ret; + } + }, { + key: "wrapRangeInMappedTextNode", + value: function wrapRangeInMappedTextNode(dict, start, end, filterCb, eachCb) { + var _this5 = this; + dict.nodes.every(function(n, i) { + var sibl = dict.nodes[i + 1]; + if (typeof sibl === "undefined" || sibl.start > start) { + if (!filterCb(n.node)) { + return false; + } + var s = start - n.start, e = (end > n.end ? n.end : end) - n.start, startStr = dict.value.substr(0, n.start), endStr = dict.value.substr(e + n.start); + n.node = _this5.wrapRangeInTextNode(n.node, s, e); + dict.value = startStr + endStr; + dict.nodes.forEach(function(k, j) { + if (j >= i) { + if (dict.nodes[j].start > 0 && j !== i) { + dict.nodes[j].start -= e; + } + dict.nodes[j].end -= e; + } + }); + end -= e; + eachCb(n.node.previousSibling, n.start); + if (end > n.end) { + start = n.end; + } else { + return false; + } + } + return true; + }); + } + }, { + key: "wrapMatches", + value: function wrapMatches(regex, ignoreGroups, filterCb, eachCb, endCb) { + var _this6 = this; + var matchIdx = ignoreGroups === 0 ? 0 : ignoreGroups + 1; + this.getTextNodes(function(dict) { + dict.nodes.forEach(function(node) { + node = node.node; + var match = void 0; + while ((match = regex.exec(node.textContent)) !== null && match[matchIdx] !== "") { + if (!filterCb(match[matchIdx], node)) { + continue; + } + var pos = match.index; + if (matchIdx !== 0) { + for (var i = 1; i < matchIdx; i++) { + pos += match[i].length; + } + } + node = _this6.wrapRangeInTextNode(node, pos, pos + match[matchIdx].length); + eachCb(node.previousSibling); + regex.lastIndex = 0; + } + }); + endCb(); + }); + } + }, { + key: "wrapMatchesAcrossElements", + value: function wrapMatchesAcrossElements(regex, ignoreGroups, filterCb, eachCb, endCb) { + var _this7 = this; + var matchIdx = ignoreGroups === 0 ? 0 : ignoreGroups + 1; + this.getTextNodes(function(dict) { + var match = void 0; + while ((match = regex.exec(dict.value)) !== null && match[matchIdx] !== "") { + var start = match.index; + if (matchIdx !== 0) { + for (var i = 1; i < matchIdx; i++) { + start += match[i].length; + } + } + var end = start + match[matchIdx].length; + _this7.wrapRangeInMappedTextNode(dict, start, end, function(node) { + return filterCb(match[matchIdx], node); + }, function(node, lastIndex) { + regex.lastIndex = lastIndex; + eachCb(node); + }); + } + endCb(); + }); + } + }, { + key: "wrapRangeFromIndex", + value: function wrapRangeFromIndex(ranges, filterCb, eachCb, endCb) { + var _this8 = this; + this.getTextNodes(function(dict) { + var originalLength = dict.value.length; + ranges.forEach(function(range, counter) { + var _checkWhitespaceRange = _this8.checkWhitespaceRanges(range, originalLength, dict.value), start = _checkWhitespaceRange.start, end = _checkWhitespaceRange.end, valid = _checkWhitespaceRange.valid; + if (valid) { + _this8.wrapRangeInMappedTextNode(dict, start, end, function(node) { + return filterCb(node, range, dict.value.substring(start, end), counter); + }, function(node) { + eachCb(node, range); + }); + } + }); + endCb(); + }); + } + }, { + key: "unwrapMatches", + value: function unwrapMatches(node) { + var parent = node.parentNode; + var docFrag = document.createDocumentFragment(); + while (node.firstChild) { + docFrag.appendChild(node.removeChild(node.firstChild)); + } + parent.replaceChild(docFrag, node); + if (!this.ie) { + parent.normalize(); + } else { + this.normalizeTextNode(parent); + } + } + }, { + key: "normalizeTextNode", + value: function normalizeTextNode(node) { + if (!node) { + return; + } + if (node.nodeType === 3) { + while (node.nextSibling && node.nextSibling.nodeType === 3) { + node.nodeValue += node.nextSibling.nodeValue; + node.parentNode.removeChild(node.nextSibling); + } + } else { + this.normalizeTextNode(node.firstChild); + } + this.normalizeTextNode(node.nextSibling); + } + }, { + key: "markRegExp", + value: function markRegExp(regexp, opt) { + var _this9 = this; + this.opt = opt; + this.log('Searching with expression "' + regexp + '"'); + var totalMatches = 0, fn = "wrapMatches"; + var eachCb = function eachCb2(element) { + totalMatches++; + _this9.opt.each(element); + }; + if (this.opt.acrossElements) { + fn = "wrapMatchesAcrossElements"; + } + this[fn](regexp, this.opt.ignoreGroups, function(match, node) { + return _this9.opt.filter(node, match, totalMatches); + }, eachCb, function() { + if (totalMatches === 0) { + _this9.opt.noMatch(regexp); + } + _this9.opt.done(totalMatches); + }); + } + }, { + key: "mark", + value: function mark(sv, opt) { + var _this10 = this; + this.opt = opt; + var totalMatches = 0, fn = "wrapMatches"; + var _getSeparatedKeywords = this.getSeparatedKeywords(typeof sv === "string" ? [sv] : sv), kwArr = _getSeparatedKeywords.keywords, kwArrLen = _getSeparatedKeywords.length, sens = this.opt.caseSensitive ? "" : "i", handler = function handler2(kw) { + var regex = new RegExp(_this10.createRegExp(kw), "gm" + sens), matches = 0; + _this10.log('Searching with expression "' + regex + '"'); + _this10[fn](regex, 1, function(term, node) { + return _this10.opt.filter(node, kw, totalMatches, matches); + }, function(element) { + matches++; + totalMatches++; + _this10.opt.each(element); + }, function() { + if (matches === 0) { + _this10.opt.noMatch(kw); + } + if (kwArr[kwArrLen - 1] === kw) { + _this10.opt.done(totalMatches); + } else { + handler2(kwArr[kwArr.indexOf(kw) + 1]); + } + }); + }; + if (this.opt.acrossElements) { + fn = "wrapMatchesAcrossElements"; + } + if (kwArrLen === 0) { + this.opt.done(totalMatches); + } else { + handler(kwArr[0]); + } + } + }, { + key: "markRanges", + value: function markRanges(rawRanges, opt) { + var _this11 = this; + this.opt = opt; + var totalMatches = 0, ranges = this.checkRanges(rawRanges); + if (ranges && ranges.length) { + this.log("Starting to mark with the following ranges: " + JSON.stringify(ranges)); + this.wrapRangeFromIndex(ranges, function(node, range, match, counter) { + return _this11.opt.filter(node, range, match, counter); + }, function(element, range) { + totalMatches++; + _this11.opt.each(element, range); + }, function() { + _this11.opt.done(totalMatches); + }); + } else { + this.opt.done(totalMatches); + } + } + }, { + key: "unmark", + value: function unmark(opt) { + var _this12 = this; + this.opt = opt; + var sel = this.opt.element ? this.opt.element : "*"; + sel += "[data-markjs]"; + if (this.opt.className) { + sel += "." + this.opt.className; + } + this.log('Removal selector "' + sel + '"'); + this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT, function(node) { + _this12.unwrapMatches(node); + }, function(node) { + var matchesSel = DOMIterator.matches(node, sel), matchesExclude = _this12.matchesExclude(node); + if (!matchesSel || matchesExclude) { + return NodeFilter.FILTER_REJECT; + } else { + return NodeFilter.FILTER_ACCEPT; + } + }, this.opt.done); + } + }, { + key: "opt", + set: function set$$1(val) { + this._opt = _extends({}, { + "element": "", + "className": "", + "exclude": [], + "iframes": false, + "iframesTimeout": 5e3, + "separateWordSearch": true, + "diacritics": true, + "synonyms": {}, + "accuracy": "partially", + "acrossElements": false, + "caseSensitive": false, + "ignoreJoiners": false, + "ignoreGroups": 0, + "ignorePunctuation": [], + "wildcards": "disabled", + "each": function each() { + }, + "noMatch": function noMatch() { + }, + "filter": function filter() { + return true; + }, + "done": function done() { + }, + "debug": false, + "log": window.console + }, val); + }, + get: function get$$1() { + return this._opt; + } + }, { + key: "iterator", + get: function get$$1() { + return new DOMIterator(this.ctx, this.opt.iframes, this.opt.exclude, this.opt.iframesTimeout); + } + }]); + return Mark3; + }(); + function Mark2(ctx) { + var _this = this; + var instance = new Mark$1(ctx); + this.mark = function(sv, opt) { + instance.mark(sv, opt); + return _this; + }; + this.markRegExp = function(sv, opt) { + instance.markRegExp(sv, opt); + return _this; + }; + this.markRanges = function(sv, opt) { + instance.markRanges(sv, opt); + return _this; + }; + this.unmark = function(opt) { + instance.unmark(opt); + return _this; + }; + return this; + } + return Mark2; + }); + } +}); + +// lib/highlight.ts +var import_mark = __toESM(require_mark(), 1); +var PagefindHighlight = class { + constructor(options = { + markContext: null, + highlightParam: "pagefind-highlight", + markOptions: { + className: "pagefind-highlight", + exclude: ["[data-pagefind-ignore]", "[data-pagefind-ignore] *"] + }, + addStyles: true + }) { + var _a, _b; + const { highlightParam, markContext, markOptions, addStyles } = options; + this.highlightParam = highlightParam ?? "pagefind-highlight"; + this.addStyles = addStyles ?? true; + this.markContext = markContext !== void 0 ? markContext : null; + this.markOptions = markOptions !== void 0 ? markOptions : { + className: "pagefind-highlight", + exclude: ["[data-pagefind-ignore]", "[data-pagefind-ignore] *"] + }; + (_a = this.markOptions).className ?? (_a.className = "pagefind__highlight"); + (_b = this.markOptions).exclude ?? (_b.exclude = [ + "[data-pagefind-ignore]", + "[data-pagefind-ignore] *" + ]); + this.markOptions.separateWordSearch = false; + this.highlight(); + } + getHighlightParams(paramName) { + const urlParams = new URLSearchParams(window.location.search); + return urlParams.getAll(paramName); + } + // Inline styles might be too hard to override + addHighlightStyles(className) { + if (!className) + return; + const styleElement = document.createElement("style"); + styleElement.innerText = `:where(.${className}) { background-color: yellow; color: black; }`; + document.head.appendChild(styleElement); + } + createMarkInstance() { + if (this.markContext) { + return new import_mark.default(this.markContext); + } + const pagefindBody = document.querySelectorAll("[data-pagefind-body]"); + if (pagefindBody.length !== 0) { + return new import_mark.default(pagefindBody); + } else { + return new import_mark.default(document.body); + } + } + markText(instance, text) { + instance.mark(text, this.markOptions); + } + highlight() { + const params = this.getHighlightParams(this.highlightParam); + if (!params || params.length === 0) + return; + this.addStyles && this.addHighlightStyles(this.markOptions.className); + const markInstance = this.createMarkInstance(); + this.markText(markInstance, params); + } +}; +window.PagefindHighlight = PagefindHighlight; +export { + PagefindHighlight as default +}; +/*! Bundled license information: + +mark.js/dist/mark.js: + (*!*************************************************** + * mark.js v8.11.1 + * https://markjs.io/ + * Copyright (c) 2014–2018, Julian Kühnel + * Released under the MIT license https://git.io/vwTVl + *****************************************************) +*/ diff --git a/pr-preview/pr-1029/pagefind/pagefind-modular-ui.css b/pr-preview/pr-1029/pagefind/pagefind-modular-ui.css new file mode 100644 index 000000000..9c6793ed2 --- /dev/null +++ b/pr-preview/pr-1029/pagefind/pagefind-modular-ui.css @@ -0,0 +1,214 @@ +:root { + --pagefind-ui-scale: 0.8; + --pagefind-ui-primary: #034AD8; + --pagefind-ui-fade: #707070; + --pagefind-ui-text: #393939; + --pagefind-ui-background: #ffffff; + --pagefind-ui-border: #eeeeee; + --pagefind-ui-tag: #eeeeee; + --pagefind-ui-border-width: 2px; + --pagefind-ui-border-radius: 8px; + --pagefind-ui-image-border-radius: 8px; + --pagefind-ui-image-box-ratio: 3 / 2; + --pagefind-ui-font: system, -apple-system, ".SFNSText-Regular", + "San Francisco", "Roboto", "Segoe UI", "Helvetica Neue", + "Lucida Grande", sans-serif; +} + +[data-pfmod-hidden] { + display: none !important; +} + +[data-pfmod-suppressed] { + opacity: 0 !important; + pointer-events: none !important; +} + +[data-pfmod-sr-hidden] { + -webkit-clip: rect(0 0 0 0) !important; + clip: rect(0 0 0 0) !important; + -webkit-clip-path: inset(100%) !important; + clip-path: inset(100%) !important; + height: 1px !important; + overflow: hidden !important; + overflow: clip !important; + position: absolute !important; + white-space: nowrap !important; + width: 1px !important; +} + +[data-pfmod-loading] { + color: var(--pagefind-ui-text); + background-color: var(--pagefind-ui-text); + border-radius: var(--pagefind-ui-border-radius); + opacity: 0.1; + pointer-events: none; +} + +/* Input */ + +.pagefind-modular-input-wrapper { + position: relative; +} + +.pagefind-modular-input-wrapper::before { + background-color: var(--pagefind-ui-text); + width: calc(18px * var(--pagefind-ui-scale)); + height: calc(18px * var(--pagefind-ui-scale)); + top: calc(23px * var(--pagefind-ui-scale)); + left: calc(20px * var(--pagefind-ui-scale)); + content: ""; + position: absolute; + display: block; + opacity: 0.7; + -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.7549 11.255H11.9649L11.6849 10.985C12.6649 9.845 13.2549 8.365 13.2549 6.755C13.2549 3.165 10.3449 0.255005 6.75488 0.255005C3.16488 0.255005 0.254883 3.165 0.254883 6.755C0.254883 10.345 3.16488 13.255 6.75488 13.255C8.36488 13.255 9.84488 12.665 10.9849 11.685L11.2549 11.965V12.755L16.2549 17.745L17.7449 16.255L12.7549 11.255ZM6.75488 11.255C4.26488 11.255 2.25488 9.245 2.25488 6.755C2.25488 4.26501 4.26488 2.255 6.75488 2.255C9.24488 2.255 11.2549 4.26501 11.2549 6.755C11.2549 9.245 9.24488 11.255 6.75488 11.255Z' fill='%23000000'/%3E%3C/svg%3E%0A"); + mask-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.7549 11.255H11.9649L11.6849 10.985C12.6649 9.845 13.2549 8.365 13.2549 6.755C13.2549 3.165 10.3449 0.255005 6.75488 0.255005C3.16488 0.255005 0.254883 3.165 0.254883 6.755C0.254883 10.345 3.16488 13.255 6.75488 13.255C8.36488 13.255 9.84488 12.665 10.9849 11.685L11.2549 11.965V12.755L16.2549 17.745L17.7449 16.255L12.7549 11.255ZM6.75488 11.255C4.26488 11.255 2.25488 9.245 2.25488 6.755C2.25488 4.26501 4.26488 2.255 6.75488 2.255C9.24488 2.255 11.2549 4.26501 11.2549 6.755C11.2549 9.245 9.24488 11.255 6.75488 11.255Z' fill='%23000000'/%3E%3C/svg%3E%0A"); + -webkit-mask-size: 100%; + mask-size: 100%; + z-index: 9; + pointer-events: none; +} + +.pagefind-modular-input { + height: calc(64px * var(--pagefind-ui-scale)); + padding: 0 calc(70px * var(--pagefind-ui-scale)) 0 calc(54px * var(--pagefind-ui-scale)); + background-color: var(--pagefind-ui-background); + border: var(--pagefind-ui-border-width) solid var(--pagefind-ui-border); + border-radius: var(--pagefind-ui-border-radius); + font-size: calc(21px * var(--pagefind-ui-scale)); + position: relative; + appearance: none; + -webkit-appearance: none; + display: flex; + width: 100%; + box-sizing: border-box; + font-weight: 700; +} + +.pagefind-modular-input::placeholder { + opacity: 0.2; +} + +.pagefind-modular-input-clear { + position: absolute; + top: calc(2px * var(--pagefind-ui-scale)); + right: calc(2px * var(--pagefind-ui-scale)); + height: calc(60px * var(--pagefind-ui-scale)); + border-radius: var(--pagefind-ui-border-radius); + padding: 0 calc(15px * var(--pagefind-ui-scale)) 0 calc(2px * var(--pagefind-ui-scale)); + color: var(--pagefind-ui-text); + font-size: calc(14px * var(--pagefind-ui-scale)); + cursor: pointer; + background-color: var(--pagefind-ui-background); + border: none; + appearance: none; +} + +/* ResultList */ + +.pagefind-modular-list-result { + list-style-type: none; + display: flex; + align-items: flex-start; + gap: min(calc(40px * var(--pagefind-ui-scale)), 3%); + padding: calc(30px * var(--pagefind-ui-scale)) 0 calc(40px * var(--pagefind-ui-scale)); + border-top: solid var(--pagefind-ui-border-width) var(--pagefind-ui-border); +} + +.pagefind-modular-list-result:last-of-type { + border-bottom: solid var(--pagefind-ui-border-width) var(--pagefind-ui-border); +} + +.pagefind-modular-list-thumb { + width: min(30%, + calc((30% - (100px * var(--pagefind-ui-scale))) * 100000)); + max-width: calc(120px * var(--pagefind-ui-scale)); + margin-top: calc(10px * var(--pagefind-ui-scale)); + aspect-ratio: var(--pagefind-ui-image-box-ratio); + position: relative; +} + +.pagefind-modular-list-image { + display: block; + position: absolute; + left: 50%; + transform: translateX(-50%); + font-size: 0; + width: auto; + height: auto; + max-width: 100%; + max-height: 100%; + border-radius: var(--pagefind-ui-image-border-radius); +} + +.pagefind-modular-list-inner { + flex: 1; + display: flex; + flex-direction: column; + align-items: flex-start; + margin-top: calc(10px * var(--pagefind-ui-scale)); +} + +.pagefind-modular-list-title { + display: inline-block; + font-weight: 700; + font-size: calc(21px * var(--pagefind-ui-scale)); + margin-top: 0; + margin-bottom: 0; +} + +.pagefind-modular-list-link { + color: var(--pagefind-ui-text); + text-decoration: none; +} + +.pagefind-modular-list-link:hover { + text-decoration: underline; +} + +.pagefind-modular-list-excerpt { + display: inline-block; + font-weight: 400; + font-size: calc(16px * var(--pagefind-ui-scale)); + margin-top: calc(4px * var(--pagefind-ui-scale)); + margin-bottom: 0; + min-width: calc(250px * var(--pagefind-ui-scale)); +} + +/* FilterPills */ + +.pagefind-modular-filter-pills-wrapper { + overflow-x: scroll; + padding: 15px 0; +} + +.pagefind-modular-filter-pills { + display: flex; + gap: 6px; +} + +.pagefind-modular-filter-pill { + display: flex; + justify-content: center; + align-items: center; + border: none; + appearance: none; + padding: 0 calc(24px * var(--pagefind-ui-scale)); + background-color: var(--pagefind-ui-background); + color: var(--pagefind-ui-fade); + border: var(--pagefind-ui-border-width) solid var(--pagefind-ui-border); + border-radius: calc(25px * var(--pagefind-ui-scale)); + font-size: calc(18px * var(--pagefind-ui-scale)); + height: calc(50px * var(--pagefind-ui-scale)); + cursor: pointer; + white-space: nowrap; +} + +.pagefind-modular-filter-pill:hover { + border-color: var(--pagefind-ui-primary); +} + +.pagefind-modular-filter-pill[aria-pressed="true"] { + border-color: var(--pagefind-ui-primary); + color: var(--pagefind-ui-primary); +} \ No newline at end of file diff --git a/pr-preview/pr-1029/pagefind/pagefind-modular-ui.js b/pr-preview/pr-1029/pagefind/pagefind-modular-ui.js new file mode 100644 index 000000000..93019091c --- /dev/null +++ b/pr-preview/pr-1029/pagefind/pagefind-modular-ui.js @@ -0,0 +1,8 @@ +(()=>{var b=Object.defineProperty;var w=(i,e)=>{for(var t in e)b(i,t,{get:e[t],enumerable:!0})};var f={};w(f,{FilterPills:()=>h,Input:()=>l,Instance:()=>p,ResultList:()=>a,Summary:()=>o});var r=class i{constructor(e){this.element=document.createElement(e)}id(e){return this.element.id=e,this}class(e){return this.element.classList.add(e),this}attrs(e){for(let[t,s]of Object.entries(e))this.element.setAttribute(t,s);return this}text(e){return this.element.innerText=e,this}html(e){return this.element.innerHTML=e,this}handle(e,t){return this.element.addEventListener(e,t),this}addTo(e){return e instanceof i?e.element.appendChild(this.element):e.appendChild(this.element),this.element}};var T=async(i=100)=>new Promise(e=>setTimeout(e,i)),l=class{constructor(e={}){if(this.inputEl=null,this.clearEl=null,this.instance=null,this.searchID=0,this.debounceTimeoutMs=e.debounceTimeoutMs??300,e.inputElement){if(e.containerElement){console.warn("[Pagefind Input component]: inputElement and containerElement both supplied. Ignoring the container option.");return}this.initExisting(e.inputElement)}else if(e.containerElement)this.initContainer(e.containerElement);else{console.error("[Pagefind Input component]: No selector supplied for containerElement or inputElement");return}this.inputEl.addEventListener("input",async t=>{if(this.instance&&typeof t?.target?.value=="string"){this.updateState(t.target.value);let s=++this.searchID;if(await T(this.debounceTimeoutMs),s!==this.searchID)return null;this.instance?.triggerSearch(t.target.value)}}),this.inputEl.addEventListener("keydown",t=>{t.key==="Escape"&&(++this.searchID,this.inputEl.value="",this.instance?.triggerSearch(""),this.updateState("")),t.key==="Enter"&&t.preventDefault()}),this.inputEl.addEventListener("focus",()=>{this.instance?.triggerLoad()})}initContainer(e){let t=document.querySelector(e);if(!t){console.error(`[Pagefind Input component]: No container found for ${e} selector`);return}if(t.tagName==="INPUT")console.warn(`[Pagefind Input component]: Encountered input element for ${e} when a container was expected`),console.warn("[Pagefind Input component]: Treating containerElement option as inputElement and proceeding"),this.initExisting(e);else{t.innerHTML="";let s=0;for(;document.querySelector(`#pfmod-input-${s}`);)s+=1;let n=new r("form").class("pagefind-modular-input-wrapper").attrs({role:"search","aria-label":"Search this site",action:"javascript:void(0);"});new r("label").attrs({for:`pfmod-input-${s}`,"data-pfmod-sr-hidden":"true"}).text("Search this site").addTo(n),this.inputEl=new r("input").id(`pfmod-input-${s}`).class("pagefind-modular-input").attrs({autocapitalize:"none",enterkeyhint:"search"}).addTo(n),this.clearEl=new r("button").class("pagefind-modular-input-clear").attrs({"data-pfmod-suppressed":"true"}).text("Clear").handle("click",()=>{this.inputEl.value="",this.instance.triggerSearch(""),this.updateState("")}).addTo(n),n.addTo(t)}}initExisting(e){let t=document.querySelector(e);if(!t){console.error(`[Pagefind Input component]: No input element found for ${e} selector`);return}if(t.tagName!=="INPUT"){console.error(`[Pagefind Input component]: Expected ${e} to be an element`);return}this.inputEl=t}updateState(e){this.clearEl&&(e&&e?.length?this.clearEl.removeAttribute("data-pfmod-suppressed"):this.clearEl.setAttribute("data-pfmod-suppressed","true"))}register(e){this.instance=e,this.instance.on("search",(t,s)=>{this.inputEl&&document.activeElement!==this.inputEl&&(this.inputEl.value=t,this.updateState(t))})}focus(){this.inputEl&&this.inputEl.focus()}};var g=i=>{if(i instanceof Element)return[i];if(Array.isArray(i)&&i.every(e=>e instanceof Element))return i;if(typeof i=="string"||i instanceof String){let e=document.createElement("div");return e.innerHTML=i,[...e.childNodes]}else return console.error(`[Pagefind ResultList component]: Expected template function to return an HTML element or string, got ${typeof i}`),[]},v=()=>{let i=(e=30)=>". ".repeat(Math.floor(10+Math.random()*e));return`
    • +
      +
      +

      ${i(30)}

      +

      ${i(40)}

      +
      +
    • `},y=i=>{let e=new r("li").class("pagefind-modular-list-result"),t=new r("div").class("pagefind-modular-list-thumb").addTo(e);i?.meta?.image&&new r("img").class("pagefind-modular-list-image").attrs({src:i.meta.image,alt:i.meta.image_alt||i.meta.title}).addTo(t);let s=new r("div").class("pagefind-modular-list-inner").addTo(e),n=new r("p").class("pagefind-modular-list-title").addTo(s);return new r("a").class("pagefind-modular-list-link").text(i.meta?.title).attrs({href:i.meta?.url||i.url}).addTo(n),new r("p").class("pagefind-modular-list-excerpt").html(i.excerpt).addTo(s),e.element},E=i=>{if(!(i instanceof HTMLElement))return null;let e=window.getComputedStyle(i).overflowY;return e!=="visible"&&e!=="hidden"?i:E(i.parentNode)},d=class{constructor(e={}){this.rawResult=e.result,this.placeholderNodes=e.placeholderNodes,this.resultFn=e.resultFn,this.intersectionEl=e.intersectionEl,this.result=null,this.waitForIntersection()}waitForIntersection(){if(!this.placeholderNodes?.length)return;let e={root:this.intersectionEl,rootMargin:"0px",threshold:.01};new IntersectionObserver((s,n)=>{this.result===null&&s?.[0]?.isIntersecting&&(this.load(),n.disconnect())},e).observe(this.placeholderNodes[0])}async load(){if(!this.placeholderNodes?.length)return;this.result=await this.rawResult.data();let e=this.resultFn(this.result),t=g(e);for(;this.placeholderNodes.length>1;)this.placeholderNodes.pop().remove();this.placeholderNodes[0].replaceWith(...t)}},a=class{constructor(e){if(this.intersectionEl=document.body,this.containerEl=null,this.results=[],this.placeholderTemplate=e.placeholderTemplate??v,this.resultTemplate=e.resultTemplate??y,e.containerElement)this.initContainer(e.containerElement);else{console.error("[Pagefind ResultList component]: No selector supplied for containerElement");return}}initContainer(e){let t=document.querySelector(e);if(!t){console.error(`[Pagefind ResultList component]: No container found for ${e} selector`);return}this.containerEl=t}append(e){for(let t of e)this.containerEl.appendChild(t)}register(e){e.on("results",t=>{this.containerEl&&(this.containerEl.innerHTML="",this.intersectionEl=E(this.containerEl),this.results=t.results.map(s=>{let n=g(this.placeholderTemplate());return this.append(n),new d({result:s,placeholderNodes:n,resultFn:this.resultTemplate,intersectionEl:this.intersectionEl})}))}),e.on("loading",()=>{this.containerEl&&(this.containerEl.innerHTML="")})}};var o=class{constructor(e={}){if(this.containerEl=null,this.defaultMessage=e.defaultMessage??"",this.term="",e.containerElement)this.initContainer(e.containerElement);else{console.error("[Pagefind Summary component]: No selector supplied for containerElement");return}}initContainer(e){let t=document.querySelector(e);if(!t){console.error(`[Pagefind Summary component]: No container found for ${e} selector`);return}this.containerEl=t,this.containerEl.innerText=this.defaultMessage}register(e){e.on("search",(t,s)=>{this.term=t}),e.on("results",t=>{if(!this.containerEl||!t)return;if(!this.term){this.containerEl.innerText=this.defaultMessage;return}let s=t?.results?.length??0;this.containerEl.innerText=`${s} result${s===1?"":"s"} for ${this.term}`}),e.on("loading",()=>{this.containerEl&&(this.containerEl.innerText=`Searching for ${this.term}...`)})}};var h=class{constructor(e={}){if(this.instance=null,this.wrapper=null,this.pillContainer=null,this.available={},this.selected=["All"],this.total=0,this.filterMemo="",this.filter=e.filter,this.ordering=e.ordering??null,this.alwaysShow=e.alwaysShow??!1,this.selectMultiple=e.selectMultiple??!1,!this.filter?.length){console.error("[Pagefind FilterPills component]: No filter option supplied, nothing to display");return}if(e.containerElement)this.initContainer(e.containerElement);else{console.error("[Pagefind FilterPills component]: No selector supplied for containerElement");return}}initContainer(e){let t=document.querySelector(e);if(!t){console.error(`[Pagefind FilterPills component]: No container found for ${e} selector`);return}t.innerHTML="";let s=`pagefind_modular_filter_pills_${this.filter}`,n=new r("div").class("pagefind-modular-filter-pills-wrapper").attrs({role:"group","aria-labelledby":s});this.alwaysShow||n.attrs({"data-pfmod-hidden":!0}),new r("div").id(s).class("pagefind-modular-filter-pills-label").attrs({"data-pfmod-sr-hidden":!0}).text(`Filter results by ${this.filter}`).addTo(n),this.pillContainer=new r("div").class("pagefind-modular-filter-pills").addTo(n),this.wrapper=n.addTo(t)}update(){let e=this.available.map(t=>t[0]).join("~");e==this.filterMemo?this.updateExisting():(this.renderNew(),this.filterMemo=e)}pushFilters(){let e=this.selected.filter(t=>t!=="All");this.instance.triggerFilter(this.filter,e)}pillInner(e,t){return this.total?`${e} (${t})`:`${e}`}renderNew(){this.available.forEach(([e,t])=>{new r("button").class("pagefind-modular-filter-pill").html(this.pillInner(e,t)).attrs({"aria-pressed":this.selected.includes(e),type:"button"}).handle("click",()=>{e==="All"?this.selected=["All"]:this.selected.includes(e)?this.selected=this.selected.filter(s=>s!==e):this.selectMultiple?this.selected.push(e):this.selected=[e],this.selected?.length?this.selected?.length>1&&(this.selected=this.selected.filter(s=>s!=="All")):this.selected=["All"],this.update(),this.pushFilters()}).addTo(this.pillContainer)})}updateExisting(){let e=[...this.pillContainer.childNodes];this.available.forEach(([t,s],n)=>{e[n].innerHTML=this.pillInner(t,s),e[n].setAttribute("aria-pressed",this.selected.includes(t))})}register(e){this.instance=e,this.instance.on("filters",t=>{if(!this.pillContainer)return;this.selectMultiple?t=t.available:t=t.total;let s=t[this.filter];if(!s){console.warn(`[Pagefind FilterPills component]: No possible values found for the ${this.filter} filter`);return}this.available=Object.entries(s),Array.isArray(this.ordering)?this.available.sort((n,c)=>{let m=this.ordering.indexOf(n[0]),_=this.ordering.indexOf(c[0]);return(m===-1?1/0:m)-(_===-1?1/0:_)}):this.available.sort((n,c)=>n[0].localeCompare(c[0])),this.available.unshift(["All",this.total]),this.update()}),e.on("results",t=>{this.pillContainer&&(this.total=t?.unfilteredResultCount||0,this.available?.[0]?.[0]==="All"&&(this.available[0][1]=this.total),this.total||this.alwaysShow?this.wrapper.removeAttribute("data-pfmod-hidden"):this.wrapper.setAttribute("data-pfmod-hidden","true"),this.update())})}};var F=async(i=50)=>await new Promise(e=>setTimeout(e,i)),u;try{u=new URL(document.currentScript.src).pathname.match(/^(.*\/)(?:pagefind-)?modular-ui.js.*$/)[1]}catch{u="/pagefind/"}var p=class{constructor(e={}){this.__pagefind__=null,this.__initializing__=null,this.__searchID__=0,this.__hooks__={search:[],filters:[],loading:[],results:[]},this.components=[],this.searchTerm="",this.searchFilters={},this.searchResult={},this.availableFilters=null,this.totalFilters=null,this.options={bundlePath:e.bundlePath??u,mergeIndex:e.mergeIndex??[]},delete e.bundlePath,delete e.resetStyles,delete e.processResult,delete e.processTerm,delete e.debounceTimeoutMs,delete e.mergeIndex,delete e.translations,this.pagefindOptions=e}add(e){e?.register?.(this),this.components.push(e)}on(e,t){if(!this.__hooks__[e]){let s=Object.keys(this.__hooks__).join(", ");console.error(`[Pagefind Composable]: Unknown event type ${e}. Supported events: [${s}]`);return}if(typeof t!="function"){console.error(`[Pagefind Composable]: Expected callback to be a function, received ${typeof t}`);return}this.__hooks__[e].push(t)}triggerLoad(){this.__load__()}triggerSearch(e){this.searchTerm=e,this.__dispatch__("search",e,this.searchFilters),this.__search__(e,this.searchFilters)}triggerSearchWithFilters(e,t){this.searchTerm=e,this.searchFilters=t,this.__dispatch__("search",e,t),this.__search__(e,t)}triggerFilters(e){this.searchFilters=e,this.__dispatch__("search",this.searchTerm,e),this.__search__(this.searchTerm,e)}triggerFilter(e,t){this.searchFilters=this.searchFilters||{},this.searchFilters[e]=t,this.__dispatch__("search",this.searchTerm,this.searchFilters),this.__search__(this.searchTerm,this.searchFilters)}__dispatch__(e,...t){this.__hooks__[e]?.forEach(s=>s?.(...t))}async __clear__(){this.__dispatch__("results",{results:[],unfilteredTotalCount:0}),this.availableFilters=await this.__pagefind__.filters(),this.totalFilters=this.availableFilters,this.__dispatch__("filters",{available:this.availableFilters,total:this.totalFilters})}async __search__(e,t){this.__dispatch__("loading"),await this.__load__();let s=++this.__searchID__;if(!e||!e.length)return this.__clear__();let n=await this.__pagefind__.search(e,{filters:t});n&&this.__searchID__===s&&(n.filters&&Object.keys(n.filters)?.length&&(this.availableFilters=n.filters,this.totalFilters=n.totalFilters,this.__dispatch__("filters",{available:this.availableFilters,total:this.totalFilters})),this.searchResult=n,this.__dispatch__("results",this.searchResult))}async __load__(){if(this.__initializing__){for(;!this.__pagefind__;)await F(50);return}if(this.__initializing__=!0,!this.__pagefind__){let e;try{e=await import(`${this.options.bundlePath}pagefind.js`)}catch(t){console.error(t),console.error([`Pagefind couldn't be loaded from ${this.options.bundlePath}pagefind.js`,"You can configure this by passing a bundlePath option to PagefindComposable Instance",`[DEBUG: Loaded from ${document?.currentScript?.src??"no known script location"}]`].join(` +`))}await e.options(this.pagefindOptions||{});for(let t of this.options.mergeIndex){if(!t.bundlePath)throw new Error("mergeIndex requires a bundlePath parameter");let s=t.bundlePath;delete t.bundlePath,await e.mergeIndex(s,t)}this.__pagefind__=e}this.availableFilters=await this.__pagefind__.filters(),this.totalFilters=this.availableFilters,this.__dispatch__("filters",{available:this.availableFilters,total:this.totalFilters})}};window.PagefindModularUI=f;})(); diff --git a/pr-preview/pr-1029/pagefind/pagefind-ui.css b/pr-preview/pr-1029/pagefind/pagefind-ui.css new file mode 100644 index 000000000..d7984a98a --- /dev/null +++ b/pr-preview/pr-1029/pagefind/pagefind-ui.css @@ -0,0 +1 @@ +.pagefind-ui__result.svelte-j9e30.svelte-j9e30{list-style-type:none;display:flex;align-items:flex-start;gap:min(calc(40px * var(--pagefind-ui-scale)),3%);padding:calc(30px * var(--pagefind-ui-scale)) 0 calc(40px * var(--pagefind-ui-scale));border-top:solid var(--pagefind-ui-border-width) var(--pagefind-ui-border)}.pagefind-ui__result.svelte-j9e30.svelte-j9e30:last-of-type{border-bottom:solid var(--pagefind-ui-border-width) var(--pagefind-ui-border)}.pagefind-ui__result-thumb.svelte-j9e30.svelte-j9e30{width:min(30%,calc((30% - (100px * var(--pagefind-ui-scale))) * 100000));max-width:calc(120px * var(--pagefind-ui-scale));margin-top:calc(10px * var(--pagefind-ui-scale));aspect-ratio:var(--pagefind-ui-image-box-ratio);position:relative}.pagefind-ui__result-image.svelte-j9e30.svelte-j9e30{display:block;position:absolute;left:50%;transform:translate(-50%);font-size:0;width:auto;height:auto;max-width:100%;max-height:100%;border-radius:var(--pagefind-ui-image-border-radius)}.pagefind-ui__result-inner.svelte-j9e30.svelte-j9e30{flex:1;display:flex;flex-direction:column;align-items:flex-start;margin-top:calc(10px * var(--pagefind-ui-scale))}.pagefind-ui__result-title.svelte-j9e30.svelte-j9e30{display:inline-block;font-weight:700;font-size:calc(21px * var(--pagefind-ui-scale));margin-top:0;margin-bottom:0}.pagefind-ui__result-title.svelte-j9e30 .pagefind-ui__result-link.svelte-j9e30{color:var(--pagefind-ui-text);text-decoration:none}.pagefind-ui__result-title.svelte-j9e30 .pagefind-ui__result-link.svelte-j9e30:hover{text-decoration:underline}.pagefind-ui__result-excerpt.svelte-j9e30.svelte-j9e30{display:inline-block;font-weight:400;font-size:calc(16px * var(--pagefind-ui-scale));margin-top:calc(4px * var(--pagefind-ui-scale));margin-bottom:0;min-width:calc(250px * var(--pagefind-ui-scale))}.pagefind-ui__loading.svelte-j9e30.svelte-j9e30{color:var(--pagefind-ui-text);background-color:var(--pagefind-ui-text);border-radius:var(--pagefind-ui-border-radius);opacity:.1;pointer-events:none}.pagefind-ui__result-tags.svelte-j9e30.svelte-j9e30{list-style-type:none;padding:0;display:flex;gap:calc(20px * var(--pagefind-ui-scale));flex-wrap:wrap;margin-top:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__result-tag.svelte-j9e30.svelte-j9e30{padding:calc(4px * var(--pagefind-ui-scale)) calc(8px * var(--pagefind-ui-scale));font-size:calc(14px * var(--pagefind-ui-scale));border-radius:var(--pagefind-ui-border-radius);background-color:var(--pagefind-ui-tag)}.pagefind-ui__result.svelte-4xnkmf.svelte-4xnkmf{list-style-type:none;display:flex;align-items:flex-start;gap:min(calc(40px * var(--pagefind-ui-scale)),3%);padding:calc(30px * var(--pagefind-ui-scale)) 0 calc(40px * var(--pagefind-ui-scale));border-top:solid var(--pagefind-ui-border-width) var(--pagefind-ui-border)}.pagefind-ui__result.svelte-4xnkmf.svelte-4xnkmf:last-of-type{border-bottom:solid var(--pagefind-ui-border-width) var(--pagefind-ui-border)}.pagefind-ui__result-nested.svelte-4xnkmf.svelte-4xnkmf{display:flex;flex-direction:column;padding-left:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__result-nested.svelte-4xnkmf.svelte-4xnkmf:first-of-type{padding-top:calc(10px * var(--pagefind-ui-scale))}.pagefind-ui__result-nested.svelte-4xnkmf .pagefind-ui__result-link.svelte-4xnkmf{font-size:.9em;position:relative}.pagefind-ui__result-nested.svelte-4xnkmf .pagefind-ui__result-link.svelte-4xnkmf:before{content:"\2937 ";position:absolute;top:0;right:calc(100% + .1em)}.pagefind-ui__result-thumb.svelte-4xnkmf.svelte-4xnkmf{width:min(30%,calc((30% - (100px * var(--pagefind-ui-scale))) * 100000));max-width:calc(120px * var(--pagefind-ui-scale));margin-top:calc(10px * var(--pagefind-ui-scale));aspect-ratio:var(--pagefind-ui-image-box-ratio);position:relative}.pagefind-ui__result-image.svelte-4xnkmf.svelte-4xnkmf{display:block;position:absolute;left:50%;transform:translate(-50%);font-size:0;width:auto;height:auto;max-width:100%;max-height:100%;border-radius:var(--pagefind-ui-image-border-radius)}.pagefind-ui__result-inner.svelte-4xnkmf.svelte-4xnkmf{flex:1;display:flex;flex-direction:column;align-items:flex-start;margin-top:calc(10px * var(--pagefind-ui-scale))}.pagefind-ui__result-title.svelte-4xnkmf.svelte-4xnkmf{display:inline-block;font-weight:700;font-size:calc(21px * var(--pagefind-ui-scale));margin-top:0;margin-bottom:0}.pagefind-ui__result-title.svelte-4xnkmf .pagefind-ui__result-link.svelte-4xnkmf{color:var(--pagefind-ui-text);text-decoration:none}.pagefind-ui__result-title.svelte-4xnkmf .pagefind-ui__result-link.svelte-4xnkmf:hover{text-decoration:underline}.pagefind-ui__result-excerpt.svelte-4xnkmf.svelte-4xnkmf{display:inline-block;font-weight:400;font-size:calc(16px * var(--pagefind-ui-scale));margin-top:calc(4px * var(--pagefind-ui-scale));margin-bottom:0;min-width:calc(250px * var(--pagefind-ui-scale))}.pagefind-ui__loading.svelte-4xnkmf.svelte-4xnkmf{color:var(--pagefind-ui-text);background-color:var(--pagefind-ui-text);border-radius:var(--pagefind-ui-border-radius);opacity:.1;pointer-events:none}.pagefind-ui__result-tags.svelte-4xnkmf.svelte-4xnkmf{list-style-type:none;padding:0;display:flex;gap:calc(20px * var(--pagefind-ui-scale));flex-wrap:wrap;margin-top:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__result-tag.svelte-4xnkmf.svelte-4xnkmf{padding:calc(4px * var(--pagefind-ui-scale)) calc(8px * var(--pagefind-ui-scale));font-size:calc(14px * var(--pagefind-ui-scale));border-radius:var(--pagefind-ui-border-radius);background-color:var(--pagefind-ui-tag)}legend.svelte-1v2r7ls.svelte-1v2r7ls{position:absolute;clip:rect(0 0 0 0)}.pagefind-ui__filter-panel.svelte-1v2r7ls.svelte-1v2r7ls{min-width:min(calc(260px * var(--pagefind-ui-scale)),100%);flex:1;display:flex;flex-direction:column;margin-top:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__filter-group.svelte-1v2r7ls.svelte-1v2r7ls{border:0;padding:0}.pagefind-ui__filter-block.svelte-1v2r7ls.svelte-1v2r7ls{padding:0;display:block;border-bottom:solid calc(2px * var(--pagefind-ui-scale)) var(--pagefind-ui-border);padding:calc(20px * var(--pagefind-ui-scale)) 0}.pagefind-ui__filter-name.svelte-1v2r7ls.svelte-1v2r7ls{font-size:calc(16px * var(--pagefind-ui-scale));position:relative;display:flex;align-items:center;list-style:none;font-weight:700;cursor:pointer;height:calc(24px * var(--pagefind-ui-scale))}.pagefind-ui__filter-name.svelte-1v2r7ls.svelte-1v2r7ls::-webkit-details-marker{display:none}.pagefind-ui__filter-name.svelte-1v2r7ls.svelte-1v2r7ls:after{position:absolute;content:"";right:calc(6px * var(--pagefind-ui-scale));top:50%;width:calc(8px * var(--pagefind-ui-scale));height:calc(8px * var(--pagefind-ui-scale));border:solid calc(2px * var(--pagefind-ui-scale)) currentColor;border-right:0;border-top:0;transform:translateY(-70%) rotate(-45deg)}.pagefind-ui__filter-block[open].svelte-1v2r7ls .pagefind-ui__filter-name.svelte-1v2r7ls:after{transform:translateY(-70%) rotate(-225deg)}.pagefind-ui__filter-group.svelte-1v2r7ls.svelte-1v2r7ls{display:flex;flex-direction:column;gap:calc(20px * var(--pagefind-ui-scale));padding-top:calc(30px * var(--pagefind-ui-scale))}.pagefind-ui__filter-value.svelte-1v2r7ls.svelte-1v2r7ls{position:relative;display:flex;align-items:center;gap:calc(8px * var(--pagefind-ui-scale))}.pagefind-ui__filter-value.svelte-1v2r7ls.svelte-1v2r7ls:before{position:absolute;content:"";top:50%;left:calc(8px * var(--pagefind-ui-scale));width:0px;height:0px;border:solid 1px #fff;opacity:0;transform:translate(calc(4.5px * var(--pagefind-ui-scale) * -1),calc(.8px * var(--pagefind-ui-scale))) skew(-5deg) rotate(-45deg);transform-origin:top left;border-top:0;border-right:0;pointer-events:none}.pagefind-ui__filter-value.pagefind-ui__filter-value--checked.svelte-1v2r7ls.svelte-1v2r7ls:before{opacity:1;width:calc(9px * var(--pagefind-ui-scale));height:calc(4px * var(--pagefind-ui-scale));transition:width .1s ease-out .1s,height .1s ease-in}.pagefind-ui__filter-checkbox.svelte-1v2r7ls.svelte-1v2r7ls{margin:0;width:calc(16px * var(--pagefind-ui-scale));height:calc(16px * var(--pagefind-ui-scale));border:solid 1px var(--pagefind-ui-border);appearance:none;-webkit-appearance:none;border-radius:calc(var(--pagefind-ui-border-radius) / 2);background-color:var(--pagefind-ui-background);cursor:pointer}.pagefind-ui__filter-checkbox.svelte-1v2r7ls.svelte-1v2r7ls:checked{background-color:var(--pagefind-ui-primary);border:solid 1px var(--pagefind-ui-primary)}.pagefind-ui__filter-label.svelte-1v2r7ls.svelte-1v2r7ls{cursor:pointer;font-size:calc(16px * var(--pagefind-ui-scale));font-weight:400}.pagefind-ui--reset *:where(:not(html,iframe,canvas,img,svg,video):not(svg *,symbol *)){all:unset;display:revert;outline:revert}.pagefind-ui--reset *,.pagefind-ui--reset *:before,.pagefind-ui--reset *:after{box-sizing:border-box}.pagefind-ui--reset a,.pagefind-ui--reset button{cursor:revert}.pagefind-ui--reset ol,.pagefind-ui--reset ul,.pagefind-ui--reset menu{list-style:none}.pagefind-ui--reset img{max-width:100%}.pagefind-ui--reset table{border-collapse:collapse}.pagefind-ui--reset input,.pagefind-ui--reset textarea{-webkit-user-select:auto}.pagefind-ui--reset textarea{white-space:revert}.pagefind-ui--reset meter{-webkit-appearance:revert;appearance:revert}.pagefind-ui--reset ::placeholder{color:unset}.pagefind-ui--reset :where([hidden]){display:none}.pagefind-ui--reset :where([contenteditable]:not([contenteditable="false"])){-moz-user-modify:read-write;-webkit-user-modify:read-write;overflow-wrap:break-word;-webkit-line-break:after-white-space;-webkit-user-select:auto}.pagefind-ui--reset :where([draggable="true"]){-webkit-user-drag:element}.pagefind-ui--reset mark{all:revert}:root{--pagefind-ui-scale:.8;--pagefind-ui-primary:#393939;--pagefind-ui-text:#393939;--pagefind-ui-background:#ffffff;--pagefind-ui-border:#eeeeee;--pagefind-ui-tag:#eeeeee;--pagefind-ui-border-width:2px;--pagefind-ui-border-radius:8px;--pagefind-ui-image-border-radius:8px;--pagefind-ui-image-box-ratio:3 / 2;--pagefind-ui-font:system, -apple-system, "BlinkMacSystemFont", ".SFNSText-Regular", "San Francisco", "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", "Ubuntu", "arial", sans-serif}.pagefind-ui.svelte-e9gkc3{width:100%;color:var(--pagefind-ui-text);font-family:var(--pagefind-ui-font)}.pagefind-ui__hidden.svelte-e9gkc3{display:none!important}.pagefind-ui__suppressed.svelte-e9gkc3{opacity:0;pointer-events:none}.pagefind-ui__form.svelte-e9gkc3{position:relative}.pagefind-ui__form.svelte-e9gkc3:before{background-color:var(--pagefind-ui-text);width:calc(18px * var(--pagefind-ui-scale));height:calc(18px * var(--pagefind-ui-scale));top:calc(23px * var(--pagefind-ui-scale));left:calc(20px * var(--pagefind-ui-scale));content:"";position:absolute;display:block;opacity:.7;-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.7549 11.255H11.9649L11.6849 10.985C12.6649 9.845 13.2549 8.365 13.2549 6.755C13.2549 3.165 10.3449 0.255005 6.75488 0.255005C3.16488 0.255005 0.254883 3.165 0.254883 6.755C0.254883 10.345 3.16488 13.255 6.75488 13.255C8.36488 13.255 9.84488 12.665 10.9849 11.685L11.2549 11.965V12.755L16.2549 17.745L17.7449 16.255L12.7549 11.255ZM6.75488 11.255C4.26488 11.255 2.25488 9.245 2.25488 6.755C2.25488 4.26501 4.26488 2.255 6.75488 2.255C9.24488 2.255 11.2549 4.26501 11.2549 6.755C11.2549 9.245 9.24488 11.255 6.75488 11.255Z' fill='%23000000'/%3E%3C/svg%3E%0A");mask-image:url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.7549 11.255H11.9649L11.6849 10.985C12.6649 9.845 13.2549 8.365 13.2549 6.755C13.2549 3.165 10.3449 0.255005 6.75488 0.255005C3.16488 0.255005 0.254883 3.165 0.254883 6.755C0.254883 10.345 3.16488 13.255 6.75488 13.255C8.36488 13.255 9.84488 12.665 10.9849 11.685L11.2549 11.965V12.755L16.2549 17.745L17.7449 16.255L12.7549 11.255ZM6.75488 11.255C4.26488 11.255 2.25488 9.245 2.25488 6.755C2.25488 4.26501 4.26488 2.255 6.75488 2.255C9.24488 2.255 11.2549 4.26501 11.2549 6.755C11.2549 9.245 9.24488 11.255 6.75488 11.255Z' fill='%23000000'/%3E%3C/svg%3E%0A");-webkit-mask-size:100%;mask-size:100%;z-index:9;pointer-events:none}.pagefind-ui__search-input.svelte-e9gkc3{height:calc(64px * var(--pagefind-ui-scale));padding:0 calc(70px * var(--pagefind-ui-scale)) 0 calc(54px * var(--pagefind-ui-scale));background-color:var(--pagefind-ui-background);border:var(--pagefind-ui-border-width) solid var(--pagefind-ui-border);border-radius:var(--pagefind-ui-border-radius);font-size:calc(21px * var(--pagefind-ui-scale));position:relative;appearance:none;-webkit-appearance:none;display:flex;width:100%;box-sizing:border-box;font-weight:700}.pagefind-ui__search-input.svelte-e9gkc3::placeholder{opacity:.2}.pagefind-ui__search-clear.svelte-e9gkc3{position:absolute;top:calc(3px * var(--pagefind-ui-scale));right:calc(3px * var(--pagefind-ui-scale));height:calc(58px * var(--pagefind-ui-scale));padding:0 calc(15px * var(--pagefind-ui-scale)) 0 calc(2px * var(--pagefind-ui-scale));color:var(--pagefind-ui-text);font-size:calc(14px * var(--pagefind-ui-scale));cursor:pointer;background-color:var(--pagefind-ui-background);border-radius:var(--pagefind-ui-border-radius)}.pagefind-ui__drawer.svelte-e9gkc3{gap:calc(60px * var(--pagefind-ui-scale));display:flex;flex-direction:row;flex-wrap:wrap}.pagefind-ui__results-area.svelte-e9gkc3{min-width:min(calc(400px * var(--pagefind-ui-scale)),100%);flex:1000;margin-top:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__results.svelte-e9gkc3{padding:0}.pagefind-ui__message.svelte-e9gkc3{box-sizing:content-box;font-size:calc(16px * var(--pagefind-ui-scale));height:calc(24px * var(--pagefind-ui-scale));padding:calc(20px * var(--pagefind-ui-scale)) 0;display:flex;align-items:center;font-weight:700;margin-top:0}.pagefind-ui__button.svelte-e9gkc3{margin-top:calc(40px * var(--pagefind-ui-scale));border:var(--pagefind-ui-border-width) solid var(--pagefind-ui-border);border-radius:var(--pagefind-ui-border-radius);height:calc(48px * var(--pagefind-ui-scale));padding:0 calc(12px * var(--pagefind-ui-scale));font-size:calc(16px * var(--pagefind-ui-scale));color:var(--pagefind-ui-primary);background:var(--pagefind-ui-background);width:100%;text-align:center;font-weight:700;cursor:pointer}.pagefind-ui__button.svelte-e9gkc3:hover{border-color:var(--pagefind-ui-primary);color:var(--pagefind-ui-primary);background:var(--pagefind-ui-background)} diff --git a/pr-preview/pr-1029/pagefind/pagefind-ui.js b/pr-preview/pr-1029/pagefind/pagefind-ui.js new file mode 100644 index 000000000..a20be5510 --- /dev/null +++ b/pr-preview/pr-1029/pagefind/pagefind-ui.js @@ -0,0 +1,2 @@ +(()=>{var Es=Object.defineProperty;var S=(n,e)=>{for(var t in e)Es(n,t,{get:e[t],enumerable:!0})};function j(){}function _t(n){return n()}function un(){return Object.create(null)}function G(n){n.forEach(_t)}function xe(n){return typeof n=="function"}function K(n,e){return n!=n?e==e:n!==e||n&&typeof n=="object"||typeof n=="function"}var Xe;function ie(n,e){return Xe||(Xe=document.createElement("a")),Xe.href=e,n===Xe.href}function cn(n){return Object.keys(n).length===0}var _n=typeof window<"u"?window:typeof globalThis<"u"?globalThis:global,de=class{constructor(e){this.options=e,this._listeners="WeakMap"in _n?new WeakMap:void 0}observe(e,t){return this._listeners.set(e,t),this._getObserver().observe(e,this.options),()=>{this._listeners.delete(e),this._observer.unobserve(e)}}_getObserver(){var e;return(e=this._observer)!==null&&e!==void 0?e:this._observer=new ResizeObserver(t=>{var s;for(let l of t)de.entries.set(l.target,l),(s=this._listeners.get(l.target))===null||s===void 0||s(l)})}};de.entries="WeakMap"in _n?new WeakMap:void 0;var fn=!1;function Rs(){fn=!0}function bs(){fn=!1}function b(n,e){n.appendChild(e)}function y(n,e,t){n.insertBefore(e,t||null)}function k(n){n.parentNode&&n.parentNode.removeChild(n)}function Q(n,e){for(let t=0;tn.removeEventListener(e,t,s)}function E(n,e,t){t==null?n.removeAttribute(e):n.getAttribute(e)!==t&&n.setAttribute(e,t)}function Cs(n){return Array.from(n.childNodes)}function N(n,e){e=""+e,n.data!==e&&(n.data=e)}function ft(n,e){n.value=e??""}function B(n,e,t){n.classList[t?"add":"remove"](e)}var $e=class{constructor(e=!1){this.is_svg=!1,this.is_svg=e,this.e=this.n=null}c(e){this.h(e)}m(e,t,s=null){this.e||(this.is_svg?this.e=Ts(t.nodeName):this.e=C(t.nodeType===11?"TEMPLATE":t.nodeName),this.t=t.tagName!=="TEMPLATE"?t:t.content,this.c(e)),this.i(s)}h(e){this.e.innerHTML=e,this.n=Array.from(this.e.nodeName==="TEMPLATE"?this.e.content.childNodes:this.e.childNodes)}i(e){for(let t=0;tn.indexOf(s)===-1?e.push(s):t.push(s)),t.forEach(s=>s()),le=e}var Qe=new Set,ee;function ae(){ee={r:0,c:[],p:ee}}function oe(){ee.r||G(ee.c),ee=ee.p}function D(n,e){n&&n.i&&(Qe.delete(n),n.i(e))}function P(n,e,t,s){if(n&&n.o){if(Qe.has(n))return;Qe.add(n),ee.c.push(()=>{Qe.delete(n),s&&(t&&n.d(1),s())}),n.o(e)}else s&&s()}function pn(n,e){P(n,1,1,()=>{e.delete(n.key)})}function gn(n,e,t,s,l,r,i,a,o,h,c,m){let p=n.length,d=r.length,_=p,u={};for(;_--;)u[n[_].key]=_;let f=[],T=new Map,R=new Map,M=[];for(_=d;_--;){let v=m(l,r,_),F=t(v),O=i.get(F);O?s&&M.push(()=>O.p(v,e)):(O=h(F,v),O.c()),T.set(F,f[_]=O),F in u&&R.set(F,Math.abs(_-u[F]))}let U=new Set,X=new Set;function W(v){D(v,1),v.m(a,c),i.set(v.key,v),c=v.first,d--}for(;p&&d;){let v=f[d-1],F=n[p-1],O=v.key,V=F.key;v===F?(c=v.first,p--,d--):T.has(V)?!i.has(O)||U.has(O)?W(v):X.has(V)?p--:R.get(O)>R.get(V)?(X.add(O),W(v)):(U.add(V),p--):(o(F,i),p--)}for(;p--;){let v=n[p];T.has(v.key)||o(v,i)}for(;d;)W(f[d-1]);return G(M),f}var As=["allowfullscreen","allowpaymentrequest","async","autofocus","autoplay","checked","controls","default","defer","disabled","formnovalidate","hidden","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","selected"],oa=new Set([...As]);function En(n,e,t){let s=n.$$.props[e];s!==void 0&&(n.$$.bound[s]=t,t(n.$$.ctx[s]))}function et(n){n&&n.c()}function me(n,e,t,s){let{fragment:l,after_update:r}=n.$$;l&&l.m(e,t),s||ct(()=>{let i=n.$$.on_mount.map(_t).filter(xe);n.$$.on_destroy?n.$$.on_destroy.push(...i):G(i),n.$$.on_mount=[]}),r.forEach(ct)}function ue(n,e){let t=n.$$;t.fragment!==null&&(Ms(t.after_update),G(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function vs(n,e){n.$$.dirty[0]===-1&&(se.push(n),ys(),n.$$.dirty.fill(0)),n.$$.dirty[e/31|0]|=1<{let _=d.length?d[0]:p;return h.ctx&&l(h.ctx[m],h.ctx[m]=_)&&(!h.skip_bound&&h.bound[m]&&h.bound[m](_),c&&vs(n,m)),p}):[],h.update(),c=!0,G(h.before_update),h.fragment=s?s(h.ctx):!1,e.target){if(e.hydrate){Rs();let m=Cs(e.target);h.fragment&&h.fragment.l(m),m.forEach(k)}else h.fragment&&h.fragment.c();e.intro&&D(n.$$.fragment),me(n,e.target,e.anchor,e.customElement),bs(),mn()}fe(o)}var ws;typeof HTMLElement=="function"&&(ws=class extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){let{on_mount:n}=this.$$;this.$$.on_disconnect=n.map(_t).filter(xe);for(let e in this.$$.slotted)this.appendChild(this.$$.slotted[e])}attributeChangedCallback(n,e,t){this[n]=t}disconnectedCallback(){G(this.$$.on_disconnect)}$destroy(){ue(this,1),this.$destroy=j}$on(n,e){if(!xe(e))return j;let t=this.$$.callbacks[n]||(this.$$.callbacks[n]=[]);return t.push(e),()=>{let s=t.indexOf(e);s!==-1&&t.splice(s,1)}}$set(n){this.$$set&&!cn(n)&&(this.$$.skip_bound=!0,this.$$set(n),this.$$.skip_bound=!1)}});var q=class{$destroy(){ue(this,1),this.$destroy=j}$on(e,t){if(!xe(t))return j;let s=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return s.push(t),()=>{let l=s.indexOf(t);l!==-1&&s.splice(l,1)}}$set(e){this.$$set&&!cn(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}};function I(n){let e=typeof n=="string"?n.charCodeAt(0):n;return e>=97&&e<=122||e>=65&&e<=90}function $(n){let e=typeof n=="string"?n.charCodeAt(0):n;return e>=48&&e<=57}function Z(n){return I(n)||$(n)}var Rn=["art-lojban","cel-gaulish","no-bok","no-nyn","zh-guoyu","zh-hakka","zh-min","zh-min-nan","zh-xiang"];var mt={"en-gb-oed":"en-GB-oxendict","i-ami":"ami","i-bnn":"bnn","i-default":null,"i-enochian":null,"i-hak":"hak","i-klingon":"tlh","i-lux":"lb","i-mingo":null,"i-navajo":"nv","i-pwn":"pwn","i-tao":"tao","i-tay":"tay","i-tsu":"tsu","sgn-be-fr":"sfb","sgn-be-nl":"vgt","sgn-ch-de":"sgg","art-lojban":"jbo","cel-gaulish":null,"no-bok":"nb","no-nyn":"nn","zh-guoyu":"cmn","zh-hakka":"hak","zh-min":null,"zh-min-nan":"nan","zh-xiang":"hsn"};var Fs={}.hasOwnProperty;function tt(n,e={}){let t=bn(),s=String(n),l=s.toLowerCase(),r=0;if(n==null)throw new Error("Expected string, got `"+n+"`");if(Fs.call(mt,l)){let a=mt[l];return(e.normalize===void 0||e.normalize===null||e.normalize)&&typeof a=="string"?tt(a):(t[Rn.includes(l)?"regular":"irregular"]=s,t)}for(;I(l.charCodeAt(r))&&r<9;)r++;if(r>1&&r<9){if(t.language=s.slice(0,r),r<4){let a=0;for(;l.charCodeAt(r)===45&&I(l.charCodeAt(r+1))&&I(l.charCodeAt(r+2))&&I(l.charCodeAt(r+3))&&!I(l.charCodeAt(r+4));){if(a>2)return i(r,3,"Too many extended language subtags, expected at most 3 subtags");t.extendedLanguageSubtags.push(s.slice(r+1,r+4)),r+=4,a++}}for(l.charCodeAt(r)===45&&I(l.charCodeAt(r+1))&&I(l.charCodeAt(r+2))&&I(l.charCodeAt(r+3))&&I(l.charCodeAt(r+4))&&!I(l.charCodeAt(r+5))&&(t.script=s.slice(r+1,r+5),r+=5),l.charCodeAt(r)===45&&(I(l.charCodeAt(r+1))&&I(l.charCodeAt(r+2))&&!I(l.charCodeAt(r+3))?(t.region=s.slice(r+1,r+3),r+=3):$(l.charCodeAt(r+1))&&$(l.charCodeAt(r+2))&&$(l.charCodeAt(r+3))&&!$(l.charCodeAt(r+4))&&(t.region=s.slice(r+1,r+4),r+=4));l.charCodeAt(r)===45;){let a=r+1,o=a;for(;Z(l.charCodeAt(o));){if(o-a>7)return i(o,1,"Too long variant, expected at most 8 characters");o++}if(o-a>4||o-a>3&&$(l.charCodeAt(a)))t.variants.push(s.slice(a,o)),r=o;else break}for(;l.charCodeAt(r)===45&&!(l.charCodeAt(r+1)===120||!Z(l.charCodeAt(r+1))||l.charCodeAt(r+2)!==45||!Z(l.charCodeAt(r+3)));){let a=r+2,o=0;for(;l.charCodeAt(a)===45&&Z(l.charCodeAt(a+1))&&Z(l.charCodeAt(a+2));){let h=a+1;for(a=h+2,o++;Z(l.charCodeAt(a));){if(a-h>7)return i(a,2,"Too long extension, expected at most 8 characters");a++}}if(!o)return i(a,4,"Empty extension, extensions must have at least 2 characters of content");t.extensions.push({singleton:s.charAt(r+1),extensions:s.slice(r+3,a).split("-")}),r=a}}else r=0;if(r===0&&l.charCodeAt(r)===120||l.charCodeAt(r)===45&&l.charCodeAt(r+1)===120){r=r?r+2:1;let a=r;for(;l.charCodeAt(a)===45&&Z(l.charCodeAt(a+1));){let o=r+1;for(a=o;Z(l.charCodeAt(a));){if(a-o>7)return i(a,5,"Too long private-use area, expected at most 8 characters");a++}t.privateuse.push(s.slice(r+1,a)),r=a}}if(r!==s.length)return i(r,6,"Found superfluous content after tag");return t;function i(a,o,h){return e.warning&&e.warning(h,o,a),e.forgiving?t:bn()}}function bn(){return{language:null,extendedLanguageSubtags:[],script:null,region:null,variants:[],extensions:[],privateuse:[],irregular:null,regular:null}}function Tn(n,e,t){let s=n.slice();return s[8]=e[t][0],s[9]=e[t][1],s}function Hs(n){let e,t,s,l,r,i=n[0]&&Cn(n);return{c(){i&&i.c(),e=A(),t=C("div"),s=C("p"),s.textContent=`${n[3](30)}`,l=A(),r=C("p"),r.textContent=`${n[3](40)}`,E(s,"class","pagefind-ui__result-title pagefind-ui__loading svelte-j9e30"),E(r,"class","pagefind-ui__result-excerpt pagefind-ui__loading svelte-j9e30"),E(t,"class","pagefind-ui__result-inner svelte-j9e30")},m(a,o){i&&i.m(a,o),y(a,e,o),y(a,t,o),b(t,s),b(t,l),b(t,r)},p(a,o){a[0]?i||(i=Cn(a),i.c(),i.m(e.parentNode,e)):i&&(i.d(1),i=null)},d(a){i&&i.d(a),a&&k(e),a&&k(t)}}}function Ns(n){let e,t,s,l,r=n[1].meta?.title+"",i,a,o,h,c=n[1].excerpt+"",m,p=n[0]&&kn(n),d=n[2].length&&Sn(n);return{c(){p&&p.c(),e=A(),t=C("div"),s=C("p"),l=C("a"),i=w(r),o=A(),h=C("p"),m=A(),d&&d.c(),E(l,"class","pagefind-ui__result-link svelte-j9e30"),E(l,"href",a=n[1].meta?.url||n[1].url),E(s,"class","pagefind-ui__result-title svelte-j9e30"),E(h,"class","pagefind-ui__result-excerpt svelte-j9e30"),E(t,"class","pagefind-ui__result-inner svelte-j9e30")},m(_,u){p&&p.m(_,u),y(_,e,u),y(_,t,u),b(t,s),b(s,l),b(l,i),b(t,o),b(t,h),h.innerHTML=c,b(t,m),d&&d.m(t,null)},p(_,u){_[0]?p?p.p(_,u):(p=kn(_),p.c(),p.m(e.parentNode,e)):p&&(p.d(1),p=null),u&2&&r!==(r=_[1].meta?.title+"")&&N(i,r),u&2&&a!==(a=_[1].meta?.url||_[1].url)&&E(l,"href",a),u&2&&c!==(c=_[1].excerpt+"")&&(h.innerHTML=c),_[2].length?d?d.p(_,u):(d=Sn(_),d.c(),d.m(t,null)):d&&(d.d(1),d=null)},d(_){p&&p.d(_),_&&k(e),_&&k(t),d&&d.d()}}}function Cn(n){let e;return{c(){e=C("div"),E(e,"class","pagefind-ui__result-thumb pagefind-ui__loading svelte-j9e30")},m(t,s){y(t,e,s)},d(t){t&&k(e)}}}function kn(n){let e,t=n[1].meta.image&&yn(n);return{c(){e=C("div"),t&&t.c(),E(e,"class","pagefind-ui__result-thumb svelte-j9e30")},m(s,l){y(s,e,l),t&&t.m(e,null)},p(s,l){s[1].meta.image?t?t.p(s,l):(t=yn(s),t.c(),t.m(e,null)):t&&(t.d(1),t=null)},d(s){s&&k(e),t&&t.d()}}}function yn(n){let e,t,s;return{c(){e=C("img"),E(e,"class","pagefind-ui__result-image svelte-j9e30"),ie(e.src,t=n[1].meta?.image)||E(e,"src",t),E(e,"alt",s=n[1].meta?.image_alt||n[1].meta?.title)},m(l,r){y(l,e,r)},p(l,r){r&2&&!ie(e.src,t=l[1].meta?.image)&&E(e,"src",t),r&2&&s!==(s=l[1].meta?.image_alt||l[1].meta?.title)&&E(e,"alt",s)},d(l){l&&k(e)}}}function Sn(n){let e,t=n[2],s=[];for(let l=0;ln.toLocaleUpperCase();function zs(n,e,t){let{show_images:s=!0}=e,{process_result:l=null}=e,{result:r={data:async()=>{}}}=e,i=["title","image","image_alt","url"],a,o=[],h=async m=>{t(1,a=await m.data()),t(1,a=l?.(a)??a),t(2,o=Object.entries(a.meta).filter(([p])=>!i.includes(p)))},c=(m=30)=>". ".repeat(Math.floor(10+Math.random()*m));return n.$$set=m=>{"show_images"in m&&t(0,s=m.show_images),"process_result"in m&&t(4,l=m.process_result),"result"in m&&t(5,r=m.result)},n.$$.update=()=>{if(n.$$.dirty&32)e:h(r)},[s,a,o,c,l,r]}var pt=class extends q{constructor(e){super(),Y(this,e,zs,Os,K,{show_images:0,process_result:4,result:5})}},vn=pt;function wn(n,e,t){let s=n.slice();return s[11]=e[t][0],s[12]=e[t][1],s}function Fn(n,e,t){let s=n.slice();return s[15]=e[t],s}function js(n){let e,t,s,l,r,i=n[0]&&Hn(n);return{c(){i&&i.c(),e=A(),t=C("div"),s=C("p"),s.textContent=`${n[5](30)}`,l=A(),r=C("p"),r.textContent=`${n[5](40)}`,E(s,"class","pagefind-ui__result-title pagefind-ui__loading svelte-4xnkmf"),E(r,"class","pagefind-ui__result-excerpt pagefind-ui__loading svelte-4xnkmf"),E(t,"class","pagefind-ui__result-inner svelte-4xnkmf")},m(a,o){i&&i.m(a,o),y(a,e,o),y(a,t,o),b(t,s),b(t,l),b(t,r)},p(a,o){a[0]?i||(i=Hn(a),i.c(),i.m(e.parentNode,e)):i&&(i.d(1),i=null)},d(a){i&&i.d(a),a&&k(e),a&&k(t)}}}function Ds(n){let e,t,s,l,r=n[1].meta?.title+"",i,a,o,h,c,m=n[0]&&Nn(n),p=n[4]&&zn(n),d=n[3],_=[];for(let f=0;fn.toLocaleUpperCase();function Is(n,e,t){let{show_images:s=!0}=e,{process_result:l=null}=e,{result:r={data:async()=>{}}}=e,i=["title","image","image_alt","url"],a,o=[],h=[],c=!1,m=(_,u)=>{if(_.length<=u)return _;let f=[..._].sort((T,R)=>R.locations.length-T.locations.length).slice(0,3).map(T=>T.url);return _.filter(T=>f.includes(T.url))},p=async _=>{t(1,a=await _.data()),t(1,a=l?.(a)??a),t(2,o=Object.entries(a.meta).filter(([u])=>!i.includes(u))),Array.isArray(a.sub_results)&&(t(4,c=a.sub_results?.[0]?.url===(a.meta?.url||a.url)),c?t(3,h=m(a.sub_results.slice(1),3)):t(3,h=m([...a.sub_results],3)))},d=(_=30)=>". ".repeat(Math.floor(10+Math.random()*_));return n.$$set=_=>{"show_images"in _&&t(0,s=_.show_images),"process_result"in _&&t(6,l=_.process_result),"result"in _&&t(7,r=_.result)},n.$$.update=()=>{if(n.$$.dirty&128)e:p(r)},[s,a,o,h,c,d,l,r]}var gt=class extends q{constructor(e){super(),Y(this,e,Is,Us,K,{show_images:0,process_result:6,result:7})}},Pn=gt;function Ln(n,e,t){let s=n.slice();return s[10]=e[t][0],s[11]=e[t][1],s[12]=e,s[13]=t,s}function qn(n,e,t){let s=n.slice();return s[14]=e[t][0],s[15]=e[t][1],s[16]=e,s[17]=t,s}function Bn(n){let e,t,s=n[4]("filters_label",n[5],n[6])+"",l,r,i=Object.entries(n[1]),a=[];for(let o=0;on.toLocaleUpperCase(),Jn=n=>n.toLowerCase();function Ls(n,e,t){let{available_filters:s=null}=e,{show_empty_filters:l=!0}=e,{open_filters:r=[]}=e,{translate:i=()=>""}=e,{automatic_translations:a={}}=e,{translations:o={}}=e,{selected_filters:h={}}=e,c=!1,m=!1;function p(d,_){h[`${d}:${_}`]=this.checked,t(0,h)}return n.$$set=d=>{"available_filters"in d&&t(1,s=d.available_filters),"show_empty_filters"in d&&t(2,l=d.show_empty_filters),"open_filters"in d&&t(3,r=d.open_filters),"translate"in d&&t(4,i=d.translate),"automatic_translations"in d&&t(5,a=d.automatic_translations),"translations"in d&&t(6,o=d.translations),"selected_filters"in d&&t(0,h=d.selected_filters)},n.$$.update=()=>{if(n.$$.dirty&258){e:if(s&&!c){t(8,c=!0);let d=Object.entries(s||{});d.length===1&&Object.entries(d[0][1])?.length<=6&&t(7,m=!0)}}},[h,s,l,r,i,a,o,m,c,p]}var Et=class extends q{constructor(e){super(),Y(this,e,Ls,Ps,K,{available_filters:1,show_empty_filters:2,open_filters:3,translate:4,automatic_translations:5,translations:6,selected_filters:0})}},Yn=Et;var Rt={};S(Rt,{comments:()=>Bs,default:()=>Gs,direction:()=>Ws,strings:()=>Vs,thanks_to:()=>qs});var qs="Jan Claasen ",Bs="",Ws="ltr",Vs={placeholder:"Soek",clear_search:"Opruim",load_more:"Laai nog resultate",search_label:"Soek hierdie webwerf",filters_label:"Filters",zero_results:"Geen resultate vir [SEARCH_TERM]",many_results:"[COUNT] resultate vir [SEARCH_TERM]",one_result:"[COUNT] resultate vir [SEARCH_TERM]",alt_search:"Geen resultate vir [SEARCH_TERM]. Toon resultate vir [DIFFERENT_TERM] in plaas daarvan",search_suggestion:"Geen resultate vir [SEARCH_TERM]. Probeer eerder een van die volgende terme:",searching:"Soek vir [SEARCH_TERM]"},Gs={thanks_to:qs,comments:Bs,direction:Ws,strings:Vs};var bt={};S(bt,{comments:()=>Js,default:()=>Xs,direction:()=>Ys,strings:()=>Zs,thanks_to:()=>Ks});var Ks="Maruf Alom ",Js="",Ys="ltr",Zs={placeholder:"\u0985\u09A8\u09C1\u09B8\u09A8\u09CD\u09A7\u09BE\u09A8 \u0995\u09B0\u09C1\u09A8",clear_search:"\u09AE\u09C1\u099B\u09C7 \u09AB\u09C7\u09B2\u09C1\u09A8",load_more:"\u0986\u09B0\u09CB \u09AB\u09B2\u09BE\u09AB\u09B2 \u09A6\u09C7\u0996\u09C1\u09A8",search_label:"\u098F\u0987 \u0993\u09DF\u09C7\u09AC\u09B8\u09BE\u0987\u099F\u09C7 \u0985\u09A8\u09C1\u09B8\u09A8\u09CD\u09A7\u09BE\u09A8 \u0995\u09B0\u09C1\u09A8",filters_label:"\u09AB\u09BF\u09B2\u09CD\u099F\u09BE\u09B0",zero_results:"[SEARCH_TERM] \u098F\u09B0 \u099C\u09A8\u09CD\u09AF \u0995\u09BF\u099B\u09C1 \u0996\u09C1\u0981\u099C\u09C7 \u09AA\u09BE\u0993\u09DF\u09BE \u09AF\u09BE\u09DF\u09A8\u09BF",many_results:"[COUNT]-\u099F\u09BF \u09AB\u09B2\u09BE\u09AB\u09B2 \u09AA\u09BE\u0993\u09DF\u09BE \u0997\u09BF\u09DF\u09C7\u099B\u09C7 [SEARCH_TERM] \u098F\u09B0 \u099C\u09A8\u09CD\u09AF",one_result:"[COUNT]-\u099F\u09BF \u09AB\u09B2\u09BE\u09AB\u09B2 \u09AA\u09BE\u0993\u09DF\u09BE \u0997\u09BF\u09DF\u09C7\u099B\u09C7 [SEARCH_TERM] \u098F\u09B0 \u099C\u09A8\u09CD\u09AF",alt_search:"\u0995\u09CB\u09A8 \u0995\u09BF\u099B\u09C1 \u0996\u09C1\u0981\u099C\u09C7 \u09AA\u09BE\u0993\u09DF\u09BE \u09AF\u09BE\u09DF\u09A8\u09BF [SEARCH_TERM] \u098F\u09B0 \u099C\u09A8\u09CD\u09AF. \u09AA\u09B0\u09BF\u09AC\u09B0\u09CD\u09A4\u09C7 [DIFFERENT_TERM] \u098F\u09B0 \u099C\u09A8\u09CD\u09AF \u09A6\u09C7\u0996\u09BE\u09A8\u09CB \u09B9\u099A\u09CD\u099B\u09C7",search_suggestion:"\u0995\u09CB\u09A8 \u0995\u09BF\u099B\u09C1 \u0996\u09C1\u0981\u099C\u09C7 \u09AA\u09BE\u0993\u09DF\u09BE \u09AF\u09BE\u09DF\u09A8\u09BF [SEARCH_TERM] \u098F\u09B0 \u09AC\u09BF\u09B7\u09DF\u09C7. \u09A8\u09BF\u09A8\u09CD\u09AE\u09C7\u09B0 \u09AC\u09BF\u09B7\u09DF\u09AC\u09B8\u09CD\u09A4\u09C1 \u0996\u09C1\u0981\u099C\u09C7 \u09A6\u09C7\u0996\u09C1\u09A8:",searching:"\u0985\u09A8\u09C1\u09B8\u09A8\u09CD\u09A7\u09BE\u09A8 \u099A\u09B2\u099B\u09C7 [SEARCH_TERM]..."},Xs={thanks_to:Ks,comments:Js,direction:Ys,strings:Zs};var Tt={};S(Tt,{comments:()=>xs,default:()=>tl,direction:()=>$s,strings:()=>el,thanks_to:()=>Qs});var Qs="Pablo Villaverde ",xs="",$s="ltr",el={placeholder:"Cerca",clear_search:"Netejar",load_more:"Veure m\xE9es resultats",search_label:"Cerca en aquest lloc",filters_label:"Filtres",zero_results:"No es van trobar resultats per [SEARCH_TERM]",many_results:"[COUNT] resultats trobats per [SEARCH_TERM]",one_result:"[COUNT] resultat trobat per [SEARCH_TERM]",alt_search:"No es van trobar resultats per [SEARCH_TERM]. Mostrant al seu lloc resultats per [DIFFERENT_TERM]",search_suggestion:"No es van trobar resultats per [SEARCH_TERM]. Proveu una de les cerques seg\xFCents:",searching:"Cercant [SEARCH_TERM]..."},tl={thanks_to:Qs,comments:xs,direction:$s,strings:el};var Ct={};S(Ct,{comments:()=>sl,default:()=>il,direction:()=>ll,strings:()=>rl,thanks_to:()=>nl});var nl="Dalibor Hon ",sl="",ll="ltr",rl={placeholder:"Hledat",clear_search:"Smazat",load_more:"Na\u010D\xEDst dal\u0161\xED v\xFDsledky",search_label:"Prohledat tuto str\xE1nku",filters_label:"Filtry",zero_results:"\u017D\xE1dn\xE9 v\xFDsledky pro [SEARCH_TERM]",many_results:"[COUNT] v\xFDsledk\u016F pro [SEARCH_TERM]",one_result:"[COUNT] v\xFDsledek pro [SEARCH_TERM]",alt_search:"\u017D\xE1dn\xE9 v\xFDsledky pro [SEARCH_TERM]. Zobrazuj\xED se v\xFDsledky pro [DIFFERENT_TERM]",search_suggestion:"\u017D\xE1dn\xE9 v\xFDsledky pro [SEARCH_TERM]. Souvisej\xEDc\xED v\xFDsledky hled\xE1n\xED:",searching:"Hled\xE1m [SEARCH_TERM]..."},il={thanks_to:nl,comments:sl,direction:ll,strings:rl};var kt={};S(kt,{comments:()=>ol,default:()=>_l,direction:()=>ul,strings:()=>cl,thanks_to:()=>al});var al="Jonas Smedegaard ",ol="",ul="ltr",cl={placeholder:"S\xF8g",clear_search:"Nulstil",load_more:"Indl\xE6s flere resultater",search_label:"S\xF8g p\xE5 dette website",filters_label:"Filtre",zero_results:"Ingen resultater for [SEARCH_TERM]",many_results:"[COUNT] resultater for [SEARCH_TERM]",one_result:"[COUNT] resultat for [SEARCH_TERM]",alt_search:"Ingen resultater for [SEARCH_TERM]. Viser resultater for [DIFFERENT_TERM] i stedet",search_suggestion:"Ingen resultater for [SEARCH_TERM]. Pr\xF8v et af disse s\xF8geord i stedet:",searching:"S\xF8ger efter [SEARCH_TERM]..."},_l={thanks_to:al,comments:ol,direction:ul,strings:cl};var yt={};S(yt,{comments:()=>dl,default:()=>pl,direction:()=>hl,strings:()=>ml,thanks_to:()=>fl});var fl="Jan Claasen ",dl="",hl="ltr",ml={placeholder:"Suche",clear_search:"L\xF6schen",load_more:"Mehr Ergebnisse laden",search_label:"Suche diese Seite",filters_label:"Filter",zero_results:"Keine Ergebnisse f\xFCr [SEARCH_TERM]",many_results:"[COUNT] Ergebnisse f\xFCr [SEARCH_TERM]",one_result:"[COUNT] Ergebnis f\xFCr [SEARCH_TERM]",alt_search:"Keine Ergebnisse f\xFCr [SEARCH_TERM]. Stattdessen werden Ergebnisse f\xFCr [DIFFERENT_TERM] angezeigt",search_suggestion:"Keine Ergebnisse f\xFCr [SEARCH_TERM]. Versuchen Sie eine der folgenden Suchen:",searching:"Suche f\xFCr [SEARCH_TERM]"},pl={thanks_to:fl,comments:dl,direction:hl,strings:ml};var St={};S(St,{comments:()=>El,default:()=>Tl,direction:()=>Rl,strings:()=>bl,thanks_to:()=>gl});var gl="Liam Bigelow ",El="",Rl="ltr",bl={placeholder:"Search",clear_search:"Clear",load_more:"Load more results",search_label:"Search this site",filters_label:"Filters",zero_results:"No results for [SEARCH_TERM]",many_results:"[COUNT] results for [SEARCH_TERM]",one_result:"[COUNT] result for [SEARCH_TERM]",alt_search:"No results for [SEARCH_TERM]. Showing results for [DIFFERENT_TERM] instead",search_suggestion:"No results for [SEARCH_TERM]. Try one of the following searches:",searching:"Searching for [SEARCH_TERM]..."},Tl={thanks_to:gl,comments:El,direction:Rl,strings:bl};var Mt={};S(Mt,{comments:()=>kl,default:()=>Ml,direction:()=>yl,strings:()=>Sl,thanks_to:()=>Cl});var Cl="Pablo Villaverde ",kl="",yl="ltr",Sl={placeholder:"Buscar",clear_search:"Limpiar",load_more:"Ver m\xE1s resultados",search_label:"Buscar en este sitio",filters_label:"Filtros",zero_results:"No se encontraron resultados para [SEARCH_TERM]",many_results:"[COUNT] resultados encontrados para [SEARCH_TERM]",one_result:"[COUNT] resultado encontrado para [SEARCH_TERM]",alt_search:"No se encontraron resultados para [SEARCH_TERM]. Mostrando en su lugar resultados para [DIFFERENT_TERM]",search_suggestion:"No se encontraron resultados para [SEARCH_TERM]. Prueba una de las siguientes b\xFAsquedas:",searching:"Buscando [SEARCH_TERM]..."},Ml={thanks_to:Cl,comments:kl,direction:yl,strings:Sl};var At={};S(At,{comments:()=>vl,default:()=>Hl,direction:()=>wl,strings:()=>Fl,thanks_to:()=>Al});var Al="Valtteri Laitinen ",vl="",wl="ltr",Fl={placeholder:"Haku",clear_search:"Tyhjenn\xE4",load_more:"Lataa lis\xE4\xE4 tuloksia",search_label:"Hae t\xE4lt\xE4 sivustolta",filters_label:"Suodattimet",zero_results:"Ei tuloksia haulle [SEARCH_TERM]",many_results:"[COUNT] tulosta haulle [SEARCH_TERM]",one_result:"[COUNT] tulos haulle [SEARCH_TERM]",alt_search:"Ei tuloksia haulle [SEARCH_TERM]. N\xE4ytet\xE4\xE4n tulokset sen sijaan haulle [DIFFERENT_TERM]",search_suggestion:"Ei tuloksia haulle [SEARCH_TERM]. Kokeile jotain seuraavista:",searching:"Haetaan [SEARCH_TERM]..."},Hl={thanks_to:Al,comments:vl,direction:wl,strings:Fl};var vt={};S(vt,{comments:()=>Ol,default:()=>Dl,direction:()=>zl,strings:()=>jl,thanks_to:()=>Nl});var Nl="Nicolas Friedli ",Ol="",zl="ltr",jl={placeholder:"Rechercher",clear_search:"Nettoyer",load_more:"Charger plus de r\xE9sultats",search_label:"Recherche sur ce site",filters_label:"Filtres",zero_results:"Pas de r\xE9sultat pour [SEARCH_TERM]",many_results:"[COUNT] r\xE9sultats pour [SEARCH_TERM]",one_result:"[COUNT] r\xE9sultat pour [SEARCH_TERM]",alt_search:"Pas de r\xE9sultat pour [SEARCH_TERM]. Montre les r\xE9sultats pour [DIFFERENT_TERM] \xE0 la place",search_suggestion:"Pas de r\xE9sultat pour [SEARCH_TERM]. Essayer une des recherches suivantes:",searching:"Recherche [SEARCH_TERM]..."},Dl={thanks_to:Nl,comments:Ol,direction:zl,strings:jl};var wt={};S(wt,{comments:()=>Il,default:()=>ql,direction:()=>Pl,strings:()=>Ll,thanks_to:()=>Ul});var Ul="Pablo Villaverde ",Il="",Pl="ltr",Ll={placeholder:"Buscar",clear_search:"Limpar",load_more:"Ver m\xE1is resultados",search_label:"Buscar neste sitio",filters_label:"Filtros",zero_results:"Non se atoparon resultados para [SEARCH_TERM]",many_results:"[COUNT] resultados atopados para [SEARCH_TERM]",one_result:"[COUNT] resultado atopado para [SEARCH_TERM]",alt_search:"Non se atoparon resultados para [SEARCH_TERM]. Amosando no seu lugar resultados para [DIFFERENT_TERM]",search_suggestion:"Non se atoparon resultados para [SEARCH_TERM]. Probe unha das seguintes pesquisas:",searching:"Buscando [SEARCH_TERM]..."},ql={thanks_to:Ul,comments:Il,direction:Pl,strings:Ll};var Ft={};S(Ft,{comments:()=>Wl,default:()=>Kl,direction:()=>Vl,strings:()=>Gl,thanks_to:()=>Bl});var Bl="Amit Yadav ",Wl="",Vl="ltr",Gl={placeholder:"\u0916\u094B\u091C\u0947\u0902",clear_search:"\u0938\u093E\u092B \u0915\u0930\u0947\u0902",load_more:"\u0914\u0930 \u0905\u0927\u093F\u0915 \u092A\u0930\u093F\u0923\u093E\u092E \u0932\u094B\u0921 \u0915\u0930\u0947\u0902",search_label:"\u0907\u0938 \u0938\u093E\u0907\u091F \u092E\u0947\u0902 \u0916\u094B\u091C\u0947\u0902",filters_label:"\u092B\u093C\u093F\u0932\u094D\u091F\u0930",zero_results:"\u0915\u094B\u0908 \u092A\u0930\u093F\u0923\u093E\u092E [SEARCH_TERM] \u0915\u0947 \u0932\u093F\u090F \u0928\u0939\u0940\u0902 \u092E\u093F\u0932\u093E",many_results:"[COUNT] \u092A\u0930\u093F\u0923\u093E\u092E [SEARCH_TERM] \u0915\u0947 \u0932\u093F\u090F \u092E\u093F\u0932\u0947",one_result:"[COUNT] \u092A\u0930\u093F\u0923\u093E\u092E [SEARCH_TERM] \u0915\u0947 \u0932\u093F\u090F \u092E\u093F\u0932\u093E",alt_search:"[SEARCH_TERM] \u0915\u0947 \u0932\u093F\u090F \u0915\u094B\u0908 \u092A\u0930\u093F\u0923\u093E\u092E \u0928\u0939\u0940\u0902 \u092E\u093F\u0932\u093E\u0964 \u0907\u0938\u0915\u0947 \u092C\u091C\u093E\u092F [DIFFERENT_TERM] \u0915\u0947 \u0932\u093F\u090F \u092A\u0930\u093F\u0923\u093E\u092E \u0926\u093F\u0916\u093E \u0930\u0939\u093E \u0939\u0948",search_suggestion:"[SEARCH_TERM] \u0915\u0947 \u0932\u093F\u090F \u0915\u094B\u0908 \u092A\u0930\u093F\u0923\u093E\u092E \u0928\u0939\u0940\u0902 \u092E\u093F\u0932\u093E\u0964 \u0928\u093F\u092E\u094D\u0928\u0932\u093F\u0916\u093F\u0924 \u0916\u094B\u091C\u094B\u0902 \u092E\u0947\u0902 \u0938\u0947 \u0915\u094B\u0908 \u090F\u0915 \u0906\u091C\u093C\u092E\u093E\u090F\u0902:",searching:"[SEARCH_TERM] \u0915\u0940 \u0916\u094B\u091C \u0915\u0940 \u091C\u093E \u0930\u0939\u0940 \u0939\u0948..."},Kl={thanks_to:Bl,comments:Wl,direction:Vl,strings:Gl};var Ht={};S(Ht,{comments:()=>Yl,default:()=>Ql,direction:()=>Zl,strings:()=>Xl,thanks_to:()=>Jl});var Jl="Diomed ",Yl="",Zl="ltr",Xl={placeholder:"Tra\u017Ei",clear_search:"O\u010Disti",load_more:"U\u010Ditaj vi\u0161e rezultata",search_label:"Pretra\u017Ei ovu stranicu",filters_label:"Filteri",zero_results:"Nema rezultata za [SEARCH_TERM]",many_results:"[COUNT] rezultata za [SEARCH_TERM]",one_result:"[COUNT] rezultat za [SEARCH_TERM]",alt_search:"Nema rezultata za [SEARCH_TERM]. Prikazujem rezultate za [DIFFERENT_TERM]",search_suggestion:"Nema rezultata za [SEARCH_TERM]. Poku\u0161aj s jednom od ovih pretraga:",searching:"Pretra\u017Eujem [SEARCH_TERM]..."},Ql={thanks_to:Jl,comments:Yl,direction:Zl,strings:Xl};var Nt={};S(Nt,{comments:()=>$l,default:()=>nr,direction:()=>er,strings:()=>tr,thanks_to:()=>xl});var xl="Adam Laki ",$l="",er="ltr",tr={placeholder:"Keres\xE9s",clear_search:"T\xF6rl\xE9s",load_more:"Tov\xE1bbi tal\xE1latok bet\xF6lt\xE9se",search_label:"Keres\xE9s az oldalon",filters_label:"Sz\u0171r\xE9s",zero_results:"Nincs tal\xE1lat a(z) [SEARCH_TERM] kifejez\xE9sre",many_results:"[COUNT] db tal\xE1lat a(z) [SEARCH_TERM] kifejez\xE9sre",one_result:"[COUNT] db tal\xE1lat a(z) [SEARCH_TERM] kifejez\xE9sre",alt_search:"Nincs tal\xE1lat a(z) [SEARCH_TERM] kifejez\xE9sre. Tal\xE1latok mutat\xE1sa ink\xE1bb a(z) [DIFFERENT_TERM] kifejez\xE9sre",search_suggestion:"Nincs tal\xE1lat a(z) [SEARCH_TERM] kifejez\xE9sre. Pr\xF3b\xE1ld meg a k\xF6vetkez\u0151 keres\xE9sek egyik\xE9t:",searching:"Keres\xE9s a(z) [SEARCH_TERM] kifejez\xE9sre..."},nr={thanks_to:xl,comments:$l,direction:er,strings:tr};var Ot={};S(Ot,{comments:()=>lr,default:()=>ar,direction:()=>rr,strings:()=>ir,thanks_to:()=>sr});var sr="Nixentric",lr="",rr="ltr",ir={placeholder:"Cari",clear_search:"Bersihkan",load_more:"Muat lebih banyak hasil",search_label:"Telusuri situs ini",filters_label:"Filter",zero_results:"[SEARCH_TERM] tidak ditemukan",many_results:"Ditemukan [COUNT] hasil untuk [SEARCH_TERM]",one_result:"Ditemukan [COUNT] hasil untuk [SEARCH_TERM]",alt_search:"[SEARCH_TERM] tidak ditemukan. Menampilkan hasil [DIFFERENT_TERM] sebagai gantinya",search_suggestion:"[SEARCH_TERM] tidak ditemukan. Coba salah satu pencarian berikut ini:",searching:"Mencari [SEARCH_TERM]..."},ar={thanks_to:sr,comments:lr,direction:rr,strings:ir};var zt={};S(zt,{comments:()=>ur,default:()=>fr,direction:()=>cr,strings:()=>_r,thanks_to:()=>or});var or="Cosette Bruhns Alonso, Andrew Janco ",ur="",cr="ltr",_r={placeholder:"Cerca",clear_search:"Cancella la cronologia",load_more:"Mostra pi\xF9 risultati",search_label:"Cerca nel sito",filters_label:"Filtri di ricerca",zero_results:"Nessun risultato per [SEARCH_TERM]",many_results:"[COUNT] risultati per [SEARCH_TERM]",one_result:"[COUNT] risultato per [SEARCH_TERM]",alt_search:"Nessun risultato per [SEARCH_TERM]. Mostrando risultati per [DIFFERENT_TERM] come alternativa.",search_suggestion:"Nessun risultato per [SEARCH_TERM]. Prova una delle seguenti ricerche:",searching:"Cercando [SEARCH_TERM]..."},fr={thanks_to:or,comments:ur,direction:cr,strings:_r};var jt={};S(jt,{comments:()=>hr,default:()=>gr,direction:()=>mr,strings:()=>pr,thanks_to:()=>dr});var dr="Tate",hr="",mr="ltr",pr={placeholder:"\u691C\u7D22",clear_search:"\u30AF\u30EA\u30A2",load_more:"\u6B21\u3092\u8AAD\u307F\u8FBC\u3080",search_label:"\u3053\u306E\u30B5\u30A4\u30C8\u3092\u691C\u7D22",filters_label:"\u30D5\u30A3\u30EB\u30BF",zero_results:"[SEARCH_TERM]\u306E\u691C\u7D22\u306B\u4E00\u81F4\u3059\u308B\u60C5\u5831\u306F\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F",many_results:"[SEARCH_TERM]\u306E[COUNT]\u4EF6\u306E\u691C\u7D22\u7D50\u679C",one_result:"[SEARCH_TERM]\u306E[COUNT]\u4EF6\u306E\u691C\u7D22\u7D50\u679C",alt_search:"[SEARCH_TERM]\u306E\u691C\u7D22\u306B\u4E00\u81F4\u3059\u308B\u60C5\u5831\u306F\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002[DIFFERENT_TERM]\u306E\u691C\u7D22\u7D50\u679C\u3092\u8868\u793A\u3057\u3066\u3044\u307E\u3059",search_suggestion:"[SEARCH_TERM]\u306E\u691C\u7D22\u306B\u4E00\u81F4\u3059\u308B\u60C5\u5831\u306F\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u6B21\u306E\u3044\u305A\u308C\u304B\u306E\u691C\u7D22\u3092\u8A66\u3057\u3066\u304F\u3060\u3055\u3044",searching:"[SEARCH_TERM]\u3092\u691C\u7D22\u3057\u3066\u3044\u307E\u3059"},gr={thanks_to:dr,comments:hr,direction:mr,strings:pr};var Dt={};S(Dt,{comments:()=>Rr,default:()=>Cr,direction:()=>br,strings:()=>Tr,thanks_to:()=>Er});var Er="Seokho Son ",Rr="",br="ltr",Tr={placeholder:"\uAC80\uC0C9\uC5B4",clear_search:"\uBE44\uC6B0\uAE30",load_more:"\uAC80\uC0C9 \uACB0\uACFC \uB354 \uBCF4\uAE30",search_label:"\uC0AC\uC774\uD2B8 \uAC80\uC0C9",filters_label:"\uD544\uD130",zero_results:"[SEARCH_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC \uC5C6\uC74C",many_results:"[SEARCH_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC [COUNT]\uAC74",one_result:"[SEARCH_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC [COUNT]\uAC74",alt_search:"[SEARCH_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC \uC5C6\uC74C. [DIFFERENT_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC",search_suggestion:"[SEARCH_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC \uC5C6\uC74C. \uCD94\uCC9C \uAC80\uC0C9\uC5B4: ",searching:"[SEARCH_TERM] \uAC80\uC0C9 \uC911..."},Cr={thanks_to:Er,comments:Rr,direction:br,strings:Tr};var Ut={};S(Ut,{comments:()=>yr,default:()=>Ar,direction:()=>Sr,strings:()=>Mr,thanks_to:()=>kr});var kr="",yr="",Sr="ltr",Mr={placeholder:"Rapu",clear_search:"Whakakore",load_more:"Whakauta \u0113tahi otinga k\u0113",search_label:"Rapu",filters_label:"T\u0101tari",zero_results:"Otinga kore ki [SEARCH_TERM]",many_results:"[COUNT] otinga ki [SEARCH_TERM]",one_result:"[COUNT] otinga ki [SEARCH_TERM]",alt_search:"Otinga kore ki [SEARCH_TERM]. Otinga k\u0113 ki [DIFFERENT_TERM]",search_suggestion:"Otinga kore ki [SEARCH_TERM]. whakam\u0101tau ki ng\u0101 mea atu:",searching:"Rapu ki [SEARCH_TERM]..."},Ar={thanks_to:kr,comments:yr,direction:Sr,strings:Mr};var It={};S(It,{comments:()=>wr,default:()=>Nr,direction:()=>Fr,strings:()=>Hr,thanks_to:()=>vr});var vr="Paul van Brouwershaven",wr="",Fr="ltr",Hr={placeholder:"Zoeken",clear_search:"Reset",load_more:"Meer resultaten laden",search_label:"Doorzoek deze site",filters_label:"Filters",zero_results:"Geen resultaten voor [SEARCH_TERM]",many_results:"[COUNT] resultaten voor [SEARCH_TERM]",one_result:"[COUNT] resultaat voor [SEARCH_TERM]",alt_search:"Geen resultaten voor [SEARCH_TERM]. In plaats daarvan worden resultaten voor [DIFFERENT_TERM] weergegeven",search_suggestion:"Geen resultaten voor [SEARCH_TERM]. Probeer een van de volgende zoekopdrachten:",searching:"Zoeken naar [SEARCH_TERM]..."},Nr={thanks_to:vr,comments:wr,direction:Fr,strings:Hr};var Pt={};S(Pt,{comments:()=>zr,default:()=>Ur,direction:()=>jr,strings:()=>Dr,thanks_to:()=>Or});var Or="Christopher Wingate",zr="",jr="ltr",Dr={placeholder:"S\xF8k",clear_search:"Fjern",load_more:"Last flere resultater",search_label:"S\xF8k p\xE5 denne siden",filters_label:"Filtre",zero_results:"Ingen resultater for [SEARCH_TERM]",many_results:"[COUNT] resultater for [SEARCH_TERM]",one_result:"[COUNT] resultat for [SEARCH_TERM]",alt_search:"Ingen resultater for [SEARCH_TERM]. Viser resultater for [DIFFERENT_TERM] i stedet",search_suggestion:"Ingen resultater for [SEARCH_TERM]. Pr\xF8v en av disse s\xF8keordene i stedet:",searching:"S\xF8ker etter [SEARCH_TERM]"},Ur={thanks_to:Or,comments:zr,direction:jr,strings:Dr};var Lt={};S(Lt,{comments:()=>Pr,default:()=>Br,direction:()=>Lr,strings:()=>qr,thanks_to:()=>Ir});var Ir="",Pr="",Lr="ltr",qr={placeholder:"Szukaj",clear_search:"Wyczy\u015B\u0107",load_more:"Za\u0142aduj wi\u0119cej",search_label:"Przeszukaj t\u0119 stron\u0119",filters_label:"Filtry",zero_results:"Brak wynik\xF3w dla [SEARCH_TERM]",many_results:"[COUNT] wynik\xF3w dla [SEARCH_TERM]",one_result:"[COUNT] wynik dla [SEARCH_TERM]",alt_search:"Brak wynik\xF3w dla [SEARCH_TERM]. Wy\u015Bwietlam wyniki dla [DIFFERENT_TERM]",search_suggestion:"Brak wynik\xF3w dla [SEARCH_TERM]. Pokrewne wyniki wyszukiwania:",searching:"Szukam [SEARCH_TERM]..."},Br={thanks_to:Ir,comments:Pr,direction:Lr,strings:qr};var qt={};S(qt,{comments:()=>Vr,default:()=>Jr,direction:()=>Gr,strings:()=>Kr,thanks_to:()=>Wr});var Wr="Jonatah",Vr="",Gr="ltr",Kr={placeholder:"Pesquisar",clear_search:"Limpar",load_more:"Ver mais resultados",search_label:"Pesquisar",filters_label:"Filtros",zero_results:"Nenhum resultado encontrado para [SEARCH_TERM]",many_results:"[COUNT] resultados encontrados para [SEARCH_TERM]",one_result:"[COUNT] resultado encontrado para [SEARCH_TERM]",alt_search:"Nenhum resultado encontrado para [SEARCH_TERM]. Exibindo resultados para [DIFFERENT_TERM]",search_suggestion:"Nenhum resultado encontrado para [SEARCH_TERM]. Tente uma das seguintes pesquisas:",searching:"Pesquisando por [SEARCH_TERM]..."},Jr={thanks_to:Wr,comments:Vr,direction:Gr,strings:Kr};var Bt={};S(Bt,{comments:()=>Zr,default:()=>xr,direction:()=>Xr,strings:()=>Qr,thanks_to:()=>Yr});var Yr="Bogdan Mateescu ",Zr="",Xr="ltr",Qr={placeholder:"C\u0103utare",clear_search:"\u015Eterge\u0163i",load_more:"\xCEnc\u0103rca\u021Bi mai multe rezultate",search_label:"C\u0103uta\u021Bi \xEEn acest site",filters_label:"Filtre",zero_results:"Niciun rezultat pentru [SEARCH_TERM]",many_results:"[COUNT] rezultate pentru [SEARCH_TERM]",one_result:"[COUNT] rezultat pentru [SEARCH_TERM]",alt_search:"Niciun rezultat pentru [SEARCH_TERM]. Se afi\u0219eaz\u0103 \xEEn schimb rezultatele pentru [DIFFERENT_TERM]",search_suggestion:"Niciun rezultat pentru [SEARCH_TERM]. \xCEncerca\u021Bi una dintre urm\u0103toarele c\u0103ut\u0103ri:",searching:"Se caut\u0103 dup\u0103: [SEARCH_TERM]..."},xr={thanks_to:Yr,comments:Zr,direction:Xr,strings:Qr};var Wt={};S(Wt,{comments:()=>ei,default:()=>si,direction:()=>ti,strings:()=>ni,thanks_to:()=>$r});var $r="Aleksandr Gordeev",ei="",ti="ltr",ni={placeholder:"\u041F\u043E\u0438\u0441\u043A",clear_search:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u043F\u043E\u043B\u0435",load_more:"\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0435\u0449\u0435",search_label:"\u041F\u043E\u0438\u0441\u043A \u043F\u043E \u0441\u0430\u0439\u0442\u0443",filters_label:"\u0424\u0438\u043B\u044C\u0442\u0440\u044B",zero_results:"\u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]",many_results:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]",one_result:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442 \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]",alt_search:"\u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]. \u041F\u043E\u043A\u0430\u0437\u0430\u043D\u044B \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [DIFFERENT_TERM]",search_suggestion:"\u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u043E\u0434\u0438\u043D \u0438\u0437 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0445 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432",searching:"\u041F\u043E\u0438\u0441\u043A \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]"},si={thanks_to:$r,comments:ei,direction:ti,strings:ni};var Vt={};S(Vt,{comments:()=>ri,default:()=>oi,direction:()=>ii,strings:()=>ai,thanks_to:()=>li});var li="Andrija Sagicc",ri="",ii="ltr",ai={placeholder:"\u041F\u0440\u0435\u0442\u0440\u0430\u0433\u0430",clear_search:"\u0411\u0440\u0438\u0441\u0430\u045A\u0435",load_more:"\u041F\u0440\u0438\u043A\u0430\u0437 \u0432\u0438\u0448\u0435 \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430",search_label:"\u041F\u0440\u0435\u0442\u0440\u0430\u0433\u0430 \u0441\u0430\u0458\u0442\u0430",filters_label:"\u0424\u0438\u043B\u0442\u0435\u0440\u0438",zero_results:"\u041D\u0435\u043C\u0430 \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [SEARCH_TERM]",many_results:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [SEARCH_TERM]",one_result:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [SEARCH_TERM]",alt_search:"\u041D\u0435\u043C\u0430 \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [SEARCH_TERM]. \u041F\u0440\u0438\u043A\u0430\u0437 \u0434\u043E\u0434\u0430\u0442\u043D\u0438\u043A \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [DIFFERENT_TERM]",search_suggestion:"\u041D\u0435\u043C\u0430 \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [SEARCH_TERM]. \u041F\u043E\u043A\u0443\u0448\u0430\u0458\u0442\u0435 \u0441\u0430 \u043D\u0435\u043A\u043E\u043C \u043E\u0434 \u0441\u043B\u0435\u0434\u0435\u045B\u0438\u0445 \u043F\u0440\u0435\u0442\u0440\u0430\u0433\u0430:",searching:"\u041F\u0440\u0435\u0442\u0440\u0430\u0433\u0430 \u0442\u0435\u0440\u043C\u0438\u043D\u0430 [SEARCH_TERM]..."},oi={thanks_to:li,comments:ri,direction:ii,strings:ai};var Gt={};S(Gt,{comments:()=>ci,default:()=>di,direction:()=>_i,strings:()=>fi,thanks_to:()=>ui});var ui="Montazar Al-Jaber ",ci="",_i="ltr",fi={placeholder:"S\xF6k",clear_search:"Rensa",load_more:"Visa fler tr\xE4ffar",search_label:"S\xF6k p\xE5 denna sida",filters_label:"Filter",zero_results:"[SEARCH_TERM] gav inga tr\xE4ffar",many_results:"[SEARCH_TERM] gav [COUNT] tr\xE4ffar",one_result:"[SEARCH_TERM] gav [COUNT] tr\xE4ff",alt_search:"[SEARCH_TERM] gav inga tr\xE4ffar. Visar resultat f\xF6r [DIFFERENT_TERM] ist\xE4llet",search_suggestion:"[SEARCH_TERM] gav inga tr\xE4ffar. F\xF6rs\xF6k igen med en av f\xF6ljande s\xF6kord:",searching:"S\xF6ker efter [SEARCH_TERM]..."},di={thanks_to:ui,comments:ci,direction:_i,strings:fi};var Kt={};S(Kt,{comments:()=>mi,default:()=>Ei,direction:()=>pi,strings:()=>gi,thanks_to:()=>hi});var hi="",mi="",pi="ltr",gi={placeholder:"\u0BA4\u0BC7\u0B9F\u0BC1\u0B95",clear_search:"\u0B85\u0BB4\u0BBF\u0B95\u0BCD\u0B95\u0BC1\u0B95",load_more:"\u0BAE\u0BC7\u0BB2\u0BC1\u0BAE\u0BCD \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BC8\u0B95\u0BCD \u0B95\u0BBE\u0B9F\u0BCD\u0B9F\u0BC1\u0B95",search_label:"\u0B87\u0BA8\u0BCD\u0BA4 \u0BA4\u0BB3\u0BA4\u0BCD\u0BA4\u0BBF\u0BB2\u0BCD \u0BA4\u0BC7\u0B9F\u0BC1\u0B95",filters_label:"\u0BB5\u0B9F\u0BBF\u0B95\u0B9F\u0BCD\u0B9F\u0BB2\u0BCD\u0B95\u0BB3\u0BCD",zero_results:"[SEARCH_TERM] \u0B95\u0BCD\u0B95\u0BBE\u0BA9 \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD \u0B87\u0BB2\u0BCD\u0BB2\u0BC8",many_results:"[SEARCH_TERM] \u0B95\u0BCD\u0B95\u0BBE\u0BA9 [COUNT] \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD",one_result:"[SEARCH_TERM] \u0B95\u0BCD\u0B95\u0BBE\u0BA9 \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1",alt_search:"[SEARCH_TERM] \u0B87\u0BA4\u0BCD\u0BA4\u0BC7\u0B9F\u0BB2\u0BC1\u0B95\u0BCD\u0B95\u0BBE\u0BA9 \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD \u0B87\u0BB2\u0BCD\u0BB2\u0BC8, \u0B87\u0BA8\u0BCD\u0BA4 \u0BA4\u0BC7\u0B9F\u0BB2\u0BCD\u0B95\u0BB3\u0BC1\u0B95\u0BCD\u0B95\u0BBE\u0BA9 \u0B92\u0BA4\u0BCD\u0BA4 \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD [DIFFERENT_TERM]",search_suggestion:"[SEARCH_TERM] \u0B87\u0BA4\u0BCD \u0BA4\u0BC7\u0B9F\u0BB2\u0BC1\u0B95\u0BCD\u0B95\u0BBE\u0BA9 \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD \u0B87\u0BB2\u0BCD\u0BB2\u0BC8.\u0B87\u0BA4\u0BB1\u0BCD\u0B95\u0BC1 \u0BAA\u0BA4\u0BBF\u0BB2\u0BC0\u0B9F\u0BBE\u0BA9 \u0BA4\u0BC7\u0B9F\u0BB2\u0BCD\u0B95\u0BB3\u0BC8 \u0BA4\u0BC7\u0B9F\u0BC1\u0B95:",searching:"[SEARCH_TERM] \u0BA4\u0BC7\u0B9F\u0BAA\u0BCD\u0BAA\u0B9F\u0BC1\u0B95\u0BBF\u0BA9\u0BCD\u0BB1\u0BA4\u0BC1"},Ei={thanks_to:hi,comments:mi,direction:pi,strings:gi};var Jt={};S(Jt,{comments:()=>bi,default:()=>ki,direction:()=>Ti,strings:()=>Ci,thanks_to:()=>Ri});var Ri="Taylan \xD6zg\xFCr Bildik",bi="",Ti="ltr",Ci={placeholder:"Ara\u015Ft\u0131r",clear_search:"Temizle",load_more:"Daha fazla sonu\xE7",search_label:"Site genelinde arama",filters_label:"Filtreler",zero_results:"[SEARCH_TERM] i\xE7in sonu\xE7 yok",many_results:"[SEARCH_TERM] i\xE7in [COUNT] sonu\xE7 bulundu",one_result:"[SEARCH_TERM] i\xE7in [COUNT] sonu\xE7 bulundu",alt_search:"[SEARCH_TERM] i\xE7in sonu\xE7 yok. Bunun yerine [DIFFERENT_TERM] i\xE7in sonu\xE7lar g\xF6steriliyor",search_suggestion:"[SEARCH_TERM] i\xE7in sonu\xE7 yok. Alternatif olarak a\u015Fa\u011F\u0131daki kelimelerden birini deneyebilirsiniz:",searching:"[SEARCH_TERM] ara\u015Ft\u0131r\u0131l\u0131yor..."},ki={thanks_to:Ri,comments:bi,direction:Ti,strings:Ci};var Yt={};S(Yt,{comments:()=>Si,default:()=>vi,direction:()=>Mi,strings:()=>Ai,thanks_to:()=>yi});var yi="Vladyslav Lyshenko ",Si="",Mi="ltr",Ai={placeholder:"\u041F\u043E\u0448\u0443\u043A",clear_search:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u043F\u043E\u043B\u0435",load_more:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0438\u0442\u0438 \u0449\u0435",search_label:"\u041F\u043E\u0448\u0443\u043A \u043F\u043E \u0441\u0430\u0439\u0442\u0443",filters_label:"\u0424\u0456\u043B\u044C\u0442\u0440\u0438",zero_results:"\u041D\u0456\u0447\u043E\u0433\u043E \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E \u0437\u0430 \u0437\u0430\u043F\u0438\u0442\u043E\u043C: [SEARCH_TERM]",many_results:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0456\u0432 \u043D\u0430 \u0437\u0430\u043F\u0438\u0442: [SEARCH_TERM]",one_result:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442 \u0437\u0430 \u0437\u0430\u043F\u0438\u0442\u043E\u043C: [SEARCH_TERM]",alt_search:"\u041D\u0456\u0447\u043E\u0433\u043E \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043D\u0430 \u0437\u0430\u043F\u0438\u0442: [SEARCH_TERM]. \u041F\u043E\u043A\u0430\u0437\u0430\u043D\u043E \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0438 \u043D\u0430 \u0437\u0430\u043F\u0438\u0442: [DIFFERENT_TERM]",search_suggestion:"\u041D\u0456\u0447\u043E\u0433\u043E \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043D\u0430 \u0437\u0430\u043F\u0438\u0442: [SEARCH_TERM]. \u0421\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u043E\u0434\u0438\u043D \u0456\u0437 \u0442\u0430\u043A\u0438\u0445 \u0432\u0430\u0440\u0456\u0430\u043D\u0442\u0456\u0432",searching:"\u041F\u043E\u0448\u0443\u043A \u0437\u0430 \u0437\u0430\u043F\u0438\u0442\u043E\u043C: [SEARCH_TERM]"},vi={thanks_to:yi,comments:Si,direction:Mi,strings:Ai};var Zt={};S(Zt,{comments:()=>Fi,default:()=>Oi,direction:()=>Hi,strings:()=>Ni,thanks_to:()=>wi});var wi="Long Nhat Nguyen",Fi="",Hi="ltr",Ni={placeholder:"T\xECm ki\u1EBFm",clear_search:"X\xF3a",load_more:"Nhi\u1EC1u k\u1EBFt qu\u1EA3 h\u01A1n",search_label:"T\xECm ki\u1EBFm trong trang n\xE0y",filters_label:"B\u1ED9 l\u1ECDc",zero_results:"Kh\xF4ng t\xECm th\u1EA5y k\u1EBFt qu\u1EA3 cho [SEARCH_TERM]",many_results:"[COUNT] k\u1EBFt qu\u1EA3 cho [SEARCH_TERM]",one_result:"[COUNT] k\u1EBFt qu\u1EA3 cho [SEARCH_TERM]",alt_search:"Kh\xF4ng t\xECm th\u1EA5y k\u1EBFt qu\u1EA3 cho [SEARCH_TERM]. Ki\u1EC3m th\u1ECB k\u1EBFt qu\u1EA3 thay th\u1EBF v\u1EDBi [DIFFERENT_TERM]",search_suggestion:"Kh\xF4ng t\xECm th\u1EA5y k\u1EBFt qu\u1EA3 cho [SEARCH_TERM]. Th\u1EED m\u1ED9t trong c\xE1c t\xECm ki\u1EBFm:",searching:"\u0110ang t\xECm ki\u1EBFm cho [SEARCH_TERM]..."},Oi={thanks_to:wi,comments:Fi,direction:Hi,strings:Ni};var Xt={};S(Xt,{comments:()=>ji,default:()=>Ii,direction:()=>Di,strings:()=>Ui,thanks_to:()=>zi});var zi="Amber Song",ji="",Di="ltr",Ui={placeholder:"\u641C\u7D22",clear_search:"\u6E05\u9664",load_more:"\u52A0\u8F7D\u66F4\u591A\u7ED3\u679C",search_label:"\u7AD9\u5185\u641C\u7D22",filters_label:"\u7B5B\u9009",zero_results:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",many_results:"\u627E\u5230 [COUNT] \u4E2A [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",one_result:"\u627E\u5230 [COUNT] \u4E2A [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",alt_search:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C\u3002\u6539\u4E3A\u663E\u793A [DIFFERENT_TERM] \u7684\u76F8\u5173\u7ED3\u679C",search_suggestion:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C\u3002\u8BF7\u5C1D\u8BD5\u4EE5\u4E0B\u641C\u7D22\u3002",searching:"\u6B63\u5728\u641C\u7D22 [SEARCH_TERM]..."},Ii={thanks_to:zi,comments:ji,direction:Di,strings:Ui};var Qt={};S(Qt,{comments:()=>Li,default:()=>Wi,direction:()=>qi,strings:()=>Bi,thanks_to:()=>Pi});var Pi="Amber Song",Li="",qi="ltr",Bi={placeholder:"\u641C\u7D22",clear_search:"\u6E05\u9664",load_more:"\u52A0\u8F09\u66F4\u591A\u7D50\u679C",search_label:"\u7AD9\u5167\u641C\u7D22",filters_label:"\u7BE9\u9078",zero_results:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u95DC\u7D50\u679C",many_results:"\u627E\u5230 [COUNT] \u500B [SEARCH_TERM] \u7684\u76F8\u95DC\u7D50\u679C",one_result:"\u627E\u5230 [COUNT] \u500B [SEARCH_TERM] \u7684\u76F8\u95DC\u7D50\u679C",alt_search:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u95DC\u7D50\u679C\u3002\u6539\u70BA\u986F\u793A [DIFFERENT_TERM] \u7684\u76F8\u95DC\u7D50\u679C",search_suggestion:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u95DC\u7D50\u679C\u3002\u8ACB\u5617\u8A66\u4EE5\u4E0B\u641C\u7D22\u3002",searching:"\u6B63\u5728\u641C\u7D22 [SEARCH_TERM]..."},Wi={thanks_to:Pi,comments:Li,direction:qi,strings:Bi};var xt={};S(xt,{comments:()=>Gi,default:()=>Yi,direction:()=>Ki,strings:()=>Ji,thanks_to:()=>Vi});var Vi="Amber Song",Gi="",Ki="ltr",Ji={placeholder:"\u641C\u7D22",clear_search:"\u6E05\u9664",load_more:"\u52A0\u8F7D\u66F4\u591A\u7ED3\u679C",search_label:"\u7AD9\u5185\u641C\u7D22",filters_label:"\u7B5B\u9009",zero_results:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",many_results:"\u627E\u5230 [COUNT] \u4E2A [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",one_result:"\u627E\u5230 [COUNT] \u4E2A [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",alt_search:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C\u3002\u6539\u4E3A\u663E\u793A [DIFFERENT_TERM] \u7684\u76F8\u5173\u7ED3\u679C",search_suggestion:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C\u3002\u8BF7\u5C1D\u8BD5\u4EE5\u4E0B\u641C\u7D22\u3002",searching:"\u6B63\u5728\u641C\u7D22 [SEARCH_TERM]..."},Yi={thanks_to:Vi,comments:Gi,direction:Ki,strings:Ji};var Zi=[Rt,bt,Tt,Ct,kt,yt,St,Mt,At,vt,wt,Ft,Ht,Nt,Ot,zt,jt,Dt,Ut,It,Pt,Lt,qt,Bt,Wt,Vt,Gt,Kt,Jt,Yt,Zt,Xt,Qt,xt],Zn=Zi,Xn=["../../translations/af.json","../../translations/bn.json","../../translations/ca.json","../../translations/cs.json","../../translations/da.json","../../translations/de.json","../../translations/en.json","../../translations/es.json","../../translations/fi.json","../../translations/fr.json","../../translations/gl.json","../../translations/hi.json","../../translations/hr.json","../../translations/hu.json","../../translations/id.json","../../translations/it.json","../../translations/ja.json","../../translations/ko.json","../../translations/mi.json","../../translations/nl.json","../../translations/no.json","../../translations/pl.json","../../translations/pt.json","../../translations/ro.json","../../translations/ru.json","../../translations/sr.json","../../translations/sv.json","../../translations/ta.json","../../translations/tr.json","../../translations/uk.json","../../translations/vi.json","../../translations/zh-cn.json","../../translations/zh-tw.json","../../translations/zh.json"];function Qn(n,e,t){let s=n.slice();return s[51]=e[t],s}function xn(n){let e,t,s;function l(i){n[37](i)}let r={show_empty_filters:n[5],open_filters:n[6],available_filters:n[18],translate:n[20],automatic_translations:n[19],translations:n[7]};return n[0]!==void 0&&(r.selected_filters=n[0]),e=new Yn({props:r}),re.push(()=>En(e,"selected_filters",l)),{c(){et(e.$$.fragment)},m(i,a){me(e,i,a),s=!0},p(i,a){let o={};a[0]&32&&(o.show_empty_filters=i[5]),a[0]&64&&(o.open_filters=i[6]),a[0]&262144&&(o.available_filters=i[18]),a[0]&524288&&(o.automatic_translations=i[19]),a[0]&128&&(o.translations=i[7]),!t&&a[0]&1&&(t=!0,o.selected_filters=i[0],hn(()=>t=!1)),e.$set(o)},i(i){s||(D(e.$$.fragment,i),s=!0)},o(i){P(e.$$.fragment,i),s=!1},d(i){ue(e,i)}}}function $n(n){let e,t,s,l,r=[xi,Qi],i=[];function a(o,h){return o[14]?0:1}return t=a(n,[-1,-1]),s=i[t]=r[t](n),{c(){e=C("div"),s.c(),E(e,"class","pagefind-ui__results-area svelte-e9gkc3")},m(o,h){y(o,e,h),i[t].m(e,null),l=!0},p(o,h){let c=t;t=a(o,h),t===c?i[t].p(o,h):(ae(),P(i[c],1,1,()=>{i[c]=null}),oe(),s=i[t],s?s.p(o,h):(s=i[t]=r[t](o),s.c()),D(s,1),s.m(e,null))},i(o){l||(D(s),l=!0)},o(o){P(s),l=!1},d(o){o&&k(e),i[t].d()}}}function Qi(n){let e,t,s,l=[],r=new Map,i,a,o;function h(u,f){return u[13].results.length===0?ta:u[13].results.length===1?ea:$i}let c=h(n,[-1,-1]),m=c(n),p=n[13].results.slice(0,n[17]),d=u=>u[51].id;for(let u=0;un[17]&&ts(n);return{c(){e=C("p"),m.c(),t=A(),s=C("ol");for(let u=0;uu[17]?_?_.p(u,f):(_=ts(u),_.c(),_.m(a.parentNode,a)):_&&(_.d(1),_=null)},i(u){if(!o){for(let f=0;f{o[p]=null}),oe(),l=o[s],l?l.p(e,m):(l=o[s]=a[s](e),l.c()),D(l,1),l.m(r.parentNode,r))},i(c){i||(D(l),i=!0)},o(c){P(l),i=!1},d(c){c&&k(t),o[s].d(c),c&&k(r)}}}function ts(n){let e,t=n[20]("load_more",n[19],n[7])+"",s,l,r;return{c(){e=C("button"),s=w(t),E(e,"type","button"),E(e,"class","pagefind-ui__button svelte-e9gkc3")},m(i,a){y(i,e,a),b(e,s),l||(r=J(e,"click",n[22]),l=!0)},p(i,a){a[0]&524416&&t!==(t=i[20]("load_more",i[19],i[7])+"")&&N(s,t)},d(i){i&&k(e),l=!1,r()}}}function ns(n){let e,t=n[20]("searching",n[19],n[7]).replace(/\[SEARCH_TERM\]/,n[16])+"",s;return{c(){e=C("p"),s=w(t),E(e,"class","pagefind-ui__message svelte-e9gkc3")},m(l,r){y(l,e,r),b(e,s)},p(l,r){r[0]&589952&&t!==(t=l[20]("searching",l[19],l[7]).replace(/\[SEARCH_TERM\]/,l[16])+"")&&N(s,t)},d(l){l&&k(e)}}}function la(n){let e,t,s,l,r,i,a=n[20]("clear_search",n[19],n[7])+"",o,h,c,m,p,d,_,u,f=n[12]&&xn(n),T=n[15]&&$n(n);return{c(){e=C("div"),t=C("form"),s=C("input"),r=A(),i=C("button"),o=w(a),h=A(),c=C("div"),f&&f.c(),m=A(),T&&T.c(),E(s,"class","pagefind-ui__search-input svelte-e9gkc3"),E(s,"type","text"),E(s,"placeholder",l=n[20]("placeholder",n[19],n[7])),E(s,"autocapitalize","none"),E(s,"enterkeyhint","search"),s.autofocus=n[8],E(i,"class","pagefind-ui__search-clear svelte-e9gkc3"),B(i,"pagefind-ui__suppressed",!n[9]),E(c,"class","pagefind-ui__drawer svelte-e9gkc3"),B(c,"pagefind-ui__hidden",!n[15]),E(t,"class","pagefind-ui__form svelte-e9gkc3"),E(t,"role","search"),E(t,"aria-label",p=n[20]("search_label",n[19],n[7])),E(t,"action","javascript:void(0);"),E(e,"class","pagefind-ui svelte-e9gkc3"),B(e,"pagefind-ui--reset",n[1])},m(R,M){y(R,e,M),b(e,t),b(t,s),ft(s,n[9]),n[34](s),b(t,r),b(t,i),b(i,o),n[35](i),b(t,h),b(t,c),f&&f.m(c,null),b(c,m),T&&T.m(c,null),d=!0,n[8]&&s.focus(),_||(u=[J(s,"focus",n[21]),J(s,"keydown",n[32]),J(s,"input",n[33]),J(i,"click",n[36]),J(t,"submit",ra)],_=!0)},p(R,M){(!d||M[0]&524416&&l!==(l=R[20]("placeholder",R[19],R[7])))&&E(s,"placeholder",l),(!d||M[0]&256)&&(s.autofocus=R[8]),M[0]&512&&s.value!==R[9]&&ft(s,R[9]),(!d||M[0]&524416)&&a!==(a=R[20]("clear_search",R[19],R[7])+"")&&N(o,a),(!d||M[0]&512)&&B(i,"pagefind-ui__suppressed",!R[9]),R[12]?f?(f.p(R,M),M[0]&4096&&D(f,1)):(f=xn(R),f.c(),D(f,1),f.m(c,m)):f&&(ae(),P(f,1,1,()=>{f=null}),oe()),R[15]?T?(T.p(R,M),M[0]&32768&&D(T,1)):(T=$n(R),T.c(),D(T,1),T.m(c,null)):T&&(ae(),P(T,1,1,()=>{T=null}),oe()),(!d||M[0]&32768)&&B(c,"pagefind-ui__hidden",!R[15]),(!d||M[0]&524416&&p!==(p=R[20]("search_label",R[19],R[7])))&&E(t,"aria-label",p),(!d||M[0]&2)&&B(e,"pagefind-ui--reset",R[1])},i(R){d||(D(f),D(T),d=!0)},o(R){P(f),P(T),d=!1},d(R){R&&k(e),n[34](null),n[35](null),f&&f.d(),T&&T.d(),_=!1,G(u)}}}var ra=n=>n.preventDefault();function ia(n,e,t){let s={},l=Xn.map(g=>g.match(/([^\/]+)\.json$/)[1]);for(let g=0;gz[g]??H[g]??"";dt(()=>{let g=document?.querySelector?.("html")?.getAttribute?.("lang")||"en",H=tt(g.toLocaleLowerCase());t(19,rn=s[`${H.language}-${H.script}-${H.region}`]||s[`${H.language}-${H.region}`]||s[`${H.language}`]||s.en)}),ht(()=>{F?.destroy?.(),F=null});let an=async()=>{if(!st&&(t(12,st=!0),!F)){let g;try{g=await import(`${r}pagefind.js`)}catch(z){console.error(z),console.error([`Pagefind couldn't be loaded from ${this.options.bundlePath}pagefind.js`,"You can configure this by passing a bundlePath option to PagefindUI",`[DEBUG: Loaded from ${document?.currentScript?.src??"no known script location"}]`].join(` +`))}c||t(24,c=h?12:30);let H={...f||{},excerptLength:c};await g.options(H);for(let z of T){if(!z.bundlePath)throw new Error("mergeIndex requires a bundlePath parameter");let L=z.bundlePath;delete z.bundlePath,await g.mergeIndex(L,z)}F=g,is()}},is=async()=>{F&&(ln=await F.filters(),(!ce||!Object.keys(ce).length)&&t(18,ce=ln))},as=g=>{let H={};return Object.entries(g).filter(([,z])=>z).forEach(([z])=>{let[L,te]=z.split(/:(.*)$/);H[L]=H[L]||[],H[L].push(te)}),H},_e,os=async(g,H)=>{if(!g){t(15,rt=!1),_e&&clearTimeout(_e);return}let z=as(H),L=()=>us(g,z);u>0&&g?(_e&&clearTimeout(_e),_e=setTimeout(L,u),await on(),F.preload(g,{filters:z})):L(),cs()},on=async()=>{for(;!F;)an(),await new Promise(g=>setTimeout(g,50))},us=async(g,H)=>{t(16,sn=g||""),typeof p=="function"&&(g=p(g)),t(14,lt=!0),t(15,rt=!0),await on();let z=++nn,L={filters:H};X&&typeof X=="object"&&(L.sort=X);let te=await F.search(g,L);nn===z&&(te.filters&&Object.keys(te.filters)?.length&&t(18,ce=te.filters),t(13,tn=te),t(14,lt=!1),t(17,it=i))},cs=()=>{let g=V.offsetWidth;g!=ls&&t(10,O.style.paddingRight=`${g+2}px`,O)},_s=g=>{g?.preventDefault(),t(17,it+=i)},fs=g=>{g.key==="Escape"&&(t(9,v=""),O.blur()),g.key==="Enter"&&g.preventDefault()};function ds(){v=this.value,t(9,v),t(23,R)}function hs(g){re[g?"unshift":"push"](()=>{O=g,t(10,O)})}function ms(g){re[g?"unshift":"push"](()=>{V=g,t(11,V)})}let ps=()=>{t(9,v=""),O.blur()};function gs(g){W=g,t(0,W)}return n.$$set=g=>{"base_path"in g&&t(25,r=g.base_path),"page_size"in g&&t(26,i=g.page_size),"reset_styles"in g&&t(1,a=g.reset_styles),"show_images"in g&&t(2,o=g.show_images),"show_sub_results"in g&&t(3,h=g.show_sub_results),"excerpt_length"in g&&t(24,c=g.excerpt_length),"process_result"in g&&t(4,m=g.process_result),"process_term"in g&&t(27,p=g.process_term),"show_empty_filters"in g&&t(5,d=g.show_empty_filters),"open_filters"in g&&t(6,_=g.open_filters),"debounce_timeout_ms"in g&&t(28,u=g.debounce_timeout_ms),"pagefind_options"in g&&t(29,f=g.pagefind_options),"merge_index"in g&&t(30,T=g.merge_index),"trigger_search_term"in g&&t(23,R=g.trigger_search_term),"translations"in g&&t(7,M=g.translations),"autofocus"in g&&t(8,U=g.autofocus),"sort"in g&&t(31,X=g.sort),"selected_filters"in g&&t(0,W=g.selected_filters)},n.$$.update=()=>{if(n.$$.dirty[0]&8388608)e:R&&(t(9,v=R),t(23,R=""));if(n.$$.dirty[0]&513)e:os(v,W)},[W,a,o,h,m,d,_,M,U,v,O,V,st,tn,lt,rt,sn,it,ce,rn,rs,an,_s,R,c,r,i,p,u,f,T,X,fs,ds,hs,ms,ps,gs]}var $t=class extends q{constructor(e){super(),Y(this,e,ia,la,K,{base_path:25,page_size:26,reset_styles:1,show_images:2,show_sub_results:3,excerpt_length:24,process_result:4,process_term:27,show_empty_filters:5,open_filters:6,debounce_timeout_ms:28,pagefind_options:29,merge_index:30,trigger_search_term:23,translations:7,autofocus:8,sort:31,selected_filters:0},null,[-1,-1])}},ss=$t;var en;try{en=new URL(document.currentScript.src).pathname.match(/^(.*\/)(?:pagefind-)?ui.js.*$/)[1]}catch{en="/pagefind/"}var nt=class{constructor(e){this._pfs=null;let t=e.element??"[data-pagefind-ui]",s=e.bundlePath??en,l=e.pageSize??5,r=e.resetStyles??!0,i=e.showImages??!0,a=e.showSubResults??!1,o=e.excerptLength??0,h=e.processResult??null,c=e.processTerm??null,m=e.showEmptyFilters??!0,p=e.openFilters??[],d=e.debounceTimeoutMs??300,_=e.mergeIndex??[],u=e.translations??[],f=e.autofocus??!1,T=e.sort??null;delete e.element,delete e.bundlePath,delete e.pageSize,delete e.resetStyles,delete e.showImages,delete e.showSubResults,delete e.excerptLength,delete e.processResult,delete e.processTerm,delete e.showEmptyFilters,delete e.openFilters,delete e.debounceTimeoutMs,delete e.mergeIndex,delete e.translations,delete e.autofocus,delete e.sort;let R=t instanceof HTMLElement?t:document.querySelector(t);R?this._pfs=new ss({target:R,props:{base_path:s,page_size:l,reset_styles:r,show_images:i,show_sub_results:a,excerpt_length:o,process_result:h,process_term:c,show_empty_filters:m,open_filters:p,debounce_timeout_ms:d,merge_index:_,translations:u,autofocus:f,sort:T,pagefind_options:e}}):console.error(`Pagefind UI couldn't find the selector ${t}`)}triggerSearch(e){this._pfs.$$set({trigger_search_term:e})}triggerFilters(e){let t={};for(let[s,l]of Object.entries(e))if(Array.isArray(l))for(let r of l)t[`${s}:${r}`]=!0;else t[`${s}:${l}`]=!0;this._pfs.$$set({selected_filters:t})}destroy(){this._pfs.$destroy()}};window.PagefindUI=nt;})(); diff --git a/pr-preview/pr-1029/pagefind/pagefind.en_d494bdd24a.pf_meta b/pr-preview/pr-1029/pagefind/pagefind.en_d494bdd24a.pf_meta new file mode 100644 index 000000000..69e19f686 Binary files /dev/null and b/pr-preview/pr-1029/pagefind/pagefind.en_d494bdd24a.pf_meta differ diff --git a/pr-preview/pr-1029/pagefind/pagefind.js b/pr-preview/pr-1029/pagefind/pagefind.js new file mode 100644 index 000000000..3e3fa55d1 --- /dev/null +++ b/pr-preview/pr-1029/pagefind/pagefind.js @@ -0,0 +1,9 @@ +const pagefind_version="1.1.0";let wasm_bindgen;(function(){const __exports={};let script_src;if(typeof document!=='undefined'&&document.currentScript!==null){script_src=new URL("UNHANDLED",location.href).toString()}let wasm=undefined;let cachedUint8Memory0=null;function getUint8Memory0(){if(cachedUint8Memory0===null||cachedUint8Memory0.byteLength===0){cachedUint8Memory0=new Uint8Array(wasm.memory.buffer)}return cachedUint8Memory0}let WASM_VECTOR_LEN=0;function passArray8ToWasm0(arg,malloc){const ptr=malloc(arg.length*1,1)>>>0;getUint8Memory0().set(arg,ptr/1);WASM_VECTOR_LEN=arg.length;return ptr}__exports.init_pagefind=function(metadata_bytes){const ptr0=passArray8ToWasm0(metadata_bytes,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;const ret=wasm.init_pagefind(ptr0,len0);return ret>>>0};const cachedTextEncoder=(typeof TextEncoder!=='undefined'?new TextEncoder('utf-8'):{encode:()=>{throw Error('TextEncoder not available')}});const encodeString=(typeof cachedTextEncoder.encodeInto==='function'?function(arg,view){return cachedTextEncoder.encodeInto(arg,view)}:function(arg,view){const buf=cachedTextEncoder.encode(arg);view.set(buf);return{read:arg.length,written:buf.length}});function passStringToWasm0(arg,malloc,realloc){if(realloc===undefined){const buf=cachedTextEncoder.encode(arg);const ptr=malloc(buf.length,1)>>>0;getUint8Memory0().subarray(ptr,ptr+buf.length).set(buf);WASM_VECTOR_LEN=buf.length;return ptr}let len=arg.length;let ptr=malloc(len,1)>>>0;const mem=getUint8Memory0();let offset=0;for(;offset0x7F)break;mem[ptr+offset]=code}if(offset!==len){if(offset!==0){arg=arg.slice(offset)}ptr=realloc(ptr,len,len=offset+arg.length*3,1)>>>0;const view=getUint8Memory0().subarray(ptr+offset,ptr+len);const ret=encodeString(arg,view);offset+=ret.written;ptr=realloc(ptr,len,offset,1)>>>0}WASM_VECTOR_LEN=offset;return ptr}__exports.set_ranking_weights=function(ptr,weights){const ptr0=passStringToWasm0(weights,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len0=WASM_VECTOR_LEN;const ret=wasm.set_ranking_weights(ptr,ptr0,len0);return ret>>>0};__exports.load_index_chunk=function(ptr,chunk_bytes){const ptr0=passArray8ToWasm0(chunk_bytes,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;const ret=wasm.load_index_chunk(ptr,ptr0,len0);return ret>>>0};__exports.load_filter_chunk=function(ptr,chunk_bytes){const ptr0=passArray8ToWasm0(chunk_bytes,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;const ret=wasm.load_filter_chunk(ptr,ptr0,len0);return ret>>>0};__exports.add_synthetic_filter=function(ptr,filter){const ptr0=passStringToWasm0(filter,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len0=WASM_VECTOR_LEN;const ret=wasm.add_synthetic_filter(ptr,ptr0,len0);return ret>>>0};let cachedInt32Memory0=null;function getInt32Memory0(){if(cachedInt32Memory0===null||cachedInt32Memory0.byteLength===0){cachedInt32Memory0=new Int32Array(wasm.memory.buffer)}return cachedInt32Memory0}const cachedTextDecoder=(typeof TextDecoder!=='undefined'?new TextDecoder('utf-8',{ignoreBOM:true,fatal:true}):{decode:()=>{throw Error('TextDecoder not available')}});if(typeof TextDecoder!=='undefined'){cachedTextDecoder.decode()};function getStringFromWasm0(ptr,len){ptr=ptr>>>0;return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr,ptr+len))}__exports.request_indexes=function(ptr,query){let deferred2_0;let deferred2_1;try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passStringToWasm0(query,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len0=WASM_VECTOR_LEN;wasm.request_indexes(retptr,ptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];deferred2_0=r0;deferred2_1=r1;return getStringFromWasm0(r0,r1)}finally{wasm.__wbindgen_add_to_stack_pointer(16);wasm.__wbindgen_free(deferred2_0,deferred2_1,1)}};__exports.request_filter_indexes=function(ptr,filters){let deferred2_0;let deferred2_1;try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passStringToWasm0(filters,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len0=WASM_VECTOR_LEN;wasm.request_filter_indexes(retptr,ptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];deferred2_0=r0;deferred2_1=r1;return getStringFromWasm0(r0,r1)}finally{wasm.__wbindgen_add_to_stack_pointer(16);wasm.__wbindgen_free(deferred2_0,deferred2_1,1)}};__exports.request_all_filter_indexes=function(ptr){let deferred1_0;let deferred1_1;try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.request_all_filter_indexes(retptr,ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];deferred1_0=r0;deferred1_1=r1;return getStringFromWasm0(r0,r1)}finally{wasm.__wbindgen_add_to_stack_pointer(16);wasm.__wbindgen_free(deferred1_0,deferred1_1,1)}};__exports.filters=function(ptr){let deferred1_0;let deferred1_1;try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.filters(retptr,ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];deferred1_0=r0;deferred1_1=r1;return getStringFromWasm0(r0,r1)}finally{wasm.__wbindgen_add_to_stack_pointer(16);wasm.__wbindgen_free(deferred1_0,deferred1_1,1)}};__exports.search=function(ptr,query,filter,sort,exact){let deferred4_0;let deferred4_1;try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passStringToWasm0(query,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len0=WASM_VECTOR_LEN;const ptr1=passStringToWasm0(filter,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len1=WASM_VECTOR_LEN;const ptr2=passStringToWasm0(sort,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len2=WASM_VECTOR_LEN;wasm.search(retptr,ptr,ptr0,len0,ptr1,len1,ptr2,len2,exact);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];deferred4_0=r0;deferred4_1=r1;return getStringFromWasm0(r0,r1)}finally{wasm.__wbindgen_add_to_stack_pointer(16);wasm.__wbindgen_free(deferred4_0,deferred4_1,1)}};async function __wbg_load(module,imports){if(typeof Response==='function'&&module instanceof Response){if(typeof WebAssembly.instantiateStreaming==='function'){try{return await WebAssembly.instantiateStreaming(module,imports)}catch(e){if(module.headers.get('Content-Type')!='application/wasm'){console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",e)}else{throw e}}}const bytes=await module.arrayBuffer();return await WebAssembly.instantiate(bytes,imports)}else{const instance=await WebAssembly.instantiate(module,imports);if(instance instanceof WebAssembly.Instance){return{instance,module}}else{return instance}}}function __wbg_get_imports(){const imports={};imports.wbg={};return imports}function __wbg_init_memory(imports,maybe_memory){}function __wbg_finalize_init(instance,module){wasm=instance.exports;__wbg_init.__wbindgen_wasm_module=module;cachedInt32Memory0=null;cachedUint8Memory0=null;return wasm}function initSync(module){if(wasm!==undefined)return wasm;const imports=__wbg_get_imports();__wbg_init_memory(imports);if(!(module instanceof WebAssembly.Module)){module=new WebAssembly.Module(module)}const instance=new WebAssembly.Instance(module,imports);return __wbg_finalize_init(instance,module)}async function __wbg_init(input){if(wasm!==undefined)return wasm;if(typeof input==='undefined'&&typeof script_src!=='undefined'){input=script_src.replace(/\.js$/,'_bg.wasm')}const imports=__wbg_get_imports();if(typeof input==='string'||(typeof Request==='function'&&input instanceof Request)||(typeof URL==='function'&&input instanceof URL)){input=fetch(input)}__wbg_init_memory(imports);const{instance,module}=await __wbg_load(await input,imports);return __wbg_finalize_init(instance,module)}wasm_bindgen=Object.assign(__wbg_init,{initSync},__exports)})();var u8=Uint8Array;var u16=Uint16Array;var u32=Uint32Array;var fleb=new u8([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]);var fdeb=new u8([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]);var clim=new u8([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);var freb=function(eb,start){var b=new u16(31);for(var i2=0;i2<31;++i2){b[i2]=start+=1<>>1|(i&21845)<<1;x=(x&52428)>>>2|(x&13107)<<2;x=(x&61680)>>>4|(x&3855)<<4;rev[i]=((x&65280)>>>8|(x&255)<<8)>>>1}var x;var i;var hMap=function(cd,mb,r){var s=cd.length;var i2=0;var l=new u16(mb);for(;i2>>rvb]=sv}}}}else{co=new u16(s);for(i2=0;i2>>15-cd[i2]}}}return co};var flt=new u8(288);for(i=0;i<144;++i)flt[i]=8;var i;for(i=144;i<256;++i)flt[i]=9;var i;for(i=256;i<280;++i)flt[i]=7;var i;for(i=280;i<288;++i)flt[i]=8;var i;var fdt=new u8(32);for(i=0;i<32;++i)fdt[i]=5;var i;var flrm=hMap(flt,9,1);var fdrm=hMap(fdt,5,1);var max=function(a){var m=a[0];for(var i2=1;i2m)m=a[i2]}return m};var bits=function(d,p,m){var o=p/8|0;return(d[o]|d[o+1]<<8)>>(p&7)&m};var bits16=function(d,p){var o=p/8|0;return(d[o]|d[o+1]<<8|d[o+2]<<16)>>(p&7)};var shft=function(p){return(p+7)/8|0};var slc=function(v,s,e){if(s==null||s<0)s=0;if(e==null||e>v.length)e=v.length;var n=new(v.BYTES_PER_ELEMENT==2?u16:v.BYTES_PER_ELEMENT==4?u32:u8)(e-s);n.set(v.subarray(s,e));return n};var ec=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"];var err=function(ind,msg,nt){var e=new Error(msg||ec[ind]);e.code=ind;if(Error.captureStackTrace)Error.captureStackTrace(e,err);if(!nt)throw e;return e};var inflt=function(dat,buf,st){var sl=dat.length;if(!sl||st&&st.f&&!st.l)return buf||new u8(0);var noBuf=!buf||st;var noSt=!st||st.i;if(!st)st={};if(!buf)buf=new u8(sl*3);var cbuf=function(l2){var bl=buf.length;if(l2>bl){var nbuf=new u8(Math.max(bl*2,l2));nbuf.set(buf);buf=nbuf}};var final=st.f||0,pos=st.p||0,bt=st.b||0,lm=st.l,dm=st.d,lbt=st.m,dbt=st.n;var tbts=sl*8;do{if(!lm){final=bits(dat,pos,1);var type=bits(dat,pos+1,3);pos+=3;if(!type){var s=shft(pos)+4,l=dat[s-4]|dat[s-3]<<8,t=s+l;if(t>sl){if(noSt)err(0);break}if(noBuf)cbuf(bt+l);buf.set(dat.subarray(s,t),bt);st.b=bt+=l,st.p=pos=t*8,st.f=final;continue}else if(type==1)lm=flrm,dm=fdrm,lbt=9,dbt=5;else if(type==2){var hLit=bits(dat,pos,31)+257,hcLen=bits(dat,pos+10,15)+4;var tl=hLit+bits(dat,pos+5,31)+1;pos+=14;var ldt=new u8(tl);var clt=new u8(19);for(var i2=0;i2>>4;if(s<16){ldt[i2++]=s}else{var c=0,n=0;if(s==16)n=3+bits(dat,pos,3),pos+=2,c=ldt[i2-1];else if(s==17)n=3+bits(dat,pos,7),pos+=3;else if(s==18)n=11+bits(dat,pos,127),pos+=7;while(n--)ldt[i2++]=c}}var lt=ldt.subarray(0,hLit),dt=ldt.subarray(hLit);lbt=max(lt);dbt=max(dt);lm=hMap(lt,lbt,1);dm=hMap(dt,dbt,1)}else err(1);if(pos>tbts){if(noSt)err(0);break}}if(noBuf)cbuf(bt+131072);var lms=(1<>>4;pos+=c&15;if(pos>tbts){if(noSt)err(0);break}if(!c)err(2);if(sym<256)buf[bt++]=sym;else if(sym==256){lpos=pos,lm=null;break}else{var add=sym-254;if(sym>264){var i2=sym-257,b=fleb[i2];add=bits(dat,pos,(1<>>4;if(!d)err(3);pos+=d&15;var dt=fd[dsym];if(dsym>3){var b=fdeb[dsym];dt+=bits16(dat,pos)&(1<tbts){if(noSt)err(0);break}if(noBuf)cbuf(bt+131072);var end=bt+add;for(;bt>3&1)+(flg>>4&1);zs>0;zs-=!d[st++]);return st+(flg&2)};var gzl=function(d){var l=d.length;return(d[l-4]|d[l-3]<<8|d[l-2]<<16|d[l-1]<<24)>>>0};function gunzipSync(data,out){return inflt(data.subarray(gzs(data),-8),out||new u8(gzl(data)))}var td=typeof TextDecoder!="undefined"&&new TextDecoder();var tds=0;try{td.decode(et,{stream:true});tds=1}catch(e){}var gz_default=gunzipSync;var calculate_excerpt_region=(word_positions,excerpt_length)=>{if(word_positions.length===0){return 0}let words=[];for(const word of word_positions){words[word.location]=words[word.location]||0;words[word.location]+=word.balanced_score}if(words.length<=excerpt_length){return 0}let densest=words.slice(0,excerpt_length).reduce((partialSum,a)=>partialSum+a,0);let working_sum=densest;let densest_at=[0];for(let i2=0;i2densest){densest=working_sum;densest_at=[i2]}else if(working_sum===densest&&densest_at[densest_at.length-1]===i2-1){densest_at.push(i2)}}let midpoint=densest_at[Math.floor(densest_at.length/2)];return midpoint};var build_excerpt=(content,start,length,locations,not_before,not_from)=>{let is_zws_delimited=content.includes("\u200B");let fragment_words=[];if(is_zws_delimited){fragment_words=content.split("\u200B")}else{fragment_words=content.split(/[\r\n\s]+/g)}for(let word of locations){if(fragment_words[word]?.startsWith(``)){continue}fragment_words[word]=`${fragment_words[word]}`}let endcap=not_from??fragment_words.length;let startcap=not_before??0;if(endcap-startcapendcap){start=endcap-length}if(start{const anchors=fragment.anchors.filter((a)=>/h\d/i.test(a.element)&&a.text?.length&&/\S/.test(a.text)).sort((a,b)=>a.location-b.location);const results=[];let current_anchor_position=0;let current_anchor={title:fragment.meta["title"],url:fragment.url,weighted_locations:[],locations:[],excerpt:""};const add_result=(end_range)=>{if(current_anchor.locations.length){const relative_weighted_locations=current_anchor.weighted_locations.map((l)=>{return{weight:l.weight,balanced_score:l.balanced_score,location:l.location-current_anchor_position}});const excerpt_start=calculate_excerpt_region(relative_weighted_locations,desired_excerpt_length)+current_anchor_position;const excerpt_length=end_range?Math.min(end_range-excerpt_start,desired_excerpt_length):desired_excerpt_length;current_anchor.excerpt=build_excerpt(fragment.raw_content??"",excerpt_start,excerpt_length,current_anchor.locations,current_anchor_position,end_range);results.push(current_anchor)}};for(let word of fragment.weighted_locations){if(!anchors.length||word.location=anchors[0].location){next_anchor=anchors.shift()}let anchored_url=fragment.url;try{const url_is_fq=/^((https?:)?\/\/)/.test(anchored_url);if(url_is_fq){let fq_url=new URL(anchored_url);fq_url.hash=next_anchor.id;anchored_url=fq_url.toString()}else{if(!/^\//.test(anchored_url)){anchored_url=`/${anchored_url}`}let fq_url=new URL(`https://example.com${anchored_url}`);fq_url.hash=next_anchor.id;anchored_url=fq_url.toString().replace(/^https:\/\/example.com/,"")}}catch(e){console.error(`Pagefind: Couldn't process ${anchored_url} for a search result`)}current_anchor_position=next_anchor.location;current_anchor={title:next_anchor.text,url:anchored_url,anchor:next_anchor,weighted_locations:[word],locations:[word.location],excerpt:""}}}add_result(anchors[0]?.location);return results};var asyncSleep=async(ms=100)=>{return new Promise((r)=>setTimeout(r,ms))};var PagefindInstance=class{constructor(opts={}){this.version=pagefind_version;this.backend=wasm_bindgen;this.decoder=new TextDecoder("utf-8");this.wasm=null;this.basePath=opts.basePath||"/pagefind/";this.primary=opts.primary||false;if(this.primary&&!opts.basePath){this.initPrimary()}if(/[^\/]$/.test(this.basePath)){this.basePath=`${this.basePath}/`}if(window?.location?.origin&&this.basePath.startsWith(window.location.origin)){this.basePath=this.basePath.replace(window.location.origin,"")}this.baseUrl=opts.baseUrl||this.defaultBaseUrl();if(!/^(\/|https?:\/\/)/.test(this.baseUrl)){this.baseUrl=`/${this.baseUrl}`}this.indexWeight=opts.indexWeight??1;this.excerptLength=opts.excerptLength??30;this.mergeFilter=opts.mergeFilter??{};this.ranking=opts.ranking;this.highlightParam=opts.highlightParam??null;this.loaded_chunks={};this.loaded_filters={};this.loaded_fragments={};this.raw_ptr=null;this.searchMeta=null;this.languages=null}initPrimary(){let derivedBasePath=import.meta.url.match(/^(.*\/)pagefind.js.*$/)?.[1];if(derivedBasePath){this.basePath=derivedBasePath}else{console.warn(["Pagefind couldn't determine the base of the bundle from the import path. Falling back to the default.","Set a basePath option when initialising Pagefind to ignore this message."].join("\n"))}}defaultBaseUrl(){let default_base=this.basePath.match(/^(.*\/)_?pagefind/)?.[1];return default_base||"/"}async options(options2){const opts=["basePath","baseUrl","indexWeight","excerptLength","mergeFilter","highlightParam","ranking"];for(const[k,v]of Object.entries(options2)){if(k==="mergeFilter"){let filters2=this.stringifyFilters(v);let ptr=await this.getPtr();this.raw_ptr=this.backend.add_synthetic_filter(ptr,filters2)}else if(k==="ranking"){await this.set_ranking(options2.ranking)}else if(opts.includes(k)){if(k==="basePath"&&typeof v==="string")this.basePath=v;if(k==="baseUrl"&&typeof v==="string")this.baseUrl=v;if(k==="indexWeight"&&typeof v==="number")this.indexWeight=v;if(k==="excerptLength"&&typeof v==="number")this.excerptLength=v;if(k==="mergeFilter"&&typeof v==="object")this.mergeFilter=v;if(k==="highlightParam"&&typeof v==="string")this.highlightParam=v}else{console.warn(`Unknown Pagefind option ${k}. Allowed options: [${opts.join(", ")}]`)}}}decompress(data,file="unknown file"){if(this.decoder.decode(data.slice(0,12))==="pagefind_dcd"){return data.slice(12)}data=gz_default(data);if(this.decoder.decode(data.slice(0,12))!=="pagefind_dcd"){console.error(`Decompressing ${file} appears to have failed: Missing signature`);return data}return data.slice(12)}async set_ranking(ranking){if(!ranking)return;let rankingWeights={term_similarity:ranking.termSimilarity??null,page_length:ranking.pageLength??null,term_saturation:ranking.termSaturation??null,term_frequency:ranking.termFrequency??null};let ptr=await this.getPtr();this.raw_ptr=this.backend.set_ranking_weights(ptr,JSON.stringify(rankingWeights))}async init(language,opts){await this.loadEntry();let index=this.findIndex(language);let lang_wasm=index.wasm?index.wasm:"unknown";let resources=[this.loadMeta(index.hash)];if(opts.load_wasm===true){resources.push(this.loadWasm(lang_wasm))}await Promise.all(resources);this.raw_ptr=this.backend.init_pagefind(new Uint8Array(this.searchMeta));if(Object.keys(this.mergeFilter)?.length){let filters2=this.stringifyFilters(this.mergeFilter);let ptr=await this.getPtr();this.raw_ptr=this.backend.add_synthetic_filter(ptr,filters2)}if(this.ranking){await this.set_ranking(this.ranking)}}async loadEntry(){try{let entry_response=await fetch(`${this.basePath}pagefind-entry.json?ts=${Date.now()}`);let entry_json=await entry_response.json();this.languages=entry_json.languages;if(entry_json.version!==this.version){if(this.primary){console.warn(["Pagefind JS version doesn't match the version in your search index.",`Pagefind JS: ${this.version}. Pagefind index: ${entry_json.version}`,"If you upgraded Pagefind recently, you likely have a cached pagefind.js file.","If you encounter any search errors, try clearing your cache."].join("\n"))}else{console.warn(["Merging a Pagefind index from a different version than the main Pagefind instance.",`Main Pagefind JS: ${this.version}. Merged index (${this.basePath}): ${entry_json.version}`,"If you encounter any search errors, make sure that both sites are running the same version of Pagefind."].join("\n"))}}}catch(e){console.error(`Failed to load Pagefind metadata: +${e?.toString()}`);throw new Error("Failed to load Pagefind metadata")}}findIndex(language){if(this.languages){let index=this.languages[language];if(index)return index;index=this.languages[language.split("-")[0]];if(index)return index;let topLang=Object.values(this.languages).sort((a,b)=>b.page_count-a.page_count);if(topLang[0])return topLang[0]}throw new Error("Pagefind Error: No language indexes found.")}async loadMeta(index){try{let compressed_resp=await fetch(`${this.basePath}pagefind.${index}.pf_meta`);let compressed_meta=await compressed_resp.arrayBuffer();this.searchMeta=this.decompress(new Uint8Array(compressed_meta),"Pagefind metadata")}catch(e){console.error(`Failed to load the meta index: +${e?.toString()}`)}}async loadWasm(language){try{const wasm_url=`${this.basePath}wasm.${language}.pagefind`;let compressed_resp=await fetch(wasm_url);let compressed_wasm=await compressed_resp.arrayBuffer();const final_wasm=this.decompress(new Uint8Array(compressed_wasm),"Pagefind WebAssembly");if(!final_wasm){throw new Error("No WASM after decompression")}this.wasm=await this.backend(final_wasm)}catch(e){console.error(`Failed to load the Pagefind WASM: +${e?.toString()}`);throw new Error(`Failed to load the Pagefind WASM: +${e?.toString()}`)}}async _loadGenericChunk(url,method){try{let compressed_resp=await fetch(url);let compressed_chunk=await compressed_resp.arrayBuffer();let chunk=this.decompress(new Uint8Array(compressed_chunk),url);let ptr=await this.getPtr();this.raw_ptr=this.backend[method](ptr,chunk)}catch(e){console.error(`Failed to load the index chunk ${url}: +${e?.toString()}`)}}async loadChunk(hash){if(!this.loaded_chunks[hash]){const url=`${this.basePath}index/${hash}.pf_index`;this.loaded_chunks[hash]=this._loadGenericChunk(url,"load_index_chunk")}return await this.loaded_chunks[hash]}async loadFilterChunk(hash){if(!this.loaded_filters[hash]){const url=`${this.basePath}filter/${hash}.pf_filter`;this.loaded_filters[hash]=this._loadGenericChunk(url,"load_filter_chunk")}return await this.loaded_filters[hash]}async _loadFragment(hash){let compressed_resp=await fetch(`${this.basePath}fragment/${hash}.pf_fragment`);let compressed_fragment=await compressed_resp.arrayBuffer();let fragment=this.decompress(new Uint8Array(compressed_fragment),`Fragment ${hash}`);return JSON.parse(new TextDecoder().decode(fragment))}async loadFragment(hash,weighted_locations=[],search_term){if(!this.loaded_fragments[hash]){this.loaded_fragments[hash]=this._loadFragment(hash)}let fragment=await this.loaded_fragments[hash];fragment.weighted_locations=weighted_locations;fragment.locations=weighted_locations.map((l)=>l.location);if(!fragment.raw_content){fragment.raw_content=fragment.content.replace(//g,">");fragment.content=fragment.content.replace(/\u200B/g,"")}if(!fragment.raw_url){fragment.raw_url=fragment.url}fragment.url=this.processedUrl(fragment.raw_url,search_term);const excerpt_start=calculate_excerpt_region(weighted_locations,this.excerptLength);fragment.excerpt=build_excerpt(fragment.raw_content,excerpt_start,this.excerptLength,fragment.locations);fragment.sub_results=calculate_sub_results(fragment,this.excerptLength);return fragment}fullUrl(raw){if(/^(https?:)?\/\//.test(raw)){return raw}return`${this.baseUrl}/${raw}`.replace(/\/+/g,"/").replace(/^(https?:\/)/,"$1/")}processedUrl(url,search_term){const normalized=this.fullUrl(url);if(this.highlightParam===null){return normalized}let individual_terms=search_term.split(/\s+/);try{let processed=new URL(normalized);for(const term of individual_terms){processed.searchParams.append(this.highlightParam,term)}return processed.toString()}catch(e){try{let processed=new URL(`https://example.com${normalized}`);for(const term of individual_terms){processed.searchParams.append(this.highlightParam,term)}return processed.toString().replace(/^https:\/\/example\.com/,"")}catch(e2){return normalized}}}async getPtr(){while(this.raw_ptr===null){await asyncSleep(50)}if(!this.raw_ptr){console.error("Pagefind: WASM Error (No pointer)");throw new Error("Pagefind: WASM Error (No pointer)")}return this.raw_ptr}parseFilters(str){let output={};if(!str)return output;for(const block of str.split("__PF_FILTER_DELIM__")){let[filter,values]=block.split(/:(.*)$/);output[filter]={};if(values){for(const valueBlock of values.split("__PF_VALUE_DELIM__")){if(valueBlock){let extract=valueBlock.match(/^(.*):(\d+)$/);if(extract){let[,value,count]=extract;output[filter][value]=parseInt(count)??count}}}}}return output}stringifyFilters(obj={}){return JSON.stringify(obj)}stringifySorts(obj={}){let sorts=Object.entries(obj);for(let[sort,direction]of sorts){if(sorts.length>1){console.warn(`Pagefind was provided multiple sort options in this search, but can only operate on one. Using the ${sort} sort.`)}if(direction!=="asc"&&direction!=="desc"){console.warn(`Pagefind was provided a sort with unknown direction ${direction}. Supported: [asc, desc]`)}return`${sort}:${direction}`}return``}async filters(){let ptr=await this.getPtr();let filters2=this.backend.request_all_filter_indexes(ptr);let filter_chunks=filters2.split(" ").filter((v)=>v).map((chunk)=>this.loadFilterChunk(chunk));await Promise.all([...filter_chunks]);ptr=await this.getPtr();let results=this.backend.filters(ptr);return this.parseFilters(results)}async preload(term,options2={}){await this.search(term,{...options2,preload:true})}async search(term,options2={}){options2={verbose:false,filters:{},sort:{},...options2};const log=(str)=>{if(options2.verbose)console.log(str)};log(`Starting search on ${this.basePath}`);let start=Date.now();let ptr=await this.getPtr();let filter_only=term===null;term=term??"";let exact_search=/^\s*".+"\s*$/.test(term);if(exact_search){log(`Running an exact search`)}term=term.toLowerCase().trim().replace(/[\.`~!@#\$%\^&\*\(\)\{\}\[\]\\\|:;'",<>\/\?\-]/g,"").replace(/\s{2,}/g," ").trim();log(`Normalized search term to ${term}`);if(!term?.length&&!filter_only){return{results:[],unfilteredResultCount:0,filters:{},totalFilters:{},timings:{preload:Date.now()-start,search:Date.now()-start,total:Date.now()-start}}}let sort_list=this.stringifySorts(options2.sort);log(`Stringified sort to ${sort_list}`);const filter_list=this.stringifyFilters(options2.filters);log(`Stringified filters to ${filter_list}`);let index_resp=this.backend.request_indexes(ptr,term);let filter_resp=this.backend.request_filter_indexes(ptr,filter_list);let chunks=index_resp.split(" ").filter((v)=>v).map((chunk)=>this.loadChunk(chunk));let filter_chunks=filter_resp.split(" ").filter((v)=>v).map((chunk)=>this.loadFilterChunk(chunk));await Promise.all([...chunks,...filter_chunks]);log(`Loaded necessary chunks to run search`);if(options2.preload){log(`Preload \u2014 bailing out of search operation now.`);return null}ptr=await this.getPtr();let searchStart=Date.now();let result=this.backend.search(ptr,term,filter_list,sort_list,exact_search);log(`Got the raw search result: ${result}`);let[unfilteredResultCount,all_results,filters2,totalFilters]=result.split(/:([^:]*):(.*)__PF_UNFILTERED_DELIM__(.*)$/);let filterObj=this.parseFilters(filters2);let totalFilterObj=this.parseFilters(totalFilters);log(`Remaining filters: ${JSON.stringify(result)}`);let results=all_results.length?all_results.split(" "):[];let resultsInterface=results.map((result2)=>{let[hash,score,all_locations]=result2.split("@");log(`Processing result: + hash:${hash} + score:${score} + locations:${all_locations}`);let weighted_locations=all_locations.length?all_locations.split(",").map((l)=>{let[weight,balanced_score,location]=l.split(">");return{weight:parseInt(weight)/24,balanced_score:parseFloat(balanced_score),location:parseInt(location)}}):[];let locations=weighted_locations.map((l)=>l.location);return{id:hash,score:parseFloat(score)*this.indexWeight,words:locations,data:async()=>await this.loadFragment(hash,weighted_locations,term)}});const searchTime=Date.now()-searchStart;const realTime=Date.now()-start;log(`Found ${results.length} result${results.length == 1 ? "" : "s"} for "${term}" in ${Date.now() - searchStart}ms (${Date.now() - start}ms realtime)`);return{results:resultsInterface,unfilteredResultCount:parseInt(unfilteredResultCount),filters:filterObj,totalFilters:totalFilterObj,timings:{preload:realTime-searchTime,search:searchTime,total:realTime}}}};var Pagefind=class{constructor(options2={}){this.backend=wasm_bindgen;this.primaryLanguage="unknown";this.searchID=0;this.primary=new PagefindInstance({...options2,primary:true});this.instances=[this.primary];this.init(options2?.language)}async options(options2){await this.primary.options(options2)}async init(overrideLanguage){if(document?.querySelector){const langCode=document.querySelector("html")?.getAttribute("lang")||"unknown";this.primaryLanguage=langCode.toLocaleLowerCase()}await this.primary.init(overrideLanguage?overrideLanguage:this.primaryLanguage,{load_wasm:true})}async mergeIndex(indexPath,options2={}){if(this.primary.basePath.startsWith(indexPath)){console.warn(`Skipping mergeIndex ${indexPath} that appears to be the same as the primary index (${this.primary.basePath})`);return}let newInstance=new PagefindInstance({primary:false,basePath:indexPath});this.instances.push(newInstance);while(this.primary.wasm===null){await asyncSleep(50)}await newInstance.init(options2.language||this.primaryLanguage,{load_wasm:false});delete options2["language"];await newInstance.options(options2)}mergeFilters(filters2){const merged={};for(const searchFilter of filters2){for(const[filterKey,values]of Object.entries(searchFilter)){if(!merged[filterKey]){merged[filterKey]=values;continue}else{const filter=merged[filterKey];for(const[valueKey,count]of Object.entries(values)){filter[valueKey]=(filter[valueKey]||0)+count}}}}return merged}async filters(){let filters2=await Promise.all(this.instances.map((i2)=>i2.filters()));return this.mergeFilters(filters2)}async preload(term,options2={}){await Promise.all(this.instances.map((i2)=>i2.preload(term,options2)))}async debouncedSearch(term,options2,debounceTimeoutMs){const thisSearchID=++this.searchID;this.preload(term,options2);await asyncSleep(debounceTimeoutMs);if(thisSearchID!==this.searchID){return null}const searchResult=await this.search(term,options2);if(thisSearchID!==this.searchID){return null}return searchResult}async search(term,options2={}){let search2=await Promise.all(this.instances.map((i2)=>i2.search(term,options2)));const filters2=this.mergeFilters(search2.map((s)=>s.filters));const totalFilters=this.mergeFilters(search2.map((s)=>s.totalFilters));const results=search2.map((s)=>s.results).flat().sort((a,b)=>b.score-a.score);const timings=search2.map((s)=>s.timings);const unfilteredResultCount=search2.reduce((sum,s)=>sum+s.unfilteredResultCount,0);return{results,unfilteredResultCount,filters:filters2,totalFilters,timings}}};var pagefind=void 0;var initial_options=void 0;var init_pagefind=()=>{if(!pagefind){pagefind=new Pagefind(initial_options??{})}};var options=async(new_options)=>{if(pagefind){await pagefind.options(new_options)}else{initial_options=new_options}};var init=async()=>{init_pagefind()};var destroy=async()=>{pagefind=void 0;initial_options=void 0};var mergeIndex=async(indexPath,options2)=>{init_pagefind();return await pagefind.mergeIndex(indexPath,options2)};var search=async(term,options2)=>{init_pagefind();return await pagefind.search(term,options2)};var debouncedSearch=async(term,options2,debounceTimeoutMs=300)=>{init_pagefind();return await pagefind.debouncedSearch(term,options2,debounceTimeoutMs)};var preload=async(term,options2)=>{init_pagefind();return await pagefind.preload(term,options2)};var filters=async()=>{init_pagefind();return await pagefind.filters()};export{debouncedSearch,destroy,filters,init,mergeIndex,options,preload,search} \ No newline at end of file diff --git a/pr-preview/pr-1029/pagefind/wasm.en.pagefind b/pr-preview/pr-1029/pagefind/wasm.en.pagefind new file mode 100644 index 000000000..83cf973c2 Binary files /dev/null and b/pr-preview/pr-1029/pagefind/wasm.en.pagefind differ diff --git a/pr-preview/pr-1029/pagefind/wasm.unknown.pagefind b/pr-preview/pr-1029/pagefind/wasm.unknown.pagefind new file mode 100644 index 000000000..f50e14541 Binary files /dev/null and b/pr-preview/pr-1029/pagefind/wasm.unknown.pagefind differ diff --git a/pr-preview/pr-1029/polyfill-8d34c62e07e660a83f29.js b/pr-preview/pr-1029/polyfill-8d34c62e07e660a83f29.js deleted file mode 100644 index e8644c593..000000000 --- a/pr-preview/pr-1029/polyfill-8d34c62e07e660a83f29.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{VXT5:function(t,e,r){(function(t){!function(){var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==t?t:"undefined"!=typeof self?self:{};function r(t,e,r){return t(r={path:e,exports:{},require:function(t,e){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}()}},r.exports),r.exports}var n=function(t){return t&&t.Math==Math&&t},o=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||function(){return this}()||Function("return this")(),i=function(t){try{return!!t()}catch(t){return!0}},a=!i((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),u={}.propertyIsEnumerable,c=Object.getOwnPropertyDescriptor,s={f:c&&!u.call({1:2},1)?function(t){var e=c(this,t);return!!e&&e.enumerable}:u},f=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},l={}.toString,h=function(t){return l.call(t).slice(8,-1)},p="".split,d=i((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==h(t)?p.call(t,""):Object(t)}:Object,v=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t},g=function(t){return d(v(t))},y=function(t){return"object"==typeof t?null!==t:"function"==typeof t},m=function(t,e){if(!y(t))return t;var r,n;if(e&&"function"==typeof(r=t.toString)&&!y(n=r.call(t)))return n;if("function"==typeof(r=t.valueOf)&&!y(n=r.call(t)))return n;if(!e&&"function"==typeof(r=t.toString)&&!y(n=r.call(t)))return n;throw TypeError("Can't convert object to primitive value")},b={}.hasOwnProperty,S=function(t,e){return b.call(t,e)},E=o.document,w=y(E)&&y(E.createElement),R=function(t){return w?E.createElement(t):{}},T=!a&&!i((function(){return 7!=Object.defineProperty(R("div"),"a",{get:function(){return 7}}).a})),O=Object.getOwnPropertyDescriptor,x={f:a?O:function(t,e){if(t=g(t),e=m(e,!0),T)try{return O(t,e)}catch(t){}if(S(t,e))return f(!s.f.call(t,e),t[e])}},A=function(t){if(!y(t))throw TypeError(String(t)+" is not an object");return t},I=Object.defineProperty,_={f:a?I:function(t,e,r){if(A(t),e=m(e,!0),A(r),T)try{return I(t,e,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported");return"value"in r&&(t[e]=r.value),t}},j=a?function(t,e,r){return _.f(t,e,f(1,r))}:function(t,e,r){return t[e]=r,t},P=function(t,e){try{j(o,t,e)}catch(n){o[t]=e}return e},N=o["__core-js_shared__"]||P("__core-js_shared__",{}),M=Function.toString;"function"!=typeof N.inspectSource&&(N.inspectSource=function(t){return M.call(t)});var U,k,L,D=N.inspectSource,C=o.WeakMap,F="function"==typeof C&&/native code/.test(D(C)),B=r((function(t){(t.exports=function(t,e){return N[t]||(N[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.8.1",mode:"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})})),W=0,z=Math.random(),G=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++W+z).toString(36)},K=B("keys"),V=function(t){return K[t]||(K[t]=G(t))},$={};if(F){var q=N.state||(N.state=new(0,o.WeakMap)),H=q.get,X=q.has,Y=q.set;U=function(t,e){return e.facade=t,Y.call(q,t,e),e},k=function(t){return H.call(q,t)||{}},L=function(t){return X.call(q,t)}}else{var J=V("state");$[J]=!0,U=function(t,e){return e.facade=t,j(t,J,e),e},k=function(t){return S(t,J)?t[J]:{}},L=function(t){return S(t,J)}}var Q,Z={set:U,get:k,has:L,enforce:function(t){return L(t)?k(t):U(t,{})},getterFor:function(t){return function(e){var r;if(!y(e)||(r=k(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return r}}},tt=r((function(t){var e=Z.get,r=Z.enforce,n=String(String).split("String");(t.exports=function(t,e,i,a){var u,c=!!a&&!!a.unsafe,s=!!a&&!!a.enumerable,f=!!a&&!!a.noTargetGet;"function"==typeof i&&("string"!=typeof e||S(i,"name")||j(i,"name",e),(u=r(i)).source||(u.source=n.join("string"==typeof e?e:""))),t!==o?(c?!f&&t[e]&&(s=!0):delete t[e],s?t[e]=i:j(t,e,i)):s?t[e]=i:P(e,i)})(Function.prototype,"toString",(function(){return"function"==typeof this&&e(this).source||D(this)}))})),et=o,rt=function(t){return"function"==typeof t?t:void 0},nt=function(t,e){return arguments.length<2?rt(et[t])||rt(o[t]):et[t]&&et[t][e]||o[t]&&o[t][e]},ot=Math.ceil,it=Math.floor,at=function(t){return isNaN(t=+t)?0:(t>0?it:ot)(t)},ut=Math.min,ct=function(t){return t>0?ut(at(t),9007199254740991):0},st=Math.max,ft=Math.min,lt=function(t,e){var r=at(t);return r<0?st(r+e,0):ft(r,e)},ht=function(t){return function(e,r,n){var o,i=g(e),a=ct(i.length),u=lt(n,a);if(t&&r!=r){for(;a>u;)if((o=i[u++])!=o)return!0}else for(;a>u;u++)if((t||u in i)&&i[u]===r)return t||u||0;return!t&&-1}},pt={includes:ht(!0),indexOf:ht(!1)},dt=pt.indexOf,vt=function(t,e){var r,n=g(t),o=0,i=[];for(r in n)!S($,r)&&S(n,r)&&i.push(r);for(;e.length>o;)S(n,r=e[o++])&&(~dt(i,r)||i.push(r));return i},gt=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],yt=gt.concat("length","prototype"),mt={f:Object.getOwnPropertyNames||function(t){return vt(t,yt)}},bt={f:Object.getOwnPropertySymbols},St=nt("Reflect","ownKeys")||function(t){var e=mt.f(A(t)),r=bt.f;return r?e.concat(r(t)):e},Et=function(t,e){for(var r=St(e),n=_.f,o=x.f,i=0;i2?arguments[2]:void 0,u=Nt((void 0===a?n:lt(a,n))-i,n-o),c=1;for(i0;)i in r?r[o]=r[i]:delete r[o],o+=c,i+=c;return r},Ut=!!Object.getOwnPropertySymbols&&!i((function(){return!String(Symbol())})),kt=Ut&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,Lt=B("wks"),Dt=o.Symbol,Ct=kt?Dt:Dt&&Dt.withoutSetter||G,Ft=function(t){return S(Lt,t)||(Lt[t]=Ut&&S(Dt,t)?Dt[t]:Ct("Symbol."+t)),Lt[t]},Bt=Object.keys||function(t){return vt(t,gt)},Wt=a?Object.defineProperties:function(t,e){A(t);for(var r,n=Bt(e),o=n.length,i=0;o>i;)_.f(t,r=n[i++],e[r]);return t},zt=nt("document","documentElement"),Gt=V("IE_PROTO"),Kt=function(){},Vt=function(t){return" + + Skip to content

      Server-Side Apply

      Tanka supports +server-side apply, +which requires at least Kubernetes 1.16+, and was promoted to stable status in 1.22.

      +

      To enable server-side diff in tanka, add the following field to spec.json:

      +
      {
      "spec": {
      "applyStrategy": "server",
      }
      }
      +

      This also has the effect of changing the default diff strategy +to server, but this can be overridden via command line flags or spec.json.

      +

      While server-side apply doesn’t have any effect on the resources being applied and is intended to be a general in-place upgrade to client-side apply, there are differences in how fields are managed that can make converting existing cluster -resources a non-trival change.

      Identifying and fixing these changes are beyond the scope of this guide, but -many can be found before an apply by using the validate or server -diff strategy.

      Field conflicts

      As part of the changes, you may encounter error messages which -recommend the use of the --force-conflicts flag. Using tk apply --force +resources a non-trival change.

      +

      Identifying and fixing these changes are beyond the scope of this guide, but +many can be found before an apply by using the validate or server +diff strategy.

      +

      Field conflicts

      +

      As part of the changes, you may encounter error messages which +recommend the use of the --force-conflicts flag. Using tk apply --force in server-side mode will enable that flag for kubectl instead of -kubectl --force, which no longer has any effect in server-side mode.

      \ No newline at end of file +kubectl --force, which no longer has any effect in server-side mode.

      \ No newline at end of file diff --git a/pr-preview/pr-1029/sitemap-0.xml b/pr-preview/pr-1029/sitemap-0.xml new file mode 100644 index 000000000..893e9eee3 --- /dev/null +++ b/pr-preview/pr-1029/sitemap-0.xml @@ -0,0 +1 @@ +https://tanka.dev/pr-preview/pr-1029/https://tanka.dev/pr-preview/pr-1029/completion/https://tanka.dev/pr-preview/pr-1029/config/https://tanka.dev/pr-preview/pr-1029/diff-strategy/https://tanka.dev/pr-preview/pr-1029/directory-structure/https://tanka.dev/pr-preview/pr-1029/env-vars/https://tanka.dev/pr-preview/pr-1029/exporting/https://tanka.dev/pr-preview/pr-1029/faq/https://tanka.dev/pr-preview/pr-1029/formatting/https://tanka.dev/pr-preview/pr-1029/garbage-collection/https://tanka.dev/pr-preview/pr-1029/helm/https://tanka.dev/pr-preview/pr-1029/inline-environments/https://tanka.dev/pr-preview/pr-1029/install/https://tanka.dev/pr-preview/pr-1029/jsonnet/injecting-values/https://tanka.dev/pr-preview/pr-1029/jsonnet/main/https://tanka.dev/pr-preview/pr-1029/jsonnet/native/https://tanka.dev/pr-preview/pr-1029/jsonnet/overview/https://tanka.dev/pr-preview/pr-1029/known-issues/https://tanka.dev/pr-preview/pr-1029/kustomize/https://tanka.dev/pr-preview/pr-1029/libraries/import-paths/https://tanka.dev/pr-preview/pr-1029/libraries/install-publish/https://tanka.dev/pr-preview/pr-1029/libraries/overriding/https://tanka.dev/pr-preview/pr-1029/namespaces/https://tanka.dev/pr-preview/pr-1029/output-filtering/https://tanka.dev/pr-preview/pr-1029/server-side-apply/https://tanka.dev/pr-preview/pr-1029/tutorial/abstraction/https://tanka.dev/pr-preview/pr-1029/tutorial/environments/https://tanka.dev/pr-preview/pr-1029/tutorial/jsonnet/https://tanka.dev/pr-preview/pr-1029/tutorial/k-lib/https://tanka.dev/pr-preview/pr-1029/tutorial/overview/https://tanka.dev/pr-preview/pr-1029/tutorial/parameters/https://tanka.dev/pr-preview/pr-1029/tutorial/refresher/ \ No newline at end of file diff --git a/pr-preview/pr-1029/sitemap-index.xml b/pr-preview/pr-1029/sitemap-index.xml new file mode 100644 index 000000000..452b01fb6 --- /dev/null +++ b/pr-preview/pr-1029/sitemap-index.xml @@ -0,0 +1 @@ +https://tanka.dev/pr-preview/pr-1029/sitemap-0.xml \ No newline at end of file diff --git a/pr-preview/pr-1029/src-components-home-snippet/index.html b/pr-preview/pr-1029/src-components-home-snippet/index.html deleted file mode 100644 index d59665bbb..000000000 --- a/pr-preview/pr-1029/src-components-home-snippet/index.html +++ /dev/null @@ -1,38 +0,0 @@ -Snippet | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      Writing Jsonnet
      Libraries
      Advanced features
      References
      Frequently asked questionsKnown issues
      local k = import "k.libsonnet";
      -
      -{
      -    grafana: k.apps.v1.deployment.new(
      -        name="grafana",
      -        replicas=1,
      -        containers=[k.core.v1.container.new(
      -            name="grafana",
      -            image="grafana/grafana",
      -        )]
      -    )
      -}
      \ No newline at end of file diff --git a/pr-preview/pr-1029/src-components-install-jb-arch/index.html b/pr-preview/pr-1029/src-components-install-jb-arch/index.html deleted file mode 100644 index 37069c644..000000000 --- a/pr-preview/pr-1029/src-components-install-jb-arch/index.html +++ /dev/null @@ -1,7 +0,0 @@ -Arch | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      Writing Jsonnet
      Libraries
      Advanced features
      References
      Frequently asked questionsKnown issues

      On ArchLinux, install using the jsonnet-bundler-bin AUR package:

      $ yay jsonnet-bundler-bin
      \ No newline at end of file diff --git a/pr-preview/pr-1029/src-components-install-jb-binary/index.html b/pr-preview/pr-1029/src-components-install-jb-binary/index.html deleted file mode 100644 index 881c8ca5c..000000000 --- a/pr-preview/pr-1029/src-components-install-jb-binary/index.html +++ /dev/null @@ -1,38 +0,0 @@ -Binary | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      Writing Jsonnet
      Libraries
      Advanced features
      References
      Frequently asked questionsKnown issues

      The jb binary is primarily distributed using GitHub releases.

      Linux, macOS

      For Linux and macOS, download the binary for your architecture, put it somewhere on your $PATH, and make it an executable:

      # Linux amd64:
      -sudo curl -Lo /usr/local/bin/jb https://github.com/jsonnet-bundler/jsonnet-bundler/releases/latest/download/jb-linux-amd64
      -sudo chmod a+x /usr/local/bin/jb
      -
      -# Linux arm / arm64 (e.g. RaspberryPi):
      -sudo curl -Lo /usr/local/bin/jb https://github.com/jsonnet-bundler/jsonnet-bundler/releases/latest/download/jb-linux-arm
      -sudo curl -Lo /usr/local/bin/jb https://github.com/jsonnet-bundler/jsonnet-bundler/releases/latest/download/jb-linux-arm64
      -sudo chmod a+x /usr/local/bin/jb
      -
      -# macOS:
      -sudo curl -Lo /usr/local/bin/jb https://github.com/jsonnet-bundler/jsonnet-bundler/releases/latest/download/jb-darwin-amd64
      -sudo chmod a+x /usr/local/bin/jb
      \ No newline at end of file diff --git a/pr-preview/pr-1029/src-components-install-jb-go/index.html b/pr-preview/pr-1029/src-components-install-jb-go/index.html deleted file mode 100644 index ac5057f40..000000000 --- a/pr-preview/pr-1029/src-components-install-jb-go/index.html +++ /dev/null @@ -1,28 +0,0 @@ -Go | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      Writing Jsonnet
      Libraries
      Advanced features
      References
      Frequently asked questionsKnown issues

      If you happen to have a local Go toolchain available, you can build from source using go install:

      $ cd /tmp
      -$ go install github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb@latest
      \ No newline at end of file diff --git a/pr-preview/pr-1029/src-components-install-jb-osx/index.html b/pr-preview/pr-1029/src-components-install-jb-osx/index.html deleted file mode 100644 index cfe93180a..000000000 --- a/pr-preview/pr-1029/src-components-install-jb-osx/index.html +++ /dev/null @@ -1,28 +0,0 @@ -Osx | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      Writing Jsonnet
      Libraries
      Advanced features
      References
      Frequently asked questionsKnown issues

      On macOS, Jsonnet Bundler is best installed using brew:

      $ brew install jsonnet-bundler

      This downloads the most recent version of Jsonnet Bundler and installs it.
      -Also, Jsonnet Bundler is automatically kept up to date as part of brew upgrade.

      \ No newline at end of file diff --git a/pr-preview/pr-1029/src-components-install-tk-arch/index.html b/pr-preview/pr-1029/src-components-install-tk-arch/index.html deleted file mode 100644 index 8ea058b3b..000000000 --- a/pr-preview/pr-1029/src-components-install-tk-arch/index.html +++ /dev/null @@ -1,33 +0,0 @@ -Arch | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      Writing Jsonnet
      Libraries
      Advanced features
      References
      Frequently asked questionsKnown issues

      We maintain two AUR packages, one building from -source and another one using a -pre-compiled binary.

      These can be installed using any AUR helper, e.g. yay:

      # from source:
      -$ yay tanka
      -
      -# using pre-compiled binary:
      -$ yay tanka-bin
      \ No newline at end of file diff --git a/pr-preview/pr-1029/src-components-install-tk-binary/index.html b/pr-preview/pr-1029/src-components-install-tk-binary/index.html deleted file mode 100644 index 909fad2b4..000000000 --- a/pr-preview/pr-1029/src-components-install-tk-binary/index.html +++ /dev/null @@ -1,40 +0,0 @@ -Binary | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      Writing Jsonnet
      Libraries
      Advanced features
      References
      Frequently asked questionsKnown issues

      For all other operating systems, we provide pre-compiled binaries for Tanka at -GitHub Releases.

      Just grab the latest version from there, download it and put somewhere in your -$PATH (e.g. to /usr/local/bin/tk)

      Linux, macOS

      For Linux and macOS, download the binary for your architecture, put it somewhere on your $PATH, and make it an executable:

      # Linux amd64:
      -sudo curl -Lo /usr/local/bin/tk https://github.com/grafana/tanka/releases/latest/download/tk-linux-amd64
      -sudo chmod a+x /usr/local/bin/tk
      -
      -# Linux arm / arm64 (e.g. RaspberryPi):
      -sudo curl -Lo /usr/local/bin/tk https://github.com/grafana/tanka/releases/latest/download/tk-linux-arm
      -sudo curl -Lo /usr/local/bin/tk https://github.com/grafana/tanka/releases/latest/download/tk-linux-arm64
      -sudo chmod a+x /usr/local/bin/tk
      -
      -# macOS:
      -sudo curl -Lo /usr/local/bin/tk https://github.com/grafana/tanka/releases/latest/download/tk-darwin-amd64
      -sudo chmod a+x /usr/local/bin/tk
      \ No newline at end of file diff --git a/pr-preview/pr-1029/src-components-install-tk-go/index.html b/pr-preview/pr-1029/src-components-install-tk-go/index.html deleted file mode 100644 index f92c630b1..000000000 --- a/pr-preview/pr-1029/src-components-install-tk-go/index.html +++ /dev/null @@ -1,30 +0,0 @@ -Go | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      Writing Jsonnet
      Libraries
      Advanced features
      References
      Frequently asked questionsKnown issues

      If you happen to have a local Go toolchain, you can also build Tanka from source using go install:

      $ cd /tmp
      -$ go install github.com/grafana/tanka/cmd/tk@latest

      If that does not work for whatever reason (Go modules, etc), clone and compile manually:

      $ git clone https://github.com/grafana/tanka
      -$ cd tanka
      -$ make install
      \ No newline at end of file diff --git a/pr-preview/pr-1029/src-components-install-tk-osx/index.html b/pr-preview/pr-1029/src-components-install-tk-osx/index.html deleted file mode 100644 index 73a00dde4..000000000 --- a/pr-preview/pr-1029/src-components-install-tk-osx/index.html +++ /dev/null @@ -1,28 +0,0 @@ -Osx | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      Writing Jsonnet
      Libraries
      Advanced features
      References
      Frequently asked questionsKnown issues

      On macOS, Tanka is best installed using brew:

      $ brew install tanka

      This downloads the most recent version of Tanka and installs it.
      -Also, Tanka is automatically kept up to date as part of brew upgrade.

      \ No newline at end of file diff --git a/pr-preview/pr-1029/static/fira-mono-latin-400-452f020811cb7c0d8e4c7a8565279552.woff b/pr-preview/pr-1029/static/fira-mono-latin-400-452f020811cb7c0d8e4c7a8565279552.woff deleted file mode 100644 index 0c32bb9bf..000000000 Binary files a/pr-preview/pr-1029/static/fira-mono-latin-400-452f020811cb7c0d8e4c7a8565279552.woff and /dev/null differ diff --git a/pr-preview/pr-1029/static/fira-mono-latin-400-e3ae866ff2823372c9e3aaadebbd8db2.woff2 b/pr-preview/pr-1029/static/fira-mono-latin-400-e3ae866ff2823372c9e3aaadebbd8db2.woff2 deleted file mode 100644 index 93eeae93b..000000000 Binary files a/pr-preview/pr-1029/static/fira-mono-latin-400-e3ae866ff2823372c9e3aaadebbd8db2.woff2 and /dev/null differ diff --git a/pr-preview/pr-1029/static/fira-mono-latin-500-619d297444f7231cb1e2c2e90e460063.woff b/pr-preview/pr-1029/static/fira-mono-latin-500-619d297444f7231cb1e2c2e90e460063.woff deleted file mode 100644 index 0be8bb1d5..000000000 Binary files a/pr-preview/pr-1029/static/fira-mono-latin-500-619d297444f7231cb1e2c2e90e460063.woff and /dev/null differ diff --git a/pr-preview/pr-1029/static/fira-mono-latin-500-e8330ccb5d46418d07df67a12e125315.woff2 b/pr-preview/pr-1029/static/fira-mono-latin-500-e8330ccb5d46418d07df67a12e125315.woff2 deleted file mode 100644 index 3db53c6bf..000000000 Binary files a/pr-preview/pr-1029/static/fira-mono-latin-500-e8330ccb5d46418d07df67a12e125315.woff2 and /dev/null differ diff --git a/pr-preview/pr-1029/static/fira-mono-latin-700-88eb04d0e7cd2ef944219997d022085f.woff2 b/pr-preview/pr-1029/static/fira-mono-latin-700-88eb04d0e7cd2ef944219997d022085f.woff2 deleted file mode 100644 index 2fd453f3f..000000000 Binary files a/pr-preview/pr-1029/static/fira-mono-latin-700-88eb04d0e7cd2ef944219997d022085f.woff2 and /dev/null differ diff --git a/pr-preview/pr-1029/static/fira-mono-latin-700-dfbd25650dfa16dc45d8d6e57bbf13cf.woff b/pr-preview/pr-1029/static/fira-mono-latin-700-dfbd25650dfa16dc45d8d6e57bbf13cf.woff deleted file mode 100644 index f9eb91c89..000000000 Binary files a/pr-preview/pr-1029/static/fira-mono-latin-700-dfbd25650dfa16dc45d8d6e57bbf13cf.woff and /dev/null differ diff --git a/pr-preview/pr-1029/static/source-sans-pro-latin-200-a3bea45981594e21f3a107386ba1a219.woff b/pr-preview/pr-1029/static/source-sans-pro-latin-200-a3bea45981594e21f3a107386ba1a219.woff deleted file mode 100644 index eda58a980..000000000 Binary files a/pr-preview/pr-1029/static/source-sans-pro-latin-200-a3bea45981594e21f3a107386ba1a219.woff and /dev/null differ diff --git a/pr-preview/pr-1029/static/source-sans-pro-latin-200-d30190b81146365670a14117cefddec7.woff2 b/pr-preview/pr-1029/static/source-sans-pro-latin-200-d30190b81146365670a14117cefddec7.woff2 deleted file mode 100644 index f680811ea..000000000 Binary files a/pr-preview/pr-1029/static/source-sans-pro-latin-200-d30190b81146365670a14117cefddec7.woff2 and /dev/null differ diff --git a/pr-preview/pr-1029/static/source-sans-pro-latin-200italic-9f7e37594212f66e41ed02e3ec504b8f.woff b/pr-preview/pr-1029/static/source-sans-pro-latin-200italic-9f7e37594212f66e41ed02e3ec504b8f.woff deleted file mode 100644 index 83972ae5c..000000000 Binary files a/pr-preview/pr-1029/static/source-sans-pro-latin-200italic-9f7e37594212f66e41ed02e3ec504b8f.woff and /dev/null differ diff --git a/pr-preview/pr-1029/static/source-sans-pro-latin-200italic-dba63c770ee612903f861b4fa8bc5a2e.woff2 b/pr-preview/pr-1029/static/source-sans-pro-latin-200italic-dba63c770ee612903f861b4fa8bc5a2e.woff2 deleted file mode 100644 index cd1713351..000000000 Binary files a/pr-preview/pr-1029/static/source-sans-pro-latin-200italic-dba63c770ee612903f861b4fa8bc5a2e.woff2 and /dev/null differ diff --git a/pr-preview/pr-1029/static/source-sans-pro-latin-300-a5002963b0570a073e28156403c78670.woff b/pr-preview/pr-1029/static/source-sans-pro-latin-300-a5002963b0570a073e28156403c78670.woff deleted file mode 100644 index 98bafe5e8..000000000 Binary files a/pr-preview/pr-1029/static/source-sans-pro-latin-300-a5002963b0570a073e28156403c78670.woff and /dev/null differ diff --git a/pr-preview/pr-1029/static/source-sans-pro-latin-300-ede18477b85a5d781cd2f4001ecc5e67.woff2 b/pr-preview/pr-1029/static/source-sans-pro-latin-300-ede18477b85a5d781cd2f4001ecc5e67.woff2 deleted file mode 100644 index af998cac2..000000000 Binary files a/pr-preview/pr-1029/static/source-sans-pro-latin-300-ede18477b85a5d781cd2f4001ecc5e67.woff2 and /dev/null differ diff --git a/pr-preview/pr-1029/static/source-sans-pro-latin-300italic-c179c8f264df4b31eab6c71a532f7599.woff2 b/pr-preview/pr-1029/static/source-sans-pro-latin-300italic-c179c8f264df4b31eab6c71a532f7599.woff2 deleted file mode 100644 index 6daac0dd8..000000000 Binary files a/pr-preview/pr-1029/static/source-sans-pro-latin-300italic-c179c8f264df4b31eab6c71a532f7599.woff2 and /dev/null differ diff --git a/pr-preview/pr-1029/static/source-sans-pro-latin-300italic-f939f20b37caaa8e99bcd2e0ef22436c.woff b/pr-preview/pr-1029/static/source-sans-pro-latin-300italic-f939f20b37caaa8e99bcd2e0ef22436c.woff deleted file mode 100644 index 42232ee23..000000000 Binary files a/pr-preview/pr-1029/static/source-sans-pro-latin-300italic-f939f20b37caaa8e99bcd2e0ef22436c.woff and /dev/null differ diff --git a/pr-preview/pr-1029/static/source-sans-pro-latin-400-5cc3aae674ea3b199313b3b83bd795bc.woff b/pr-preview/pr-1029/static/source-sans-pro-latin-400-5cc3aae674ea3b199313b3b83bd795bc.woff deleted file mode 100644 index 5b6e97be7..000000000 Binary files a/pr-preview/pr-1029/static/source-sans-pro-latin-400-5cc3aae674ea3b199313b3b83bd795bc.woff and /dev/null differ diff --git a/pr-preview/pr-1029/static/source-sans-pro-latin-400-899c8f78ce650d4009d42443897aa723.woff2 b/pr-preview/pr-1029/static/source-sans-pro-latin-400-899c8f78ce650d4009d42443897aa723.woff2 deleted file mode 100644 index 36bdc0e32..000000000 Binary files a/pr-preview/pr-1029/static/source-sans-pro-latin-400-899c8f78ce650d4009d42443897aa723.woff2 and /dev/null differ diff --git a/pr-preview/pr-1029/static/source-sans-pro-latin-400italic-86b2389fa562da6b9425271d1833d490.woff b/pr-preview/pr-1029/static/source-sans-pro-latin-400italic-86b2389fa562da6b9425271d1833d490.woff deleted file mode 100644 index 4e767cf5c..000000000 Binary files a/pr-preview/pr-1029/static/source-sans-pro-latin-400italic-86b2389fa562da6b9425271d1833d490.woff and /dev/null differ diff --git a/pr-preview/pr-1029/static/source-sans-pro-latin-400italic-dac2fca7ba8512baa24172f1171c961f.woff2 b/pr-preview/pr-1029/static/source-sans-pro-latin-400italic-dac2fca7ba8512baa24172f1171c961f.woff2 deleted file mode 100644 index d3e979ba6..000000000 Binary files a/pr-preview/pr-1029/static/source-sans-pro-latin-400italic-dac2fca7ba8512baa24172f1171c961f.woff2 and /dev/null differ diff --git a/pr-preview/pr-1029/static/source-sans-pro-latin-600-a75563d7b9e5b1db163971b9a2e66216.woff b/pr-preview/pr-1029/static/source-sans-pro-latin-600-a75563d7b9e5b1db163971b9a2e66216.woff deleted file mode 100644 index 0aba561de..000000000 Binary files a/pr-preview/pr-1029/static/source-sans-pro-latin-600-a75563d7b9e5b1db163971b9a2e66216.woff and /dev/null differ diff --git a/pr-preview/pr-1029/static/source-sans-pro-latin-600-c85615b296302af51e683eecb5e371d4.woff2 b/pr-preview/pr-1029/static/source-sans-pro-latin-600-c85615b296302af51e683eecb5e371d4.woff2 deleted file mode 100644 index cb0ea772f..000000000 Binary files a/pr-preview/pr-1029/static/source-sans-pro-latin-600-c85615b296302af51e683eecb5e371d4.woff2 and /dev/null differ diff --git a/pr-preview/pr-1029/static/source-sans-pro-latin-600italic-ae24ed0c9a034d7c4098d3ddcdcb57f2.woff2 b/pr-preview/pr-1029/static/source-sans-pro-latin-600italic-ae24ed0c9a034d7c4098d3ddcdcb57f2.woff2 deleted file mode 100644 index 5be4f95f1..000000000 Binary files a/pr-preview/pr-1029/static/source-sans-pro-latin-600italic-ae24ed0c9a034d7c4098d3ddcdcb57f2.woff2 and /dev/null differ diff --git a/pr-preview/pr-1029/static/source-sans-pro-latin-600italic-c13797bd5e320111cf0af5c140ad9ee5.woff b/pr-preview/pr-1029/static/source-sans-pro-latin-600italic-c13797bd5e320111cf0af5c140ad9ee5.woff deleted file mode 100644 index cfdf5ccc4..000000000 Binary files a/pr-preview/pr-1029/static/source-sans-pro-latin-600italic-c13797bd5e320111cf0af5c140ad9ee5.woff and /dev/null differ diff --git a/pr-preview/pr-1029/static/source-sans-pro-latin-700-1a4bcb3ec9c508d478d4dbf6b56f6208.woff2 b/pr-preview/pr-1029/static/source-sans-pro-latin-700-1a4bcb3ec9c508d478d4dbf6b56f6208.woff2 deleted file mode 100644 index ce34a9fec..000000000 Binary files a/pr-preview/pr-1029/static/source-sans-pro-latin-700-1a4bcb3ec9c508d478d4dbf6b56f6208.woff2 and /dev/null differ diff --git a/pr-preview/pr-1029/static/source-sans-pro-latin-700-b03f2ec28f8e60e61974dd8c57610e5b.woff b/pr-preview/pr-1029/static/source-sans-pro-latin-700-b03f2ec28f8e60e61974dd8c57610e5b.woff deleted file mode 100644 index f2a7dd342..000000000 Binary files a/pr-preview/pr-1029/static/source-sans-pro-latin-700-b03f2ec28f8e60e61974dd8c57610e5b.woff and /dev/null differ diff --git a/pr-preview/pr-1029/static/source-sans-pro-latin-700italic-15776eec451ff4c88330cc66edd9e1e4.woff b/pr-preview/pr-1029/static/source-sans-pro-latin-700italic-15776eec451ff4c88330cc66edd9e1e4.woff deleted file mode 100644 index 38faafb98..000000000 Binary files a/pr-preview/pr-1029/static/source-sans-pro-latin-700italic-15776eec451ff4c88330cc66edd9e1e4.woff and /dev/null differ diff --git a/pr-preview/pr-1029/static/source-sans-pro-latin-700italic-ac7f680ecb10b2d7d452560d91e617d6.woff2 b/pr-preview/pr-1029/static/source-sans-pro-latin-700italic-ac7f680ecb10b2d7d452560d91e617d6.woff2 deleted file mode 100644 index a63c72797..000000000 Binary files a/pr-preview/pr-1029/static/source-sans-pro-latin-700italic-ac7f680ecb10b2d7d452560d91e617d6.woff2 and /dev/null differ diff --git a/pr-preview/pr-1029/static/source-sans-pro-latin-900-a6f749c85b751ef81fd99c6423c5ff4f.woff b/pr-preview/pr-1029/static/source-sans-pro-latin-900-a6f749c85b751ef81fd99c6423c5ff4f.woff deleted file mode 100644 index 4ad167466..000000000 Binary files a/pr-preview/pr-1029/static/source-sans-pro-latin-900-a6f749c85b751ef81fd99c6423c5ff4f.woff and /dev/null differ diff --git a/pr-preview/pr-1029/static/source-sans-pro-latin-900-d8eab344801820b04142708a330623fc.woff2 b/pr-preview/pr-1029/static/source-sans-pro-latin-900-d8eab344801820b04142708a330623fc.woff2 deleted file mode 100644 index 2cd26ebe9..000000000 Binary files a/pr-preview/pr-1029/static/source-sans-pro-latin-900-d8eab344801820b04142708a330623fc.woff2 and /dev/null differ diff --git a/pr-preview/pr-1029/static/source-sans-pro-latin-900italic-f20b423a121558d70c32160b86c9e21e.woff b/pr-preview/pr-1029/static/source-sans-pro-latin-900italic-f20b423a121558d70c32160b86c9e21e.woff deleted file mode 100644 index a3291aece..000000000 Binary files a/pr-preview/pr-1029/static/source-sans-pro-latin-900italic-f20b423a121558d70c32160b86c9e21e.woff and /dev/null differ diff --git a/pr-preview/pr-1029/static/source-sans-pro-latin-900italic-f6a4e05514b656022c3ed8be7f81d256.woff2 b/pr-preview/pr-1029/static/source-sans-pro-latin-900italic-f6a4e05514b656022c3ed8be7f81d256.woff2 deleted file mode 100644 index 5ea8a9ca0..000000000 Binary files a/pr-preview/pr-1029/static/source-sans-pro-latin-900italic-f6a4e05514b656022c3ed8be7f81d256.woff2 and /dev/null differ diff --git a/pr-preview/pr-1029/styles-95d00f891faf7b06d026.js b/pr-preview/pr-1029/styles-95d00f891faf7b06d026.js deleted file mode 100644 index 95fe79db0..000000000 --- a/pr-preview/pr-1029/styles-95d00f891faf7b06d026.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[38],[]]); -//# sourceMappingURL=styles-95d00f891faf7b06d026.js.map \ No newline at end of file diff --git a/pr-preview/pr-1029/styles-95d00f891faf7b06d026.js.map b/pr-preview/pr-1029/styles-95d00f891faf7b06d026.js.map deleted file mode 100644 index db33f02a3..000000000 --- a/pr-preview/pr-1029/styles-95d00f891faf7b06d026.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":[],"names":[],"mappings":"","file":"styles-95d00f891faf7b06d026.js","sourceRoot":""} \ No newline at end of file diff --git a/pr-preview/pr-1029/styles.5f90b90109f5908b6ec3.css b/pr-preview/pr-1029/styles.5f90b90109f5908b6ec3.css deleted file mode 100644 index 509130874..000000000 --- a/pr-preview/pr-1029/styles.5f90b90109f5908b6ec3.css +++ /dev/null @@ -1 +0,0 @@ -@import url(https://fonts.googleapis.com/css?family=Inconsolata&display=swap);@import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro&display=swap);@font-face{font-family:Fira Mono;font-style:normal;font-display:swap;font-weight:400;src:local("Fira Mono Regular "),local("Fira Mono-Regular"),url(/pr-preview/pr-1029/static/fira-mono-latin-400-e3ae866ff2823372c9e3aaadebbd8db2.woff2) format("woff2"),url(/pr-preview/pr-1029/static/fira-mono-latin-400-452f020811cb7c0d8e4c7a8565279552.woff) format("woff")}@font-face{font-family:Fira Mono;font-style:normal;font-display:swap;font-weight:500;src:local("Fira Mono Medium "),local("Fira Mono-Medium"),url(/pr-preview/pr-1029/static/fira-mono-latin-500-e8330ccb5d46418d07df67a12e125315.woff2) format("woff2"),url(/pr-preview/pr-1029/static/fira-mono-latin-500-619d297444f7231cb1e2c2e90e460063.woff) format("woff")}@font-face{font-family:Fira Mono;font-style:normal;font-display:swap;font-weight:700;src:local("Fira Mono Bold "),local("Fira Mono-Bold"),url(/pr-preview/pr-1029/static/fira-mono-latin-700-88eb04d0e7cd2ef944219997d022085f.woff2) format("woff2"),url(/pr-preview/pr-1029/static/fira-mono-latin-700-dfbd25650dfa16dc45d8d6e57bbf13cf.woff) format("woff")}@font-face{font-family:Source Sans Pro;font-style:normal;font-display:swap;font-weight:200;src:local("Source Sans Pro Extra Light "),local("Source Sans Pro-Extra Light"),url(/pr-preview/pr-1029/static/source-sans-pro-latin-200-d30190b81146365670a14117cefddec7.woff2) format("woff2"),url(/pr-preview/pr-1029/static/source-sans-pro-latin-200-a3bea45981594e21f3a107386ba1a219.woff) format("woff")}@font-face{font-family:Source Sans Pro;font-style:italic;font-display:swap;font-weight:200;src:local("Source Sans Pro Extra Light italic"),local("Source Sans Pro-Extra Lightitalic"),url(/pr-preview/pr-1029/static/source-sans-pro-latin-200italic-dba63c770ee612903f861b4fa8bc5a2e.woff2) format("woff2"),url(/pr-preview/pr-1029/static/source-sans-pro-latin-200italic-9f7e37594212f66e41ed02e3ec504b8f.woff) format("woff")}@font-face{font-family:Source Sans Pro;font-style:normal;font-display:swap;font-weight:300;src:local("Source Sans Pro Light "),local("Source Sans Pro-Light"),url(/pr-preview/pr-1029/static/source-sans-pro-latin-300-ede18477b85a5d781cd2f4001ecc5e67.woff2) format("woff2"),url(/pr-preview/pr-1029/static/source-sans-pro-latin-300-a5002963b0570a073e28156403c78670.woff) format("woff")}@font-face{font-family:Source Sans Pro;font-style:italic;font-display:swap;font-weight:300;src:local("Source Sans Pro Light italic"),local("Source Sans Pro-Lightitalic"),url(/pr-preview/pr-1029/static/source-sans-pro-latin-300italic-c179c8f264df4b31eab6c71a532f7599.woff2) format("woff2"),url(/pr-preview/pr-1029/static/source-sans-pro-latin-300italic-f939f20b37caaa8e99bcd2e0ef22436c.woff) format("woff")}@font-face{font-family:Source Sans Pro;font-style:normal;font-display:swap;font-weight:400;src:local("Source Sans Pro Regular "),local("Source Sans Pro-Regular"),url(/pr-preview/pr-1029/static/source-sans-pro-latin-400-899c8f78ce650d4009d42443897aa723.woff2) format("woff2"),url(/pr-preview/pr-1029/static/source-sans-pro-latin-400-5cc3aae674ea3b199313b3b83bd795bc.woff) format("woff")}@font-face{font-family:Source Sans Pro;font-style:italic;font-display:swap;font-weight:400;src:local("Source Sans Pro Regular italic"),local("Source Sans Pro-Regularitalic"),url(/pr-preview/pr-1029/static/source-sans-pro-latin-400italic-dac2fca7ba8512baa24172f1171c961f.woff2) format("woff2"),url(/pr-preview/pr-1029/static/source-sans-pro-latin-400italic-86b2389fa562da6b9425271d1833d490.woff) format("woff")}@font-face{font-family:Source Sans Pro;font-style:normal;font-display:swap;font-weight:600;src:local("Source Sans Pro SemiBold "),local("Source Sans Pro-SemiBold"),url(/pr-preview/pr-1029/static/source-sans-pro-latin-600-c85615b296302af51e683eecb5e371d4.woff2) format("woff2"),url(/pr-preview/pr-1029/static/source-sans-pro-latin-600-a75563d7b9e5b1db163971b9a2e66216.woff) format("woff")}@font-face{font-family:Source Sans Pro;font-style:italic;font-display:swap;font-weight:600;src:local("Source Sans Pro SemiBold italic"),local("Source Sans Pro-SemiBolditalic"),url(/pr-preview/pr-1029/static/source-sans-pro-latin-600italic-ae24ed0c9a034d7c4098d3ddcdcb57f2.woff2) format("woff2"),url(/pr-preview/pr-1029/static/source-sans-pro-latin-600italic-c13797bd5e320111cf0af5c140ad9ee5.woff) format("woff")}@font-face{font-family:Source Sans Pro;font-style:normal;font-display:swap;font-weight:700;src:local("Source Sans Pro Bold "),local("Source Sans Pro-Bold"),url(/pr-preview/pr-1029/static/source-sans-pro-latin-700-1a4bcb3ec9c508d478d4dbf6b56f6208.woff2) format("woff2"),url(/pr-preview/pr-1029/static/source-sans-pro-latin-700-b03f2ec28f8e60e61974dd8c57610e5b.woff) format("woff")}@font-face{font-family:Source Sans Pro;font-style:italic;font-display:swap;font-weight:700;src:local("Source Sans Pro Bold italic"),local("Source Sans Pro-Bolditalic"),url(/pr-preview/pr-1029/static/source-sans-pro-latin-700italic-ac7f680ecb10b2d7d452560d91e617d6.woff2) format("woff2"),url(/pr-preview/pr-1029/static/source-sans-pro-latin-700italic-15776eec451ff4c88330cc66edd9e1e4.woff) format("woff")}@font-face{font-family:Source Sans Pro;font-style:normal;font-display:swap;font-weight:900;src:local("Source Sans Pro Black "),local("Source Sans Pro-Black"),url(/pr-preview/pr-1029/static/source-sans-pro-latin-900-d8eab344801820b04142708a330623fc.woff2) format("woff2"),url(/pr-preview/pr-1029/static/source-sans-pro-latin-900-a6f749c85b751ef81fd99c6423c5ff4f.woff) format("woff")}@font-face{font-family:Source Sans Pro;font-style:italic;font-display:swap;font-weight:900;src:local("Source Sans Pro Black italic"),local("Source Sans Pro-Blackitalic"),url(/pr-preview/pr-1029/static/source-sans-pro-latin-900italic-f6a4e05514b656022c3ed8be7f81d256.woff2) format("woff2"),url(/pr-preview/pr-1029/static/source-sans-pro-latin-900italic-f20b423a121558d70c32160b86c9e21e.woff) format("woff")} \ No newline at end of file diff --git a/pr-preview/pr-1029/sw.js b/pr-preview/pr-1029/sw.js deleted file mode 100644 index 117c9e982..000000000 --- a/pr-preview/pr-1029/sw.js +++ /dev/null @@ -1,205 +0,0 @@ -/** - * Welcome to your Workbox-powered service worker! - * - * You'll need to register this file in your web app and you should - * disable HTTP caching for this file too. - * See https://goo.gl/nhQhGp - * - * The rest of the code is auto-generated. Please don't update this file - * directly; instead, make changes to your Workbox build configuration - * and re-run your build process. - * See https://goo.gl/2aRDsh - */ - -importScripts("workbox-v4.3.1/workbox-sw.js"); -workbox.setConfig({modulePathPrefix: "workbox-v4.3.1"}); - -workbox.core.setCacheNameDetails({prefix: "gatsby-plugin-offline"}); - -workbox.core.skipWaiting(); - -workbox.core.clientsClaim(); - -/** - * The workboxSW.precacheAndRoute() method efficiently caches and responds to - * requests for URLs in the manifest. - * See https://goo.gl/S9QRab - */ -self.__precacheManifest = [ - { - "url": "webpack-runtime-b8c3f6d27b44d21ceb9b.js" - }, - { - "url": "framework-3d5d6f3c5ba6d5f455c5.js" - }, - { - "url": "styles.5f90b90109f5908b6ec3.css" - }, - { - "url": "styles-95d00f891faf7b06d026.js" - }, - { - "url": "f0e45107-91cefa4606c78384043e.js" - }, - { - "url": "app-432e6e5ddac89ddf1392.js" - }, - { - "url": "offline-plugin-app-shell-fallback/index.html", - "revision": "3d1876c7207946da781b8f66d7d3e49e" - }, - { - "url": "component---cache-caches-gatsby-plugin-offline-app-shell-js-099d9276a41f4ba01a3c.js" - }, - { - "url": "page-data/offline-plugin-app-shell-fallback/page-data.json", - "revision": "7b70c9311b1f9e78c50c5991a4513806" - }, - { - "url": "page-data/sq/d/1635659820.json", - "revision": "a562923da56233a8bdebe3702d40eb16" - }, - { - "url": "page-data/app-data.json", - "revision": "2c516e735e19a45e19b61a65aea39e8a" - }, - { - "url": "polyfill-8d34c62e07e660a83f29.js" - }, - { - "url": "component---docs-introduction-mdx-53424fcd5b068bb753bd.js" - }, - { - "url": "page-data/index/page-data.json", - "revision": "ae1c67dd0d8b8a6bfb1addee109d1e31" - }, - { - "url": "component---docs-installation-mdx-9fd740edb80601169d14.js" - }, - { - "url": "page-data/install/page-data.json", - "revision": "70e59f6d7f4c06980a518910dbeba161" - }, - { - "url": "component---docs-tutorial-overview-mdx-4eb2aa73aecb90e088d6.js" - }, - { - "url": "page-data/tutorial/overview/page-data.json", - "revision": "4188dac6afc4f2e9c6cb4bc583711075" - }, - { - "url": "manifest.webmanifest", - "revision": "ff4faa7840acd044d00b848ead65f838" - } -].concat(self.__precacheManifest || []); -workbox.precaching.precacheAndRoute(self.__precacheManifest, {}); - -workbox.routing.registerRoute(/(\.js$|\.css$|static\/)/, new workbox.strategies.CacheFirst(), 'GET'); -workbox.routing.registerRoute(/^https?:.*\/page-data\/.*\.json/, new workbox.strategies.StaleWhileRevalidate(), 'GET'); -workbox.routing.registerRoute(/^https?:.*\.(png|jpg|jpeg|webp|avif|svg|gif|tiff|js|woff|woff2|json|css)$/, new workbox.strategies.StaleWhileRevalidate(), 'GET'); -workbox.routing.registerRoute(/^https?:\/\/fonts\.googleapis\.com\/css/, new workbox.strategies.StaleWhileRevalidate(), 'GET'); - -/* global importScripts, workbox, idbKeyval */ -importScripts(`idb-keyval-3.2.0-iife.min.js`) - -const { NavigationRoute } = workbox.routing - -let lastNavigationRequest = null -let offlineShellEnabled = true - -// prefer standard object syntax to support more browsers -const MessageAPI = { - setPathResources: (event, { path, resources }) => { - event.waitUntil(idbKeyval.set(`resources:${path}`, resources)) - }, - - clearPathResources: event => { - event.waitUntil(idbKeyval.clear()) - }, - - enableOfflineShell: () => { - offlineShellEnabled = true - }, - - disableOfflineShell: () => { - offlineShellEnabled = false - }, -} - -self.addEventListener(`message`, event => { - const { gatsbyApi: api } = event.data - if (api) MessageAPI[api](event, event.data) -}) - -function handleAPIRequest({ event }) { - const { pathname } = new URL(event.request.url) - - const params = pathname.match(/:(.+)/)[1] - const data = {} - - if (params.includes(`=`)) { - params.split(`&`).forEach(param => { - const [key, val] = param.split(`=`) - data[key] = val - }) - } else { - data.api = params - } - - if (MessageAPI[data.api] !== undefined) { - MessageAPI[data.api]() - } - - if (!data.redirect) { - return new Response() - } - - return new Response(null, { - status: 302, - headers: { - Location: lastNavigationRequest, - }, - }) -} - -const navigationRoute = new NavigationRoute(async ({ event }) => { - // handle API requests separately to normal navigation requests, so do this - // check first - if (event.request.url.match(/\/.gatsby-plugin-offline:.+/)) { - return handleAPIRequest({ event }) - } - - if (!offlineShellEnabled) { - return await fetch(event.request) - } - - lastNavigationRequest = event.request.url - - let { pathname } = new URL(event.request.url) - pathname = pathname.replace(new RegExp(`^/pr-preview/pr-1029`), ``) - - // Check for resources + the app bundle - // The latter may not exist if the SW is updating to a new version - const resources = await idbKeyval.get(`resources:${pathname}`) - if (!resources || !(await caches.match(`/pr-preview/pr-1029/app-432e6e5ddac89ddf1392.js`))) { - return await fetch(event.request) - } - - for (const resource of resources) { - // As soon as we detect a failed resource, fetch the entire page from - // network - that way we won't risk being in an inconsistent state with - // some parts of the page failing. - if (!(await caches.match(resource))) { - return await fetch(event.request) - } - } - - const offlineShell = `/pr-preview/pr-1029/offline-plugin-app-shell-fallback/index.html` - const offlineShellWithKey = workbox.precaching.getCacheKeyForURL(offlineShell) - return await caches.match(offlineShellWithKey) -}) - -workbox.routing.registerRoute(navigationRoute) - -// this route is used when performing a non-navigation request (e.g. fetch) -workbox.routing.registerRoute(/\/.gatsby-plugin-offline:.+/, handleAPIRequest) diff --git a/pr-preview/pr-1029/tutorial/abstraction/index.html b/pr-preview/pr-1029/tutorial/abstraction/index.html index a4d2e082b..e2b601700 100644 --- a/pr-preview/pr-1029/tutorial/abstraction/index.html +++ b/pr-preview/pr-1029/tutorial/abstraction/index.html @@ -1,127 +1,84 @@ -Abstraction | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      OverviewRefresher on deployingUsing JsonnetParameterizingAbstractionSplitting it upHelper utilitiesKubernetes libraryEnvironments
      Writing Jsonnet
      Libraries
      Advanced features
      References
      Frequently asked questionsKnown issues

      Abstraction

      While we won't need to touch the resource definitions directly that frequently -anymore now that we have the _config object for our tunables, the -main.jsonnet file is still very long and hard to read. Especially because of -all the brackets, it's even worse than yaml at the moment.

      Splitting it up

      Let's start cleaning this up by separating logical pieces into distinct files:

      • main.jsonnet: Still our main file, containing the _config object and importing the other files
      • grafana.jsonnet: Deployment and Service for the Grafana instance
      • prometheus.jsonnet: Deployment and Service for the Prometheus server
      /environments/default/grafana.jsonnet
      {
      -  // DO NOT use the root level here.
      -  // Include the grafana subkey, otherwise $ won't work.
      -  grafana: {
      -    deployment: {
      -      apiVersion: 'apps/v1',
      -      kind: 'Deployment',
      -      metadata: {
      -        name: $._config.grafana.name,
      -      },
      -      spec: {
      -        selector: {
      -          matchLabels: {
      -            name: $._config.grafana.name,
      -          },
      -        },
      -        template: {
      -          metadata: {
      -            labels: {
      -              name: $._config.grafana.name,
      -

      The file should contain just the same that was located under the grafana key -on the root object before. Do the same for /environments/default/prometheus.jsonnet as well.

      /environments/default/main.jsonnet
      // Think of `import` as copy-pasting the contents
      -// of ./grafana.jsonnet here
      -(import "grafana.jsonnet") +
      -(import "prometheus.jsonnet") +
      -{
      -  _config:: {
      -    grafana: {
      -      port: 3000,
      -      name: "grafana",
      -    },
      -    prometheus: {
      -      port: 9090,
      -      name: "prometheus"
      -    }
      -  }
      -}

      Clarification:
      -It might seem odd at first sight, that this code works, because -grafana.jsonnet still refers to the root object using $, even -though it is outside of the file's scope.
      -However, Jsonnet is lazy-evaluated which means that the contents of -grafana.jsonnet are first "copied" into main.jsonnet (the root -object) and then evaluated. This means the above code actually consists of -all three objects joined to one big object, which is then converted to JSON.

      Helper utilities

      While main.jsonnet is now short and very readable, the other two files are not + Abstraction | Grafana Tanka + + Skip to content

      Abstraction

      While we won’t need to touch the resource definitions directly that frequently +anymore now that we have the _config object for our tunables, the +main.jsonnet file is still very long and hard to read. Especially because of +all the brackets, it’s even worse than yaml at the moment.

      +

      Splitting it up

      +

      Let’s start cleaning this up by separating logical pieces into distinct files:

      +
        +
      • main.jsonnet: Still our main file, containing the _config object and importing the other files
      • +
      • grafana.jsonnet: Deployment and Service for the Grafana instance
      • +
      • prometheus.jsonnet: Deployment and Service for the Prometheus server
      • +
      +
      /environments/default/grafana.jsonnet
      {
      // DO NOT use the root level here.
      // Include the grafana subkey, otherwise $ won't work.
      grafana: {
      deployment: {
      apiVersion: 'apps/v1',
      kind: 'Deployment',
      metadata: {
      name: $._config.grafana.name,
      },
      spec: {
      selector: {
      matchLabels: {
      name: $._config.grafana.name,
      },
      },
      template: {
      metadata: {
      labels: {
      name: $._config.grafana.name,
      },
      },
      spec: {
      containers: [
      {
      image: 'grafana/grafana',
      name: $._config.grafana.name,
      ports: [{
      containerPort: $._config.grafana.port,
      name: 'ui',
      }],
      },
      ],
      },
      },
      },
      },
      service: {
      apiVersion: 'v1',
      kind: 'Service',
      metadata: {
      labels: {
      name: $._config.grafana.name,
      },
      name: $._config.grafana.name,
      },
      spec: {
      ports: [{
      name: '%s-ui' % $._config.grafana.name,
      port: $._config.grafana.port,
      targetPort: $._config.grafana.port,
      }],
      selector: {
      name: $._config.grafana.name,
      },
      type: 'NodePort',
      },
      },
      }
      }
      +

      The file should contain just the same that was located under the grafana key +on the root object before. Do the same for /environments/default/prometheus.jsonnet as well.

      +
      /environments/default/main.jsonnet
      // Think of `import` as copy-pasting the contents
      // of ./grafana.jsonnet here
      (import "grafana.jsonnet") +
      (import "prometheus.jsonnet") +
      {
      _config:: {
      grafana: {
      port: 3000,
      name: "grafana",
      },
      prometheus: {
      port: 9090,
      name: "prometheus"
      }
      }
      }
      + +

      Helper utilities

      +

      While main.jsonnet is now short and very readable, the other two files are not really an improvement over regular yaml, mostly because they are still full of -boilerplate.

      Let's use functions to create some useful helpers to reduce the amount of -repetition. For that, we create a new file called kubernetes.libsonnet, which -will hold our Kubernetes utilities.

      Note: The extension for Jsonnet libraries is .libsonnet. While you do -not have to use it, it distinguishes helper code from actual configuration.

      A Deployment constructor

      Creating a Deployment requires some mandatory information and a lot of -boilerplate. A function that creates one could look like this:

      {
      -  // hidden k namespace for this library
      -  k:: {
      -    deployment: {
      -      new(name, containers): {
      -        apiVersion: "apps/v1",
      -        kind: "Deployment",
      -        metadata: {
      -          name: name,
      -        },
      -        spec: {
      -          selector: { matchLabels: {
      -            name: name,
      -          }},
      -          template: {
      -            metadata: { labels: {
      -              name: name,
      -            }},
      -            spec: { containers: containers }
      -          }
      -

      Invoking this function will substitute all the variables with the respective -passed function parameters and return the assembled object.

      To use it, just add it to the root object in main.jsonnet:

        (import "kubernetes.libsonnet") + // this line adds it
      -  (import "grafana.jsonnet") +
      -  (import "prometheus.jsonnet") +
      -  { /* ... */ }

      Let's simplify our grafana.jsonnet a bit:

      {
      -  grafana: {
      -    deployment: $.k.deployment.new("grafana", [{
      -      image: 'grafana/grafana',
      -      name: 'grafana',
      -      ports: [{
      -          containerPort: 3000,
      -          name: 'ui',
      -      }],
      -    }]),
      -    service: {
      -      apiVersion: 'v1',
      -      kind: 'Service',
      -      metadata: {
      -        labels: {
      -          name: 'grafana',
      -        },
      -        name: 'grafana',
      -      },
      -      spec: {
      -

      This drastically simplified the creation of the Deployment, because we do not -need to remember how exactly a Deployment is structured anymore. Just call use -our helper and you are good to go.

      Task: Now try adding a constructor for a Service to -kubernetes.libsonnet and use both helpers to recreate the other objects as -well.


      PreviousParameterizingNextKubernetes library
      \ No newline at end of file +boilerplate.

      +

      Let’s use functions to create some useful helpers to reduce the amount of +repetition. For that, we create a new file called kubernetes.libsonnet, which +will hold our Kubernetes utilities.

      + +

      A Deployment constructor

      +

      Creating a Deployment requires some mandatory information and a lot of +boilerplate. A function that creates one could look like this:

      +
      {
      // hidden k namespace for this library
      k:: {
      deployment: {
      new(name, containers): {
      apiVersion: "apps/v1",
      kind: "Deployment",
      metadata: {
      name: name,
      },
      spec: {
      selector: { matchLabels: {
      name: name,
      }},
      template: {
      metadata: { labels: {
      name: name,
      }},
      spec: { containers: containers }
      }
      }
      }
      }
      }
      }
      +

      Invoking this function will substitute all the variables with the respective +passed function parameters and return the assembled object.

      +

      To use it, just add it to the root object in main.jsonnet:

      +
      (import "kubernetes.libsonnet") + // this line adds it
      (import "grafana.jsonnet") +
      (import "prometheus.jsonnet") +
      { /* ... */ }
      +

      Let’s simplify our grafana.jsonnet a bit:

      +
      {
      grafana: {
      deployment: $.k.deployment.new("grafana", [{
      image: 'grafana/grafana',
      name: 'grafana',
      ports: [{
      containerPort: 3000,
      name: 'ui',
      }],
      }]),
      service: {
      apiVersion: 'v1',
      kind: 'Service',
      metadata: {
      labels: {
      name: 'grafana',
      },
      name: 'grafana',
      },
      spec: {
      ports: [{
      name: 'grafana-ui',
      port: 3000,
      targetPort: 3000,
      }],
      selector: {
      name: 'grafana',
      },
      type: 'NodePort',
      },
      },
      }
      }
      +

      This drastically simplified the creation of the Deployment, because we do not +need to remember how exactly a Deployment is structured anymore. Just call use +our helper and you are good to go.

      +
      \ No newline at end of file diff --git a/pr-preview/pr-1029/tutorial/environments/index.html b/pr-preview/pr-1029/tutorial/environments/index.html index 544159e81..64c6d2bd8 100644 --- a/pr-preview/pr-1029/tutorial/environments/index.html +++ b/pr-preview/pr-1029/tutorial/environments/index.html @@ -1,133 +1,105 @@ -Environments | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      OverviewRefresher on deployingUsing JsonnetParameterizingAbstractionKubernetes libraryEnvironmentsCreating a libraryDev and ProdPatching
      Writing Jsonnet
      Libraries
      Advanced features
      References
      Frequently asked questionsKnown issues

      Environments

      At this point, our configuration is already flexible and concise, but not -really reusable. Let's take a look at Tanka's third buzzword as well: Environments.

      These days, the same piece of software is usually deployed many times inside a -single organization. This could be dev, testing and prod environments, but -also regions (europe, us, asia) or individual customers (foo-corp, -bar-gmbh, baz-inc).

      Most of the application however is exactly the same across those environments ... + Environments | Grafana Tanka + + Skip to content

      Environments

      At this point, our configuration is already flexible and concise, but not +really reusable. Let’s take a look at Tanka’s third buzzword as well: Environments.

      +

      These days, the same piece of software is usually deployed many times inside a +single organization. This could be dev, testing and prod environments, but +also regions (europe, us, asia) or individual customers (foo-corp, +bar-gmbh, baz-inc).

      +

      Most of the application however is exactly the same across those environments … usually only configuration, scaling or small details are different after all. -YAML (and thus kubectl) provides us only one solution here: Duplicating the +YAML (and thus kubectl) provides us only one solution here: Duplicating the directory, changing the details, maintaining both. But what if you have 32 environments? Correct! Then you have to maintain 32 directories of YAML. And we can all -imagine the nightmare of these files drifting apart from each other.

      But again, Jsonnet can be the solution: By extracting the actual objects -into a library, you can import them in as many environments as you need!

      Creating a library

      A library is nothing special, just a folder of .libsonnet files somewhere in the import paths:

      PathDescription
      /libCustom, user-created libraries only for this project.
      /vendorExternal libraries installed using Jsonnet-bundler

      So for our purpose /lib fits best, as we are only creating it for our current -project. Let's set one up:

      /$ mkdir lib/prom-grafana # a folder for our prom-grafana library
      -/$ cd lib/prom-grafana
      -
      -/lib/prom-grafana$ touch prom-grafana.libsonnet # library file that will be imported
      -/lib/prom-grafana$ touch config.libsonnet # _config and images
      config.libsonnet

      For documentation purposes it is handy to have a separate file for parameters and used images:

      {
      -  // +:: is important (we don't want to override the
      -  // _config object, just add to it)
      -  _config+:: {
      -    // define a namespace for this library
      -    promgrafana: {
      -      grafana: {
      -        port: 3000,
      -        name: "grafana",
      -      },
      -      prometheus: {
      -        port: 9090,
      -        name: "prometheus"
      -      }
      -    }
      -  },
      -
      -  // again, make sure to use +::
      -  _images+:: {
      -    promgrafana: {
      -
      prom-grafana.libsonnet
      local k = import "ksonnet-util/kausal.libsonnet";
      -
      -(import "./config.libsonnet") +
      -{
      -  local deployment = k.apps.v1.deployment,
      -  local container = k.core.v1.container,
      -  local port = k.core.v1.containerPort,
      -  local service = k.core.v1.service,
      -
      -  // alias our params, too long to type every time
      -  local c = $._config.promgrafana,
      -
      -  promgrafana: {
      -    prometheus: {
      -      deployment: deployment.new(
      -        name=c.prometheus.name, replicas=1,
      -        containers=[
      -          container.new(c.prometheus.name, $._images.promgrafana.prometheus)
      -          + container.withPorts([port.new("api", c.prometheus.port)]),
      -        ],
      -

      Dev and Prod

      So far we have only used the environments/default environment. Let's create some real ones:

      /$ tk env add environments/prom-grafana/dev --namespace=prom-grafana-dev # one for dev ...
      -/$ tk env add environments/prom-grafana/prod --namespace=prom-grafana-prod # and one for prod

      Note: Remember to set up the cluster's IP in the respective spec.json!

      All that's left now is importing the library and configuring it. For dev, the defaults defined in /lib/prom-grafana/config.libsonnet should be sufficient, so we do not override anything:

      // environments/prom-grafana/dev
      -import "prom-grafana/prom-grafana.libsonnet"

      For prod however, it is a bad idea to rely on latest for the images .. let's -add some proper tags:

      // environments/prom-grafana/prod
      -(import "prom-grafana/prom-grafana.libsonnet") +
      -{
      -  // again, we only want to patch, not replace, thus +::
      -  _images+:: {
      -    // we update this one entirely, so we can replace this one (:)
      -    promgrafana: {
      -      prometheus: "prom/prometheus:v2.14",
      -      grafana: "grafana/grafana:6.5.2"
      -    }
      -  }
      -}

      Patching

      The above works well for libraries we control ourselves, but what when another -team wrote the library, it was installed using jb from GitHub or you can't -change it easily?

      Here comes the already familiar +: (or +::) syntax into play. It allows to -partially override values of an object. Let's say we wanted to add some labels to the Prometheus Deployment, but our _config params don't allow us to. We can still do this in our main.jsonnet:

      (import "prom-grafana/prom-grafana.libsonnet") +
      -{
      -  promgrafana+: {
      -    prometheus+: {
      -      deployment+: {
      -        metadata+: {
      -          labels+: {
      -            foo: "bar"
      -          }
      -        }
      -      }
      -    }
      -  }
      -}

      By using the +: operator all the time and only foo: "bar" uses ":", we only -override the value of "foo", while leaving the rest of the object like it was.

      Let's check it worked:

      $ tk show environments/prom-grafana/patched -t deployment/prometheus
      -apiVersion: apps/v1
      -kind: Deployment
      -metadata:
      -  labels:
      -    foo: bar # <- There it is!
      -  name: prometheus
      -  namespace: default
      -spec:
      -  minReadySeconds: 10
      -  replicas: 1
      -  revisionHistoryLimit: 10
      -  selector:
      -    matchLabels:
      -      name: prometheus
      -  template:
      -    metadata:
      -      labels:
      -        name: prometheus
      -    spec:
      -

      PreviousKubernetes library
      \ No newline at end of file +imagine the nightmare of these files drifting apart from each other.

      +

      But again, Jsonnet can be the solution: By extracting the actual objects +into a library, you can import them in as many environments as you need!

      +

      Creating a library

      +

      A library is nothing special, just a folder of .libsonnet files somewhere in the import paths:

      + + + + + + + + + + + + + + + + + +
      PathDescription
      /libCustom, user-created libraries only for this project.
      /vendorExternal libraries installed using Jsonnet-bundler
      +

      So for our purpose /lib fits best, as we are only creating it for our current +project. Let’s set one up:

      +
      Terminal window
      mkdir lib/prom-grafana # a folder for our prom-grafana library
      cd lib/prom-grafana
      +
      # inside lib/prom-grafana:
      touch prom-grafana.libsonnet # library file that will be imported
      touch config.libsonnet # _config and images
      +

      For documentation purposes it is handy to have a separate file for parameters and used images:

      +
      config.libsonnet
      {
      // +:: is important (we don't want to override the
      // _config object, just add to it)
      _config+:: {
      // define a namespace for this library
      promgrafana: {
      grafana: {
      port: 3000,
      name: "grafana",
      },
      prometheus: {
      port: 9090,
      name: "prometheus"
      }
      }
      },
      +
      // again, make sure to use +::
      _images+:: {
      promgrafana: {
      grafana: "grafana/grafana",
      prometheus: "prom/prometheus",
      }
      }
      }
      +
      prom-grafana.libsonnet
      local k = import "ksonnet-util/kausal.libsonnet";
      +
      (import "./config.libsonnet") +
      {
      local deployment = k.apps.v1.deployment,
      local container = k.core.v1.container,
      local port = k.core.v1.containerPort,
      local service = k.core.v1.service,
      +
      // alias our params, too long to type every time
      local c = $._config.promgrafana,
      +
      promgrafana: {
      prometheus: {
      deployment: deployment.new(
      name=c.prometheus.name, replicas=1,
      containers=[
      container.new(c.prometheus.name, $._images.promgrafana.prometheus)
      + container.withPorts([port.new("api", c.prometheus.port)]),
      ],
      ),
      service: k.util.serviceFor(self.deployment),
      },
      +
      grafana: {
      deployment: deployment.new(
      name=c.grafana.name, replicas=1,
      containers=[
      container.new(c.grafana.name, $._images.promgrafana.grafana)
      + container.withPorts([port.new("ui", c.grafana.port)]),
      ],
      ),
      service:
      k.util.serviceFor(self.deployment)
      + service.mixin.spec.withType("NodePort"),
      },
      }
      }
      +

      Dev and Prod

      +

      So far we have only used the environments/default environment. Let’s create some real ones:

      +
      Terminal window
      tk env add environments/prom-grafana/dev --namespace=prom-grafana-dev # one for dev ...
      tk env add environments/prom-grafana/prod --namespace=prom-grafana-prod # and one for prod
      + +

      All that’s left now is importing the library and configuring it. For dev, the defaults defined in /lib/prom-grafana/config.libsonnet should be sufficient, so we do not override anything:

      +
      /environments/prom-grafana/dev
      import "prom-grafana/prom-grafana.libsonnet"
      +

      For prod however, it is a bad idea to rely on latest for the images .. let’s +add some proper tags:

      +
      /environments/prom-grafana/prod
      (import "prom-grafana/prom-grafana.libsonnet") +
      {
      // again, we only want to patch, not replace, thus +::
      _images+:: {
      // we update this one entirely, so we can replace this one (:)
      promgrafana: {
      prometheus: "prom/prometheus:v2.14",
      grafana: "grafana/grafana:6.5.2"
      }
      }
      }
      +

      Patching

      +

      The above works well for libraries we control ourselves, but what when another +team wrote the library, it was installed using jb from GitHub or you can’t +change it easily?

      +

      Here comes the already familiar +: (or +::) syntax into play. It allows to +partially override values of an object. Let’s say we wanted to add some labels to the Prometheus Deployment, but our _config params don’t allow us to. We can still do this in our main.jsonnet:

      +
      (import "prom-grafana/prom-grafana.libsonnet") +
      {
      promgrafana+: {
      prometheus+: {
      deployment+: {
      metadata+: {
      labels+: {
      foo: "bar"
      }
      }
      }
      }
      }
      }
      +

      By using the +: operator all the time and only foo: "bar" uses “:”, we only +override the value of "foo", while leaving the rest of the object like it was.

      +

      Let’s check it worked:

      +
      Terminal window
      tk show environments/prom-grafana/patched -t deployment/prometheus
      +
      Output
      apiVersion: apps/v1
      kind: Deployment
      metadata:
      labels:
      foo: bar # <- There it is!
      name: prometheus
      namespace: default
      spec:
      minReadySeconds: 10
      replicas: 1
      revisionHistoryLimit: 10
      selector:
      matchLabels:
      name: prometheus
      template:
      metadata:
      labels:
      name: prometheus
      spec:
      containers:
      - image: prom/prometheus
      imagePullPolicy: IfNotPresent
      name: prometheus
      ports:
      - containerPort: 9090
      name: api
      \ No newline at end of file diff --git a/pr-preview/pr-1029/tutorial/jsonnet/index.html b/pr-preview/pr-1029/tutorial/jsonnet/index.html index 8c9deaf5f..02c5348db 100644 --- a/pr-preview/pr-1029/tutorial/jsonnet/index.html +++ b/pr-preview/pr-1029/tutorial/jsonnet/index.html @@ -1,161 +1,168 @@ -Using Jsonnet | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      OverviewRefresher on deployingUsing JsonnetCreating a new projectEnvironmentsDefining ResourcesTaking a look at the generated resourcesConnecting to the clusterVerifying the changesApplying to the clusterChecking it workedParameterizingAbstractionKubernetes libraryEnvironments
      Writing Jsonnet
      Libraries
      Advanced features
      References
      Frequently asked questionsKnown issues

      Using Jsonnet

      The most powerful piece of Tanka is the Jsonnet data templating + Using Jsonnet | Grafana Tanka + + Skip to content

      Using Jsonnet

      The most powerful piece of Tanka is the Jsonnet data templating language. Jsonnet is a superset of JSON, adding variables, functions, patching (deep merging), arithmetic, conditionals and many more to -it.

      It has a lot in common with more real programming languages such as JavaScript +it.

      +

      It has a lot in common with more real programming languages such as JavaScript than with markup languages, still it is tailored specifically to representing data and configuration. As opposed to JSON (and YAML) it is a language meant for -humans, not for computers.

      Creating a new project

      To get started with Tanka and Jsonnet, let's initiate a new project, in which we will install both Prometheus and Grafana into our Kubernetes cluster:

      $ mkdir prom-grafana && cd prom-grafana # create a new folder for the project and change to it
      -$ tk init # initiate a new project

      This gives us the following directory structure:

      ├── environments
      -│   └── default # default environment
      -│       ├── main.jsonnet # main file (important!)
      -│       └── spec.json # environment's config
      -├── jsonnetfile.json
      -├── lib # libraries
      -└── vendor # external libraries

      For the moment, we only really care about the environments/default folder. The +humans, not for computers.

      +

      Creating a new project

      +

      To get started with Tanka and Jsonnet, let’s initiate a new project, in which we will install both Prometheus and Grafana into our Kubernetes cluster:

      +
      Terminal window
      mkdir prom-grafana && cd prom-grafana # create a new folder for the project and change to it
      tk init # initiate a new project
      +

      This gives us the following directory structure:

      +
      • Directoryenvironments +
        • Directorydefault default environment +
          • main.jsonnet main file (important!)
          • spec.json environment’s config
        • jsonnetfile.json
        • Directorylib/ libraries
        • Directoryvendor/ external libraries
      +

      For the moment, we only really care about the environments/default folder. The purpose of the other directories will be explained later in this guide (mostly -related to libraries).

      Environments

      When using Tanka, you apply configuration for an Environment to a -Kubernetes cluster. An Environment is some logical group of pieces that form -an application stack.

      Grafana Labs for example runs Loki, -Cortex and of course -Grafana for our Grafana +related to libraries).

      +

      Environments

      +

      When using Tanka, you apply configuration for an Environment to a +Kubernetes cluster. An Environment is some logical group of pieces that form +an application stack.

      +

      Grafana Labs for example runs Loki, +Cortex and of course +Grafana for our Grafana Cloud hosted offering. For each of these, we have a separate environment. Furthermore, we like to see changes to our code in -separate dev setups to make sure they are all good for production usage – so -we have dev and prod environments for each app as well, as prod +separate dev setups to make sure they are all good for production usage – so +we have dev and prod environments for each app as well, as prod environments usually require other configuration (secrets, scale, etc) than -dev. This roughly leaves us with the following:

      LokiCortexGrafana
      prodName: /environments/loki/prod
      Namespace: loki-prod
      Name: /environments/cortex/prod
      Namespace: cortex-prod
      Name: /environments/grafana/prod
      Namespace: grafana-prod
      devName: /environments/loki/dev
      Namespace: loki-dev
      Name: /environments/cortex/dev
      Namespace: cortex-dev
      Name: /environments/grafana/dev
      Namespace: grafana-dev

      There is no limit in Environment complexity, create as many as you need to model +dev. This roughly leaves us with the following:

      + + + + + + + + + + + + + + + + + + + + + + + +
      EnvironmentLokiCortexGrafana
      prodName: /environments/loki/prod
      Namespace: loki-prod
      Name: /environments/cortex/prod
      Namespace: cortex-prod
      Name: /environments/grafana/prod
      Namespace: grafana-prod
      devName: /environments/loki/dev
      Namespace: loki-dev
      Name: /environments/cortex/dev
      Namespace: cortex-dev
      Name: /environments/grafana/dev
      Namespace: grafana-dev
      +

      There is no limit in Environment complexity, create as many as you need to model your own requirements. Grafana Labs for example also has all of these multiplied per -high-availability region.

      To get started, a single environment is enough. Lets use the automatically -created environnments/default for that.

      Defining Resources

      While kubectl loads all .yaml files in a certain folder, Tanka has a single +high-availability region.

      +

      To get started, a single environment is enough. Lets use the automatically +created environnments/default for that.

      +

      Defining Resources

      +

      While kubectl loads all .yaml files in a certain folder, Tanka has a single file that serves as the canonical source for all contents of an environment, -called main.jsonnet. This is just like Go has the main.go or C++ the -main.cpp.

      Similar to JSON, each .jsonnet file holds a single object. The one returned by -main.jsonnet will hold all of your Kubernetes resources:

      // main.jsonnet
      -{
      -    "some_deployment": { /* ... */ },
      -    "some_service": { /* ... */ }
      -}

      They may be deeply nested, Tanka extracts everything that looks like a -Kubernetes resource automatically.

      So let's rewrite the previous .yaml to -very basic .jsonnet:

      environments/default/main.jsonnet:
      {
      -  // Grafana
      -  grafana: {
      -    deployment: {
      -      apiVersion: 'apps/v1',
      -      kind: 'Deployment',
      -      metadata: {
      -        name: 'grafana',
      -      },
      -      spec: {
      -        selector: {
      -          matchLabels: {
      -            name: 'grafana',
      -          },
      -        },
      -        template: {
      -          metadata: {
      -            labels: {
      -              name: 'grafana',
      -            },
      -

      At the moment, this is even more verbose because we have effectively converted -YAML to JSON, which requires more characters by design.

      But Jsonnet opens up enough possibilities to improve this a lot, which will be -covered in the next sections.

      Taking a look at the generated resources

      So far so good, but can we make sure Tanka correctly finds our resources? We -can! By running tk show you can see the good old yaml, just as kubectl -receives it:

      # run from the project root:
      -/prom-grafana$ tk show environments/default
      -apiVersion: apps/v1
      -kind: Deployment
      -metadata:
      -  name: grafana
      -spec:
      -  selector:
      -# ...

      Spend some time here and try to identify resources from the output in the -.jsonnet source.

      Bonus: There is also tk eval, which displays the raw JSON object -main.jsonnet evaluates to. Tanka won't extract resources or mutate the structure -here, so you can verify how your Jsonnet works.

      Connecting to the cluster

      The YAML looks as expected? Let's apply it to the cluster. To do so, Tanka needs -some additional configuration.

      While kubectl uses a $KUBECONFIG environment variable and a file in the home +called main.jsonnet. This is just like Go has the main.go or C++ the +main.cpp.

      +

      Similar to JSON, each .jsonnet file holds a single object. The one returned by +main.jsonnet will hold all of your Kubernetes resources:

      +
      main.jsonnet
      {
      "some_deployment": { /* ... */ },
      "some_service": { /* ... */ }
      }
      +

      They may be deeply nested, Tanka extracts everything that looks like a +Kubernetes resource automatically.

      +

      So let’s rewrite the previous .yaml to +very basic .jsonnet:

      +
      /environments/default/main.jsonnet
      {
      // Grafana
      grafana: {
      deployment: {
      apiVersion: 'apps/v1',
      kind: 'Deployment',
      metadata: {
      name: 'grafana',
      },
      spec: {
      selector: {
      matchLabels: {
      name: 'grafana',
      },
      },
      template: {
      metadata: {
      labels: {
      name: 'grafana',
      },
      },
      spec: {
      containers: [
      {
      image: 'grafana/grafana',
      name: 'grafana',
      ports: [{
      containerPort: 3000,
      name: 'ui',
      }],
      },
      ],
      },
      },
      },
      },
      service: {
      apiVersion: 'v1',
      kind: 'Service',
      metadata: {
      labels: {
      name: 'grafana',
      },
      name: 'grafana',
      },
      spec: {
      ports: [{
      name: 'grafana-ui',
      port: 3000,
      targetPort: 3000,
      }],
      selector: {
      name: 'grafana',
      },
      type: 'NodePort',
      },
      },
      },
      +
      // Prometheus
      prometheus: {
      deployment: {
      apiVersion: 'apps/v1',
      kind: 'Deployment',
      metadata: {
      name: 'prometheus',
      },
      spec: {
      minReadySeconds: 10,
      replicas: 1,
      revisionHistoryLimit: 10,
      selector: {
      matchLabels: {
      name: 'prometheus',
      },
      },
      template: {
      metadata: {
      labels: {
      name: 'prometheus',
      },
      },
      spec: {
      containers: [
      {
      image: 'prom/prometheus',
      imagePullPolicy: 'IfNotPresent',
      name: 'prometheus',
      ports: [
      {
      containerPort: 9090,
      name: 'api',
      },
      ],
      },
      ],
      },
      },
      },
      },
      service: {
      apiVersion: 'v1',
      kind: 'Service',
      metadata: {
      labels: {
      name: 'prometheus',
      },
      name: 'prometheus',
      },
      spec: {
      ports: [
      {
      name: 'prometheus-api',
      port: 9090,
      targetPort: 9090,
      },
      ],
      selector: {
      name: 'prometheus',
      },
      },
      },
      },
      }
      +

      At the moment, this is even more verbose because we have effectively converted +YAML to JSON, which requires more characters by design.

      +

      But Jsonnet opens up enough possibilities to improve this a lot, which will be +covered in the next sections.

      +

      Taking a look at the generated resources

      +

      So far so good, but can we make sure Tanka correctly finds our resources? We +can! By running tk show you can see the good old yaml, just as kubectl +receives it:

      +
      /prom-grafana $
      # run from the project root:
      tk show environments/default
      +
      Output
      apiVersion: apps/v1
      kind: Deployment
      metadata:
      name: grafana
      spec:
      selector:
      # ...
      +

      Spend some time here and try to identify resources from the output in the +.jsonnet source.

      + +

      Connecting to the cluster

      +

      The YAML looks as expected? Let’s apply it to the cluster. To do so, Tanka needs +some additional configuration.

      +

      While kubectl uses a $KUBECONFIG environment variable and a file in the home directory to store the currently selected cluster, Tanka takes a more explicit -approach:

      Each environment has a file called spec.json, which includes the information -to select a cluster:

      {
      -  "apiVersion": "tanka.dev/v1alpha1",
      -  "kind": "Environment",
      -  "metadata": {
      -    "name": "default"
      -  },
      -  "spec": {
      -    "apiServer": "https://127.0.0.1:6443", // cluster to use
      -    "namespace": "monitoring" // default namespace for all created resources
      -  }
      -}

      You still have to setup a cluster in $KUBECONFIG that matches this IP – Tanka -will automatically find and use it. This also means that all of your kubectl -clusters just work.

      This allows us to make sure that you will never accidentally apply to the wrong -cluster.

      Note: Tanka won't create the namespace for you -- you need to include it in -Jsonnet by adding it to environments/default/main.jsonnet:

      {
      -  my_namespace: {
      -    apiVersion: "v1",
      -    kind: "Namespace",
      -    metadata: {
      -      name: "monitoring"
      -    }
      -  }
      -}

      Alternatively, you can create the namespace manually:

      $ kubectl create ns monitoring

      This, however, will create an object that is not tracked by Tanka -and thus needs to be taken care of via other means.

      Verifying the changes

      Before applying to the cluster, Tanka gives you a chance to check that your -changes actually behave as expected: tk diff works just like git diff – you -see what will be changed.

      /prom-grafana$ tk diff environments/default
      ---- /tmp/LIVE-610130621/apps.v1.Deployment.monitoring.grafana        2019-12-17 20:14:45.213363586 +0100
      -+++ /tmp/MERGED-517481208/apps.v1.Deployment.monitoring.grafana      2019-12-17 20:14:45.213363586 +0100
      -@@ -0,0 +1,45 @@
      -+apiVersion: apps/v1
      -+kind: Deployment
      -+metadata:
      -+  name: grafana
      -+  namespace: monitoring
      -+  # ...
      -+spec:
      -+  selector:
      -+    matchLabels:
      -+      name: grafana
      -+  strategy:
      -+    rollingUpdate:
      -+      maxSurge: 25%
      -+      maxUnavailable: 25%
      -+    type: RollingUpdate
      -+  template:
      -

      As you can see, it shows everything as to-be created .. just as we'd expect, -since we are using a blank namespace.

      Note: Diff may fail before the first apply when the namespace does not yet -exist. This is a limitation of kubectl which is used for computing the -differences.

      Applying to the cluster

      Once it's all looking good, tk apply serves the exact same purpose as kubectl apply:

      /prom-grafana$ tk apply environments/default
      -Applying to namespace 'monitoring' of cluster 'default' at 'https://127.0.0.1:6443' using context 'default'.
      -Please type 'yes' to confirm: yes
      -deployment.apps/grafana created
      -deployment.apps/prometheus created
      -service/grafana created
      -service/prometheus created

      It shows you the diff first and the chosen cluster once more and requires -interactive approval (type yes).

      After that, kubectl is used to apply to the cluster. By piping to -kubectl Tanka makes sure it behaves exactly as you would expect it. No -edge-cases of differing Kubernetes client implementations should ever occur.

      Checking it worked

      Again, let's connect to Grafana:

      $ kubectl port-forward --namespace=monitoring deployments/grafana 8080:3000

      And go to http://localhost:8080 for Grafana's UI.


      PreviousRefresher on deployingNextParameterizing
      \ No newline at end of file +approach:

      +

      Each environment has a file called spec.json, which includes the information +to select a cluster:

      +
      {
      "apiVersion": "tanka.dev/v1alpha1",
      "kind": "Environment",
      "metadata": {
      "name": "default"
      },
      "spec": {
      "apiServer": "https://127.0.0.1:6443", // cluster to use
      "namespace": "monitoring" // default namespace for all created resources
      }
      }
      +

      You still have to setup a cluster in $KUBECONFIG that matches this IP – Tanka +will automatically find and use it. This also means that all of your kubectl +clusters just work.

      +

      This allows us to make sure that you will never accidentally apply to the wrong +cluster.

      + +

      Verifying the changes

      +

      Before applying to the cluster, Tanka gives you a chance to check that your +changes actually behave as expected: tk diff works just like git diff – you +see what will be changed.

      +
      /prom-grafana $
      tk diff environments/default
      +
      Output
      --- /tmp/LIVE-610130621/apps.v1.Deployment.monitoring.grafana 2019-12-17 20:14:45.213363586 +0100
      +++ /tmp/MERGED-517481208/apps.v1.Deployment.monitoring.grafana 2019-12-17 20:14:45.213363586 +0100
      @@ -0,0 +1,45 @@
      +apiVersion: apps/v1
      +kind: Deployment
      +metadata:
      + name: grafana
      + namespace: monitoring
      + # ...
      +spec:
      + selector:
      + matchLabels:
      + name: grafana
      + strategy:
      + rollingUpdate:
      + maxSurge: 25%
      + maxUnavailable: 25%
      + type: RollingUpdate
      + template:
      + metadata:
      + creationTimestamp: null
      + labels:
      + name: grafana
      + spec:
      + containers:
      + - image: grafana/grafana
      + imagePullPolicy: IfNotPresent
      + # ...
      +

      As you can see, it shows everything as to-be created .. just as we’d expect, +since we are using a blank namespace.

      + +

      Applying to the cluster

      +

      Once it’s all looking good, tk apply serves the exact same purpose as kubectl apply:

      +
      /prom-grafana $
      tk apply environments/default
      +
      Applying to namespace 'monitoring' of cluster 'default' at 'https://127.0.0.1:6443' using context 'default'.
      Please type 'yes' to confirm: yes
      deployment.apps/grafana created
      deployment.apps/prometheus created
      service/grafana created
      service/prometheus created
      +

      It shows you the diff first and the chosen cluster once more and requires +interactive approval (type yes).

      +

      After that, kubectl is used to apply to the cluster. By piping to +kubectl Tanka makes sure it behaves exactly as you would expect it. No +edge-cases of differing Kubernetes client implementations should ever occur.

      +

      Checking it worked

      +

      Again, let’s connect to Grafana:

      +
      Terminal window
      kubectl port-forward --namespace=monitoring deployments/grafana 8080:3000
      +

      And go to http://localhost:8080 for Grafana’s UI.

      \ No newline at end of file diff --git a/pr-preview/pr-1029/tutorial/k-lib/index.html b/pr-preview/pr-1029/tutorial/k-lib/index.html index 738411f09..b322687b1 100644 --- a/pr-preview/pr-1029/tutorial/k-lib/index.html +++ b/pr-preview/pr-1029/tutorial/k-lib/index.html @@ -1,120 +1,112 @@ -Kubernetes library | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      OverviewRefresher on deployingUsing JsonnetParameterizingAbstractionKubernetes libraryk8s-libsonnetInstallationUsing itFull exampleEnvironments
      Writing Jsonnet
      Libraries
      Advanced features
      References
      Frequently asked questionsKnown issues

      Kubernetes library

      The last section has shown that using a library for creating Kubernetes objects + Kubernetes library | Grafana Tanka + + Skip to content

      Kubernetes library

      The last section has shown that using a library for creating Kubernetes objects can drastically simplify the code you need to write. However, there is a huge amount of different kinds of objects and the Kubernetes API is evolving (and -thus changing) quite rapidly.

      Writing and maintaining such a library could be a full-time job on it's own. +thus changing) quite rapidly.

      +

      Writing and maintaining such a library could be a full-time job on it’s own. Luckily, it is possible to generate such a library from the Kubernetes OpenAPI -specification! Even better, it has already been done for you.

      k8s-libsonnet

      The library is called k8s-libsonnet (replacing the discontinued ksonnet-lib), -currently available at https://github.com/jsonnet-libs/k8s-libsonnet.

      Note: The ksonnet project has been abandoned, the library is not maintained +specification! Even better, it has already been done for you.

      +

      k8s-libsonnet

      +

      The library is called k8s-libsonnet (replacing the discontinued ksonnet-lib), +currently available at https://github.com/jsonnet-libs/k8s-libsonnet.

      +

      As k8s-libsonnet has broken compatibility in a few places with ksonnet-lib (for good -reason), we have instrumented the widely used ksonnet-util library with a +the k8s-libsonnet library.

      +

      As k8s-libsonnet has broken compatibility in a few places with ksonnet-lib (for good +reason), we have instrumented the widely used ksonnet-util library with a compatibility layer to improve the developer and user experience: -https://github.com/grafana/jsonnet-libs/tree/master/ksonnet-util

      If you do not have any strong reasons against it, just adopt the wrapper as -well, it will ease your work. Many of the original ksonnet-util enhancements -have already made their way into k8s-libsonnet.

      The docs for k8s-libsonnet library can be found here: -https://jsonnet-libs.github.io/k8s-libsonnet/

      Installation

      Like every other external library, k8s-libsonnet can be installed using -jsonnet-bundler. -However, Tanka already did this for you during project -creation (tk init):

      $ tk init
      -  └─ jb install github.com/jsonnet-libs/k8s-libsonnet/1.21@main github.com/grafana/jsonnet-libs/ksonnet-util
      -

      This created the following structure in /vendor:

      vendor
      -├── github.com
      -│   ├── grafana
      -│   │   └── jsonnet-libs
      -│   │       └── ksonnet-util
      -│   │           ├── ...
      -│   │           └── kausal.libsonnet # Grafana's wrapper
      -│   └── jsonnet-libs
      -│       └── k8s-libsonnet
      -│           └── 1.21
      -│               ├── ...
      -│               └── main.libsonnet   # k8s-libsonnet entrypoint
      -├── 1.21 -> github.com/jsonnet-libs/k8s-libsonnet/1.21
      -└── ksonnet-util -> github.com/grafana/jsonnet-libs/ksonnet-util

      Info: The vendor/ is the location for external libraries, while lib/ -can be used for your own ones. Check import paths -for more information.

      Aliasing

      Because of how jb works, the library can be imported as -github.com/jsonnet-libs/k8s-libsonnet/1.21/main.libsonnet. Most external -libraries (including our wrapper) expect it as a simple k.libsonnet (without -the package prefix).

      To support both, Tanka automatically created an alias file for you: -/lib/k.libsonnet that just imports the actual library, exposing it under this -alternative name as well.

      More information: -This works, because import behaves like copy-pasting. So the contents of -k8s-libsonnet/1.21 are "copied" into our new file, making them behave exactly the -same.

      Using it

      First we need to import it in main.jsonnet:

      - local k = import "kubernetes.libsonnet";
      -+ local k = import "github.com/grafana/jsonnet-libs/ksonnet-util/kausal.libsonnet";
      -  local grafana = import "grafana.jsonnet";
      -  local prometheus = import "prometheus.jsonnet";
      -  { /* ... */ }

      Note: ksonnet-util imports literal k.libsonnet, so aliasing is -a must here. This works, because /lib and /vendor are automatically searched -for libraries, and k.libsonnet can be found in /lib due to aforementioned -aliasing.

      Now that we have installed the correct version, let's use it in -/environments/default/grafana.jsonnet instead of our own helper:

      local k = import "github.com/grafana/jsonnet-libs/ksonnet-util/kausal.libsonnet";
      -
      -{
      -  // use locals to extract the parts we need
      -  local deploy = k.apps.v1.deployment,
      -  local container = k.core.v1.container,
      -  local port = k.core.v1.containerPort,
      -  local service = k.core.v1.service,
      -  // defining the objects:
      -  grafana: {
      -    // deployment constructor: name, replicas, containers
      -    deployment: deploy.new(name=$._config.grafana.name, replicas=1, containers=[
      -      // container constructor
      -      container.new($._config.grafana.name, "grafana/grafana")
      -      + container.withPorts( // add ports to the container
      -          [port.new("ui", $._config.grafana.port)] // port constructor
      -        ),
      -    ]),
      -
      -    // instead of using a service constructor, our wrapper provides
      -

      Full example

      Now that creating the individual objects does not take more than 5 lines, we can -merge it all back into a single file (main.jsonnet) and take a look at the -whole picture:

      local k = import "github.com/grafana/jsonnet-libs/ksonnet-util/kausal.libsonnet";
      -
      -{
      -  _config:: {
      -    grafana: {
      -      port: 3000,
      -      name: "grafana",
      -    },
      -    prometheus: {
      -      port: 9090,
      -      name: "prometheus"
      -    }
      -  },
      -
      -  local deployment = k.apps.v1.deployment,
      -  local container = k.core.v1.container,
      -  local port = k.core.v1.containerPort,
      -  local service = k.core.v1.service,
      -
      -  prometheus: {
      -

      That's a pretty big improvement, considering how verbose and error-prone it was -before!


      PreviousAbstractionNextEnvironments
      \ No newline at end of file +https://github.com/grafana/jsonnet-libs/tree/master/ksonnet-util

      +

      If you do not have any strong reasons against it, just adopt the wrapper as +well, it will ease your work. Many of the original ksonnet-util enhancements +have already made their way into k8s-libsonnet.

      +

      The docs for k8s-libsonnet library can be found here: +https://jsonnet-libs.github.io/k8s-libsonnet/

      +

      Installation

      +

      Like every other external library, k8s-libsonnet can be installed using +jsonnet-bundler. +However, Tanka already did this for you during project +creation (tk init):

      +
      Terminal window
      tk init
      jb install github.com/jsonnet-libs/k8s-libsonnet/1.21@main github.com/grafana/jsonnet-libs/ksonnet-util
      +

      This created the following structure in /vendor:

      +
      • Directoryvendor +
        • Directorygithub.com +
          • Directorygrafana +
            • Directoryjsonnet-libs +
              • Directoryksonnet-util +
                • kausal.libsonnet # Grafana’s wrapper
          • Directoryjsonnet-libs +
            • Directoryk8s-libsonnet +
              • Directory1.21 +
                • main.libsonnet # k8s-libsonnet entrypoint
        • Directory1.21/ -> github.com/jsonnet-libs/k8s-libsonnet/1.21
        • Directoryksonnet-util/ -> github.com/grafana/jsonnet-libs/ksonnet-util
      + +

      Aliasing

      +

      Because of how jb works, the library can be imported as +github.com/jsonnet-libs/k8s-libsonnet/1.21/main.libsonnet. Most external +libraries (including our wrapper) expect it as a simple k.libsonnet (without +the package prefix).

      +

      To support both, Tanka automatically created an alias file for you: +/lib/k.libsonnet that just imports the actual library, exposing it under this +alternative name as well.

      + +

      Using it

      +

      First we need to import it in main.jsonnet:

      +
      local k = import "kubernetes.libsonnet";
      local k = import "github.com/grafana/jsonnet-libs/ksonnet-util/kausal.libsonnet";
      local grafana = import "grafana.jsonnet";
      local prometheus = import "prometheus.jsonnet";
      { /* ... */ }
      + +

      Now that we have installed the correct version, let’s use it in +/environments/default/grafana.jsonnet instead of our own helper:

      +
      /environments/default/grafana.jsonnet
      local k = import "github.com/grafana/jsonnet-libs/ksonnet-util/kausal.libsonnet";
      +
      {
      // use locals to extract the parts we need
      local deploy = k.apps.v1.deployment,
      local container = k.core.v1.container,
      local port = k.core.v1.containerPort,
      local service = k.core.v1.service,
      // defining the objects:
      grafana: {
      // deployment constructor: name, replicas, containers
      deployment: deploy.new(name=$._config.grafana.name, replicas=1, containers=[
      // container constructor
      container.new($._config.grafana.name, "grafana/grafana")
      + container.withPorts( // add ports to the container
      [port.new("ui", $._config.grafana.port)] // port constructor
      ),
      ]),
      +
      // instead of using a service constructor, our wrapper provides
      // a handy helper to automatically generate a service for a Deployment
      service: k.util.serv.util.serviceFor(self.deployment)
      + service.mixin.spec.withType("NodePort"),
      }
      }
      +

      Full example

      +

      Now that creating the individual objects does not take more than 5 lines, we can +merge it all back into a single file (main.jsonnet) and take a look at the +whole picture:

      +
      local k = import "github.com/grafana/jsonnet-libs/ksonnet-util/kausal.libsonnet";
      +
      {
      _config:: {
      grafana: {
      port: 3000,
      name: "grafana",
      },
      prometheus: {
      port: 9090,
      name: "prometheus"
      }
      },
      +
      local deployment = k.apps.v1.deployment,
      local container = k.core.v1.container,
      local port = k.core.v1.containerPort,
      local service = k.core.v1.service,
      +
      prometheus: {
      deployment: deployment.new(
      name=$._config.prometheus.name, replicas=1,
      containers=[
      container.new($._config.prometheus.name, "prom/prometheus")
      + container.withPorts([port.new("api", $._config.prometheus.port)]),
      ],
      ),
      service: k.util.serviceFor(self.deployment),
      },
      grafana: {
      deployment: deployment.new(
      name=$._config.grafana.name, replicas=1,
      containers=[
      container.new($._config.grafana.name, "grafana/grafana")
      + container.withPorts([port.new("ui", $._config.grafana.port)]),
      ],
      ),
      service:
      k.util.serviceFor(self.deployment)
      + service.mixin.spec.withType("NodePort"),
      },
      }
      +

      That’s a pretty big improvement, considering how verbose and error-prone it was +before!

      \ No newline at end of file diff --git a/pr-preview/pr-1029/tutorial/overview/index.html b/pr-preview/pr-1029/tutorial/overview/index.html index 53421c5b2..f1ed40e3b 100644 --- a/pr-preview/pr-1029/tutorial/overview/index.html +++ b/pr-preview/pr-1029/tutorial/overview/index.html @@ -1,5 +1,58 @@ -Overview | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      OverviewLearning how to use TankaResourcesRefresher on deployingUsing JsonnetParameterizingAbstractionKubernetes libraryEnvironments
      Writing Jsonnet
      Libraries
      Advanced features
      References
      Frequently asked questionsKnown issues

      Tutorial

      Learning how to use Tanka

      Welcome to the Tanka tutorial! + Overview | Grafana Tanka + + Skip to content

      Overview

      Learning how to use Tanka

      +

      Welcome to the Tanka tutorial! The following sections will explain how to deploy an example stack, -(Grafana and -Prometheus), to Kubernetes. We will also deal with parameters, differences between dev and prod and how to stop worrying and love libraries.

      To do so, we have the following steps:

      1. Deploying without Tanka first: Using good old kubectl to understand what Tanka will do for us.
      2. Using Jsonnet: Doing the same thing once again, but this time with Tanka and Jsonnet.
      3. Parameterizing: Using Variables to avoid data duplication.
      4. Abstraction: Splitting components into individual parts.
      5. Environments: Dealing with differences between dev and prod.
      6. k.libsonnet: Avoid having to remember API resources.

      Completing this gives a solid knowledge of Tanka's fundamentals. Let's get started!

      Resources


      NextRefresher on deploying
      \ No newline at end of file +(Grafana and +Prometheus), to Kubernetes. We will also deal with parameters, differences between dev and prod and how to stop worrying and love libraries.

      +

      To do so, we have the following steps:

      +
        +
      1. Deploying without Tanka first: Using good old kubectl to understand what Tanka will do for us.
      2. +
      3. Using Jsonnet: Doing the same thing once again, but this time with Tanka and Jsonnet.
      4. +
      5. Parameterizing: Using Variables to avoid data duplication.
      6. +
      7. Abstraction: Splitting components into individual parts.
      8. +
      9. Environments: Dealing with differences between dev and prod.
      10. +
      11. k.libsonnet: Avoid having to remember API resources.
      12. +
      +

      Completing this gives a solid knowledge of Tanka’s fundamentals. Let’s get started!

      +

      Resources

      +
      \ No newline at end of file diff --git a/pr-preview/pr-1029/tutorial/parameters/index.html b/pr-preview/pr-1029/tutorial/parameters/index.html index 061c4afd2..39df60c8d 100644 --- a/pr-preview/pr-1029/tutorial/parameters/index.html +++ b/pr-preview/pr-1029/tutorial/parameters/index.html @@ -1,66 +1,57 @@ -Parameterizing | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      OverviewRefresher on deployingUsing JsonnetParameterizingConfig objectAbstractionKubernetes libraryEnvironments
      Writing Jsonnet
      Libraries
      Advanced features
      References
      Frequently asked questionsKnown issues

      Parameterizing

      Deploying using Tanka worked well, but it did not really improve the situation -in terms of maintainability and readability.

      To do so, the following sections will explore some ways Jsonnet provides us with.

      Config object

      The most straightforward thing to do is creating a hidden object that holds all -actual values in a single place to be consumed by the actual resources.

      Luckily, Jsonnet has the key:: "value" stanza for private fields. Such are -only available during compiling and will be removed from the actual output.

      Such an object could look like this:

      {
      -  _config:: {
      -    grafana: {
      -      port: 3000,
      -      name: "grafana",
      -    },
      -    prometheus: {
      -      port: 9090,
      -      name: "prometheus"
      -    }
      -  }
      -}

      We can then replace hardcoded values with a reference to this object:

      { // <- This is $
      -  _config:: { /* .. */ },
      -  grafana: {
      -    service: {
      -      apiVersion: 'v1',
      -      kind: 'Service',
      -      metadata: {
      -        labels: {
      --         name: 'grafana',
      -+         name: $._config.grafana.name, // $ refers to the outermost object
      -        },
      --       name: 'grafana',
      -+       name: $._config.grafana.name,
      -      },
      -      spec: {
      -        ports: [{
      --           name: 'grafana-ui',
      -+           name: '%s-ui' % $._config.grafana.name, // printf-style formatting
      --           port: 3000,
      -+           port: $._config.grafana.port,
      -

      Here we see that we can easily refer to other parts of the configuration using -the outer-most object $ (the root level). Every value is just a regular + Parameterizing | Grafana Tanka + + Skip to content

      Parameterizing

      Deploying using Tanka worked well, but it did not really improve the situation +in terms of maintainability and readability.

      +

      To do so, the following sections will explore some ways Jsonnet provides us with.

      +

      Config object

      +

      The most straightforward thing to do is creating a hidden object that holds all +actual values in a single place to be consumed by the actual resources.

      +

      Luckily, Jsonnet has the key:: "value" stanza for private fields. Such are +only available during compiling and will be removed from the actual output.

      +

      Such an object could look like this:

      +
      {
      _config:: {
      grafana: {
      port: 3000,
      name: "grafana",
      },
      prometheus: {
      port: 9090,
      name: "prometheus"
      }
      }
      }
      +

      We can then replace hardcoded values with a reference to this object:

      +
      { // <- This is $
      _config:: { /* .. */ },
      grafana: {
      service: {
      apiVersion: 'v1',
      kind: 'Service',
      metadata: {
      labels: {
      name: 'grafana',
      name: $._config.grafana.name, // $ refers to the outermost object
      },
      name: 'grafana',
      name: $._config.grafana.name,
      },
      spec: {
      ports: [{
      name: 'grafana-ui',
      name: '%s-ui' % $._config.grafana.name, // printf-style formatting
      port: 3000,
      port: $._config.grafana.port,
      targetPort: 3000,
      targetPort: $._config.grafana.port,
      }],
      selector: {
      name: 'grafana',
      name: $._config.grafana.name,
      },
      type: 'NodePort',
      },
      },
      },
      }
      +

      Here we see that we can easily refer to other parts of the configuration using +the outer-most object $ (the root level). Every value is just a regular variable that you can refer to using the same familiar syntax from other C-like -languages.

      Now we do not only have a single place to change tunables, but also won't suffer +languages.

      +

      Now we do not only have a single place to change tunables, but also won’t suffer from mismatching labels and selectors anymore, as they are defined in a single -place and all changed at once.


      PreviousUsing JsonnetNextAbstraction
      \ No newline at end of file +place and all changed at once.

      \ No newline at end of file diff --git a/pr-preview/pr-1029/tutorial/refresher/index.html b/pr-preview/pr-1029/tutorial/refresher/index.html index 79eaed403..9debde28b 100644 --- a/pr-preview/pr-1029/tutorial/refresher/index.html +++ b/pr-preview/pr-1029/tutorial/refresher/index.html @@ -1,85 +1,88 @@ -Refresher on deploying | Tanka
      That's my logoGrafana TankaFlexible, reusable and concise configuration for Kubernetes
      Edit page
      IntroductionInstallation
      Tutorial
      OverviewRefresher on deployingDeploying to Kubernetes using kubectlWriting the yamlDeploying to the clusterChecking it workedCleaning upUsing JsonnetParameterizingAbstractionKubernetes libraryEnvironments
      Writing Jsonnet
      Libraries
      Advanced features
      References
      Frequently asked questionsKnown issues

      Refresher on deploying

      Deploying to Kubernetes using kubectl

      To understand how Tanka works, it is important to know what steps are required -for the task of deploying Grafana and Prometheus to Kubernetes:

      1. Prometheus
        • A Deployment must be created, to run the prom/prometheus image
        • Also a Service is needed for Grafana to be able to connect port 9090 of -Prometheus.
      2. Grafana
        • Another Deployment is required for the Grafana server.
        • To connect to the web interface, we will be using a Service of type -NodePort.

      Before taking a look how Tanka can help doing so, let's recall how to do it with -plain kubectl.

      Writing the yaml

      kubectl expects the resources it should create in .yaml format. For Grafana -...

      grafana.yaml:
      # Grafana server Deployment
      -apiVersion: apps/v1
      -kind: Deployment
      -metadata:
      -  name: grafana
      -spec:
      -  selector:
      -    matchLabels:
      -      name: grafana
      -  template:
      -    metadata:
      -      labels:
      -        name: grafana
      -    spec:
      -      containers:
      -        - image: grafana/grafana
      -          name: grafana
      -          ports:
      -            - containerPort: 3000
      -              name: ui
      -

      ... and for Prometheus:

      prometheus.yaml
      # Prometheus server Deployment
      -apiVersion: apps/v1
      -kind: Deployment
      -metadata:
      -  name: prometheus
      -spec:
      -  selector:
      -    matchLabels:
      -      name: prometheus
      -  template:
      -    metadata:
      -      labels:
      -        name: prometheus
      -    spec:
      -      containers:
      -        - image: prom/prometheus
      -          name: prometheus
      -          ports:
      -            - containerPort: 9090
      -              name: api
      -

      That's pretty verbose, right?

      Even worse, there are labels and matchers (e.g. prometheus) that need to be -exactly the same scattered across the file. It's a nightmare to debug and -furthermore harms readability a lot.

      Deploying to the cluster

      To actually apply those resources, copy them into .yaml files and use:

      $ kubectl apply -f prometheus.yaml -f grafana.yaml
      -deployment.apps/grafana created
      -deployment.apps/prometheus created
      -service/grafana created
      -service/prometheus created

      Checking it worked

      So far so good, but can we tell it actually did what we wanted? Let's test that -Grafana can connect to Prometheus!

      # Temporarily forward Grafana to localhost
      -kubectl port-forward deployments/grafana 8080:3000

      Now go to http://localhost:8080 in your browser and login using admin:admin. -Then navigate to Connections > Data sources > Add new data source, choose -Prometheus as type and enter http://prometheus:9090 as URL. Hit -Save & Test which should yield a big green bar telling you everything is good.

      Cool! This worked out well for this small example, but the .yaml files are + Refresher on deploying | Grafana Tanka + + Skip to content

      Refresher on deploying

      Deploying to Kubernetes using kubectl

      +

      To understand how Tanka works, it is important to know what steps are required +for the task of deploying Grafana and Prometheus to Kubernetes:

      +
        +
      1. Prometheus +
          +
        • A Deployment must be created, to run the prom/prometheus image
        • +
        • Also a Service is needed for Grafana to be able to connect port 9090 of +Prometheus.
        • +
        +
      2. +
      3. Grafana +
          +
        • Another Deployment is required for the Grafana server.
        • +
        • To connect to the web interface, we will be using a Service of type +NodePort.
        • +
        +
      4. +
      +

      Before taking a look how Tanka can help doing so, let’s recall how to do it with +plain kubectl.

      +

      Writing the yaml

      +

      kubectl expects the resources it should create in .yaml format. +For Grafana:

      +
      grafana.yaml
      # Grafana server Deployment
      apiVersion: apps/v1
      kind: Deployment
      metadata:
      name: grafana
      spec:
      selector:
      matchLabels:
      name: grafana
      template:
      metadata:
      labels:
      name: grafana
      spec:
      containers:
      - image: grafana/grafana
      name: grafana
      ports:
      - containerPort: 3000
      name: ui
      ---
      # Grafana UI Service NodePort
      apiVersion: v1
      kind: Service
      metadata:
      labels:
      name: grafana
      name: grafana
      spec:
      ports:
      - name: grafana-ui
      port: 3000
      targetPort: 3000
      selector:
      name: grafana
      type: NodePort
      +

      and for Prometheus:

      +
      prometheus.yaml
      # Prometheus server Deployment
      apiVersion: apps/v1
      kind: Deployment
      metadata:
      name: prometheus
      spec:
      selector:
      matchLabels:
      name: prometheus
      template:
      metadata:
      labels:
      name: prometheus
      spec:
      containers:
      - image: prom/prometheus
      name: prometheus
      ports:
      - containerPort: 9090
      name: api
      ---
      # Prometheus API Service
      apiVersion: v1
      kind: Service
      metadata:
      labels:
      name: prometheus
      name: prometheus
      spec:
      ports:
      - name: prometheus-api
      port: 9090
      targetPort: 9090
      selector:
      name: prometheus
      +

      That’s pretty verbose, right?

      +

      Even worse, there are labels and matchers (e.g. prometheus) that need to be +exactly the same scattered across the file. It’s a nightmare to debug and +furthermore harms readability a lot.

      +

      Deploying to the cluster

      +

      To actually apply those resources, copy them into .yaml files and use:

      +
      Terminal window
      kubectl apply -f prometheus.yaml -f grafana.yaml
      +
      deployment.apps/grafana created
      deployment.apps/prometheus created
      service/grafana created
      service/prometheus created
      +

      Checking it worked

      +

      So far so good, but can we tell it actually did what we wanted? Let’s test that +Grafana can connect to Prometheus!

      +
      Terminal window
      # Temporarily forward Grafana to localhost
      kubectl port-forward deployments/grafana 8080:3000
      +

      Now go to http://localhost:8080 in your browser and login using admin:admin. +Then navigate to Connections > Data sources > Add new data source, choose +Prometheus as type and enter http://prometheus:9090 as URL. Hit +Save & Test which should yield a big green bar telling you everything is good.

      +

      Cool! This worked out well for this small example, but the .yaml files are hard to read and maintain. Especially when you need to deploy this exact same -thing in dev and prod your choices are very limited.

      Let's explore how Tanka can help us here in the next section!

      Cleaning up

      Let's remove everything we created to start fresh with Jsonnet in the next section:

      $ kubectl delete -f prometheus.yaml -f grafana.yaml

      PreviousOverviewNextUsing Jsonnet
      \ No newline at end of file +thing in dev and prod your choices are very limited.

      +

      Let’s explore how Tanka can help us here in the next section!

      +

      Cleaning up

      +

      Let’s remove everything we created to start fresh with Jsonnet in the next section:

      +
      Terminal window
      kubectl delete -f prometheus.yaml -f grafana.yaml
      \ No newline at end of file diff --git a/pr-preview/pr-1029/webpack-runtime-b8c3f6d27b44d21ceb9b.js b/pr-preview/pr-1029/webpack-runtime-b8c3f6d27b44d21ceb9b.js deleted file mode 100644 index 2dda81bd7..000000000 --- a/pr-preview/pr-1029/webpack-runtime-b8c3f6d27b44d21ceb9b.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(e){function o(o){for(var t,d,a=o[0],i=o[1],s=o[2],m=0,p=[];m} - * @private - */ - - - async popEntry() { - return this._removeEntry({ - direction: 'prev' - }); - } - /** - * Removes and returns the first entry in the queue matching the `queueName`. - * - * @return {Promise} - * @private - */ - - - async shiftEntry() { - return this._removeEntry({ - direction: 'next' - }); - } - /** - * Returns all entries in the store matching the `queueName`. - * - * @param {Object} options See workbox.backgroundSync.Queue~getAll} - * @return {Promise>} - * @private - */ - - - async getAll() { - return await this._db.getAllMatching(OBJECT_STORE_NAME, { - index: INDEXED_PROP, - query: IDBKeyRange.only(this._queueName) - }); - } - /** - * Deletes the entry for the given ID. - * - * WARNING: this method does not ensure the deleted enry belongs to this - * queue (i.e. matches the `queueName`). But this limitation is acceptable - * as this class is not publicly exposed. An additional check would make - * this method slower than it needs to be. - * - * @private - * @param {number} id - */ - - - async deleteEntry(id) { - await this._db.delete(OBJECT_STORE_NAME, id); - } - /** - * Removes and returns the first or last entry in the queue (based on the - * `direction` argument) matching the `queueName`. - * - * @return {Promise} - * @private - */ - - - async _removeEntry({ - direction - }) { - const [entry] = await this._db.getAllMatching(OBJECT_STORE_NAME, { - direction, - index: INDEXED_PROP, - query: IDBKeyRange.only(this._queueName), - count: 1 - }); - - if (entry) { - await this.deleteEntry(entry.id); - return entry; - } - } - /** - * Upgrades the database given an `upgradeneeded` event. - * - * @param {Event} event - * @private - */ - - - _upgradeDb(event) { - const db = event.target.result; - - if (event.oldVersion > 0 && event.oldVersion < DB_VERSION) { - if (db.objectStoreNames.contains(OBJECT_STORE_NAME)) { - db.deleteObjectStore(OBJECT_STORE_NAME); - } - } - - const objStore = db.createObjectStore(OBJECT_STORE_NAME, { - autoIncrement: true, - keyPath: 'id' - }); - objStore.createIndex(INDEXED_PROP, INDEXED_PROP, { - unique: false - }); - } - - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - const serializableProperties = ['method', 'referrer', 'referrerPolicy', 'mode', 'credentials', 'cache', 'redirect', 'integrity', 'keepalive']; - /** - * A class to make it easier to serialize and de-serialize requests so they - * can be stored in IndexedDB. - * - * @private - */ - - class StorableRequest { - /** - * Converts a Request object to a plain object that can be structured - * cloned or JSON-stringified. - * - * @param {Request} request - * @return {Promise} - * - * @private - */ - static async fromRequest(request) { - const requestData = { - url: request.url, - headers: {} - }; // Set the body if present. - - if (request.method !== 'GET') { - // Use ArrayBuffer to support non-text request bodies. - // NOTE: we can't use Blobs becuse Safari doesn't support storing - // Blobs in IndexedDB in some cases: - // https://github.com/dfahlander/Dexie.js/issues/618#issuecomment-398348457 - requestData.body = await request.clone().arrayBuffer(); - } // Convert the headers from an iterable to an object. - - - for (const [key, value] of request.headers.entries()) { - requestData.headers[key] = value; - } // Add all other serializable request properties - - - for (const prop of serializableProperties) { - if (request[prop] !== undefined) { - requestData[prop] = request[prop]; - } - } - - return new StorableRequest(requestData); - } - /** - * Accepts an object of request data that can be used to construct a - * `Request` but can also be stored in IndexedDB. - * - * @param {Object} requestData An object of request data that includes the - * `url` plus any relevant properties of - * [requestInit]{@link https://fetch.spec.whatwg.org/#requestinit}. - * @private - */ - - - constructor(requestData) { - { - assert_mjs.assert.isType(requestData, 'object', { - moduleName: 'workbox-background-sync', - className: 'StorableRequest', - funcName: 'constructor', - paramName: 'requestData' - }); - assert_mjs.assert.isType(requestData.url, 'string', { - moduleName: 'workbox-background-sync', - className: 'StorableRequest', - funcName: 'constructor', - paramName: 'requestData.url' - }); - } // If the request's mode is `navigate`, convert it to `same-origin` since - // navigation requests can't be constructed via script. - - - if (requestData.mode === 'navigate') { - requestData.mode = 'same-origin'; - } - - this._requestData = requestData; - } - /** - * Returns a deep clone of the instances `_requestData` object. - * - * @return {Object} - * - * @private - */ - - - toObject() { - const requestData = Object.assign({}, this._requestData); - requestData.headers = Object.assign({}, this._requestData.headers); - - if (requestData.body) { - requestData.body = requestData.body.slice(0); - } - - return requestData; - } - /** - * Converts this instance to a Request. - * - * @return {Request} - * - * @private - */ - - - toRequest() { - return new Request(this._requestData.url, this._requestData); - } - /** - * Creates and returns a deep clone of the instance. - * - * @return {StorableRequest} - * - * @private - */ - - - clone() { - return new StorableRequest(this.toObject()); - } - - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - const TAG_PREFIX = 'workbox-background-sync'; - const MAX_RETENTION_TIME = 60 * 24 * 7; // 7 days in minutes - - const queueNames = new Set(); - /** - * A class to manage storing failed requests in IndexedDB and retrying them - * later. All parts of the storing and replaying process are observable via - * callbacks. - * - * @memberof workbox.backgroundSync - */ - - class Queue { - /** - * Creates an instance of Queue with the given options - * - * @param {string} name The unique name for this queue. This name must be - * unique as it's used to register sync events and store requests - * in IndexedDB specific to this instance. An error will be thrown if - * a duplicate name is detected. - * @param {Object} [options] - * @param {Function} [options.onSync] A function that gets invoked whenever - * the 'sync' event fires. The function is invoked with an object - * containing the `queue` property (referencing this instance), and you - * can use the callback to customize the replay behavior of the queue. - * When not set the `replayRequests()` method is called. - * Note: if the replay fails after a sync event, make sure you throw an - * error, so the browser knows to retry the sync event later. - * @param {number} [options.maxRetentionTime=7 days] The amount of time (in - * minutes) a request may be retried. After this amount of time has - * passed, the request will be deleted from the queue. - */ - constructor(name, { - onSync, - maxRetentionTime - } = {}) { - // Ensure the store name is not already being used - if (queueNames.has(name)) { - throw new WorkboxError_mjs.WorkboxError('duplicate-queue-name', { - name - }); - } else { - queueNames.add(name); - } - - this._name = name; - this._onSync = onSync || this.replayRequests; - this._maxRetentionTime = maxRetentionTime || MAX_RETENTION_TIME; - this._queueStore = new QueueStore(this._name); - - this._addSyncListener(); - } - /** - * @return {string} - */ - - - get name() { - return this._name; - } - /** - * Stores the passed request in IndexedDB (with its timestamp and any - * metadata) at the end of the queue. - * - * @param {Object} entry - * @param {Request} entry.request The request to store in the queue. - * @param {Object} [entry.metadata] Any metadata you want associated with the - * stored request. When requests are replayed you'll have access to this - * metadata object in case you need to modify the request beforehand. - * @param {number} [entry.timestamp] The timestamp (Epoch time in - * milliseconds) when the request was first added to the queue. This is - * used along with `maxRetentionTime` to remove outdated requests. In - * general you don't need to set this value, as it's automatically set - * for you (defaulting to `Date.now()`), but you can update it if you - * don't want particular requests to expire. - */ - - - async pushRequest(entry) { - { - assert_mjs.assert.isType(entry, 'object', { - moduleName: 'workbox-background-sync', - className: 'Queue', - funcName: 'pushRequest', - paramName: 'entry' - }); - assert_mjs.assert.isInstance(entry.request, Request, { - moduleName: 'workbox-background-sync', - className: 'Queue', - funcName: 'pushRequest', - paramName: 'entry.request' - }); - } - - await this._addRequest(entry, 'push'); - } - /** - * Stores the passed request in IndexedDB (with its timestamp and any - * metadata) at the beginning of the queue. - * - * @param {Object} entry - * @param {Request} entry.request The request to store in the queue. - * @param {Object} [entry.metadata] Any metadata you want associated with the - * stored request. When requests are replayed you'll have access to this - * metadata object in case you need to modify the request beforehand. - * @param {number} [entry.timestamp] The timestamp (Epoch time in - * milliseconds) when the request was first added to the queue. This is - * used along with `maxRetentionTime` to remove outdated requests. In - * general you don't need to set this value, as it's automatically set - * for you (defaulting to `Date.now()`), but you can update it if you - * don't want particular requests to expire. - */ - - - async unshiftRequest(entry) { - { - assert_mjs.assert.isType(entry, 'object', { - moduleName: 'workbox-background-sync', - className: 'Queue', - funcName: 'unshiftRequest', - paramName: 'entry' - }); - assert_mjs.assert.isInstance(entry.request, Request, { - moduleName: 'workbox-background-sync', - className: 'Queue', - funcName: 'unshiftRequest', - paramName: 'entry.request' - }); - } - - await this._addRequest(entry, 'unshift'); - } - /** - * Removes and returns the last request in the queue (along with its - * timestamp and any metadata). The returned object takes the form: - * `{request, timestamp, metadata}`. - * - * @return {Promise} - */ - - - async popRequest() { - return this._removeRequest('pop'); - } - /** - * Removes and returns the first request in the queue (along with its - * timestamp and any metadata). The returned object takes the form: - * `{request, timestamp, metadata}`. - * - * @return {Promise} - */ - - - async shiftRequest() { - return this._removeRequest('shift'); - } - /** - * Returns all the entries that have not expired (per `maxRetentionTime`). - * Any expired entries are removed from the queue. - * - * @return {Promise>} - */ - - - async getAll() { - const allEntries = await this._queueStore.getAll(); - const now = Date.now(); - const unexpiredEntries = []; - - for (const entry of allEntries) { - // Ignore requests older than maxRetentionTime. Call this function - // recursively until an unexpired request is found. - const maxRetentionTimeInMs = this._maxRetentionTime * 60 * 1000; - - if (now - entry.timestamp > maxRetentionTimeInMs) { - await this._queueStore.deleteEntry(entry.id); - } else { - unexpiredEntries.push(convertEntry(entry)); - } - } - - return unexpiredEntries; - } - /** - * Adds the entry to the QueueStore and registers for a sync event. - * - * @param {Object} entry - * @param {Request} entry.request - * @param {Object} [entry.metadata] - * @param {number} [entry.timestamp=Date.now()] - * @param {string} operation ('push' or 'unshift') - * @private - */ - - - async _addRequest({ - request, - metadata, - timestamp = Date.now() - }, operation) { - const storableRequest = await StorableRequest.fromRequest(request.clone()); - const entry = { - requestData: storableRequest.toObject(), - timestamp - }; // Only include metadata if it's present. - - if (metadata) { - entry.metadata = metadata; - } - - await this._queueStore[`${operation}Entry`](entry); - - { - logger_mjs.logger.log(`Request for '${getFriendlyURL_mjs.getFriendlyURL(request.url)}' has ` + `been added to background sync queue '${this._name}'.`); - } // Don't register for a sync if we're in the middle of a sync. Instead, - // we wait until the sync is complete and call register if - // `this._requestsAddedDuringSync` is true. - - - if (this._syncInProgress) { - this._requestsAddedDuringSync = true; - } else { - await this.registerSync(); - } - } - /** - * Removes and returns the first or last (depending on `operation`) entry - * from the QueueStore that's not older than the `maxRetentionTime`. - * - * @param {string} operation ('pop' or 'shift') - * @return {Object|undefined} - * @private - */ - - - async _removeRequest(operation) { - const now = Date.now(); - const entry = await this._queueStore[`${operation}Entry`](); - - if (entry) { - // Ignore requests older than maxRetentionTime. Call this function - // recursively until an unexpired request is found. - const maxRetentionTimeInMs = this._maxRetentionTime * 60 * 1000; - - if (now - entry.timestamp > maxRetentionTimeInMs) { - return this._removeRequest(operation); - } - - return convertEntry(entry); - } - } - /** - * Loops through each request in the queue and attempts to re-fetch it. - * If any request fails to re-fetch, it's put back in the same position in - * the queue (which registers a retry for the next sync event). - */ - - - async replayRequests() { - let entry; - - while (entry = await this.shiftRequest()) { - try { - await fetch(entry.request.clone()); - - { - logger_mjs.logger.log(`Request for '${getFriendlyURL_mjs.getFriendlyURL(entry.request.url)}'` + `has been replayed in queue '${this._name}'`); - } - } catch (error) { - await this.unshiftRequest(entry); - - { - logger_mjs.logger.log(`Request for '${getFriendlyURL_mjs.getFriendlyURL(entry.request.url)}'` + `failed to replay, putting it back in queue '${this._name}'`); - } - - throw new WorkboxError_mjs.WorkboxError('queue-replay-failed', { - name: this._name - }); - } - } - - { - logger_mjs.logger.log(`All requests in queue '${this.name}' have successfully ` + `replayed; the queue is now empty!`); - } - } - /** - * Registers a sync event with a tag unique to this instance. - */ - - - async registerSync() { - if ('sync' in registration) { - try { - await registration.sync.register(`${TAG_PREFIX}:${this._name}`); - } catch (err) { - // This means the registration failed for some reason, possibly due to - // the user disabling it. - { - logger_mjs.logger.warn(`Unable to register sync event for '${this._name}'.`, err); - } - } - } - } - /** - * In sync-supporting browsers, this adds a listener for the sync event. - * In non-sync-supporting browsers, this will retry the queue on service - * worker startup. - * - * @private - */ - - - _addSyncListener() { - if ('sync' in registration) { - self.addEventListener('sync', event => { - if (event.tag === `${TAG_PREFIX}:${this._name}`) { - { - logger_mjs.logger.log(`Background sync for tag '${event.tag}'` + `has been received`); - } - - const syncComplete = async () => { - this._syncInProgress = true; - let syncError; - - try { - await this._onSync({ - queue: this - }); - } catch (error) { - syncError = error; // Rethrow the error. Note: the logic in the finally clause - // will run before this gets rethrown. - - throw syncError; - } finally { - // New items may have been added to the queue during the sync, - // so we need to register for a new sync if that's happened... - // Unless there was an error during the sync, in which - // case the browser will automatically retry later, as long - // as `event.lastChance` is not true. - if (this._requestsAddedDuringSync && !(syncError && !event.lastChance)) { - await this.registerSync(); - } - - this._syncInProgress = false; - this._requestsAddedDuringSync = false; - } - }; - - event.waitUntil(syncComplete()); - } - }); - } else { - { - logger_mjs.logger.log(`Background sync replaying without background sync event`); - } // If the browser doesn't support background sync, retry - // every time the service worker starts up as a fallback. - - - this._onSync({ - queue: this - }); - } - } - /** - * Returns the set of queue names. This is primarily used to reset the list - * of queue names in tests. - * - * @return {Set} - * - * @private - */ - - - static get _queueNames() { - return queueNames; - } - - } - /** - * Converts a QueueStore entry into the format exposed by Queue. This entails - * converting the request data into a real request and omitting the `id` and - * `queueName` properties. - * - * @param {Object} queueStoreEntry - * @return {Object} - * @private - */ - - - const convertEntry = queueStoreEntry => { - const queueEntry = { - request: new StorableRequest(queueStoreEntry.requestData).toRequest(), - timestamp: queueStoreEntry.timestamp - }; - - if (queueStoreEntry.metadata) { - queueEntry.metadata = queueStoreEntry.metadata; - } - - return queueEntry; - }; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * A class implementing the `fetchDidFail` lifecycle callback. This makes it - * easier to add failed requests to a background sync Queue. - * - * @memberof workbox.backgroundSync - */ - - class Plugin { - /** - * @param {...*} queueArgs Args to forward to the composed Queue instance. - * See the [Queue]{@link workbox.backgroundSync.Queue} documentation for - * parameter details. - */ - constructor(...queueArgs) { - this._queue = new Queue(...queueArgs); - this.fetchDidFail = this.fetchDidFail.bind(this); - } - /** - * @param {Object} options - * @param {Request} options.request - * @private - */ - - - async fetchDidFail({ - request - }) { - await this._queue.pushRequest({ - request - }); - } - - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - - exports.Queue = Queue; - exports.Plugin = Plugin; - - return exports; - -}({}, workbox.core._private, workbox.core._private, workbox.core._private, workbox.core._private, workbox.core._private)); -//# sourceMappingURL=workbox-background-sync.dev.js.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-background-sync.dev.js.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-background-sync.dev.js.map deleted file mode 100644 index 8d8cfc072..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-background-sync.dev.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-background-sync.dev.js","sources":["../_version.mjs","../lib/QueueStore.mjs","../lib/StorableRequest.mjs","../Queue.mjs","../Plugin.mjs","../index.mjs"],"sourcesContent":["try{self['workbox:background-sync:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {DBWrapper} from 'workbox-core/_private/DBWrapper.mjs';\nimport '../_version.mjs';\n\n\nconst DB_VERSION = 3;\nconst DB_NAME = 'workbox-background-sync';\nconst OBJECT_STORE_NAME = 'requests';\nconst INDEXED_PROP = 'queueName';\n\n/**\n * A class to manage storing requests from a Queue in IndexedbDB,\n * indexed by their queue name for easier access.\n *\n * @private\n */\nexport class QueueStore {\n /**\n * Associates this instance with a Queue instance, so entries added can be\n * identified by their queue name.\n *\n * @param {string} queueName\n * @private\n */\n constructor(queueName) {\n this._queueName = queueName;\n this._db = new DBWrapper(DB_NAME, DB_VERSION, {\n onupgradeneeded: this._upgradeDb,\n });\n }\n\n /**\n * Append an entry last in the queue.\n *\n * @param {Object} entry\n * @param {Object} entry.requestData\n * @param {number} [entry.timestamp]\n * @param {Object} [entry.metadata]\n * @private\n */\n async pushEntry(entry) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(entry, 'object', {\n moduleName: 'workbox-background-sync',\n className: 'QueueStore',\n funcName: 'pushEntry',\n paramName: 'entry',\n });\n assert.isType(entry.requestData, 'object', {\n moduleName: 'workbox-background-sync',\n className: 'QueueStore',\n funcName: 'pushEntry',\n paramName: 'entry.requestData',\n });\n }\n\n // Don't specify an ID since one is automatically generated.\n delete entry.id;\n entry.queueName = this._queueName;\n\n await this._db.add(OBJECT_STORE_NAME, entry);\n }\n\n /**\n * Preppend an entry first in the queue.\n *\n * @param {Object} entry\n * @param {Object} entry.requestData\n * @param {number} [entry.timestamp]\n * @param {Object} [entry.metadata]\n * @private\n */\n async unshiftEntry(entry) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(entry, 'object', {\n moduleName: 'workbox-background-sync',\n className: 'QueueStore',\n funcName: 'unshiftEntry',\n paramName: 'entry',\n });\n assert.isType(entry.requestData, 'object', {\n moduleName: 'workbox-background-sync',\n className: 'QueueStore',\n funcName: 'unshiftEntry',\n paramName: 'entry.requestData',\n });\n }\n\n const [firstEntry] = await this._db.getAllMatching(OBJECT_STORE_NAME, {\n count: 1,\n });\n\n if (firstEntry) {\n // Pick an ID one less than the lowest ID in the object store.\n entry.id = firstEntry.id - 1;\n } else {\n // Otherwise let the auto-incrementor assign the ID.\n delete entry.id;\n }\n entry.queueName = this._queueName;\n\n await this._db.add(OBJECT_STORE_NAME, entry);\n }\n\n /**\n * Removes and returns the last entry in the queue matching the `queueName`.\n *\n * @return {Promise}\n * @private\n */\n async popEntry() {\n return this._removeEntry({direction: 'prev'});\n }\n\n /**\n * Removes and returns the first entry in the queue matching the `queueName`.\n *\n * @return {Promise}\n * @private\n */\n async shiftEntry() {\n return this._removeEntry({direction: 'next'});\n }\n\n /**\n * Returns all entries in the store matching the `queueName`.\n *\n * @param {Object} options See workbox.backgroundSync.Queue~getAll}\n * @return {Promise>}\n * @private\n */\n async getAll() {\n return await this._db.getAllMatching(OBJECT_STORE_NAME, {\n index: INDEXED_PROP,\n query: IDBKeyRange.only(this._queueName),\n });\n }\n\n /**\n * Deletes the entry for the given ID.\n *\n * WARNING: this method does not ensure the deleted enry belongs to this\n * queue (i.e. matches the `queueName`). But this limitation is acceptable\n * as this class is not publicly exposed. An additional check would make\n * this method slower than it needs to be.\n *\n * @private\n * @param {number} id\n */\n async deleteEntry(id) {\n await this._db.delete(OBJECT_STORE_NAME, id);\n }\n\n /**\n * Removes and returns the first or last entry in the queue (based on the\n * `direction` argument) matching the `queueName`.\n *\n * @return {Promise}\n * @private\n */\n async _removeEntry({direction}) {\n const [entry] = await this._db.getAllMatching(OBJECT_STORE_NAME, {\n direction,\n index: INDEXED_PROP,\n query: IDBKeyRange.only(this._queueName),\n count: 1,\n });\n\n if (entry) {\n await this.deleteEntry(entry.id);\n return entry;\n }\n }\n\n /**\n * Upgrades the database given an `upgradeneeded` event.\n *\n * @param {Event} event\n * @private\n */\n _upgradeDb(event) {\n const db = event.target.result;\n\n if (event.oldVersion > 0 && event.oldVersion < DB_VERSION) {\n if (db.objectStoreNames.contains(OBJECT_STORE_NAME)) {\n db.deleteObjectStore(OBJECT_STORE_NAME);\n }\n }\n\n const objStore = db.createObjectStore(OBJECT_STORE_NAME, {\n autoIncrement: true,\n keyPath: 'id',\n });\n objStore.createIndex(INDEXED_PROP, INDEXED_PROP, {unique: false});\n }\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport '../_version.mjs';\n\n\nconst serializableProperties = [\n 'method',\n 'referrer',\n 'referrerPolicy',\n 'mode',\n 'credentials',\n 'cache',\n 'redirect',\n 'integrity',\n 'keepalive',\n];\n\n\n/**\n * A class to make it easier to serialize and de-serialize requests so they\n * can be stored in IndexedDB.\n *\n * @private\n */\nclass StorableRequest {\n /**\n * Converts a Request object to a plain object that can be structured\n * cloned or JSON-stringified.\n *\n * @param {Request} request\n * @return {Promise}\n *\n * @private\n */\n static async fromRequest(request) {\n const requestData = {\n url: request.url,\n headers: {},\n };\n\n // Set the body if present.\n if (request.method !== 'GET') {\n // Use ArrayBuffer to support non-text request bodies.\n // NOTE: we can't use Blobs becuse Safari doesn't support storing\n // Blobs in IndexedDB in some cases:\n // https://github.com/dfahlander/Dexie.js/issues/618#issuecomment-398348457\n requestData.body = await request.clone().arrayBuffer();\n }\n\n // Convert the headers from an iterable to an object.\n for (const [key, value] of request.headers.entries()) {\n requestData.headers[key] = value;\n }\n\n // Add all other serializable request properties\n for (const prop of serializableProperties) {\n if (request[prop] !== undefined) {\n requestData[prop] = request[prop];\n }\n }\n\n return new StorableRequest(requestData);\n }\n\n /**\n * Accepts an object of request data that can be used to construct a\n * `Request` but can also be stored in IndexedDB.\n *\n * @param {Object} requestData An object of request data that includes the\n * `url` plus any relevant properties of\n * [requestInit]{@link https://fetch.spec.whatwg.org/#requestinit}.\n * @private\n */\n constructor(requestData) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(requestData, 'object', {\n moduleName: 'workbox-background-sync',\n className: 'StorableRequest',\n funcName: 'constructor',\n paramName: 'requestData',\n });\n assert.isType(requestData.url, 'string', {\n moduleName: 'workbox-background-sync',\n className: 'StorableRequest',\n funcName: 'constructor',\n paramName: 'requestData.url',\n });\n }\n\n // If the request's mode is `navigate`, convert it to `same-origin` since\n // navigation requests can't be constructed via script.\n if (requestData.mode === 'navigate') {\n requestData.mode = 'same-origin';\n }\n\n this._requestData = requestData;\n }\n\n /**\n * Returns a deep clone of the instances `_requestData` object.\n *\n * @return {Object}\n *\n * @private\n */\n toObject() {\n const requestData = Object.assign({}, this._requestData);\n requestData.headers = Object.assign({}, this._requestData.headers);\n if (requestData.body) {\n requestData.body = requestData.body.slice(0);\n }\n\n return requestData;\n }\n\n /**\n * Converts this instance to a Request.\n *\n * @return {Request}\n *\n * @private\n */\n toRequest() {\n return new Request(this._requestData.url, this._requestData);\n }\n\n /**\n * Creates and returns a deep clone of the instance.\n *\n * @return {StorableRequest}\n *\n * @private\n */\n clone() {\n return new StorableRequest(this.toObject());\n }\n}\n\nexport {StorableRequest};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {getFriendlyURL} from 'workbox-core/_private/getFriendlyURL.mjs';\nimport {QueueStore} from './lib/QueueStore.mjs';\nimport {StorableRequest} from './lib/StorableRequest.mjs';\nimport './_version.mjs';\n\n\nconst TAG_PREFIX = 'workbox-background-sync';\nconst MAX_RETENTION_TIME = 60 * 24 * 7; // 7 days in minutes\n\nconst queueNames = new Set();\n\n/**\n * A class to manage storing failed requests in IndexedDB and retrying them\n * later. All parts of the storing and replaying process are observable via\n * callbacks.\n *\n * @memberof workbox.backgroundSync\n */\nclass Queue {\n /**\n * Creates an instance of Queue with the given options\n *\n * @param {string} name The unique name for this queue. This name must be\n * unique as it's used to register sync events and store requests\n * in IndexedDB specific to this instance. An error will be thrown if\n * a duplicate name is detected.\n * @param {Object} [options]\n * @param {Function} [options.onSync] A function that gets invoked whenever\n * the 'sync' event fires. The function is invoked with an object\n * containing the `queue` property (referencing this instance), and you\n * can use the callback to customize the replay behavior of the queue.\n * When not set the `replayRequests()` method is called.\n * Note: if the replay fails after a sync event, make sure you throw an\n * error, so the browser knows to retry the sync event later.\n * @param {number} [options.maxRetentionTime=7 days] The amount of time (in\n * minutes) a request may be retried. After this amount of time has\n * passed, the request will be deleted from the queue.\n */\n constructor(name, {onSync, maxRetentionTime} = {}) {\n // Ensure the store name is not already being used\n if (queueNames.has(name)) {\n throw new WorkboxError('duplicate-queue-name', {name});\n } else {\n queueNames.add(name);\n }\n\n this._name = name;\n this._onSync = onSync || this.replayRequests;\n this._maxRetentionTime = maxRetentionTime || MAX_RETENTION_TIME;\n this._queueStore = new QueueStore(this._name);\n\n this._addSyncListener();\n }\n\n /**\n * @return {string}\n */\n get name() {\n return this._name;\n }\n\n /**\n * Stores the passed request in IndexedDB (with its timestamp and any\n * metadata) at the end of the queue.\n *\n * @param {Object} entry\n * @param {Request} entry.request The request to store in the queue.\n * @param {Object} [entry.metadata] Any metadata you want associated with the\n * stored request. When requests are replayed you'll have access to this\n * metadata object in case you need to modify the request beforehand.\n * @param {number} [entry.timestamp] The timestamp (Epoch time in\n * milliseconds) when the request was first added to the queue. This is\n * used along with `maxRetentionTime` to remove outdated requests. In\n * general you don't need to set this value, as it's automatically set\n * for you (defaulting to `Date.now()`), but you can update it if you\n * don't want particular requests to expire.\n */\n async pushRequest(entry) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(entry, 'object', {\n moduleName: 'workbox-background-sync',\n className: 'Queue',\n funcName: 'pushRequest',\n paramName: 'entry',\n });\n assert.isInstance(entry.request, Request, {\n moduleName: 'workbox-background-sync',\n className: 'Queue',\n funcName: 'pushRequest',\n paramName: 'entry.request',\n });\n }\n\n await this._addRequest(entry, 'push');\n }\n\n /**\n * Stores the passed request in IndexedDB (with its timestamp and any\n * metadata) at the beginning of the queue.\n *\n * @param {Object} entry\n * @param {Request} entry.request The request to store in the queue.\n * @param {Object} [entry.metadata] Any metadata you want associated with the\n * stored request. When requests are replayed you'll have access to this\n * metadata object in case you need to modify the request beforehand.\n * @param {number} [entry.timestamp] The timestamp (Epoch time in\n * milliseconds) when the request was first added to the queue. This is\n * used along with `maxRetentionTime` to remove outdated requests. In\n * general you don't need to set this value, as it's automatically set\n * for you (defaulting to `Date.now()`), but you can update it if you\n * don't want particular requests to expire.\n */\n async unshiftRequest(entry) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(entry, 'object', {\n moduleName: 'workbox-background-sync',\n className: 'Queue',\n funcName: 'unshiftRequest',\n paramName: 'entry',\n });\n assert.isInstance(entry.request, Request, {\n moduleName: 'workbox-background-sync',\n className: 'Queue',\n funcName: 'unshiftRequest',\n paramName: 'entry.request',\n });\n }\n\n await this._addRequest(entry, 'unshift');\n }\n\n /**\n * Removes and returns the last request in the queue (along with its\n * timestamp and any metadata). The returned object takes the form:\n * `{request, timestamp, metadata}`.\n *\n * @return {Promise}\n */\n async popRequest() {\n return this._removeRequest('pop');\n }\n\n /**\n * Removes and returns the first request in the queue (along with its\n * timestamp and any metadata). The returned object takes the form:\n * `{request, timestamp, metadata}`.\n *\n * @return {Promise}\n */\n async shiftRequest() {\n return this._removeRequest('shift');\n }\n\n /**\n * Returns all the entries that have not expired (per `maxRetentionTime`).\n * Any expired entries are removed from the queue.\n *\n * @return {Promise>}\n */\n async getAll() {\n const allEntries = await this._queueStore.getAll();\n const now = Date.now();\n\n const unexpiredEntries = [];\n for (const entry of allEntries) {\n // Ignore requests older than maxRetentionTime. Call this function\n // recursively until an unexpired request is found.\n const maxRetentionTimeInMs = this._maxRetentionTime * 60 * 1000;\n if (now - entry.timestamp > maxRetentionTimeInMs) {\n await this._queueStore.deleteEntry(entry.id);\n } else {\n unexpiredEntries.push(convertEntry(entry));\n }\n }\n\n return unexpiredEntries;\n }\n\n\n /**\n * Adds the entry to the QueueStore and registers for a sync event.\n *\n * @param {Object} entry\n * @param {Request} entry.request\n * @param {Object} [entry.metadata]\n * @param {number} [entry.timestamp=Date.now()]\n * @param {string} operation ('push' or 'unshift')\n * @private\n */\n async _addRequest(\n {request, metadata, timestamp = Date.now()}, operation) {\n const storableRequest = await StorableRequest.fromRequest(request.clone());\n const entry = {\n requestData: storableRequest.toObject(),\n timestamp,\n };\n\n // Only include metadata if it's present.\n if (metadata) {\n entry.metadata = metadata;\n }\n\n await this._queueStore[`${operation}Entry`](entry);\n\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Request for '${getFriendlyURL(request.url)}' has ` +\n `been added to background sync queue '${this._name}'.`);\n }\n\n // Don't register for a sync if we're in the middle of a sync. Instead,\n // we wait until the sync is complete and call register if\n // `this._requestsAddedDuringSync` is true.\n if (this._syncInProgress) {\n this._requestsAddedDuringSync = true;\n } else {\n await this.registerSync();\n }\n }\n\n /**\n * Removes and returns the first or last (depending on `operation`) entry\n * from the QueueStore that's not older than the `maxRetentionTime`.\n *\n * @param {string} operation ('pop' or 'shift')\n * @return {Object|undefined}\n * @private\n */\n async _removeRequest(operation) {\n const now = Date.now();\n const entry = await this._queueStore[`${operation}Entry`]();\n\n if (entry) {\n // Ignore requests older than maxRetentionTime. Call this function\n // recursively until an unexpired request is found.\n const maxRetentionTimeInMs = this._maxRetentionTime * 60 * 1000;\n if (now - entry.timestamp > maxRetentionTimeInMs) {\n return this._removeRequest(operation);\n }\n\n return convertEntry(entry);\n }\n }\n\n /**\n * Loops through each request in the queue and attempts to re-fetch it.\n * If any request fails to re-fetch, it's put back in the same position in\n * the queue (which registers a retry for the next sync event).\n */\n async replayRequests() {\n let entry;\n while (entry = await this.shiftRequest()) {\n try {\n await fetch(entry.request.clone());\n\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Request for '${getFriendlyURL(entry.request.url)}'` +\n `has been replayed in queue '${this._name}'`);\n }\n } catch (error) {\n await this.unshiftRequest(entry);\n\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Request for '${getFriendlyURL(entry.request.url)}'` +\n `failed to replay, putting it back in queue '${this._name}'`);\n }\n throw new WorkboxError('queue-replay-failed', {name: this._name});\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`All requests in queue '${this.name}' have successfully ` +\n `replayed; the queue is now empty!`);\n }\n }\n\n /**\n * Registers a sync event with a tag unique to this instance.\n */\n async registerSync() {\n if ('sync' in registration) {\n try {\n await registration.sync.register(`${TAG_PREFIX}:${this._name}`);\n } catch (err) {\n // This means the registration failed for some reason, possibly due to\n // the user disabling it.\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(\n `Unable to register sync event for '${this._name}'.`, err);\n }\n }\n }\n }\n\n /**\n * In sync-supporting browsers, this adds a listener for the sync event.\n * In non-sync-supporting browsers, this will retry the queue on service\n * worker startup.\n *\n * @private\n */\n _addSyncListener() {\n if ('sync' in registration) {\n self.addEventListener('sync', (event) => {\n if (event.tag === `${TAG_PREFIX}:${this._name}`) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Background sync for tag '${event.tag}'` +\n `has been received`);\n }\n\n const syncComplete = async () => {\n this._syncInProgress = true;\n\n let syncError;\n try {\n await this._onSync({queue: this});\n } catch (error) {\n syncError = error;\n\n // Rethrow the error. Note: the logic in the finally clause\n // will run before this gets rethrown.\n throw syncError;\n } finally {\n // New items may have been added to the queue during the sync,\n // so we need to register for a new sync if that's happened...\n // Unless there was an error during the sync, in which\n // case the browser will automatically retry later, as long\n // as `event.lastChance` is not true.\n if (this._requestsAddedDuringSync &&\n !(syncError && !event.lastChance)) {\n await this.registerSync();\n }\n\n this._syncInProgress = false;\n this._requestsAddedDuringSync = false;\n }\n };\n event.waitUntil(syncComplete());\n }\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Background sync replaying without background sync event`);\n }\n // If the browser doesn't support background sync, retry\n // every time the service worker starts up as a fallback.\n this._onSync({queue: this});\n }\n }\n\n /**\n * Returns the set of queue names. This is primarily used to reset the list\n * of queue names in tests.\n *\n * @return {Set}\n *\n * @private\n */\n static get _queueNames() {\n return queueNames;\n }\n}\n\n\n/**\n * Converts a QueueStore entry into the format exposed by Queue. This entails\n * converting the request data into a real request and omitting the `id` and\n * `queueName` properties.\n *\n * @param {Object} queueStoreEntry\n * @return {Object}\n * @private\n */\nconst convertEntry = (queueStoreEntry) => {\n const queueEntry = {\n request: new StorableRequest(queueStoreEntry.requestData).toRequest(),\n timestamp: queueStoreEntry.timestamp,\n };\n if (queueStoreEntry.metadata) {\n queueEntry.metadata = queueStoreEntry.metadata;\n }\n return queueEntry;\n};\n\nexport {Queue};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {Queue} from './Queue.mjs';\nimport './_version.mjs';\n\n/**\n * A class implementing the `fetchDidFail` lifecycle callback. This makes it\n * easier to add failed requests to a background sync Queue.\n *\n * @memberof workbox.backgroundSync\n */\nclass Plugin {\n /**\n * @param {...*} queueArgs Args to forward to the composed Queue instance.\n * See the [Queue]{@link workbox.backgroundSync.Queue} documentation for\n * parameter details.\n */\n constructor(...queueArgs) {\n this._queue = new Queue(...queueArgs);\n this.fetchDidFail = this.fetchDidFail.bind(this);\n }\n\n /**\n * @param {Object} options\n * @param {Request} options.request\n * @private\n */\n async fetchDidFail({request}) {\n await this._queue.pushRequest({request});\n }\n}\n\nexport {Plugin};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {Queue} from './Queue.mjs';\nimport {Plugin} from './Plugin.mjs';\nimport './_version.mjs';\n\n\n/**\n * @namespace workbox.backgroundSync\n */\n\nexport {\n Queue,\n Plugin,\n};\n"],"names":["self","_","e","DB_VERSION","DB_NAME","OBJECT_STORE_NAME","INDEXED_PROP","QueueStore","constructor","queueName","_queueName","_db","DBWrapper","onupgradeneeded","_upgradeDb","pushEntry","entry","assert","isType","moduleName","className","funcName","paramName","requestData","id","add","unshiftEntry","firstEntry","getAllMatching","count","popEntry","_removeEntry","direction","shiftEntry","getAll","index","query","IDBKeyRange","only","deleteEntry","delete","event","db","target","result","oldVersion","objectStoreNames","contains","deleteObjectStore","objStore","createObjectStore","autoIncrement","keyPath","createIndex","unique","serializableProperties","StorableRequest","fromRequest","request","url","headers","method","body","clone","arrayBuffer","key","value","entries","prop","undefined","mode","_requestData","toObject","Object","assign","slice","toRequest","Request","TAG_PREFIX","MAX_RETENTION_TIME","queueNames","Set","Queue","name","onSync","maxRetentionTime","has","WorkboxError","_name","_onSync","replayRequests","_maxRetentionTime","_queueStore","_addSyncListener","pushRequest","isInstance","_addRequest","unshiftRequest","popRequest","_removeRequest","shiftRequest","allEntries","now","Date","unexpiredEntries","maxRetentionTimeInMs","timestamp","push","convertEntry","metadata","operation","storableRequest","logger","log","getFriendlyURL","_syncInProgress","_requestsAddedDuringSync","registerSync","fetch","error","registration","sync","register","err","warn","addEventListener","tag","syncComplete","syncError","queue","lastChance","waitUntil","_queueNames","queueStoreEntry","queueEntry","Plugin","queueArgs","_queue","fetchDidFail","bind"],"mappings":";;;;EAAA,IAAG;EAACA,EAAAA,IAAI,CAAC,+BAAD,CAAJ,IAAuCC,CAAC,EAAxC;EAA2C,CAA/C,CAA+C,OAAMC,CAAN,EAAQ;;ECAvD;;;;;;;AAQA,EAKA,MAAMC,UAAU,GAAG,CAAnB;EACA,MAAMC,OAAO,GAAG,yBAAhB;EACA,MAAMC,iBAAiB,GAAG,UAA1B;EACA,MAAMC,YAAY,GAAG,WAArB;EAEA;;;;;;;AAMA,EAAO,MAAMC,UAAN,CAAiB;EACtB;;;;;;;EAOAC,EAAAA,WAAW,CAACC,SAAD,EAAY;EACrB,SAAKC,UAAL,GAAkBD,SAAlB;EACA,SAAKE,GAAL,GAAW,IAAIC,uBAAJ,CAAcR,OAAd,EAAuBD,UAAvB,EAAmC;EAC5CU,MAAAA,eAAe,EAAE,KAAKC;EADsB,KAAnC,CAAX;EAGD;EAED;;;;;;;;;;;EASA,QAAMC,SAAN,CAAgBC,KAAhB,EAAuB;EACrB,IAA2C;EACzCC,MAAAA,iBAAM,CAACC,MAAP,CAAcF,KAAd,EAAqB,QAArB,EAA+B;EAC7BG,QAAAA,UAAU,EAAE,yBADiB;EAE7BC,QAAAA,SAAS,EAAE,YAFkB;EAG7BC,QAAAA,QAAQ,EAAE,WAHmB;EAI7BC,QAAAA,SAAS,EAAE;EAJkB,OAA/B;EAMAL,MAAAA,iBAAM,CAACC,MAAP,CAAcF,KAAK,CAACO,WAApB,EAAiC,QAAjC,EAA2C;EACzCJ,QAAAA,UAAU,EAAE,yBAD6B;EAEzCC,QAAAA,SAAS,EAAE,YAF8B;EAGzCC,QAAAA,QAAQ,EAAE,WAH+B;EAIzCC,QAAAA,SAAS,EAAE;EAJ8B,OAA3C;EAMD,KAdoB;;;EAiBrB,WAAON,KAAK,CAACQ,EAAb;EACAR,IAAAA,KAAK,CAACP,SAAN,GAAkB,KAAKC,UAAvB;EAEA,UAAM,KAAKC,GAAL,CAASc,GAAT,CAAapB,iBAAb,EAAgCW,KAAhC,CAAN;EACD;EAED;;;;;;;;;;;EASA,QAAMU,YAAN,CAAmBV,KAAnB,EAA0B;EACxB,IAA2C;EACzCC,MAAAA,iBAAM,CAACC,MAAP,CAAcF,KAAd,EAAqB,QAArB,EAA+B;EAC7BG,QAAAA,UAAU,EAAE,yBADiB;EAE7BC,QAAAA,SAAS,EAAE,YAFkB;EAG7BC,QAAAA,QAAQ,EAAE,cAHmB;EAI7BC,QAAAA,SAAS,EAAE;EAJkB,OAA/B;EAMAL,MAAAA,iBAAM,CAACC,MAAP,CAAcF,KAAK,CAACO,WAApB,EAAiC,QAAjC,EAA2C;EACzCJ,QAAAA,UAAU,EAAE,yBAD6B;EAEzCC,QAAAA,SAAS,EAAE,YAF8B;EAGzCC,QAAAA,QAAQ,EAAE,cAH+B;EAIzCC,QAAAA,SAAS,EAAE;EAJ8B,OAA3C;EAMD;;EAED,UAAM,CAACK,UAAD,IAAe,MAAM,KAAKhB,GAAL,CAASiB,cAAT,CAAwBvB,iBAAxB,EAA2C;EACpEwB,MAAAA,KAAK,EAAE;EAD6D,KAA3C,CAA3B;;EAIA,QAAIF,UAAJ,EAAgB;EACd;EACAX,MAAAA,KAAK,CAACQ,EAAN,GAAWG,UAAU,CAACH,EAAX,GAAgB,CAA3B;EACD,KAHD,MAGO;EACL;EACA,aAAOR,KAAK,CAACQ,EAAb;EACD;;EACDR,IAAAA,KAAK,CAACP,SAAN,GAAkB,KAAKC,UAAvB;EAEA,UAAM,KAAKC,GAAL,CAASc,GAAT,CAAapB,iBAAb,EAAgCW,KAAhC,CAAN;EACD;EAED;;;;;;;;EAMA,QAAMc,QAAN,GAAiB;EACf,WAAO,KAAKC,YAAL,CAAkB;EAACC,MAAAA,SAAS,EAAE;EAAZ,KAAlB,CAAP;EACD;EAED;;;;;;;;EAMA,QAAMC,UAAN,GAAmB;EACjB,WAAO,KAAKF,YAAL,CAAkB;EAACC,MAAAA,SAAS,EAAE;EAAZ,KAAlB,CAAP;EACD;EAED;;;;;;;;;EAOA,QAAME,MAAN,GAAe;EACb,WAAO,MAAM,KAAKvB,GAAL,CAASiB,cAAT,CAAwBvB,iBAAxB,EAA2C;EACtD8B,MAAAA,KAAK,EAAE7B,YAD+C;EAEtD8B,MAAAA,KAAK,EAAEC,WAAW,CAACC,IAAZ,CAAiB,KAAK5B,UAAtB;EAF+C,KAA3C,CAAb;EAID;EAED;;;;;;;;;;;;;EAWA,QAAM6B,WAAN,CAAkBf,EAAlB,EAAsB;EACpB,UAAM,KAAKb,GAAL,CAAS6B,MAAT,CAAgBnC,iBAAhB,EAAmCmB,EAAnC,CAAN;EACD;EAED;;;;;;;;;EAOA,QAAMO,YAAN,CAAmB;EAACC,IAAAA;EAAD,GAAnB,EAAgC;EAC9B,UAAM,CAAChB,KAAD,IAAU,MAAM,KAAKL,GAAL,CAASiB,cAAT,CAAwBvB,iBAAxB,EAA2C;EAC/D2B,MAAAA,SAD+D;EAE/DG,MAAAA,KAAK,EAAE7B,YAFwD;EAG/D8B,MAAAA,KAAK,EAAEC,WAAW,CAACC,IAAZ,CAAiB,KAAK5B,UAAtB,CAHwD;EAI/DmB,MAAAA,KAAK,EAAE;EAJwD,KAA3C,CAAtB;;EAOA,QAAIb,KAAJ,EAAW;EACT,YAAM,KAAKuB,WAAL,CAAiBvB,KAAK,CAACQ,EAAvB,CAAN;EACA,aAAOR,KAAP;EACD;EACF;EAED;;;;;;;;EAMAF,EAAAA,UAAU,CAAC2B,KAAD,EAAQ;EAChB,UAAMC,EAAE,GAAGD,KAAK,CAACE,MAAN,CAAaC,MAAxB;;EAEA,QAAIH,KAAK,CAACI,UAAN,GAAmB,CAAnB,IAAwBJ,KAAK,CAACI,UAAN,GAAmB1C,UAA/C,EAA2D;EACzD,UAAIuC,EAAE,CAACI,gBAAH,CAAoBC,QAApB,CAA6B1C,iBAA7B,CAAJ,EAAqD;EACnDqC,QAAAA,EAAE,CAACM,iBAAH,CAAqB3C,iBAArB;EACD;EACF;;EAED,UAAM4C,QAAQ,GAAGP,EAAE,CAACQ,iBAAH,CAAqB7C,iBAArB,EAAwC;EACvD8C,MAAAA,aAAa,EAAE,IADwC;EAEvDC,MAAAA,OAAO,EAAE;EAF8C,KAAxC,CAAjB;EAIAH,IAAAA,QAAQ,CAACI,WAAT,CAAqB/C,YAArB,EAAmCA,YAAnC,EAAiD;EAACgD,MAAAA,MAAM,EAAE;EAAT,KAAjD;EACD;;EAlLqB;;ECxBxB;;;;;;;AAQA,EAIA,MAAMC,sBAAsB,GAAG,CAC7B,QAD6B,EAE7B,UAF6B,EAG7B,gBAH6B,EAI7B,MAJ6B,EAK7B,aAL6B,EAM7B,OAN6B,EAO7B,UAP6B,EAQ7B,WAR6B,EAS7B,WAT6B,CAA/B;EAaA;;;;;;;EAMA,MAAMC,eAAN,CAAsB;EACpB;;;;;;;;;EASA,eAAaC,WAAb,CAAyBC,OAAzB,EAAkC;EAChC,UAAMnC,WAAW,GAAG;EAClBoC,MAAAA,GAAG,EAAED,OAAO,CAACC,GADK;EAElBC,MAAAA,OAAO,EAAE;EAFS,KAApB,CADgC;;EAOhC,QAAIF,OAAO,CAACG,MAAR,KAAmB,KAAvB,EAA8B;EAC5B;EACA;EACA;EACA;EACAtC,MAAAA,WAAW,CAACuC,IAAZ,GAAmB,MAAMJ,OAAO,CAACK,KAAR,GAAgBC,WAAhB,EAAzB;EACD,KAb+B;;;EAgBhC,SAAK,MAAM,CAACC,GAAD,EAAMC,KAAN,CAAX,IAA2BR,OAAO,CAACE,OAAR,CAAgBO,OAAhB,EAA3B,EAAsD;EACpD5C,MAAAA,WAAW,CAACqC,OAAZ,CAAoBK,GAApB,IAA2BC,KAA3B;EACD,KAlB+B;;;EAqBhC,SAAK,MAAME,IAAX,IAAmBb,sBAAnB,EAA2C;EACzC,UAAIG,OAAO,CAACU,IAAD,CAAP,KAAkBC,SAAtB,EAAiC;EAC/B9C,QAAAA,WAAW,CAAC6C,IAAD,CAAX,GAAoBV,OAAO,CAACU,IAAD,CAA3B;EACD;EACF;;EAED,WAAO,IAAIZ,eAAJ,CAAoBjC,WAApB,CAAP;EACD;EAED;;;;;;;;;;;EASAf,EAAAA,WAAW,CAACe,WAAD,EAAc;EACvB,IAA2C;EACzCN,MAAAA,iBAAM,CAACC,MAAP,CAAcK,WAAd,EAA2B,QAA3B,EAAqC;EACnCJ,QAAAA,UAAU,EAAE,yBADuB;EAEnCC,QAAAA,SAAS,EAAE,iBAFwB;EAGnCC,QAAAA,QAAQ,EAAE,aAHyB;EAInCC,QAAAA,SAAS,EAAE;EAJwB,OAArC;EAMAL,MAAAA,iBAAM,CAACC,MAAP,CAAcK,WAAW,CAACoC,GAA1B,EAA+B,QAA/B,EAAyC;EACvCxC,QAAAA,UAAU,EAAE,yBAD2B;EAEvCC,QAAAA,SAAS,EAAE,iBAF4B;EAGvCC,QAAAA,QAAQ,EAAE,aAH6B;EAIvCC,QAAAA,SAAS,EAAE;EAJ4B,OAAzC;EAMD,KAdsB;EAiBvB;;;EACA,QAAIC,WAAW,CAAC+C,IAAZ,KAAqB,UAAzB,EAAqC;EACnC/C,MAAAA,WAAW,CAAC+C,IAAZ,GAAmB,aAAnB;EACD;;EAED,SAAKC,YAAL,GAAoBhD,WAApB;EACD;EAED;;;;;;;;;EAOAiD,EAAAA,QAAQ,GAAG;EACT,UAAMjD,WAAW,GAAGkD,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB,KAAKH,YAAvB,CAApB;EACAhD,IAAAA,WAAW,CAACqC,OAAZ,GAAsBa,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB,KAAKH,YAAL,CAAkBX,OAApC,CAAtB;;EACA,QAAIrC,WAAW,CAACuC,IAAhB,EAAsB;EACpBvC,MAAAA,WAAW,CAACuC,IAAZ,GAAmBvC,WAAW,CAACuC,IAAZ,CAAiBa,KAAjB,CAAuB,CAAvB,CAAnB;EACD;;EAED,WAAOpD,WAAP;EACD;EAED;;;;;;;;;EAOAqD,EAAAA,SAAS,GAAG;EACV,WAAO,IAAIC,OAAJ,CAAY,KAAKN,YAAL,CAAkBZ,GAA9B,EAAmC,KAAKY,YAAxC,CAAP;EACD;EAED;;;;;;;;;EAOAR,EAAAA,KAAK,GAAG;EACN,WAAO,IAAIP,eAAJ,CAAoB,KAAKgB,QAAL,EAApB,CAAP;EACD;;EA/GmB;;EC/BtB;;;;;;;AAQA,EASA,MAAMM,UAAU,GAAG,yBAAnB;EACA,MAAMC,kBAAkB,GAAG,KAAK,EAAL,GAAU,CAArC;;EAEA,MAAMC,UAAU,GAAG,IAAIC,GAAJ,EAAnB;EAEA;;;;;;;;EAOA,MAAMC,KAAN,CAAY;EACV;;;;;;;;;;;;;;;;;;;EAmBA1E,EAAAA,WAAW,CAAC2E,IAAD,EAAO;EAACC,IAAAA,MAAD;EAASC,IAAAA;EAAT,MAA6B,EAApC,EAAwC;EACjD;EACA,QAAIL,UAAU,CAACM,GAAX,CAAeH,IAAf,CAAJ,EAA0B;EACxB,YAAM,IAAII,6BAAJ,CAAiB,sBAAjB,EAAyC;EAACJ,QAAAA;EAAD,OAAzC,CAAN;EACD,KAFD,MAEO;EACLH,MAAAA,UAAU,CAACvD,GAAX,CAAe0D,IAAf;EACD;;EAED,SAAKK,KAAL,GAAaL,IAAb;EACA,SAAKM,OAAL,GAAeL,MAAM,IAAI,KAAKM,cAA9B;EACA,SAAKC,iBAAL,GAAyBN,gBAAgB,IAAIN,kBAA7C;EACA,SAAKa,WAAL,GAAmB,IAAIrF,UAAJ,CAAe,KAAKiF,KAApB,CAAnB;;EAEA,SAAKK,gBAAL;EACD;EAED;;;;;EAGA,MAAIV,IAAJ,GAAW;EACT,WAAO,KAAKK,KAAZ;EACD;EAED;;;;;;;;;;;;;;;;;;EAgBA,QAAMM,WAAN,CAAkB9E,KAAlB,EAAyB;EACvB,IAA2C;EACzCC,MAAAA,iBAAM,CAACC,MAAP,CAAcF,KAAd,EAAqB,QAArB,EAA+B;EAC7BG,QAAAA,UAAU,EAAE,yBADiB;EAE7BC,QAAAA,SAAS,EAAE,OAFkB;EAG7BC,QAAAA,QAAQ,EAAE,aAHmB;EAI7BC,QAAAA,SAAS,EAAE;EAJkB,OAA/B;EAMAL,MAAAA,iBAAM,CAAC8E,UAAP,CAAkB/E,KAAK,CAAC0C,OAAxB,EAAiCmB,OAAjC,EAA0C;EACxC1D,QAAAA,UAAU,EAAE,yBAD4B;EAExCC,QAAAA,SAAS,EAAE,OAF6B;EAGxCC,QAAAA,QAAQ,EAAE,aAH8B;EAIxCC,QAAAA,SAAS,EAAE;EAJ6B,OAA1C;EAMD;;EAED,UAAM,KAAK0E,WAAL,CAAiBhF,KAAjB,EAAwB,MAAxB,CAAN;EACD;EAED;;;;;;;;;;;;;;;;;;EAgBA,QAAMiF,cAAN,CAAqBjF,KAArB,EAA4B;EAC1B,IAA2C;EACzCC,MAAAA,iBAAM,CAACC,MAAP,CAAcF,KAAd,EAAqB,QAArB,EAA+B;EAC7BG,QAAAA,UAAU,EAAE,yBADiB;EAE7BC,QAAAA,SAAS,EAAE,OAFkB;EAG7BC,QAAAA,QAAQ,EAAE,gBAHmB;EAI7BC,QAAAA,SAAS,EAAE;EAJkB,OAA/B;EAMAL,MAAAA,iBAAM,CAAC8E,UAAP,CAAkB/E,KAAK,CAAC0C,OAAxB,EAAiCmB,OAAjC,EAA0C;EACxC1D,QAAAA,UAAU,EAAE,yBAD4B;EAExCC,QAAAA,SAAS,EAAE,OAF6B;EAGxCC,QAAAA,QAAQ,EAAE,gBAH8B;EAIxCC,QAAAA,SAAS,EAAE;EAJ6B,OAA1C;EAMD;;EAED,UAAM,KAAK0E,WAAL,CAAiBhF,KAAjB,EAAwB,SAAxB,CAAN;EACD;EAED;;;;;;;;;EAOA,QAAMkF,UAAN,GAAmB;EACjB,WAAO,KAAKC,cAAL,CAAoB,KAApB,CAAP;EACD;EAED;;;;;;;;;EAOA,QAAMC,YAAN,GAAqB;EACnB,WAAO,KAAKD,cAAL,CAAoB,OAApB,CAAP;EACD;EAED;;;;;;;;EAMA,QAAMjE,MAAN,GAAe;EACb,UAAMmE,UAAU,GAAG,MAAM,KAAKT,WAAL,CAAiB1D,MAAjB,EAAzB;EACA,UAAMoE,GAAG,GAAGC,IAAI,CAACD,GAAL,EAAZ;EAEA,UAAME,gBAAgB,GAAG,EAAzB;;EACA,SAAK,MAAMxF,KAAX,IAAoBqF,UAApB,EAAgC;EAC9B;EACA;EACA,YAAMI,oBAAoB,GAAG,KAAKd,iBAAL,GAAyB,EAAzB,GAA8B,IAA3D;;EACA,UAAIW,GAAG,GAAGtF,KAAK,CAAC0F,SAAZ,GAAwBD,oBAA5B,EAAkD;EAChD,cAAM,KAAKb,WAAL,CAAiBrD,WAAjB,CAA6BvB,KAAK,CAACQ,EAAnC,CAAN;EACD,OAFD,MAEO;EACLgF,QAAAA,gBAAgB,CAACG,IAAjB,CAAsBC,YAAY,CAAC5F,KAAD,CAAlC;EACD;EACF;;EAED,WAAOwF,gBAAP;EACD;EAGD;;;;;;;;;;;;EAUA,QAAMR,WAAN,CACI;EAACtC,IAAAA,OAAD;EAAUmD,IAAAA,QAAV;EAAoBH,IAAAA,SAAS,GAAGH,IAAI,CAACD,GAAL;EAAhC,GADJ,EACiDQ,SADjD,EAC4D;EAC1D,UAAMC,eAAe,GAAG,MAAMvD,eAAe,CAACC,WAAhB,CAA4BC,OAAO,CAACK,KAAR,EAA5B,CAA9B;EACA,UAAM/C,KAAK,GAAG;EACZO,MAAAA,WAAW,EAAEwF,eAAe,CAACvC,QAAhB,EADD;EAEZkC,MAAAA;EAFY,KAAd,CAF0D;;EAQ1D,QAAIG,QAAJ,EAAc;EACZ7F,MAAAA,KAAK,CAAC6F,QAAN,GAAiBA,QAAjB;EACD;;EAED,UAAM,KAAKjB,WAAL,CAAkB,GAAEkB,SAAU,OAA9B,EAAsC9F,KAAtC,CAAN;;EAEA,IAA2C;EACzCgG,MAAAA,iBAAM,CAACC,GAAP,CAAY,gBAAeC,iCAAc,CAACxD,OAAO,CAACC,GAAT,CAAc,QAA5C,GACN,wCAAuC,KAAK6B,KAAM,IADvD;EAED,KAjByD;EAoB1D;EACA;;;EACA,QAAI,KAAK2B,eAAT,EAA0B;EACxB,WAAKC,wBAAL,GAAgC,IAAhC;EACD,KAFD,MAEO;EACL,YAAM,KAAKC,YAAL,EAAN;EACD;EACF;EAED;;;;;;;;;;EAQA,QAAMlB,cAAN,CAAqBW,SAArB,EAAgC;EAC9B,UAAMR,GAAG,GAAGC,IAAI,CAACD,GAAL,EAAZ;EACA,UAAMtF,KAAK,GAAG,MAAM,KAAK4E,WAAL,CAAkB,GAAEkB,SAAU,OAA9B,GAApB;;EAEA,QAAI9F,KAAJ,EAAW;EACT;EACA;EACA,YAAMyF,oBAAoB,GAAG,KAAKd,iBAAL,GAAyB,EAAzB,GAA8B,IAA3D;;EACA,UAAIW,GAAG,GAAGtF,KAAK,CAAC0F,SAAZ,GAAwBD,oBAA5B,EAAkD;EAChD,eAAO,KAAKN,cAAL,CAAoBW,SAApB,CAAP;EACD;;EAED,aAAOF,YAAY,CAAC5F,KAAD,CAAnB;EACD;EACF;EAED;;;;;;;EAKA,QAAM0E,cAAN,GAAuB;EACrB,QAAI1E,KAAJ;;EACA,WAAOA,KAAK,GAAG,MAAM,KAAKoF,YAAL,EAArB,EAA0C;EACxC,UAAI;EACF,cAAMkB,KAAK,CAACtG,KAAK,CAAC0C,OAAN,CAAcK,KAAd,EAAD,CAAX;;EAEA,QAA2C;EACzCiD,UAAAA,iBAAM,CAACC,GAAP,CAAY,gBAAeC,iCAAc,CAAClG,KAAK,CAAC0C,OAAN,CAAcC,GAAf,CAAoB,GAAlD,GACP,+BAA8B,KAAK6B,KAAM,GAD7C;EAED;EACF,OAPD,CAOE,OAAO+B,KAAP,EAAc;EACd,cAAM,KAAKtB,cAAL,CAAoBjF,KAApB,CAAN;;EAEA,QAA2C;EACzCgG,UAAAA,iBAAM,CAACC,GAAP,CAAY,gBAAeC,iCAAc,CAAClG,KAAK,CAAC0C,OAAN,CAAcC,GAAf,CAAoB,GAAlD,GACP,+CAA8C,KAAK6B,KAAM,GAD7D;EAED;;EACD,cAAM,IAAID,6BAAJ,CAAiB,qBAAjB,EAAwC;EAACJ,UAAAA,IAAI,EAAE,KAAKK;EAAZ,SAAxC,CAAN;EACD;EACF;;EACD,IAA2C;EACzCwB,MAAAA,iBAAM,CAACC,GAAP,CAAY,0BAAyB,KAAK9B,IAAK,sBAApC,GACN,mCADL;EAED;EACF;EAED;;;;;EAGA,QAAMkC,YAAN,GAAqB;EACnB,QAAI,UAAUG,YAAd,EAA4B;EAC1B,UAAI;EACF,cAAMA,YAAY,CAACC,IAAb,CAAkBC,QAAlB,CAA4B,GAAE5C,UAAW,IAAG,KAAKU,KAAM,EAAvD,CAAN;EACD,OAFD,CAEE,OAAOmC,GAAP,EAAY;EACZ;EACA;EACA,QAA2C;EACzCX,UAAAA,iBAAM,CAACY,IAAP,CACK,sCAAqC,KAAKpC,KAAM,IADrD,EAC0DmC,GAD1D;EAED;EACF;EACF;EACF;EAED;;;;;;;;;EAOA9B,EAAAA,gBAAgB,GAAG;EACjB,QAAI,UAAU2B,YAAd,EAA4B;EAC1BxH,MAAAA,IAAI,CAAC6H,gBAAL,CAAsB,MAAtB,EAA+BpF,KAAD,IAAW;EACvC,YAAIA,KAAK,CAACqF,GAAN,KAAe,GAAEhD,UAAW,IAAG,KAAKU,KAAM,EAA9C,EAAiD;EAC/C,UAA2C;EACzCwB,YAAAA,iBAAM,CAACC,GAAP,CAAY,4BAA2BxE,KAAK,CAACqF,GAAI,GAAtC,GACN,mBADL;EAED;;EAED,gBAAMC,YAAY,GAAG,YAAY;EAC/B,iBAAKZ,eAAL,GAAuB,IAAvB;EAEA,gBAAIa,SAAJ;;EACA,gBAAI;EACF,oBAAM,KAAKvC,OAAL,CAAa;EAACwC,gBAAAA,KAAK,EAAE;EAAR,eAAb,CAAN;EACD,aAFD,CAEE,OAAOV,KAAP,EAAc;EACdS,cAAAA,SAAS,GAAGT,KAAZ,CADc;EAId;;EACA,oBAAMS,SAAN;EACD,aARD,SAQU;EACR;EACA;EACA;EACA;EACA;EACA,kBAAI,KAAKZ,wBAAL,IACA,EAAEY,SAAS,IAAI,CAACvF,KAAK,CAACyF,UAAtB,CADJ,EACuC;EACrC,sBAAM,KAAKb,YAAL,EAAN;EACD;;EAED,mBAAKF,eAAL,GAAuB,KAAvB;EACA,mBAAKC,wBAAL,GAAgC,KAAhC;EACD;EACF,WA1BD;;EA2BA3E,UAAAA,KAAK,CAAC0F,SAAN,CAAgBJ,YAAY,EAA5B;EACD;EACF,OApCD;EAqCD,KAtCD,MAsCO;EACL,MAA2C;EACzCf,QAAAA,iBAAM,CAACC,GAAP,CAAY,yDAAZ;EACD,OAHI;EAKL;;;EACA,WAAKxB,OAAL,CAAa;EAACwC,QAAAA,KAAK,EAAE;EAAR,OAAb;EACD;EACF;EAED;;;;;;;;;;EAQA,aAAWG,WAAX,GAAyB;EACvB,WAAOpD,UAAP;EACD;;EApVS;EAwVZ;;;;;;;;;;;EASA,MAAM4B,YAAY,GAAIyB,eAAD,IAAqB;EACxC,QAAMC,UAAU,GAAG;EACjB5E,IAAAA,OAAO,EAAE,IAAIF,eAAJ,CAAoB6E,eAAe,CAAC9G,WAApC,EAAiDqD,SAAjD,EADQ;EAEjB8B,IAAAA,SAAS,EAAE2B,eAAe,CAAC3B;EAFV,GAAnB;;EAIA,MAAI2B,eAAe,CAACxB,QAApB,EAA8B;EAC5ByB,IAAAA,UAAU,CAACzB,QAAX,GAAsBwB,eAAe,CAACxB,QAAtC;EACD;;EACD,SAAOyB,UAAP;EACD,CATD;;EC9XA;;;;;;;AAQA,EAGA;;;;;;;EAMA,MAAMC,MAAN,CAAa;EACX;;;;;EAKA/H,EAAAA,WAAW,CAAC,GAAGgI,SAAJ,EAAe;EACxB,SAAKC,MAAL,GAAc,IAAIvD,KAAJ,CAAU,GAAGsD,SAAb,CAAd;EACA,SAAKE,YAAL,GAAoB,KAAKA,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB,CAApB;EACD;EAED;;;;;;;EAKA,QAAMD,YAAN,CAAmB;EAAChF,IAAAA;EAAD,GAAnB,EAA8B;EAC5B,UAAM,KAAK+E,MAAL,CAAY3C,WAAZ,CAAwB;EAACpC,MAAAA;EAAD,KAAxB,CAAN;EACD;;EAlBU;;ECjBb;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-background-sync.prod.js b/pr-preview/pr-1029/workbox-v4.3.1/workbox-background-sync.prod.js deleted file mode 100644 index 9c9051ade..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-background-sync.prod.js +++ /dev/null @@ -1,2 +0,0 @@ -this.workbox=this.workbox||{},this.workbox.backgroundSync=function(t,e,s){"use strict";try{self["workbox:background-sync:4.3.1"]&&_()}catch(t){}const i=3,n="workbox-background-sync",a="requests",r="queueName";class c{constructor(t){this.t=t,this.s=new s.DBWrapper(n,i,{onupgradeneeded:this.i})}async pushEntry(t){delete t.id,t.queueName=this.t,await this.s.add(a,t)}async unshiftEntry(t){const[e]=await this.s.getAllMatching(a,{count:1});e?t.id=e.id-1:delete t.id,t.queueName=this.t,await this.s.add(a,t)}async popEntry(){return this.h({direction:"prev"})}async shiftEntry(){return this.h({direction:"next"})}async getAll(){return await this.s.getAllMatching(a,{index:r,query:IDBKeyRange.only(this.t)})}async deleteEntry(t){await this.s.delete(a,t)}async h({direction:t}){const[e]=await this.s.getAllMatching(a,{direction:t,index:r,query:IDBKeyRange.only(this.t),count:1});if(e)return await this.deleteEntry(e.id),e}i(t){const e=t.target.result;t.oldVersion>0&&t.oldVersiont?await this.m.deleteEntry(i.id):s.push(f(i))}return s}async g({request:t,metadata:e,timestamp:s=Date.now()},i){const n={requestData:(await o.fromRequest(t.clone())).toObject(),timestamp:s};e&&(n.metadata=e),await this.m[`${i}Entry`](n),this.k?this.D=!0:await this.registerSync()}async R(t){const e=Date.now(),s=await this.m[`${t}Entry`]();if(s){const i=60*this.q*1e3;return e-s.timestamp>i?this.R(t):f(s)}}async replayRequests(){let t;for(;t=await this.shiftRequest();)try{await fetch(t.request.clone())}catch(s){throw await this.unshiftRequest(t),new e.WorkboxError("queue-replay-failed",{name:this.u})}}async registerSync(){if("sync"in registration)try{await registration.sync.register(`${u}:${this.u}`)}catch(t){}}p(){"sync"in registration?self.addEventListener("sync",t=>{if(t.tag===`${u}:${this.u}`){const e=async()=>{let e;this.k=!0;try{await this.l({queue:this})}catch(t){throw e=t}finally{!this.D||e&&!t.lastChance||await this.registerSync(),this.k=!1,this.D=!1}};t.waitUntil(e())}}):this.l({queue:this})}static get _(){return w}}const f=t=>{const e={request:new o(t.requestData).toRequest(),timestamp:t.timestamp};return t.metadata&&(e.metadata=t.metadata),e};return t.Queue=d,t.Plugin=class{constructor(...t){this.v=new d(...t),this.fetchDidFail=this.fetchDidFail.bind(this)}async fetchDidFail({request:t}){await this.v.pushRequest({request:t})}},t}({},workbox.core._private,workbox.core._private); -//# sourceMappingURL=workbox-background-sync.prod.js.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-background-sync.prod.js.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-background-sync.prod.js.map deleted file mode 100644 index 4064edb64..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-background-sync.prod.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-background-sync.prod.js","sources":["../_version.mjs","../lib/QueueStore.mjs","../lib/StorableRequest.mjs","../Queue.mjs","../Plugin.mjs"],"sourcesContent":["try{self['workbox:background-sync:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {DBWrapper} from 'workbox-core/_private/DBWrapper.mjs';\nimport '../_version.mjs';\n\n\nconst DB_VERSION = 3;\nconst DB_NAME = 'workbox-background-sync';\nconst OBJECT_STORE_NAME = 'requests';\nconst INDEXED_PROP = 'queueName';\n\n/**\n * A class to manage storing requests from a Queue in IndexedbDB,\n * indexed by their queue name for easier access.\n *\n * @private\n */\nexport class QueueStore {\n /**\n * Associates this instance with a Queue instance, so entries added can be\n * identified by their queue name.\n *\n * @param {string} queueName\n * @private\n */\n constructor(queueName) {\n this._queueName = queueName;\n this._db = new DBWrapper(DB_NAME, DB_VERSION, {\n onupgradeneeded: this._upgradeDb,\n });\n }\n\n /**\n * Append an entry last in the queue.\n *\n * @param {Object} entry\n * @param {Object} entry.requestData\n * @param {number} [entry.timestamp]\n * @param {Object} [entry.metadata]\n * @private\n */\n async pushEntry(entry) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(entry, 'object', {\n moduleName: 'workbox-background-sync',\n className: 'QueueStore',\n funcName: 'pushEntry',\n paramName: 'entry',\n });\n assert.isType(entry.requestData, 'object', {\n moduleName: 'workbox-background-sync',\n className: 'QueueStore',\n funcName: 'pushEntry',\n paramName: 'entry.requestData',\n });\n }\n\n // Don't specify an ID since one is automatically generated.\n delete entry.id;\n entry.queueName = this._queueName;\n\n await this._db.add(OBJECT_STORE_NAME, entry);\n }\n\n /**\n * Preppend an entry first in the queue.\n *\n * @param {Object} entry\n * @param {Object} entry.requestData\n * @param {number} [entry.timestamp]\n * @param {Object} [entry.metadata]\n * @private\n */\n async unshiftEntry(entry) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(entry, 'object', {\n moduleName: 'workbox-background-sync',\n className: 'QueueStore',\n funcName: 'unshiftEntry',\n paramName: 'entry',\n });\n assert.isType(entry.requestData, 'object', {\n moduleName: 'workbox-background-sync',\n className: 'QueueStore',\n funcName: 'unshiftEntry',\n paramName: 'entry.requestData',\n });\n }\n\n const [firstEntry] = await this._db.getAllMatching(OBJECT_STORE_NAME, {\n count: 1,\n });\n\n if (firstEntry) {\n // Pick an ID one less than the lowest ID in the object store.\n entry.id = firstEntry.id - 1;\n } else {\n // Otherwise let the auto-incrementor assign the ID.\n delete entry.id;\n }\n entry.queueName = this._queueName;\n\n await this._db.add(OBJECT_STORE_NAME, entry);\n }\n\n /**\n * Removes and returns the last entry in the queue matching the `queueName`.\n *\n * @return {Promise}\n * @private\n */\n async popEntry() {\n return this._removeEntry({direction: 'prev'});\n }\n\n /**\n * Removes and returns the first entry in the queue matching the `queueName`.\n *\n * @return {Promise}\n * @private\n */\n async shiftEntry() {\n return this._removeEntry({direction: 'next'});\n }\n\n /**\n * Returns all entries in the store matching the `queueName`.\n *\n * @param {Object} options See workbox.backgroundSync.Queue~getAll}\n * @return {Promise>}\n * @private\n */\n async getAll() {\n return await this._db.getAllMatching(OBJECT_STORE_NAME, {\n index: INDEXED_PROP,\n query: IDBKeyRange.only(this._queueName),\n });\n }\n\n /**\n * Deletes the entry for the given ID.\n *\n * WARNING: this method does not ensure the deleted enry belongs to this\n * queue (i.e. matches the `queueName`). But this limitation is acceptable\n * as this class is not publicly exposed. An additional check would make\n * this method slower than it needs to be.\n *\n * @private\n * @param {number} id\n */\n async deleteEntry(id) {\n await this._db.delete(OBJECT_STORE_NAME, id);\n }\n\n /**\n * Removes and returns the first or last entry in the queue (based on the\n * `direction` argument) matching the `queueName`.\n *\n * @return {Promise}\n * @private\n */\n async _removeEntry({direction}) {\n const [entry] = await this._db.getAllMatching(OBJECT_STORE_NAME, {\n direction,\n index: INDEXED_PROP,\n query: IDBKeyRange.only(this._queueName),\n count: 1,\n });\n\n if (entry) {\n await this.deleteEntry(entry.id);\n return entry;\n }\n }\n\n /**\n * Upgrades the database given an `upgradeneeded` event.\n *\n * @param {Event} event\n * @private\n */\n _upgradeDb(event) {\n const db = event.target.result;\n\n if (event.oldVersion > 0 && event.oldVersion < DB_VERSION) {\n if (db.objectStoreNames.contains(OBJECT_STORE_NAME)) {\n db.deleteObjectStore(OBJECT_STORE_NAME);\n }\n }\n\n const objStore = db.createObjectStore(OBJECT_STORE_NAME, {\n autoIncrement: true,\n keyPath: 'id',\n });\n objStore.createIndex(INDEXED_PROP, INDEXED_PROP, {unique: false});\n }\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport '../_version.mjs';\n\n\nconst serializableProperties = [\n 'method',\n 'referrer',\n 'referrerPolicy',\n 'mode',\n 'credentials',\n 'cache',\n 'redirect',\n 'integrity',\n 'keepalive',\n];\n\n\n/**\n * A class to make it easier to serialize and de-serialize requests so they\n * can be stored in IndexedDB.\n *\n * @private\n */\nclass StorableRequest {\n /**\n * Converts a Request object to a plain object that can be structured\n * cloned or JSON-stringified.\n *\n * @param {Request} request\n * @return {Promise}\n *\n * @private\n */\n static async fromRequest(request) {\n const requestData = {\n url: request.url,\n headers: {},\n };\n\n // Set the body if present.\n if (request.method !== 'GET') {\n // Use ArrayBuffer to support non-text request bodies.\n // NOTE: we can't use Blobs becuse Safari doesn't support storing\n // Blobs in IndexedDB in some cases:\n // https://github.com/dfahlander/Dexie.js/issues/618#issuecomment-398348457\n requestData.body = await request.clone().arrayBuffer();\n }\n\n // Convert the headers from an iterable to an object.\n for (const [key, value] of request.headers.entries()) {\n requestData.headers[key] = value;\n }\n\n // Add all other serializable request properties\n for (const prop of serializableProperties) {\n if (request[prop] !== undefined) {\n requestData[prop] = request[prop];\n }\n }\n\n return new StorableRequest(requestData);\n }\n\n /**\n * Accepts an object of request data that can be used to construct a\n * `Request` but can also be stored in IndexedDB.\n *\n * @param {Object} requestData An object of request data that includes the\n * `url` plus any relevant properties of\n * [requestInit]{@link https://fetch.spec.whatwg.org/#requestinit}.\n * @private\n */\n constructor(requestData) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(requestData, 'object', {\n moduleName: 'workbox-background-sync',\n className: 'StorableRequest',\n funcName: 'constructor',\n paramName: 'requestData',\n });\n assert.isType(requestData.url, 'string', {\n moduleName: 'workbox-background-sync',\n className: 'StorableRequest',\n funcName: 'constructor',\n paramName: 'requestData.url',\n });\n }\n\n // If the request's mode is `navigate`, convert it to `same-origin` since\n // navigation requests can't be constructed via script.\n if (requestData.mode === 'navigate') {\n requestData.mode = 'same-origin';\n }\n\n this._requestData = requestData;\n }\n\n /**\n * Returns a deep clone of the instances `_requestData` object.\n *\n * @return {Object}\n *\n * @private\n */\n toObject() {\n const requestData = Object.assign({}, this._requestData);\n requestData.headers = Object.assign({}, this._requestData.headers);\n if (requestData.body) {\n requestData.body = requestData.body.slice(0);\n }\n\n return requestData;\n }\n\n /**\n * Converts this instance to a Request.\n *\n * @return {Request}\n *\n * @private\n */\n toRequest() {\n return new Request(this._requestData.url, this._requestData);\n }\n\n /**\n * Creates and returns a deep clone of the instance.\n *\n * @return {StorableRequest}\n *\n * @private\n */\n clone() {\n return new StorableRequest(this.toObject());\n }\n}\n\nexport {StorableRequest};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {getFriendlyURL} from 'workbox-core/_private/getFriendlyURL.mjs';\nimport {QueueStore} from './lib/QueueStore.mjs';\nimport {StorableRequest} from './lib/StorableRequest.mjs';\nimport './_version.mjs';\n\n\nconst TAG_PREFIX = 'workbox-background-sync';\nconst MAX_RETENTION_TIME = 60 * 24 * 7; // 7 days in minutes\n\nconst queueNames = new Set();\n\n/**\n * A class to manage storing failed requests in IndexedDB and retrying them\n * later. All parts of the storing and replaying process are observable via\n * callbacks.\n *\n * @memberof workbox.backgroundSync\n */\nclass Queue {\n /**\n * Creates an instance of Queue with the given options\n *\n * @param {string} name The unique name for this queue. This name must be\n * unique as it's used to register sync events and store requests\n * in IndexedDB specific to this instance. An error will be thrown if\n * a duplicate name is detected.\n * @param {Object} [options]\n * @param {Function} [options.onSync] A function that gets invoked whenever\n * the 'sync' event fires. The function is invoked with an object\n * containing the `queue` property (referencing this instance), and you\n * can use the callback to customize the replay behavior of the queue.\n * When not set the `replayRequests()` method is called.\n * Note: if the replay fails after a sync event, make sure you throw an\n * error, so the browser knows to retry the sync event later.\n * @param {number} [options.maxRetentionTime=7 days] The amount of time (in\n * minutes) a request may be retried. After this amount of time has\n * passed, the request will be deleted from the queue.\n */\n constructor(name, {onSync, maxRetentionTime} = {}) {\n // Ensure the store name is not already being used\n if (queueNames.has(name)) {\n throw new WorkboxError('duplicate-queue-name', {name});\n } else {\n queueNames.add(name);\n }\n\n this._name = name;\n this._onSync = onSync || this.replayRequests;\n this._maxRetentionTime = maxRetentionTime || MAX_RETENTION_TIME;\n this._queueStore = new QueueStore(this._name);\n\n this._addSyncListener();\n }\n\n /**\n * @return {string}\n */\n get name() {\n return this._name;\n }\n\n /**\n * Stores the passed request in IndexedDB (with its timestamp and any\n * metadata) at the end of the queue.\n *\n * @param {Object} entry\n * @param {Request} entry.request The request to store in the queue.\n * @param {Object} [entry.metadata] Any metadata you want associated with the\n * stored request. When requests are replayed you'll have access to this\n * metadata object in case you need to modify the request beforehand.\n * @param {number} [entry.timestamp] The timestamp (Epoch time in\n * milliseconds) when the request was first added to the queue. This is\n * used along with `maxRetentionTime` to remove outdated requests. In\n * general you don't need to set this value, as it's automatically set\n * for you (defaulting to `Date.now()`), but you can update it if you\n * don't want particular requests to expire.\n */\n async pushRequest(entry) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(entry, 'object', {\n moduleName: 'workbox-background-sync',\n className: 'Queue',\n funcName: 'pushRequest',\n paramName: 'entry',\n });\n assert.isInstance(entry.request, Request, {\n moduleName: 'workbox-background-sync',\n className: 'Queue',\n funcName: 'pushRequest',\n paramName: 'entry.request',\n });\n }\n\n await this._addRequest(entry, 'push');\n }\n\n /**\n * Stores the passed request in IndexedDB (with its timestamp and any\n * metadata) at the beginning of the queue.\n *\n * @param {Object} entry\n * @param {Request} entry.request The request to store in the queue.\n * @param {Object} [entry.metadata] Any metadata you want associated with the\n * stored request. When requests are replayed you'll have access to this\n * metadata object in case you need to modify the request beforehand.\n * @param {number} [entry.timestamp] The timestamp (Epoch time in\n * milliseconds) when the request was first added to the queue. This is\n * used along with `maxRetentionTime` to remove outdated requests. In\n * general you don't need to set this value, as it's automatically set\n * for you (defaulting to `Date.now()`), but you can update it if you\n * don't want particular requests to expire.\n */\n async unshiftRequest(entry) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(entry, 'object', {\n moduleName: 'workbox-background-sync',\n className: 'Queue',\n funcName: 'unshiftRequest',\n paramName: 'entry',\n });\n assert.isInstance(entry.request, Request, {\n moduleName: 'workbox-background-sync',\n className: 'Queue',\n funcName: 'unshiftRequest',\n paramName: 'entry.request',\n });\n }\n\n await this._addRequest(entry, 'unshift');\n }\n\n /**\n * Removes and returns the last request in the queue (along with its\n * timestamp and any metadata). The returned object takes the form:\n * `{request, timestamp, metadata}`.\n *\n * @return {Promise}\n */\n async popRequest() {\n return this._removeRequest('pop');\n }\n\n /**\n * Removes and returns the first request in the queue (along with its\n * timestamp and any metadata). The returned object takes the form:\n * `{request, timestamp, metadata}`.\n *\n * @return {Promise}\n */\n async shiftRequest() {\n return this._removeRequest('shift');\n }\n\n /**\n * Returns all the entries that have not expired (per `maxRetentionTime`).\n * Any expired entries are removed from the queue.\n *\n * @return {Promise>}\n */\n async getAll() {\n const allEntries = await this._queueStore.getAll();\n const now = Date.now();\n\n const unexpiredEntries = [];\n for (const entry of allEntries) {\n // Ignore requests older than maxRetentionTime. Call this function\n // recursively until an unexpired request is found.\n const maxRetentionTimeInMs = this._maxRetentionTime * 60 * 1000;\n if (now - entry.timestamp > maxRetentionTimeInMs) {\n await this._queueStore.deleteEntry(entry.id);\n } else {\n unexpiredEntries.push(convertEntry(entry));\n }\n }\n\n return unexpiredEntries;\n }\n\n\n /**\n * Adds the entry to the QueueStore and registers for a sync event.\n *\n * @param {Object} entry\n * @param {Request} entry.request\n * @param {Object} [entry.metadata]\n * @param {number} [entry.timestamp=Date.now()]\n * @param {string} operation ('push' or 'unshift')\n * @private\n */\n async _addRequest(\n {request, metadata, timestamp = Date.now()}, operation) {\n const storableRequest = await StorableRequest.fromRequest(request.clone());\n const entry = {\n requestData: storableRequest.toObject(),\n timestamp,\n };\n\n // Only include metadata if it's present.\n if (metadata) {\n entry.metadata = metadata;\n }\n\n await this._queueStore[`${operation}Entry`](entry);\n\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Request for '${getFriendlyURL(request.url)}' has ` +\n `been added to background sync queue '${this._name}'.`);\n }\n\n // Don't register for a sync if we're in the middle of a sync. Instead,\n // we wait until the sync is complete and call register if\n // `this._requestsAddedDuringSync` is true.\n if (this._syncInProgress) {\n this._requestsAddedDuringSync = true;\n } else {\n await this.registerSync();\n }\n }\n\n /**\n * Removes and returns the first or last (depending on `operation`) entry\n * from the QueueStore that's not older than the `maxRetentionTime`.\n *\n * @param {string} operation ('pop' or 'shift')\n * @return {Object|undefined}\n * @private\n */\n async _removeRequest(operation) {\n const now = Date.now();\n const entry = await this._queueStore[`${operation}Entry`]();\n\n if (entry) {\n // Ignore requests older than maxRetentionTime. Call this function\n // recursively until an unexpired request is found.\n const maxRetentionTimeInMs = this._maxRetentionTime * 60 * 1000;\n if (now - entry.timestamp > maxRetentionTimeInMs) {\n return this._removeRequest(operation);\n }\n\n return convertEntry(entry);\n }\n }\n\n /**\n * Loops through each request in the queue and attempts to re-fetch it.\n * If any request fails to re-fetch, it's put back in the same position in\n * the queue (which registers a retry for the next sync event).\n */\n async replayRequests() {\n let entry;\n while (entry = await this.shiftRequest()) {\n try {\n await fetch(entry.request.clone());\n\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Request for '${getFriendlyURL(entry.request.url)}'` +\n `has been replayed in queue '${this._name}'`);\n }\n } catch (error) {\n await this.unshiftRequest(entry);\n\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Request for '${getFriendlyURL(entry.request.url)}'` +\n `failed to replay, putting it back in queue '${this._name}'`);\n }\n throw new WorkboxError('queue-replay-failed', {name: this._name});\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`All requests in queue '${this.name}' have successfully ` +\n `replayed; the queue is now empty!`);\n }\n }\n\n /**\n * Registers a sync event with a tag unique to this instance.\n */\n async registerSync() {\n if ('sync' in registration) {\n try {\n await registration.sync.register(`${TAG_PREFIX}:${this._name}`);\n } catch (err) {\n // This means the registration failed for some reason, possibly due to\n // the user disabling it.\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(\n `Unable to register sync event for '${this._name}'.`, err);\n }\n }\n }\n }\n\n /**\n * In sync-supporting browsers, this adds a listener for the sync event.\n * In non-sync-supporting browsers, this will retry the queue on service\n * worker startup.\n *\n * @private\n */\n _addSyncListener() {\n if ('sync' in registration) {\n self.addEventListener('sync', (event) => {\n if (event.tag === `${TAG_PREFIX}:${this._name}`) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Background sync for tag '${event.tag}'` +\n `has been received`);\n }\n\n const syncComplete = async () => {\n this._syncInProgress = true;\n\n let syncError;\n try {\n await this._onSync({queue: this});\n } catch (error) {\n syncError = error;\n\n // Rethrow the error. Note: the logic in the finally clause\n // will run before this gets rethrown.\n throw syncError;\n } finally {\n // New items may have been added to the queue during the sync,\n // so we need to register for a new sync if that's happened...\n // Unless there was an error during the sync, in which\n // case the browser will automatically retry later, as long\n // as `event.lastChance` is not true.\n if (this._requestsAddedDuringSync &&\n !(syncError && !event.lastChance)) {\n await this.registerSync();\n }\n\n this._syncInProgress = false;\n this._requestsAddedDuringSync = false;\n }\n };\n event.waitUntil(syncComplete());\n }\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Background sync replaying without background sync event`);\n }\n // If the browser doesn't support background sync, retry\n // every time the service worker starts up as a fallback.\n this._onSync({queue: this});\n }\n }\n\n /**\n * Returns the set of queue names. This is primarily used to reset the list\n * of queue names in tests.\n *\n * @return {Set}\n *\n * @private\n */\n static get _queueNames() {\n return queueNames;\n }\n}\n\n\n/**\n * Converts a QueueStore entry into the format exposed by Queue. This entails\n * converting the request data into a real request and omitting the `id` and\n * `queueName` properties.\n *\n * @param {Object} queueStoreEntry\n * @return {Object}\n * @private\n */\nconst convertEntry = (queueStoreEntry) => {\n const queueEntry = {\n request: new StorableRequest(queueStoreEntry.requestData).toRequest(),\n timestamp: queueStoreEntry.timestamp,\n };\n if (queueStoreEntry.metadata) {\n queueEntry.metadata = queueStoreEntry.metadata;\n }\n return queueEntry;\n};\n\nexport {Queue};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {Queue} from './Queue.mjs';\nimport './_version.mjs';\n\n/**\n * A class implementing the `fetchDidFail` lifecycle callback. This makes it\n * easier to add failed requests to a background sync Queue.\n *\n * @memberof workbox.backgroundSync\n */\nclass Plugin {\n /**\n * @param {...*} queueArgs Args to forward to the composed Queue instance.\n * See the [Queue]{@link workbox.backgroundSync.Queue} documentation for\n * parameter details.\n */\n constructor(...queueArgs) {\n this._queue = new Queue(...queueArgs);\n this.fetchDidFail = this.fetchDidFail.bind(this);\n }\n\n /**\n * @param {Object} options\n * @param {Request} options.request\n * @private\n */\n async fetchDidFail({request}) {\n await this._queue.pushRequest({request});\n }\n}\n\nexport {Plugin};\n"],"names":["self","_","e","DB_VERSION","DB_NAME","OBJECT_STORE_NAME","INDEXED_PROP","QueueStore","constructor","queueName","_queueName","_db","DBWrapper","onupgradeneeded","this","_upgradeDb","entry","id","add","firstEntry","getAllMatching","count","_removeEntry","direction","index","query","IDBKeyRange","only","delete","deleteEntry","event","db","target","result","oldVersion","objectStoreNames","contains","deleteObjectStore","createObjectStore","autoIncrement","keyPath","createIndex","unique","serializableProperties","StorableRequest","request","requestData","url","headers","method","body","clone","arrayBuffer","key","value","entries","prop","undefined","mode","_requestData","toObject","Object","assign","slice","toRequest","Request","TAG_PREFIX","MAX_RETENTION_TIME","queueNames","Set","Queue","name","onSync","maxRetentionTime","has","WorkboxError","_name","_onSync","replayRequests","_maxRetentionTime","_queueStore","_addSyncListener","_addRequest","_removeRequest","allEntries","getAll","now","Date","unexpiredEntries","maxRetentionTimeInMs","timestamp","push","convertEntry","metadata","operation","fromRequest","_syncInProgress","_requestsAddedDuringSync","registerSync","shiftRequest","fetch","error","unshiftRequest","registration","sync","register","err","addEventListener","tag","syncComplete","async","syncError","queue","lastChance","waitUntil","queueStoreEntry","queueEntry","queueArgs","_queue","fetchDidFail","bind","pushRequest"],"mappings":"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"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-broadcast-update.dev.js b/pr-preview/pr-1029/workbox-v4.3.1/workbox-broadcast-update.dev.js deleted file mode 100644 index 79beb38aa..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-broadcast-update.dev.js +++ /dev/null @@ -1,496 +0,0 @@ -this.workbox = this.workbox || {}; -this.workbox.broadcastUpdate = (function (exports, assert_mjs, getFriendlyURL_mjs, logger_mjs, Deferred_mjs, WorkboxError_mjs) { - 'use strict'; - - try { - self['workbox:broadcast-update:4.3.1'] && _(); - } catch (e) {} // eslint-disable-line - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Given two `Response's`, compares several header values to see if they are - * the same or not. - * - * @param {Response} firstResponse - * @param {Response} secondResponse - * @param {Array} headersToCheck - * @return {boolean} - * - * @memberof workbox.broadcastUpdate - * @private - */ - - const responsesAreSame = (firstResponse, secondResponse, headersToCheck) => { - { - if (!(firstResponse instanceof Response && secondResponse instanceof Response)) { - throw new WorkboxError_mjs.WorkboxError('invalid-responses-are-same-args'); - } - } - - const atLeastOneHeaderAvailable = headersToCheck.some(header => { - return firstResponse.headers.has(header) && secondResponse.headers.has(header); - }); - - if (!atLeastOneHeaderAvailable) { - { - logger_mjs.logger.warn(`Unable to determine where the response has been updated ` + `because none of the headers that would be checked are present.`); - logger_mjs.logger.debug(`Attempting to compare the following: `, firstResponse, secondResponse, headersToCheck); - } // Just return true, indicating the that responses are the same, since we - // can't determine otherwise. - - - return true; - } - - return headersToCheck.every(header => { - const headerStateComparison = firstResponse.headers.has(header) === secondResponse.headers.has(header); - const headerValueComparison = firstResponse.headers.get(header) === secondResponse.headers.get(header); - return headerStateComparison && headerValueComparison; - }); - }; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - const CACHE_UPDATED_MESSAGE_TYPE = 'CACHE_UPDATED'; - const CACHE_UPDATED_MESSAGE_META = 'workbox-broadcast-update'; - const DEFAULT_BROADCAST_CHANNEL_NAME = 'workbox'; - const DEFAULT_DEFER_NOTIFICATION_TIMEOUT = 10000; - const DEFAULT_HEADERS_TO_CHECK = ['content-length', 'etag', 'last-modified']; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * You would not normally call this method directly; it's called automatically - * by an instance of the {@link BroadcastCacheUpdate} class. It's exposed here - * for the benefit of developers who would rather not use the full - * `BroadcastCacheUpdate` implementation. - * - * Calling this will dispatch a message on the provided - * {@link https://developers.google.com/web/updates/2016/09/broadcastchannel|Broadcast Channel} - * to notify interested subscribers about a change to a cached resource. - * - * The message that's posted has a formation inspired by the - * [Flux standard action](https://github.com/acdlite/flux-standard-action#introduction) - * format like so: - * - * ``` - * { - * type: 'CACHE_UPDATED', - * meta: 'workbox-broadcast-update', - * payload: { - * cacheName: 'the-cache-name', - * updatedURL: 'https://example.com/' - * } - * } - * ``` - * - * (Usage of [Flux](https://facebook.github.io/flux/) itself is not at - * all required.) - * - * @param {Object} options - * @param {string} options.cacheName The name of the cache in which the updated - * `Response` was stored. - * @param {string} options.url The URL associated with the updated `Response`. - * @param {BroadcastChannel} [options.channel] The `BroadcastChannel` to use. - * If no channel is set or the browser doesn't support the BroadcastChannel - * api, then an attempt will be made to `postMessage` each window client. - * - * @memberof workbox.broadcastUpdate - */ - - const broadcastUpdate = async ({ - channel, - cacheName, - url - }) => { - { - assert_mjs.assert.isType(cacheName, 'string', { - moduleName: 'workbox-broadcast-update', - className: '~', - funcName: 'broadcastUpdate', - paramName: 'cacheName' - }); - assert_mjs.assert.isType(url, 'string', { - moduleName: 'workbox-broadcast-update', - className: '~', - funcName: 'broadcastUpdate', - paramName: 'url' - }); - } - - const data = { - type: CACHE_UPDATED_MESSAGE_TYPE, - meta: CACHE_UPDATED_MESSAGE_META, - payload: { - cacheName: cacheName, - updatedURL: url - } - }; - - if (channel) { - channel.postMessage(data); - } else { - const windows = await clients.matchAll({ - type: 'window' - }); - - for (const win of windows) { - win.postMessage(data); - } - } - }; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Uses the [Broadcast Channel API]{@link https://developers.google.com/web/updates/2016/09/broadcastchannel} - * to notify interested parties when a cached response has been updated. - * In browsers that do not support the Broadcast Channel API, the instance - * falls back to sending the update via `postMessage()` to all window clients. - * - * For efficiency's sake, the underlying response bodies are not compared; - * only specific response headers are checked. - * - * @memberof workbox.broadcastUpdate - */ - - class BroadcastCacheUpdate { - /** - * Construct a BroadcastCacheUpdate instance with a specific `channelName` to - * broadcast messages on - * - * @param {Object} options - * @param {Array} - * [options.headersToCheck=['content-length', 'etag', 'last-modified']] - * A list of headers that will be used to determine whether the responses - * differ. - * @param {string} [options.channelName='workbox'] The name that will be used - *. when creating the `BroadcastChannel`, which defaults to 'workbox' (the - * channel name used by the `workbox-window` package). - * @param {string} [options.deferNoticationTimeout=10000] The amount of time - * to wait for a ready message from the window on navigation requests - * before sending the update. - */ - constructor({ - headersToCheck, - channelName, - deferNoticationTimeout - } = {}) { - this._headersToCheck = headersToCheck || DEFAULT_HEADERS_TO_CHECK; - this._channelName = channelName || DEFAULT_BROADCAST_CHANNEL_NAME; - this._deferNoticationTimeout = deferNoticationTimeout || DEFAULT_DEFER_NOTIFICATION_TIMEOUT; - - { - assert_mjs.assert.isType(this._channelName, 'string', { - moduleName: 'workbox-broadcast-update', - className: 'BroadcastCacheUpdate', - funcName: 'constructor', - paramName: 'channelName' - }); - assert_mjs.assert.isArray(this._headersToCheck, { - moduleName: 'workbox-broadcast-update', - className: 'BroadcastCacheUpdate', - funcName: 'constructor', - paramName: 'headersToCheck' - }); - } - - this._initWindowReadyDeferreds(); - } - /** - * Compare two [Responses](https://developer.mozilla.org/en-US/docs/Web/API/Response) - * and send a message via the - * {@link https://developers.google.com/web/updates/2016/09/broadcastchannel|Broadcast Channel API} - * if they differ. - * - * Neither of the Responses can be {@link http://stackoverflow.com/questions/39109789|opaque}. - * - * @param {Object} options - * @param {Response} options.oldResponse Cached response to compare. - * @param {Response} options.newResponse Possibly updated response to compare. - * @param {string} options.url The URL of the request. - * @param {string} options.cacheName Name of the cache the responses belong - * to. This is included in the broadcast message. - * @param {Event} [options.event] event An optional event that triggered - * this possible cache update. - * @return {Promise} Resolves once the update is sent. - */ - - - notifyIfUpdated({ - oldResponse, - newResponse, - url, - cacheName, - event - }) { - if (!responsesAreSame(oldResponse, newResponse, this._headersToCheck)) { - { - logger_mjs.logger.log(`Newer response found (and cached) for:`, url); - } - - const sendUpdate = async () => { - // In the case of a navigation request, the requesting page will likely - // not have loaded its JavaScript in time to recevied the update - // notification, so we defer it until ready (or we timeout waiting). - if (event && event.request && event.request.mode === 'navigate') { - { - logger_mjs.logger.debug(`Original request was a navigation request, ` + `waiting for a ready message from the window`, event.request); - } - - await this._windowReadyOrTimeout(event); - } - - await this._broadcastUpdate({ - channel: this._getChannel(), - cacheName, - url - }); - }; // Send the update and ensure the SW stays alive until it's sent. - - - const done = sendUpdate(); - - if (event) { - try { - event.waitUntil(done); - } catch (error) { - { - logger_mjs.logger.warn(`Unable to ensure service worker stays alive ` + `when broadcasting cache update for ` + `${getFriendlyURL_mjs.getFriendlyURL(event.request.url)}'.`); - } - } - } - - return done; - } - } - /** - * NOTE: this is exposed on the instance primarily so it can be spied on - * in tests. - * - * @param {Object} opts - * @private - */ - - - async _broadcastUpdate(opts) { - await broadcastUpdate(opts); - } - /** - * @return {BroadcastChannel|undefined} The BroadcastChannel instance used for - * broadcasting updates, or undefined if the browser doesn't support the - * Broadcast Channel API. - * - * @private - */ - - - _getChannel() { - if ('BroadcastChannel' in self && !this._channel) { - this._channel = new BroadcastChannel(this._channelName); - } - - return this._channel; - } - /** - * Waits for a message from the window indicating that it's capable of - * receiving broadcasts. By default, this will only wait for the amount of - * time specified via the `deferNoticationTimeout` option. - * - * @param {Event} event The navigation fetch event. - * @return {Promise} - * @private - */ - - - _windowReadyOrTimeout(event) { - if (!this._navigationEventsDeferreds.has(event)) { - const deferred = new Deferred_mjs.Deferred(); // Set the deferred on the `_navigationEventsDeferreds` map so it will - // be resolved when the next ready message event comes. - - this._navigationEventsDeferreds.set(event, deferred); // But don't wait too long for the message since it may never come. - - - const timeout = setTimeout(() => { - { - logger_mjs.logger.debug(`Timed out after ${this._deferNoticationTimeout}` + `ms waiting for message from window`); - } - - deferred.resolve(); - }, this._deferNoticationTimeout); // Ensure the timeout is cleared if the deferred promise is resolved. - - deferred.promise.then(() => clearTimeout(timeout)); - } - - return this._navigationEventsDeferreds.get(event).promise; - } - /** - * Creates a mapping between navigation fetch events and deferreds, and adds - * a listener for message events from the window. When message events arrive, - * all deferreds in the mapping are resolved. - * - * Note: it would be easier if we could only resolve the deferred of - * navigation fetch event whose client ID matched the source ID of the - * message event, but currently client IDs are not exposed on navigation - * fetch events: https://www.chromestatus.com/feature/4846038800138240 - * - * @private - */ - - - _initWindowReadyDeferreds() { - // A mapping between navigation events and their deferreds. - this._navigationEventsDeferreds = new Map(); // The message listener needs to be added in the initial run of the - // service worker, but since we don't actually need to be listening for - // messages until the cache updates, we only invoke the callback if set. - - self.addEventListener('message', event => { - if (event.data.type === 'WINDOW_READY' && event.data.meta === 'workbox-window' && this._navigationEventsDeferreds.size > 0) { - { - logger_mjs.logger.debug(`Received WINDOW_READY event: `, event); - } // Resolve any pending deferreds. - - - for (const deferred of this._navigationEventsDeferreds.values()) { - deferred.resolve(); - } - - this._navigationEventsDeferreds.clear(); - } - }); - } - - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * This plugin will automatically broadcast a message whenever a cached response - * is updated. - * - * @memberof workbox.broadcastUpdate - */ - - class Plugin { - /** - * Construct a BroadcastCacheUpdate instance with the passed options and - * calls its `notifyIfUpdated()` method whenever the plugin's - * `cacheDidUpdate` callback is invoked. - * - * @param {Object} options - * @param {Array} - * [options.headersToCheck=['content-length', 'etag', 'last-modified']] - * A list of headers that will be used to determine whether the responses - * differ. - * @param {string} [options.channelName='workbox'] The name that will be used - *. when creating the `BroadcastChannel`, which defaults to 'workbox' (the - * channel name used by the `workbox-window` package). - * @param {string} [options.deferNoticationTimeout=10000] The amount of time - * to wait for a ready message from the window on navigation requests - * before sending the update. - */ - constructor(options) { - this._broadcastUpdate = new BroadcastCacheUpdate(options); - } - /** - * A "lifecycle" callback that will be triggered automatically by the - * `workbox-sw` and `workbox-runtime-caching` handlers when an entry is - * added to a cache. - * - * @private - * @param {Object} options The input object to this function. - * @param {string} options.cacheName Name of the cache being updated. - * @param {Response} [options.oldResponse] The previous cached value, if any. - * @param {Response} options.newResponse The new value in the cache. - * @param {Request} options.request The request that triggered the udpate. - * @param {Request} [options.event] The event that triggered the update. - */ - - - cacheDidUpdate({ - cacheName, - oldResponse, - newResponse, - request, - event - }) { - { - assert_mjs.assert.isType(cacheName, 'string', { - moduleName: 'workbox-broadcast-update', - className: 'Plugin', - funcName: 'cacheDidUpdate', - paramName: 'cacheName' - }); - assert_mjs.assert.isInstance(newResponse, Response, { - moduleName: 'workbox-broadcast-update', - className: 'Plugin', - funcName: 'cacheDidUpdate', - paramName: 'newResponse' - }); - assert_mjs.assert.isInstance(request, Request, { - moduleName: 'workbox-broadcast-update', - className: 'Plugin', - funcName: 'cacheDidUpdate', - paramName: 'request' - }); - } - - if (!oldResponse) { - // Without a two responses there is nothing to compare. - return; - } - - this._broadcastUpdate.notifyIfUpdated({ - cacheName, - oldResponse, - newResponse, - event, - url: request.url - }); - } - - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - - exports.BroadcastCacheUpdate = BroadcastCacheUpdate; - exports.Plugin = Plugin; - exports.broadcastUpdate = broadcastUpdate; - exports.responsesAreSame = responsesAreSame; - - return exports; - -}({}, workbox.core._private, workbox.core._private, workbox.core._private, workbox.core._private, workbox.core._private)); -//# sourceMappingURL=workbox-broadcast-update.dev.js.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-broadcast-update.dev.js.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-broadcast-update.dev.js.map deleted file mode 100644 index 36fc8aad8..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-broadcast-update.dev.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-broadcast-update.dev.js","sources":["../_version.mjs","../responsesAreSame.mjs","../utils/constants.mjs","../broadcastUpdate.mjs","../BroadcastCacheUpdate.mjs","../Plugin.mjs","../index.mjs"],"sourcesContent":["try{self['workbox:broadcast-update:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport './_version.mjs';\n\n/**\n * Given two `Response's`, compares several header values to see if they are\n * the same or not.\n *\n * @param {Response} firstResponse\n * @param {Response} secondResponse\n * @param {Array} headersToCheck\n * @return {boolean}\n *\n * @memberof workbox.broadcastUpdate\n * @private\n */\nconst responsesAreSame = (firstResponse, secondResponse, headersToCheck) => {\n if (process.env.NODE_ENV !== 'production') {\n if (!(firstResponse instanceof Response &&\n secondResponse instanceof Response)) {\n throw new WorkboxError('invalid-responses-are-same-args');\n }\n }\n\n const atLeastOneHeaderAvailable = headersToCheck.some((header) => {\n return firstResponse.headers.has(header) &&\n secondResponse.headers.has(header);\n });\n\n if (!atLeastOneHeaderAvailable) {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`Unable to determine where the response has been updated ` +\n `because none of the headers that would be checked are present.`);\n logger.debug(`Attempting to compare the following: `,\n firstResponse, secondResponse, headersToCheck);\n }\n\n // Just return true, indicating the that responses are the same, since we\n // can't determine otherwise.\n return true;\n }\n\n return headersToCheck.every((header) => {\n const headerStateComparison = firstResponse.headers.has(header) ===\n secondResponse.headers.has(header);\n const headerValueComparison = firstResponse.headers.get(header) ===\n secondResponse.headers.get(header);\n\n return headerStateComparison && headerValueComparison;\n });\n};\n\nexport {responsesAreSame};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\nexport const CACHE_UPDATED_MESSAGE_TYPE = 'CACHE_UPDATED';\nexport const CACHE_UPDATED_MESSAGE_META = 'workbox-broadcast-update';\nexport const DEFAULT_BROADCAST_CHANNEL_NAME = 'workbox';\nexport const DEFAULT_DEFER_NOTIFICATION_TIMEOUT = 10000;\nexport const DEFAULT_HEADERS_TO_CHECK = [\n 'content-length',\n 'etag',\n 'last-modified',\n];\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {CACHE_UPDATED_MESSAGE_TYPE, CACHE_UPDATED_MESSAGE_META}\n from './utils/constants.mjs';\n\nimport './_version.mjs';\n\n/**\n * You would not normally call this method directly; it's called automatically\n * by an instance of the {@link BroadcastCacheUpdate} class. It's exposed here\n * for the benefit of developers who would rather not use the full\n * `BroadcastCacheUpdate` implementation.\n *\n * Calling this will dispatch a message on the provided\n * {@link https://developers.google.com/web/updates/2016/09/broadcastchannel|Broadcast Channel}\n * to notify interested subscribers about a change to a cached resource.\n *\n * The message that's posted has a formation inspired by the\n * [Flux standard action](https://github.com/acdlite/flux-standard-action#introduction)\n * format like so:\n *\n * ```\n * {\n * type: 'CACHE_UPDATED',\n * meta: 'workbox-broadcast-update',\n * payload: {\n * cacheName: 'the-cache-name',\n * updatedURL: 'https://example.com/'\n * }\n * }\n * ```\n *\n * (Usage of [Flux](https://facebook.github.io/flux/) itself is not at\n * all required.)\n *\n * @param {Object} options\n * @param {string} options.cacheName The name of the cache in which the updated\n * `Response` was stored.\n * @param {string} options.url The URL associated with the updated `Response`.\n * @param {BroadcastChannel} [options.channel] The `BroadcastChannel` to use.\n * If no channel is set or the browser doesn't support the BroadcastChannel\n * api, then an attempt will be made to `postMessage` each window client.\n *\n * @memberof workbox.broadcastUpdate\n */\nconst broadcastUpdate = async ({channel, cacheName, url}) => {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(cacheName, 'string', {\n moduleName: 'workbox-broadcast-update',\n className: '~',\n funcName: 'broadcastUpdate',\n paramName: 'cacheName',\n });\n assert.isType(url, 'string', {\n moduleName: 'workbox-broadcast-update',\n className: '~',\n funcName: 'broadcastUpdate',\n paramName: 'url',\n });\n }\n\n const data = {\n type: CACHE_UPDATED_MESSAGE_TYPE,\n meta: CACHE_UPDATED_MESSAGE_META,\n payload: {\n cacheName: cacheName,\n updatedURL: url,\n },\n };\n\n if (channel) {\n channel.postMessage(data);\n } else {\n const windows = await clients.matchAll({type: 'window'});\n for (const win of windows) {\n win.postMessage(data);\n }\n }\n};\n\nexport {broadcastUpdate};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {getFriendlyURL} from 'workbox-core/_private/getFriendlyURL.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {Deferred} from 'workbox-core/_private/Deferred.mjs';\nimport {responsesAreSame} from './responsesAreSame.mjs';\nimport {broadcastUpdate} from './broadcastUpdate.mjs';\n\nimport {DEFAULT_HEADERS_TO_CHECK, DEFAULT_BROADCAST_CHANNEL_NAME,\n DEFAULT_DEFER_NOTIFICATION_TIMEOUT} from './utils/constants.mjs';\n\nimport './_version.mjs';\n\n/**\n * Uses the [Broadcast Channel API]{@link https://developers.google.com/web/updates/2016/09/broadcastchannel}\n * to notify interested parties when a cached response has been updated.\n * In browsers that do not support the Broadcast Channel API, the instance\n * falls back to sending the update via `postMessage()` to all window clients.\n *\n * For efficiency's sake, the underlying response bodies are not compared;\n * only specific response headers are checked.\n *\n * @memberof workbox.broadcastUpdate\n */\nclass BroadcastCacheUpdate {\n /**\n * Construct a BroadcastCacheUpdate instance with a specific `channelName` to\n * broadcast messages on\n *\n * @param {Object} options\n * @param {Array}\n * [options.headersToCheck=['content-length', 'etag', 'last-modified']]\n * A list of headers that will be used to determine whether the responses\n * differ.\n * @param {string} [options.channelName='workbox'] The name that will be used\n *. when creating the `BroadcastChannel`, which defaults to 'workbox' (the\n * channel name used by the `workbox-window` package).\n * @param {string} [options.deferNoticationTimeout=10000] The amount of time\n * to wait for a ready message from the window on navigation requests\n * before sending the update.\n */\n constructor({headersToCheck, channelName, deferNoticationTimeout} = {}) {\n this._headersToCheck = headersToCheck || DEFAULT_HEADERS_TO_CHECK;\n this._channelName = channelName || DEFAULT_BROADCAST_CHANNEL_NAME;\n this._deferNoticationTimeout =\n deferNoticationTimeout || DEFAULT_DEFER_NOTIFICATION_TIMEOUT;\n\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(this._channelName, 'string', {\n moduleName: 'workbox-broadcast-update',\n className: 'BroadcastCacheUpdate',\n funcName: 'constructor',\n paramName: 'channelName',\n });\n assert.isArray(this._headersToCheck, {\n moduleName: 'workbox-broadcast-update',\n className: 'BroadcastCacheUpdate',\n funcName: 'constructor',\n paramName: 'headersToCheck',\n });\n }\n\n this._initWindowReadyDeferreds();\n }\n\n /**\n * Compare two [Responses](https://developer.mozilla.org/en-US/docs/Web/API/Response)\n * and send a message via the\n * {@link https://developers.google.com/web/updates/2016/09/broadcastchannel|Broadcast Channel API}\n * if they differ.\n *\n * Neither of the Responses can be {@link http://stackoverflow.com/questions/39109789|opaque}.\n *\n * @param {Object} options\n * @param {Response} options.oldResponse Cached response to compare.\n * @param {Response} options.newResponse Possibly updated response to compare.\n * @param {string} options.url The URL of the request.\n * @param {string} options.cacheName Name of the cache the responses belong\n * to. This is included in the broadcast message.\n * @param {Event} [options.event] event An optional event that triggered\n * this possible cache update.\n * @return {Promise} Resolves once the update is sent.\n */\n notifyIfUpdated({oldResponse, newResponse, url, cacheName, event}) {\n if (!responsesAreSame(oldResponse, newResponse, this._headersToCheck)) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Newer response found (and cached) for:`, url);\n }\n\n const sendUpdate = async () => {\n // In the case of a navigation request, the requesting page will likely\n // not have loaded its JavaScript in time to recevied the update\n // notification, so we defer it until ready (or we timeout waiting).\n if (event && event.request && event.request.mode === 'navigate') {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Original request was a navigation request, ` +\n `waiting for a ready message from the window`, event.request);\n }\n await this._windowReadyOrTimeout(event);\n }\n await this._broadcastUpdate({\n channel: this._getChannel(),\n cacheName,\n url,\n });\n };\n\n // Send the update and ensure the SW stays alive until it's sent.\n const done = sendUpdate();\n\n if (event) {\n try {\n event.waitUntil(done);\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`Unable to ensure service worker stays alive ` +\n `when broadcasting cache update for ` +\n `${getFriendlyURL(event.request.url)}'.`);\n }\n }\n }\n return done;\n }\n }\n\n /**\n * NOTE: this is exposed on the instance primarily so it can be spied on\n * in tests.\n *\n * @param {Object} opts\n * @private\n */\n async _broadcastUpdate(opts) {\n await broadcastUpdate(opts);\n }\n\n /**\n * @return {BroadcastChannel|undefined} The BroadcastChannel instance used for\n * broadcasting updates, or undefined if the browser doesn't support the\n * Broadcast Channel API.\n *\n * @private\n */\n _getChannel() {\n if (('BroadcastChannel' in self) && !this._channel) {\n this._channel = new BroadcastChannel(this._channelName);\n }\n return this._channel;\n }\n\n /**\n * Waits for a message from the window indicating that it's capable of\n * receiving broadcasts. By default, this will only wait for the amount of\n * time specified via the `deferNoticationTimeout` option.\n *\n * @param {Event} event The navigation fetch event.\n * @return {Promise}\n * @private\n */\n _windowReadyOrTimeout(event) {\n if (!this._navigationEventsDeferreds.has(event)) {\n const deferred = new Deferred();\n\n // Set the deferred on the `_navigationEventsDeferreds` map so it will\n // be resolved when the next ready message event comes.\n this._navigationEventsDeferreds.set(event, deferred);\n\n // But don't wait too long for the message since it may never come.\n const timeout = setTimeout(() => {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Timed out after ${this._deferNoticationTimeout}` +\n `ms waiting for message from window`);\n }\n deferred.resolve();\n }, this._deferNoticationTimeout);\n\n // Ensure the timeout is cleared if the deferred promise is resolved.\n deferred.promise.then(() => clearTimeout(timeout));\n }\n return this._navigationEventsDeferreds.get(event).promise;\n }\n\n /**\n * Creates a mapping between navigation fetch events and deferreds, and adds\n * a listener for message events from the window. When message events arrive,\n * all deferreds in the mapping are resolved.\n *\n * Note: it would be easier if we could only resolve the deferred of\n * navigation fetch event whose client ID matched the source ID of the\n * message event, but currently client IDs are not exposed on navigation\n * fetch events: https://www.chromestatus.com/feature/4846038800138240\n *\n * @private\n */\n _initWindowReadyDeferreds() {\n // A mapping between navigation events and their deferreds.\n this._navigationEventsDeferreds = new Map();\n\n // The message listener needs to be added in the initial run of the\n // service worker, but since we don't actually need to be listening for\n // messages until the cache updates, we only invoke the callback if set.\n self.addEventListener('message', (event) => {\n if (event.data.type === 'WINDOW_READY' &&\n event.data.meta === 'workbox-window' &&\n this._navigationEventsDeferreds.size > 0) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Received WINDOW_READY event: `, event);\n }\n // Resolve any pending deferreds.\n for (const deferred of this._navigationEventsDeferreds.values()) {\n deferred.resolve();\n }\n this._navigationEventsDeferreds.clear();\n }\n });\n }\n}\n\nexport {BroadcastCacheUpdate};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {BroadcastCacheUpdate} from './BroadcastCacheUpdate.mjs';\nimport './_version.mjs';\n\n/**\n * This plugin will automatically broadcast a message whenever a cached response\n * is updated.\n *\n * @memberof workbox.broadcastUpdate\n */\nclass Plugin {\n /**\n * Construct a BroadcastCacheUpdate instance with the passed options and\n * calls its `notifyIfUpdated()` method whenever the plugin's\n * `cacheDidUpdate` callback is invoked.\n *\n * @param {Object} options\n * @param {Array}\n * [options.headersToCheck=['content-length', 'etag', 'last-modified']]\n * A list of headers that will be used to determine whether the responses\n * differ.\n * @param {string} [options.channelName='workbox'] The name that will be used\n *. when creating the `BroadcastChannel`, which defaults to 'workbox' (the\n * channel name used by the `workbox-window` package).\n * @param {string} [options.deferNoticationTimeout=10000] The amount of time\n * to wait for a ready message from the window on navigation requests\n * before sending the update.\n */\n constructor(options) {\n this._broadcastUpdate = new BroadcastCacheUpdate(options);\n }\n\n /**\n * A \"lifecycle\" callback that will be triggered automatically by the\n * `workbox-sw` and `workbox-runtime-caching` handlers when an entry is\n * added to a cache.\n *\n * @private\n * @param {Object} options The input object to this function.\n * @param {string} options.cacheName Name of the cache being updated.\n * @param {Response} [options.oldResponse] The previous cached value, if any.\n * @param {Response} options.newResponse The new value in the cache.\n * @param {Request} options.request The request that triggered the udpate.\n * @param {Request} [options.event] The event that triggered the update.\n */\n cacheDidUpdate({cacheName, oldResponse, newResponse, request, event}) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(cacheName, 'string', {\n moduleName: 'workbox-broadcast-update',\n className: 'Plugin',\n funcName: 'cacheDidUpdate',\n paramName: 'cacheName',\n });\n assert.isInstance(newResponse, Response, {\n moduleName: 'workbox-broadcast-update',\n className: 'Plugin',\n funcName: 'cacheDidUpdate',\n paramName: 'newResponse',\n });\n assert.isInstance(request, Request, {\n moduleName: 'workbox-broadcast-update',\n className: 'Plugin',\n funcName: 'cacheDidUpdate',\n paramName: 'request',\n });\n }\n\n if (!oldResponse) {\n // Without a two responses there is nothing to compare.\n return;\n }\n this._broadcastUpdate.notifyIfUpdated({\n cacheName,\n oldResponse,\n newResponse,\n event,\n url: request.url,\n });\n }\n}\n\nexport {Plugin};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {BroadcastCacheUpdate} from './BroadcastCacheUpdate.mjs';\nimport {Plugin} from './Plugin.mjs';\nimport {broadcastUpdate} from './broadcastUpdate.mjs';\nimport {responsesAreSame} from './responsesAreSame.mjs';\nimport './_version.mjs';\n\n\n/**\n * @namespace workbox.broadcastUpdate\n */\n\nexport {\n BroadcastCacheUpdate,\n Plugin,\n broadcastUpdate,\n responsesAreSame,\n};\n"],"names":["self","_","e","responsesAreSame","firstResponse","secondResponse","headersToCheck","Response","WorkboxError","atLeastOneHeaderAvailable","some","header","headers","has","logger","warn","debug","every","headerStateComparison","headerValueComparison","get","CACHE_UPDATED_MESSAGE_TYPE","CACHE_UPDATED_MESSAGE_META","DEFAULT_BROADCAST_CHANNEL_NAME","DEFAULT_DEFER_NOTIFICATION_TIMEOUT","DEFAULT_HEADERS_TO_CHECK","broadcastUpdate","channel","cacheName","url","assert","isType","moduleName","className","funcName","paramName","data","type","meta","payload","updatedURL","postMessage","windows","clients","matchAll","win","BroadcastCacheUpdate","constructor","channelName","deferNoticationTimeout","_headersToCheck","_channelName","_deferNoticationTimeout","isArray","_initWindowReadyDeferreds","notifyIfUpdated","oldResponse","newResponse","event","log","sendUpdate","request","mode","_windowReadyOrTimeout","_broadcastUpdate","_getChannel","done","waitUntil","error","getFriendlyURL","opts","_channel","BroadcastChannel","_navigationEventsDeferreds","deferred","Deferred","set","timeout","setTimeout","resolve","promise","then","clearTimeout","Map","addEventListener","size","values","clear","Plugin","options","cacheDidUpdate","isInstance","Request"],"mappings":"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"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-broadcast-update.prod.js b/pr-preview/pr-1029/workbox-v4.3.1/workbox-broadcast-update.prod.js deleted file mode 100644 index b87c70f2a..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-broadcast-update.prod.js +++ /dev/null @@ -1,2 +0,0 @@ -this.workbox=this.workbox||{},this.workbox.broadcastUpdate=function(e,t){"use strict";try{self["workbox:broadcast-update:4.3.1"]&&_()}catch(e){}const s=(e,t,s)=>{return!s.some(s=>e.headers.has(s)&&t.headers.has(s))||s.every(s=>{const n=e.headers.has(s)===t.headers.has(s),a=e.headers.get(s)===t.headers.get(s);return n&&a})},n="workbox",a=1e4,i=["content-length","etag","last-modified"],o=async({channel:e,cacheName:t,url:s})=>{const n={type:"CACHE_UPDATED",meta:"workbox-broadcast-update",payload:{cacheName:t,updatedURL:s}};if(e)e.postMessage(n);else{const e=await clients.matchAll({type:"window"});for(const t of e)t.postMessage(n)}};class c{constructor({headersToCheck:e,channelName:t,deferNoticationTimeout:s}={}){this.t=e||i,this.s=t||n,this.i=s||a,this.o()}notifyIfUpdated({oldResponse:e,newResponse:t,url:n,cacheName:a,event:i}){if(!s(e,t,this.t)){const e=(async()=>{i&&i.request&&"navigate"===i.request.mode&&await this.h(i),await this.l({channel:this.u(),cacheName:a,url:n})})();if(i)try{i.waitUntil(e)}catch(e){}return e}}async l(e){await o(e)}u(){return"BroadcastChannel"in self&&!this.p&&(this.p=new BroadcastChannel(this.s)),this.p}h(e){if(!this.m.has(e)){const s=new t.Deferred;this.m.set(e,s);const n=setTimeout(()=>{s.resolve()},this.i);s.promise.then(()=>clearTimeout(n))}return this.m.get(e).promise}o(){this.m=new Map,self.addEventListener("message",e=>{if("WINDOW_READY"===e.data.type&&"workbox-window"===e.data.meta&&this.m.size>0){for(const e of this.m.values())e.resolve();this.m.clear()}})}}return e.BroadcastCacheUpdate=c,e.Plugin=class{constructor(e){this.l=new c(e)}cacheDidUpdate({cacheName:e,oldResponse:t,newResponse:s,request:n,event:a}){t&&this.l.notifyIfUpdated({cacheName:e,oldResponse:t,newResponse:s,event:a,url:n.url})}},e.broadcastUpdate=o,e.responsesAreSame=s,e}({},workbox.core._private); -//# sourceMappingURL=workbox-broadcast-update.prod.js.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-broadcast-update.prod.js.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-broadcast-update.prod.js.map deleted file mode 100644 index 537aee019..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-broadcast-update.prod.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-broadcast-update.prod.js","sources":["../_version.mjs","../responsesAreSame.mjs","../utils/constants.mjs","../broadcastUpdate.mjs","../BroadcastCacheUpdate.mjs","../Plugin.mjs"],"sourcesContent":["try{self['workbox:broadcast-update:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport './_version.mjs';\n\n/**\n * Given two `Response's`, compares several header values to see if they are\n * the same or not.\n *\n * @param {Response} firstResponse\n * @param {Response} secondResponse\n * @param {Array} headersToCheck\n * @return {boolean}\n *\n * @memberof workbox.broadcastUpdate\n * @private\n */\nconst responsesAreSame = (firstResponse, secondResponse, headersToCheck) => {\n if (process.env.NODE_ENV !== 'production') {\n if (!(firstResponse instanceof Response &&\n secondResponse instanceof Response)) {\n throw new WorkboxError('invalid-responses-are-same-args');\n }\n }\n\n const atLeastOneHeaderAvailable = headersToCheck.some((header) => {\n return firstResponse.headers.has(header) &&\n secondResponse.headers.has(header);\n });\n\n if (!atLeastOneHeaderAvailable) {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`Unable to determine where the response has been updated ` +\n `because none of the headers that would be checked are present.`);\n logger.debug(`Attempting to compare the following: `,\n firstResponse, secondResponse, headersToCheck);\n }\n\n // Just return true, indicating the that responses are the same, since we\n // can't determine otherwise.\n return true;\n }\n\n return headersToCheck.every((header) => {\n const headerStateComparison = firstResponse.headers.has(header) ===\n secondResponse.headers.has(header);\n const headerValueComparison = firstResponse.headers.get(header) ===\n secondResponse.headers.get(header);\n\n return headerStateComparison && headerValueComparison;\n });\n};\n\nexport {responsesAreSame};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\nexport const CACHE_UPDATED_MESSAGE_TYPE = 'CACHE_UPDATED';\nexport const CACHE_UPDATED_MESSAGE_META = 'workbox-broadcast-update';\nexport const DEFAULT_BROADCAST_CHANNEL_NAME = 'workbox';\nexport const DEFAULT_DEFER_NOTIFICATION_TIMEOUT = 10000;\nexport const DEFAULT_HEADERS_TO_CHECK = [\n 'content-length',\n 'etag',\n 'last-modified',\n];\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {CACHE_UPDATED_MESSAGE_TYPE, CACHE_UPDATED_MESSAGE_META}\n from './utils/constants.mjs';\n\nimport './_version.mjs';\n\n/**\n * You would not normally call this method directly; it's called automatically\n * by an instance of the {@link BroadcastCacheUpdate} class. It's exposed here\n * for the benefit of developers who would rather not use the full\n * `BroadcastCacheUpdate` implementation.\n *\n * Calling this will dispatch a message on the provided\n * {@link https://developers.google.com/web/updates/2016/09/broadcastchannel|Broadcast Channel}\n * to notify interested subscribers about a change to a cached resource.\n *\n * The message that's posted has a formation inspired by the\n * [Flux standard action](https://github.com/acdlite/flux-standard-action#introduction)\n * format like so:\n *\n * ```\n * {\n * type: 'CACHE_UPDATED',\n * meta: 'workbox-broadcast-update',\n * payload: {\n * cacheName: 'the-cache-name',\n * updatedURL: 'https://example.com/'\n * }\n * }\n * ```\n *\n * (Usage of [Flux](https://facebook.github.io/flux/) itself is not at\n * all required.)\n *\n * @param {Object} options\n * @param {string} options.cacheName The name of the cache in which the updated\n * `Response` was stored.\n * @param {string} options.url The URL associated with the updated `Response`.\n * @param {BroadcastChannel} [options.channel] The `BroadcastChannel` to use.\n * If no channel is set or the browser doesn't support the BroadcastChannel\n * api, then an attempt will be made to `postMessage` each window client.\n *\n * @memberof workbox.broadcastUpdate\n */\nconst broadcastUpdate = async ({channel, cacheName, url}) => {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(cacheName, 'string', {\n moduleName: 'workbox-broadcast-update',\n className: '~',\n funcName: 'broadcastUpdate',\n paramName: 'cacheName',\n });\n assert.isType(url, 'string', {\n moduleName: 'workbox-broadcast-update',\n className: '~',\n funcName: 'broadcastUpdate',\n paramName: 'url',\n });\n }\n\n const data = {\n type: CACHE_UPDATED_MESSAGE_TYPE,\n meta: CACHE_UPDATED_MESSAGE_META,\n payload: {\n cacheName: cacheName,\n updatedURL: url,\n },\n };\n\n if (channel) {\n channel.postMessage(data);\n } else {\n const windows = await clients.matchAll({type: 'window'});\n for (const win of windows) {\n win.postMessage(data);\n }\n }\n};\n\nexport {broadcastUpdate};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {getFriendlyURL} from 'workbox-core/_private/getFriendlyURL.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {Deferred} from 'workbox-core/_private/Deferred.mjs';\nimport {responsesAreSame} from './responsesAreSame.mjs';\nimport {broadcastUpdate} from './broadcastUpdate.mjs';\n\nimport {DEFAULT_HEADERS_TO_CHECK, DEFAULT_BROADCAST_CHANNEL_NAME,\n DEFAULT_DEFER_NOTIFICATION_TIMEOUT} from './utils/constants.mjs';\n\nimport './_version.mjs';\n\n/**\n * Uses the [Broadcast Channel API]{@link https://developers.google.com/web/updates/2016/09/broadcastchannel}\n * to notify interested parties when a cached response has been updated.\n * In browsers that do not support the Broadcast Channel API, the instance\n * falls back to sending the update via `postMessage()` to all window clients.\n *\n * For efficiency's sake, the underlying response bodies are not compared;\n * only specific response headers are checked.\n *\n * @memberof workbox.broadcastUpdate\n */\nclass BroadcastCacheUpdate {\n /**\n * Construct a BroadcastCacheUpdate instance with a specific `channelName` to\n * broadcast messages on\n *\n * @param {Object} options\n * @param {Array}\n * [options.headersToCheck=['content-length', 'etag', 'last-modified']]\n * A list of headers that will be used to determine whether the responses\n * differ.\n * @param {string} [options.channelName='workbox'] The name that will be used\n *. when creating the `BroadcastChannel`, which defaults to 'workbox' (the\n * channel name used by the `workbox-window` package).\n * @param {string} [options.deferNoticationTimeout=10000] The amount of time\n * to wait for a ready message from the window on navigation requests\n * before sending the update.\n */\n constructor({headersToCheck, channelName, deferNoticationTimeout} = {}) {\n this._headersToCheck = headersToCheck || DEFAULT_HEADERS_TO_CHECK;\n this._channelName = channelName || DEFAULT_BROADCAST_CHANNEL_NAME;\n this._deferNoticationTimeout =\n deferNoticationTimeout || DEFAULT_DEFER_NOTIFICATION_TIMEOUT;\n\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(this._channelName, 'string', {\n moduleName: 'workbox-broadcast-update',\n className: 'BroadcastCacheUpdate',\n funcName: 'constructor',\n paramName: 'channelName',\n });\n assert.isArray(this._headersToCheck, {\n moduleName: 'workbox-broadcast-update',\n className: 'BroadcastCacheUpdate',\n funcName: 'constructor',\n paramName: 'headersToCheck',\n });\n }\n\n this._initWindowReadyDeferreds();\n }\n\n /**\n * Compare two [Responses](https://developer.mozilla.org/en-US/docs/Web/API/Response)\n * and send a message via the\n * {@link https://developers.google.com/web/updates/2016/09/broadcastchannel|Broadcast Channel API}\n * if they differ.\n *\n * Neither of the Responses can be {@link http://stackoverflow.com/questions/39109789|opaque}.\n *\n * @param {Object} options\n * @param {Response} options.oldResponse Cached response to compare.\n * @param {Response} options.newResponse Possibly updated response to compare.\n * @param {string} options.url The URL of the request.\n * @param {string} options.cacheName Name of the cache the responses belong\n * to. This is included in the broadcast message.\n * @param {Event} [options.event] event An optional event that triggered\n * this possible cache update.\n * @return {Promise} Resolves once the update is sent.\n */\n notifyIfUpdated({oldResponse, newResponse, url, cacheName, event}) {\n if (!responsesAreSame(oldResponse, newResponse, this._headersToCheck)) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Newer response found (and cached) for:`, url);\n }\n\n const sendUpdate = async () => {\n // In the case of a navigation request, the requesting page will likely\n // not have loaded its JavaScript in time to recevied the update\n // notification, so we defer it until ready (or we timeout waiting).\n if (event && event.request && event.request.mode === 'navigate') {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Original request was a navigation request, ` +\n `waiting for a ready message from the window`, event.request);\n }\n await this._windowReadyOrTimeout(event);\n }\n await this._broadcastUpdate({\n channel: this._getChannel(),\n cacheName,\n url,\n });\n };\n\n // Send the update and ensure the SW stays alive until it's sent.\n const done = sendUpdate();\n\n if (event) {\n try {\n event.waitUntil(done);\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`Unable to ensure service worker stays alive ` +\n `when broadcasting cache update for ` +\n `${getFriendlyURL(event.request.url)}'.`);\n }\n }\n }\n return done;\n }\n }\n\n /**\n * NOTE: this is exposed on the instance primarily so it can be spied on\n * in tests.\n *\n * @param {Object} opts\n * @private\n */\n async _broadcastUpdate(opts) {\n await broadcastUpdate(opts);\n }\n\n /**\n * @return {BroadcastChannel|undefined} The BroadcastChannel instance used for\n * broadcasting updates, or undefined if the browser doesn't support the\n * Broadcast Channel API.\n *\n * @private\n */\n _getChannel() {\n if (('BroadcastChannel' in self) && !this._channel) {\n this._channel = new BroadcastChannel(this._channelName);\n }\n return this._channel;\n }\n\n /**\n * Waits for a message from the window indicating that it's capable of\n * receiving broadcasts. By default, this will only wait for the amount of\n * time specified via the `deferNoticationTimeout` option.\n *\n * @param {Event} event The navigation fetch event.\n * @return {Promise}\n * @private\n */\n _windowReadyOrTimeout(event) {\n if (!this._navigationEventsDeferreds.has(event)) {\n const deferred = new Deferred();\n\n // Set the deferred on the `_navigationEventsDeferreds` map so it will\n // be resolved when the next ready message event comes.\n this._navigationEventsDeferreds.set(event, deferred);\n\n // But don't wait too long for the message since it may never come.\n const timeout = setTimeout(() => {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Timed out after ${this._deferNoticationTimeout}` +\n `ms waiting for message from window`);\n }\n deferred.resolve();\n }, this._deferNoticationTimeout);\n\n // Ensure the timeout is cleared if the deferred promise is resolved.\n deferred.promise.then(() => clearTimeout(timeout));\n }\n return this._navigationEventsDeferreds.get(event).promise;\n }\n\n /**\n * Creates a mapping between navigation fetch events and deferreds, and adds\n * a listener for message events from the window. When message events arrive,\n * all deferreds in the mapping are resolved.\n *\n * Note: it would be easier if we could only resolve the deferred of\n * navigation fetch event whose client ID matched the source ID of the\n * message event, but currently client IDs are not exposed on navigation\n * fetch events: https://www.chromestatus.com/feature/4846038800138240\n *\n * @private\n */\n _initWindowReadyDeferreds() {\n // A mapping between navigation events and their deferreds.\n this._navigationEventsDeferreds = new Map();\n\n // The message listener needs to be added in the initial run of the\n // service worker, but since we don't actually need to be listening for\n // messages until the cache updates, we only invoke the callback if set.\n self.addEventListener('message', (event) => {\n if (event.data.type === 'WINDOW_READY' &&\n event.data.meta === 'workbox-window' &&\n this._navigationEventsDeferreds.size > 0) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Received WINDOW_READY event: `, event);\n }\n // Resolve any pending deferreds.\n for (const deferred of this._navigationEventsDeferreds.values()) {\n deferred.resolve();\n }\n this._navigationEventsDeferreds.clear();\n }\n });\n }\n}\n\nexport {BroadcastCacheUpdate};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {BroadcastCacheUpdate} from './BroadcastCacheUpdate.mjs';\nimport './_version.mjs';\n\n/**\n * This plugin will automatically broadcast a message whenever a cached response\n * is updated.\n *\n * @memberof workbox.broadcastUpdate\n */\nclass Plugin {\n /**\n * Construct a BroadcastCacheUpdate instance with the passed options and\n * calls its `notifyIfUpdated()` method whenever the plugin's\n * `cacheDidUpdate` callback is invoked.\n *\n * @param {Object} options\n * @param {Array}\n * [options.headersToCheck=['content-length', 'etag', 'last-modified']]\n * A list of headers that will be used to determine whether the responses\n * differ.\n * @param {string} [options.channelName='workbox'] The name that will be used\n *. when creating the `BroadcastChannel`, which defaults to 'workbox' (the\n * channel name used by the `workbox-window` package).\n * @param {string} [options.deferNoticationTimeout=10000] The amount of time\n * to wait for a ready message from the window on navigation requests\n * before sending the update.\n */\n constructor(options) {\n this._broadcastUpdate = new BroadcastCacheUpdate(options);\n }\n\n /**\n * A \"lifecycle\" callback that will be triggered automatically by the\n * `workbox-sw` and `workbox-runtime-caching` handlers when an entry is\n * added to a cache.\n *\n * @private\n * @param {Object} options The input object to this function.\n * @param {string} options.cacheName Name of the cache being updated.\n * @param {Response} [options.oldResponse] The previous cached value, if any.\n * @param {Response} options.newResponse The new value in the cache.\n * @param {Request} options.request The request that triggered the udpate.\n * @param {Request} [options.event] The event that triggered the update.\n */\n cacheDidUpdate({cacheName, oldResponse, newResponse, request, event}) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(cacheName, 'string', {\n moduleName: 'workbox-broadcast-update',\n className: 'Plugin',\n funcName: 'cacheDidUpdate',\n paramName: 'cacheName',\n });\n assert.isInstance(newResponse, Response, {\n moduleName: 'workbox-broadcast-update',\n className: 'Plugin',\n funcName: 'cacheDidUpdate',\n paramName: 'newResponse',\n });\n assert.isInstance(request, Request, {\n moduleName: 'workbox-broadcast-update',\n className: 'Plugin',\n funcName: 'cacheDidUpdate',\n paramName: 'request',\n });\n }\n\n if (!oldResponse) {\n // Without a two responses there is nothing to compare.\n return;\n }\n this._broadcastUpdate.notifyIfUpdated({\n cacheName,\n oldResponse,\n newResponse,\n event,\n url: request.url,\n });\n }\n}\n\nexport {Plugin};\n"],"names":["self","_","e","responsesAreSame","firstResponse","secondResponse","headersToCheck","some","header","headers","has","every","headerStateComparison","headerValueComparison","get","DEFAULT_BROADCAST_CHANNEL_NAME","DEFAULT_DEFER_NOTIFICATION_TIMEOUT","DEFAULT_HEADERS_TO_CHECK","broadcastUpdate","async","channel","cacheName","url","data","type","meta","payload","updatedURL","postMessage","windows","clients","matchAll","win","BroadcastCacheUpdate","constructor","channelName","deferNoticationTimeout","_headersToCheck","_channelName","_deferNoticationTimeout","_initWindowReadyDeferreds","notifyIfUpdated","oldResponse","newResponse","event","this","done","request","mode","_windowReadyOrTimeout","_broadcastUpdate","_getChannel","sendUpdate","waitUntil","error","opts","_channel","BroadcastChannel","_navigationEventsDeferreds","deferred","Deferred","set","timeout","setTimeout","resolve","promise","then","clearTimeout","Map","addEventListener","size","values","clear","options","cacheDidUpdate"],"mappings":"sFAAA,IAAIA,KAAK,mCAAmCC,IAAI,MAAMC,UCwBhDC,EAAmB,CAACC,EAAeC,EAAgBC,YAQrBA,EAAeC,KAAMC,GAC9CJ,EAAcK,QAAQC,IAAIF,IAC/BH,EAAeI,QAAQC,IAAIF,KAgBxBF,EAAeK,MAAOH,UACrBI,EAAwBR,EAAcK,QAAQC,IAAIF,KACtDH,EAAeI,QAAQC,IAAIF,GACvBK,EAAwBT,EAAcK,QAAQK,IAAIN,KACtDH,EAAeI,QAAQK,IAAIN,UAEtBI,GAAyBC,KC5CvBE,EAAiC,UACjCC,EAAqC,IACrCC,EAA2B,CACtC,iBACA,OACA,iBCmCIC,EAAkBC,OAAQC,QAAAA,EAASC,UAAAA,EAAWC,IAAAA,YAgB5CC,EAAO,CACXC,KD3DsC,gBC4DtCC,KD3DsC,2BC4DtCC,QAAS,CACPL,UAAWA,EACXM,WAAYL,OAIZF,EACFA,EAAQQ,YAAYL,OACf,OACCM,QAAgBC,QAAQC,SAAS,CAACP,KAAM,eACzC,MAAMQ,KAAOH,EAChBG,EAAIJ,YAAYL,KCnDtB,MAAMU,EAiBJC,aAAY5B,eAACA,EAAD6B,YAAiBA,EAAjBC,uBAA8BA,GAA0B,SAC7DC,EAAkB/B,GAAkBW,OACpCqB,EAAeH,GAAepB,OAC9BwB,EACDH,GAA0BpB,OAiBzBwB,IAqBPC,iBAAgBC,YAACA,EAADC,YAAcA,EAAdrB,IAA2BA,EAA3BD,UAAgCA,EAAhCuB,MAA2CA,QACpDzC,EAAiBuC,EAAaC,EAAaE,KAAKR,GAAkB,OAwB/DS,EAnBa3B,WAIbyB,GAASA,EAAMG,SAAkC,aAAvBH,EAAMG,QAAQC,YAKpCH,KAAKI,EAAsBL,SAE7BC,KAAKK,EAAiB,CAC1B9B,QAASyB,KAAKM,IACd9B,UAAAA,EACAC,IAAAA,KAKS8B,MAETR,MAEAA,EAAMS,UAAUP,GAChB,MAAOQ,WAQJR,WAWYS,SACfrC,EAAgBqC,GAUxBJ,UACO,qBAAsBnD,OAAU6C,KAAKW,SACnCA,EAAW,IAAIC,iBAAiBZ,KAAKP,IAErCO,KAAKW,EAYdP,EAAsBL,OACfC,KAAKa,EAA2BhD,IAAIkC,GAAQ,OACzCe,EAAW,IAAIC,gBAIhBF,EAA2BG,IAAIjB,EAAOe,SAGrCG,EAAUC,WAAW,KAKzBJ,EAASK,WACRnB,KAAKN,GAGRoB,EAASM,QAAQC,KAAK,IAAMC,aAAaL,WAEpCjB,KAAKa,EAA2B5C,IAAI8B,GAAOqB,QAepDzB,SAEOkB,EAA6B,IAAIU,IAKtCpE,KAAKqE,iBAAiB,UAAYzB,OACR,iBAApBA,EAAMrB,KAAKC,MACS,mBAApBoB,EAAMrB,KAAKE,MACXoB,KAAKa,EAA2BY,KAAO,EAAG,KAKvC,MAAMX,KAAYd,KAAKa,EAA2Ba,SACrDZ,EAASK,eAENN,EAA2Bc,qDCzMxC,MAkBEtC,YAAYuC,QACLvB,EAAmB,IAAIjB,EAAqBwC,GAgBnDC,gBAAerD,UAACA,EAADqB,YAAYA,EAAZC,YAAyBA,EAAzBI,QAAsCA,EAAtCH,MAA+CA,IAsBvDF,QAIAQ,EAAiBT,gBAAgB,CACpCpB,UAAAA,EACAqB,YAAAA,EACAC,YAAAA,EACAC,MAAAA,EACAtB,IAAKyB,EAAQzB"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-cacheable-response.dev.js b/pr-preview/pr-1029/workbox-v4.3.1/workbox-cacheable-response.dev.js deleted file mode 100644 index 54a2e4999..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-cacheable-response.dev.js +++ /dev/null @@ -1,200 +0,0 @@ -this.workbox = this.workbox || {}; -this.workbox.cacheableResponse = (function (exports, WorkboxError_mjs, assert_mjs, getFriendlyURL_mjs, logger_mjs) { - 'use strict'; - - try { - self['workbox:cacheable-response:4.3.1'] && _(); - } catch (e) {} // eslint-disable-line - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * This class allows you to set up rules determining what - * status codes and/or headers need to be present in order for a - * [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) - * to be considered cacheable. - * - * @memberof workbox.cacheableResponse - */ - - class CacheableResponse { - /** - * To construct a new CacheableResponse instance you must provide at least - * one of the `config` properties. - * - * If both `statuses` and `headers` are specified, then both conditions must - * be met for the `Response` to be considered cacheable. - * - * @param {Object} config - * @param {Array} [config.statuses] One or more status codes that a - * `Response` can have and be considered cacheable. - * @param {Object} [config.headers] A mapping of header names - * and expected values that a `Response` can have and be considered cacheable. - * If multiple headers are provided, only one needs to be present. - */ - constructor(config = {}) { - { - if (!(config.statuses || config.headers)) { - throw new WorkboxError_mjs.WorkboxError('statuses-or-headers-required', { - moduleName: 'workbox-cacheable-response', - className: 'CacheableResponse', - funcName: 'constructor' - }); - } - - if (config.statuses) { - assert_mjs.assert.isArray(config.statuses, { - moduleName: 'workbox-cacheable-response', - className: 'CacheableResponse', - funcName: 'constructor', - paramName: 'config.statuses' - }); - } - - if (config.headers) { - assert_mjs.assert.isType(config.headers, 'object', { - moduleName: 'workbox-cacheable-response', - className: 'CacheableResponse', - funcName: 'constructor', - paramName: 'config.headers' - }); - } - } - - this._statuses = config.statuses; - this._headers = config.headers; - } - /** - * Checks a response to see whether it's cacheable or not, based on this - * object's configuration. - * - * @param {Response} response The response whose cacheability is being - * checked. - * @return {boolean} `true` if the `Response` is cacheable, and `false` - * otherwise. - */ - - - isResponseCacheable(response) { - { - assert_mjs.assert.isInstance(response, Response, { - moduleName: 'workbox-cacheable-response', - className: 'CacheableResponse', - funcName: 'isResponseCacheable', - paramName: 'response' - }); - } - - let cacheable = true; - - if (this._statuses) { - cacheable = this._statuses.includes(response.status); - } - - if (this._headers && cacheable) { - cacheable = Object.keys(this._headers).some(headerName => { - return response.headers.get(headerName) === this._headers[headerName]; - }); - } - - { - if (!cacheable) { - logger_mjs.logger.groupCollapsed(`The request for ` + `'${getFriendlyURL_mjs.getFriendlyURL(response.url)}' returned a response that does ` + `not meet the criteria for being cached.`); - logger_mjs.logger.groupCollapsed(`View cacheability criteria here.`); - logger_mjs.logger.log(`Cacheable statuses: ` + JSON.stringify(this._statuses)); - logger_mjs.logger.log(`Cacheable headers: ` + JSON.stringify(this._headers, null, 2)); - logger_mjs.logger.groupEnd(); - const logFriendlyHeaders = {}; - response.headers.forEach((value, key) => { - logFriendlyHeaders[key] = value; - }); - logger_mjs.logger.groupCollapsed(`View response status and headers here.`); - logger_mjs.logger.log(`Response status: ` + response.status); - logger_mjs.logger.log(`Response headers: ` + JSON.stringify(logFriendlyHeaders, null, 2)); - logger_mjs.logger.groupEnd(); - logger_mjs.logger.groupCollapsed(`View full response details here.`); - logger_mjs.logger.log(response.headers); - logger_mjs.logger.log(response); - logger_mjs.logger.groupEnd(); - logger_mjs.logger.groupEnd(); - } - } - - return cacheable; - } - - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * A class implementing the `cacheWillUpdate` lifecycle callback. This makes it - * easier to add in cacheability checks to requests made via Workbox's built-in - * strategies. - * - * @memberof workbox.cacheableResponse - */ - - class Plugin { - /** - * To construct a new cacheable response Plugin instance you must provide at - * least one of the `config` properties. - * - * If both `statuses` and `headers` are specified, then both conditions must - * be met for the `Response` to be considered cacheable. - * - * @param {Object} config - * @param {Array} [config.statuses] One or more status codes that a - * `Response` can have and be considered cacheable. - * @param {Object} [config.headers] A mapping of header names - * and expected values that a `Response` can have and be considered cacheable. - * If multiple headers are provided, only one needs to be present. - */ - constructor(config) { - this._cacheableResponse = new CacheableResponse(config); - } - /** - * @param {Object} options - * @param {Response} options.response - * @return {boolean} - * @private - */ - - - cacheWillUpdate({ - response - }) { - if (this._cacheableResponse.isResponseCacheable(response)) { - return response; - } - - return null; - } - - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - - exports.CacheableResponse = CacheableResponse; - exports.Plugin = Plugin; - - return exports; - -}({}, workbox.core._private, workbox.core._private, workbox.core._private, workbox.core._private)); -//# sourceMappingURL=workbox-cacheable-response.dev.js.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-cacheable-response.dev.js.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-cacheable-response.dev.js.map deleted file mode 100644 index 86bc68904..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-cacheable-response.dev.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-cacheable-response.dev.js","sources":["../_version.mjs","../CacheableResponse.mjs","../Plugin.mjs","../index.mjs"],"sourcesContent":["try{self['workbox:cacheable-response:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {getFriendlyURL} from 'workbox-core/_private/getFriendlyURL.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport './_version.mjs';\n\n/**\n * This class allows you to set up rules determining what\n * status codes and/or headers need to be present in order for a\n * [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response)\n * to be considered cacheable.\n *\n * @memberof workbox.cacheableResponse\n */\nclass CacheableResponse {\n /**\n * To construct a new CacheableResponse instance you must provide at least\n * one of the `config` properties.\n *\n * If both `statuses` and `headers` are specified, then both conditions must\n * be met for the `Response` to be considered cacheable.\n *\n * @param {Object} config\n * @param {Array} [config.statuses] One or more status codes that a\n * `Response` can have and be considered cacheable.\n * @param {Object} [config.headers] A mapping of header names\n * and expected values that a `Response` can have and be considered cacheable.\n * If multiple headers are provided, only one needs to be present.\n */\n constructor(config = {}) {\n if (process.env.NODE_ENV !== 'production') {\n if (!(config.statuses || config.headers)) {\n throw new WorkboxError('statuses-or-headers-required', {\n moduleName: 'workbox-cacheable-response',\n className: 'CacheableResponse',\n funcName: 'constructor',\n });\n }\n\n if (config.statuses) {\n assert.isArray(config.statuses, {\n moduleName: 'workbox-cacheable-response',\n className: 'CacheableResponse',\n funcName: 'constructor',\n paramName: 'config.statuses',\n });\n }\n\n if (config.headers) {\n assert.isType(config.headers, 'object', {\n moduleName: 'workbox-cacheable-response',\n className: 'CacheableResponse',\n funcName: 'constructor',\n paramName: 'config.headers',\n });\n }\n }\n\n this._statuses = config.statuses;\n this._headers = config.headers;\n }\n\n /**\n * Checks a response to see whether it's cacheable or not, based on this\n * object's configuration.\n *\n * @param {Response} response The response whose cacheability is being\n * checked.\n * @return {boolean} `true` if the `Response` is cacheable, and `false`\n * otherwise.\n */\n isResponseCacheable(response) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(response, Response, {\n moduleName: 'workbox-cacheable-response',\n className: 'CacheableResponse',\n funcName: 'isResponseCacheable',\n paramName: 'response',\n });\n }\n\n let cacheable = true;\n\n if (this._statuses) {\n cacheable = this._statuses.includes(response.status);\n }\n\n if (this._headers && cacheable) {\n cacheable = Object.keys(this._headers).some((headerName) => {\n return response.headers.get(headerName) === this._headers[headerName];\n });\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!cacheable) {\n logger.groupCollapsed(`The request for ` +\n `'${getFriendlyURL(response.url)}' returned a response that does ` +\n `not meet the criteria for being cached.`);\n\n logger.groupCollapsed(`View cacheability criteria here.`);\n logger.log(`Cacheable statuses: ` +\n JSON.stringify(this._statuses));\n logger.log(`Cacheable headers: ` +\n JSON.stringify(this._headers, null, 2));\n logger.groupEnd();\n\n const logFriendlyHeaders = {};\n response.headers.forEach((value, key) => {\n logFriendlyHeaders[key] = value;\n });\n\n logger.groupCollapsed(`View response status and headers here.`);\n logger.log(`Response status: ` + response.status);\n logger.log(`Response headers: ` +\n JSON.stringify(logFriendlyHeaders, null, 2));\n logger.groupEnd();\n\n logger.groupCollapsed(`View full response details here.`);\n logger.log(response.headers);\n logger.log(response);\n logger.groupEnd();\n\n logger.groupEnd();\n }\n }\n\n return cacheable;\n }\n}\n\nexport {CacheableResponse};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {CacheableResponse} from './CacheableResponse.mjs';\nimport './_version.mjs';\n\n/**\n * A class implementing the `cacheWillUpdate` lifecycle callback. This makes it\n * easier to add in cacheability checks to requests made via Workbox's built-in\n * strategies.\n *\n * @memberof workbox.cacheableResponse\n */\nclass Plugin {\n /**\n * To construct a new cacheable response Plugin instance you must provide at\n * least one of the `config` properties.\n *\n * If both `statuses` and `headers` are specified, then both conditions must\n * be met for the `Response` to be considered cacheable.\n *\n * @param {Object} config\n * @param {Array} [config.statuses] One or more status codes that a\n * `Response` can have and be considered cacheable.\n * @param {Object} [config.headers] A mapping of header names\n * and expected values that a `Response` can have and be considered cacheable.\n * If multiple headers are provided, only one needs to be present.\n */\n constructor(config) {\n this._cacheableResponse = new CacheableResponse(config);\n }\n\n /**\n * @param {Object} options\n * @param {Response} options.response\n * @return {boolean}\n * @private\n */\n cacheWillUpdate({response}) {\n if (this._cacheableResponse.isResponseCacheable(response)) {\n return response;\n }\n return null;\n }\n}\n\nexport {Plugin};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {CacheableResponse} from './CacheableResponse.mjs';\nimport {Plugin} from './Plugin.mjs';\nimport './_version.mjs';\n\n\n/**\n * @namespace workbox.cacheableResponse\n */\n\nexport {\n CacheableResponse,\n Plugin,\n};\n"],"names":["self","_","e","CacheableResponse","constructor","config","statuses","headers","WorkboxError","moduleName","className","funcName","assert","isArray","paramName","isType","_statuses","_headers","isResponseCacheable","response","isInstance","Response","cacheable","includes","status","Object","keys","some","headerName","get","logger","groupCollapsed","getFriendlyURL","url","log","JSON","stringify","groupEnd","logFriendlyHeaders","forEach","value","key","Plugin","_cacheableResponse","cacheWillUpdate"],"mappings":"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"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-cacheable-response.prod.js b/pr-preview/pr-1029/workbox-v4.3.1/workbox-cacheable-response.prod.js deleted file mode 100644 index a7e42f263..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-cacheable-response.prod.js +++ /dev/null @@ -1,2 +0,0 @@ -this.workbox=this.workbox||{},this.workbox.cacheableResponse=function(t){"use strict";try{self["workbox:cacheable-response:4.3.1"]&&_()}catch(t){}class s{constructor(t={}){this.t=t.statuses,this.s=t.headers}isResponseCacheable(t){let s=!0;return this.t&&(s=this.t.includes(t.status)),this.s&&s&&(s=Object.keys(this.s).some(s=>t.headers.get(s)===this.s[s])),s}}return t.CacheableResponse=s,t.Plugin=class{constructor(t){this.i=new s(t)}cacheWillUpdate({response:t}){return this.i.isResponseCacheable(t)?t:null}},t}({}); -//# sourceMappingURL=workbox-cacheable-response.prod.js.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-cacheable-response.prod.js.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-cacheable-response.prod.js.map deleted file mode 100644 index b1a0d1d2b..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-cacheable-response.prod.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-cacheable-response.prod.js","sources":["../_version.mjs","../CacheableResponse.mjs","../Plugin.mjs"],"sourcesContent":["try{self['workbox:cacheable-response:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {getFriendlyURL} from 'workbox-core/_private/getFriendlyURL.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport './_version.mjs';\n\n/**\n * This class allows you to set up rules determining what\n * status codes and/or headers need to be present in order for a\n * [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response)\n * to be considered cacheable.\n *\n * @memberof workbox.cacheableResponse\n */\nclass CacheableResponse {\n /**\n * To construct a new CacheableResponse instance you must provide at least\n * one of the `config` properties.\n *\n * If both `statuses` and `headers` are specified, then both conditions must\n * be met for the `Response` to be considered cacheable.\n *\n * @param {Object} config\n * @param {Array} [config.statuses] One or more status codes that a\n * `Response` can have and be considered cacheable.\n * @param {Object} [config.headers] A mapping of header names\n * and expected values that a `Response` can have and be considered cacheable.\n * If multiple headers are provided, only one needs to be present.\n */\n constructor(config = {}) {\n if (process.env.NODE_ENV !== 'production') {\n if (!(config.statuses || config.headers)) {\n throw new WorkboxError('statuses-or-headers-required', {\n moduleName: 'workbox-cacheable-response',\n className: 'CacheableResponse',\n funcName: 'constructor',\n });\n }\n\n if (config.statuses) {\n assert.isArray(config.statuses, {\n moduleName: 'workbox-cacheable-response',\n className: 'CacheableResponse',\n funcName: 'constructor',\n paramName: 'config.statuses',\n });\n }\n\n if (config.headers) {\n assert.isType(config.headers, 'object', {\n moduleName: 'workbox-cacheable-response',\n className: 'CacheableResponse',\n funcName: 'constructor',\n paramName: 'config.headers',\n });\n }\n }\n\n this._statuses = config.statuses;\n this._headers = config.headers;\n }\n\n /**\n * Checks a response to see whether it's cacheable or not, based on this\n * object's configuration.\n *\n * @param {Response} response The response whose cacheability is being\n * checked.\n * @return {boolean} `true` if the `Response` is cacheable, and `false`\n * otherwise.\n */\n isResponseCacheable(response) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(response, Response, {\n moduleName: 'workbox-cacheable-response',\n className: 'CacheableResponse',\n funcName: 'isResponseCacheable',\n paramName: 'response',\n });\n }\n\n let cacheable = true;\n\n if (this._statuses) {\n cacheable = this._statuses.includes(response.status);\n }\n\n if (this._headers && cacheable) {\n cacheable = Object.keys(this._headers).some((headerName) => {\n return response.headers.get(headerName) === this._headers[headerName];\n });\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!cacheable) {\n logger.groupCollapsed(`The request for ` +\n `'${getFriendlyURL(response.url)}' returned a response that does ` +\n `not meet the criteria for being cached.`);\n\n logger.groupCollapsed(`View cacheability criteria here.`);\n logger.log(`Cacheable statuses: ` +\n JSON.stringify(this._statuses));\n logger.log(`Cacheable headers: ` +\n JSON.stringify(this._headers, null, 2));\n logger.groupEnd();\n\n const logFriendlyHeaders = {};\n response.headers.forEach((value, key) => {\n logFriendlyHeaders[key] = value;\n });\n\n logger.groupCollapsed(`View response status and headers here.`);\n logger.log(`Response status: ` + response.status);\n logger.log(`Response headers: ` +\n JSON.stringify(logFriendlyHeaders, null, 2));\n logger.groupEnd();\n\n logger.groupCollapsed(`View full response details here.`);\n logger.log(response.headers);\n logger.log(response);\n logger.groupEnd();\n\n logger.groupEnd();\n }\n }\n\n return cacheable;\n }\n}\n\nexport {CacheableResponse};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {CacheableResponse} from './CacheableResponse.mjs';\nimport './_version.mjs';\n\n/**\n * A class implementing the `cacheWillUpdate` lifecycle callback. This makes it\n * easier to add in cacheability checks to requests made via Workbox's built-in\n * strategies.\n *\n * @memberof workbox.cacheableResponse\n */\nclass Plugin {\n /**\n * To construct a new cacheable response Plugin instance you must provide at\n * least one of the `config` properties.\n *\n * If both `statuses` and `headers` are specified, then both conditions must\n * be met for the `Response` to be considered cacheable.\n *\n * @param {Object} config\n * @param {Array} [config.statuses] One or more status codes that a\n * `Response` can have and be considered cacheable.\n * @param {Object} [config.headers] A mapping of header names\n * and expected values that a `Response` can have and be considered cacheable.\n * If multiple headers are provided, only one needs to be present.\n */\n constructor(config) {\n this._cacheableResponse = new CacheableResponse(config);\n }\n\n /**\n * @param {Object} options\n * @param {Response} options.response\n * @return {boolean}\n * @private\n */\n cacheWillUpdate({response}) {\n if (this._cacheableResponse.isResponseCacheable(response)) {\n return response;\n }\n return null;\n }\n}\n\nexport {Plugin};\n"],"names":["self","_","e","CacheableResponse","constructor","config","_statuses","statuses","_headers","headers","isResponseCacheable","response","cacheable","this","includes","status","Object","keys","some","headerName","get","_cacheableResponse","cacheWillUpdate"],"mappings":"sFAAA,IAAIA,KAAK,qCAAqCC,IAAI,MAAMC,ICsBxD,MAAMC,EAeJC,YAAYC,EAAS,SA6BdC,EAAYD,EAAOE,cACnBC,EAAWH,EAAOI,QAYzBC,oBAAoBC,OAUdC,GAAY,SAEZC,KAAKP,IACPM,EAAYC,KAAKP,EAAUQ,SAASH,EAASI,SAG3CF,KAAKL,GAAYI,IACnBA,EAAYI,OAAOC,KAAKJ,KAAKL,GAAUU,KAAMC,GACpCR,EAASF,QAAQW,IAAID,KAAgBN,KAAKL,EAASW,KAqCvDP,yCCpHX,MAeER,YAAYC,QACLgB,EAAqB,IAAIlB,EAAkBE,GASlDiB,iBAAgBX,SAACA,WACXE,KAAKQ,EAAmBX,oBAAoBC,GACvCA,EAEF"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-core.dev.js b/pr-preview/pr-1029/workbox-v4.3.1/workbox-core.dev.js deleted file mode 100644 index 18b8b85f1..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-core.dev.js +++ /dev/null @@ -1,1712 +0,0 @@ -this.workbox = this.workbox || {}; -this.workbox.core = (function (exports) { - 'use strict'; - - try { - self['workbox:core:4.3.1'] && _(); - } catch (e) {} // eslint-disable-line - - /* - Copyright 2019 Google LLC - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - const logger = (() => { - let inGroup = false; - const methodToColorMap = { - debug: `#7f8c8d`, - // Gray - log: `#2ecc71`, - // Green - warn: `#f39c12`, - // Yellow - error: `#c0392b`, - // Red - groupCollapsed: `#3498db`, - // Blue - groupEnd: null // No colored prefix on groupEnd - - }; - - const print = function (method, args) { - if (method === 'groupCollapsed') { - // Safari doesn't print all console.groupCollapsed() arguments: - // https://bugs.webkit.org/show_bug.cgi?id=182754 - if (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { - console[method](...args); - return; - } - } - - const styles = [`background: ${methodToColorMap[method]}`, `border-radius: 0.5em`, `color: white`, `font-weight: bold`, `padding: 2px 0.5em`]; // When in a group, the workbox prefix is not displayed. - - const logPrefix = inGroup ? [] : ['%cworkbox', styles.join(';')]; - console[method](...logPrefix, ...args); - - if (method === 'groupCollapsed') { - inGroup = true; - } - - if (method === 'groupEnd') { - inGroup = false; - } - }; - - const api = {}; - - for (const method of Object.keys(methodToColorMap)) { - api[method] = (...args) => { - print(method, args); - }; - } - - return api; - })(); - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - const messages = { - 'invalid-value': ({ - paramName, - validValueDescription, - value - }) => { - if (!paramName || !validValueDescription) { - throw new Error(`Unexpected input to 'invalid-value' error.`); - } - - return `The '${paramName}' parameter was given a value with an ` + `unexpected value. ${validValueDescription} Received a value of ` + `${JSON.stringify(value)}.`; - }, - 'not-in-sw': ({ - moduleName - }) => { - if (!moduleName) { - throw new Error(`Unexpected input to 'not-in-sw' error.`); - } - - return `The '${moduleName}' must be used in a service worker.`; - }, - 'not-an-array': ({ - moduleName, - className, - funcName, - paramName - }) => { - if (!moduleName || !className || !funcName || !paramName) { - throw new Error(`Unexpected input to 'not-an-array' error.`); - } - - return `The parameter '${paramName}' passed into ` + `'${moduleName}.${className}.${funcName}()' must be an array.`; - }, - 'incorrect-type': ({ - expectedType, - paramName, - moduleName, - className, - funcName - }) => { - if (!expectedType || !paramName || !moduleName || !funcName) { - throw new Error(`Unexpected input to 'incorrect-type' error.`); - } - - return `The parameter '${paramName}' passed into ` + `'${moduleName}.${className ? className + '.' : ''}` + `${funcName}()' must be of type ${expectedType}.`; - }, - 'incorrect-class': ({ - expectedClass, - paramName, - moduleName, - className, - funcName, - isReturnValueProblem - }) => { - if (!expectedClass || !moduleName || !funcName) { - throw new Error(`Unexpected input to 'incorrect-class' error.`); - } - - if (isReturnValueProblem) { - return `The return value from ` + `'${moduleName}.${className ? className + '.' : ''}${funcName}()' ` + `must be an instance of class ${expectedClass.name}.`; - } - - return `The parameter '${paramName}' passed into ` + `'${moduleName}.${className ? className + '.' : ''}${funcName}()' ` + `must be an instance of class ${expectedClass.name}.`; - }, - 'missing-a-method': ({ - expectedMethod, - paramName, - moduleName, - className, - funcName - }) => { - if (!expectedMethod || !paramName || !moduleName || !className || !funcName) { - throw new Error(`Unexpected input to 'missing-a-method' error.`); - } - - return `${moduleName}.${className}.${funcName}() expected the ` + `'${paramName}' parameter to expose a '${expectedMethod}' method.`; - }, - 'add-to-cache-list-unexpected-type': ({ - entry - }) => { - return `An unexpected entry was passed to ` + `'workbox-precaching.PrecacheController.addToCacheList()' The entry ` + `'${JSON.stringify(entry)}' isn't supported. You must supply an array of ` + `strings with one or more characters, objects with a url property or ` + `Request objects.`; - }, - 'add-to-cache-list-conflicting-entries': ({ - firstEntry, - secondEntry - }) => { - if (!firstEntry || !secondEntry) { - throw new Error(`Unexpected input to ` + `'add-to-cache-list-duplicate-entries' error.`); - } - - return `Two of the entries passed to ` + `'workbox-precaching.PrecacheController.addToCacheList()' had the URL ` + `${firstEntry._entryId} but different revision details. Workbox is ` + `is unable to cache and version the asset correctly. Please remove one ` + `of the entries.`; - }, - 'plugin-error-request-will-fetch': ({ - thrownError - }) => { - if (!thrownError) { - throw new Error(`Unexpected input to ` + `'plugin-error-request-will-fetch', error.`); - } - - return `An error was thrown by a plugins 'requestWillFetch()' method. ` + `The thrown error message was: '${thrownError.message}'.`; - }, - 'invalid-cache-name': ({ - cacheNameId, - value - }) => { - if (!cacheNameId) { - throw new Error(`Expected a 'cacheNameId' for error 'invalid-cache-name'`); - } - - return `You must provide a name containing at least one character for ` + `setCacheDeatils({${cacheNameId}: '...'}). Received a value of ` + `'${JSON.stringify(value)}'`; - }, - 'unregister-route-but-not-found-with-method': ({ - method - }) => { - if (!method) { - throw new Error(`Unexpected input to ` + `'unregister-route-but-not-found-with-method' error.`); - } - - return `The route you're trying to unregister was not previously ` + `registered for the method type '${method}'.`; - }, - 'unregister-route-route-not-registered': () => { - return `The route you're trying to unregister was not previously ` + `registered.`; - }, - 'queue-replay-failed': ({ - name - }) => { - return `Replaying the background sync queue '${name}' failed.`; - }, - 'duplicate-queue-name': ({ - name - }) => { - return `The Queue name '${name}' is already being used. ` + `All instances of backgroundSync.Queue must be given unique names.`; - }, - 'expired-test-without-max-age': ({ - methodName, - paramName - }) => { - return `The '${methodName}()' method can only be used when the ` + `'${paramName}' is used in the constructor.`; - }, - 'unsupported-route-type': ({ - moduleName, - className, - funcName, - paramName - }) => { - return `The supplied '${paramName}' parameter was an unsupported type. ` + `Please check the docs for ${moduleName}.${className}.${funcName} for ` + `valid input types.`; - }, - 'not-array-of-class': ({ - value, - expectedClass, - moduleName, - className, - funcName, - paramName - }) => { - return `The supplied '${paramName}' parameter must be an array of ` + `'${expectedClass}' objects. Received '${JSON.stringify(value)},'. ` + `Please check the call to ${moduleName}.${className}.${funcName}() ` + `to fix the issue.`; - }, - 'max-entries-or-age-required': ({ - moduleName, - className, - funcName - }) => { - return `You must define either config.maxEntries or config.maxAgeSeconds` + `in ${moduleName}.${className}.${funcName}`; - }, - 'statuses-or-headers-required': ({ - moduleName, - className, - funcName - }) => { - return `You must define either config.statuses or config.headers` + `in ${moduleName}.${className}.${funcName}`; - }, - 'invalid-string': ({ - moduleName, - className, - funcName, - paramName - }) => { - if (!paramName || !moduleName || !funcName) { - throw new Error(`Unexpected input to 'invalid-string' error.`); - } - - return `When using strings, the '${paramName}' parameter must start with ` + `'http' (for cross-origin matches) or '/' (for same-origin matches). ` + `Please see the docs for ${moduleName}.${funcName}() for ` + `more info.`; - }, - 'channel-name-required': () => { - return `You must provide a channelName to construct a ` + `BroadcastCacheUpdate instance.`; - }, - 'invalid-responses-are-same-args': () => { - return `The arguments passed into responsesAreSame() appear to be ` + `invalid. Please ensure valid Responses are used.`; - }, - 'expire-custom-caches-only': () => { - return `You must provide a 'cacheName' property when using the ` + `expiration plugin with a runtime caching strategy.`; - }, - 'unit-must-be-bytes': ({ - normalizedRangeHeader - }) => { - if (!normalizedRangeHeader) { - throw new Error(`Unexpected input to 'unit-must-be-bytes' error.`); - } - - return `The 'unit' portion of the Range header must be set to 'bytes'. ` + `The Range header provided was "${normalizedRangeHeader}"`; - }, - 'single-range-only': ({ - normalizedRangeHeader - }) => { - if (!normalizedRangeHeader) { - throw new Error(`Unexpected input to 'single-range-only' error.`); - } - - return `Multiple ranges are not supported. Please use a single start ` + `value, and optional end value. The Range header provided was ` + `"${normalizedRangeHeader}"`; - }, - 'invalid-range-values': ({ - normalizedRangeHeader - }) => { - if (!normalizedRangeHeader) { - throw new Error(`Unexpected input to 'invalid-range-values' error.`); - } - - return `The Range header is missing both start and end values. At least ` + `one of those values is needed. The Range header provided was ` + `"${normalizedRangeHeader}"`; - }, - 'no-range-header': () => { - return `No Range header was found in the Request provided.`; - }, - 'range-not-satisfiable': ({ - size, - start, - end - }) => { - return `The start (${start}) and end (${end}) values in the Range are ` + `not satisfiable by the cached response, which is ${size} bytes.`; - }, - 'attempt-to-cache-non-get-request': ({ - url, - method - }) => { - return `Unable to cache '${url}' because it is a '${method}' request and ` + `only 'GET' requests can be cached.`; - }, - 'cache-put-with-no-response': ({ - url - }) => { - return `There was an attempt to cache '${url}' but the response was not ` + `defined.`; - }, - 'no-response': ({ - url, - error - }) => { - let message = `The strategy could not generate a response for '${url}'.`; - - if (error) { - message += ` The underlying error is ${error}.`; - } - - return message; - }, - 'bad-precaching-response': ({ - url, - status - }) => { - return `The precaching request for '${url}' failed with an HTTP ` + `status of ${status}.`; - } - }; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - - const generatorFunction = (code, ...args) => { - const message = messages[code]; - - if (!message) { - throw new Error(`Unable to find message for code '${code}'.`); - } - - return message(...args); - }; - - const messageGenerator = generatorFunction; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Workbox errors should be thrown with this class. - * This allows use to ensure the type easily in tests, - * helps developers identify errors from workbox - * easily and allows use to optimise error - * messages correctly. - * - * @private - */ - - class WorkboxError extends Error { - /** - * - * @param {string} errorCode The error code that - * identifies this particular error. - * @param {Object=} details Any relevant arguments - * that will help developers identify issues should - * be added as a key on the context object. - */ - constructor(errorCode, details) { - let message = messageGenerator(errorCode, details); - super(message); - this.name = errorCode; - this.details = details; - } - - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /* - * This method returns true if the current context is a service worker. - */ - - const isSWEnv = moduleName => { - if (!('ServiceWorkerGlobalScope' in self)) { - throw new WorkboxError('not-in-sw', { - moduleName - }); - } - }; - /* - * This method throws if the supplied value is not an array. - * The destructed values are required to produce a meaningful error for users. - * The destructed and restructured object is so it's clear what is - * needed. - */ - - - const isArray = (value, { - moduleName, - className, - funcName, - paramName - }) => { - if (!Array.isArray(value)) { - throw new WorkboxError('not-an-array', { - moduleName, - className, - funcName, - paramName - }); - } - }; - - const hasMethod = (object, expectedMethod, { - moduleName, - className, - funcName, - paramName - }) => { - const type = typeof object[expectedMethod]; - - if (type !== 'function') { - throw new WorkboxError('missing-a-method', { - paramName, - expectedMethod, - moduleName, - className, - funcName - }); - } - }; - - const isType = (object, expectedType, { - moduleName, - className, - funcName, - paramName - }) => { - if (typeof object !== expectedType) { - throw new WorkboxError('incorrect-type', { - paramName, - expectedType, - moduleName, - className, - funcName - }); - } - }; - - const isInstance = (object, expectedClass, { - moduleName, - className, - funcName, - paramName, - isReturnValueProblem - }) => { - if (!(object instanceof expectedClass)) { - throw new WorkboxError('incorrect-class', { - paramName, - expectedClass, - moduleName, - className, - funcName, - isReturnValueProblem - }); - } - }; - - const isOneOf = (value, validValues, { - paramName - }) => { - if (!validValues.includes(value)) { - throw new WorkboxError('invalid-value', { - paramName, - value, - validValueDescription: `Valid values are ${JSON.stringify(validValues)}.` - }); - } - }; - - const isArrayOfClass = (value, expectedClass, { - moduleName, - className, - funcName, - paramName - }) => { - const error = new WorkboxError('not-array-of-class', { - value, - expectedClass, - moduleName, - className, - funcName, - paramName - }); - - if (!Array.isArray(value)) { - throw error; - } - - for (let item of value) { - if (!(item instanceof expectedClass)) { - throw error; - } - } - }; - - const finalAssertExports = { - hasMethod, - isArray, - isInstance, - isOneOf, - isSWEnv, - isType, - isArrayOfClass - }; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - - const quotaErrorCallbacks = new Set(); - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Adds a function to the set of quotaErrorCallbacks that will be executed if - * there's a quota error. - * - * @param {Function} callback - * @memberof workbox.core - */ - - function registerQuotaErrorCallback(callback) { - { - finalAssertExports.isType(callback, 'function', { - moduleName: 'workbox-core', - funcName: 'register', - paramName: 'callback' - }); - } - - quotaErrorCallbacks.add(callback); - - { - logger.log('Registered a callback to respond to quota errors.', callback); - } - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - const _cacheNameDetails = { - googleAnalytics: 'googleAnalytics', - precache: 'precache-v2', - prefix: 'workbox', - runtime: 'runtime', - suffix: self.registration.scope - }; - - const _createCacheName = cacheName => { - return [_cacheNameDetails.prefix, cacheName, _cacheNameDetails.suffix].filter(value => value.length > 0).join('-'); - }; - - const cacheNames = { - updateDetails: details => { - Object.keys(_cacheNameDetails).forEach(key => { - if (typeof details[key] !== 'undefined') { - _cacheNameDetails[key] = details[key]; - } - }); - }, - getGoogleAnalyticsName: userCacheName => { - return userCacheName || _createCacheName(_cacheNameDetails.googleAnalytics); - }, - getPrecacheName: userCacheName => { - return userCacheName || _createCacheName(_cacheNameDetails.precache); - }, - getPrefix: () => { - return _cacheNameDetails.prefix; - }, - getRuntimeName: userCacheName => { - return userCacheName || _createCacheName(_cacheNameDetails.runtime); - }, - getSuffix: () => { - return _cacheNameDetails.suffix; - } - }; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - - const getFriendlyURL = url => { - const urlObj = new URL(url, location); - - if (urlObj.origin === location.origin) { - return urlObj.pathname; - } - - return urlObj.href; - }; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Runs all of the callback functions, one at a time sequentially, in the order - * in which they were registered. - * - * @memberof workbox.core - * @private - */ - - async function executeQuotaErrorCallbacks() { - { - logger.log(`About to run ${quotaErrorCallbacks.size} ` + `callbacks to clean up caches.`); - } - - for (const callback of quotaErrorCallbacks) { - await callback(); - - { - logger.log(callback, 'is complete.'); - } - } - - { - logger.log('Finished running callbacks.'); - } - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - const pluginEvents = { - CACHE_DID_UPDATE: 'cacheDidUpdate', - CACHE_KEY_WILL_BE_USED: 'cacheKeyWillBeUsed', - CACHE_WILL_UPDATE: 'cacheWillUpdate', - CACHED_RESPONSE_WILL_BE_USED: 'cachedResponseWillBeUsed', - FETCH_DID_FAIL: 'fetchDidFail', - FETCH_DID_SUCCEED: 'fetchDidSucceed', - REQUEST_WILL_FETCH: 'requestWillFetch' - }; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - const pluginUtils = { - filter: (plugins, callbackName) => { - return plugins.filter(plugin => callbackName in plugin); - } - }; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Wrapper around cache.put(). - * - * Will call `cacheDidUpdate` on plugins if the cache was updated, using - * `matchOptions` when determining what the old entry is. - * - * @param {Object} options - * @param {string} options.cacheName - * @param {Request} options.request - * @param {Response} options.response - * @param {Event} [options.event] - * @param {Array} [options.plugins=[]] - * @param {Object} [options.matchOptions] - * - * @private - * @memberof module:workbox-core - */ - - const putWrapper = async ({ - cacheName, - request, - response, - event, - plugins = [], - matchOptions - } = {}) => { - { - if (request.method && request.method !== 'GET') { - throw new WorkboxError('attempt-to-cache-non-get-request', { - url: getFriendlyURL(request.url), - method: request.method - }); - } - } - - const effectiveRequest = await _getEffectiveRequest({ - plugins, - request, - mode: 'write' - }); - - if (!response) { - { - logger.error(`Cannot cache non-existent response for ` + `'${getFriendlyURL(effectiveRequest.url)}'.`); - } - - throw new WorkboxError('cache-put-with-no-response', { - url: getFriendlyURL(effectiveRequest.url) - }); - } - - let responseToCache = await _isResponseSafeToCache({ - event, - plugins, - response, - request: effectiveRequest - }); - - if (!responseToCache) { - { - logger.debug(`Response '${getFriendlyURL(effectiveRequest.url)}' will ` + `not be cached.`, responseToCache); - } - - return; - } - - const cache = await caches.open(cacheName); - const updatePlugins = pluginUtils.filter(plugins, pluginEvents.CACHE_DID_UPDATE); - let oldResponse = updatePlugins.length > 0 ? await matchWrapper({ - cacheName, - matchOptions, - request: effectiveRequest - }) : null; - - { - logger.debug(`Updating the '${cacheName}' cache with a new Response for ` + `${getFriendlyURL(effectiveRequest.url)}.`); - } - - try { - await cache.put(effectiveRequest, responseToCache); - } catch (error) { - // See https://developer.mozilla.org/en-US/docs/Web/API/DOMException#exception-QuotaExceededError - if (error.name === 'QuotaExceededError') { - await executeQuotaErrorCallbacks(); - } - - throw error; - } - - for (let plugin of updatePlugins) { - await plugin[pluginEvents.CACHE_DID_UPDATE].call(plugin, { - cacheName, - event, - oldResponse, - newResponse: responseToCache, - request: effectiveRequest - }); - } - }; - /** - * This is a wrapper around cache.match(). - * - * @param {Object} options - * @param {string} options.cacheName Name of the cache to match against. - * @param {Request} options.request The Request that will be used to look up - * cache entries. - * @param {Event} [options.event] The event that propted the action. - * @param {Object} [options.matchOptions] Options passed to cache.match(). - * @param {Array} [options.plugins=[]] Array of plugins. - * @return {Response} A cached response if available. - * - * @private - * @memberof module:workbox-core - */ - - - const matchWrapper = async ({ - cacheName, - request, - event, - matchOptions, - plugins = [] - }) => { - const cache = await caches.open(cacheName); - const effectiveRequest = await _getEffectiveRequest({ - plugins, - request, - mode: 'read' - }); - let cachedResponse = await cache.match(effectiveRequest, matchOptions); - - { - if (cachedResponse) { - logger.debug(`Found a cached response in '${cacheName}'.`); - } else { - logger.debug(`No cached response found in '${cacheName}'.`); - } - } - - for (const plugin of plugins) { - if (pluginEvents.CACHED_RESPONSE_WILL_BE_USED in plugin) { - cachedResponse = await plugin[pluginEvents.CACHED_RESPONSE_WILL_BE_USED].call(plugin, { - cacheName, - event, - matchOptions, - cachedResponse, - request: effectiveRequest - }); - - { - if (cachedResponse) { - finalAssertExports.isInstance(cachedResponse, Response, { - moduleName: 'Plugin', - funcName: pluginEvents.CACHED_RESPONSE_WILL_BE_USED, - isReturnValueProblem: true - }); - } - } - } - } - - return cachedResponse; - }; - /** - * This method will call cacheWillUpdate on the available plugins (or use - * status === 200) to determine if the Response is safe and valid to cache. - * - * @param {Object} options - * @param {Request} options.request - * @param {Response} options.response - * @param {Event} [options.event] - * @param {Array} [options.plugins=[]] - * @return {Promise} - * - * @private - * @memberof module:workbox-core - */ - - - const _isResponseSafeToCache = async ({ - request, - response, - event, - plugins - }) => { - let responseToCache = response; - let pluginsUsed = false; - - for (let plugin of plugins) { - if (pluginEvents.CACHE_WILL_UPDATE in plugin) { - pluginsUsed = true; - responseToCache = await plugin[pluginEvents.CACHE_WILL_UPDATE].call(plugin, { - request, - response: responseToCache, - event - }); - - { - if (responseToCache) { - finalAssertExports.isInstance(responseToCache, Response, { - moduleName: 'Plugin', - funcName: pluginEvents.CACHE_WILL_UPDATE, - isReturnValueProblem: true - }); - } - } - - if (!responseToCache) { - break; - } - } - } - - if (!pluginsUsed) { - { - if (!responseToCache.status === 200) { - if (responseToCache.status === 0) { - logger.warn(`The response for '${request.url}' is an opaque ` + `response. The caching strategy that you're using will not ` + `cache opaque responses by default.`); - } else { - logger.debug(`The response for '${request.url}' returned ` + `a status code of '${response.status}' and won't be cached as a ` + `result.`); - } - } - } - - responseToCache = responseToCache.status === 200 ? responseToCache : null; - } - - return responseToCache ? responseToCache : null; - }; - /** - * Checks the list of plugins for the cacheKeyWillBeUsed callback, and - * executes any of those callbacks found in sequence. The final `Request` object - * returned by the last plugin is treated as the cache key for cache reads - * and/or writes. - * - * @param {Object} options - * @param {Request} options.request - * @param {string} options.mode - * @param {Array} [options.plugins=[]] - * @return {Promise} - * - * @private - * @memberof module:workbox-core - */ - - - const _getEffectiveRequest = async ({ - request, - mode, - plugins - }) => { - const cacheKeyWillBeUsedPlugins = pluginUtils.filter(plugins, pluginEvents.CACHE_KEY_WILL_BE_USED); - let effectiveRequest = request; - - for (const plugin of cacheKeyWillBeUsedPlugins) { - effectiveRequest = await plugin[pluginEvents.CACHE_KEY_WILL_BE_USED].call(plugin, { - mode, - request: effectiveRequest - }); - - if (typeof effectiveRequest === 'string') { - effectiveRequest = new Request(effectiveRequest); - } - - { - finalAssertExports.isInstance(effectiveRequest, Request, { - moduleName: 'Plugin', - funcName: pluginEvents.CACHE_KEY_WILL_BE_USED, - isReturnValueProblem: true - }); - } - } - - return effectiveRequest; - }; - - const cacheWrapper = { - put: putWrapper, - match: matchWrapper - }; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * A class that wraps common IndexedDB functionality in a promise-based API. - * It exposes all the underlying power and functionality of IndexedDB, but - * wraps the most commonly used features in a way that's much simpler to use. - * - * @private - */ - - class DBWrapper { - /** - * @param {string} name - * @param {number} version - * @param {Object=} [callback] - * @param {!Function} [callbacks.onupgradeneeded] - * @param {!Function} [callbacks.onversionchange] Defaults to - * DBWrapper.prototype._onversionchange when not specified. - * @private - */ - constructor(name, version, { - onupgradeneeded, - onversionchange = this._onversionchange - } = {}) { - this._name = name; - this._version = version; - this._onupgradeneeded = onupgradeneeded; - this._onversionchange = onversionchange; // If this is null, it means the database isn't open. - - this._db = null; - } - /** - * Returns the IDBDatabase instance (not normally needed). - * - * @private - */ - - - get db() { - return this._db; - } - /** - * Opens a connected to an IDBDatabase, invokes any onupgradedneeded - * callback, and added an onversionchange callback to the database. - * - * @return {IDBDatabase} - * @private - */ - - - async open() { - if (this._db) return; - this._db = await new Promise((resolve, reject) => { - // This flag is flipped to true if the timeout callback runs prior - // to the request failing or succeeding. Note: we use a timeout instead - // of an onblocked handler since there are cases where onblocked will - // never never run. A timeout better handles all possible scenarios: - // https://github.com/w3c/IndexedDB/issues/223 - let openRequestTimedOut = false; - setTimeout(() => { - openRequestTimedOut = true; - reject(new Error('The open request was blocked and timed out')); - }, this.OPEN_TIMEOUT); - const openRequest = indexedDB.open(this._name, this._version); - - openRequest.onerror = () => reject(openRequest.error); - - openRequest.onupgradeneeded = evt => { - if (openRequestTimedOut) { - openRequest.transaction.abort(); - evt.target.result.close(); - } else if (this._onupgradeneeded) { - this._onupgradeneeded(evt); - } - }; - - openRequest.onsuccess = ({ - target - }) => { - const db = target.result; - - if (openRequestTimedOut) { - db.close(); - } else { - db.onversionchange = this._onversionchange.bind(this); - resolve(db); - } - }; - }); - return this; - } - /** - * Polyfills the native `getKey()` method. Note, this is overridden at - * runtime if the browser supports the native method. - * - * @param {string} storeName - * @param {*} query - * @return {Array} - * @private - */ - - - async getKey(storeName, query) { - return (await this.getAllKeys(storeName, query, 1))[0]; - } - /** - * Polyfills the native `getAll()` method. Note, this is overridden at - * runtime if the browser supports the native method. - * - * @param {string} storeName - * @param {*} query - * @param {number} count - * @return {Array} - * @private - */ - - - async getAll(storeName, query, count) { - return await this.getAllMatching(storeName, { - query, - count - }); - } - /** - * Polyfills the native `getAllKeys()` method. Note, this is overridden at - * runtime if the browser supports the native method. - * - * @param {string} storeName - * @param {*} query - * @param {number} count - * @return {Array} - * @private - */ - - - async getAllKeys(storeName, query, count) { - return (await this.getAllMatching(storeName, { - query, - count, - includeKeys: true - })).map(({ - key - }) => key); - } - /** - * Supports flexible lookup in an object store by specifying an index, - * query, direction, and count. This method returns an array of objects - * with the signature . - * - * @param {string} storeName - * @param {Object} [opts] - * @param {string} [opts.index] The index to use (if specified). - * @param {*} [opts.query] - * @param {IDBCursorDirection} [opts.direction] - * @param {number} [opts.count] The max number of results to return. - * @param {boolean} [opts.includeKeys] When true, the structure of the - * returned objects is changed from an array of values to an array of - * objects in the form {key, primaryKey, value}. - * @return {Array} - * @private - */ - - - async getAllMatching(storeName, { - index, - query = null, - // IE errors if query === `undefined`. - direction = 'next', - count, - includeKeys - } = {}) { - return await this.transaction([storeName], 'readonly', (txn, done) => { - const store = txn.objectStore(storeName); - const target = index ? store.index(index) : store; - const results = []; - - target.openCursor(query, direction).onsuccess = ({ - target - }) => { - const cursor = target.result; - - if (cursor) { - const { - primaryKey, - key, - value - } = cursor; - results.push(includeKeys ? { - primaryKey, - key, - value - } : value); - - if (count && results.length >= count) { - done(results); - } else { - cursor.continue(); - } - } else { - done(results); - } - }; - }); - } - /** - * Accepts a list of stores, a transaction type, and a callback and - * performs a transaction. A promise is returned that resolves to whatever - * value the callback chooses. The callback holds all the transaction logic - * and is invoked with two arguments: - * 1. The IDBTransaction object - * 2. A `done` function, that's used to resolve the promise when - * when the transaction is done, if passed a value, the promise is - * resolved to that value. - * - * @param {Array} storeNames An array of object store names - * involved in the transaction. - * @param {string} type Can be `readonly` or `readwrite`. - * @param {!Function} callback - * @return {*} The result of the transaction ran by the callback. - * @private - */ - - - async transaction(storeNames, type, callback) { - await this.open(); - return await new Promise((resolve, reject) => { - const txn = this._db.transaction(storeNames, type); - - txn.onabort = ({ - target - }) => reject(target.error); - - txn.oncomplete = () => resolve(); - - callback(txn, value => resolve(value)); - }); - } - /** - * Delegates async to a native IDBObjectStore method. - * - * @param {string} method The method name. - * @param {string} storeName The object store name. - * @param {string} type Can be `readonly` or `readwrite`. - * @param {...*} args The list of args to pass to the native method. - * @return {*} The result of the transaction. - * @private - */ - - - async _call(method, storeName, type, ...args) { - const callback = (txn, done) => { - txn.objectStore(storeName)[method](...args).onsuccess = ({ - target - }) => { - done(target.result); - }; - }; - - return await this.transaction([storeName], type, callback); - } - /** - * The default onversionchange handler, which closes the database so other - * connections can open without being blocked. - * - * @private - */ - - - _onversionchange() { - this.close(); - } - /** - * Closes the connection opened by `DBWrapper.open()`. Generally this method - * doesn't need to be called since: - * 1. It's usually better to keep a connection open since opening - * a new connection is somewhat slow. - * 2. Connections are automatically closed when the reference is - * garbage collected. - * The primary use case for needing to close a connection is when another - * reference (typically in another tab) needs to upgrade it and would be - * blocked by the current, open connection. - * - * @private - */ - - - close() { - if (this._db) { - this._db.close(); - - this._db = null; - } - } - - } // Exposed to let users modify the default timeout on a per-instance - // or global basis. - - DBWrapper.prototype.OPEN_TIMEOUT = 2000; // Wrap native IDBObjectStore methods according to their mode. - - const methodsToWrap = { - 'readonly': ['get', 'count', 'getKey', 'getAll', 'getAllKeys'], - 'readwrite': ['add', 'put', 'clear', 'delete'] - }; - - for (const [mode, methods] of Object.entries(methodsToWrap)) { - for (const method of methods) { - if (method in IDBObjectStore.prototype) { - // Don't use arrow functions here since we're outside of the class. - DBWrapper.prototype[method] = async function (storeName, ...args) { - return await this._call(method, storeName, mode, ...args); - }; - } - } - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * The Deferred class composes Promises in a way that allows for them to be - * resolved or rejected from outside the constructor. In most cases promises - * should be used directly, but Deferreds can be necessary when the logic to - * resolve a promise must be separate. - * - * @private - */ - - class Deferred { - /** - * Creates a promise and exposes its resolve and reject functions as methods. - */ - constructor() { - this.promise = new Promise((resolve, reject) => { - this.resolve = resolve; - this.reject = reject; - }); - } - - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Deletes the database. - * Note: this is exported separately from the DBWrapper module because most - * usages of IndexedDB in workbox dont need deleting, and this way it can be - * reused in tests to delete databases without creating DBWrapper instances. - * - * @param {string} name The database name. - * @private - */ - - const deleteDatabase = async name => { - await new Promise((resolve, reject) => { - const request = indexedDB.deleteDatabase(name); - - request.onerror = ({ - target - }) => { - reject(target.error); - }; - - request.onblocked = () => { - reject(new Error('Delete blocked')); - }; - - request.onsuccess = () => { - resolve(); - }; - }); - }; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Wrapper around the fetch API. - * - * Will call requestWillFetch on available plugins. - * - * @param {Object} options - * @param {Request|string} options.request - * @param {Object} [options.fetchOptions] - * @param {Event} [options.event] - * @param {Array} [options.plugins=[]] - * @return {Promise} - * - * @private - * @memberof module:workbox-core - */ - - const wrappedFetch = async ({ - request, - fetchOptions, - event, - plugins = [] - }) => { - // We *should* be able to call `await event.preloadResponse` even if it's - // undefined, but for some reason, doing so leads to errors in our Node unit - // tests. To work around that, explicitly check preloadResponse's value first. - if (event && event.preloadResponse) { - const possiblePreloadResponse = await event.preloadResponse; - - if (possiblePreloadResponse) { - { - logger.log(`Using a preloaded navigation response for ` + `'${getFriendlyURL(request.url)}'`); - } - - return possiblePreloadResponse; - } - } - - if (typeof request === 'string') { - request = new Request(request); - } - - { - finalAssertExports.isInstance(request, Request, { - paramName: request, - expectedClass: 'Request', - moduleName: 'workbox-core', - className: 'fetchWrapper', - funcName: 'wrappedFetch' - }); - } - - const failedFetchPlugins = pluginUtils.filter(plugins, pluginEvents.FETCH_DID_FAIL); // If there is a fetchDidFail plugin, we need to save a clone of the - // original request before it's either modified by a requestWillFetch - // plugin or before the original request's body is consumed via fetch(). - - const originalRequest = failedFetchPlugins.length > 0 ? request.clone() : null; - - try { - for (let plugin of plugins) { - if (pluginEvents.REQUEST_WILL_FETCH in plugin) { - request = await plugin[pluginEvents.REQUEST_WILL_FETCH].call(plugin, { - request: request.clone(), - event - }); - - { - if (request) { - finalAssertExports.isInstance(request, Request, { - moduleName: 'Plugin', - funcName: pluginEvents.CACHED_RESPONSE_WILL_BE_USED, - isReturnValueProblem: true - }); - } - } - } - } - } catch (err) { - throw new WorkboxError('plugin-error-request-will-fetch', { - thrownError: err - }); - } // The request can be altered by plugins with `requestWillFetch` making - // the original request (Most likely from a `fetch` event) to be different - // to the Request we make. Pass both to `fetchDidFail` to aid debugging. - - - let pluginFilteredRequest = request.clone(); - - try { - let fetchResponse; // See https://github.com/GoogleChrome/workbox/issues/1796 - - if (request.mode === 'navigate') { - fetchResponse = await fetch(request); - } else { - fetchResponse = await fetch(request, fetchOptions); - } - - { - logger.debug(`Network request for ` + `'${getFriendlyURL(request.url)}' returned a response with ` + `status '${fetchResponse.status}'.`); - } - - for (const plugin of plugins) { - if (pluginEvents.FETCH_DID_SUCCEED in plugin) { - fetchResponse = await plugin[pluginEvents.FETCH_DID_SUCCEED].call(plugin, { - event, - request: pluginFilteredRequest, - response: fetchResponse - }); - - { - if (fetchResponse) { - finalAssertExports.isInstance(fetchResponse, Response, { - moduleName: 'Plugin', - funcName: pluginEvents.FETCH_DID_SUCCEED, - isReturnValueProblem: true - }); - } - } - } - } - - return fetchResponse; - } catch (error) { - { - logger.error(`Network request for ` + `'${getFriendlyURL(request.url)}' threw an error.`, error); - } - - for (const plugin of failedFetchPlugins) { - await plugin[pluginEvents.FETCH_DID_FAIL].call(plugin, { - error, - event, - originalRequest: originalRequest.clone(), - request: pluginFilteredRequest.clone() - }); - } - - throw error; - } - }; - - const fetchWrapper = { - fetch: wrappedFetch - }; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - - var _private = /*#__PURE__*/Object.freeze({ - assert: finalAssertExports, - cacheNames: cacheNames, - cacheWrapper: cacheWrapper, - DBWrapper: DBWrapper, - Deferred: Deferred, - deleteDatabase: deleteDatabase, - executeQuotaErrorCallbacks: executeQuotaErrorCallbacks, - fetchWrapper: fetchWrapper, - getFriendlyURL: getFriendlyURL, - logger: logger, - WorkboxError: WorkboxError - }); - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Claim any currently available clients once the service worker - * becomes active. This is normally used in conjunction with `skipWaiting()`. - * - * @alias workbox.core.clientsClaim - */ - - const clientsClaim = () => { - addEventListener('activate', () => clients.claim()); - }; - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Get the current cache names and prefix/suffix used by Workbox. - * - * `cacheNames.precache` is used for precached assets, - * `cacheNames.googleAnalytics` is used by `workbox-google-analytics` to - * store `analytics.js`, and `cacheNames.runtime` is used for everything else. - * - * `cacheNames.prefix` can be used to retrieve just the current prefix value. - * `cacheNames.suffix` can be used to retrieve just the current suffix value. - * - * @return {Object} An object with `precache`, `runtime`, `prefix`, and - * `googleAnalytics` properties. - * - * @alias workbox.core.cacheNames - */ - - const cacheNames$1 = { - get googleAnalytics() { - return cacheNames.getGoogleAnalyticsName(); - }, - - get precache() { - return cacheNames.getPrecacheName(); - }, - - get prefix() { - return cacheNames.getPrefix(); - }, - - get runtime() { - return cacheNames.getRuntimeName(); - }, - - get suffix() { - return cacheNames.getSuffix(); - } - - }; - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Modifies the default cache names used by the Workbox packages. - * Cache names are generated as `--`. - * - * @param {Object} details - * @param {Object} [details.prefix] The string to add to the beginning of - * the precache and runtime cache names. - * @param {Object} [details.suffix] The string to add to the end of - * the precache and runtime cache names. - * @param {Object} [details.precache] The cache name to use for precache - * caching. - * @param {Object} [details.runtime] The cache name to use for runtime caching. - * @param {Object} [details.googleAnalytics] The cache name to use for - * `workbox-google-analytics` caching. - * - * @alias workbox.core.setCacheNameDetails - */ - - const setCacheNameDetails = details => { - { - Object.keys(details).forEach(key => { - finalAssertExports.isType(details[key], 'string', { - moduleName: 'workbox-core', - funcName: 'setCacheNameDetails', - paramName: `details.${key}` - }); - }); - - if ('precache' in details && details.precache.length === 0) { - throw new WorkboxError('invalid-cache-name', { - cacheNameId: 'precache', - value: details.precache - }); - } - - if ('runtime' in details && details.runtime.length === 0) { - throw new WorkboxError('invalid-cache-name', { - cacheNameId: 'runtime', - value: details.runtime - }); - } - - if ('googleAnalytics' in details && details.googleAnalytics.length === 0) { - throw new WorkboxError('invalid-cache-name', { - cacheNameId: 'googleAnalytics', - value: details.googleAnalytics - }); - } - } - - cacheNames.updateDetails(details); - }; - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Force a service worker to become active, instead of waiting. This is - * normally used in conjunction with `clientsClaim()`. - * - * @alias workbox.core.skipWaiting - */ - - const skipWaiting = () => { - // We need to explicitly call `self.skipWaiting()` here because we're - // shadowing `skipWaiting` with this local function. - addEventListener('install', () => self.skipWaiting()); - }; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - - try { - self.workbox.v = self.workbox.v || {}; - } catch (errer) {} // NOOP - - exports._private = _private; - exports.clientsClaim = clientsClaim; - exports.cacheNames = cacheNames$1; - exports.registerQuotaErrorCallback = registerQuotaErrorCallback; - exports.setCacheNameDetails = setCacheNameDetails; - exports.skipWaiting = skipWaiting; - - return exports; - -}({})); -//# sourceMappingURL=workbox-core.dev.js.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-core.dev.js.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-core.dev.js.map deleted file mode 100644 index 879a7658d..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-core.dev.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-core.dev.js","sources":["../_version.mjs","../_private/logger.mjs","../models/messages/messages.mjs","../models/messages/messageGenerator.mjs","../_private/WorkboxError.mjs","../_private/assert.mjs","../models/quotaErrorCallbacks.mjs","../registerQuotaErrorCallback.mjs","../_private/cacheNames.mjs","../_private/getFriendlyURL.mjs","../_private/executeQuotaErrorCallbacks.mjs","../models/pluginEvents.mjs","../utils/pluginUtils.mjs","../_private/cacheWrapper.mjs","../_private/DBWrapper.mjs","../_private/Deferred.mjs","../_private/deleteDatabase.mjs","../_private/fetchWrapper.mjs","../_private.mjs","../clientsClaim.mjs","../cacheNames.mjs","../setCacheNameDetails.mjs","../skipWaiting.mjs","../index.mjs"],"sourcesContent":["try{self['workbox:core:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\nconst logger = process.env.NODE_ENV === 'production' ? null : (() => {\n let inGroup = false;\n\n const methodToColorMap = {\n debug: `#7f8c8d`, // Gray\n log: `#2ecc71`, // Green\n warn: `#f39c12`, // Yellow\n error: `#c0392b`, // Red\n groupCollapsed: `#3498db`, // Blue\n groupEnd: null, // No colored prefix on groupEnd\n };\n\n const print = function(method, args) {\n if (method === 'groupCollapsed') {\n // Safari doesn't print all console.groupCollapsed() arguments:\n // https://bugs.webkit.org/show_bug.cgi?id=182754\n if (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n console[method](...args);\n return;\n }\n }\n\n const styles = [\n `background: ${methodToColorMap[method]}`,\n `border-radius: 0.5em`,\n `color: white`,\n `font-weight: bold`,\n `padding: 2px 0.5em`,\n ];\n\n // When in a group, the workbox prefix is not displayed.\n const logPrefix = inGroup ? [] : ['%cworkbox', styles.join(';')];\n\n console[method](...logPrefix, ...args);\n\n if (method === 'groupCollapsed') {\n inGroup = true;\n }\n if (method === 'groupEnd') {\n inGroup = false;\n }\n };\n\n const api = {};\n for (const method of Object.keys(methodToColorMap)) {\n api[method] = (...args) => {\n print(method, args);\n };\n }\n\n return api;\n})();\n\nexport {logger};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../../_version.mjs';\n\n\nexport const messages = {\n 'invalid-value': ({paramName, validValueDescription, value}) => {\n if (!paramName || !validValueDescription) {\n throw new Error(`Unexpected input to 'invalid-value' error.`);\n }\n return `The '${paramName}' parameter was given a value with an ` +\n `unexpected value. ${validValueDescription} Received a value of ` +\n `${JSON.stringify(value)}.`;\n },\n\n 'not-in-sw': ({moduleName}) => {\n if (!moduleName) {\n throw new Error(`Unexpected input to 'not-in-sw' error.`);\n }\n return `The '${moduleName}' must be used in a service worker.`;\n },\n\n 'not-an-array': ({moduleName, className, funcName, paramName}) => {\n if (!moduleName || !className || !funcName || !paramName) {\n throw new Error(`Unexpected input to 'not-an-array' error.`);\n }\n return `The parameter '${paramName}' passed into ` +\n `'${moduleName}.${className}.${funcName}()' must be an array.`;\n },\n\n 'incorrect-type': ({expectedType, paramName, moduleName, className,\n funcName}) => {\n if (!expectedType || !paramName || !moduleName || !funcName) {\n throw new Error(`Unexpected input to 'incorrect-type' error.`);\n }\n return `The parameter '${paramName}' passed into ` +\n `'${moduleName}.${className ? (className + '.') : ''}` +\n `${funcName}()' must be of type ${expectedType}.`;\n },\n\n 'incorrect-class': ({expectedClass, paramName, moduleName, className,\n funcName, isReturnValueProblem}) => {\n if (!expectedClass || !moduleName || !funcName) {\n throw new Error(`Unexpected input to 'incorrect-class' error.`);\n }\n\n if (isReturnValueProblem) {\n return `The return value from ` +\n `'${moduleName}.${className ? (className + '.') : ''}${funcName}()' ` +\n `must be an instance of class ${expectedClass.name}.`;\n }\n\n return `The parameter '${paramName}' passed into ` +\n `'${moduleName}.${className ? (className + '.') : ''}${funcName}()' ` +\n `must be an instance of class ${expectedClass.name}.`;\n },\n\n 'missing-a-method': ({expectedMethod, paramName, moduleName, className,\n funcName}) => {\n if (!expectedMethod || !paramName || !moduleName || !className\n || !funcName) {\n throw new Error(`Unexpected input to 'missing-a-method' error.`);\n }\n return `${moduleName}.${className}.${funcName}() expected the ` +\n `'${paramName}' parameter to expose a '${expectedMethod}' method.`;\n },\n\n 'add-to-cache-list-unexpected-type': ({entry}) => {\n return `An unexpected entry was passed to ` +\n `'workbox-precaching.PrecacheController.addToCacheList()' The entry ` +\n `'${JSON.stringify(entry)}' isn't supported. You must supply an array of ` +\n `strings with one or more characters, objects with a url property or ` +\n `Request objects.`;\n },\n\n 'add-to-cache-list-conflicting-entries': ({firstEntry, secondEntry}) => {\n if (!firstEntry || !secondEntry) {\n throw new Error(`Unexpected input to ` +\n `'add-to-cache-list-duplicate-entries' error.`);\n }\n\n return `Two of the entries passed to ` +\n `'workbox-precaching.PrecacheController.addToCacheList()' had the URL ` +\n `${firstEntry._entryId} but different revision details. Workbox is ` +\n `is unable to cache and version the asset correctly. Please remove one ` +\n `of the entries.`;\n },\n\n 'plugin-error-request-will-fetch': ({thrownError}) => {\n if (!thrownError) {\n throw new Error(`Unexpected input to ` +\n `'plugin-error-request-will-fetch', error.`);\n }\n\n return `An error was thrown by a plugins 'requestWillFetch()' method. ` +\n `The thrown error message was: '${thrownError.message}'.`;\n },\n\n 'invalid-cache-name': ({cacheNameId, value}) => {\n if (!cacheNameId) {\n throw new Error(\n `Expected a 'cacheNameId' for error 'invalid-cache-name'`);\n }\n\n return `You must provide a name containing at least one character for ` +\n `setCacheDeatils({${cacheNameId}: '...'}). Received a value of ` +\n `'${JSON.stringify(value)}'`;\n },\n\n 'unregister-route-but-not-found-with-method': ({method}) => {\n if (!method) {\n throw new Error(`Unexpected input to ` +\n `'unregister-route-but-not-found-with-method' error.`);\n }\n\n return `The route you're trying to unregister was not previously ` +\n `registered for the method type '${method}'.`;\n },\n\n 'unregister-route-route-not-registered': () => {\n return `The route you're trying to unregister was not previously ` +\n `registered.`;\n },\n\n 'queue-replay-failed': ({name}) => {\n return `Replaying the background sync queue '${name}' failed.`;\n },\n\n 'duplicate-queue-name': ({name}) => {\n return `The Queue name '${name}' is already being used. ` +\n `All instances of backgroundSync.Queue must be given unique names.`;\n },\n\n 'expired-test-without-max-age': ({methodName, paramName}) => {\n return `The '${methodName}()' method can only be used when the ` +\n `'${paramName}' is used in the constructor.`;\n },\n\n 'unsupported-route-type': ({moduleName, className, funcName, paramName}) => {\n return `The supplied '${paramName}' parameter was an unsupported type. ` +\n `Please check the docs for ${moduleName}.${className}.${funcName} for ` +\n `valid input types.`;\n },\n\n 'not-array-of-class': ({value, expectedClass,\n moduleName, className, funcName, paramName}) => {\n return `The supplied '${paramName}' parameter must be an array of ` +\n `'${expectedClass}' objects. Received '${JSON.stringify(value)},'. ` +\n `Please check the call to ${moduleName}.${className}.${funcName}() ` +\n `to fix the issue.`;\n },\n\n 'max-entries-or-age-required': ({moduleName, className, funcName}) => {\n return `You must define either config.maxEntries or config.maxAgeSeconds` +\n `in ${moduleName}.${className}.${funcName}`;\n },\n\n 'statuses-or-headers-required': ({moduleName, className, funcName}) => {\n return `You must define either config.statuses or config.headers` +\n `in ${moduleName}.${className}.${funcName}`;\n },\n\n 'invalid-string': ({moduleName, className, funcName, paramName}) => {\n if (!paramName || !moduleName || !funcName) {\n throw new Error(`Unexpected input to 'invalid-string' error.`);\n }\n return `When using strings, the '${paramName}' parameter must start with ` +\n `'http' (for cross-origin matches) or '/' (for same-origin matches). ` +\n `Please see the docs for ${moduleName}.${funcName}() for ` +\n `more info.`;\n },\n\n 'channel-name-required': () => {\n return `You must provide a channelName to construct a ` +\n `BroadcastCacheUpdate instance.`;\n },\n\n 'invalid-responses-are-same-args': () => {\n return `The arguments passed into responsesAreSame() appear to be ` +\n `invalid. Please ensure valid Responses are used.`;\n },\n\n 'expire-custom-caches-only': () => {\n return `You must provide a 'cacheName' property when using the ` +\n `expiration plugin with a runtime caching strategy.`;\n },\n\n 'unit-must-be-bytes': ({normalizedRangeHeader}) => {\n if (!normalizedRangeHeader) {\n throw new Error(`Unexpected input to 'unit-must-be-bytes' error.`);\n }\n return `The 'unit' portion of the Range header must be set to 'bytes'. ` +\n `The Range header provided was \"${normalizedRangeHeader}\"`;\n },\n\n 'single-range-only': ({normalizedRangeHeader}) => {\n if (!normalizedRangeHeader) {\n throw new Error(`Unexpected input to 'single-range-only' error.`);\n }\n return `Multiple ranges are not supported. Please use a single start ` +\n `value, and optional end value. The Range header provided was ` +\n `\"${normalizedRangeHeader}\"`;\n },\n\n 'invalid-range-values': ({normalizedRangeHeader}) => {\n if (!normalizedRangeHeader) {\n throw new Error(`Unexpected input to 'invalid-range-values' error.`);\n }\n return `The Range header is missing both start and end values. At least ` +\n `one of those values is needed. The Range header provided was ` +\n `\"${normalizedRangeHeader}\"`;\n },\n\n 'no-range-header': () => {\n return `No Range header was found in the Request provided.`;\n },\n\n 'range-not-satisfiable': ({size, start, end}) => {\n return `The start (${start}) and end (${end}) values in the Range are ` +\n `not satisfiable by the cached response, which is ${size} bytes.`;\n },\n\n 'attempt-to-cache-non-get-request': ({url, method}) => {\n return `Unable to cache '${url}' because it is a '${method}' request and ` +\n `only 'GET' requests can be cached.`;\n },\n\n 'cache-put-with-no-response': ({url}) => {\n return `There was an attempt to cache '${url}' but the response was not ` +\n `defined.`;\n },\n\n 'no-response': ({url, error}) => {\n let message = `The strategy could not generate a response for '${url}'.`;\n if (error) {\n message += ` The underlying error is ${error}.`;\n }\n return message;\n },\n\n 'bad-precaching-response': ({url, status}) => {\n return `The precaching request for '${url}' failed with an HTTP ` +\n `status of ${status}.`;\n },\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {messages} from './messages.mjs';\nimport '../../_version.mjs';\n\nconst fallback = (code, ...args) => {\n let msg = code;\n if (args.length > 0) {\n msg += ` :: ${JSON.stringify(args)}`;\n }\n return msg;\n};\n\nconst generatorFunction = (code, ...args) => {\n const message = messages[code];\n if (!message) {\n throw new Error(`Unable to find message for code '${code}'.`);\n }\n\n return message(...args);\n};\n\nexport const messageGenerator = (process.env.NODE_ENV === 'production') ?\n fallback : generatorFunction;\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {messageGenerator} from '../models/messages/messageGenerator.mjs';\nimport '../_version.mjs';\n\n/**\n * Workbox errors should be thrown with this class.\n * This allows use to ensure the type easily in tests,\n * helps developers identify errors from workbox\n * easily and allows use to optimise error\n * messages correctly.\n *\n * @private\n */\nclass WorkboxError extends Error {\n /**\n *\n * @param {string} errorCode The error code that\n * identifies this particular error.\n * @param {Object=} details Any relevant arguments\n * that will help developers identify issues should\n * be added as a key on the context object.\n */\n constructor(errorCode, details) {\n let message = messageGenerator(errorCode, details);\n\n super(message);\n\n this.name = errorCode;\n this.details = details;\n }\n}\n\nexport {WorkboxError};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {WorkboxError} from '../_private/WorkboxError.mjs';\nimport '../_version.mjs';\n\n/*\n * This method returns true if the current context is a service worker.\n */\nconst isSWEnv = (moduleName) => {\n if (!('ServiceWorkerGlobalScope' in self)) {\n throw new WorkboxError('not-in-sw', {moduleName});\n }\n};\n\n/*\n * This method throws if the supplied value is not an array.\n * The destructed values are required to produce a meaningful error for users.\n * The destructed and restructured object is so it's clear what is\n * needed.\n */\nconst isArray = (value, {moduleName, className, funcName, paramName}) => {\n if (!Array.isArray(value)) {\n throw new WorkboxError('not-an-array', {\n moduleName,\n className,\n funcName,\n paramName,\n });\n }\n};\n\nconst hasMethod = (object, expectedMethod,\n {moduleName, className, funcName, paramName}) => {\n const type = typeof object[expectedMethod];\n if (type !== 'function') {\n throw new WorkboxError('missing-a-method', {paramName, expectedMethod,\n moduleName, className, funcName});\n }\n};\n\nconst isType = (object, expectedType,\n {moduleName, className, funcName, paramName}) => {\n if (typeof object !== expectedType) {\n throw new WorkboxError('incorrect-type', {paramName, expectedType,\n moduleName, className, funcName});\n }\n};\n\nconst isInstance = (object, expectedClass,\n {moduleName, className, funcName,\n paramName, isReturnValueProblem}) => {\n if (!(object instanceof expectedClass)) {\n throw new WorkboxError('incorrect-class', {paramName, expectedClass,\n moduleName, className, funcName, isReturnValueProblem});\n }\n};\n\nconst isOneOf = (value, validValues, {paramName}) => {\n if (!validValues.includes(value)) {\n throw new WorkboxError('invalid-value', {\n paramName,\n value,\n validValueDescription: `Valid values are ${JSON.stringify(validValues)}.`,\n });\n }\n};\n\nconst isArrayOfClass = (value, expectedClass,\n {moduleName, className, funcName, paramName}) => {\n const error = new WorkboxError('not-array-of-class', {\n value, expectedClass,\n moduleName, className, funcName, paramName,\n });\n if (!Array.isArray(value)) {\n throw error;\n }\n\n for (let item of value) {\n if (!(item instanceof expectedClass)) {\n throw error;\n }\n }\n};\n\nconst finalAssertExports = process.env.NODE_ENV === 'production' ? null : {\n hasMethod,\n isArray,\n isInstance,\n isOneOf,\n isSWEnv,\n isType,\n isArrayOfClass,\n};\n\nexport {finalAssertExports as assert};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\n// Callbacks to be executed whenever there's a quota error.\nconst quotaErrorCallbacks = new Set();\n\nexport {quotaErrorCallbacks};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {logger} from './_private/logger.mjs';\nimport {assert} from './_private/assert.mjs';\nimport {quotaErrorCallbacks} from './models/quotaErrorCallbacks.mjs';\nimport './_version.mjs';\n\n\n/**\n * Adds a function to the set of quotaErrorCallbacks that will be executed if\n * there's a quota error.\n *\n * @param {Function} callback\n * @memberof workbox.core\n */\nfunction registerQuotaErrorCallback(callback) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(callback, 'function', {\n moduleName: 'workbox-core',\n funcName: 'register',\n paramName: 'callback',\n });\n }\n\n quotaErrorCallbacks.add(callback);\n\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Registered a callback to respond to quota errors.', callback);\n }\n}\n\nexport {registerQuotaErrorCallback};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\nconst _cacheNameDetails = {\n googleAnalytics: 'googleAnalytics',\n precache: 'precache-v2',\n prefix: 'workbox',\n runtime: 'runtime',\n suffix: self.registration.scope,\n};\n\nconst _createCacheName = (cacheName) => {\n return [_cacheNameDetails.prefix, cacheName, _cacheNameDetails.suffix]\n .filter((value) => value.length > 0)\n .join('-');\n};\n\nexport const cacheNames = {\n updateDetails: (details) => {\n Object.keys(_cacheNameDetails).forEach((key) => {\n if (typeof details[key] !== 'undefined') {\n _cacheNameDetails[key] = details[key];\n }\n });\n },\n getGoogleAnalyticsName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.googleAnalytics);\n },\n getPrecacheName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.precache);\n },\n getPrefix: () => {\n return _cacheNameDetails.prefix;\n },\n getRuntimeName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.runtime);\n },\n getSuffix: () => {\n return _cacheNameDetails.suffix;\n },\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\nconst getFriendlyURL = (url) => {\n const urlObj = new URL(url, location);\n if (urlObj.origin === location.origin) {\n return urlObj.pathname;\n }\n return urlObj.href;\n};\n\nexport {getFriendlyURL};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {logger} from '../_private/logger.mjs';\nimport {quotaErrorCallbacks} from '../models/quotaErrorCallbacks.mjs';\nimport '../_version.mjs';\n\n\n/**\n * Runs all of the callback functions, one at a time sequentially, in the order\n * in which they were registered.\n *\n * @memberof workbox.core\n * @private\n */\nasync function executeQuotaErrorCallbacks() {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`About to run ${quotaErrorCallbacks.size} ` +\n `callbacks to clean up caches.`);\n }\n\n for (const callback of quotaErrorCallbacks) {\n await callback();\n if (process.env.NODE_ENV !== 'production') {\n logger.log(callback, 'is complete.');\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Finished running callbacks.');\n }\n}\n\nexport {executeQuotaErrorCallbacks};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\nexport const pluginEvents = {\n CACHE_DID_UPDATE: 'cacheDidUpdate',\n CACHE_KEY_WILL_BE_USED: 'cacheKeyWillBeUsed',\n CACHE_WILL_UPDATE: 'cacheWillUpdate',\n CACHED_RESPONSE_WILL_BE_USED: 'cachedResponseWillBeUsed',\n FETCH_DID_FAIL: 'fetchDidFail',\n FETCH_DID_SUCCEED: 'fetchDidSucceed',\n REQUEST_WILL_FETCH: 'requestWillFetch',\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\nexport const pluginUtils = {\n filter: (plugins, callbackName) => {\n return plugins.filter((plugin) => callbackName in plugin);\n },\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {WorkboxError} from './WorkboxError.mjs';\nimport {assert} from './assert.mjs';\nimport {getFriendlyURL} from './getFriendlyURL.mjs';\nimport {logger} from './logger.mjs';\nimport {executeQuotaErrorCallbacks} from './executeQuotaErrorCallbacks.mjs';\nimport {pluginEvents} from '../models/pluginEvents.mjs';\nimport {pluginUtils} from '../utils/pluginUtils.mjs';\nimport '../_version.mjs';\n\n\n/**\n * Wrapper around cache.put().\n *\n * Will call `cacheDidUpdate` on plugins if the cache was updated, using\n * `matchOptions` when determining what the old entry is.\n *\n * @param {Object} options\n * @param {string} options.cacheName\n * @param {Request} options.request\n * @param {Response} options.response\n * @param {Event} [options.event]\n * @param {Array} [options.plugins=[]]\n * @param {Object} [options.matchOptions]\n *\n * @private\n * @memberof module:workbox-core\n */\nconst putWrapper = async ({\n cacheName,\n request,\n response,\n event,\n plugins = [],\n matchOptions,\n} = {}) => {\n if (process.env.NODE_ENV !== 'production') {\n if (request.method && request.method !== 'GET') {\n throw new WorkboxError('attempt-to-cache-non-get-request', {\n url: getFriendlyURL(request.url),\n method: request.method,\n });\n }\n }\n\n const effectiveRequest = await _getEffectiveRequest({\n plugins, request, mode: 'write'});\n\n if (!response) {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(`Cannot cache non-existent response for ` +\n `'${getFriendlyURL(effectiveRequest.url)}'.`);\n }\n\n throw new WorkboxError('cache-put-with-no-response', {\n url: getFriendlyURL(effectiveRequest.url),\n });\n }\n\n let responseToCache = await _isResponseSafeToCache({\n event,\n plugins,\n response,\n request: effectiveRequest,\n });\n\n if (!responseToCache) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Response '${getFriendlyURL(effectiveRequest.url)}' will ` +\n `not be cached.`, responseToCache);\n }\n return;\n }\n\n const cache = await caches.open(cacheName);\n\n const updatePlugins = pluginUtils.filter(\n plugins, pluginEvents.CACHE_DID_UPDATE);\n\n let oldResponse = updatePlugins.length > 0 ?\n await matchWrapper({cacheName, matchOptions, request: effectiveRequest}) :\n null;\n\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Updating the '${cacheName}' cache with a new Response for ` +\n `${getFriendlyURL(effectiveRequest.url)}.`);\n }\n\n try {\n await cache.put(effectiveRequest, responseToCache);\n } catch (error) {\n // See https://developer.mozilla.org/en-US/docs/Web/API/DOMException#exception-QuotaExceededError\n if (error.name === 'QuotaExceededError') {\n await executeQuotaErrorCallbacks();\n }\n throw error;\n }\n\n for (let plugin of updatePlugins) {\n await plugin[pluginEvents.CACHE_DID_UPDATE].call(plugin, {\n cacheName,\n event,\n oldResponse,\n newResponse: responseToCache,\n request: effectiveRequest,\n });\n }\n};\n\n/**\n * This is a wrapper around cache.match().\n *\n * @param {Object} options\n * @param {string} options.cacheName Name of the cache to match against.\n * @param {Request} options.request The Request that will be used to look up\n * cache entries.\n * @param {Event} [options.event] The event that propted the action.\n * @param {Object} [options.matchOptions] Options passed to cache.match().\n * @param {Array} [options.plugins=[]] Array of plugins.\n * @return {Response} A cached response if available.\n *\n * @private\n * @memberof module:workbox-core\n */\nconst matchWrapper = async ({\n cacheName,\n request,\n event,\n matchOptions,\n plugins = [],\n}) => {\n const cache = await caches.open(cacheName);\n\n const effectiveRequest = await _getEffectiveRequest({\n plugins, request, mode: 'read'});\n\n let cachedResponse = await cache.match(effectiveRequest, matchOptions);\n if (process.env.NODE_ENV !== 'production') {\n if (cachedResponse) {\n logger.debug(`Found a cached response in '${cacheName}'.`);\n } else {\n logger.debug(`No cached response found in '${cacheName}'.`);\n }\n }\n\n for (const plugin of plugins) {\n if (pluginEvents.CACHED_RESPONSE_WILL_BE_USED in plugin) {\n cachedResponse = await plugin[pluginEvents.CACHED_RESPONSE_WILL_BE_USED]\n .call(plugin, {\n cacheName,\n event,\n matchOptions,\n cachedResponse,\n request: effectiveRequest,\n });\n if (process.env.NODE_ENV !== 'production') {\n if (cachedResponse) {\n assert.isInstance(cachedResponse, Response, {\n moduleName: 'Plugin',\n funcName: pluginEvents.CACHED_RESPONSE_WILL_BE_USED,\n isReturnValueProblem: true,\n });\n }\n }\n }\n }\n\n return cachedResponse;\n};\n\n/**\n * This method will call cacheWillUpdate on the available plugins (or use\n * status === 200) to determine if the Response is safe and valid to cache.\n *\n * @param {Object} options\n * @param {Request} options.request\n * @param {Response} options.response\n * @param {Event} [options.event]\n * @param {Array} [options.plugins=[]]\n * @return {Promise}\n *\n * @private\n * @memberof module:workbox-core\n */\nconst _isResponseSafeToCache = async ({request, response, event, plugins}) => {\n let responseToCache = response;\n let pluginsUsed = false;\n for (let plugin of plugins) {\n if (pluginEvents.CACHE_WILL_UPDATE in plugin) {\n pluginsUsed = true;\n responseToCache = await plugin[pluginEvents.CACHE_WILL_UPDATE]\n .call(plugin, {\n request,\n response: responseToCache,\n event,\n });\n\n if (process.env.NODE_ENV !== 'production') {\n if (responseToCache) {\n assert.isInstance(responseToCache, Response, {\n moduleName: 'Plugin',\n funcName: pluginEvents.CACHE_WILL_UPDATE,\n isReturnValueProblem: true,\n });\n }\n }\n\n if (!responseToCache) {\n break;\n }\n }\n }\n\n if (!pluginsUsed) {\n if (process.env.NODE_ENV !== 'production') {\n if (!responseToCache.status === 200) {\n if (responseToCache.status === 0) {\n logger.warn(`The response for '${request.url}' is an opaque ` +\n `response. The caching strategy that you're using will not ` +\n `cache opaque responses by default.`);\n } else {\n logger.debug(`The response for '${request.url}' returned ` +\n `a status code of '${response.status}' and won't be cached as a ` +\n `result.`);\n }\n }\n }\n responseToCache = responseToCache.status === 200 ? responseToCache : null;\n }\n\n return responseToCache ? responseToCache : null;\n};\n\n/**\n * Checks the list of plugins for the cacheKeyWillBeUsed callback, and\n * executes any of those callbacks found in sequence. The final `Request` object\n * returned by the last plugin is treated as the cache key for cache reads\n * and/or writes.\n *\n * @param {Object} options\n * @param {Request} options.request\n * @param {string} options.mode\n * @param {Array} [options.plugins=[]]\n * @return {Promise}\n *\n * @private\n * @memberof module:workbox-core\n */\nconst _getEffectiveRequest = async ({request, mode, plugins}) => {\n const cacheKeyWillBeUsedPlugins = pluginUtils.filter(\n plugins, pluginEvents.CACHE_KEY_WILL_BE_USED);\n\n let effectiveRequest = request;\n for (const plugin of cacheKeyWillBeUsedPlugins) {\n effectiveRequest = await plugin[pluginEvents.CACHE_KEY_WILL_BE_USED].call(\n plugin, {mode, request: effectiveRequest});\n\n if (typeof effectiveRequest === 'string') {\n effectiveRequest = new Request(effectiveRequest);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(effectiveRequest, Request, {\n moduleName: 'Plugin',\n funcName: pluginEvents.CACHE_KEY_WILL_BE_USED,\n isReturnValueProblem: true,\n });\n }\n }\n\n return effectiveRequest;\n};\n\nexport const cacheWrapper = {\n put: putWrapper,\n match: matchWrapper,\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\n/**\n * A class that wraps common IndexedDB functionality in a promise-based API.\n * It exposes all the underlying power and functionality of IndexedDB, but\n * wraps the most commonly used features in a way that's much simpler to use.\n *\n * @private\n */\nexport class DBWrapper {\n /**\n * @param {string} name\n * @param {number} version\n * @param {Object=} [callback]\n * @param {!Function} [callbacks.onupgradeneeded]\n * @param {!Function} [callbacks.onversionchange] Defaults to\n * DBWrapper.prototype._onversionchange when not specified.\n * @private\n */\n constructor(name, version, {\n onupgradeneeded,\n onversionchange = this._onversionchange,\n } = {}) {\n this._name = name;\n this._version = version;\n this._onupgradeneeded = onupgradeneeded;\n this._onversionchange = onversionchange;\n\n // If this is null, it means the database isn't open.\n this._db = null;\n }\n\n /**\n * Returns the IDBDatabase instance (not normally needed).\n *\n * @private\n */\n get db() {\n return this._db;\n }\n\n /**\n * Opens a connected to an IDBDatabase, invokes any onupgradedneeded\n * callback, and added an onversionchange callback to the database.\n *\n * @return {IDBDatabase}\n * @private\n */\n async open() {\n if (this._db) return;\n\n this._db = await new Promise((resolve, reject) => {\n // This flag is flipped to true if the timeout callback runs prior\n // to the request failing or succeeding. Note: we use a timeout instead\n // of an onblocked handler since there are cases where onblocked will\n // never never run. A timeout better handles all possible scenarios:\n // https://github.com/w3c/IndexedDB/issues/223\n let openRequestTimedOut = false;\n setTimeout(() => {\n openRequestTimedOut = true;\n reject(new Error('The open request was blocked and timed out'));\n }, this.OPEN_TIMEOUT);\n\n const openRequest = indexedDB.open(this._name, this._version);\n openRequest.onerror = () => reject(openRequest.error);\n openRequest.onupgradeneeded = (evt) => {\n if (openRequestTimedOut) {\n openRequest.transaction.abort();\n evt.target.result.close();\n } else if (this._onupgradeneeded) {\n this._onupgradeneeded(evt);\n }\n };\n openRequest.onsuccess = ({target}) => {\n const db = target.result;\n if (openRequestTimedOut) {\n db.close();\n } else {\n db.onversionchange = this._onversionchange.bind(this);\n resolve(db);\n }\n };\n });\n\n return this;\n }\n\n /**\n * Polyfills the native `getKey()` method. Note, this is overridden at\n * runtime if the browser supports the native method.\n *\n * @param {string} storeName\n * @param {*} query\n * @return {Array}\n * @private\n */\n async getKey(storeName, query) {\n return (await this.getAllKeys(storeName, query, 1))[0];\n }\n\n /**\n * Polyfills the native `getAll()` method. Note, this is overridden at\n * runtime if the browser supports the native method.\n *\n * @param {string} storeName\n * @param {*} query\n * @param {number} count\n * @return {Array}\n * @private\n */\n async getAll(storeName, query, count) {\n return await this.getAllMatching(storeName, {query, count});\n }\n\n\n /**\n * Polyfills the native `getAllKeys()` method. Note, this is overridden at\n * runtime if the browser supports the native method.\n *\n * @param {string} storeName\n * @param {*} query\n * @param {number} count\n * @return {Array}\n * @private\n */\n async getAllKeys(storeName, query, count) {\n return (await this.getAllMatching(\n storeName, {query, count, includeKeys: true})).map(({key}) => key);\n }\n\n /**\n * Supports flexible lookup in an object store by specifying an index,\n * query, direction, and count. This method returns an array of objects\n * with the signature .\n *\n * @param {string} storeName\n * @param {Object} [opts]\n * @param {string} [opts.index] The index to use (if specified).\n * @param {*} [opts.query]\n * @param {IDBCursorDirection} [opts.direction]\n * @param {number} [opts.count] The max number of results to return.\n * @param {boolean} [opts.includeKeys] When true, the structure of the\n * returned objects is changed from an array of values to an array of\n * objects in the form {key, primaryKey, value}.\n * @return {Array}\n * @private\n */\n async getAllMatching(storeName, {\n index,\n query = null, // IE errors if query === `undefined`.\n direction = 'next',\n count,\n includeKeys,\n } = {}) {\n return await this.transaction([storeName], 'readonly', (txn, done) => {\n const store = txn.objectStore(storeName);\n const target = index ? store.index(index) : store;\n const results = [];\n\n target.openCursor(query, direction).onsuccess = ({target}) => {\n const cursor = target.result;\n if (cursor) {\n const {primaryKey, key, value} = cursor;\n results.push(includeKeys ? {primaryKey, key, value} : value);\n if (count && results.length >= count) {\n done(results);\n } else {\n cursor.continue();\n }\n } else {\n done(results);\n }\n };\n });\n }\n\n /**\n * Accepts a list of stores, a transaction type, and a callback and\n * performs a transaction. A promise is returned that resolves to whatever\n * value the callback chooses. The callback holds all the transaction logic\n * and is invoked with two arguments:\n * 1. The IDBTransaction object\n * 2. A `done` function, that's used to resolve the promise when\n * when the transaction is done, if passed a value, the promise is\n * resolved to that value.\n *\n * @param {Array} storeNames An array of object store names\n * involved in the transaction.\n * @param {string} type Can be `readonly` or `readwrite`.\n * @param {!Function} callback\n * @return {*} The result of the transaction ran by the callback.\n * @private\n */\n async transaction(storeNames, type, callback) {\n await this.open();\n return await new Promise((resolve, reject) => {\n const txn = this._db.transaction(storeNames, type);\n txn.onabort = ({target}) => reject(target.error);\n txn.oncomplete = () => resolve();\n\n callback(txn, (value) => resolve(value));\n });\n }\n\n /**\n * Delegates async to a native IDBObjectStore method.\n *\n * @param {string} method The method name.\n * @param {string} storeName The object store name.\n * @param {string} type Can be `readonly` or `readwrite`.\n * @param {...*} args The list of args to pass to the native method.\n * @return {*} The result of the transaction.\n * @private\n */\n async _call(method, storeName, type, ...args) {\n const callback = (txn, done) => {\n txn.objectStore(storeName)[method](...args).onsuccess = ({target}) => {\n done(target.result);\n };\n };\n\n return await this.transaction([storeName], type, callback);\n }\n\n /**\n * The default onversionchange handler, which closes the database so other\n * connections can open without being blocked.\n *\n * @private\n */\n _onversionchange() {\n this.close();\n }\n\n /**\n * Closes the connection opened by `DBWrapper.open()`. Generally this method\n * doesn't need to be called since:\n * 1. It's usually better to keep a connection open since opening\n * a new connection is somewhat slow.\n * 2. Connections are automatically closed when the reference is\n * garbage collected.\n * The primary use case for needing to close a connection is when another\n * reference (typically in another tab) needs to upgrade it and would be\n * blocked by the current, open connection.\n *\n * @private\n */\n close() {\n if (this._db) {\n this._db.close();\n this._db = null;\n }\n }\n}\n\n// Exposed to let users modify the default timeout on a per-instance\n// or global basis.\nDBWrapper.prototype.OPEN_TIMEOUT = 2000;\n\n// Wrap native IDBObjectStore methods according to their mode.\nconst methodsToWrap = {\n 'readonly': ['get', 'count', 'getKey', 'getAll', 'getAllKeys'],\n 'readwrite': ['add', 'put', 'clear', 'delete'],\n};\nfor (const [mode, methods] of Object.entries(methodsToWrap)) {\n for (const method of methods) {\n if (method in IDBObjectStore.prototype) {\n // Don't use arrow functions here since we're outside of the class.\n DBWrapper.prototype[method] = async function(storeName, ...args) {\n return await this._call(method, storeName, mode, ...args);\n };\n }\n }\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\n/**\n * The Deferred class composes Promises in a way that allows for them to be\n * resolved or rejected from outside the constructor. In most cases promises\n * should be used directly, but Deferreds can be necessary when the logic to\n * resolve a promise must be separate.\n *\n * @private\n */\nexport class Deferred {\n /**\n * Creates a promise and exposes its resolve and reject functions as methods.\n */\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\n/**\n * Deletes the database.\n * Note: this is exported separately from the DBWrapper module because most\n * usages of IndexedDB in workbox dont need deleting, and this way it can be\n * reused in tests to delete databases without creating DBWrapper instances.\n *\n * @param {string} name The database name.\n * @private\n */\nexport const deleteDatabase = async (name) => {\n await new Promise((resolve, reject) => {\n const request = indexedDB.deleteDatabase(name);\n request.onerror = ({target}) => {\n reject(target.error);\n };\n request.onblocked = () => {\n reject(new Error('Delete blocked'));\n };\n request.onsuccess = () => {\n resolve();\n };\n });\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {WorkboxError} from './WorkboxError.mjs';\nimport {logger} from './logger.mjs';\nimport {assert} from './assert.mjs';\nimport {getFriendlyURL} from '../_private/getFriendlyURL.mjs';\nimport {pluginEvents} from '../models/pluginEvents.mjs';\nimport {pluginUtils} from '../utils/pluginUtils.mjs';\nimport '../_version.mjs';\n\n/**\n * Wrapper around the fetch API.\n *\n * Will call requestWillFetch on available plugins.\n *\n * @param {Object} options\n * @param {Request|string} options.request\n * @param {Object} [options.fetchOptions]\n * @param {Event} [options.event]\n * @param {Array} [options.plugins=[]]\n * @return {Promise}\n *\n * @private\n * @memberof module:workbox-core\n */\nconst wrappedFetch = async ({\n request,\n fetchOptions,\n event,\n plugins = []}) => {\n // We *should* be able to call `await event.preloadResponse` even if it's\n // undefined, but for some reason, doing so leads to errors in our Node unit\n // tests. To work around that, explicitly check preloadResponse's value first.\n if (event && event.preloadResponse) {\n const possiblePreloadResponse = await event.preloadResponse;\n if (possiblePreloadResponse) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Using a preloaded navigation response for ` +\n `'${getFriendlyURL(request.url)}'`);\n }\n return possiblePreloadResponse;\n }\n }\n\n if (typeof request === 'string') {\n request = new Request(request);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n paramName: request,\n expectedClass: 'Request',\n moduleName: 'workbox-core',\n className: 'fetchWrapper',\n funcName: 'wrappedFetch',\n });\n }\n\n const failedFetchPlugins = pluginUtils.filter(\n plugins, pluginEvents.FETCH_DID_FAIL);\n\n // If there is a fetchDidFail plugin, we need to save a clone of the\n // original request before it's either modified by a requestWillFetch\n // plugin or before the original request's body is consumed via fetch().\n const originalRequest = failedFetchPlugins.length > 0 ?\n request.clone() : null;\n\n try {\n for (let plugin of plugins) {\n if (pluginEvents.REQUEST_WILL_FETCH in plugin) {\n request = await plugin[pluginEvents.REQUEST_WILL_FETCH].call(plugin, {\n request: request.clone(),\n event,\n });\n\n if (process.env.NODE_ENV !== 'production') {\n if (request) {\n assert.isInstance(request, Request, {\n moduleName: 'Plugin',\n funcName: pluginEvents.CACHED_RESPONSE_WILL_BE_USED,\n isReturnValueProblem: true,\n });\n }\n }\n }\n }\n } catch (err) {\n throw new WorkboxError('plugin-error-request-will-fetch', {\n thrownError: err,\n });\n }\n\n // The request can be altered by plugins with `requestWillFetch` making\n // the original request (Most likely from a `fetch` event) to be different\n // to the Request we make. Pass both to `fetchDidFail` to aid debugging.\n let pluginFilteredRequest = request.clone();\n\n try {\n let fetchResponse;\n\n // See https://github.com/GoogleChrome/workbox/issues/1796\n if (request.mode === 'navigate') {\n fetchResponse = await fetch(request);\n } else {\n fetchResponse = await fetch(request, fetchOptions);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Network request for `+\n `'${getFriendlyURL(request.url)}' returned a response with ` +\n `status '${fetchResponse.status}'.`);\n }\n\n for (const plugin of plugins) {\n if (pluginEvents.FETCH_DID_SUCCEED in plugin) {\n fetchResponse = await plugin[pluginEvents.FETCH_DID_SUCCEED]\n .call(plugin, {\n event,\n request: pluginFilteredRequest,\n response: fetchResponse,\n });\n\n if (process.env.NODE_ENV !== 'production') {\n if (fetchResponse) {\n assert.isInstance(fetchResponse, Response, {\n moduleName: 'Plugin',\n funcName: pluginEvents.FETCH_DID_SUCCEED,\n isReturnValueProblem: true,\n });\n }\n }\n }\n }\n\n return fetchResponse;\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(`Network request for `+\n `'${getFriendlyURL(request.url)}' threw an error.`, error);\n }\n\n for (const plugin of failedFetchPlugins) {\n await plugin[pluginEvents.FETCH_DID_FAIL].call(plugin, {\n error,\n event,\n originalRequest: originalRequest.clone(),\n request: pluginFilteredRequest.clone(),\n });\n }\n\n throw error;\n }\n};\n\nconst fetchWrapper = {\n fetch: wrappedFetch,\n};\n\nexport {fetchWrapper};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\n// We either expose defaults or we expose every named export.\nimport {assert} from './_private/assert.mjs';\nimport {cacheNames} from './_private/cacheNames.mjs';\nimport {cacheWrapper} from './_private/cacheWrapper.mjs';\nimport {DBWrapper} from './_private/DBWrapper.mjs';\nimport {Deferred} from './_private/Deferred.mjs';\nimport {deleteDatabase} from './_private/deleteDatabase.mjs';\nimport {executeQuotaErrorCallbacks} from './_private/executeQuotaErrorCallbacks.mjs';\nimport {fetchWrapper} from './_private/fetchWrapper.mjs';\nimport {getFriendlyURL} from './_private/getFriendlyURL.mjs';\nimport {logger} from './_private/logger.mjs';\nimport {WorkboxError} from './_private/WorkboxError.mjs';\n\nimport './_version.mjs';\n\nexport {\n assert,\n cacheNames,\n cacheWrapper,\n DBWrapper,\n Deferred,\n deleteDatabase,\n executeQuotaErrorCallbacks,\n fetchWrapper,\n getFriendlyURL,\n logger,\n WorkboxError,\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport './_version.mjs';\n\n\n/**\n * Claim any currently available clients once the service worker\n * becomes active. This is normally used in conjunction with `skipWaiting()`.\n *\n * @alias workbox.core.clientsClaim\n */\nexport const clientsClaim = () => {\n addEventListener('activate', () => clients.claim());\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {cacheNames as _cacheNames} from './_private/cacheNames.mjs';\nimport './_version.mjs';\n\n\n/**\n * Get the current cache names and prefix/suffix used by Workbox.\n *\n * `cacheNames.precache` is used for precached assets,\n * `cacheNames.googleAnalytics` is used by `workbox-google-analytics` to\n * store `analytics.js`, and `cacheNames.runtime` is used for everything else.\n *\n * `cacheNames.prefix` can be used to retrieve just the current prefix value.\n * `cacheNames.suffix` can be used to retrieve just the current suffix value.\n *\n * @return {Object} An object with `precache`, `runtime`, `prefix`, and\n * `googleAnalytics` properties.\n *\n * @alias workbox.core.cacheNames\n */\nexport const cacheNames = {\n get googleAnalytics() {\n return _cacheNames.getGoogleAnalyticsName();\n },\n get precache() {\n return _cacheNames.getPrecacheName();\n },\n get prefix() {\n return _cacheNames.getPrefix();\n },\n get runtime() {\n return _cacheNames.getRuntimeName();\n },\n get suffix() {\n return _cacheNames.getSuffix();\n },\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from './_private/assert.mjs';\nimport {cacheNames} from './_private/cacheNames.mjs';\nimport {WorkboxError} from './_private/WorkboxError.mjs';\nimport './_version.mjs';\n\n\n/**\n * Modifies the default cache names used by the Workbox packages.\n * Cache names are generated as `--`.\n *\n * @param {Object} details\n * @param {Object} [details.prefix] The string to add to the beginning of\n * the precache and runtime cache names.\n * @param {Object} [details.suffix] The string to add to the end of\n * the precache and runtime cache names.\n * @param {Object} [details.precache] The cache name to use for precache\n * caching.\n * @param {Object} [details.runtime] The cache name to use for runtime caching.\n * @param {Object} [details.googleAnalytics] The cache name to use for\n * `workbox-google-analytics` caching.\n *\n * @alias workbox.core.setCacheNameDetails\n */\nexport const setCacheNameDetails = (details) => {\n if (process.env.NODE_ENV !== 'production') {\n Object.keys(details).forEach((key) => {\n assert.isType(details[key], 'string', {\n moduleName: 'workbox-core',\n funcName: 'setCacheNameDetails',\n paramName: `details.${key}`,\n });\n });\n\n if ('precache' in details && details.precache.length === 0) {\n throw new WorkboxError('invalid-cache-name', {\n cacheNameId: 'precache',\n value: details.precache,\n });\n }\n\n if ('runtime' in details && details.runtime.length === 0) {\n throw new WorkboxError('invalid-cache-name', {\n cacheNameId: 'runtime',\n value: details.runtime,\n });\n }\n\n if ('googleAnalytics' in details && details.googleAnalytics.length === 0) {\n throw new WorkboxError('invalid-cache-name', {\n cacheNameId: 'googleAnalytics',\n value: details.googleAnalytics,\n });\n }\n }\n\n cacheNames.updateDetails(details);\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport './_version.mjs';\n\n\n/**\n * Force a service worker to become active, instead of waiting. This is\n * normally used in conjunction with `clientsClaim()`.\n *\n * @alias workbox.core.skipWaiting\n */\nexport const skipWaiting = () => {\n // We need to explicitly call `self.skipWaiting()` here because we're\n // shadowing `skipWaiting` with this local function.\n addEventListener('install', () => self.skipWaiting());\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {registerQuotaErrorCallback} from './registerQuotaErrorCallback.mjs';\nimport * as _private from './_private.mjs';\nimport {clientsClaim} from './clientsClaim.mjs';\nimport {cacheNames} from './cacheNames.mjs';\nimport {setCacheNameDetails} from './setCacheNameDetails.mjs';\nimport {skipWaiting} from './skipWaiting.mjs';\nimport './_version.mjs';\n\n\n// Give our version strings something to hang off of.\ntry {\n self.workbox.v = self.workbox.v || {};\n} catch (errer) {\n // NOOP\n}\n\n/**\n * All of the Workbox service worker libraries use workbox-core for shared\n * code as well as setting default values that need to be shared (like cache\n * names).\n *\n * @namespace workbox.core\n */\n\nexport {\n _private,\n clientsClaim,\n cacheNames,\n registerQuotaErrorCallback,\n setCacheNameDetails,\n skipWaiting,\n};\n"],"names":["self","_","e","logger","process","inGroup","methodToColorMap","debug","log","warn","error","groupCollapsed","groupEnd","print","method","args","test","navigator","userAgent","console","styles","logPrefix","join","api","Object","keys","messages","paramName","validValueDescription","value","Error","JSON","stringify","moduleName","className","funcName","expectedType","expectedClass","isReturnValueProblem","name","expectedMethod","entry","firstEntry","secondEntry","_entryId","thrownError","message","cacheNameId","methodName","normalizedRangeHeader","size","start","end","url","status","generatorFunction","code","messageGenerator","WorkboxError","constructor","errorCode","details","isSWEnv","isArray","Array","hasMethod","object","type","isType","isInstance","isOneOf","validValues","includes","isArrayOfClass","item","finalAssertExports","quotaErrorCallbacks","Set","registerQuotaErrorCallback","callback","assert","add","_cacheNameDetails","googleAnalytics","precache","prefix","runtime","suffix","registration","scope","_createCacheName","cacheName","filter","length","cacheNames","updateDetails","forEach","key","getGoogleAnalyticsName","userCacheName","getPrecacheName","getPrefix","getRuntimeName","getSuffix","getFriendlyURL","urlObj","URL","location","origin","pathname","href","executeQuotaErrorCallbacks","pluginEvents","CACHE_DID_UPDATE","CACHE_KEY_WILL_BE_USED","CACHE_WILL_UPDATE","CACHED_RESPONSE_WILL_BE_USED","FETCH_DID_FAIL","FETCH_DID_SUCCEED","REQUEST_WILL_FETCH","pluginUtils","plugins","callbackName","plugin","putWrapper","request","response","event","matchOptions","effectiveRequest","_getEffectiveRequest","mode","responseToCache","_isResponseSafeToCache","cache","caches","open","updatePlugins","oldResponse","matchWrapper","put","call","newResponse","cachedResponse","match","Response","pluginsUsed","cacheKeyWillBeUsedPlugins","Request","cacheWrapper","DBWrapper","version","onupgradeneeded","onversionchange","_onversionchange","_name","_version","_onupgradeneeded","_db","db","Promise","resolve","reject","openRequestTimedOut","setTimeout","OPEN_TIMEOUT","openRequest","indexedDB","onerror","evt","transaction","abort","target","result","close","onsuccess","bind","getKey","storeName","query","getAllKeys","getAll","count","getAllMatching","includeKeys","map","index","direction","txn","done","store","objectStore","results","openCursor","cursor","primaryKey","push","continue","storeNames","onabort","oncomplete","_call","prototype","methodsToWrap","methods","entries","IDBObjectStore","Deferred","promise","deleteDatabase","onblocked","wrappedFetch","fetchOptions","preloadResponse","possiblePreloadResponse","failedFetchPlugins","originalRequest","clone","err","pluginFilteredRequest","fetchResponse","fetch","fetchWrapper","clientsClaim","addEventListener","clients","claim","_cacheNames","setCacheNameDetails","skipWaiting","workbox","v","errer"],"mappings":"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"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-core.prod.js b/pr-preview/pr-1029/workbox-v4.3.1/workbox-core.prod.js deleted file mode 100644 index 526e32b1d..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-core.prod.js +++ /dev/null @@ -1,2 +0,0 @@ -this.workbox=this.workbox||{},this.workbox.core=function(e){"use strict";try{self["workbox:core:4.3.1"]&&_()}catch(e){}const t=(e,...t)=>{let n=e;return t.length>0&&(n+=` :: ${JSON.stringify(t)}`),n};class n extends Error{constructor(e,n){super(t(e,n)),this.name=e,this.details=n}}const s=new Set;const r={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:self.registration.scope},a=e=>[r.prefix,e,r.suffix].filter(e=>e.length>0).join("-"),i={updateDetails:e=>{Object.keys(r).forEach(t=>{void 0!==e[t]&&(r[t]=e[t])})},getGoogleAnalyticsName:e=>e||a(r.googleAnalytics),getPrecacheName:e=>e||a(r.precache),getPrefix:()=>r.prefix,getRuntimeName:e=>e||a(r.runtime),getSuffix:()=>r.suffix},c=e=>{const t=new URL(e,location);return t.origin===location.origin?t.pathname:t.href};async function o(){for(const e of s)await e()}const l="cacheDidUpdate",u="cacheKeyWillBeUsed",h="cacheWillUpdate",f="cachedResponseWillBeUsed",w="fetchDidFail",g="fetchDidSucceed",d="requestWillFetch",p=(e,t)=>e.filter(e=>t in e),y=async({cacheName:e,request:t,event:n,matchOptions:s,plugins:r=[]})=>{const a=await caches.open(e),i=await q({plugins:r,request:t,mode:"read"});let c=await a.match(i,s);for(const t of r)f in t&&(c=await t[f].call(t,{cacheName:e,event:n,matchOptions:s,cachedResponse:c,request:i}));return c},m=async({request:e,response:t,event:n,plugins:s})=>{let r=t,a=!1;for(let t of s)if(h in t&&(a=!0,!(r=await t[h].call(t,{request:e,response:r,event:n}))))break;return a||(r=200===r.status?r:null),r||null},q=async({request:e,mode:t,plugins:n})=>{const s=p(n,u);let r=e;for(const e of s)"string"==typeof(r=await e[u].call(e,{mode:t,request:r}))&&(r=new Request(r));return r},v={put:async({cacheName:e,request:t,response:s,event:r,plugins:a=[],matchOptions:i}={})=>{const u=await q({plugins:a,request:t,mode:"write"});if(!s)throw new n("cache-put-with-no-response",{url:c(u.url)});let h=await m({event:r,plugins:a,response:s,request:u});if(!h)return;const f=await caches.open(e),w=p(a,l);let g=w.length>0?await y({cacheName:e,matchOptions:i,request:u}):null;try{await f.put(u,h)}catch(e){throw"QuotaExceededError"===e.name&&await o(),e}for(let t of w)await t[l].call(t,{cacheName:e,event:r,oldResponse:g,newResponse:h,request:u})},match:y};class x{constructor(e,t,{onupgradeneeded:n,onversionchange:s=this.t}={}){this.s=e,this.i=t,this.o=n,this.t=s,this.l=null}get db(){return this.l}async open(){if(!this.l)return this.l=await new Promise((e,t)=>{let n=!1;setTimeout(()=>{n=!0,t(new Error("The open request was blocked and timed out"))},this.OPEN_TIMEOUT);const s=indexedDB.open(this.s,this.i);s.onerror=(()=>t(s.error)),s.onupgradeneeded=(e=>{n?(s.transaction.abort(),e.target.result.close()):this.o&&this.o(e)}),s.onsuccess=(({target:t})=>{const s=t.result;n?s.close():(s.onversionchange=this.t.bind(this),e(s))})}),this}async getKey(e,t){return(await this.getAllKeys(e,t,1))[0]}async getAll(e,t,n){return await this.getAllMatching(e,{query:t,count:n})}async getAllKeys(e,t,n){return(await this.getAllMatching(e,{query:t,count:n,includeKeys:!0})).map(({key:e})=>e)}async getAllMatching(e,{index:t,query:n=null,direction:s="next",count:r,includeKeys:a}={}){return await this.transaction([e],"readonly",(i,c)=>{const o=i.objectStore(e),l=t?o.index(t):o,u=[];l.openCursor(n,s).onsuccess=(({target:e})=>{const t=e.result;if(t){const{primaryKey:e,key:n,value:s}=t;u.push(a?{primaryKey:e,key:n,value:s}:s),r&&u.length>=r?c(u):t.continue()}else c(u)})})}async transaction(e,t,n){return await this.open(),await new Promise((s,r)=>{const a=this.l.transaction(e,t);a.onabort=(({target:e})=>r(e.error)),a.oncomplete=(()=>s()),n(a,e=>s(e))})}async u(e,t,n,...s){return await this.transaction([t],n,(n,r)=>{n.objectStore(t)[e](...s).onsuccess=(({target:e})=>{r(e.result)})})}t(){this.close()}close(){this.l&&(this.l.close(),this.l=null)}}x.prototype.OPEN_TIMEOUT=2e3;const b={readonly:["get","count","getKey","getAll","getAllKeys"],readwrite:["add","put","clear","delete"]};for(const[e,t]of Object.entries(b))for(const n of t)n in IDBObjectStore.prototype&&(x.prototype[n]=async function(t,...s){return await this.u(n,t,e,...s)});const D={fetch:async({request:e,fetchOptions:t,event:s,plugins:r=[]})=>{if(s&&s.preloadResponse){const e=await s.preloadResponse;if(e)return e}"string"==typeof e&&(e=new Request(e));const a=p(r,w),i=a.length>0?e.clone():null;try{for(let t of r)d in t&&(e=await t[d].call(t,{request:e.clone(),event:s}))}catch(e){throw new n("plugin-error-request-will-fetch",{thrownError:e})}let c=e.clone();try{let n;n="navigate"===e.mode?await fetch(e):await fetch(e,t);for(const e of r)g in e&&(n=await e[g].call(e,{event:s,request:c,response:n}));return n}catch(e){for(const t of a)await t[w].call(t,{error:e,event:s,originalRequest:i.clone(),request:c.clone()});throw e}}};var E=Object.freeze({assert:null,cacheNames:i,cacheWrapper:v,DBWrapper:x,Deferred:class{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}},deleteDatabase:async e=>{await new Promise((t,n)=>{const s=indexedDB.deleteDatabase(e);s.onerror=(({target:e})=>{n(e.error)}),s.onblocked=(()=>{n(new Error("Delete blocked"))}),s.onsuccess=(()=>{t()})})},executeQuotaErrorCallbacks:o,fetchWrapper:D,getFriendlyURL:c,logger:null,WorkboxError:n});const N={get googleAnalytics(){return i.getGoogleAnalyticsName()},get precache(){return i.getPrecacheName()},get prefix(){return i.getPrefix()},get runtime(){return i.getRuntimeName()},get suffix(){return i.getSuffix()}};try{self.workbox.v=self.workbox.v||{}}catch(e){}return e._private=E,e.clientsClaim=(()=>{addEventListener("activate",()=>clients.claim())}),e.cacheNames=N,e.registerQuotaErrorCallback=function(e){s.add(e)},e.setCacheNameDetails=(e=>{i.updateDetails(e)}),e.skipWaiting=(()=>{addEventListener("install",()=>self.skipWaiting())}),e}({}); -//# sourceMappingURL=workbox-core.prod.js.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-core.prod.js.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-core.prod.js.map deleted file mode 100644 index 71b89fb5a..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-core.prod.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-core.prod.js","sources":["../_version.mjs","../_private/logger.mjs","../models/messages/messageGenerator.mjs","../_private/WorkboxError.mjs","../_private/assert.mjs","../models/quotaErrorCallbacks.mjs","../_private/cacheNames.mjs","../_private/getFriendlyURL.mjs","../_private/executeQuotaErrorCallbacks.mjs","../models/pluginEvents.mjs","../utils/pluginUtils.mjs","../_private/cacheWrapper.mjs","../_private/DBWrapper.mjs","../_private/deleteDatabase.mjs","../_private/fetchWrapper.mjs","../_private/Deferred.mjs","../cacheNames.mjs","../index.mjs","../clientsClaim.mjs","../registerQuotaErrorCallback.mjs","../setCacheNameDetails.mjs","../skipWaiting.mjs"],"sourcesContent":["try{self['workbox:core:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\nconst logger = process.env.NODE_ENV === 'production' ? null : (() => {\n let inGroup = false;\n\n const methodToColorMap = {\n debug: `#7f8c8d`, // Gray\n log: `#2ecc71`, // Green\n warn: `#f39c12`, // Yellow\n error: `#c0392b`, // Red\n groupCollapsed: `#3498db`, // Blue\n groupEnd: null, // No colored prefix on groupEnd\n };\n\n const print = function(method, args) {\n if (method === 'groupCollapsed') {\n // Safari doesn't print all console.groupCollapsed() arguments:\n // https://bugs.webkit.org/show_bug.cgi?id=182754\n if (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n console[method](...args);\n return;\n }\n }\n\n const styles = [\n `background: ${methodToColorMap[method]}`,\n `border-radius: 0.5em`,\n `color: white`,\n `font-weight: bold`,\n `padding: 2px 0.5em`,\n ];\n\n // When in a group, the workbox prefix is not displayed.\n const logPrefix = inGroup ? [] : ['%cworkbox', styles.join(';')];\n\n console[method](...logPrefix, ...args);\n\n if (method === 'groupCollapsed') {\n inGroup = true;\n }\n if (method === 'groupEnd') {\n inGroup = false;\n }\n };\n\n const api = {};\n for (const method of Object.keys(methodToColorMap)) {\n api[method] = (...args) => {\n print(method, args);\n };\n }\n\n return api;\n})();\n\nexport {logger};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {messages} from './messages.mjs';\nimport '../../_version.mjs';\n\nconst fallback = (code, ...args) => {\n let msg = code;\n if (args.length > 0) {\n msg += ` :: ${JSON.stringify(args)}`;\n }\n return msg;\n};\n\nconst generatorFunction = (code, ...args) => {\n const message = messages[code];\n if (!message) {\n throw new Error(`Unable to find message for code '${code}'.`);\n }\n\n return message(...args);\n};\n\nexport const messageGenerator = (process.env.NODE_ENV === 'production') ?\n fallback : generatorFunction;\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {messageGenerator} from '../models/messages/messageGenerator.mjs';\nimport '../_version.mjs';\n\n/**\n * Workbox errors should be thrown with this class.\n * This allows use to ensure the type easily in tests,\n * helps developers identify errors from workbox\n * easily and allows use to optimise error\n * messages correctly.\n *\n * @private\n */\nclass WorkboxError extends Error {\n /**\n *\n * @param {string} errorCode The error code that\n * identifies this particular error.\n * @param {Object=} details Any relevant arguments\n * that will help developers identify issues should\n * be added as a key on the context object.\n */\n constructor(errorCode, details) {\n let message = messageGenerator(errorCode, details);\n\n super(message);\n\n this.name = errorCode;\n this.details = details;\n }\n}\n\nexport {WorkboxError};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {WorkboxError} from '../_private/WorkboxError.mjs';\nimport '../_version.mjs';\n\n/*\n * This method returns true if the current context is a service worker.\n */\nconst isSWEnv = (moduleName) => {\n if (!('ServiceWorkerGlobalScope' in self)) {\n throw new WorkboxError('not-in-sw', {moduleName});\n }\n};\n\n/*\n * This method throws if the supplied value is not an array.\n * The destructed values are required to produce a meaningful error for users.\n * The destructed and restructured object is so it's clear what is\n * needed.\n */\nconst isArray = (value, {moduleName, className, funcName, paramName}) => {\n if (!Array.isArray(value)) {\n throw new WorkboxError('not-an-array', {\n moduleName,\n className,\n funcName,\n paramName,\n });\n }\n};\n\nconst hasMethod = (object, expectedMethod,\n {moduleName, className, funcName, paramName}) => {\n const type = typeof object[expectedMethod];\n if (type !== 'function') {\n throw new WorkboxError('missing-a-method', {paramName, expectedMethod,\n moduleName, className, funcName});\n }\n};\n\nconst isType = (object, expectedType,\n {moduleName, className, funcName, paramName}) => {\n if (typeof object !== expectedType) {\n throw new WorkboxError('incorrect-type', {paramName, expectedType,\n moduleName, className, funcName});\n }\n};\n\nconst isInstance = (object, expectedClass,\n {moduleName, className, funcName,\n paramName, isReturnValueProblem}) => {\n if (!(object instanceof expectedClass)) {\n throw new WorkboxError('incorrect-class', {paramName, expectedClass,\n moduleName, className, funcName, isReturnValueProblem});\n }\n};\n\nconst isOneOf = (value, validValues, {paramName}) => {\n if (!validValues.includes(value)) {\n throw new WorkboxError('invalid-value', {\n paramName,\n value,\n validValueDescription: `Valid values are ${JSON.stringify(validValues)}.`,\n });\n }\n};\n\nconst isArrayOfClass = (value, expectedClass,\n {moduleName, className, funcName, paramName}) => {\n const error = new WorkboxError('not-array-of-class', {\n value, expectedClass,\n moduleName, className, funcName, paramName,\n });\n if (!Array.isArray(value)) {\n throw error;\n }\n\n for (let item of value) {\n if (!(item instanceof expectedClass)) {\n throw error;\n }\n }\n};\n\nconst finalAssertExports = process.env.NODE_ENV === 'production' ? null : {\n hasMethod,\n isArray,\n isInstance,\n isOneOf,\n isSWEnv,\n isType,\n isArrayOfClass,\n};\n\nexport {finalAssertExports as assert};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\n// Callbacks to be executed whenever there's a quota error.\nconst quotaErrorCallbacks = new Set();\n\nexport {quotaErrorCallbacks};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\nconst _cacheNameDetails = {\n googleAnalytics: 'googleAnalytics',\n precache: 'precache-v2',\n prefix: 'workbox',\n runtime: 'runtime',\n suffix: self.registration.scope,\n};\n\nconst _createCacheName = (cacheName) => {\n return [_cacheNameDetails.prefix, cacheName, _cacheNameDetails.suffix]\n .filter((value) => value.length > 0)\n .join('-');\n};\n\nexport const cacheNames = {\n updateDetails: (details) => {\n Object.keys(_cacheNameDetails).forEach((key) => {\n if (typeof details[key] !== 'undefined') {\n _cacheNameDetails[key] = details[key];\n }\n });\n },\n getGoogleAnalyticsName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.googleAnalytics);\n },\n getPrecacheName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.precache);\n },\n getPrefix: () => {\n return _cacheNameDetails.prefix;\n },\n getRuntimeName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.runtime);\n },\n getSuffix: () => {\n return _cacheNameDetails.suffix;\n },\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\nconst getFriendlyURL = (url) => {\n const urlObj = new URL(url, location);\n if (urlObj.origin === location.origin) {\n return urlObj.pathname;\n }\n return urlObj.href;\n};\n\nexport {getFriendlyURL};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {logger} from '../_private/logger.mjs';\nimport {quotaErrorCallbacks} from '../models/quotaErrorCallbacks.mjs';\nimport '../_version.mjs';\n\n\n/**\n * Runs all of the callback functions, one at a time sequentially, in the order\n * in which they were registered.\n *\n * @memberof workbox.core\n * @private\n */\nasync function executeQuotaErrorCallbacks() {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`About to run ${quotaErrorCallbacks.size} ` +\n `callbacks to clean up caches.`);\n }\n\n for (const callback of quotaErrorCallbacks) {\n await callback();\n if (process.env.NODE_ENV !== 'production') {\n logger.log(callback, 'is complete.');\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Finished running callbacks.');\n }\n}\n\nexport {executeQuotaErrorCallbacks};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\nexport const pluginEvents = {\n CACHE_DID_UPDATE: 'cacheDidUpdate',\n CACHE_KEY_WILL_BE_USED: 'cacheKeyWillBeUsed',\n CACHE_WILL_UPDATE: 'cacheWillUpdate',\n CACHED_RESPONSE_WILL_BE_USED: 'cachedResponseWillBeUsed',\n FETCH_DID_FAIL: 'fetchDidFail',\n FETCH_DID_SUCCEED: 'fetchDidSucceed',\n REQUEST_WILL_FETCH: 'requestWillFetch',\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\nexport const pluginUtils = {\n filter: (plugins, callbackName) => {\n return plugins.filter((plugin) => callbackName in plugin);\n },\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {WorkboxError} from './WorkboxError.mjs';\nimport {assert} from './assert.mjs';\nimport {getFriendlyURL} from './getFriendlyURL.mjs';\nimport {logger} from './logger.mjs';\nimport {executeQuotaErrorCallbacks} from './executeQuotaErrorCallbacks.mjs';\nimport {pluginEvents} from '../models/pluginEvents.mjs';\nimport {pluginUtils} from '../utils/pluginUtils.mjs';\nimport '../_version.mjs';\n\n\n/**\n * Wrapper around cache.put().\n *\n * Will call `cacheDidUpdate` on plugins if the cache was updated, using\n * `matchOptions` when determining what the old entry is.\n *\n * @param {Object} options\n * @param {string} options.cacheName\n * @param {Request} options.request\n * @param {Response} options.response\n * @param {Event} [options.event]\n * @param {Array} [options.plugins=[]]\n * @param {Object} [options.matchOptions]\n *\n * @private\n * @memberof module:workbox-core\n */\nconst putWrapper = async ({\n cacheName,\n request,\n response,\n event,\n plugins = [],\n matchOptions,\n} = {}) => {\n if (process.env.NODE_ENV !== 'production') {\n if (request.method && request.method !== 'GET') {\n throw new WorkboxError('attempt-to-cache-non-get-request', {\n url: getFriendlyURL(request.url),\n method: request.method,\n });\n }\n }\n\n const effectiveRequest = await _getEffectiveRequest({\n plugins, request, mode: 'write'});\n\n if (!response) {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(`Cannot cache non-existent response for ` +\n `'${getFriendlyURL(effectiveRequest.url)}'.`);\n }\n\n throw new WorkboxError('cache-put-with-no-response', {\n url: getFriendlyURL(effectiveRequest.url),\n });\n }\n\n let responseToCache = await _isResponseSafeToCache({\n event,\n plugins,\n response,\n request: effectiveRequest,\n });\n\n if (!responseToCache) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Response '${getFriendlyURL(effectiveRequest.url)}' will ` +\n `not be cached.`, responseToCache);\n }\n return;\n }\n\n const cache = await caches.open(cacheName);\n\n const updatePlugins = pluginUtils.filter(\n plugins, pluginEvents.CACHE_DID_UPDATE);\n\n let oldResponse = updatePlugins.length > 0 ?\n await matchWrapper({cacheName, matchOptions, request: effectiveRequest}) :\n null;\n\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Updating the '${cacheName}' cache with a new Response for ` +\n `${getFriendlyURL(effectiveRequest.url)}.`);\n }\n\n try {\n await cache.put(effectiveRequest, responseToCache);\n } catch (error) {\n // See https://developer.mozilla.org/en-US/docs/Web/API/DOMException#exception-QuotaExceededError\n if (error.name === 'QuotaExceededError') {\n await executeQuotaErrorCallbacks();\n }\n throw error;\n }\n\n for (let plugin of updatePlugins) {\n await plugin[pluginEvents.CACHE_DID_UPDATE].call(plugin, {\n cacheName,\n event,\n oldResponse,\n newResponse: responseToCache,\n request: effectiveRequest,\n });\n }\n};\n\n/**\n * This is a wrapper around cache.match().\n *\n * @param {Object} options\n * @param {string} options.cacheName Name of the cache to match against.\n * @param {Request} options.request The Request that will be used to look up\n * cache entries.\n * @param {Event} [options.event] The event that propted the action.\n * @param {Object} [options.matchOptions] Options passed to cache.match().\n * @param {Array} [options.plugins=[]] Array of plugins.\n * @return {Response} A cached response if available.\n *\n * @private\n * @memberof module:workbox-core\n */\nconst matchWrapper = async ({\n cacheName,\n request,\n event,\n matchOptions,\n plugins = [],\n}) => {\n const cache = await caches.open(cacheName);\n\n const effectiveRequest = await _getEffectiveRequest({\n plugins, request, mode: 'read'});\n\n let cachedResponse = await cache.match(effectiveRequest, matchOptions);\n if (process.env.NODE_ENV !== 'production') {\n if (cachedResponse) {\n logger.debug(`Found a cached response in '${cacheName}'.`);\n } else {\n logger.debug(`No cached response found in '${cacheName}'.`);\n }\n }\n\n for (const plugin of plugins) {\n if (pluginEvents.CACHED_RESPONSE_WILL_BE_USED in plugin) {\n cachedResponse = await plugin[pluginEvents.CACHED_RESPONSE_WILL_BE_USED]\n .call(plugin, {\n cacheName,\n event,\n matchOptions,\n cachedResponse,\n request: effectiveRequest,\n });\n if (process.env.NODE_ENV !== 'production') {\n if (cachedResponse) {\n assert.isInstance(cachedResponse, Response, {\n moduleName: 'Plugin',\n funcName: pluginEvents.CACHED_RESPONSE_WILL_BE_USED,\n isReturnValueProblem: true,\n });\n }\n }\n }\n }\n\n return cachedResponse;\n};\n\n/**\n * This method will call cacheWillUpdate on the available plugins (or use\n * status === 200) to determine if the Response is safe and valid to cache.\n *\n * @param {Object} options\n * @param {Request} options.request\n * @param {Response} options.response\n * @param {Event} [options.event]\n * @param {Array} [options.plugins=[]]\n * @return {Promise}\n *\n * @private\n * @memberof module:workbox-core\n */\nconst _isResponseSafeToCache = async ({request, response, event, plugins}) => {\n let responseToCache = response;\n let pluginsUsed = false;\n for (let plugin of plugins) {\n if (pluginEvents.CACHE_WILL_UPDATE in plugin) {\n pluginsUsed = true;\n responseToCache = await plugin[pluginEvents.CACHE_WILL_UPDATE]\n .call(plugin, {\n request,\n response: responseToCache,\n event,\n });\n\n if (process.env.NODE_ENV !== 'production') {\n if (responseToCache) {\n assert.isInstance(responseToCache, Response, {\n moduleName: 'Plugin',\n funcName: pluginEvents.CACHE_WILL_UPDATE,\n isReturnValueProblem: true,\n });\n }\n }\n\n if (!responseToCache) {\n break;\n }\n }\n }\n\n if (!pluginsUsed) {\n if (process.env.NODE_ENV !== 'production') {\n if (!responseToCache.status === 200) {\n if (responseToCache.status === 0) {\n logger.warn(`The response for '${request.url}' is an opaque ` +\n `response. The caching strategy that you're using will not ` +\n `cache opaque responses by default.`);\n } else {\n logger.debug(`The response for '${request.url}' returned ` +\n `a status code of '${response.status}' and won't be cached as a ` +\n `result.`);\n }\n }\n }\n responseToCache = responseToCache.status === 200 ? responseToCache : null;\n }\n\n return responseToCache ? responseToCache : null;\n};\n\n/**\n * Checks the list of plugins for the cacheKeyWillBeUsed callback, and\n * executes any of those callbacks found in sequence. The final `Request` object\n * returned by the last plugin is treated as the cache key for cache reads\n * and/or writes.\n *\n * @param {Object} options\n * @param {Request} options.request\n * @param {string} options.mode\n * @param {Array} [options.plugins=[]]\n * @return {Promise}\n *\n * @private\n * @memberof module:workbox-core\n */\nconst _getEffectiveRequest = async ({request, mode, plugins}) => {\n const cacheKeyWillBeUsedPlugins = pluginUtils.filter(\n plugins, pluginEvents.CACHE_KEY_WILL_BE_USED);\n\n let effectiveRequest = request;\n for (const plugin of cacheKeyWillBeUsedPlugins) {\n effectiveRequest = await plugin[pluginEvents.CACHE_KEY_WILL_BE_USED].call(\n plugin, {mode, request: effectiveRequest});\n\n if (typeof effectiveRequest === 'string') {\n effectiveRequest = new Request(effectiveRequest);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(effectiveRequest, Request, {\n moduleName: 'Plugin',\n funcName: pluginEvents.CACHE_KEY_WILL_BE_USED,\n isReturnValueProblem: true,\n });\n }\n }\n\n return effectiveRequest;\n};\n\nexport const cacheWrapper = {\n put: putWrapper,\n match: matchWrapper,\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\n/**\n * A class that wraps common IndexedDB functionality in a promise-based API.\n * It exposes all the underlying power and functionality of IndexedDB, but\n * wraps the most commonly used features in a way that's much simpler to use.\n *\n * @private\n */\nexport class DBWrapper {\n /**\n * @param {string} name\n * @param {number} version\n * @param {Object=} [callback]\n * @param {!Function} [callbacks.onupgradeneeded]\n * @param {!Function} [callbacks.onversionchange] Defaults to\n * DBWrapper.prototype._onversionchange when not specified.\n * @private\n */\n constructor(name, version, {\n onupgradeneeded,\n onversionchange = this._onversionchange,\n } = {}) {\n this._name = name;\n this._version = version;\n this._onupgradeneeded = onupgradeneeded;\n this._onversionchange = onversionchange;\n\n // If this is null, it means the database isn't open.\n this._db = null;\n }\n\n /**\n * Returns the IDBDatabase instance (not normally needed).\n *\n * @private\n */\n get db() {\n return this._db;\n }\n\n /**\n * Opens a connected to an IDBDatabase, invokes any onupgradedneeded\n * callback, and added an onversionchange callback to the database.\n *\n * @return {IDBDatabase}\n * @private\n */\n async open() {\n if (this._db) return;\n\n this._db = await new Promise((resolve, reject) => {\n // This flag is flipped to true if the timeout callback runs prior\n // to the request failing or succeeding. Note: we use a timeout instead\n // of an onblocked handler since there are cases where onblocked will\n // never never run. A timeout better handles all possible scenarios:\n // https://github.com/w3c/IndexedDB/issues/223\n let openRequestTimedOut = false;\n setTimeout(() => {\n openRequestTimedOut = true;\n reject(new Error('The open request was blocked and timed out'));\n }, this.OPEN_TIMEOUT);\n\n const openRequest = indexedDB.open(this._name, this._version);\n openRequest.onerror = () => reject(openRequest.error);\n openRequest.onupgradeneeded = (evt) => {\n if (openRequestTimedOut) {\n openRequest.transaction.abort();\n evt.target.result.close();\n } else if (this._onupgradeneeded) {\n this._onupgradeneeded(evt);\n }\n };\n openRequest.onsuccess = ({target}) => {\n const db = target.result;\n if (openRequestTimedOut) {\n db.close();\n } else {\n db.onversionchange = this._onversionchange.bind(this);\n resolve(db);\n }\n };\n });\n\n return this;\n }\n\n /**\n * Polyfills the native `getKey()` method. Note, this is overridden at\n * runtime if the browser supports the native method.\n *\n * @param {string} storeName\n * @param {*} query\n * @return {Array}\n * @private\n */\n async getKey(storeName, query) {\n return (await this.getAllKeys(storeName, query, 1))[0];\n }\n\n /**\n * Polyfills the native `getAll()` method. Note, this is overridden at\n * runtime if the browser supports the native method.\n *\n * @param {string} storeName\n * @param {*} query\n * @param {number} count\n * @return {Array}\n * @private\n */\n async getAll(storeName, query, count) {\n return await this.getAllMatching(storeName, {query, count});\n }\n\n\n /**\n * Polyfills the native `getAllKeys()` method. Note, this is overridden at\n * runtime if the browser supports the native method.\n *\n * @param {string} storeName\n * @param {*} query\n * @param {number} count\n * @return {Array}\n * @private\n */\n async getAllKeys(storeName, query, count) {\n return (await this.getAllMatching(\n storeName, {query, count, includeKeys: true})).map(({key}) => key);\n }\n\n /**\n * Supports flexible lookup in an object store by specifying an index,\n * query, direction, and count. This method returns an array of objects\n * with the signature .\n *\n * @param {string} storeName\n * @param {Object} [opts]\n * @param {string} [opts.index] The index to use (if specified).\n * @param {*} [opts.query]\n * @param {IDBCursorDirection} [opts.direction]\n * @param {number} [opts.count] The max number of results to return.\n * @param {boolean} [opts.includeKeys] When true, the structure of the\n * returned objects is changed from an array of values to an array of\n * objects in the form {key, primaryKey, value}.\n * @return {Array}\n * @private\n */\n async getAllMatching(storeName, {\n index,\n query = null, // IE errors if query === `undefined`.\n direction = 'next',\n count,\n includeKeys,\n } = {}) {\n return await this.transaction([storeName], 'readonly', (txn, done) => {\n const store = txn.objectStore(storeName);\n const target = index ? store.index(index) : store;\n const results = [];\n\n target.openCursor(query, direction).onsuccess = ({target}) => {\n const cursor = target.result;\n if (cursor) {\n const {primaryKey, key, value} = cursor;\n results.push(includeKeys ? {primaryKey, key, value} : value);\n if (count && results.length >= count) {\n done(results);\n } else {\n cursor.continue();\n }\n } else {\n done(results);\n }\n };\n });\n }\n\n /**\n * Accepts a list of stores, a transaction type, and a callback and\n * performs a transaction. A promise is returned that resolves to whatever\n * value the callback chooses. The callback holds all the transaction logic\n * and is invoked with two arguments:\n * 1. The IDBTransaction object\n * 2. A `done` function, that's used to resolve the promise when\n * when the transaction is done, if passed a value, the promise is\n * resolved to that value.\n *\n * @param {Array} storeNames An array of object store names\n * involved in the transaction.\n * @param {string} type Can be `readonly` or `readwrite`.\n * @param {!Function} callback\n * @return {*} The result of the transaction ran by the callback.\n * @private\n */\n async transaction(storeNames, type, callback) {\n await this.open();\n return await new Promise((resolve, reject) => {\n const txn = this._db.transaction(storeNames, type);\n txn.onabort = ({target}) => reject(target.error);\n txn.oncomplete = () => resolve();\n\n callback(txn, (value) => resolve(value));\n });\n }\n\n /**\n * Delegates async to a native IDBObjectStore method.\n *\n * @param {string} method The method name.\n * @param {string} storeName The object store name.\n * @param {string} type Can be `readonly` or `readwrite`.\n * @param {...*} args The list of args to pass to the native method.\n * @return {*} The result of the transaction.\n * @private\n */\n async _call(method, storeName, type, ...args) {\n const callback = (txn, done) => {\n txn.objectStore(storeName)[method](...args).onsuccess = ({target}) => {\n done(target.result);\n };\n };\n\n return await this.transaction([storeName], type, callback);\n }\n\n /**\n * The default onversionchange handler, which closes the database so other\n * connections can open without being blocked.\n *\n * @private\n */\n _onversionchange() {\n this.close();\n }\n\n /**\n * Closes the connection opened by `DBWrapper.open()`. Generally this method\n * doesn't need to be called since:\n * 1. It's usually better to keep a connection open since opening\n * a new connection is somewhat slow.\n * 2. Connections are automatically closed when the reference is\n * garbage collected.\n * The primary use case for needing to close a connection is when another\n * reference (typically in another tab) needs to upgrade it and would be\n * blocked by the current, open connection.\n *\n * @private\n */\n close() {\n if (this._db) {\n this._db.close();\n this._db = null;\n }\n }\n}\n\n// Exposed to let users modify the default timeout on a per-instance\n// or global basis.\nDBWrapper.prototype.OPEN_TIMEOUT = 2000;\n\n// Wrap native IDBObjectStore methods according to their mode.\nconst methodsToWrap = {\n 'readonly': ['get', 'count', 'getKey', 'getAll', 'getAllKeys'],\n 'readwrite': ['add', 'put', 'clear', 'delete'],\n};\nfor (const [mode, methods] of Object.entries(methodsToWrap)) {\n for (const method of methods) {\n if (method in IDBObjectStore.prototype) {\n // Don't use arrow functions here since we're outside of the class.\n DBWrapper.prototype[method] = async function(storeName, ...args) {\n return await this._call(method, storeName, mode, ...args);\n };\n }\n }\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\n/**\n * Deletes the database.\n * Note: this is exported separately from the DBWrapper module because most\n * usages of IndexedDB in workbox dont need deleting, and this way it can be\n * reused in tests to delete databases without creating DBWrapper instances.\n *\n * @param {string} name The database name.\n * @private\n */\nexport const deleteDatabase = async (name) => {\n await new Promise((resolve, reject) => {\n const request = indexedDB.deleteDatabase(name);\n request.onerror = ({target}) => {\n reject(target.error);\n };\n request.onblocked = () => {\n reject(new Error('Delete blocked'));\n };\n request.onsuccess = () => {\n resolve();\n };\n });\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {WorkboxError} from './WorkboxError.mjs';\nimport {logger} from './logger.mjs';\nimport {assert} from './assert.mjs';\nimport {getFriendlyURL} from '../_private/getFriendlyURL.mjs';\nimport {pluginEvents} from '../models/pluginEvents.mjs';\nimport {pluginUtils} from '../utils/pluginUtils.mjs';\nimport '../_version.mjs';\n\n/**\n * Wrapper around the fetch API.\n *\n * Will call requestWillFetch on available plugins.\n *\n * @param {Object} options\n * @param {Request|string} options.request\n * @param {Object} [options.fetchOptions]\n * @param {Event} [options.event]\n * @param {Array} [options.plugins=[]]\n * @return {Promise}\n *\n * @private\n * @memberof module:workbox-core\n */\nconst wrappedFetch = async ({\n request,\n fetchOptions,\n event,\n plugins = []}) => {\n // We *should* be able to call `await event.preloadResponse` even if it's\n // undefined, but for some reason, doing so leads to errors in our Node unit\n // tests. To work around that, explicitly check preloadResponse's value first.\n if (event && event.preloadResponse) {\n const possiblePreloadResponse = await event.preloadResponse;\n if (possiblePreloadResponse) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Using a preloaded navigation response for ` +\n `'${getFriendlyURL(request.url)}'`);\n }\n return possiblePreloadResponse;\n }\n }\n\n if (typeof request === 'string') {\n request = new Request(request);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n paramName: request,\n expectedClass: 'Request',\n moduleName: 'workbox-core',\n className: 'fetchWrapper',\n funcName: 'wrappedFetch',\n });\n }\n\n const failedFetchPlugins = pluginUtils.filter(\n plugins, pluginEvents.FETCH_DID_FAIL);\n\n // If there is a fetchDidFail plugin, we need to save a clone of the\n // original request before it's either modified by a requestWillFetch\n // plugin or before the original request's body is consumed via fetch().\n const originalRequest = failedFetchPlugins.length > 0 ?\n request.clone() : null;\n\n try {\n for (let plugin of plugins) {\n if (pluginEvents.REQUEST_WILL_FETCH in plugin) {\n request = await plugin[pluginEvents.REQUEST_WILL_FETCH].call(plugin, {\n request: request.clone(),\n event,\n });\n\n if (process.env.NODE_ENV !== 'production') {\n if (request) {\n assert.isInstance(request, Request, {\n moduleName: 'Plugin',\n funcName: pluginEvents.CACHED_RESPONSE_WILL_BE_USED,\n isReturnValueProblem: true,\n });\n }\n }\n }\n }\n } catch (err) {\n throw new WorkboxError('plugin-error-request-will-fetch', {\n thrownError: err,\n });\n }\n\n // The request can be altered by plugins with `requestWillFetch` making\n // the original request (Most likely from a `fetch` event) to be different\n // to the Request we make. Pass both to `fetchDidFail` to aid debugging.\n let pluginFilteredRequest = request.clone();\n\n try {\n let fetchResponse;\n\n // See https://github.com/GoogleChrome/workbox/issues/1796\n if (request.mode === 'navigate') {\n fetchResponse = await fetch(request);\n } else {\n fetchResponse = await fetch(request, fetchOptions);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Network request for `+\n `'${getFriendlyURL(request.url)}' returned a response with ` +\n `status '${fetchResponse.status}'.`);\n }\n\n for (const plugin of plugins) {\n if (pluginEvents.FETCH_DID_SUCCEED in plugin) {\n fetchResponse = await plugin[pluginEvents.FETCH_DID_SUCCEED]\n .call(plugin, {\n event,\n request: pluginFilteredRequest,\n response: fetchResponse,\n });\n\n if (process.env.NODE_ENV !== 'production') {\n if (fetchResponse) {\n assert.isInstance(fetchResponse, Response, {\n moduleName: 'Plugin',\n funcName: pluginEvents.FETCH_DID_SUCCEED,\n isReturnValueProblem: true,\n });\n }\n }\n }\n }\n\n return fetchResponse;\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(`Network request for `+\n `'${getFriendlyURL(request.url)}' threw an error.`, error);\n }\n\n for (const plugin of failedFetchPlugins) {\n await plugin[pluginEvents.FETCH_DID_FAIL].call(plugin, {\n error,\n event,\n originalRequest: originalRequest.clone(),\n request: pluginFilteredRequest.clone(),\n });\n }\n\n throw error;\n }\n};\n\nconst fetchWrapper = {\n fetch: wrappedFetch,\n};\n\nexport {fetchWrapper};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\n/**\n * The Deferred class composes Promises in a way that allows for them to be\n * resolved or rejected from outside the constructor. In most cases promises\n * should be used directly, but Deferreds can be necessary when the logic to\n * resolve a promise must be separate.\n *\n * @private\n */\nexport class Deferred {\n /**\n * Creates a promise and exposes its resolve and reject functions as methods.\n */\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {cacheNames as _cacheNames} from './_private/cacheNames.mjs';\nimport './_version.mjs';\n\n\n/**\n * Get the current cache names and prefix/suffix used by Workbox.\n *\n * `cacheNames.precache` is used for precached assets,\n * `cacheNames.googleAnalytics` is used by `workbox-google-analytics` to\n * store `analytics.js`, and `cacheNames.runtime` is used for everything else.\n *\n * `cacheNames.prefix` can be used to retrieve just the current prefix value.\n * `cacheNames.suffix` can be used to retrieve just the current suffix value.\n *\n * @return {Object} An object with `precache`, `runtime`, `prefix`, and\n * `googleAnalytics` properties.\n *\n * @alias workbox.core.cacheNames\n */\nexport const cacheNames = {\n get googleAnalytics() {\n return _cacheNames.getGoogleAnalyticsName();\n },\n get precache() {\n return _cacheNames.getPrecacheName();\n },\n get prefix() {\n return _cacheNames.getPrefix();\n },\n get runtime() {\n return _cacheNames.getRuntimeName();\n },\n get suffix() {\n return _cacheNames.getSuffix();\n },\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {registerQuotaErrorCallback} from './registerQuotaErrorCallback.mjs';\nimport * as _private from './_private.mjs';\nimport {clientsClaim} from './clientsClaim.mjs';\nimport {cacheNames} from './cacheNames.mjs';\nimport {setCacheNameDetails} from './setCacheNameDetails.mjs';\nimport {skipWaiting} from './skipWaiting.mjs';\nimport './_version.mjs';\n\n\n// Give our version strings something to hang off of.\ntry {\n self.workbox.v = self.workbox.v || {};\n} catch (errer) {\n // NOOP\n}\n\n/**\n * All of the Workbox service worker libraries use workbox-core for shared\n * code as well as setting default values that need to be shared (like cache\n * names).\n *\n * @namespace workbox.core\n */\n\nexport {\n _private,\n clientsClaim,\n cacheNames,\n registerQuotaErrorCallback,\n setCacheNameDetails,\n skipWaiting,\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport './_version.mjs';\n\n\n/**\n * Claim any currently available clients once the service worker\n * becomes active. This is normally used in conjunction with `skipWaiting()`.\n *\n * @alias workbox.core.clientsClaim\n */\nexport const clientsClaim = () => {\n addEventListener('activate', () => clients.claim());\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {logger} from './_private/logger.mjs';\nimport {assert} from './_private/assert.mjs';\nimport {quotaErrorCallbacks} from './models/quotaErrorCallbacks.mjs';\nimport './_version.mjs';\n\n\n/**\n * Adds a function to the set of quotaErrorCallbacks that will be executed if\n * there's a quota error.\n *\n * @param {Function} callback\n * @memberof workbox.core\n */\nfunction registerQuotaErrorCallback(callback) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(callback, 'function', {\n moduleName: 'workbox-core',\n funcName: 'register',\n paramName: 'callback',\n });\n }\n\n quotaErrorCallbacks.add(callback);\n\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Registered a callback to respond to quota errors.', callback);\n }\n}\n\nexport {registerQuotaErrorCallback};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from './_private/assert.mjs';\nimport {cacheNames} from './_private/cacheNames.mjs';\nimport {WorkboxError} from './_private/WorkboxError.mjs';\nimport './_version.mjs';\n\n\n/**\n * Modifies the default cache names used by the Workbox packages.\n * Cache names are generated as `--`.\n *\n * @param {Object} details\n * @param {Object} [details.prefix] The string to add to the beginning of\n * the precache and runtime cache names.\n * @param {Object} [details.suffix] The string to add to the end of\n * the precache and runtime cache names.\n * @param {Object} [details.precache] The cache name to use for precache\n * caching.\n * @param {Object} [details.runtime] The cache name to use for runtime caching.\n * @param {Object} [details.googleAnalytics] The cache name to use for\n * `workbox-google-analytics` caching.\n *\n * @alias workbox.core.setCacheNameDetails\n */\nexport const setCacheNameDetails = (details) => {\n if (process.env.NODE_ENV !== 'production') {\n Object.keys(details).forEach((key) => {\n assert.isType(details[key], 'string', {\n moduleName: 'workbox-core',\n funcName: 'setCacheNameDetails',\n paramName: `details.${key}`,\n });\n });\n\n if ('precache' in details && details.precache.length === 0) {\n throw new WorkboxError('invalid-cache-name', {\n cacheNameId: 'precache',\n value: details.precache,\n });\n }\n\n if ('runtime' in details && details.runtime.length === 0) {\n throw new WorkboxError('invalid-cache-name', {\n cacheNameId: 'runtime',\n value: details.runtime,\n });\n }\n\n if ('googleAnalytics' in details && details.googleAnalytics.length === 0) {\n throw new WorkboxError('invalid-cache-name', {\n cacheNameId: 'googleAnalytics',\n value: details.googleAnalytics,\n });\n }\n }\n\n cacheNames.updateDetails(details);\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport './_version.mjs';\n\n\n/**\n * Force a service worker to become active, instead of waiting. This is\n * normally used in conjunction with `clientsClaim()`.\n *\n * @alias workbox.core.skipWaiting\n */\nexport const skipWaiting = () => {\n // We need to explicitly call `self.skipWaiting()` here because we're\n // shadowing `skipWaiting` with this local function.\n addEventListener('install', () => self.skipWaiting());\n};\n"],"names":["self","_","e","messageGenerator","code","args","msg","length","JSON","stringify","WorkboxError","Error","constructor","errorCode","details","name","quotaErrorCallbacks","Set","_cacheNameDetails","googleAnalytics","precache","prefix","runtime","suffix","registration","scope","_createCacheName","cacheName","filter","value","join","cacheNames","updateDetails","Object","keys","forEach","key","getGoogleAnalyticsName","userCacheName","getPrecacheName","getPrefix","getRuntimeName","getSuffix","getFriendlyURL","url","urlObj","URL","location","origin","pathname","href","async","executeQuotaErrorCallbacks","callback","pluginEvents","pluginUtils","plugins","callbackName","plugin","matchWrapper","request","event","matchOptions","cache","caches","open","effectiveRequest","_getEffectiveRequest","mode","cachedResponse","match","call","_isResponseSafeToCache","response","responseToCache","pluginsUsed","status","cacheKeyWillBeUsedPlugins","Request","cacheWrapper","put","updatePlugins","oldResponse","error","newResponse","DBWrapper","version","onupgradeneeded","onversionchange","this","_onversionchange","_name","_version","_onupgradeneeded","_db","Promise","resolve","reject","openRequestTimedOut","setTimeout","OPEN_TIMEOUT","openRequest","indexedDB","onerror","evt","transaction","abort","target","result","close","onsuccess","db","bind","storeName","query","getAllKeys","count","getAllMatching","includeKeys","map","index","direction","txn","done","store","objectStore","results","openCursor","cursor","primaryKey","push","continue","storeNames","type","onabort","oncomplete","method","prototype","methodsToWrap","methods","entries","IDBObjectStore","_call","fetchWrapper","fetch","fetchOptions","preloadResponse","possiblePreloadResponse","failedFetchPlugins","originalRequest","clone","err","thrownError","pluginFilteredRequest","fetchResponse","process","promise","deleteDatabase","onblocked","_cacheNames","workbox","v","errer","addEventListener","clients","claim","add","skipWaiting"],"mappings":"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"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-expiration.dev.js b/pr-preview/pr-1029/workbox-v4.3.1/workbox-expiration.dev.js deleted file mode 100644 index cbd068b4f..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-expiration.dev.js +++ /dev/null @@ -1,652 +0,0 @@ -this.workbox = this.workbox || {}; -this.workbox.expiration = (function (exports, DBWrapper_mjs, deleteDatabase_mjs, WorkboxError_mjs, assert_mjs, logger_mjs, cacheNames_mjs, getFriendlyURL_mjs, registerQuotaErrorCallback_mjs) { - 'use strict'; - - try { - self['workbox:expiration:4.3.1'] && _(); - } catch (e) {} // eslint-disable-line - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - const DB_NAME = 'workbox-expiration'; - const OBJECT_STORE_NAME = 'cache-entries'; - - const normalizeURL = unNormalizedUrl => { - const url = new URL(unNormalizedUrl, location); - url.hash = ''; - return url.href; - }; - /** - * Returns the timestamp model. - * - * @private - */ - - - class CacheTimestampsModel { - /** - * - * @param {string} cacheName - * - * @private - */ - constructor(cacheName) { - this._cacheName = cacheName; - this._db = new DBWrapper_mjs.DBWrapper(DB_NAME, 1, { - onupgradeneeded: event => this._handleUpgrade(event) - }); - } - /** - * Should perform an upgrade of indexedDB. - * - * @param {Event} event - * - * @private - */ - - - _handleUpgrade(event) { - const db = event.target.result; // TODO(philipwalton): EdgeHTML doesn't support arrays as a keyPath, so we - // have to use the `id` keyPath here and create our own values (a - // concatenation of `url + cacheName`) instead of simply using - // `keyPath: ['url', 'cacheName']`, which is supported in other browsers. - - const objStore = db.createObjectStore(OBJECT_STORE_NAME, { - keyPath: 'id' - }); // TODO(philipwalton): once we don't have to support EdgeHTML, we can - // create a single index with the keyPath `['cacheName', 'timestamp']` - // instead of doing both these indexes. - - objStore.createIndex('cacheName', 'cacheName', { - unique: false - }); - objStore.createIndex('timestamp', 'timestamp', { - unique: false - }); // Previous versions of `workbox-expiration` used `this._cacheName` - // as the IDBDatabase name. - - deleteDatabase_mjs.deleteDatabase(this._cacheName); - } - /** - * @param {string} url - * @param {number} timestamp - * - * @private - */ - - - async setTimestamp(url, timestamp) { - url = normalizeURL(url); - await this._db.put(OBJECT_STORE_NAME, { - url, - timestamp, - cacheName: this._cacheName, - // Creating an ID from the URL and cache name won't be necessary once - // Edge switches to Chromium and all browsers we support work with - // array keyPaths. - id: this._getId(url) - }); - } - /** - * Returns the timestamp stored for a given URL. - * - * @param {string} url - * @return {number} - * - * @private - */ - - - async getTimestamp(url) { - const entry = await this._db.get(OBJECT_STORE_NAME, this._getId(url)); - return entry.timestamp; - } - /** - * Iterates through all the entries in the object store (from newest to - * oldest) and removes entries once either `maxCount` is reached or the - * entry's timestamp is less than `minTimestamp`. - * - * @param {number} minTimestamp - * @param {number} maxCount - * - * @private - */ - - - async expireEntries(minTimestamp, maxCount) { - const entriesToDelete = await this._db.transaction(OBJECT_STORE_NAME, 'readwrite', (txn, done) => { - const store = txn.objectStore(OBJECT_STORE_NAME); - const entriesToDelete = []; - let entriesNotDeletedCount = 0; - - store.index('timestamp').openCursor(null, 'prev').onsuccess = ({ - target - }) => { - const cursor = target.result; - - if (cursor) { - const result = cursor.value; // TODO(philipwalton): once we can use a multi-key index, we - // won't have to check `cacheName` here. - - if (result.cacheName === this._cacheName) { - // Delete an entry if it's older than the max age or - // if we already have the max number allowed. - if (minTimestamp && result.timestamp < minTimestamp || maxCount && entriesNotDeletedCount >= maxCount) { - // TODO(philipwalton): we should be able to delete the - // entry right here, but doing so causes an iteration - // bug in Safari stable (fixed in TP). Instead we can - // store the keys of the entries to delete, and then - // delete the separate transactions. - // https://github.com/GoogleChrome/workbox/issues/1978 - // cursor.delete(); - // We only need to return the URL, not the whole entry. - entriesToDelete.push(cursor.value); - } else { - entriesNotDeletedCount++; - } - } - - cursor.continue(); - } else { - done(entriesToDelete); - } - }; - }); // TODO(philipwalton): once the Safari bug in the following issue is fixed, - // we should be able to remove this loop and do the entry deletion in the - // cursor loop above: - // https://github.com/GoogleChrome/workbox/issues/1978 - - const urlsDeleted = []; - - for (const entry of entriesToDelete) { - await this._db.delete(OBJECT_STORE_NAME, entry.id); - urlsDeleted.push(entry.url); - } - - return urlsDeleted; - } - /** - * Takes a URL and returns an ID that will be unique in the object store. - * - * @param {string} url - * @return {string} - * - * @private - */ - - - _getId(url) { - // Creating an ID from the URL and cache name won't be necessary once - // Edge switches to Chromium and all browsers we support work with - // array keyPaths. - return this._cacheName + '|' + normalizeURL(url); - } - - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * The `CacheExpiration` class allows you define an expiration and / or - * limit on the number of responses stored in a - * [`Cache`](https://developer.mozilla.org/en-US/docs/Web/API/Cache). - * - * @memberof workbox.expiration - */ - - class CacheExpiration { - /** - * To construct a new CacheExpiration instance you must provide at least - * one of the `config` properties. - * - * @param {string} cacheName Name of the cache to apply restrictions to. - * @param {Object} config - * @param {number} [config.maxEntries] The maximum number of entries to cache. - * Entries used the least will be removed as the maximum is reached. - * @param {number} [config.maxAgeSeconds] The maximum age of an entry before - * it's treated as stale and removed. - */ - constructor(cacheName, config = {}) { - { - assert_mjs.assert.isType(cacheName, 'string', { - moduleName: 'workbox-expiration', - className: 'CacheExpiration', - funcName: 'constructor', - paramName: 'cacheName' - }); - - if (!(config.maxEntries || config.maxAgeSeconds)) { - throw new WorkboxError_mjs.WorkboxError('max-entries-or-age-required', { - moduleName: 'workbox-expiration', - className: 'CacheExpiration', - funcName: 'constructor' - }); - } - - if (config.maxEntries) { - assert_mjs.assert.isType(config.maxEntries, 'number', { - moduleName: 'workbox-expiration', - className: 'CacheExpiration', - funcName: 'constructor', - paramName: 'config.maxEntries' - }); // TODO: Assert is positive - } - - if (config.maxAgeSeconds) { - assert_mjs.assert.isType(config.maxAgeSeconds, 'number', { - moduleName: 'workbox-expiration', - className: 'CacheExpiration', - funcName: 'constructor', - paramName: 'config.maxAgeSeconds' - }); // TODO: Assert is positive - } - } - - this._isRunning = false; - this._rerunRequested = false; - this._maxEntries = config.maxEntries; - this._maxAgeSeconds = config.maxAgeSeconds; - this._cacheName = cacheName; - this._timestampModel = new CacheTimestampsModel(cacheName); - } - /** - * Expires entries for the given cache and given criteria. - */ - - - async expireEntries() { - if (this._isRunning) { - this._rerunRequested = true; - return; - } - - this._isRunning = true; - const minTimestamp = this._maxAgeSeconds ? Date.now() - this._maxAgeSeconds * 1000 : undefined; - const urlsExpired = await this._timestampModel.expireEntries(minTimestamp, this._maxEntries); // Delete URLs from the cache - - const cache = await caches.open(this._cacheName); - - for (const url of urlsExpired) { - await cache.delete(url); - } - - { - if (urlsExpired.length > 0) { - logger_mjs.logger.groupCollapsed(`Expired ${urlsExpired.length} ` + `${urlsExpired.length === 1 ? 'entry' : 'entries'} and removed ` + `${urlsExpired.length === 1 ? 'it' : 'them'} from the ` + `'${this._cacheName}' cache.`); - logger_mjs.logger.log(`Expired the following ${urlsExpired.length === 1 ? 'URL' : 'URLs'}:`); - urlsExpired.forEach(url => logger_mjs.logger.log(` ${url}`)); - logger_mjs.logger.groupEnd(); - } else { - logger_mjs.logger.debug(`Cache expiration ran and found no entries to remove.`); - } - } - - this._isRunning = false; - - if (this._rerunRequested) { - this._rerunRequested = false; - this.expireEntries(); - } - } - /** - * Update the timestamp for the given URL. This ensures the when - * removing entries based on maximum entries, most recently used - * is accurate or when expiring, the timestamp is up-to-date. - * - * @param {string} url - */ - - - async updateTimestamp(url) { - { - assert_mjs.assert.isType(url, 'string', { - moduleName: 'workbox-expiration', - className: 'CacheExpiration', - funcName: 'updateTimestamp', - paramName: 'url' - }); - } - - await this._timestampModel.setTimestamp(url, Date.now()); - } - /** - * Can be used to check if a URL has expired or not before it's used. - * - * This requires a look up from IndexedDB, so can be slow. - * - * Note: This method will not remove the cached entry, call - * `expireEntries()` to remove indexedDB and Cache entries. - * - * @param {string} url - * @return {boolean} - */ - - - async isURLExpired(url) { - { - if (!this._maxAgeSeconds) { - throw new WorkboxError_mjs.WorkboxError(`expired-test-without-max-age`, { - methodName: 'isURLExpired', - paramName: 'maxAgeSeconds' - }); - } - } - - const timestamp = await this._timestampModel.getTimestamp(url); - const expireOlderThan = Date.now() - this._maxAgeSeconds * 1000; - return timestamp < expireOlderThan; - } - /** - * Removes the IndexedDB object store used to keep track of cache expiration - * metadata. - */ - - - async delete() { - // Make sure we don't attempt another rerun if we're called in the middle of - // a cache expiration. - this._rerunRequested = false; - await this._timestampModel.expireEntries(Infinity); // Expires all. - } - - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * This plugin can be used in the Workbox APIs to regularly enforce a - * limit on the age and / or the number of cached requests. - * - * Whenever a cached request is used or updated, this plugin will look - * at the used Cache and remove any old or extra requests. - * - * When using `maxAgeSeconds`, requests may be used *once* after expiring - * because the expiration clean up will not have occurred until *after* the - * cached request has been used. If the request has a "Date" header, then - * a light weight expiration check is performed and the request will not be - * used immediately. - * - * When using `maxEntries`, the entry least-recently requested will be removed from the cache first. - * - * @memberof workbox.expiration - */ - - class Plugin { - /** - * @param {Object} config - * @param {number} [config.maxEntries] The maximum number of entries to cache. - * Entries used the least will be removed as the maximum is reached. - * @param {number} [config.maxAgeSeconds] The maximum age of an entry before - * it's treated as stale and removed. - * @param {boolean} [config.purgeOnQuotaError] Whether to opt this cache in to - * automatic deletion if the available storage quota has been exceeded. - */ - constructor(config = {}) { - { - if (!(config.maxEntries || config.maxAgeSeconds)) { - throw new WorkboxError_mjs.WorkboxError('max-entries-or-age-required', { - moduleName: 'workbox-expiration', - className: 'Plugin', - funcName: 'constructor' - }); - } - - if (config.maxEntries) { - assert_mjs.assert.isType(config.maxEntries, 'number', { - moduleName: 'workbox-expiration', - className: 'Plugin', - funcName: 'constructor', - paramName: 'config.maxEntries' - }); - } - - if (config.maxAgeSeconds) { - assert_mjs.assert.isType(config.maxAgeSeconds, 'number', { - moduleName: 'workbox-expiration', - className: 'Plugin', - funcName: 'constructor', - paramName: 'config.maxAgeSeconds' - }); - } - } - - this._config = config; - this._maxAgeSeconds = config.maxAgeSeconds; - this._cacheExpirations = new Map(); - - if (config.purgeOnQuotaError) { - registerQuotaErrorCallback_mjs.registerQuotaErrorCallback(() => this.deleteCacheAndMetadata()); - } - } - /** - * A simple helper method to return a CacheExpiration instance for a given - * cache name. - * - * @param {string} cacheName - * @return {CacheExpiration} - * - * @private - */ - - - _getCacheExpiration(cacheName) { - if (cacheName === cacheNames_mjs.cacheNames.getRuntimeName()) { - throw new WorkboxError_mjs.WorkboxError('expire-custom-caches-only'); - } - - let cacheExpiration = this._cacheExpirations.get(cacheName); - - if (!cacheExpiration) { - cacheExpiration = new CacheExpiration(cacheName, this._config); - - this._cacheExpirations.set(cacheName, cacheExpiration); - } - - return cacheExpiration; - } - /** - * A "lifecycle" callback that will be triggered automatically by the - * `workbox.strategies` handlers when a `Response` is about to be returned - * from a [Cache](https://developer.mozilla.org/en-US/docs/Web/API/Cache) to - * the handler. It allows the `Response` to be inspected for freshness and - * prevents it from being used if the `Response`'s `Date` header value is - * older than the configured `maxAgeSeconds`. - * - * @param {Object} options - * @param {string} options.cacheName Name of the cache the response is in. - * @param {Response} options.cachedResponse The `Response` object that's been - * read from a cache and whose freshness should be checked. - * @return {Response} Either the `cachedResponse`, if it's - * fresh, or `null` if the `Response` is older than `maxAgeSeconds`. - * - * @private - */ - - - cachedResponseWillBeUsed({ - event, - request, - cacheName, - cachedResponse - }) { - if (!cachedResponse) { - return null; - } - - let isFresh = this._isResponseDateFresh(cachedResponse); // Expire entries to ensure that even if the expiration date has - // expired, it'll only be used once. - - - const cacheExpiration = this._getCacheExpiration(cacheName); - - cacheExpiration.expireEntries(); // Update the metadata for the request URL to the current timestamp, - // but don't `await` it as we don't want to block the response. - - const updateTimestampDone = cacheExpiration.updateTimestamp(request.url); - - if (event) { - try { - event.waitUntil(updateTimestampDone); - } catch (error) { - { - logger_mjs.logger.warn(`Unable to ensure service worker stays alive when ` + `updating cache entry for '${getFriendlyURL_mjs.getFriendlyURL(event.request.url)}'.`); - } - } - } - - return isFresh ? cachedResponse : null; - } - /** - * @param {Response} cachedResponse - * @return {boolean} - * - * @private - */ - - - _isResponseDateFresh(cachedResponse) { - if (!this._maxAgeSeconds) { - // We aren't expiring by age, so return true, it's fresh - return true; - } // Check if the 'date' header will suffice a quick expiration check. - // See https://github.com/GoogleChromeLabs/sw-toolbox/issues/164 for - // discussion. - - - const dateHeaderTimestamp = this._getDateHeaderTimestamp(cachedResponse); - - if (dateHeaderTimestamp === null) { - // Unable to parse date, so assume it's fresh. - return true; - } // If we have a valid headerTime, then our response is fresh iff the - // headerTime plus maxAgeSeconds is greater than the current time. - - - const now = Date.now(); - return dateHeaderTimestamp >= now - this._maxAgeSeconds * 1000; - } - /** - * This method will extract the data header and parse it into a useful - * value. - * - * @param {Response} cachedResponse - * @return {number} - * - * @private - */ - - - _getDateHeaderTimestamp(cachedResponse) { - if (!cachedResponse.headers.has('date')) { - return null; - } - - const dateHeader = cachedResponse.headers.get('date'); - const parsedDate = new Date(dateHeader); - const headerTime = parsedDate.getTime(); // If the Date header was invalid for some reason, parsedDate.getTime() - // will return NaN. - - if (isNaN(headerTime)) { - return null; - } - - return headerTime; - } - /** - * A "lifecycle" callback that will be triggered automatically by the - * `workbox.strategies` handlers when an entry is added to a cache. - * - * @param {Object} options - * @param {string} options.cacheName Name of the cache that was updated. - * @param {string} options.request The Request for the cached entry. - * - * @private - */ - - - async cacheDidUpdate({ - cacheName, - request - }) { - { - assert_mjs.assert.isType(cacheName, 'string', { - moduleName: 'workbox-expiration', - className: 'Plugin', - funcName: 'cacheDidUpdate', - paramName: 'cacheName' - }); - assert_mjs.assert.isInstance(request, Request, { - moduleName: 'workbox-expiration', - className: 'Plugin', - funcName: 'cacheDidUpdate', - paramName: 'request' - }); - } - - const cacheExpiration = this._getCacheExpiration(cacheName); - - await cacheExpiration.updateTimestamp(request.url); - await cacheExpiration.expireEntries(); - } - /** - * This is a helper method that performs two operations: - * - * - Deletes *all* the underlying Cache instances associated with this plugin - * instance, by calling caches.delete() on your behalf. - * - Deletes the metadata from IndexedDB used to keep track of expiration - * details for each Cache instance. - * - * When using cache expiration, calling this method is preferable to calling - * `caches.delete()` directly, since this will ensure that the IndexedDB - * metadata is also cleanly removed and open IndexedDB instances are deleted. - * - * Note that if you're *not* using cache expiration for a given cache, calling - * `caches.delete()` and passing in the cache's name should be sufficient. - * There is no Workbox-specific method needed for cleanup in that case. - */ - - - async deleteCacheAndMetadata() { - // Do this one at a time instead of all at once via `Promise.all()` to - // reduce the chance of inconsistency if a promise rejects. - for (const [cacheName, cacheExpiration] of this._cacheExpirations) { - await caches.delete(cacheName); - await cacheExpiration.delete(); - } // Reset this._cacheExpirations to its initial state. - - - this._cacheExpirations = new Map(); - } - - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - - exports.CacheExpiration = CacheExpiration; - exports.Plugin = Plugin; - - return exports; - -}({}, workbox.core._private, workbox.core._private, workbox.core._private, workbox.core._private, workbox.core._private, workbox.core._private, workbox.core._private, workbox.core)); -//# sourceMappingURL=workbox-expiration.dev.js.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-expiration.dev.js.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-expiration.dev.js.map deleted file mode 100644 index d0a03072a..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-expiration.dev.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-expiration.dev.js","sources":["../_version.mjs","../models/CacheTimestampsModel.mjs","../CacheExpiration.mjs","../Plugin.mjs","../index.mjs"],"sourcesContent":["try{self['workbox:expiration:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {DBWrapper} from 'workbox-core/_private/DBWrapper.mjs';\nimport {deleteDatabase} from 'workbox-core/_private/deleteDatabase.mjs';\nimport '../_version.mjs';\n\n\nconst DB_NAME = 'workbox-expiration';\nconst OBJECT_STORE_NAME = 'cache-entries';\n\nconst normalizeURL = (unNormalizedUrl) => {\n const url = new URL(unNormalizedUrl, location);\n url.hash = '';\n\n return url.href;\n};\n\n\n/**\n * Returns the timestamp model.\n *\n * @private\n */\nclass CacheTimestampsModel {\n /**\n *\n * @param {string} cacheName\n *\n * @private\n */\n constructor(cacheName) {\n this._cacheName = cacheName;\n\n this._db = new DBWrapper(DB_NAME, 1, {\n onupgradeneeded: (event) => this._handleUpgrade(event),\n });\n }\n\n /**\n * Should perform an upgrade of indexedDB.\n *\n * @param {Event} event\n *\n * @private\n */\n _handleUpgrade(event) {\n const db = event.target.result;\n\n // TODO(philipwalton): EdgeHTML doesn't support arrays as a keyPath, so we\n // have to use the `id` keyPath here and create our own values (a\n // concatenation of `url + cacheName`) instead of simply using\n // `keyPath: ['url', 'cacheName']`, which is supported in other browsers.\n const objStore = db.createObjectStore(OBJECT_STORE_NAME, {keyPath: 'id'});\n\n // TODO(philipwalton): once we don't have to support EdgeHTML, we can\n // create a single index with the keyPath `['cacheName', 'timestamp']`\n // instead of doing both these indexes.\n objStore.createIndex('cacheName', 'cacheName', {unique: false});\n objStore.createIndex('timestamp', 'timestamp', {unique: false});\n\n // Previous versions of `workbox-expiration` used `this._cacheName`\n // as the IDBDatabase name.\n deleteDatabase(this._cacheName);\n }\n\n /**\n * @param {string} url\n * @param {number} timestamp\n *\n * @private\n */\n async setTimestamp(url, timestamp) {\n url = normalizeURL(url);\n\n await this._db.put(OBJECT_STORE_NAME, {\n url,\n timestamp,\n cacheName: this._cacheName,\n // Creating an ID from the URL and cache name won't be necessary once\n // Edge switches to Chromium and all browsers we support work with\n // array keyPaths.\n id: this._getId(url),\n });\n }\n\n /**\n * Returns the timestamp stored for a given URL.\n *\n * @param {string} url\n * @return {number}\n *\n * @private\n */\n async getTimestamp(url) {\n const entry = await this._db.get(OBJECT_STORE_NAME, this._getId(url));\n return entry.timestamp;\n }\n\n /**\n * Iterates through all the entries in the object store (from newest to\n * oldest) and removes entries once either `maxCount` is reached or the\n * entry's timestamp is less than `minTimestamp`.\n *\n * @param {number} minTimestamp\n * @param {number} maxCount\n *\n * @private\n */\n async expireEntries(minTimestamp, maxCount) {\n const entriesToDelete = await this._db.transaction(\n OBJECT_STORE_NAME, 'readwrite', (txn, done) => {\n const store = txn.objectStore(OBJECT_STORE_NAME);\n const entriesToDelete = [];\n let entriesNotDeletedCount = 0;\n\n store.index('timestamp')\n .openCursor(null, 'prev')\n .onsuccess = ({target}) => {\n const cursor = target.result;\n if (cursor) {\n const result = cursor.value;\n // TODO(philipwalton): once we can use a multi-key index, we\n // won't have to check `cacheName` here.\n if (result.cacheName === this._cacheName) {\n // Delete an entry if it's older than the max age or\n // if we already have the max number allowed.\n if ((minTimestamp && result.timestamp < minTimestamp) ||\n (maxCount && entriesNotDeletedCount >= maxCount)) {\n // TODO(philipwalton): we should be able to delete the\n // entry right here, but doing so causes an iteration\n // bug in Safari stable (fixed in TP). Instead we can\n // store the keys of the entries to delete, and then\n // delete the separate transactions.\n // https://github.com/GoogleChrome/workbox/issues/1978\n // cursor.delete();\n\n // We only need to return the URL, not the whole entry.\n entriesToDelete.push(cursor.value);\n } else {\n entriesNotDeletedCount++;\n }\n }\n cursor.continue();\n } else {\n done(entriesToDelete);\n }\n };\n });\n\n // TODO(philipwalton): once the Safari bug in the following issue is fixed,\n // we should be able to remove this loop and do the entry deletion in the\n // cursor loop above:\n // https://github.com/GoogleChrome/workbox/issues/1978\n const urlsDeleted = [];\n for (const entry of entriesToDelete) {\n await this._db.delete(OBJECT_STORE_NAME, entry.id);\n urlsDeleted.push(entry.url);\n }\n\n return urlsDeleted;\n }\n\n /**\n * Takes a URL and returns an ID that will be unique in the object store.\n *\n * @param {string} url\n * @return {string}\n *\n * @private\n */\n _getId(url) {\n // Creating an ID from the URL and cache name won't be necessary once\n // Edge switches to Chromium and all browsers we support work with\n // array keyPaths.\n return this._cacheName + '|' + normalizeURL(url);\n }\n}\n\nexport {CacheTimestampsModel};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {CacheTimestampsModel} from './models/CacheTimestampsModel.mjs';\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\n\nimport './_version.mjs';\n\n/**\n * The `CacheExpiration` class allows you define an expiration and / or\n * limit on the number of responses stored in a\n * [`Cache`](https://developer.mozilla.org/en-US/docs/Web/API/Cache).\n *\n * @memberof workbox.expiration\n */\nclass CacheExpiration {\n /**\n * To construct a new CacheExpiration instance you must provide at least\n * one of the `config` properties.\n *\n * @param {string} cacheName Name of the cache to apply restrictions to.\n * @param {Object} config\n * @param {number} [config.maxEntries] The maximum number of entries to cache.\n * Entries used the least will be removed as the maximum is reached.\n * @param {number} [config.maxAgeSeconds] The maximum age of an entry before\n * it's treated as stale and removed.\n */\n constructor(cacheName, config = {}) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(cacheName, 'string', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'constructor',\n paramName: 'cacheName',\n });\n\n if (!(config.maxEntries || config.maxAgeSeconds)) {\n throw new WorkboxError('max-entries-or-age-required', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'constructor',\n });\n }\n\n if (config.maxEntries) {\n assert.isType(config.maxEntries, 'number', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'constructor',\n paramName: 'config.maxEntries',\n });\n\n // TODO: Assert is positive\n }\n\n if (config.maxAgeSeconds) {\n assert.isType(config.maxAgeSeconds, 'number', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'constructor',\n paramName: 'config.maxAgeSeconds',\n });\n\n // TODO: Assert is positive\n }\n }\n\n this._isRunning = false;\n this._rerunRequested = false;\n this._maxEntries = config.maxEntries;\n this._maxAgeSeconds = config.maxAgeSeconds;\n this._cacheName = cacheName;\n this._timestampModel = new CacheTimestampsModel(cacheName);\n }\n\n /**\n * Expires entries for the given cache and given criteria.\n */\n async expireEntries() {\n if (this._isRunning) {\n this._rerunRequested = true;\n return;\n }\n this._isRunning = true;\n\n const minTimestamp = this._maxAgeSeconds ?\n Date.now() - (this._maxAgeSeconds * 1000) : undefined;\n\n const urlsExpired = await this._timestampModel.expireEntries(\n minTimestamp, this._maxEntries);\n\n // Delete URLs from the cache\n const cache = await caches.open(this._cacheName);\n for (const url of urlsExpired) {\n await cache.delete(url);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (urlsExpired.length > 0) {\n logger.groupCollapsed(\n `Expired ${urlsExpired.length} ` +\n `${urlsExpired.length === 1 ? 'entry' : 'entries'} and removed ` +\n `${urlsExpired.length === 1 ? 'it' : 'them'} from the ` +\n `'${this._cacheName}' cache.`);\n logger.log(`Expired the following ${urlsExpired.length === 1 ?\n 'URL' : 'URLs'}:`);\n urlsExpired.forEach((url) => logger.log(` ${url}`));\n logger.groupEnd();\n } else {\n logger.debug(`Cache expiration ran and found no entries to remove.`);\n }\n }\n\n this._isRunning = false;\n if (this._rerunRequested) {\n this._rerunRequested = false;\n this.expireEntries();\n }\n }\n\n /**\n * Update the timestamp for the given URL. This ensures the when\n * removing entries based on maximum entries, most recently used\n * is accurate or when expiring, the timestamp is up-to-date.\n *\n * @param {string} url\n */\n async updateTimestamp(url) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(url, 'string', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'updateTimestamp',\n paramName: 'url',\n });\n }\n\n await this._timestampModel.setTimestamp(url, Date.now());\n }\n\n /**\n * Can be used to check if a URL has expired or not before it's used.\n *\n * This requires a look up from IndexedDB, so can be slow.\n *\n * Note: This method will not remove the cached entry, call\n * `expireEntries()` to remove indexedDB and Cache entries.\n *\n * @param {string} url\n * @return {boolean}\n */\n async isURLExpired(url) {\n if (process.env.NODE_ENV !== 'production') {\n if (!this._maxAgeSeconds) {\n throw new WorkboxError(`expired-test-without-max-age`, {\n methodName: 'isURLExpired',\n paramName: 'maxAgeSeconds',\n });\n }\n }\n\n const timestamp = await this._timestampModel.getTimestamp(url);\n const expireOlderThan = Date.now() - (this._maxAgeSeconds * 1000);\n return (timestamp < expireOlderThan);\n }\n\n /**\n * Removes the IndexedDB object store used to keep track of cache expiration\n * metadata.\n */\n async delete() {\n // Make sure we don't attempt another rerun if we're called in the middle of\n // a cache expiration.\n this._rerunRequested = false;\n await this._timestampModel.expireEntries(Infinity); // Expires all.\n }\n}\n\nexport {CacheExpiration};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {cacheNames} from 'workbox-core/_private/cacheNames.mjs';\nimport {getFriendlyURL} from 'workbox-core/_private/getFriendlyURL.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\nimport {registerQuotaErrorCallback}\n from 'workbox-core/registerQuotaErrorCallback.mjs';\n\nimport {CacheExpiration} from './CacheExpiration.mjs';\nimport './_version.mjs';\n\n/**\n * This plugin can be used in the Workbox APIs to regularly enforce a\n * limit on the age and / or the number of cached requests.\n *\n * Whenever a cached request is used or updated, this plugin will look\n * at the used Cache and remove any old or extra requests.\n *\n * When using `maxAgeSeconds`, requests may be used *once* after expiring\n * because the expiration clean up will not have occurred until *after* the\n * cached request has been used. If the request has a \"Date\" header, then\n * a light weight expiration check is performed and the request will not be\n * used immediately.\n *\n * When using `maxEntries`, the entry least-recently requested will be removed from the cache first.\n *\n * @memberof workbox.expiration\n */\nclass Plugin {\n /**\n * @param {Object} config\n * @param {number} [config.maxEntries] The maximum number of entries to cache.\n * Entries used the least will be removed as the maximum is reached.\n * @param {number} [config.maxAgeSeconds] The maximum age of an entry before\n * it's treated as stale and removed.\n * @param {boolean} [config.purgeOnQuotaError] Whether to opt this cache in to\n * automatic deletion if the available storage quota has been exceeded.\n */\n constructor(config = {}) {\n if (process.env.NODE_ENV !== 'production') {\n if (!(config.maxEntries || config.maxAgeSeconds)) {\n throw new WorkboxError('max-entries-or-age-required', {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'constructor',\n });\n }\n\n if (config.maxEntries) {\n assert.isType(config.maxEntries, 'number', {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'constructor',\n paramName: 'config.maxEntries',\n });\n }\n\n if (config.maxAgeSeconds) {\n assert.isType(config.maxAgeSeconds, 'number', {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'constructor',\n paramName: 'config.maxAgeSeconds',\n });\n }\n }\n\n this._config = config;\n this._maxAgeSeconds = config.maxAgeSeconds;\n this._cacheExpirations = new Map();\n\n if (config.purgeOnQuotaError) {\n registerQuotaErrorCallback(() => this.deleteCacheAndMetadata());\n }\n }\n\n /**\n * A simple helper method to return a CacheExpiration instance for a given\n * cache name.\n *\n * @param {string} cacheName\n * @return {CacheExpiration}\n *\n * @private\n */\n _getCacheExpiration(cacheName) {\n if (cacheName === cacheNames.getRuntimeName()) {\n throw new WorkboxError('expire-custom-caches-only');\n }\n\n let cacheExpiration = this._cacheExpirations.get(cacheName);\n if (!cacheExpiration) {\n cacheExpiration = new CacheExpiration(cacheName, this._config);\n this._cacheExpirations.set(cacheName, cacheExpiration);\n }\n return cacheExpiration;\n }\n\n /**\n * A \"lifecycle\" callback that will be triggered automatically by the\n * `workbox.strategies` handlers when a `Response` is about to be returned\n * from a [Cache](https://developer.mozilla.org/en-US/docs/Web/API/Cache) to\n * the handler. It allows the `Response` to be inspected for freshness and\n * prevents it from being used if the `Response`'s `Date` header value is\n * older than the configured `maxAgeSeconds`.\n *\n * @param {Object} options\n * @param {string} options.cacheName Name of the cache the response is in.\n * @param {Response} options.cachedResponse The `Response` object that's been\n * read from a cache and whose freshness should be checked.\n * @return {Response} Either the `cachedResponse`, if it's\n * fresh, or `null` if the `Response` is older than `maxAgeSeconds`.\n *\n * @private\n */\n cachedResponseWillBeUsed({event, request, cacheName, cachedResponse}) {\n if (!cachedResponse) {\n return null;\n }\n\n let isFresh = this._isResponseDateFresh(cachedResponse);\n\n // Expire entries to ensure that even if the expiration date has\n // expired, it'll only be used once.\n const cacheExpiration = this._getCacheExpiration(cacheName);\n cacheExpiration.expireEntries();\n\n // Update the metadata for the request URL to the current timestamp,\n // but don't `await` it as we don't want to block the response.\n const updateTimestampDone = cacheExpiration.updateTimestamp(request.url);\n if (event) {\n try {\n event.waitUntil(updateTimestampDone);\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`Unable to ensure service worker stays alive when ` +\n `updating cache entry for '${getFriendlyURL(event.request.url)}'.`);\n }\n }\n }\n\n return isFresh ? cachedResponse : null;\n }\n\n /**\n * @param {Response} cachedResponse\n * @return {boolean}\n *\n * @private\n */\n _isResponseDateFresh(cachedResponse) {\n if (!this._maxAgeSeconds) {\n // We aren't expiring by age, so return true, it's fresh\n return true;\n }\n\n // Check if the 'date' header will suffice a quick expiration check.\n // See https://github.com/GoogleChromeLabs/sw-toolbox/issues/164 for\n // discussion.\n const dateHeaderTimestamp = this._getDateHeaderTimestamp(cachedResponse);\n if (dateHeaderTimestamp === null) {\n // Unable to parse date, so assume it's fresh.\n return true;\n }\n\n // If we have a valid headerTime, then our response is fresh iff the\n // headerTime plus maxAgeSeconds is greater than the current time.\n const now = Date.now();\n return dateHeaderTimestamp >= now - (this._maxAgeSeconds * 1000);\n }\n\n /**\n * This method will extract the data header and parse it into a useful\n * value.\n *\n * @param {Response} cachedResponse\n * @return {number}\n *\n * @private\n */\n _getDateHeaderTimestamp(cachedResponse) {\n if (!cachedResponse.headers.has('date')) {\n return null;\n }\n\n const dateHeader = cachedResponse.headers.get('date');\n const parsedDate = new Date(dateHeader);\n const headerTime = parsedDate.getTime();\n\n // If the Date header was invalid for some reason, parsedDate.getTime()\n // will return NaN.\n if (isNaN(headerTime)) {\n return null;\n }\n\n return headerTime;\n }\n\n /**\n * A \"lifecycle\" callback that will be triggered automatically by the\n * `workbox.strategies` handlers when an entry is added to a cache.\n *\n * @param {Object} options\n * @param {string} options.cacheName Name of the cache that was updated.\n * @param {string} options.request The Request for the cached entry.\n *\n * @private\n */\n async cacheDidUpdate({cacheName, request}) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(cacheName, 'string', {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'cacheDidUpdate',\n paramName: 'cacheName',\n });\n assert.isInstance(request, Request, {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'cacheDidUpdate',\n paramName: 'request',\n });\n }\n\n const cacheExpiration = this._getCacheExpiration(cacheName);\n await cacheExpiration.updateTimestamp(request.url);\n await cacheExpiration.expireEntries();\n }\n\n\n /**\n * This is a helper method that performs two operations:\n *\n * - Deletes *all* the underlying Cache instances associated with this plugin\n * instance, by calling caches.delete() on your behalf.\n * - Deletes the metadata from IndexedDB used to keep track of expiration\n * details for each Cache instance.\n *\n * When using cache expiration, calling this method is preferable to calling\n * `caches.delete()` directly, since this will ensure that the IndexedDB\n * metadata is also cleanly removed and open IndexedDB instances are deleted.\n *\n * Note that if you're *not* using cache expiration for a given cache, calling\n * `caches.delete()` and passing in the cache's name should be sufficient.\n * There is no Workbox-specific method needed for cleanup in that case.\n */\n async deleteCacheAndMetadata() {\n // Do this one at a time instead of all at once via `Promise.all()` to\n // reduce the chance of inconsistency if a promise rejects.\n for (const [cacheName, cacheExpiration] of this._cacheExpirations) {\n await caches.delete(cacheName);\n await cacheExpiration.delete();\n }\n\n // Reset this._cacheExpirations to its initial state.\n this._cacheExpirations = new Map();\n }\n}\n\nexport {Plugin};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {CacheExpiration} from './CacheExpiration.mjs';\nimport {Plugin} from './Plugin.mjs';\nimport './_version.mjs';\n\n\n/**\n * @namespace workbox.expiration\n */\n\nexport {\n CacheExpiration,\n Plugin,\n};\n"],"names":["self","_","e","DB_NAME","OBJECT_STORE_NAME","normalizeURL","unNormalizedUrl","url","URL","location","hash","href","CacheTimestampsModel","constructor","cacheName","_cacheName","_db","DBWrapper","onupgradeneeded","event","_handleUpgrade","db","target","result","objStore","createObjectStore","keyPath","createIndex","unique","deleteDatabase","setTimestamp","timestamp","put","id","_getId","getTimestamp","entry","get","expireEntries","minTimestamp","maxCount","entriesToDelete","transaction","txn","done","store","objectStore","entriesNotDeletedCount","index","openCursor","onsuccess","cursor","value","push","continue","urlsDeleted","delete","CacheExpiration","config","assert","isType","moduleName","className","funcName","paramName","maxEntries","maxAgeSeconds","WorkboxError","_isRunning","_rerunRequested","_maxEntries","_maxAgeSeconds","_timestampModel","Date","now","undefined","urlsExpired","cache","caches","open","length","logger","groupCollapsed","log","forEach","groupEnd","debug","updateTimestamp","isURLExpired","methodName","expireOlderThan","Infinity","Plugin","_config","_cacheExpirations","Map","purgeOnQuotaError","registerQuotaErrorCallback","deleteCacheAndMetadata","_getCacheExpiration","cacheNames","getRuntimeName","cacheExpiration","set","cachedResponseWillBeUsed","request","cachedResponse","isFresh","_isResponseDateFresh","updateTimestampDone","waitUntil","error","warn","getFriendlyURL","dateHeaderTimestamp","_getDateHeaderTimestamp","headers","has","dateHeader","parsedDate","headerTime","getTime","isNaN","cacheDidUpdate","isInstance","Request"],"mappings":"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"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-expiration.prod.js b/pr-preview/pr-1029/workbox-v4.3.1/workbox-expiration.prod.js deleted file mode 100644 index 7c8f84040..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-expiration.prod.js +++ /dev/null @@ -1,2 +0,0 @@ -this.workbox=this.workbox||{},this.workbox.expiration=function(t,e,s,i,a,n){"use strict";try{self["workbox:expiration:4.3.1"]&&_()}catch(t){}const h="workbox-expiration",c="cache-entries",r=t=>{const e=new URL(t,location);return e.hash="",e.href};class o{constructor(t){this.t=t,this.s=new e.DBWrapper(h,1,{onupgradeneeded:t=>this.i(t)})}i(t){const e=t.target.result.createObjectStore(c,{keyPath:"id"});e.createIndex("cacheName","cacheName",{unique:!1}),e.createIndex("timestamp","timestamp",{unique:!1}),s.deleteDatabase(this.t)}async setTimestamp(t,e){t=r(t),await this.s.put(c,{url:t,timestamp:e,cacheName:this.t,id:this.h(t)})}async getTimestamp(t){return(await this.s.get(c,this.h(t))).timestamp}async expireEntries(t,e){const s=await this.s.transaction(c,"readwrite",(s,i)=>{const a=s.objectStore(c),n=[];let h=0;a.index("timestamp").openCursor(null,"prev").onsuccess=(({target:s})=>{const a=s.result;if(a){const s=a.value;s.cacheName===this.t&&(t&&s.timestamp=e?n.push(a.value):h++),a.continue()}else i(n)})}),i=[];for(const t of s)await this.s.delete(c,t.id),i.push(t.url);return i}h(t){return this.t+"|"+r(t)}}class u{constructor(t,e={}){this.o=!1,this.u=!1,this.l=e.maxEntries,this.p=e.maxAgeSeconds,this.t=t,this.m=new o(t)}async expireEntries(){if(this.o)return void(this.u=!0);this.o=!0;const t=this.p?Date.now()-1e3*this.p:void 0,e=await this.m.expireEntries(t,this.l),s=await caches.open(this.t);for(const t of e)await s.delete(t);this.o=!1,this.u&&(this.u=!1,this.expireEntries())}async updateTimestamp(t){await this.m.setTimestamp(t,Date.now())}async isURLExpired(t){return await this.m.getTimestamp(t)this.deleteCacheAndMetadata())}k(t){if(t===a.cacheNames.getRuntimeName())throw new i.WorkboxError("expire-custom-caches-only");let e=this.g.get(t);return e||(e=new u(t,this.D),this.g.set(t,e)),e}cachedResponseWillBeUsed({event:t,request:e,cacheName:s,cachedResponse:i}){if(!i)return null;let a=this.N(i);const n=this.k(s);n.expireEntries();const h=n.updateTimestamp(e.url);if(t)try{t.waitUntil(h)}catch(t){}return a?i:null}N(t){if(!this.p)return!0;const e=this._(t);return null===e||e>=Date.now()-1e3*this.p}_(t){if(!t.headers.has("date"))return null;const e=t.headers.get("date"),s=new Date(e).getTime();return isNaN(s)?null:s}async cacheDidUpdate({cacheName:t,request:e}){const s=this.k(t);await s.updateTimestamp(e.url),await s.expireEntries()}async deleteCacheAndMetadata(){for(const[t,e]of this.g)await caches.delete(t),await e.delete();this.g=new Map}},t}({},workbox.core._private,workbox.core._private,workbox.core._private,workbox.core._private,workbox.core); -//# sourceMappingURL=workbox-expiration.prod.js.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-expiration.prod.js.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-expiration.prod.js.map deleted file mode 100644 index 6cb8ede7b..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-expiration.prod.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-expiration.prod.js","sources":["../_version.mjs","../models/CacheTimestampsModel.mjs","../CacheExpiration.mjs","../Plugin.mjs"],"sourcesContent":["try{self['workbox:expiration:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {DBWrapper} from 'workbox-core/_private/DBWrapper.mjs';\nimport {deleteDatabase} from 'workbox-core/_private/deleteDatabase.mjs';\nimport '../_version.mjs';\n\n\nconst DB_NAME = 'workbox-expiration';\nconst OBJECT_STORE_NAME = 'cache-entries';\n\nconst normalizeURL = (unNormalizedUrl) => {\n const url = new URL(unNormalizedUrl, location);\n url.hash = '';\n\n return url.href;\n};\n\n\n/**\n * Returns the timestamp model.\n *\n * @private\n */\nclass CacheTimestampsModel {\n /**\n *\n * @param {string} cacheName\n *\n * @private\n */\n constructor(cacheName) {\n this._cacheName = cacheName;\n\n this._db = new DBWrapper(DB_NAME, 1, {\n onupgradeneeded: (event) => this._handleUpgrade(event),\n });\n }\n\n /**\n * Should perform an upgrade of indexedDB.\n *\n * @param {Event} event\n *\n * @private\n */\n _handleUpgrade(event) {\n const db = event.target.result;\n\n // TODO(philipwalton): EdgeHTML doesn't support arrays as a keyPath, so we\n // have to use the `id` keyPath here and create our own values (a\n // concatenation of `url + cacheName`) instead of simply using\n // `keyPath: ['url', 'cacheName']`, which is supported in other browsers.\n const objStore = db.createObjectStore(OBJECT_STORE_NAME, {keyPath: 'id'});\n\n // TODO(philipwalton): once we don't have to support EdgeHTML, we can\n // create a single index with the keyPath `['cacheName', 'timestamp']`\n // instead of doing both these indexes.\n objStore.createIndex('cacheName', 'cacheName', {unique: false});\n objStore.createIndex('timestamp', 'timestamp', {unique: false});\n\n // Previous versions of `workbox-expiration` used `this._cacheName`\n // as the IDBDatabase name.\n deleteDatabase(this._cacheName);\n }\n\n /**\n * @param {string} url\n * @param {number} timestamp\n *\n * @private\n */\n async setTimestamp(url, timestamp) {\n url = normalizeURL(url);\n\n await this._db.put(OBJECT_STORE_NAME, {\n url,\n timestamp,\n cacheName: this._cacheName,\n // Creating an ID from the URL and cache name won't be necessary once\n // Edge switches to Chromium and all browsers we support work with\n // array keyPaths.\n id: this._getId(url),\n });\n }\n\n /**\n * Returns the timestamp stored for a given URL.\n *\n * @param {string} url\n * @return {number}\n *\n * @private\n */\n async getTimestamp(url) {\n const entry = await this._db.get(OBJECT_STORE_NAME, this._getId(url));\n return entry.timestamp;\n }\n\n /**\n * Iterates through all the entries in the object store (from newest to\n * oldest) and removes entries once either `maxCount` is reached or the\n * entry's timestamp is less than `minTimestamp`.\n *\n * @param {number} minTimestamp\n * @param {number} maxCount\n *\n * @private\n */\n async expireEntries(minTimestamp, maxCount) {\n const entriesToDelete = await this._db.transaction(\n OBJECT_STORE_NAME, 'readwrite', (txn, done) => {\n const store = txn.objectStore(OBJECT_STORE_NAME);\n const entriesToDelete = [];\n let entriesNotDeletedCount = 0;\n\n store.index('timestamp')\n .openCursor(null, 'prev')\n .onsuccess = ({target}) => {\n const cursor = target.result;\n if (cursor) {\n const result = cursor.value;\n // TODO(philipwalton): once we can use a multi-key index, we\n // won't have to check `cacheName` here.\n if (result.cacheName === this._cacheName) {\n // Delete an entry if it's older than the max age or\n // if we already have the max number allowed.\n if ((minTimestamp && result.timestamp < minTimestamp) ||\n (maxCount && entriesNotDeletedCount >= maxCount)) {\n // TODO(philipwalton): we should be able to delete the\n // entry right here, but doing so causes an iteration\n // bug in Safari stable (fixed in TP). Instead we can\n // store the keys of the entries to delete, and then\n // delete the separate transactions.\n // https://github.com/GoogleChrome/workbox/issues/1978\n // cursor.delete();\n\n // We only need to return the URL, not the whole entry.\n entriesToDelete.push(cursor.value);\n } else {\n entriesNotDeletedCount++;\n }\n }\n cursor.continue();\n } else {\n done(entriesToDelete);\n }\n };\n });\n\n // TODO(philipwalton): once the Safari bug in the following issue is fixed,\n // we should be able to remove this loop and do the entry deletion in the\n // cursor loop above:\n // https://github.com/GoogleChrome/workbox/issues/1978\n const urlsDeleted = [];\n for (const entry of entriesToDelete) {\n await this._db.delete(OBJECT_STORE_NAME, entry.id);\n urlsDeleted.push(entry.url);\n }\n\n return urlsDeleted;\n }\n\n /**\n * Takes a URL and returns an ID that will be unique in the object store.\n *\n * @param {string} url\n * @return {string}\n *\n * @private\n */\n _getId(url) {\n // Creating an ID from the URL and cache name won't be necessary once\n // Edge switches to Chromium and all browsers we support work with\n // array keyPaths.\n return this._cacheName + '|' + normalizeURL(url);\n }\n}\n\nexport {CacheTimestampsModel};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {CacheTimestampsModel} from './models/CacheTimestampsModel.mjs';\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\n\nimport './_version.mjs';\n\n/**\n * The `CacheExpiration` class allows you define an expiration and / or\n * limit on the number of responses stored in a\n * [`Cache`](https://developer.mozilla.org/en-US/docs/Web/API/Cache).\n *\n * @memberof workbox.expiration\n */\nclass CacheExpiration {\n /**\n * To construct a new CacheExpiration instance you must provide at least\n * one of the `config` properties.\n *\n * @param {string} cacheName Name of the cache to apply restrictions to.\n * @param {Object} config\n * @param {number} [config.maxEntries] The maximum number of entries to cache.\n * Entries used the least will be removed as the maximum is reached.\n * @param {number} [config.maxAgeSeconds] The maximum age of an entry before\n * it's treated as stale and removed.\n */\n constructor(cacheName, config = {}) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(cacheName, 'string', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'constructor',\n paramName: 'cacheName',\n });\n\n if (!(config.maxEntries || config.maxAgeSeconds)) {\n throw new WorkboxError('max-entries-or-age-required', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'constructor',\n });\n }\n\n if (config.maxEntries) {\n assert.isType(config.maxEntries, 'number', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'constructor',\n paramName: 'config.maxEntries',\n });\n\n // TODO: Assert is positive\n }\n\n if (config.maxAgeSeconds) {\n assert.isType(config.maxAgeSeconds, 'number', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'constructor',\n paramName: 'config.maxAgeSeconds',\n });\n\n // TODO: Assert is positive\n }\n }\n\n this._isRunning = false;\n this._rerunRequested = false;\n this._maxEntries = config.maxEntries;\n this._maxAgeSeconds = config.maxAgeSeconds;\n this._cacheName = cacheName;\n this._timestampModel = new CacheTimestampsModel(cacheName);\n }\n\n /**\n * Expires entries for the given cache and given criteria.\n */\n async expireEntries() {\n if (this._isRunning) {\n this._rerunRequested = true;\n return;\n }\n this._isRunning = true;\n\n const minTimestamp = this._maxAgeSeconds ?\n Date.now() - (this._maxAgeSeconds * 1000) : undefined;\n\n const urlsExpired = await this._timestampModel.expireEntries(\n minTimestamp, this._maxEntries);\n\n // Delete URLs from the cache\n const cache = await caches.open(this._cacheName);\n for (const url of urlsExpired) {\n await cache.delete(url);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (urlsExpired.length > 0) {\n logger.groupCollapsed(\n `Expired ${urlsExpired.length} ` +\n `${urlsExpired.length === 1 ? 'entry' : 'entries'} and removed ` +\n `${urlsExpired.length === 1 ? 'it' : 'them'} from the ` +\n `'${this._cacheName}' cache.`);\n logger.log(`Expired the following ${urlsExpired.length === 1 ?\n 'URL' : 'URLs'}:`);\n urlsExpired.forEach((url) => logger.log(` ${url}`));\n logger.groupEnd();\n } else {\n logger.debug(`Cache expiration ran and found no entries to remove.`);\n }\n }\n\n this._isRunning = false;\n if (this._rerunRequested) {\n this._rerunRequested = false;\n this.expireEntries();\n }\n }\n\n /**\n * Update the timestamp for the given URL. This ensures the when\n * removing entries based on maximum entries, most recently used\n * is accurate or when expiring, the timestamp is up-to-date.\n *\n * @param {string} url\n */\n async updateTimestamp(url) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(url, 'string', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'updateTimestamp',\n paramName: 'url',\n });\n }\n\n await this._timestampModel.setTimestamp(url, Date.now());\n }\n\n /**\n * Can be used to check if a URL has expired or not before it's used.\n *\n * This requires a look up from IndexedDB, so can be slow.\n *\n * Note: This method will not remove the cached entry, call\n * `expireEntries()` to remove indexedDB and Cache entries.\n *\n * @param {string} url\n * @return {boolean}\n */\n async isURLExpired(url) {\n if (process.env.NODE_ENV !== 'production') {\n if (!this._maxAgeSeconds) {\n throw new WorkboxError(`expired-test-without-max-age`, {\n methodName: 'isURLExpired',\n paramName: 'maxAgeSeconds',\n });\n }\n }\n\n const timestamp = await this._timestampModel.getTimestamp(url);\n const expireOlderThan = Date.now() - (this._maxAgeSeconds * 1000);\n return (timestamp < expireOlderThan);\n }\n\n /**\n * Removes the IndexedDB object store used to keep track of cache expiration\n * metadata.\n */\n async delete() {\n // Make sure we don't attempt another rerun if we're called in the middle of\n // a cache expiration.\n this._rerunRequested = false;\n await this._timestampModel.expireEntries(Infinity); // Expires all.\n }\n}\n\nexport {CacheExpiration};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {cacheNames} from 'workbox-core/_private/cacheNames.mjs';\nimport {getFriendlyURL} from 'workbox-core/_private/getFriendlyURL.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\nimport {registerQuotaErrorCallback}\n from 'workbox-core/registerQuotaErrorCallback.mjs';\n\nimport {CacheExpiration} from './CacheExpiration.mjs';\nimport './_version.mjs';\n\n/**\n * This plugin can be used in the Workbox APIs to regularly enforce a\n * limit on the age and / or the number of cached requests.\n *\n * Whenever a cached request is used or updated, this plugin will look\n * at the used Cache and remove any old or extra requests.\n *\n * When using `maxAgeSeconds`, requests may be used *once* after expiring\n * because the expiration clean up will not have occurred until *after* the\n * cached request has been used. If the request has a \"Date\" header, then\n * a light weight expiration check is performed and the request will not be\n * used immediately.\n *\n * When using `maxEntries`, the entry least-recently requested will be removed from the cache first.\n *\n * @memberof workbox.expiration\n */\nclass Plugin {\n /**\n * @param {Object} config\n * @param {number} [config.maxEntries] The maximum number of entries to cache.\n * Entries used the least will be removed as the maximum is reached.\n * @param {number} [config.maxAgeSeconds] The maximum age of an entry before\n * it's treated as stale and removed.\n * @param {boolean} [config.purgeOnQuotaError] Whether to opt this cache in to\n * automatic deletion if the available storage quota has been exceeded.\n */\n constructor(config = {}) {\n if (process.env.NODE_ENV !== 'production') {\n if (!(config.maxEntries || config.maxAgeSeconds)) {\n throw new WorkboxError('max-entries-or-age-required', {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'constructor',\n });\n }\n\n if (config.maxEntries) {\n assert.isType(config.maxEntries, 'number', {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'constructor',\n paramName: 'config.maxEntries',\n });\n }\n\n if (config.maxAgeSeconds) {\n assert.isType(config.maxAgeSeconds, 'number', {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'constructor',\n paramName: 'config.maxAgeSeconds',\n });\n }\n }\n\n this._config = config;\n this._maxAgeSeconds = config.maxAgeSeconds;\n this._cacheExpirations = new Map();\n\n if (config.purgeOnQuotaError) {\n registerQuotaErrorCallback(() => this.deleteCacheAndMetadata());\n }\n }\n\n /**\n * A simple helper method to return a CacheExpiration instance for a given\n * cache name.\n *\n * @param {string} cacheName\n * @return {CacheExpiration}\n *\n * @private\n */\n _getCacheExpiration(cacheName) {\n if (cacheName === cacheNames.getRuntimeName()) {\n throw new WorkboxError('expire-custom-caches-only');\n }\n\n let cacheExpiration = this._cacheExpirations.get(cacheName);\n if (!cacheExpiration) {\n cacheExpiration = new CacheExpiration(cacheName, this._config);\n this._cacheExpirations.set(cacheName, cacheExpiration);\n }\n return cacheExpiration;\n }\n\n /**\n * A \"lifecycle\" callback that will be triggered automatically by the\n * `workbox.strategies` handlers when a `Response` is about to be returned\n * from a [Cache](https://developer.mozilla.org/en-US/docs/Web/API/Cache) to\n * the handler. It allows the `Response` to be inspected for freshness and\n * prevents it from being used if the `Response`'s `Date` header value is\n * older than the configured `maxAgeSeconds`.\n *\n * @param {Object} options\n * @param {string} options.cacheName Name of the cache the response is in.\n * @param {Response} options.cachedResponse The `Response` object that's been\n * read from a cache and whose freshness should be checked.\n * @return {Response} Either the `cachedResponse`, if it's\n * fresh, or `null` if the `Response` is older than `maxAgeSeconds`.\n *\n * @private\n */\n cachedResponseWillBeUsed({event, request, cacheName, cachedResponse}) {\n if (!cachedResponse) {\n return null;\n }\n\n let isFresh = this._isResponseDateFresh(cachedResponse);\n\n // Expire entries to ensure that even if the expiration date has\n // expired, it'll only be used once.\n const cacheExpiration = this._getCacheExpiration(cacheName);\n cacheExpiration.expireEntries();\n\n // Update the metadata for the request URL to the current timestamp,\n // but don't `await` it as we don't want to block the response.\n const updateTimestampDone = cacheExpiration.updateTimestamp(request.url);\n if (event) {\n try {\n event.waitUntil(updateTimestampDone);\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`Unable to ensure service worker stays alive when ` +\n `updating cache entry for '${getFriendlyURL(event.request.url)}'.`);\n }\n }\n }\n\n return isFresh ? cachedResponse : null;\n }\n\n /**\n * @param {Response} cachedResponse\n * @return {boolean}\n *\n * @private\n */\n _isResponseDateFresh(cachedResponse) {\n if (!this._maxAgeSeconds) {\n // We aren't expiring by age, so return true, it's fresh\n return true;\n }\n\n // Check if the 'date' header will suffice a quick expiration check.\n // See https://github.com/GoogleChromeLabs/sw-toolbox/issues/164 for\n // discussion.\n const dateHeaderTimestamp = this._getDateHeaderTimestamp(cachedResponse);\n if (dateHeaderTimestamp === null) {\n // Unable to parse date, so assume it's fresh.\n return true;\n }\n\n // If we have a valid headerTime, then our response is fresh iff the\n // headerTime plus maxAgeSeconds is greater than the current time.\n const now = Date.now();\n return dateHeaderTimestamp >= now - (this._maxAgeSeconds * 1000);\n }\n\n /**\n * This method will extract the data header and parse it into a useful\n * value.\n *\n * @param {Response} cachedResponse\n * @return {number}\n *\n * @private\n */\n _getDateHeaderTimestamp(cachedResponse) {\n if (!cachedResponse.headers.has('date')) {\n return null;\n }\n\n const dateHeader = cachedResponse.headers.get('date');\n const parsedDate = new Date(dateHeader);\n const headerTime = parsedDate.getTime();\n\n // If the Date header was invalid for some reason, parsedDate.getTime()\n // will return NaN.\n if (isNaN(headerTime)) {\n return null;\n }\n\n return headerTime;\n }\n\n /**\n * A \"lifecycle\" callback that will be triggered automatically by the\n * `workbox.strategies` handlers when an entry is added to a cache.\n *\n * @param {Object} options\n * @param {string} options.cacheName Name of the cache that was updated.\n * @param {string} options.request The Request for the cached entry.\n *\n * @private\n */\n async cacheDidUpdate({cacheName, request}) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(cacheName, 'string', {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'cacheDidUpdate',\n paramName: 'cacheName',\n });\n assert.isInstance(request, Request, {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'cacheDidUpdate',\n paramName: 'request',\n });\n }\n\n const cacheExpiration = this._getCacheExpiration(cacheName);\n await cacheExpiration.updateTimestamp(request.url);\n await cacheExpiration.expireEntries();\n }\n\n\n /**\n * This is a helper method that performs two operations:\n *\n * - Deletes *all* the underlying Cache instances associated with this plugin\n * instance, by calling caches.delete() on your behalf.\n * - Deletes the metadata from IndexedDB used to keep track of expiration\n * details for each Cache instance.\n *\n * When using cache expiration, calling this method is preferable to calling\n * `caches.delete()` directly, since this will ensure that the IndexedDB\n * metadata is also cleanly removed and open IndexedDB instances are deleted.\n *\n * Note that if you're *not* using cache expiration for a given cache, calling\n * `caches.delete()` and passing in the cache's name should be sufficient.\n * There is no Workbox-specific method needed for cleanup in that case.\n */\n async deleteCacheAndMetadata() {\n // Do this one at a time instead of all at once via `Promise.all()` to\n // reduce the chance of inconsistency if a promise rejects.\n for (const [cacheName, cacheExpiration] of this._cacheExpirations) {\n await caches.delete(cacheName);\n await cacheExpiration.delete();\n }\n\n // Reset this._cacheExpirations to its initial state.\n this._cacheExpirations = new Map();\n }\n}\n\nexport {Plugin};\n"],"names":["self","_","e","DB_NAME","OBJECT_STORE_NAME","normalizeURL","unNormalizedUrl","url","URL","location","hash","href","CacheTimestampsModel","constructor","cacheName","_cacheName","_db","DBWrapper","onupgradeneeded","event","this","_handleUpgrade","objStore","target","result","createObjectStore","keyPath","createIndex","unique","deleteDatabase","timestamp","put","id","_getId","get","minTimestamp","maxCount","entriesToDelete","transaction","txn","done","store","objectStore","entriesNotDeletedCount","index","openCursor","onsuccess","cursor","value","push","continue","urlsDeleted","entry","delete","CacheExpiration","config","_isRunning","_rerunRequested","_maxEntries","maxEntries","_maxAgeSeconds","maxAgeSeconds","_timestampModel","Date","now","undefined","urlsExpired","expireEntries","cache","caches","open","setTimestamp","getTimestamp","Infinity","_config","_cacheExpirations","Map","purgeOnQuotaError","registerQuotaErrorCallback","deleteCacheAndMetadata","_getCacheExpiration","cacheNames","getRuntimeName","WorkboxError","cacheExpiration","set","cachedResponseWillBeUsed","request","cachedResponse","isFresh","_isResponseDateFresh","updateTimestampDone","updateTimestamp","waitUntil","error","dateHeaderTimestamp","_getDateHeaderTimestamp","headers","has","dateHeader","headerTime","getTime","isNaN"],"mappings":"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"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-navigation-preload.dev.js b/pr-preview/pr-1029/workbox-v4.3.1/workbox-navigation-preload.dev.js deleted file mode 100644 index 90832f364..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-navigation-preload.dev.js +++ /dev/null @@ -1,110 +0,0 @@ -this.workbox = this.workbox || {}; -this.workbox.navigationPreload = (function (exports, logger_mjs) { - 'use strict'; - - try { - self['workbox:navigation-preload:4.3.1'] && _(); - } catch (e) {} // eslint-disable-line - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * @return {boolean} Whether or not the current browser supports enabling - * navigation preload. - * - * @memberof workbox.navigationPreload - */ - - function isSupported() { - return Boolean(self.registration && self.registration.navigationPreload); - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * If the browser supports Navigation Preload, then this will disable it. - * - * @memberof workbox.navigationPreload - */ - - function disable() { - if (isSupported()) { - self.addEventListener('activate', event => { - event.waitUntil(self.registration.navigationPreload.disable().then(() => { - { - logger_mjs.logger.log(`Navigation preload is disabled.`); - } - })); - }); - } else { - { - logger_mjs.logger.log(`Navigation preload is not supported in this browser.`); - } - } - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * If the browser supports Navigation Preload, then this will enable it. - * - * @param {string} [headerValue] Optionally, allows developers to - * [override](https://developers.google.com/web/updates/2017/02/navigation-preload#changing_the_header) - * the value of the `Service-Worker-Navigation-Preload` header which will be - * sent to the server when making the navigation request. - * - * @memberof workbox.navigationPreload - */ - - function enable(headerValue) { - if (isSupported()) { - self.addEventListener('activate', event => { - event.waitUntil(self.registration.navigationPreload.enable().then(() => { - // Defaults to Service-Worker-Navigation-Preload: true if not set. - if (headerValue) { - self.registration.navigationPreload.setHeaderValue(headerValue); - } - - { - logger_mjs.logger.log(`Navigation preload is enabled.`); - } - })); - }); - } else { - { - logger_mjs.logger.log(`Navigation preload is not supported in this browser.`); - } - } - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - - exports.disable = disable; - exports.enable = enable; - exports.isSupported = isSupported; - - return exports; - -}({}, workbox.core._private)); -//# sourceMappingURL=workbox-navigation-preload.dev.js.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-navigation-preload.dev.js.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-navigation-preload.dev.js.map deleted file mode 100644 index 4fdadb22c..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-navigation-preload.dev.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-navigation-preload.dev.js","sources":["../_version.mjs","../isSupported.mjs","../disable.mjs","../enable.mjs","../index.mjs"],"sourcesContent":["try{self['workbox:navigation-preload:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport './_version.mjs';\n\n/**\n * @return {boolean} Whether or not the current browser supports enabling\n * navigation preload.\n *\n * @memberof workbox.navigationPreload\n */\nfunction isSupported() {\n return Boolean(self.registration && self.registration.navigationPreload);\n}\n\nexport {isSupported};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {logger} from 'workbox-core/_private/logger.mjs';\n\nimport {isSupported} from './isSupported.mjs';\n\nimport './_version.mjs';\n\n/**\n * If the browser supports Navigation Preload, then this will disable it.\n *\n * @memberof workbox.navigationPreload\n */\nfunction disable() {\n if (isSupported()) {\n self.addEventListener('activate', (event) => {\n event.waitUntil(\n self.registration.navigationPreload.disable().then(() => {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Navigation preload is disabled.`);\n }\n })\n );\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Navigation preload is not supported in this browser.`);\n }\n }\n}\n\nexport {disable};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {logger} from 'workbox-core/_private/logger.mjs';\n\nimport {isSupported} from './isSupported.mjs';\n\nimport './_version.mjs';\n\n/**\n * If the browser supports Navigation Preload, then this will enable it.\n *\n * @param {string} [headerValue] Optionally, allows developers to\n * [override](https://developers.google.com/web/updates/2017/02/navigation-preload#changing_the_header)\n * the value of the `Service-Worker-Navigation-Preload` header which will be\n * sent to the server when making the navigation request.\n *\n * @memberof workbox.navigationPreload\n */\nfunction enable(headerValue) {\n if (isSupported()) {\n self.addEventListener('activate', (event) => {\n event.waitUntil(\n self.registration.navigationPreload.enable().then(() => {\n // Defaults to Service-Worker-Navigation-Preload: true if not set.\n if (headerValue) {\n self.registration.navigationPreload.setHeaderValue(headerValue);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Navigation preload is enabled.`);\n }\n })\n );\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Navigation preload is not supported in this browser.`);\n }\n }\n}\n\nexport {enable};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {disable} from './disable.mjs';\nimport {enable} from './enable.mjs';\nimport {isSupported} from './isSupported.mjs';\nimport './_version.mjs';\n\n\n/**\n * @namespace workbox.navigationPreload\n */\n\nexport {\n disable,\n enable,\n isSupported,\n};\n"],"names":["self","_","e","isSupported","Boolean","registration","navigationPreload","disable","addEventListener","event","waitUntil","then","logger","log","enable","headerValue","setHeaderValue"],"mappings":";;;;EAAA,IAAG;EAACA,EAAAA,IAAI,CAAC,kCAAD,CAAJ,IAA0CC,CAAC,EAA3C;EAA8C,CAAlD,CAAkD,OAAMC,CAAN,EAAQ;;ECA1D;;;;;;;AAQA,EAEA;;;;;;;EAMA,SAASC,WAAT,GAAuB;EACrB,SAAOC,OAAO,CAACJ,IAAI,CAACK,YAAL,IAAqBL,IAAI,CAACK,YAAL,CAAkBC,iBAAxC,CAAd;EACD;;EClBD;;;;;;;AAQA,EAMA;;;;;;EAKA,SAASC,OAAT,GAAmB;EACjB,MAAIJ,WAAW,EAAf,EAAmB;EACjBH,IAAAA,IAAI,CAACQ,gBAAL,CAAsB,UAAtB,EAAmCC,KAAD,IAAW;EAC3CA,MAAAA,KAAK,CAACC,SAAN,CACIV,IAAI,CAACK,YAAL,CAAkBC,iBAAlB,CAAoCC,OAApC,GAA8CI,IAA9C,CAAmD,MAAM;EACvD,QAA2C;EACzCC,UAAAA,iBAAM,CAACC,GAAP,CAAY,iCAAZ;EACD;EACF,OAJD,CADJ;EAOD,KARD;EASD,GAVD,MAUO;EACL,IAA2C;EACzCD,MAAAA,iBAAM,CAACC,GAAP,CAAY,sDAAZ;EACD;EACF;EACF;;ECnCD;;;;;;;AAQA,EAMA;;;;;;;;;;;EAUA,SAASC,MAAT,CAAgBC,WAAhB,EAA6B;EAC3B,MAAIZ,WAAW,EAAf,EAAmB;EACjBH,IAAAA,IAAI,CAACQ,gBAAL,CAAsB,UAAtB,EAAmCC,KAAD,IAAW;EAC3CA,MAAAA,KAAK,CAACC,SAAN,CACIV,IAAI,CAACK,YAAL,CAAkBC,iBAAlB,CAAoCQ,MAApC,GAA6CH,IAA7C,CAAkD,MAAM;EACxD;EACE,YAAII,WAAJ,EAAiB;EACff,UAAAA,IAAI,CAACK,YAAL,CAAkBC,iBAAlB,CAAoCU,cAApC,CAAmDD,WAAnD;EACD;;EAED,QAA2C;EACzCH,UAAAA,iBAAM,CAACC,GAAP,CAAY,gCAAZ;EACD;EACF,OATD,CADJ;EAYD,KAbD;EAcD,GAfD,MAeO;EACL,IAA2C;EACzCD,MAAAA,iBAAM,CAACC,GAAP,CAAY,sDAAZ;EACD;EACF;EACF;;EC7CD;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-navigation-preload.prod.js b/pr-preview/pr-1029/workbox-v4.3.1/workbox-navigation-preload.prod.js deleted file mode 100644 index f03d65728..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-navigation-preload.prod.js +++ /dev/null @@ -1,2 +0,0 @@ -this.workbox=this.workbox||{},this.workbox.navigationPreload=function(t){"use strict";try{self["workbox:navigation-preload:4.3.1"]&&_()}catch(t){}function e(){return Boolean(self.registration&&self.registration.navigationPreload)}return t.disable=function(){e()&&self.addEventListener("activate",t=>{t.waitUntil(self.registration.navigationPreload.disable().then(()=>{}))})},t.enable=function(t){e()&&self.addEventListener("activate",e=>{e.waitUntil(self.registration.navigationPreload.enable().then(()=>{t&&self.registration.navigationPreload.setHeaderValue(t)}))})},t.isSupported=e,t}({}); -//# sourceMappingURL=workbox-navigation-preload.prod.js.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-navigation-preload.prod.js.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-navigation-preload.prod.js.map deleted file mode 100644 index 4de73935e..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-navigation-preload.prod.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-navigation-preload.prod.js","sources":["../_version.mjs","../isSupported.mjs","../disable.mjs","../enable.mjs"],"sourcesContent":["try{self['workbox:navigation-preload:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport './_version.mjs';\n\n/**\n * @return {boolean} Whether or not the current browser supports enabling\n * navigation preload.\n *\n * @memberof workbox.navigationPreload\n */\nfunction isSupported() {\n return Boolean(self.registration && self.registration.navigationPreload);\n}\n\nexport {isSupported};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {logger} from 'workbox-core/_private/logger.mjs';\n\nimport {isSupported} from './isSupported.mjs';\n\nimport './_version.mjs';\n\n/**\n * If the browser supports Navigation Preload, then this will disable it.\n *\n * @memberof workbox.navigationPreload\n */\nfunction disable() {\n if (isSupported()) {\n self.addEventListener('activate', (event) => {\n event.waitUntil(\n self.registration.navigationPreload.disable().then(() => {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Navigation preload is disabled.`);\n }\n })\n );\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Navigation preload is not supported in this browser.`);\n }\n }\n}\n\nexport {disable};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {logger} from 'workbox-core/_private/logger.mjs';\n\nimport {isSupported} from './isSupported.mjs';\n\nimport './_version.mjs';\n\n/**\n * If the browser supports Navigation Preload, then this will enable it.\n *\n * @param {string} [headerValue] Optionally, allows developers to\n * [override](https://developers.google.com/web/updates/2017/02/navigation-preload#changing_the_header)\n * the value of the `Service-Worker-Navigation-Preload` header which will be\n * sent to the server when making the navigation request.\n *\n * @memberof workbox.navigationPreload\n */\nfunction enable(headerValue) {\n if (isSupported()) {\n self.addEventListener('activate', (event) => {\n event.waitUntil(\n self.registration.navigationPreload.enable().then(() => {\n // Defaults to Service-Worker-Navigation-Preload: true if not set.\n if (headerValue) {\n self.registration.navigationPreload.setHeaderValue(headerValue);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Navigation preload is enabled.`);\n }\n })\n );\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Navigation preload is not supported in this browser.`);\n }\n }\n}\n\nexport {enable};\n"],"names":["self","_","e","isSupported","Boolean","registration","navigationPreload","addEventListener","event","waitUntil","disable","then","headerValue","enable","setHeaderValue"],"mappings":"sFAAA,IAAIA,KAAK,qCAAqCC,IAAI,MAAMC,ICgBxD,SAASC,WACAC,QAAQJ,KAAKK,cAAgBL,KAAKK,aAAaC,oCCExD,WACMH,KACFH,KAAKO,iBAAiB,WAAaC,IACjCA,EAAMC,UACFT,KAAKK,aAAaC,kBAAkBI,UAAUC,KAAK,qBCC7D,SAAgBC,GACVT,KACFH,KAAKO,iBAAiB,WAAaC,IACjCA,EAAMC,UACFT,KAAKK,aAAaC,kBAAkBO,SAASF,KAAK,KAE5CC,GACFZ,KAAKK,aAAaC,kBAAkBQ,eAAeF"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-offline-ga.dev.js b/pr-preview/pr-1029/workbox-v4.3.1/workbox-offline-ga.dev.js deleted file mode 100644 index 8d72aa6a0..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-offline-ga.dev.js +++ /dev/null @@ -1,243 +0,0 @@ -this.workbox = this.workbox || {}; -this.workbox.googleAnalytics = (function (exports, Plugin_mjs, cacheNames_mjs, getFriendlyURL_mjs, logger_mjs, Route_mjs, Router_mjs, NetworkFirst_mjs, NetworkOnly_mjs) { - 'use strict'; - - try { - self['workbox:google-analytics:4.3.1'] && _(); - } catch (e) {} // eslint-disable-line - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - const QUEUE_NAME = 'workbox-google-analytics'; - const MAX_RETENTION_TIME = 60 * 48; // Two days in minutes - - const GOOGLE_ANALYTICS_HOST = 'www.google-analytics.com'; - const GTM_HOST = 'www.googletagmanager.com'; - const ANALYTICS_JS_PATH = '/analytics.js'; - const GTAG_JS_PATH = '/gtag/js'; - const GTM_JS_PATH = '/gtm.js'; - // endpoints. Most of the time the default path (/collect) is used, but - // occasionally an experimental endpoint is used when testing new features, - // (e.g. /r/collect or /j/collect) - - const COLLECT_PATHS_REGEX = /^\/(\w+\/)?collect/; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Creates the requestWillDequeue callback to be used with the background - * sync queue plugin. The callback takes the failed request and adds the - * `qt` param based on the current time, as well as applies any other - * user-defined hit modifications. - * - * @param {Object} config See workbox.googleAnalytics.initialize. - * @return {Function} The requestWillDequeu callback function. - * - * @private - */ - - const createOnSyncCallback = config => { - return async ({ - queue - }) => { - let entry; - - while (entry = await queue.shiftRequest()) { - const { - request, - timestamp - } = entry; - const url = new URL(request.url); - - try { - // Measurement protocol requests can set their payload parameters in - // either the URL query string (for GET requests) or the POST body. - const params = request.method === 'POST' ? new URLSearchParams((await request.clone().text())) : url.searchParams; // Calculate the qt param, accounting for the fact that an existing - // qt param may be present and should be updated rather than replaced. - - const originalHitTime = timestamp - (Number(params.get('qt')) || 0); - const queueTime = Date.now() - originalHitTime; // Set the qt param prior to applying hitFilter or parameterOverrides. - - params.set('qt', queueTime); // Apply `paramterOverrideds`, if set. - - if (config.parameterOverrides) { - for (const param of Object.keys(config.parameterOverrides)) { - const value = config.parameterOverrides[param]; - params.set(param, value); - } - } // Apply `hitFilter`, if set. - - - if (typeof config.hitFilter === 'function') { - config.hitFilter.call(null, params); - } // Retry the fetch. Ignore URL search params from the URL as they're - // now in the post body. - - - await fetch(new Request(url.origin + url.pathname, { - body: params.toString(), - method: 'POST', - mode: 'cors', - credentials: 'omit', - headers: { - 'Content-Type': 'text/plain' - } - })); - - { - logger_mjs.logger.log(`Request for '${getFriendlyURL_mjs.getFriendlyURL(url.href)}'` + `has been replayed`); - } - } catch (err) { - await queue.unshiftRequest(entry); - - { - logger_mjs.logger.log(`Request for '${getFriendlyURL_mjs.getFriendlyURL(url.href)}'` + `failed to replay, putting it back in the queue.`); - } - - throw err; - } - } - - { - logger_mjs.logger.log(`All Google Analytics request successfully replayed; ` + `the queue is now empty!`); - } - }; - }; - /** - * Creates GET and POST routes to catch failed Measurement Protocol hits. - * - * @param {Plugin} queuePlugin - * @return {Array} The created routes. - * - * @private - */ - - - const createCollectRoutes = queuePlugin => { - const match = ({ - url - }) => url.hostname === GOOGLE_ANALYTICS_HOST && COLLECT_PATHS_REGEX.test(url.pathname); - - const handler = new NetworkOnly_mjs.NetworkOnly({ - plugins: [queuePlugin] - }); - return [new Route_mjs.Route(match, handler, 'GET'), new Route_mjs.Route(match, handler, 'POST')]; - }; - /** - * Creates a route with a network first strategy for the analytics.js script. - * - * @param {string} cacheName - * @return {Route} The created route. - * - * @private - */ - - - const createAnalyticsJsRoute = cacheName => { - const match = ({ - url - }) => url.hostname === GOOGLE_ANALYTICS_HOST && url.pathname === ANALYTICS_JS_PATH; - - const handler = new NetworkFirst_mjs.NetworkFirst({ - cacheName - }); - return new Route_mjs.Route(match, handler, 'GET'); - }; - /** - * Creates a route with a network first strategy for the gtag.js script. - * - * @param {string} cacheName - * @return {Route} The created route. - * - * @private - */ - - - const createGtagJsRoute = cacheName => { - const match = ({ - url - }) => url.hostname === GTM_HOST && url.pathname === GTAG_JS_PATH; - - const handler = new NetworkFirst_mjs.NetworkFirst({ - cacheName - }); - return new Route_mjs.Route(match, handler, 'GET'); - }; - /** - * Creates a route with a network first strategy for the gtm.js script. - * - * @param {string} cacheName - * @return {Route} The created route. - * - * @private - */ - - - const createGtmJsRoute = cacheName => { - const match = ({ - url - }) => url.hostname === GTM_HOST && url.pathname === GTM_JS_PATH; - - const handler = new NetworkFirst_mjs.NetworkFirst({ - cacheName - }); - return new Route_mjs.Route(match, handler, 'GET'); - }; - /** - * @param {Object=} [options] - * @param {Object} [options.cacheName] The cache name to store and retrieve - * analytics.js. Defaults to the cache names provided by `workbox-core`. - * @param {Object} [options.parameterOverrides] - * [Measurement Protocol parameters](https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters), - * expressed as key/value pairs, to be added to replayed Google Analytics - * requests. This can be used to, e.g., set a custom dimension indicating - * that the request was replayed. - * @param {Function} [options.hitFilter] A function that allows you to modify - * the hit parameters prior to replaying - * the hit. The function is invoked with the original hit's URLSearchParams - * object as its only argument. - * - * @memberof workbox.googleAnalytics - */ - - - const initialize = (options = {}) => { - const cacheName = cacheNames_mjs.cacheNames.getGoogleAnalyticsName(options.cacheName); - const queuePlugin = new Plugin_mjs.Plugin(QUEUE_NAME, { - maxRetentionTime: MAX_RETENTION_TIME, - onSync: createOnSyncCallback(options) - }); - const routes = [createGtmJsRoute(cacheName), createAnalyticsJsRoute(cacheName), createGtagJsRoute(cacheName), ...createCollectRoutes(queuePlugin)]; - const router = new Router_mjs.Router(); - - for (const route of routes) { - router.registerRoute(route); - } - - router.addFetchListener(); - }; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - - exports.initialize = initialize; - - return exports; - -}({}, workbox.backgroundSync, workbox.core._private, workbox.core._private, workbox.core._private, workbox.routing, workbox.routing, workbox.strategies, workbox.strategies)); -//# sourceMappingURL=workbox-offline-ga.dev.js.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-offline-ga.dev.js.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-offline-ga.dev.js.map deleted file mode 100644 index f74ac92fc..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-offline-ga.dev.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-offline-ga.dev.js","sources":["../_version.mjs","../utils/constants.mjs","../initialize.mjs","../index.mjs"],"sourcesContent":["try{self['workbox:google-analytics:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\nexport const QUEUE_NAME = 'workbox-google-analytics';\nexport const MAX_RETENTION_TIME = 60 * 48; // Two days in minutes\nexport const GOOGLE_ANALYTICS_HOST = 'www.google-analytics.com';\nexport const GTM_HOST = 'www.googletagmanager.com';\nexport const ANALYTICS_JS_PATH = '/analytics.js';\nexport const GTAG_JS_PATH = '/gtag/js';\nexport const GTM_JS_PATH = '/gtm.js';\nexport const COLLECT_DEFAULT_PATH = '/collect';\n\n// This RegExp matches all known Measurement Protocol single-hit collect\n// endpoints. Most of the time the default path (/collect) is used, but\n// occasionally an experimental endpoint is used when testing new features,\n// (e.g. /r/collect or /j/collect)\nexport const COLLECT_PATHS_REGEX = /^\\/(\\w+\\/)?collect/;\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {Plugin} from 'workbox-background-sync/Plugin.mjs';\nimport {cacheNames} from 'workbox-core/_private/cacheNames.mjs';\nimport {getFriendlyURL} from 'workbox-core/_private/getFriendlyURL.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {Route} from 'workbox-routing/Route.mjs';\nimport {Router} from 'workbox-routing/Router.mjs';\nimport {NetworkFirst} from 'workbox-strategies/NetworkFirst.mjs';\nimport {NetworkOnly} from 'workbox-strategies/NetworkOnly.mjs';\nimport {\n QUEUE_NAME,\n MAX_RETENTION_TIME,\n GOOGLE_ANALYTICS_HOST,\n GTM_HOST,\n ANALYTICS_JS_PATH,\n GTAG_JS_PATH,\n GTM_JS_PATH,\n COLLECT_PATHS_REGEX,\n} from './utils/constants.mjs';\nimport './_version.mjs';\n\n/**\n * Creates the requestWillDequeue callback to be used with the background\n * sync queue plugin. The callback takes the failed request and adds the\n * `qt` param based on the current time, as well as applies any other\n * user-defined hit modifications.\n *\n * @param {Object} config See workbox.googleAnalytics.initialize.\n * @return {Function} The requestWillDequeu callback function.\n *\n * @private\n */\nconst createOnSyncCallback = (config) => {\n return async ({queue}) => {\n let entry;\n while (entry = await queue.shiftRequest()) {\n const {request, timestamp} = entry;\n const url = new URL(request.url);\n\n try {\n // Measurement protocol requests can set their payload parameters in\n // either the URL query string (for GET requests) or the POST body.\n const params = request.method === 'POST' ?\n new URLSearchParams(await request.clone().text()) :\n url.searchParams;\n\n // Calculate the qt param, accounting for the fact that an existing\n // qt param may be present and should be updated rather than replaced.\n const originalHitTime = timestamp - (Number(params.get('qt')) || 0);\n const queueTime = Date.now() - originalHitTime;\n\n // Set the qt param prior to applying hitFilter or parameterOverrides.\n params.set('qt', queueTime);\n\n // Apply `paramterOverrideds`, if set.\n if (config.parameterOverrides) {\n for (const param of Object.keys(config.parameterOverrides)) {\n const value = config.parameterOverrides[param];\n params.set(param, value);\n }\n }\n\n // Apply `hitFilter`, if set.\n if (typeof config.hitFilter === 'function') {\n config.hitFilter.call(null, params);\n }\n\n // Retry the fetch. Ignore URL search params from the URL as they're\n // now in the post body.\n await fetch(new Request(url.origin + url.pathname, {\n body: params.toString(),\n method: 'POST',\n mode: 'cors',\n credentials: 'omit',\n headers: {'Content-Type': 'text/plain'},\n }));\n\n\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Request for '${getFriendlyURL(url.href)}'` +\n `has been replayed`);\n }\n } catch (err) {\n await queue.unshiftRequest(entry);\n\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Request for '${getFriendlyURL(url.href)}'` +\n `failed to replay, putting it back in the queue.`);\n }\n throw err;\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`All Google Analytics request successfully replayed; ` +\n `the queue is now empty!`);\n }\n };\n};\n\n/**\n * Creates GET and POST routes to catch failed Measurement Protocol hits.\n *\n * @param {Plugin} queuePlugin\n * @return {Array} The created routes.\n *\n * @private\n */\nconst createCollectRoutes = (queuePlugin) => {\n const match = ({url}) => url.hostname === GOOGLE_ANALYTICS_HOST &&\n COLLECT_PATHS_REGEX.test(url.pathname);\n\n const handler = new NetworkOnly({\n plugins: [queuePlugin],\n });\n\n return [\n new Route(match, handler, 'GET'),\n new Route(match, handler, 'POST'),\n ];\n};\n\n/**\n * Creates a route with a network first strategy for the analytics.js script.\n *\n * @param {string} cacheName\n * @return {Route} The created route.\n *\n * @private\n */\nconst createAnalyticsJsRoute = (cacheName) => {\n const match = ({url}) => url.hostname === GOOGLE_ANALYTICS_HOST &&\n url.pathname === ANALYTICS_JS_PATH;\n const handler = new NetworkFirst({cacheName});\n\n return new Route(match, handler, 'GET');\n};\n\n/**\n * Creates a route with a network first strategy for the gtag.js script.\n *\n * @param {string} cacheName\n * @return {Route} The created route.\n *\n * @private\n */\nconst createGtagJsRoute = (cacheName) => {\n const match = ({url}) => url.hostname === GTM_HOST &&\n url.pathname === GTAG_JS_PATH;\n const handler = new NetworkFirst({cacheName});\n\n return new Route(match, handler, 'GET');\n};\n\n/**\n * Creates a route with a network first strategy for the gtm.js script.\n *\n * @param {string} cacheName\n * @return {Route} The created route.\n *\n * @private\n */\nconst createGtmJsRoute = (cacheName) => {\n const match = ({url}) => url.hostname === GTM_HOST &&\n url.pathname === GTM_JS_PATH;\n const handler = new NetworkFirst({cacheName});\n\n return new Route(match, handler, 'GET');\n};\n\n/**\n * @param {Object=} [options]\n * @param {Object} [options.cacheName] The cache name to store and retrieve\n * analytics.js. Defaults to the cache names provided by `workbox-core`.\n * @param {Object} [options.parameterOverrides]\n * [Measurement Protocol parameters](https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters),\n * expressed as key/value pairs, to be added to replayed Google Analytics\n * requests. This can be used to, e.g., set a custom dimension indicating\n * that the request was replayed.\n * @param {Function} [options.hitFilter] A function that allows you to modify\n * the hit parameters prior to replaying\n * the hit. The function is invoked with the original hit's URLSearchParams\n * object as its only argument.\n *\n * @memberof workbox.googleAnalytics\n */\nconst initialize = (options = {}) => {\n const cacheName = cacheNames.getGoogleAnalyticsName(options.cacheName);\n\n const queuePlugin = new Plugin(QUEUE_NAME, {\n maxRetentionTime: MAX_RETENTION_TIME,\n onSync: createOnSyncCallback(options),\n });\n\n const routes = [\n createGtmJsRoute(cacheName),\n createAnalyticsJsRoute(cacheName),\n createGtagJsRoute(cacheName),\n ...createCollectRoutes(queuePlugin),\n ];\n\n const router = new Router();\n for (const route of routes) {\n router.registerRoute(route);\n }\n\n router.addFetchListener();\n};\n\nexport {\n initialize,\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {initialize} from './initialize.mjs';\nimport './_version.mjs';\n\n\n/**\n * @namespace workbox.googleAnalytics\n */\n\nexport {\n initialize,\n};\n"],"names":["self","_","e","QUEUE_NAME","MAX_RETENTION_TIME","GOOGLE_ANALYTICS_HOST","GTM_HOST","ANALYTICS_JS_PATH","GTAG_JS_PATH","GTM_JS_PATH","COLLECT_PATHS_REGEX","createOnSyncCallback","config","queue","entry","shiftRequest","request","timestamp","url","URL","params","method","URLSearchParams","clone","text","searchParams","originalHitTime","Number","get","queueTime","Date","now","set","parameterOverrides","param","Object","keys","value","hitFilter","call","fetch","Request","origin","pathname","body","toString","mode","credentials","headers","logger","log","getFriendlyURL","href","err","unshiftRequest","createCollectRoutes","queuePlugin","match","hostname","test","handler","NetworkOnly","plugins","Route","createAnalyticsJsRoute","cacheName","NetworkFirst","createGtagJsRoute","createGtmJsRoute","initialize","options","cacheNames","getGoogleAnalyticsName","Plugin","maxRetentionTime","onSync","routes","router","Router","route","registerRoute","addFetchListener"],"mappings":"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"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-offline-ga.prod.js b/pr-preview/pr-1029/workbox-v4.3.1/workbox-offline-ga.prod.js deleted file mode 100644 index ca29dc743..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-offline-ga.prod.js +++ /dev/null @@ -1,2 +0,0 @@ -this.workbox=this.workbox||{},this.workbox.googleAnalytics=function(e,t,o,n,a,c,w){"use strict";try{self["workbox:google-analytics:4.3.1"]&&_()}catch(e){}const r=/^\/(\w+\/)?collect/,s=e=>async({queue:t})=>{let o;for(;o=await t.shiftRequest();){const{request:n,timestamp:a}=o,c=new URL(n.url);try{const w="POST"===n.method?new URLSearchParams(await n.clone().text()):c.searchParams,r=a-(Number(w.get("qt"))||0),s=Date.now()-r;if(w.set("qt",s),e.parameterOverrides)for(const t of Object.keys(e.parameterOverrides)){const o=e.parameterOverrides[t];w.set(t,o)}"function"==typeof e.hitFilter&&e.hitFilter.call(null,w),await fetch(new Request(c.origin+c.pathname,{body:w.toString(),method:"POST",mode:"cors",credentials:"omit",headers:{"Content-Type":"text/plain"}}))}catch(e){throw await t.unshiftRequest(o),e}}},i=e=>{const t=({url:e})=>"www.google-analytics.com"===e.hostname&&r.test(e.pathname),o=new w.NetworkOnly({plugins:[e]});return[new n.Route(t,o,"GET"),new n.Route(t,o,"POST")]},l=e=>{const t=new c.NetworkFirst({cacheName:e});return new n.Route(({url:e})=>"www.google-analytics.com"===e.hostname&&"/analytics.js"===e.pathname,t,"GET")},m=e=>{const t=new c.NetworkFirst({cacheName:e});return new n.Route(({url:e})=>"www.googletagmanager.com"===e.hostname&&"/gtag/js"===e.pathname,t,"GET")},u=e=>{const t=new c.NetworkFirst({cacheName:e});return new n.Route(({url:e})=>"www.googletagmanager.com"===e.hostname&&"/gtm.js"===e.pathname,t,"GET")};return e.initialize=((e={})=>{const n=o.cacheNames.getGoogleAnalyticsName(e.cacheName),c=new t.Plugin("workbox-google-analytics",{maxRetentionTime:2880,onSync:s(e)}),w=[u(n),l(n),m(n),...i(c)],r=new a.Router;for(const e of w)r.registerRoute(e);r.addFetchListener()}),e}({},workbox.backgroundSync,workbox.core._private,workbox.routing,workbox.routing,workbox.strategies,workbox.strategies); -//# sourceMappingURL=workbox-offline-ga.prod.js.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-offline-ga.prod.js.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-offline-ga.prod.js.map deleted file mode 100644 index 68d2fb8bd..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-offline-ga.prod.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-offline-ga.prod.js","sources":["../_version.mjs","../utils/constants.mjs","../initialize.mjs"],"sourcesContent":["try{self['workbox:google-analytics:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\nexport const QUEUE_NAME = 'workbox-google-analytics';\nexport const MAX_RETENTION_TIME = 60 * 48; // Two days in minutes\nexport const GOOGLE_ANALYTICS_HOST = 'www.google-analytics.com';\nexport const GTM_HOST = 'www.googletagmanager.com';\nexport const ANALYTICS_JS_PATH = '/analytics.js';\nexport const GTAG_JS_PATH = '/gtag/js';\nexport const GTM_JS_PATH = '/gtm.js';\nexport const COLLECT_DEFAULT_PATH = '/collect';\n\n// This RegExp matches all known Measurement Protocol single-hit collect\n// endpoints. Most of the time the default path (/collect) is used, but\n// occasionally an experimental endpoint is used when testing new features,\n// (e.g. /r/collect or /j/collect)\nexport const COLLECT_PATHS_REGEX = /^\\/(\\w+\\/)?collect/;\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {Plugin} from 'workbox-background-sync/Plugin.mjs';\nimport {cacheNames} from 'workbox-core/_private/cacheNames.mjs';\nimport {getFriendlyURL} from 'workbox-core/_private/getFriendlyURL.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {Route} from 'workbox-routing/Route.mjs';\nimport {Router} from 'workbox-routing/Router.mjs';\nimport {NetworkFirst} from 'workbox-strategies/NetworkFirst.mjs';\nimport {NetworkOnly} from 'workbox-strategies/NetworkOnly.mjs';\nimport {\n QUEUE_NAME,\n MAX_RETENTION_TIME,\n GOOGLE_ANALYTICS_HOST,\n GTM_HOST,\n ANALYTICS_JS_PATH,\n GTAG_JS_PATH,\n GTM_JS_PATH,\n COLLECT_PATHS_REGEX,\n} from './utils/constants.mjs';\nimport './_version.mjs';\n\n/**\n * Creates the requestWillDequeue callback to be used with the background\n * sync queue plugin. The callback takes the failed request and adds the\n * `qt` param based on the current time, as well as applies any other\n * user-defined hit modifications.\n *\n * @param {Object} config See workbox.googleAnalytics.initialize.\n * @return {Function} The requestWillDequeu callback function.\n *\n * @private\n */\nconst createOnSyncCallback = (config) => {\n return async ({queue}) => {\n let entry;\n while (entry = await queue.shiftRequest()) {\n const {request, timestamp} = entry;\n const url = new URL(request.url);\n\n try {\n // Measurement protocol requests can set their payload parameters in\n // either the URL query string (for GET requests) or the POST body.\n const params = request.method === 'POST' ?\n new URLSearchParams(await request.clone().text()) :\n url.searchParams;\n\n // Calculate the qt param, accounting for the fact that an existing\n // qt param may be present and should be updated rather than replaced.\n const originalHitTime = timestamp - (Number(params.get('qt')) || 0);\n const queueTime = Date.now() - originalHitTime;\n\n // Set the qt param prior to applying hitFilter or parameterOverrides.\n params.set('qt', queueTime);\n\n // Apply `paramterOverrideds`, if set.\n if (config.parameterOverrides) {\n for (const param of Object.keys(config.parameterOverrides)) {\n const value = config.parameterOverrides[param];\n params.set(param, value);\n }\n }\n\n // Apply `hitFilter`, if set.\n if (typeof config.hitFilter === 'function') {\n config.hitFilter.call(null, params);\n }\n\n // Retry the fetch. Ignore URL search params from the URL as they're\n // now in the post body.\n await fetch(new Request(url.origin + url.pathname, {\n body: params.toString(),\n method: 'POST',\n mode: 'cors',\n credentials: 'omit',\n headers: {'Content-Type': 'text/plain'},\n }));\n\n\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Request for '${getFriendlyURL(url.href)}'` +\n `has been replayed`);\n }\n } catch (err) {\n await queue.unshiftRequest(entry);\n\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Request for '${getFriendlyURL(url.href)}'` +\n `failed to replay, putting it back in the queue.`);\n }\n throw err;\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`All Google Analytics request successfully replayed; ` +\n `the queue is now empty!`);\n }\n };\n};\n\n/**\n * Creates GET and POST routes to catch failed Measurement Protocol hits.\n *\n * @param {Plugin} queuePlugin\n * @return {Array} The created routes.\n *\n * @private\n */\nconst createCollectRoutes = (queuePlugin) => {\n const match = ({url}) => url.hostname === GOOGLE_ANALYTICS_HOST &&\n COLLECT_PATHS_REGEX.test(url.pathname);\n\n const handler = new NetworkOnly({\n plugins: [queuePlugin],\n });\n\n return [\n new Route(match, handler, 'GET'),\n new Route(match, handler, 'POST'),\n ];\n};\n\n/**\n * Creates a route with a network first strategy for the analytics.js script.\n *\n * @param {string} cacheName\n * @return {Route} The created route.\n *\n * @private\n */\nconst createAnalyticsJsRoute = (cacheName) => {\n const match = ({url}) => url.hostname === GOOGLE_ANALYTICS_HOST &&\n url.pathname === ANALYTICS_JS_PATH;\n const handler = new NetworkFirst({cacheName});\n\n return new Route(match, handler, 'GET');\n};\n\n/**\n * Creates a route with a network first strategy for the gtag.js script.\n *\n * @param {string} cacheName\n * @return {Route} The created route.\n *\n * @private\n */\nconst createGtagJsRoute = (cacheName) => {\n const match = ({url}) => url.hostname === GTM_HOST &&\n url.pathname === GTAG_JS_PATH;\n const handler = new NetworkFirst({cacheName});\n\n return new Route(match, handler, 'GET');\n};\n\n/**\n * Creates a route with a network first strategy for the gtm.js script.\n *\n * @param {string} cacheName\n * @return {Route} The created route.\n *\n * @private\n */\nconst createGtmJsRoute = (cacheName) => {\n const match = ({url}) => url.hostname === GTM_HOST &&\n url.pathname === GTM_JS_PATH;\n const handler = new NetworkFirst({cacheName});\n\n return new Route(match, handler, 'GET');\n};\n\n/**\n * @param {Object=} [options]\n * @param {Object} [options.cacheName] The cache name to store and retrieve\n * analytics.js. Defaults to the cache names provided by `workbox-core`.\n * @param {Object} [options.parameterOverrides]\n * [Measurement Protocol parameters](https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters),\n * expressed as key/value pairs, to be added to replayed Google Analytics\n * requests. This can be used to, e.g., set a custom dimension indicating\n * that the request was replayed.\n * @param {Function} [options.hitFilter] A function that allows you to modify\n * the hit parameters prior to replaying\n * the hit. The function is invoked with the original hit's URLSearchParams\n * object as its only argument.\n *\n * @memberof workbox.googleAnalytics\n */\nconst initialize = (options = {}) => {\n const cacheName = cacheNames.getGoogleAnalyticsName(options.cacheName);\n\n const queuePlugin = new Plugin(QUEUE_NAME, {\n maxRetentionTime: MAX_RETENTION_TIME,\n onSync: createOnSyncCallback(options),\n });\n\n const routes = [\n createGtmJsRoute(cacheName),\n createAnalyticsJsRoute(cacheName),\n createGtagJsRoute(cacheName),\n ...createCollectRoutes(queuePlugin),\n ];\n\n const router = new Router();\n for (const route of routes) {\n router.registerRoute(route);\n }\n\n router.addFetchListener();\n};\n\nexport {\n initialize,\n};\n"],"names":["self","_","e","COLLECT_PATHS_REGEX","createOnSyncCallback","config","async","queue","entry","shiftRequest","request","timestamp","url","URL","params","method","URLSearchParams","clone","text","searchParams","originalHitTime","Number","get","queueTime","Date","now","set","parameterOverrides","param","Object","keys","value","hitFilter","call","fetch","Request","origin","pathname","body","toString","mode","credentials","headers","err","unshiftRequest","createCollectRoutes","queuePlugin","match","hostname","test","handler","NetworkOnly","plugins","Route","createAnalyticsJsRoute","cacheName","NetworkFirst","createGtagJsRoute","createGtmJsRoute","options","cacheNames","getGoogleAnalyticsName","Plugin","maxRetentionTime","onSync","routes","router","Router","route","registerRoute","addFetchListener"],"mappings":"gGAAA,IAAIA,KAAK,mCAAmCC,IAAI,MAAMC,ICU/C,MAaMC,EAAsB,qBCgB7BC,EAAwBC,GACrBC,OAAQC,MAAAA,UACTC,OACGA,QAAcD,EAAME,gBAAgB,OACnCC,QAACA,EAADC,UAAUA,GAAaH,EACvBI,EAAM,IAAIC,IAAIH,EAAQE,eAKpBE,EAA4B,SAAnBJ,EAAQK,OACnB,IAAIC,sBAAsBN,EAAQO,QAAQC,QAC1CN,EAAIO,aAIFC,EAAkBT,GAAaU,OAAOP,EAAOQ,IAAI,QAAU,GAC3DC,EAAYC,KAAKC,MAAQL,KAG/BN,EAAOY,IAAI,KAAMH,GAGblB,EAAOsB,uBACJ,MAAMC,KAASC,OAAOC,KAAKzB,EAAOsB,oBAAqB,OACpDI,EAAQ1B,EAAOsB,mBAAmBC,GACxCd,EAAOY,IAAIE,EAAOG,GAKU,mBAArB1B,EAAO2B,WAChB3B,EAAO2B,UAAUC,KAAK,KAAMnB,SAKxBoB,MAAM,IAAIC,QAAQvB,EAAIwB,OAASxB,EAAIyB,SAAU,CACjDC,KAAMxB,EAAOyB,WACbxB,OAAQ,OACRyB,KAAM,OACNC,YAAa,OACbC,QAAS,gBAAiB,iBAQ5B,MAAOC,eACDpC,EAAMqC,eAAepC,GAMrBmC,KAkBRE,EAAuBC,UACrBC,EAAQ,EAAEnC,IAAAA,KDvGmB,6BCuGVA,EAAIoC,UACzB7C,EAAoB8C,KAAKrC,EAAIyB,UAE3Ba,EAAU,IAAIC,cAAY,CAC9BC,QAAS,CAACN,WAGL,CACL,IAAIO,QAAMN,EAAOG,EAAS,OAC1B,IAAIG,QAAMN,EAAOG,EAAS,UAYxBI,EAA0BC,UAGxBL,EAAU,IAAIM,eAAa,CAACD,UAAAA,WAE3B,IAAIF,QAJG,EAAEzC,IAAAA,KD7HmB,6BC6HVA,EAAIoC,UD3HE,kBC4H3BpC,EAAIyB,SAGgBa,EAAS,QAW7BO,EAAqBF,UAGnBL,EAAU,IAAIM,eAAa,CAACD,UAAAA,WAE3B,IAAIF,QAJG,EAAEzC,IAAAA,KD5IM,6BC4IGA,EAAIoC,UD1IH,aC2ItBpC,EAAIyB,SAGgBa,EAAS,QAW7BQ,EAAoBH,UAGlBL,EAAU,IAAIM,eAAa,CAACD,UAAAA,WAE3B,IAAIF,QAJG,EAAEzC,IAAAA,KD5JM,6BC4JGA,EAAIoC,UDzJJ,YC0JrBpC,EAAIyB,SAGgBa,EAAS,4BAmBhB,EAACS,EAAU,YACtBJ,EAAYK,aAAWC,uBAAuBF,EAAQJ,WAEtDT,EAAc,IAAIgB,SDzLA,2BCyLmB,CACzCC,iBDzL8B,KC0L9BC,OAAQ5D,EAAqBuD,KAGzBM,EAAS,CACbP,EAAiBH,GACjBD,EAAuBC,GACvBE,EAAkBF,MACfV,EAAoBC,IAGnBoB,EAAS,IAAIC,aACd,MAAMC,KAASH,EAClBC,EAAOG,cAAcD,GAGvBF,EAAOI"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-precaching.dev.js b/pr-preview/pr-1029/workbox-v4.3.1/workbox-precaching.dev.js deleted file mode 100644 index fb69211ec..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-precaching.dev.js +++ /dev/null @@ -1,989 +0,0 @@ -this.workbox = this.workbox || {}; -this.workbox.precaching = (function (exports, assert_mjs, cacheNames_mjs, getFriendlyURL_mjs, logger_mjs, cacheWrapper_mjs, fetchWrapper_mjs, WorkboxError_mjs) { - 'use strict'; - - try { - self['workbox:precaching:4.3.1'] && _(); - } catch (e) {} // eslint-disable-line - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - const plugins = []; - const precachePlugins = { - /* - * @return {Array} - * @private - */ - get() { - return plugins; - }, - - /* - * @param {Array} newPlugins - * @private - */ - add(newPlugins) { - plugins.push(...newPlugins); - } - - }; - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Adds plugins to precaching. - * - * @param {Array} newPlugins - * - * @alias workbox.precaching.addPlugins - */ - - const addPlugins = newPlugins => { - precachePlugins.add(newPlugins); - }; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * @param {Response} response - * @return {Response} - * - * @private - * @memberof module:workbox-precaching - */ - - async function cleanRedirect(response) { - const clonedResponse = response.clone(); // Not all browsers support the Response.body stream, so fall back - // to reading the entire body into memory as a blob. - - const bodyPromise = 'body' in clonedResponse ? Promise.resolve(clonedResponse.body) : clonedResponse.blob(); - const body = await bodyPromise; // new Response() is happy when passed either a stream or a Blob. - - return new Response(body, { - headers: clonedResponse.headers, - status: clonedResponse.status, - statusText: clonedResponse.statusText - }); - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - - const REVISION_SEARCH_PARAM = '__WB_REVISION__'; - /** - * Converts a manifest entry into a versioned URL suitable for precaching. - * - * @param {Object} entry - * @return {string} A URL with versioning info. - * - * @private - * @memberof module:workbox-precaching - */ - - function createCacheKey(entry) { - if (!entry) { - throw new WorkboxError_mjs.WorkboxError('add-to-cache-list-unexpected-type', { - entry - }); - } // If a precache manifest entry is a string, it's assumed to be a versioned - // URL, like '/app.abcd1234.js'. Return as-is. - - - if (typeof entry === 'string') { - const urlObject = new URL(entry, location); - return { - cacheKey: urlObject.href, - url: urlObject.href - }; - } - - const { - revision, - url - } = entry; - - if (!url) { - throw new WorkboxError_mjs.WorkboxError('add-to-cache-list-unexpected-type', { - entry - }); - } // If there's just a URL and no revision, then it's also assumed to be a - // versioned URL. - - - if (!revision) { - const urlObject = new URL(url, location); - return { - cacheKey: urlObject.href, - url: urlObject.href - }; - } // Otherwise, construct a properly versioned URL using the custom Workbox - // search parameter along with the revision info. - - - const originalURL = new URL(url, location); - const cacheKeyURL = new URL(url, location); - cacheKeyURL.searchParams.set(REVISION_SEARCH_PARAM, revision); - return { - cacheKey: cacheKeyURL.href, - url: originalURL.href - }; - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - - const logGroup = (groupTitle, deletedURLs) => { - logger_mjs.logger.groupCollapsed(groupTitle); - - for (const url of deletedURLs) { - logger_mjs.logger.log(url); - } - - logger_mjs.logger.groupEnd(); - }; - /** - * @param {Array} deletedURLs - * - * @private - * @memberof module:workbox-precaching - */ - - - function printCleanupDetails(deletedURLs) { - const deletionCount = deletedURLs.length; - - if (deletionCount > 0) { - logger_mjs.logger.groupCollapsed(`During precaching cleanup, ` + `${deletionCount} cached ` + `request${deletionCount === 1 ? ' was' : 's were'} deleted.`); - logGroup('Deleted Cache Requests', deletedURLs); - logger_mjs.logger.groupEnd(); - } - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * @param {string} groupTitle - * @param {Array} urls - * - * @private - */ - - function _nestedGroup(groupTitle, urls) { - if (urls.length === 0) { - return; - } - - logger_mjs.logger.groupCollapsed(groupTitle); - - for (const url of urls) { - logger_mjs.logger.log(url); - } - - logger_mjs.logger.groupEnd(); - } - /** - * @param {Array} urlsToPrecache - * @param {Array} urlsAlreadyPrecached - * - * @private - * @memberof module:workbox-precaching - */ - - - function printInstallDetails(urlsToPrecache, urlsAlreadyPrecached) { - const precachedCount = urlsToPrecache.length; - const alreadyPrecachedCount = urlsAlreadyPrecached.length; - - if (precachedCount || alreadyPrecachedCount) { - let message = `Precaching ${precachedCount} file${precachedCount === 1 ? '' : 's'}.`; - - if (alreadyPrecachedCount > 0) { - message += ` ${alreadyPrecachedCount} ` + `file${alreadyPrecachedCount === 1 ? ' is' : 's are'} already cached.`; - } - - logger_mjs.logger.groupCollapsed(message); - - _nestedGroup(`View newly precached URLs.`, urlsToPrecache); - - _nestedGroup(`View previously precached URLs.`, urlsAlreadyPrecached); - - logger_mjs.logger.groupEnd(); - } - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Performs efficient precaching of assets. - * - * @memberof module:workbox-precaching - */ - - class PrecacheController { - /** - * Create a new PrecacheController. - * - * @param {string} [cacheName] An optional name for the cache, to override - * the default precache name. - */ - constructor(cacheName) { - this._cacheName = cacheNames_mjs.cacheNames.getPrecacheName(cacheName); - this._urlsToCacheKeys = new Map(); - } - /** - * This method will add items to the precache list, removing duplicates - * and ensuring the information is valid. - * - * @param { - * Array - * } entries Array of entries to precache. - */ - - - addToCacheList(entries) { - { - assert_mjs.assert.isArray(entries, { - moduleName: 'workbox-precaching', - className: 'PrecacheController', - funcName: 'addToCacheList', - paramName: 'entries' - }); - } - - for (const entry of entries) { - const { - cacheKey, - url - } = createCacheKey(entry); - - if (this._urlsToCacheKeys.has(url) && this._urlsToCacheKeys.get(url) !== cacheKey) { - throw new WorkboxError_mjs.WorkboxError('add-to-cache-list-conflicting-entries', { - firstEntry: this._urlsToCacheKeys.get(url), - secondEntry: cacheKey - }); - } - - this._urlsToCacheKeys.set(url, cacheKey); - } - } - /** - * Precaches new and updated assets. Call this method from the service worker - * install event. - * - * @param {Object} options - * @param {Event} [options.event] The install event (if needed). - * @param {Array} [options.plugins] Plugins to be used for fetching - * and caching during install. - * @return {Promise} - */ - - - async install({ - event, - plugins - } = {}) { - { - if (plugins) { - assert_mjs.assert.isArray(plugins, { - moduleName: 'workbox-precaching', - className: 'PrecacheController', - funcName: 'install', - paramName: 'plugins' - }); - } - } - - const urlsToPrecache = []; - const urlsAlreadyPrecached = []; - const cache = await caches.open(this._cacheName); - const alreadyCachedRequests = await cache.keys(); - const alreadyCachedURLs = new Set(alreadyCachedRequests.map(request => request.url)); - - for (const cacheKey of this._urlsToCacheKeys.values()) { - if (alreadyCachedURLs.has(cacheKey)) { - urlsAlreadyPrecached.push(cacheKey); - } else { - urlsToPrecache.push(cacheKey); - } - } - - const precacheRequests = urlsToPrecache.map(url => { - return this._addURLToCache({ - event, - plugins, - url - }); - }); - await Promise.all(precacheRequests); - - { - printInstallDetails(urlsToPrecache, urlsAlreadyPrecached); - } - - return { - updatedURLs: urlsToPrecache, - notUpdatedURLs: urlsAlreadyPrecached - }; - } - /** - * Deletes assets that are no longer present in the current precache manifest. - * Call this method from the service worker activate event. - * - * @return {Promise} - */ - - - async activate() { - const cache = await caches.open(this._cacheName); - const currentlyCachedRequests = await cache.keys(); - const expectedCacheKeys = new Set(this._urlsToCacheKeys.values()); - const deletedURLs = []; - - for (const request of currentlyCachedRequests) { - if (!expectedCacheKeys.has(request.url)) { - await cache.delete(request); - deletedURLs.push(request.url); - } - } - - { - printCleanupDetails(deletedURLs); - } - - return { - deletedURLs - }; - } - /** - * Requests the entry and saves it to the cache if the response is valid. - * By default, any response with a status code of less than 400 (including - * opaque responses) is considered valid. - * - * If you need to use custom criteria to determine what's valid and what - * isn't, then pass in an item in `options.plugins` that implements the - * `cacheWillUpdate()` lifecycle event. - * - * @private - * @param {Object} options - * @param {string} options.url The URL to fetch and cache. - * @param {Event} [options.event] The install event (if passed). - * @param {Array} [options.plugins] An array of plugins to apply to - * fetch and caching. - */ - - - async _addURLToCache({ - url, - event, - plugins - }) { - const request = new Request(url, { - credentials: 'same-origin' - }); - let response = await fetchWrapper_mjs.fetchWrapper.fetch({ - event, - plugins, - request - }); // Allow developers to override the default logic about what is and isn't - // valid by passing in a plugin implementing cacheWillUpdate(), e.g. - // a workbox.cacheableResponse.Plugin instance. - - let cacheWillUpdateCallback; - - for (const plugin of plugins || []) { - if ('cacheWillUpdate' in plugin) { - cacheWillUpdateCallback = plugin.cacheWillUpdate.bind(plugin); - } - } - - const isValidResponse = cacheWillUpdateCallback ? // Use a callback if provided. It returns a truthy value if valid. - cacheWillUpdateCallback({ - event, - request, - response - }) : // Otherwise, default to considering any response status under 400 valid. - // This includes, by default, considering opaque responses valid. - response.status < 400; // Consider this a failure, leading to the `install` handler failing, if - // we get back an invalid response. - - if (!isValidResponse) { - throw new WorkboxError_mjs.WorkboxError('bad-precaching-response', { - url, - status: response.status - }); - } - - if (response.redirected) { - response = await cleanRedirect(response); - } - - await cacheWrapper_mjs.cacheWrapper.put({ - event, - plugins, - request, - response, - cacheName: this._cacheName, - matchOptions: { - ignoreSearch: true - } - }); - } - /** - * Returns a mapping of a precached URL to the corresponding cache key, taking - * into account the revision information for the URL. - * - * @return {Map} A URL to cache key mapping. - */ - - - getURLsToCacheKeys() { - return this._urlsToCacheKeys; - } - /** - * Returns a list of all the URLs that have been precached by the current - * service worker. - * - * @return {Array} The precached URLs. - */ - - - getCachedURLs() { - return [...this._urlsToCacheKeys.keys()]; - } - /** - * Returns the cache key used for storing a given URL. If that URL is - * unversioned, like `/index.html', then the cache key will be the original - * URL with a search parameter appended to it. - * - * @param {string} url A URL whose cache key you want to look up. - * @return {string} The versioned URL that corresponds to a cache key - * for the original URL, or undefined if that URL isn't precached. - */ - - - getCacheKeyForURL(url) { - const urlObject = new URL(url, location); - return this._urlsToCacheKeys.get(urlObject.href); - } - - } - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - let precacheController; - /** - * @return {PrecacheController} - * @private - */ - - const getOrCreatePrecacheController = () => { - if (!precacheController) { - precacheController = new PrecacheController(); - } - - return precacheController; - }; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Removes any URL search parameters that should be ignored. - * - * @param {URL} urlObject The original URL. - * @param {Array} ignoreURLParametersMatching RegExps to test against - * each search parameter name. Matches mean that the search parameter should be - * ignored. - * @return {URL} The URL with any ignored search parameters removed. - * - * @private - * @memberof module:workbox-precaching - */ - - function removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching) { - // Convert the iterable into an array at the start of the loop to make sure - // deletion doesn't mess up iteration. - for (const paramName of [...urlObject.searchParams.keys()]) { - if (ignoreURLParametersMatching.some(regExp => regExp.test(paramName))) { - urlObject.searchParams.delete(paramName); - } - } - - return urlObject; - } - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Generator function that yields possible variations on the original URL to - * check, one at a time. - * - * @param {string} url - * @param {Object} options - * - * @private - * @memberof module:workbox-precaching - */ - - function* generateURLVariations(url, { - ignoreURLParametersMatching, - directoryIndex, - cleanURLs, - urlManipulation - } = {}) { - const urlObject = new URL(url, location); - urlObject.hash = ''; - yield urlObject.href; - const urlWithoutIgnoredParams = removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching); - yield urlWithoutIgnoredParams.href; - - if (directoryIndex && urlWithoutIgnoredParams.pathname.endsWith('/')) { - const directoryURL = new URL(urlWithoutIgnoredParams); - directoryURL.pathname += directoryIndex; - yield directoryURL.href; - } - - if (cleanURLs) { - const cleanURL = new URL(urlWithoutIgnoredParams); - cleanURL.pathname += '.html'; - yield cleanURL.href; - } - - if (urlManipulation) { - const additionalURLs = urlManipulation({ - url: urlObject - }); - - for (const urlToAttempt of additionalURLs) { - yield urlToAttempt.href; - } - } - } - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * This function will take the request URL and manipulate it based on the - * configuration options. - * - * @param {string} url - * @param {Object} options - * @return {string} Returns the URL in the cache that matches the request, - * if possible. - * - * @private - */ - - const getCacheKeyForURL = (url, options) => { - const precacheController = getOrCreatePrecacheController(); - const urlsToCacheKeys = precacheController.getURLsToCacheKeys(); - - for (const possibleURL of generateURLVariations(url, options)) { - const possibleCacheKey = urlsToCacheKeys.get(possibleURL); - - if (possibleCacheKey) { - return possibleCacheKey; - } - } - }; - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Adds a `fetch` listener to the service worker that will - * respond to - * [network requests]{@link https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers#Custom_responses_to_requests} - * with precached assets. - * - * Requests for assets that aren't precached, the `FetchEvent` will not be - * responded to, allowing the event to fall through to other `fetch` event - * listeners. - * - * NOTE: when called more than once this method will replace the previously set - * configuration options. Calling it more than once is not recommended outside - * of tests. - * - * @private - * @param {Object} options - * @param {string} [options.directoryIndex=index.html] The `directoryIndex` will - * check cache entries for a URLs ending with '/' to see if there is a hit when - * appending the `directoryIndex` value. - * @param {Array} [options.ignoreURLParametersMatching=[/^utm_/]] An - * array of regex's to remove search params when looking for a cache match. - * @param {boolean} [options.cleanURLs=true] The `cleanURLs` option will - * check the cache for the URL with a `.html` added to the end of the end. - * @param {workbox.precaching~urlManipulation} [options.urlManipulation] - * This is a function that should take a URL and return an array of - * alternative URL's that should be checked for precache matches. - */ - - const addFetchListener = ({ - ignoreURLParametersMatching = [/^utm_/], - directoryIndex = 'index.html', - cleanURLs = true, - urlManipulation = null - } = {}) => { - const cacheName = cacheNames_mjs.cacheNames.getPrecacheName(); - addEventListener('fetch', event => { - const precachedURL = getCacheKeyForURL(event.request.url, { - cleanURLs, - directoryIndex, - ignoreURLParametersMatching, - urlManipulation - }); - - if (!precachedURL) { - { - logger_mjs.logger.debug(`Precaching did not find a match for ` + getFriendlyURL_mjs.getFriendlyURL(event.request.url)); - } - - return; - } - - let responsePromise = caches.open(cacheName).then(cache => { - return cache.match(precachedURL); - }).then(cachedResponse => { - if (cachedResponse) { - return cachedResponse; - } // Fall back to the network if we don't have a cached response - // (perhaps due to manual cache cleanup). - - - { - logger_mjs.logger.warn(`The precached response for ` + `${getFriendlyURL_mjs.getFriendlyURL(precachedURL)} in ${cacheName} was not found. ` + `Falling back to the network instead.`); - } - - return fetch(precachedURL); - }); - - { - responsePromise = responsePromise.then(response => { - // Workbox is going to handle the route. - // print the routing details to the console. - logger_mjs.logger.groupCollapsed(`Precaching is responding to: ` + getFriendlyURL_mjs.getFriendlyURL(event.request.url)); - logger_mjs.logger.log(`Serving the precached url: ${precachedURL}`); - logger_mjs.logger.groupCollapsed(`View request details here.`); - logger_mjs.logger.log(event.request); - logger_mjs.logger.groupEnd(); - logger_mjs.logger.groupCollapsed(`View response details here.`); - logger_mjs.logger.log(response); - logger_mjs.logger.groupEnd(); - logger_mjs.logger.groupEnd(); - return response; - }); - } - - event.respondWith(responsePromise); - }); - }; - - /* - Copyright 2019 Google LLC - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - let listenerAdded = false; - /** - * Add a `fetch` listener to the service worker that will - * respond to - * [network requests]{@link https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers#Custom_responses_to_requests} - * with precached assets. - * - * Requests for assets that aren't precached, the `FetchEvent` will not be - * responded to, allowing the event to fall through to other `fetch` event - * listeners. - * - * @param {Object} options - * @param {string} [options.directoryIndex=index.html] The `directoryIndex` will - * check cache entries for a URLs ending with '/' to see if there is a hit when - * appending the `directoryIndex` value. - * @param {Array} [options.ignoreURLParametersMatching=[/^utm_/]] An - * array of regex's to remove search params when looking for a cache match. - * @param {boolean} [options.cleanURLs=true] The `cleanURLs` option will - * check the cache for the URL with a `.html` added to the end of the end. - * @param {workbox.precaching~urlManipulation} [options.urlManipulation] - * This is a function that should take a URL and return an array of - * alternative URL's that should be checked for precache matches. - * - * @alias workbox.precaching.addRoute - */ - - const addRoute = options => { - if (!listenerAdded) { - addFetchListener(options); - listenerAdded = true; - } - }; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - const SUBSTRING_TO_FIND = '-precache-'; - /** - * Cleans up incompatible precaches that were created by older versions of - * Workbox, by a service worker registered under the current scope. - * - * This is meant to be called as part of the `activate` event. - * - * This should be safe to use as long as you don't include `substringToFind` - * (defaulting to `-precache-`) in your non-precache cache names. - * - * @param {string} currentPrecacheName The cache name currently in use for - * precaching. This cache won't be deleted. - * @param {string} [substringToFind='-precache-'] Cache names which include this - * substring will be deleted (excluding `currentPrecacheName`). - * @return {Array} A list of all the cache names that were deleted. - * - * @private - * @memberof module:workbox-precaching - */ - - const deleteOutdatedCaches = async (currentPrecacheName, substringToFind = SUBSTRING_TO_FIND) => { - const cacheNames = await caches.keys(); - const cacheNamesToDelete = cacheNames.filter(cacheName => { - return cacheName.includes(substringToFind) && cacheName.includes(self.registration.scope) && cacheName !== currentPrecacheName; - }); - await Promise.all(cacheNamesToDelete.map(cacheName => caches.delete(cacheName))); - return cacheNamesToDelete; - }; - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Adds an `activate` event listener which will clean up incompatible - * precaches that were created by older versions of Workbox. - * - * @alias workbox.precaching.cleanupOutdatedCaches - */ - - const cleanupOutdatedCaches = () => { - addEventListener('activate', event => { - const cacheName = cacheNames_mjs.cacheNames.getPrecacheName(); - event.waitUntil(deleteOutdatedCaches(cacheName).then(cachesDeleted => { - { - if (cachesDeleted.length > 0) { - logger_mjs.logger.log(`The following out-of-date precaches were cleaned up ` + `automatically:`, cachesDeleted); - } - } - })); - }); - }; - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Takes in a URL, and returns the corresponding URL that could be used to - * lookup the entry in the precache. - * - * If a relative URL is provided, the location of the service worker file will - * be used as the base. - * - * For precached entries without revision information, the cache key will be the - * same as the original URL. - * - * For precached entries with revision information, the cache key will be the - * original URL with the addition of a query parameter used for keeping track of - * the revision info. - * - * @param {string} url The URL whose cache key to look up. - * @return {string} The cache key that corresponds to that URL. - * - * @alias workbox.precaching.getCacheKeyForURL - */ - - const getCacheKeyForURL$1 = url => { - const precacheController = getOrCreatePrecacheController(); - return precacheController.getCacheKeyForURL(url); - }; - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - - const installListener = event => { - const precacheController = getOrCreatePrecacheController(); - const plugins = precachePlugins.get(); - event.waitUntil(precacheController.install({ - event, - plugins - }).catch(error => { - { - logger_mjs.logger.error(`Service worker installation failed. It will ` + `be retried automatically during the next navigation.`); - } // Re-throw the error to ensure installation fails. - - - throw error; - })); - }; - - const activateListener = event => { - const precacheController = getOrCreatePrecacheController(); - const plugins = precachePlugins.get(); - event.waitUntil(precacheController.activate({ - event, - plugins - })); - }; - /** - * Adds items to the precache list, removing any duplicates and - * stores the files in the - * ["precache cache"]{@link module:workbox-core.cacheNames} when the service - * worker installs. - * - * This method can be called multiple times. - * - * Please note: This method **will not** serve any of the cached files for you. - * It only precaches files. To respond to a network request you call - * [addRoute()]{@link module:workbox-precaching.addRoute}. - * - * If you have a single array of files to precache, you can just call - * [precacheAndRoute()]{@link module:workbox-precaching.precacheAndRoute}. - * - * @param {Array} entries Array of entries to precache. - * - * @alias workbox.precaching.precache - */ - - - const precache = entries => { - const precacheController = getOrCreatePrecacheController(); - precacheController.addToCacheList(entries); - - if (entries.length > 0) { - // NOTE: these listeners will only be added once (even if the `precache()` - // method is called multiple times) because event listeners are implemented - // as a set, where each listener must be unique. - addEventListener('install', installListener); - addEventListener('activate', activateListener); - } - }; - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * This method will add entries to the precache list and add a route to - * respond to fetch events. - * - * This is a convenience method that will call - * [precache()]{@link module:workbox-precaching.precache} and - * [addRoute()]{@link module:workbox-precaching.addRoute} in a single call. - * - * @param {Array} entries Array of entries to precache. - * @param {Object} options See - * [addRoute() options]{@link module:workbox-precaching.addRoute}. - * - * @alias workbox.precaching.precacheAndRoute - */ - - const precacheAndRoute = (entries, options) => { - precache(entries); - addRoute(options); - }; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - - { - assert_mjs.assert.isSWEnv('workbox-precaching'); - } - - exports.addPlugins = addPlugins; - exports.addRoute = addRoute; - exports.cleanupOutdatedCaches = cleanupOutdatedCaches; - exports.getCacheKeyForURL = getCacheKeyForURL$1; - exports.precache = precache; - exports.precacheAndRoute = precacheAndRoute; - exports.PrecacheController = PrecacheController; - - return exports; - -}({}, workbox.core._private, workbox.core._private, workbox.core._private, workbox.core._private, workbox.core._private, workbox.core._private, workbox.core._private)); -//# sourceMappingURL=workbox-precaching.dev.js.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-precaching.dev.js.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-precaching.dev.js.map deleted file mode 100644 index 364f81a27..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-precaching.dev.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-precaching.dev.js","sources":["../_version.mjs","../utils/precachePlugins.mjs","../addPlugins.mjs","../utils/cleanRedirect.mjs","../utils/createCacheKey.mjs","../utils/printCleanupDetails.mjs","../utils/printInstallDetails.mjs","../PrecacheController.mjs","../utils/getOrCreatePrecacheController.mjs","../utils/removeIgnoredSearchParams.mjs","../utils/generateURLVariations.mjs","../utils/getCacheKeyForURL.mjs","../utils/addFetchListener.mjs","../addRoute.mjs","../utils/deleteOutdatedCaches.mjs","../cleanupOutdatedCaches.mjs","../getCacheKeyForURL.mjs","../precache.mjs","../precacheAndRoute.mjs","../index.mjs"],"sourcesContent":["try{self['workbox:precaching:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\nconst plugins = [];\n\nexport const precachePlugins = {\n /*\n * @return {Array}\n * @private\n */\n get() {\n return plugins;\n },\n\n /*\n * @param {Array} newPlugins\n * @private\n */\n add(newPlugins) {\n plugins.push(...newPlugins);\n },\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {precachePlugins} from './utils/precachePlugins.mjs';\nimport './_version.mjs';\n\n\n/**\n * Adds plugins to precaching.\n *\n * @param {Array} newPlugins\n *\n * @alias workbox.precaching.addPlugins\n */\nconst addPlugins = (newPlugins) => {\n precachePlugins.add(newPlugins);\n};\n\nexport {addPlugins};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n/**\n * @param {Response} response\n * @return {Response}\n *\n * @private\n * @memberof module:workbox-precaching\n */\nexport async function cleanRedirect(response) {\n const clonedResponse = response.clone();\n\n // Not all browsers support the Response.body stream, so fall back\n // to reading the entire body into memory as a blob.\n const bodyPromise = 'body' in clonedResponse ?\n Promise.resolve(clonedResponse.body) :\n clonedResponse.blob();\n\n const body = await bodyPromise;\n\n // new Response() is happy when passed either a stream or a Blob.\n return new Response(body, {\n headers: clonedResponse.headers,\n status: clonedResponse.status,\n statusText: clonedResponse.statusText,\n });\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\n\nimport '../_version.mjs';\n\n// Name of the search parameter used to store revision info.\nconst REVISION_SEARCH_PARAM = '__WB_REVISION__';\n\n/**\n * Converts a manifest entry into a versioned URL suitable for precaching.\n *\n * @param {Object} entry\n * @return {string} A URL with versioning info.\n *\n * @private\n * @memberof module:workbox-precaching\n */\nexport function createCacheKey(entry) {\n if (!entry) {\n throw new WorkboxError('add-to-cache-list-unexpected-type', {entry});\n }\n\n // If a precache manifest entry is a string, it's assumed to be a versioned\n // URL, like '/app.abcd1234.js'. Return as-is.\n if (typeof entry === 'string') {\n const urlObject = new URL(entry, location);\n return {\n cacheKey: urlObject.href,\n url: urlObject.href,\n };\n }\n\n const {revision, url} = entry;\n if (!url) {\n throw new WorkboxError('add-to-cache-list-unexpected-type', {entry});\n }\n\n // If there's just a URL and no revision, then it's also assumed to be a\n // versioned URL.\n if (!revision) {\n const urlObject = new URL(url, location);\n return {\n cacheKey: urlObject.href,\n url: urlObject.href,\n };\n }\n\n // Otherwise, construct a properly versioned URL using the custom Workbox\n // search parameter along with the revision info.\n const originalURL = new URL(url, location);\n const cacheKeyURL = new URL(url, location);\n cacheKeyURL.searchParams.set(REVISION_SEARCH_PARAM, revision);\n return {\n cacheKey: cacheKeyURL.href,\n url: originalURL.href,\n };\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {logger} from 'workbox-core/_private/logger.mjs';\n\nimport '../_version.mjs';\n\nconst logGroup = (groupTitle, deletedURLs) => {\n logger.groupCollapsed(groupTitle);\n\n for (const url of deletedURLs) {\n logger.log(url);\n }\n\n logger.groupEnd();\n};\n\n/**\n * @param {Array} deletedURLs\n *\n * @private\n * @memberof module:workbox-precaching\n */\nexport function printCleanupDetails(deletedURLs) {\n const deletionCount = deletedURLs.length;\n if (deletionCount > 0) {\n logger.groupCollapsed(`During precaching cleanup, ` +\n `${deletionCount} cached ` +\n `request${deletionCount === 1 ? ' was' : 's were'} deleted.`);\n logGroup('Deleted Cache Requests', deletedURLs);\n logger.groupEnd();\n }\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {logger} from 'workbox-core/_private/logger.mjs';\n\nimport '../_version.mjs';\n\n/**\n * @param {string} groupTitle\n * @param {Array} urls\n *\n * @private\n */\nfunction _nestedGroup(groupTitle, urls) {\n if (urls.length === 0) {\n return;\n }\n\n logger.groupCollapsed(groupTitle);\n\n for (const url of urls) {\n logger.log(url);\n }\n\n logger.groupEnd();\n}\n\n/**\n * @param {Array} urlsToPrecache\n * @param {Array} urlsAlreadyPrecached\n *\n * @private\n * @memberof module:workbox-precaching\n */\nexport function printInstallDetails(urlsToPrecache, urlsAlreadyPrecached) {\n const precachedCount = urlsToPrecache.length;\n const alreadyPrecachedCount = urlsAlreadyPrecached.length;\n\n if (precachedCount || alreadyPrecachedCount) {\n let message =\n `Precaching ${precachedCount} file${precachedCount === 1 ? '' : 's'}.`;\n\n if (alreadyPrecachedCount > 0) {\n message += ` ${alreadyPrecachedCount} ` +\n `file${alreadyPrecachedCount === 1 ? ' is' : 's are'} already cached.`;\n }\n\n logger.groupCollapsed(message);\n\n _nestedGroup(`View newly precached URLs.`, urlsToPrecache);\n _nestedGroup(`View previously precached URLs.`, urlsAlreadyPrecached);\n logger.groupEnd();\n }\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {cacheNames} from 'workbox-core/_private/cacheNames.mjs';\nimport {cacheWrapper} from 'workbox-core/_private/cacheWrapper.mjs';\nimport {fetchWrapper} from 'workbox-core/_private/fetchWrapper.mjs';\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\n\nimport {cleanRedirect} from './utils/cleanRedirect.mjs';\nimport {createCacheKey} from './utils/createCacheKey.mjs';\nimport {printCleanupDetails} from './utils/printCleanupDetails.mjs';\nimport {printInstallDetails} from './utils/printInstallDetails.mjs';\n\nimport './_version.mjs';\n\n\n/**\n * Performs efficient precaching of assets.\n *\n * @memberof module:workbox-precaching\n */\nclass PrecacheController {\n /**\n * Create a new PrecacheController.\n *\n * @param {string} [cacheName] An optional name for the cache, to override\n * the default precache name.\n */\n constructor(cacheName) {\n this._cacheName = cacheNames.getPrecacheName(cacheName);\n this._urlsToCacheKeys = new Map();\n }\n\n /**\n * This method will add items to the precache list, removing duplicates\n * and ensuring the information is valid.\n *\n * @param {\n * Array\n * } entries Array of entries to precache.\n */\n addToCacheList(entries) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isArray(entries, {\n moduleName: 'workbox-precaching',\n className: 'PrecacheController',\n funcName: 'addToCacheList',\n paramName: 'entries',\n });\n }\n\n for (const entry of entries) {\n const {cacheKey, url} = createCacheKey(entry);\n if (this._urlsToCacheKeys.has(url) &&\n this._urlsToCacheKeys.get(url) !== cacheKey) {\n throw new WorkboxError('add-to-cache-list-conflicting-entries', {\n firstEntry: this._urlsToCacheKeys.get(url),\n secondEntry: cacheKey,\n });\n }\n this._urlsToCacheKeys.set(url, cacheKey);\n }\n }\n\n /**\n * Precaches new and updated assets. Call this method from the service worker\n * install event.\n *\n * @param {Object} options\n * @param {Event} [options.event] The install event (if needed).\n * @param {Array} [options.plugins] Plugins to be used for fetching\n * and caching during install.\n * @return {Promise}\n */\n async install({event, plugins} = {}) {\n if (process.env.NODE_ENV !== 'production') {\n if (plugins) {\n assert.isArray(plugins, {\n moduleName: 'workbox-precaching',\n className: 'PrecacheController',\n funcName: 'install',\n paramName: 'plugins',\n });\n }\n }\n\n const urlsToPrecache = [];\n const urlsAlreadyPrecached = [];\n\n const cache = await caches.open(this._cacheName);\n const alreadyCachedRequests = await cache.keys();\n const alreadyCachedURLs = new Set(alreadyCachedRequests.map(\n (request) => request.url));\n\n for (const cacheKey of this._urlsToCacheKeys.values()) {\n if (alreadyCachedURLs.has(cacheKey)) {\n urlsAlreadyPrecached.push(cacheKey);\n } else {\n urlsToPrecache.push(cacheKey);\n }\n }\n\n const precacheRequests = urlsToPrecache.map((url) => {\n return this._addURLToCache({event, plugins, url});\n });\n await Promise.all(precacheRequests);\n\n if (process.env.NODE_ENV !== 'production') {\n printInstallDetails(urlsToPrecache, urlsAlreadyPrecached);\n }\n\n return {\n updatedURLs: urlsToPrecache,\n notUpdatedURLs: urlsAlreadyPrecached,\n };\n }\n\n /**\n * Deletes assets that are no longer present in the current precache manifest.\n * Call this method from the service worker activate event.\n *\n * @return {Promise}\n */\n async activate() {\n const cache = await caches.open(this._cacheName);\n const currentlyCachedRequests = await cache.keys();\n const expectedCacheKeys = new Set(this._urlsToCacheKeys.values());\n\n const deletedURLs = [];\n for (const request of currentlyCachedRequests) {\n if (!expectedCacheKeys.has(request.url)) {\n await cache.delete(request);\n deletedURLs.push(request.url);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n printCleanupDetails(deletedURLs);\n }\n\n return {deletedURLs};\n }\n\n /**\n * Requests the entry and saves it to the cache if the response is valid.\n * By default, any response with a status code of less than 400 (including\n * opaque responses) is considered valid.\n *\n * If you need to use custom criteria to determine what's valid and what\n * isn't, then pass in an item in `options.plugins` that implements the\n * `cacheWillUpdate()` lifecycle event.\n *\n * @private\n * @param {Object} options\n * @param {string} options.url The URL to fetch and cache.\n * @param {Event} [options.event] The install event (if passed).\n * @param {Array} [options.plugins] An array of plugins to apply to\n * fetch and caching.\n */\n async _addURLToCache({url, event, plugins}) {\n const request = new Request(url, {credentials: 'same-origin'});\n let response = await fetchWrapper.fetch({\n event,\n plugins,\n request,\n });\n\n // Allow developers to override the default logic about what is and isn't\n // valid by passing in a plugin implementing cacheWillUpdate(), e.g.\n // a workbox.cacheableResponse.Plugin instance.\n let cacheWillUpdateCallback;\n for (const plugin of (plugins || [])) {\n if ('cacheWillUpdate' in plugin) {\n cacheWillUpdateCallback = plugin.cacheWillUpdate.bind(plugin);\n }\n }\n\n const isValidResponse = cacheWillUpdateCallback ?\n // Use a callback if provided. It returns a truthy value if valid.\n cacheWillUpdateCallback({event, request, response}) :\n // Otherwise, default to considering any response status under 400 valid.\n // This includes, by default, considering opaque responses valid.\n response.status < 400;\n\n // Consider this a failure, leading to the `install` handler failing, if\n // we get back an invalid response.\n if (!isValidResponse) {\n throw new WorkboxError('bad-precaching-response', {\n url,\n status: response.status,\n });\n }\n\n if (response.redirected) {\n response = await cleanRedirect(response);\n }\n\n await cacheWrapper.put({\n event,\n plugins,\n request,\n response,\n cacheName: this._cacheName,\n matchOptions: {\n ignoreSearch: true,\n },\n });\n }\n\n /**\n * Returns a mapping of a precached URL to the corresponding cache key, taking\n * into account the revision information for the URL.\n *\n * @return {Map} A URL to cache key mapping.\n */\n getURLsToCacheKeys() {\n return this._urlsToCacheKeys;\n }\n\n /**\n * Returns a list of all the URLs that have been precached by the current\n * service worker.\n *\n * @return {Array} The precached URLs.\n */\n getCachedURLs() {\n return [...this._urlsToCacheKeys.keys()];\n }\n\n /**\n * Returns the cache key used for storing a given URL. If that URL is\n * unversioned, like `/index.html', then the cache key will be the original\n * URL with a search parameter appended to it.\n *\n * @param {string} url A URL whose cache key you want to look up.\n * @return {string} The versioned URL that corresponds to a cache key\n * for the original URL, or undefined if that URL isn't precached.\n */\n getCacheKeyForURL(url) {\n const urlObject = new URL(url, location);\n return this._urlsToCacheKeys.get(urlObject.href);\n }\n}\n\nexport {PrecacheController};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {PrecacheController} from '../PrecacheController.mjs';\nimport '../_version.mjs';\n\n\nlet precacheController;\n\n/**\n * @return {PrecacheController}\n * @private\n */\nexport const getOrCreatePrecacheController = () => {\n if (!precacheController) {\n precacheController = new PrecacheController();\n }\n return precacheController;\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n/**\n * Removes any URL search parameters that should be ignored.\n *\n * @param {URL} urlObject The original URL.\n * @param {Array} ignoreURLParametersMatching RegExps to test against\n * each search parameter name. Matches mean that the search parameter should be\n * ignored.\n * @return {URL} The URL with any ignored search parameters removed.\n *\n * @private\n * @memberof module:workbox-precaching\n */\nexport function removeIgnoredSearchParams(urlObject,\n ignoreURLParametersMatching) {\n // Convert the iterable into an array at the start of the loop to make sure\n // deletion doesn't mess up iteration.\n for (const paramName of [...urlObject.searchParams.keys()]) {\n if (ignoreURLParametersMatching.some((regExp) => regExp.test(paramName))) {\n urlObject.searchParams.delete(paramName);\n }\n }\n\n return urlObject;\n}\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {removeIgnoredSearchParams} from './removeIgnoredSearchParams.mjs';\n\nimport '../_version.mjs';\n\n/**\n * Generator function that yields possible variations on the original URL to\n * check, one at a time.\n *\n * @param {string} url\n * @param {Object} options\n *\n * @private\n * @memberof module:workbox-precaching\n */\nexport function* generateURLVariations(url, {\n ignoreURLParametersMatching,\n directoryIndex,\n cleanURLs,\n urlManipulation,\n} = {}) {\n const urlObject = new URL(url, location);\n urlObject.hash = '';\n yield urlObject.href;\n\n const urlWithoutIgnoredParams = removeIgnoredSearchParams(\n urlObject, ignoreURLParametersMatching);\n yield urlWithoutIgnoredParams.href;\n\n if (directoryIndex && urlWithoutIgnoredParams.pathname.endsWith('/')) {\n const directoryURL = new URL(urlWithoutIgnoredParams);\n directoryURL.pathname += directoryIndex;\n yield directoryURL.href;\n }\n\n if (cleanURLs) {\n const cleanURL = new URL(urlWithoutIgnoredParams);\n cleanURL.pathname += '.html';\n yield cleanURL.href;\n }\n\n if (urlManipulation) {\n const additionalURLs = urlManipulation({url: urlObject});\n for (const urlToAttempt of additionalURLs) {\n yield urlToAttempt.href;\n }\n }\n}\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {getOrCreatePrecacheController}\n from './getOrCreatePrecacheController.mjs';\nimport {generateURLVariations} from './generateURLVariations.mjs';\nimport '../_version.mjs';\n\n/**\n * This function will take the request URL and manipulate it based on the\n * configuration options.\n *\n * @param {string} url\n * @param {Object} options\n * @return {string} Returns the URL in the cache that matches the request,\n * if possible.\n *\n * @private\n */\nexport const getCacheKeyForURL = (url, options) => {\n const precacheController = getOrCreatePrecacheController();\n\n const urlsToCacheKeys = precacheController.getURLsToCacheKeys();\n for (const possibleURL of generateURLVariations(url, options)) {\n const possibleCacheKey = urlsToCacheKeys.get(possibleURL);\n if (possibleCacheKey) {\n return possibleCacheKey;\n }\n }\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {cacheNames} from 'workbox-core/_private/cacheNames.mjs';\nimport {getFriendlyURL} from 'workbox-core/_private/getFriendlyURL.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {getCacheKeyForURL} from './getCacheKeyForURL.mjs';\nimport '../_version.mjs';\n\n\n/**\n * Adds a `fetch` listener to the service worker that will\n * respond to\n * [network requests]{@link https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers#Custom_responses_to_requests}\n * with precached assets.\n *\n * Requests for assets that aren't precached, the `FetchEvent` will not be\n * responded to, allowing the event to fall through to other `fetch` event\n * listeners.\n *\n * NOTE: when called more than once this method will replace the previously set\n * configuration options. Calling it more than once is not recommended outside\n * of tests.\n *\n * @private\n * @param {Object} options\n * @param {string} [options.directoryIndex=index.html] The `directoryIndex` will\n * check cache entries for a URLs ending with '/' to see if there is a hit when\n * appending the `directoryIndex` value.\n * @param {Array} [options.ignoreURLParametersMatching=[/^utm_/]] An\n * array of regex's to remove search params when looking for a cache match.\n * @param {boolean} [options.cleanURLs=true] The `cleanURLs` option will\n * check the cache for the URL with a `.html` added to the end of the end.\n * @param {workbox.precaching~urlManipulation} [options.urlManipulation]\n * This is a function that should take a URL and return an array of\n * alternative URL's that should be checked for precache matches.\n */\nexport const addFetchListener = ({\n ignoreURLParametersMatching = [/^utm_/],\n directoryIndex = 'index.html',\n cleanURLs = true,\n urlManipulation = null,\n} = {}) => {\n const cacheName = cacheNames.getPrecacheName();\n\n addEventListener('fetch', (event) => {\n const precachedURL = getCacheKeyForURL(event.request.url, {\n cleanURLs,\n directoryIndex,\n ignoreURLParametersMatching,\n urlManipulation,\n });\n if (!precachedURL) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Precaching did not find a match for ` +\n getFriendlyURL(event.request.url));\n }\n return;\n }\n\n let responsePromise = caches.open(cacheName).then((cache) => {\n return cache.match(precachedURL);\n }).then((cachedResponse) => {\n if (cachedResponse) {\n return cachedResponse;\n }\n\n // Fall back to the network if we don't have a cached response\n // (perhaps due to manual cache cleanup).\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`The precached response for ` +\n `${getFriendlyURL(precachedURL)} in ${cacheName} was not found. ` +\n `Falling back to the network instead.`);\n }\n\n return fetch(precachedURL);\n });\n\n if (process.env.NODE_ENV !== 'production') {\n responsePromise = responsePromise.then((response) => {\n // Workbox is going to handle the route.\n // print the routing details to the console.\n logger.groupCollapsed(`Precaching is responding to: ` +\n getFriendlyURL(event.request.url));\n logger.log(`Serving the precached url: ${precachedURL}`);\n\n logger.groupCollapsed(`View request details here.`);\n logger.log(event.request);\n logger.groupEnd();\n\n logger.groupCollapsed(`View response details here.`);\n logger.log(response);\n logger.groupEnd();\n\n logger.groupEnd();\n return response;\n });\n }\n\n event.respondWith(responsePromise);\n });\n};\n","\n/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {addFetchListener} from './utils/addFetchListener.mjs';\nimport './_version.mjs';\n\n\nlet listenerAdded = false;\n\n/**\n * Add a `fetch` listener to the service worker that will\n * respond to\n * [network requests]{@link https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers#Custom_responses_to_requests}\n * with precached assets.\n *\n * Requests for assets that aren't precached, the `FetchEvent` will not be\n * responded to, allowing the event to fall through to other `fetch` event\n * listeners.\n *\n * @param {Object} options\n * @param {string} [options.directoryIndex=index.html] The `directoryIndex` will\n * check cache entries for a URLs ending with '/' to see if there is a hit when\n * appending the `directoryIndex` value.\n * @param {Array} [options.ignoreURLParametersMatching=[/^utm_/]] An\n * array of regex's to remove search params when looking for a cache match.\n * @param {boolean} [options.cleanURLs=true] The `cleanURLs` option will\n * check the cache for the URL with a `.html` added to the end of the end.\n * @param {workbox.precaching~urlManipulation} [options.urlManipulation]\n * This is a function that should take a URL and return an array of\n * alternative URL's that should be checked for precache matches.\n *\n * @alias workbox.precaching.addRoute\n */\nexport const addRoute = (options) => {\n if (!listenerAdded) {\n addFetchListener(options);\n listenerAdded = true;\n }\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\nconst SUBSTRING_TO_FIND = '-precache-';\n\n/**\n * Cleans up incompatible precaches that were created by older versions of\n * Workbox, by a service worker registered under the current scope.\n *\n * This is meant to be called as part of the `activate` event.\n *\n * This should be safe to use as long as you don't include `substringToFind`\n * (defaulting to `-precache-`) in your non-precache cache names.\n *\n * @param {string} currentPrecacheName The cache name currently in use for\n * precaching. This cache won't be deleted.\n * @param {string} [substringToFind='-precache-'] Cache names which include this\n * substring will be deleted (excluding `currentPrecacheName`).\n * @return {Array} A list of all the cache names that were deleted.\n *\n * @private\n * @memberof module:workbox-precaching\n */\nconst deleteOutdatedCaches = async (\n currentPrecacheName,\n substringToFind = SUBSTRING_TO_FIND) => {\n const cacheNames = await caches.keys();\n\n const cacheNamesToDelete = cacheNames.filter((cacheName) => {\n return cacheName.includes(substringToFind) &&\n cacheName.includes(self.registration.scope) &&\n cacheName !== currentPrecacheName;\n });\n\n await Promise.all(\n cacheNamesToDelete.map((cacheName) => caches.delete(cacheName)));\n\n return cacheNamesToDelete;\n};\n\nexport {deleteOutdatedCaches};\n\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {cacheNames} from 'workbox-core/_private/cacheNames.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {deleteOutdatedCaches} from './utils/deleteOutdatedCaches.mjs';\nimport './_version.mjs';\n\n\n/**\n * Adds an `activate` event listener which will clean up incompatible\n * precaches that were created by older versions of Workbox.\n *\n * @alias workbox.precaching.cleanupOutdatedCaches\n */\nexport const cleanupOutdatedCaches = () => {\n addEventListener('activate', (event) => {\n const cacheName = cacheNames.getPrecacheName();\n\n event.waitUntil(deleteOutdatedCaches(cacheName).then((cachesDeleted) => {\n if (process.env.NODE_ENV !== 'production') {\n if (cachesDeleted.length > 0) {\n logger.log(`The following out-of-date precaches were cleaned up ` +\n `automatically:`, cachesDeleted);\n }\n }\n }));\n });\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {getOrCreatePrecacheController}\n from './utils/getOrCreatePrecacheController.mjs';\nimport './_version.mjs';\n\n\n/**\n * Takes in a URL, and returns the corresponding URL that could be used to\n * lookup the entry in the precache.\n *\n * If a relative URL is provided, the location of the service worker file will\n * be used as the base.\n *\n * For precached entries without revision information, the cache key will be the\n * same as the original URL.\n *\n * For precached entries with revision information, the cache key will be the\n * original URL with the addition of a query parameter used for keeping track of\n * the revision info.\n *\n * @param {string} url The URL whose cache key to look up.\n * @return {string} The cache key that corresponds to that URL.\n *\n * @alias workbox.precaching.getCacheKeyForURL\n */\nexport const getCacheKeyForURL = (url) => {\n const precacheController = getOrCreatePrecacheController();\n return precacheController.getCacheKeyForURL(url);\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {getOrCreatePrecacheController} from './utils/getOrCreatePrecacheController.mjs';\nimport {precachePlugins} from './utils/precachePlugins.mjs';\nimport './_version.mjs';\n\n\nconst installListener = (event) => {\n const precacheController = getOrCreatePrecacheController();\n const plugins = precachePlugins.get();\n\n event.waitUntil(\n precacheController.install({event, plugins})\n .catch((error) => {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(`Service worker installation failed. It will ` +\n `be retried automatically during the next navigation.`);\n }\n // Re-throw the error to ensure installation fails.\n throw error;\n })\n );\n};\n\nconst activateListener = (event) => {\n const precacheController = getOrCreatePrecacheController();\n const plugins = precachePlugins.get();\n\n event.waitUntil(precacheController.activate({event, plugins}));\n};\n\n/**\n * Adds items to the precache list, removing any duplicates and\n * stores the files in the\n * [\"precache cache\"]{@link module:workbox-core.cacheNames} when the service\n * worker installs.\n *\n * This method can be called multiple times.\n *\n * Please note: This method **will not** serve any of the cached files for you.\n * It only precaches files. To respond to a network request you call\n * [addRoute()]{@link module:workbox-precaching.addRoute}.\n *\n * If you have a single array of files to precache, you can just call\n * [precacheAndRoute()]{@link module:workbox-precaching.precacheAndRoute}.\n *\n * @param {Array} entries Array of entries to precache.\n *\n * @alias workbox.precaching.precache\n */\nexport const precache = (entries) => {\n const precacheController = getOrCreatePrecacheController();\n precacheController.addToCacheList(entries);\n\n if (entries.length > 0) {\n // NOTE: these listeners will only be added once (even if the `precache()`\n // method is called multiple times) because event listeners are implemented\n // as a set, where each listener must be unique.\n addEventListener('install', installListener);\n addEventListener('activate', activateListener);\n }\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {addRoute} from './addRoute.mjs';\nimport {precache} from './precache.mjs';\nimport './_version.mjs';\n\n\n/**\n * This method will add entries to the precache list and add a route to\n * respond to fetch events.\n *\n * This is a convenience method that will call\n * [precache()]{@link module:workbox-precaching.precache} and\n * [addRoute()]{@link module:workbox-precaching.addRoute} in a single call.\n *\n * @param {Array} entries Array of entries to precache.\n * @param {Object} options See\n * [addRoute() options]{@link module:workbox-precaching.addRoute}.\n *\n * @alias workbox.precaching.precacheAndRoute\n */\nexport const precacheAndRoute = (entries, options) => {\n precache(entries);\n addRoute(options);\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {addPlugins} from './addPlugins.mjs';\nimport {addRoute} from './addRoute.mjs';\nimport {cleanupOutdatedCaches} from './cleanupOutdatedCaches.mjs';\nimport {getCacheKeyForURL} from './getCacheKeyForURL.mjs';\nimport {precache} from './precache.mjs';\nimport {precacheAndRoute} from './precacheAndRoute.mjs';\nimport {PrecacheController} from './PrecacheController.mjs';\nimport './_version.mjs';\n\n\nif (process.env.NODE_ENV !== 'production') {\n assert.isSWEnv('workbox-precaching');\n}\n\n/**\n * Most consumers of this module will want to use the\n * [precacheAndRoute()]{@link workbox.precaching.precacheAndRoute}\n * method to add assets to the Cache and respond to network requests with these\n * cached assets.\n *\n * If you require finer grained control, you can use the\n * [PrecacheController]{@link workbox.precaching.PrecacheController}\n * to determine when performed.\n *\n * @namespace workbox.precaching\n */\n\nexport {\n addPlugins,\n addRoute,\n cleanupOutdatedCaches,\n getCacheKeyForURL,\n precache,\n precacheAndRoute,\n PrecacheController,\n};\n"],"names":["self","_","e","plugins","precachePlugins","get","add","newPlugins","push","addPlugins","cleanRedirect","response","clonedResponse","clone","bodyPromise","Promise","resolve","body","blob","Response","headers","status","statusText","REVISION_SEARCH_PARAM","createCacheKey","entry","WorkboxError","urlObject","URL","location","cacheKey","href","url","revision","originalURL","cacheKeyURL","searchParams","set","logGroup","groupTitle","deletedURLs","logger","groupCollapsed","log","groupEnd","printCleanupDetails","deletionCount","length","_nestedGroup","urls","printInstallDetails","urlsToPrecache","urlsAlreadyPrecached","precachedCount","alreadyPrecachedCount","message","PrecacheController","constructor","cacheName","_cacheName","cacheNames","getPrecacheName","_urlsToCacheKeys","Map","addToCacheList","entries","assert","isArray","moduleName","className","funcName","paramName","has","firstEntry","secondEntry","install","event","cache","caches","open","alreadyCachedRequests","keys","alreadyCachedURLs","Set","map","request","values","precacheRequests","_addURLToCache","all","updatedURLs","notUpdatedURLs","activate","currentlyCachedRequests","expectedCacheKeys","delete","Request","credentials","fetchWrapper","fetch","cacheWillUpdateCallback","plugin","cacheWillUpdate","bind","isValidResponse","redirected","cacheWrapper","put","matchOptions","ignoreSearch","getURLsToCacheKeys","getCachedURLs","getCacheKeyForURL","precacheController","getOrCreatePrecacheController","removeIgnoredSearchParams","ignoreURLParametersMatching","some","regExp","test","generateURLVariations","directoryIndex","cleanURLs","urlManipulation","hash","urlWithoutIgnoredParams","pathname","endsWith","directoryURL","cleanURL","additionalURLs","urlToAttempt","options","urlsToCacheKeys","possibleURL","possibleCacheKey","addFetchListener","addEventListener","precachedURL","debug","getFriendlyURL","responsePromise","then","match","cachedResponse","warn","respondWith","listenerAdded","addRoute","SUBSTRING_TO_FIND","deleteOutdatedCaches","currentPrecacheName","substringToFind","cacheNamesToDelete","filter","includes","registration","scope","cleanupOutdatedCaches","waitUntil","cachesDeleted","installListener","catch","error","activateListener","precache","precacheAndRoute","isSWEnv"],"mappings":"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"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-precaching.prod.js b/pr-preview/pr-1029/workbox-v4.3.1/workbox-precaching.prod.js deleted file mode 100644 index 6521788e3..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-precaching.prod.js +++ /dev/null @@ -1,2 +0,0 @@ -this.workbox=this.workbox||{},this.workbox.precaching=function(t,e,n,s,c){"use strict";try{self["workbox:precaching:4.3.1"]&&_()}catch(t){}const o=[],i={get:()=>o,add(t){o.push(...t)}};const a="__WB_REVISION__";function r(t){if(!t)throw new c.WorkboxError("add-to-cache-list-unexpected-type",{entry:t});if("string"==typeof t){const e=new URL(t,location);return{cacheKey:e.href,url:e.href}}const{revision:e,url:n}=t;if(!n)throw new c.WorkboxError("add-to-cache-list-unexpected-type",{entry:t});if(!e){const t=new URL(n,location);return{cacheKey:t.href,url:t.href}}const s=new URL(n,location),o=new URL(n,location);return o.searchParams.set(a,e),{cacheKey:o.href,url:s.href}}class l{constructor(t){this.t=e.cacheNames.getPrecacheName(t),this.s=new Map}addToCacheList(t){for(const e of t){const{cacheKey:t,url:n}=r(e);if(this.s.has(n)&&this.s.get(n)!==t)throw new c.WorkboxError("add-to-cache-list-conflicting-entries",{firstEntry:this.s.get(n),secondEntry:t});this.s.set(n,t)}}async install({event:t,plugins:e}={}){const n=[],s=[],c=await caches.open(this.t),o=await c.keys(),i=new Set(o.map(t=>t.url));for(const t of this.s.values())i.has(t)?s.push(t):n.push(t);const a=n.map(n=>this.o({event:t,plugins:e,url:n}));return await Promise.all(a),{updatedURLs:n,notUpdatedURLs:s}}async activate(){const t=await caches.open(this.t),e=await t.keys(),n=new Set(this.s.values()),s=[];for(const c of e)n.has(c.url)||(await t.delete(c),s.push(c.url));return{deletedURLs:s}}async o({url:t,event:e,plugins:o}){const i=new Request(t,{credentials:"same-origin"});let a,r=await s.fetchWrapper.fetch({event:e,plugins:o,request:i});for(const t of o||[])"cacheWillUpdate"in t&&(a=t.cacheWillUpdate.bind(t));if(!(a?a({event:e,request:i,response:r}):r.status<400))throw new c.WorkboxError("bad-precaching-response",{url:t,status:r.status});r.redirected&&(r=await async function(t){const e=t.clone(),n="body"in e?Promise.resolve(e.body):e.blob(),s=await n;return new Response(s,{headers:e.headers,status:e.status,statusText:e.statusText})}(r)),await n.cacheWrapper.put({event:e,plugins:o,request:i,response:r,cacheName:this.t,matchOptions:{ignoreSearch:!0}})}getURLsToCacheKeys(){return this.s}getCachedURLs(){return[...this.s.keys()]}getCacheKeyForURL(t){const e=new URL(t,location);return this.s.get(e.href)}}let u;const h=()=>(u||(u=new l),u);const d=(t,e)=>{const n=h().getURLsToCacheKeys();for(const s of function*(t,{ignoreURLParametersMatching:e,directoryIndex:n,cleanURLs:s,urlManipulation:c}={}){const o=new URL(t,location);o.hash="",yield o.href;const i=function(t,e){for(const n of[...t.searchParams.keys()])e.some(t=>t.test(n))&&t.searchParams.delete(n);return t}(o,e);if(yield i.href,n&&i.pathname.endsWith("/")){const t=new URL(i);t.pathname+=n,yield t.href}if(s){const t=new URL(i);t.pathname+=".html",yield t.href}if(c){const t=c({url:o});for(const e of t)yield e.href}}(t,e)){const t=n.get(s);if(t)return t}};let w=!1;const f=t=>{w||((({ignoreURLParametersMatching:t=[/^utm_/],directoryIndex:n="index.html",cleanURLs:s=!0,urlManipulation:c=null}={})=>{const o=e.cacheNames.getPrecacheName();addEventListener("fetch",e=>{const i=d(e.request.url,{cleanURLs:s,directoryIndex:n,ignoreURLParametersMatching:t,urlManipulation:c});if(!i)return;let a=caches.open(o).then(t=>t.match(i)).then(t=>t||fetch(i));e.respondWith(a)})})(t),w=!0)},y=t=>{const e=h(),n=i.get();t.waitUntil(e.install({event:t,plugins:n}).catch(t=>{throw t}))},p=t=>{const e=h(),n=i.get();t.waitUntil(e.activate({event:t,plugins:n}))},L=t=>{h().addToCacheList(t),t.length>0&&(addEventListener("install",y),addEventListener("activate",p))};return t.addPlugins=(t=>{i.add(t)}),t.addRoute=f,t.cleanupOutdatedCaches=(()=>{addEventListener("activate",t=>{const n=e.cacheNames.getPrecacheName();t.waitUntil((async(t,e="-precache-")=>{const n=(await caches.keys()).filter(n=>n.includes(e)&&n.includes(self.registration.scope)&&n!==t);return await Promise.all(n.map(t=>caches.delete(t))),n})(n).then(t=>{}))})}),t.getCacheKeyForURL=(t=>{return h().getCacheKeyForURL(t)}),t.precache=L,t.precacheAndRoute=((t,e)=>{L(t),f(e)}),t.PrecacheController=l,t}({},workbox.core._private,workbox.core._private,workbox.core._private,workbox.core._private); -//# sourceMappingURL=workbox-precaching.prod.js.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-precaching.prod.js.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-precaching.prod.js.map deleted file mode 100644 index a67bd4a93..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-precaching.prod.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-precaching.prod.js","sources":["../_version.mjs","../utils/precachePlugins.mjs","../utils/createCacheKey.mjs","../PrecacheController.mjs","../utils/cleanRedirect.mjs","../utils/getOrCreatePrecacheController.mjs","../utils/getCacheKeyForURL.mjs","../utils/generateURLVariations.mjs","../utils/removeIgnoredSearchParams.mjs","../addRoute.mjs","../utils/addFetchListener.mjs","../precache.mjs","../addPlugins.mjs","../cleanupOutdatedCaches.mjs","../utils/deleteOutdatedCaches.mjs","../getCacheKeyForURL.mjs","../precacheAndRoute.mjs"],"sourcesContent":["try{self['workbox:precaching:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\nconst plugins = [];\n\nexport const precachePlugins = {\n /*\n * @return {Array}\n * @private\n */\n get() {\n return plugins;\n },\n\n /*\n * @param {Array} newPlugins\n * @private\n */\n add(newPlugins) {\n plugins.push(...newPlugins);\n },\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\n\nimport '../_version.mjs';\n\n// Name of the search parameter used to store revision info.\nconst REVISION_SEARCH_PARAM = '__WB_REVISION__';\n\n/**\n * Converts a manifest entry into a versioned URL suitable for precaching.\n *\n * @param {Object} entry\n * @return {string} A URL with versioning info.\n *\n * @private\n * @memberof module:workbox-precaching\n */\nexport function createCacheKey(entry) {\n if (!entry) {\n throw new WorkboxError('add-to-cache-list-unexpected-type', {entry});\n }\n\n // If a precache manifest entry is a string, it's assumed to be a versioned\n // URL, like '/app.abcd1234.js'. Return as-is.\n if (typeof entry === 'string') {\n const urlObject = new URL(entry, location);\n return {\n cacheKey: urlObject.href,\n url: urlObject.href,\n };\n }\n\n const {revision, url} = entry;\n if (!url) {\n throw new WorkboxError('add-to-cache-list-unexpected-type', {entry});\n }\n\n // If there's just a URL and no revision, then it's also assumed to be a\n // versioned URL.\n if (!revision) {\n const urlObject = new URL(url, location);\n return {\n cacheKey: urlObject.href,\n url: urlObject.href,\n };\n }\n\n // Otherwise, construct a properly versioned URL using the custom Workbox\n // search parameter along with the revision info.\n const originalURL = new URL(url, location);\n const cacheKeyURL = new URL(url, location);\n cacheKeyURL.searchParams.set(REVISION_SEARCH_PARAM, revision);\n return {\n cacheKey: cacheKeyURL.href,\n url: originalURL.href,\n };\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {cacheNames} from 'workbox-core/_private/cacheNames.mjs';\nimport {cacheWrapper} from 'workbox-core/_private/cacheWrapper.mjs';\nimport {fetchWrapper} from 'workbox-core/_private/fetchWrapper.mjs';\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\n\nimport {cleanRedirect} from './utils/cleanRedirect.mjs';\nimport {createCacheKey} from './utils/createCacheKey.mjs';\nimport {printCleanupDetails} from './utils/printCleanupDetails.mjs';\nimport {printInstallDetails} from './utils/printInstallDetails.mjs';\n\nimport './_version.mjs';\n\n\n/**\n * Performs efficient precaching of assets.\n *\n * @memberof module:workbox-precaching\n */\nclass PrecacheController {\n /**\n * Create a new PrecacheController.\n *\n * @param {string} [cacheName] An optional name for the cache, to override\n * the default precache name.\n */\n constructor(cacheName) {\n this._cacheName = cacheNames.getPrecacheName(cacheName);\n this._urlsToCacheKeys = new Map();\n }\n\n /**\n * This method will add items to the precache list, removing duplicates\n * and ensuring the information is valid.\n *\n * @param {\n * Array\n * } entries Array of entries to precache.\n */\n addToCacheList(entries) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isArray(entries, {\n moduleName: 'workbox-precaching',\n className: 'PrecacheController',\n funcName: 'addToCacheList',\n paramName: 'entries',\n });\n }\n\n for (const entry of entries) {\n const {cacheKey, url} = createCacheKey(entry);\n if (this._urlsToCacheKeys.has(url) &&\n this._urlsToCacheKeys.get(url) !== cacheKey) {\n throw new WorkboxError('add-to-cache-list-conflicting-entries', {\n firstEntry: this._urlsToCacheKeys.get(url),\n secondEntry: cacheKey,\n });\n }\n this._urlsToCacheKeys.set(url, cacheKey);\n }\n }\n\n /**\n * Precaches new and updated assets. Call this method from the service worker\n * install event.\n *\n * @param {Object} options\n * @param {Event} [options.event] The install event (if needed).\n * @param {Array} [options.plugins] Plugins to be used for fetching\n * and caching during install.\n * @return {Promise}\n */\n async install({event, plugins} = {}) {\n if (process.env.NODE_ENV !== 'production') {\n if (plugins) {\n assert.isArray(plugins, {\n moduleName: 'workbox-precaching',\n className: 'PrecacheController',\n funcName: 'install',\n paramName: 'plugins',\n });\n }\n }\n\n const urlsToPrecache = [];\n const urlsAlreadyPrecached = [];\n\n const cache = await caches.open(this._cacheName);\n const alreadyCachedRequests = await cache.keys();\n const alreadyCachedURLs = new Set(alreadyCachedRequests.map(\n (request) => request.url));\n\n for (const cacheKey of this._urlsToCacheKeys.values()) {\n if (alreadyCachedURLs.has(cacheKey)) {\n urlsAlreadyPrecached.push(cacheKey);\n } else {\n urlsToPrecache.push(cacheKey);\n }\n }\n\n const precacheRequests = urlsToPrecache.map((url) => {\n return this._addURLToCache({event, plugins, url});\n });\n await Promise.all(precacheRequests);\n\n if (process.env.NODE_ENV !== 'production') {\n printInstallDetails(urlsToPrecache, urlsAlreadyPrecached);\n }\n\n return {\n updatedURLs: urlsToPrecache,\n notUpdatedURLs: urlsAlreadyPrecached,\n };\n }\n\n /**\n * Deletes assets that are no longer present in the current precache manifest.\n * Call this method from the service worker activate event.\n *\n * @return {Promise}\n */\n async activate() {\n const cache = await caches.open(this._cacheName);\n const currentlyCachedRequests = await cache.keys();\n const expectedCacheKeys = new Set(this._urlsToCacheKeys.values());\n\n const deletedURLs = [];\n for (const request of currentlyCachedRequests) {\n if (!expectedCacheKeys.has(request.url)) {\n await cache.delete(request);\n deletedURLs.push(request.url);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n printCleanupDetails(deletedURLs);\n }\n\n return {deletedURLs};\n }\n\n /**\n * Requests the entry and saves it to the cache if the response is valid.\n * By default, any response with a status code of less than 400 (including\n * opaque responses) is considered valid.\n *\n * If you need to use custom criteria to determine what's valid and what\n * isn't, then pass in an item in `options.plugins` that implements the\n * `cacheWillUpdate()` lifecycle event.\n *\n * @private\n * @param {Object} options\n * @param {string} options.url The URL to fetch and cache.\n * @param {Event} [options.event] The install event (if passed).\n * @param {Array} [options.plugins] An array of plugins to apply to\n * fetch and caching.\n */\n async _addURLToCache({url, event, plugins}) {\n const request = new Request(url, {credentials: 'same-origin'});\n let response = await fetchWrapper.fetch({\n event,\n plugins,\n request,\n });\n\n // Allow developers to override the default logic about what is and isn't\n // valid by passing in a plugin implementing cacheWillUpdate(), e.g.\n // a workbox.cacheableResponse.Plugin instance.\n let cacheWillUpdateCallback;\n for (const plugin of (plugins || [])) {\n if ('cacheWillUpdate' in plugin) {\n cacheWillUpdateCallback = plugin.cacheWillUpdate.bind(plugin);\n }\n }\n\n const isValidResponse = cacheWillUpdateCallback ?\n // Use a callback if provided. It returns a truthy value if valid.\n cacheWillUpdateCallback({event, request, response}) :\n // Otherwise, default to considering any response status under 400 valid.\n // This includes, by default, considering opaque responses valid.\n response.status < 400;\n\n // Consider this a failure, leading to the `install` handler failing, if\n // we get back an invalid response.\n if (!isValidResponse) {\n throw new WorkboxError('bad-precaching-response', {\n url,\n status: response.status,\n });\n }\n\n if (response.redirected) {\n response = await cleanRedirect(response);\n }\n\n await cacheWrapper.put({\n event,\n plugins,\n request,\n response,\n cacheName: this._cacheName,\n matchOptions: {\n ignoreSearch: true,\n },\n });\n }\n\n /**\n * Returns a mapping of a precached URL to the corresponding cache key, taking\n * into account the revision information for the URL.\n *\n * @return {Map} A URL to cache key mapping.\n */\n getURLsToCacheKeys() {\n return this._urlsToCacheKeys;\n }\n\n /**\n * Returns a list of all the URLs that have been precached by the current\n * service worker.\n *\n * @return {Array} The precached URLs.\n */\n getCachedURLs() {\n return [...this._urlsToCacheKeys.keys()];\n }\n\n /**\n * Returns the cache key used for storing a given URL. If that URL is\n * unversioned, like `/index.html', then the cache key will be the original\n * URL with a search parameter appended to it.\n *\n * @param {string} url A URL whose cache key you want to look up.\n * @return {string} The versioned URL that corresponds to a cache key\n * for the original URL, or undefined if that URL isn't precached.\n */\n getCacheKeyForURL(url) {\n const urlObject = new URL(url, location);\n return this._urlsToCacheKeys.get(urlObject.href);\n }\n}\n\nexport {PrecacheController};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n/**\n * @param {Response} response\n * @return {Response}\n *\n * @private\n * @memberof module:workbox-precaching\n */\nexport async function cleanRedirect(response) {\n const clonedResponse = response.clone();\n\n // Not all browsers support the Response.body stream, so fall back\n // to reading the entire body into memory as a blob.\n const bodyPromise = 'body' in clonedResponse ?\n Promise.resolve(clonedResponse.body) :\n clonedResponse.blob();\n\n const body = await bodyPromise;\n\n // new Response() is happy when passed either a stream or a Blob.\n return new Response(body, {\n headers: clonedResponse.headers,\n status: clonedResponse.status,\n statusText: clonedResponse.statusText,\n });\n}\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {PrecacheController} from '../PrecacheController.mjs';\nimport '../_version.mjs';\n\n\nlet precacheController;\n\n/**\n * @return {PrecacheController}\n * @private\n */\nexport const getOrCreatePrecacheController = () => {\n if (!precacheController) {\n precacheController = new PrecacheController();\n }\n return precacheController;\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {getOrCreatePrecacheController}\n from './getOrCreatePrecacheController.mjs';\nimport {generateURLVariations} from './generateURLVariations.mjs';\nimport '../_version.mjs';\n\n/**\n * This function will take the request URL and manipulate it based on the\n * configuration options.\n *\n * @param {string} url\n * @param {Object} options\n * @return {string} Returns the URL in the cache that matches the request,\n * if possible.\n *\n * @private\n */\nexport const getCacheKeyForURL = (url, options) => {\n const precacheController = getOrCreatePrecacheController();\n\n const urlsToCacheKeys = precacheController.getURLsToCacheKeys();\n for (const possibleURL of generateURLVariations(url, options)) {\n const possibleCacheKey = urlsToCacheKeys.get(possibleURL);\n if (possibleCacheKey) {\n return possibleCacheKey;\n }\n }\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {removeIgnoredSearchParams} from './removeIgnoredSearchParams.mjs';\n\nimport '../_version.mjs';\n\n/**\n * Generator function that yields possible variations on the original URL to\n * check, one at a time.\n *\n * @param {string} url\n * @param {Object} options\n *\n * @private\n * @memberof module:workbox-precaching\n */\nexport function* generateURLVariations(url, {\n ignoreURLParametersMatching,\n directoryIndex,\n cleanURLs,\n urlManipulation,\n} = {}) {\n const urlObject = new URL(url, location);\n urlObject.hash = '';\n yield urlObject.href;\n\n const urlWithoutIgnoredParams = removeIgnoredSearchParams(\n urlObject, ignoreURLParametersMatching);\n yield urlWithoutIgnoredParams.href;\n\n if (directoryIndex && urlWithoutIgnoredParams.pathname.endsWith('/')) {\n const directoryURL = new URL(urlWithoutIgnoredParams);\n directoryURL.pathname += directoryIndex;\n yield directoryURL.href;\n }\n\n if (cleanURLs) {\n const cleanURL = new URL(urlWithoutIgnoredParams);\n cleanURL.pathname += '.html';\n yield cleanURL.href;\n }\n\n if (urlManipulation) {\n const additionalURLs = urlManipulation({url: urlObject});\n for (const urlToAttempt of additionalURLs) {\n yield urlToAttempt.href;\n }\n }\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n/**\n * Removes any URL search parameters that should be ignored.\n *\n * @param {URL} urlObject The original URL.\n * @param {Array} ignoreURLParametersMatching RegExps to test against\n * each search parameter name. Matches mean that the search parameter should be\n * ignored.\n * @return {URL} The URL with any ignored search parameters removed.\n *\n * @private\n * @memberof module:workbox-precaching\n */\nexport function removeIgnoredSearchParams(urlObject,\n ignoreURLParametersMatching) {\n // Convert the iterable into an array at the start of the loop to make sure\n // deletion doesn't mess up iteration.\n for (const paramName of [...urlObject.searchParams.keys()]) {\n if (ignoreURLParametersMatching.some((regExp) => regExp.test(paramName))) {\n urlObject.searchParams.delete(paramName);\n }\n }\n\n return urlObject;\n}\n","\n/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {addFetchListener} from './utils/addFetchListener.mjs';\nimport './_version.mjs';\n\n\nlet listenerAdded = false;\n\n/**\n * Add a `fetch` listener to the service worker that will\n * respond to\n * [network requests]{@link https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers#Custom_responses_to_requests}\n * with precached assets.\n *\n * Requests for assets that aren't precached, the `FetchEvent` will not be\n * responded to, allowing the event to fall through to other `fetch` event\n * listeners.\n *\n * @param {Object} options\n * @param {string} [options.directoryIndex=index.html] The `directoryIndex` will\n * check cache entries for a URLs ending with '/' to see if there is a hit when\n * appending the `directoryIndex` value.\n * @param {Array} [options.ignoreURLParametersMatching=[/^utm_/]] An\n * array of regex's to remove search params when looking for a cache match.\n * @param {boolean} [options.cleanURLs=true] The `cleanURLs` option will\n * check the cache for the URL with a `.html` added to the end of the end.\n * @param {workbox.precaching~urlManipulation} [options.urlManipulation]\n * This is a function that should take a URL and return an array of\n * alternative URL's that should be checked for precache matches.\n *\n * @alias workbox.precaching.addRoute\n */\nexport const addRoute = (options) => {\n if (!listenerAdded) {\n addFetchListener(options);\n listenerAdded = true;\n }\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {cacheNames} from 'workbox-core/_private/cacheNames.mjs';\nimport {getFriendlyURL} from 'workbox-core/_private/getFriendlyURL.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {getCacheKeyForURL} from './getCacheKeyForURL.mjs';\nimport '../_version.mjs';\n\n\n/**\n * Adds a `fetch` listener to the service worker that will\n * respond to\n * [network requests]{@link https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers#Custom_responses_to_requests}\n * with precached assets.\n *\n * Requests for assets that aren't precached, the `FetchEvent` will not be\n * responded to, allowing the event to fall through to other `fetch` event\n * listeners.\n *\n * NOTE: when called more than once this method will replace the previously set\n * configuration options. Calling it more than once is not recommended outside\n * of tests.\n *\n * @private\n * @param {Object} options\n * @param {string} [options.directoryIndex=index.html] The `directoryIndex` will\n * check cache entries for a URLs ending with '/' to see if there is a hit when\n * appending the `directoryIndex` value.\n * @param {Array} [options.ignoreURLParametersMatching=[/^utm_/]] An\n * array of regex's to remove search params when looking for a cache match.\n * @param {boolean} [options.cleanURLs=true] The `cleanURLs` option will\n * check the cache for the URL with a `.html` added to the end of the end.\n * @param {workbox.precaching~urlManipulation} [options.urlManipulation]\n * This is a function that should take a URL and return an array of\n * alternative URL's that should be checked for precache matches.\n */\nexport const addFetchListener = ({\n ignoreURLParametersMatching = [/^utm_/],\n directoryIndex = 'index.html',\n cleanURLs = true,\n urlManipulation = null,\n} = {}) => {\n const cacheName = cacheNames.getPrecacheName();\n\n addEventListener('fetch', (event) => {\n const precachedURL = getCacheKeyForURL(event.request.url, {\n cleanURLs,\n directoryIndex,\n ignoreURLParametersMatching,\n urlManipulation,\n });\n if (!precachedURL) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Precaching did not find a match for ` +\n getFriendlyURL(event.request.url));\n }\n return;\n }\n\n let responsePromise = caches.open(cacheName).then((cache) => {\n return cache.match(precachedURL);\n }).then((cachedResponse) => {\n if (cachedResponse) {\n return cachedResponse;\n }\n\n // Fall back to the network if we don't have a cached response\n // (perhaps due to manual cache cleanup).\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`The precached response for ` +\n `${getFriendlyURL(precachedURL)} in ${cacheName} was not found. ` +\n `Falling back to the network instead.`);\n }\n\n return fetch(precachedURL);\n });\n\n if (process.env.NODE_ENV !== 'production') {\n responsePromise = responsePromise.then((response) => {\n // Workbox is going to handle the route.\n // print the routing details to the console.\n logger.groupCollapsed(`Precaching is responding to: ` +\n getFriendlyURL(event.request.url));\n logger.log(`Serving the precached url: ${precachedURL}`);\n\n logger.groupCollapsed(`View request details here.`);\n logger.log(event.request);\n logger.groupEnd();\n\n logger.groupCollapsed(`View response details here.`);\n logger.log(response);\n logger.groupEnd();\n\n logger.groupEnd();\n return response;\n });\n }\n\n event.respondWith(responsePromise);\n });\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {getOrCreatePrecacheController} from './utils/getOrCreatePrecacheController.mjs';\nimport {precachePlugins} from './utils/precachePlugins.mjs';\nimport './_version.mjs';\n\n\nconst installListener = (event) => {\n const precacheController = getOrCreatePrecacheController();\n const plugins = precachePlugins.get();\n\n event.waitUntil(\n precacheController.install({event, plugins})\n .catch((error) => {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(`Service worker installation failed. It will ` +\n `be retried automatically during the next navigation.`);\n }\n // Re-throw the error to ensure installation fails.\n throw error;\n })\n );\n};\n\nconst activateListener = (event) => {\n const precacheController = getOrCreatePrecacheController();\n const plugins = precachePlugins.get();\n\n event.waitUntil(precacheController.activate({event, plugins}));\n};\n\n/**\n * Adds items to the precache list, removing any duplicates and\n * stores the files in the\n * [\"precache cache\"]{@link module:workbox-core.cacheNames} when the service\n * worker installs.\n *\n * This method can be called multiple times.\n *\n * Please note: This method **will not** serve any of the cached files for you.\n * It only precaches files. To respond to a network request you call\n * [addRoute()]{@link module:workbox-precaching.addRoute}.\n *\n * If you have a single array of files to precache, you can just call\n * [precacheAndRoute()]{@link module:workbox-precaching.precacheAndRoute}.\n *\n * @param {Array} entries Array of entries to precache.\n *\n * @alias workbox.precaching.precache\n */\nexport const precache = (entries) => {\n const precacheController = getOrCreatePrecacheController();\n precacheController.addToCacheList(entries);\n\n if (entries.length > 0) {\n // NOTE: these listeners will only be added once (even if the `precache()`\n // method is called multiple times) because event listeners are implemented\n // as a set, where each listener must be unique.\n addEventListener('install', installListener);\n addEventListener('activate', activateListener);\n }\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {precachePlugins} from './utils/precachePlugins.mjs';\nimport './_version.mjs';\n\n\n/**\n * Adds plugins to precaching.\n *\n * @param {Array} newPlugins\n *\n * @alias workbox.precaching.addPlugins\n */\nconst addPlugins = (newPlugins) => {\n precachePlugins.add(newPlugins);\n};\n\nexport {addPlugins};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {cacheNames} from 'workbox-core/_private/cacheNames.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {deleteOutdatedCaches} from './utils/deleteOutdatedCaches.mjs';\nimport './_version.mjs';\n\n\n/**\n * Adds an `activate` event listener which will clean up incompatible\n * precaches that were created by older versions of Workbox.\n *\n * @alias workbox.precaching.cleanupOutdatedCaches\n */\nexport const cleanupOutdatedCaches = () => {\n addEventListener('activate', (event) => {\n const cacheName = cacheNames.getPrecacheName();\n\n event.waitUntil(deleteOutdatedCaches(cacheName).then((cachesDeleted) => {\n if (process.env.NODE_ENV !== 'production') {\n if (cachesDeleted.length > 0) {\n logger.log(`The following out-of-date precaches were cleaned up ` +\n `automatically:`, cachesDeleted);\n }\n }\n }));\n });\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\nconst SUBSTRING_TO_FIND = '-precache-';\n\n/**\n * Cleans up incompatible precaches that were created by older versions of\n * Workbox, by a service worker registered under the current scope.\n *\n * This is meant to be called as part of the `activate` event.\n *\n * This should be safe to use as long as you don't include `substringToFind`\n * (defaulting to `-precache-`) in your non-precache cache names.\n *\n * @param {string} currentPrecacheName The cache name currently in use for\n * precaching. This cache won't be deleted.\n * @param {string} [substringToFind='-precache-'] Cache names which include this\n * substring will be deleted (excluding `currentPrecacheName`).\n * @return {Array} A list of all the cache names that were deleted.\n *\n * @private\n * @memberof module:workbox-precaching\n */\nconst deleteOutdatedCaches = async (\n currentPrecacheName,\n substringToFind = SUBSTRING_TO_FIND) => {\n const cacheNames = await caches.keys();\n\n const cacheNamesToDelete = cacheNames.filter((cacheName) => {\n return cacheName.includes(substringToFind) &&\n cacheName.includes(self.registration.scope) &&\n cacheName !== currentPrecacheName;\n });\n\n await Promise.all(\n cacheNamesToDelete.map((cacheName) => caches.delete(cacheName)));\n\n return cacheNamesToDelete;\n};\n\nexport {deleteOutdatedCaches};\n\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {getOrCreatePrecacheController}\n from './utils/getOrCreatePrecacheController.mjs';\nimport './_version.mjs';\n\n\n/**\n * Takes in a URL, and returns the corresponding URL that could be used to\n * lookup the entry in the precache.\n *\n * If a relative URL is provided, the location of the service worker file will\n * be used as the base.\n *\n * For precached entries without revision information, the cache key will be the\n * same as the original URL.\n *\n * For precached entries with revision information, the cache key will be the\n * original URL with the addition of a query parameter used for keeping track of\n * the revision info.\n *\n * @param {string} url The URL whose cache key to look up.\n * @return {string} The cache key that corresponds to that URL.\n *\n * @alias workbox.precaching.getCacheKeyForURL\n */\nexport const getCacheKeyForURL = (url) => {\n const precacheController = getOrCreatePrecacheController();\n return precacheController.getCacheKeyForURL(url);\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {addRoute} from './addRoute.mjs';\nimport {precache} from './precache.mjs';\nimport './_version.mjs';\n\n\n/**\n * This method will add entries to the precache list and add a route to\n * respond to fetch events.\n *\n * This is a convenience method that will call\n * [precache()]{@link module:workbox-precaching.precache} and\n * [addRoute()]{@link module:workbox-precaching.addRoute} in a single call.\n *\n * @param {Array} entries Array of entries to precache.\n * @param {Object} options See\n * [addRoute() options]{@link module:workbox-precaching.addRoute}.\n *\n * @alias workbox.precaching.precacheAndRoute\n */\nexport const precacheAndRoute = (entries, options) => {\n precache(entries);\n addRoute(options);\n};\n"],"names":["self","_","e","plugins","precachePlugins","get","add","newPlugins","push","REVISION_SEARCH_PARAM","createCacheKey","entry","WorkboxError","urlObject","URL","location","cacheKey","href","url","revision","originalURL","cacheKeyURL","searchParams","set","PrecacheController","constructor","cacheName","_cacheName","cacheNames","getPrecacheName","_urlsToCacheKeys","Map","addToCacheList","entries","this","has","firstEntry","secondEntry","event","urlsToPrecache","urlsAlreadyPrecached","cache","caches","open","alreadyCachedRequests","keys","alreadyCachedURLs","Set","map","request","values","precacheRequests","_addURLToCache","Promise","all","updatedURLs","notUpdatedURLs","currentlyCachedRequests","expectedCacheKeys","deletedURLs","delete","Request","credentials","cacheWillUpdateCallback","response","fetchWrapper","fetch","plugin","cacheWillUpdate","bind","status","redirected","async","clonedResponse","clone","bodyPromise","resolve","body","blob","Response","headers","statusText","cleanRedirect","cacheWrapper","put","matchOptions","ignoreSearch","getURLsToCacheKeys","getCachedURLs","getCacheKeyForURL","precacheController","getOrCreatePrecacheController","options","urlsToCacheKeys","possibleURL","ignoreURLParametersMatching","directoryIndex","cleanURLs","urlManipulation","hash","urlWithoutIgnoredParams","paramName","some","regExp","test","removeIgnoredSearchParams","pathname","endsWith","directoryURL","cleanURL","additionalURLs","urlToAttempt","generateURLVariations","possibleCacheKey","listenerAdded","addRoute","addEventListener","precachedURL","responsePromise","then","match","cachedResponse","respondWith","addFetchListener","installListener","waitUntil","install","catch","error","activateListener","activate","precache","length","currentPrecacheName","substringToFind","cacheNamesToDelete","filter","includes","registration","scope","deleteOutdatedCaches","cachesDeleted"],"mappings":"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"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-range-requests.dev.js b/pr-preview/pr-1029/workbox-v4.3.1/workbox-range-requests.dev.js deleted file mode 100644 index 2c0609dcb..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-range-requests.dev.js +++ /dev/null @@ -1,268 +0,0 @@ -this.workbox = this.workbox || {}; -this.workbox.rangeRequests = (function (exports, WorkboxError_mjs, assert_mjs, logger_mjs) { - 'use strict'; - - try { - self['workbox:range-requests:4.3.1'] && _(); - } catch (e) {} // eslint-disable-line - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * @param {Blob} blob A source blob. - * @param {number|null} start The offset to use as the start of the - * slice. - * @param {number|null} end The offset to use as the end of the slice. - * @return {Object} An object with `start` and `end` properties, reflecting - * the effective boundaries to use given the size of the blob. - * - * @private - */ - - function calculateEffectiveBoundaries(blob, start, end) { - { - assert_mjs.assert.isInstance(blob, Blob, { - moduleName: 'workbox-range-requests', - funcName: 'calculateEffectiveBoundaries', - paramName: 'blob' - }); - } - - const blobSize = blob.size; - - if (end > blobSize || start < 0) { - throw new WorkboxError_mjs.WorkboxError('range-not-satisfiable', { - size: blobSize, - end, - start - }); - } - - let effectiveStart; - let effectiveEnd; - - if (start === null) { - effectiveStart = blobSize - end; - effectiveEnd = blobSize; - } else if (end === null) { - effectiveStart = start; - effectiveEnd = blobSize; - } else { - effectiveStart = start; // Range values are inclusive, so add 1 to the value. - - effectiveEnd = end + 1; - } - - return { - start: effectiveStart, - end: effectiveEnd - }; - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * @param {string} rangeHeader A Range: header value. - * @return {Object} An object with `start` and `end` properties, reflecting - * the parsed value of the Range: header. If either the `start` or `end` are - * omitted, then `null` will be returned. - * - * @private - */ - - function parseRangeHeader(rangeHeader) { - { - assert_mjs.assert.isType(rangeHeader, 'string', { - moduleName: 'workbox-range-requests', - funcName: 'parseRangeHeader', - paramName: 'rangeHeader' - }); - } - - const normalizedRangeHeader = rangeHeader.trim().toLowerCase(); - - if (!normalizedRangeHeader.startsWith('bytes=')) { - throw new WorkboxError_mjs.WorkboxError('unit-must-be-bytes', { - normalizedRangeHeader - }); - } // Specifying multiple ranges separate by commas is valid syntax, but this - // library only attempts to handle a single, contiguous sequence of bytes. - // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range#Syntax - - - if (normalizedRangeHeader.includes(',')) { - throw new WorkboxError_mjs.WorkboxError('single-range-only', { - normalizedRangeHeader - }); - } - - const rangeParts = /(\d*)-(\d*)/.exec(normalizedRangeHeader); // We need either at least one of the start or end values. - - if (rangeParts === null || !(rangeParts[1] || rangeParts[2])) { - throw new WorkboxError_mjs.WorkboxError('invalid-range-values', { - normalizedRangeHeader - }); - } - - return { - start: rangeParts[1] === '' ? null : Number(rangeParts[1]), - end: rangeParts[2] === '' ? null : Number(rangeParts[2]) - }; - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Given a `Request` and `Response` objects as input, this will return a - * promise for a new `Response`. - * - * If the original `Response` already contains partial content (i.e. it has - * a status of 206), then this assumes it already fulfills the `Range:` - * requirements, and will return it as-is. - * - * @param {Request} request A request, which should contain a Range: - * header. - * @param {Response} originalResponse A response. - * @return {Promise} Either a `206 Partial Content` response, with - * the response body set to the slice of content specified by the request's - * `Range:` header, or a `416 Range Not Satisfiable` response if the - * conditions of the `Range:` header can't be met. - * - * @memberof workbox.rangeRequests - */ - - async function createPartialResponse(request, originalResponse) { - try { - { - assert_mjs.assert.isInstance(request, Request, { - moduleName: 'workbox-range-requests', - funcName: 'createPartialResponse', - paramName: 'request' - }); - assert_mjs.assert.isInstance(originalResponse, Response, { - moduleName: 'workbox-range-requests', - funcName: 'createPartialResponse', - paramName: 'originalResponse' - }); - } - - if (originalResponse.status === 206) { - // If we already have a 206, then just pass it through as-is; - // see https://github.com/GoogleChrome/workbox/issues/1720 - return originalResponse; - } - - const rangeHeader = request.headers.get('range'); - - if (!rangeHeader) { - throw new WorkboxError_mjs.WorkboxError('no-range-header'); - } - - const boundaries = parseRangeHeader(rangeHeader); - const originalBlob = await originalResponse.blob(); - const effectiveBoundaries = calculateEffectiveBoundaries(originalBlob, boundaries.start, boundaries.end); - const slicedBlob = originalBlob.slice(effectiveBoundaries.start, effectiveBoundaries.end); - const slicedBlobSize = slicedBlob.size; - const slicedResponse = new Response(slicedBlob, { - // Status code 206 is for a Partial Content response. - // See https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/206 - status: 206, - statusText: 'Partial Content', - headers: originalResponse.headers - }); - slicedResponse.headers.set('Content-Length', slicedBlobSize); - slicedResponse.headers.set('Content-Range', `bytes ${effectiveBoundaries.start}-${effectiveBoundaries.end - 1}/` + originalBlob.size); - return slicedResponse; - } catch (error) { - { - logger_mjs.logger.warn(`Unable to construct a partial response; returning a ` + `416 Range Not Satisfiable response instead.`); - logger_mjs.logger.groupCollapsed(`View details here.`); - logger_mjs.logger.log(error); - logger_mjs.logger.log(request); - logger_mjs.logger.log(originalResponse); - logger_mjs.logger.groupEnd(); - } - - return new Response('', { - status: 416, - statusText: 'Range Not Satisfiable' - }); - } - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * The range request plugin makes it easy for a request with a 'Range' header to - * be fulfilled by a cached response. - * - * It does this by intercepting the `cachedResponseWillBeUsed` plugin callback - * and returning the appropriate subset of the cached response body. - * - * @memberof workbox.rangeRequests - */ - - class Plugin { - /** - * @param {Object} options - * @param {Request} options.request The original request, which may or may not - * contain a Range: header. - * @param {Response} options.cachedResponse The complete cached response. - * @return {Promise} If request contains a 'Range' header, then a - * new response with status 206 whose body is a subset of `cachedResponse` is - * returned. Otherwise, `cachedResponse` is returned as-is. - * - * @private - */ - async cachedResponseWillBeUsed({ - request, - cachedResponse - }) { - // Only return a sliced response if there's something valid in the cache, - // and there's a Range: header in the request. - if (cachedResponse && request.headers.has('range')) { - return await createPartialResponse(request, cachedResponse); - } // If there was no Range: header, or if cachedResponse wasn't valid, just - // pass it through as-is. - - - return cachedResponse; - } - - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - - exports.createPartialResponse = createPartialResponse; - exports.Plugin = Plugin; - - return exports; - -}({}, workbox.core._private, workbox.core._private, workbox.core._private)); -//# sourceMappingURL=workbox-range-requests.dev.js.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-range-requests.dev.js.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-range-requests.dev.js.map deleted file mode 100644 index c1779fca5..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-range-requests.dev.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-range-requests.dev.js","sources":["../_version.mjs","../utils/calculateEffectiveBoundaries.mjs","../utils/parseRangeHeader.mjs","../createPartialResponse.mjs","../Plugin.mjs","../index.mjs"],"sourcesContent":["try{self['workbox:range-requests:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\nimport {assert} from 'workbox-core/_private/assert.mjs';\n\nimport '../_version.mjs';\n\n/**\n * @param {Blob} blob A source blob.\n * @param {number|null} start The offset to use as the start of the\n * slice.\n * @param {number|null} end The offset to use as the end of the slice.\n * @return {Object} An object with `start` and `end` properties, reflecting\n * the effective boundaries to use given the size of the blob.\n *\n * @private\n */\nfunction calculateEffectiveBoundaries(blob, start, end) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(blob, Blob, {\n moduleName: 'workbox-range-requests',\n funcName: 'calculateEffectiveBoundaries',\n paramName: 'blob',\n });\n }\n\n const blobSize = blob.size;\n\n if (end > blobSize || start < 0) {\n throw new WorkboxError('range-not-satisfiable', {\n size: blobSize,\n end,\n start,\n });\n }\n\n let effectiveStart;\n let effectiveEnd;\n\n if (start === null) {\n effectiveStart = blobSize - end;\n effectiveEnd = blobSize;\n } else if (end === null) {\n effectiveStart = start;\n effectiveEnd = blobSize;\n } else {\n effectiveStart = start;\n // Range values are inclusive, so add 1 to the value.\n effectiveEnd = end + 1;\n }\n\n return {\n start: effectiveStart,\n end: effectiveEnd,\n };\n}\n\nexport {calculateEffectiveBoundaries};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\nimport {assert} from 'workbox-core/_private/assert.mjs';\n\nimport '../_version.mjs';\n\n/**\n * @param {string} rangeHeader A Range: header value.\n * @return {Object} An object with `start` and `end` properties, reflecting\n * the parsed value of the Range: header. If either the `start` or `end` are\n * omitted, then `null` will be returned.\n *\n * @private\n */\nfunction parseRangeHeader(rangeHeader) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(rangeHeader, 'string', {\n moduleName: 'workbox-range-requests',\n funcName: 'parseRangeHeader',\n paramName: 'rangeHeader',\n });\n }\n\n const normalizedRangeHeader = rangeHeader.trim().toLowerCase();\n if (!normalizedRangeHeader.startsWith('bytes=')) {\n throw new WorkboxError('unit-must-be-bytes', {normalizedRangeHeader});\n }\n\n // Specifying multiple ranges separate by commas is valid syntax, but this\n // library only attempts to handle a single, contiguous sequence of bytes.\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range#Syntax\n if (normalizedRangeHeader.includes(',')) {\n throw new WorkboxError('single-range-only', {normalizedRangeHeader});\n }\n\n const rangeParts = /(\\d*)-(\\d*)/.exec(normalizedRangeHeader);\n // We need either at least one of the start or end values.\n if (rangeParts === null || !(rangeParts[1] || rangeParts[2])) {\n throw new WorkboxError('invalid-range-values', {normalizedRangeHeader});\n }\n\n return {\n start: rangeParts[1] === '' ? null : Number(rangeParts[1]),\n end: rangeParts[2] === '' ? null : Number(rangeParts[2]),\n };\n}\n\nexport {parseRangeHeader};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\n\nimport {calculateEffectiveBoundaries} from\n './utils/calculateEffectiveBoundaries.mjs';\nimport {parseRangeHeader} from './utils/parseRangeHeader.mjs';\n\nimport './_version.mjs';\n\n/**\n * Given a `Request` and `Response` objects as input, this will return a\n * promise for a new `Response`.\n *\n * If the original `Response` already contains partial content (i.e. it has\n * a status of 206), then this assumes it already fulfills the `Range:`\n * requirements, and will return it as-is.\n *\n * @param {Request} request A request, which should contain a Range:\n * header.\n * @param {Response} originalResponse A response.\n * @return {Promise} Either a `206 Partial Content` response, with\n * the response body set to the slice of content specified by the request's\n * `Range:` header, or a `416 Range Not Satisfiable` response if the\n * conditions of the `Range:` header can't be met.\n *\n * @memberof workbox.rangeRequests\n */\nasync function createPartialResponse(request, originalResponse) {\n try {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-range-requests',\n funcName: 'createPartialResponse',\n paramName: 'request',\n });\n\n assert.isInstance(originalResponse, Response, {\n moduleName: 'workbox-range-requests',\n funcName: 'createPartialResponse',\n paramName: 'originalResponse',\n });\n }\n\n if (originalResponse.status === 206) {\n // If we already have a 206, then just pass it through as-is;\n // see https://github.com/GoogleChrome/workbox/issues/1720\n return originalResponse;\n }\n\n const rangeHeader = request.headers.get('range');\n if (!rangeHeader) {\n throw new WorkboxError('no-range-header');\n }\n\n const boundaries = parseRangeHeader(rangeHeader);\n const originalBlob = await originalResponse.blob();\n\n const effectiveBoundaries = calculateEffectiveBoundaries(\n originalBlob, boundaries.start, boundaries.end);\n\n const slicedBlob = originalBlob.slice(effectiveBoundaries.start,\n effectiveBoundaries.end);\n const slicedBlobSize = slicedBlob.size;\n\n const slicedResponse = new Response(slicedBlob, {\n // Status code 206 is for a Partial Content response.\n // See https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/206\n status: 206,\n statusText: 'Partial Content',\n headers: originalResponse.headers,\n });\n\n slicedResponse.headers.set('Content-Length', slicedBlobSize);\n slicedResponse.headers.set('Content-Range',\n `bytes ${effectiveBoundaries.start}-${effectiveBoundaries.end - 1}/` +\n originalBlob.size);\n\n return slicedResponse;\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`Unable to construct a partial response; returning a ` +\n `416 Range Not Satisfiable response instead.`);\n logger.groupCollapsed(`View details here.`);\n logger.log(error);\n logger.log(request);\n logger.log(originalResponse);\n logger.groupEnd();\n }\n\n return new Response('', {\n status: 416,\n statusText: 'Range Not Satisfiable',\n });\n }\n}\n\nexport {createPartialResponse};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {createPartialResponse} from './createPartialResponse.mjs';\n\nimport './_version.mjs';\n\n/**\n * The range request plugin makes it easy for a request with a 'Range' header to\n * be fulfilled by a cached response.\n *\n * It does this by intercepting the `cachedResponseWillBeUsed` plugin callback\n * and returning the appropriate subset of the cached response body.\n *\n * @memberof workbox.rangeRequests\n */\nclass Plugin {\n /**\n * @param {Object} options\n * @param {Request} options.request The original request, which may or may not\n * contain a Range: header.\n * @param {Response} options.cachedResponse The complete cached response.\n * @return {Promise} If request contains a 'Range' header, then a\n * new response with status 206 whose body is a subset of `cachedResponse` is\n * returned. Otherwise, `cachedResponse` is returned as-is.\n *\n * @private\n */\n async cachedResponseWillBeUsed({request, cachedResponse}) {\n // Only return a sliced response if there's something valid in the cache,\n // and there's a Range: header in the request.\n if (cachedResponse && request.headers.has('range')) {\n return await createPartialResponse(request, cachedResponse);\n }\n\n // If there was no Range: header, or if cachedResponse wasn't valid, just\n // pass it through as-is.\n return cachedResponse;\n }\n}\n\nexport {Plugin};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {createPartialResponse} from './createPartialResponse.mjs';\nimport {Plugin} from './Plugin.mjs';\nimport './_version.mjs';\n\n\n/**\n * @namespace workbox.rangeRequests\n */\n\nexport {\n createPartialResponse,\n Plugin,\n};\n"],"names":["self","_","e","calculateEffectiveBoundaries","blob","start","end","assert","isInstance","Blob","moduleName","funcName","paramName","blobSize","size","WorkboxError","effectiveStart","effectiveEnd","parseRangeHeader","rangeHeader","isType","normalizedRangeHeader","trim","toLowerCase","startsWith","includes","rangeParts","exec","Number","createPartialResponse","request","originalResponse","Request","Response","status","headers","get","boundaries","originalBlob","effectiveBoundaries","slicedBlob","slice","slicedBlobSize","slicedResponse","statusText","set","error","logger","warn","groupCollapsed","log","groupEnd","Plugin","cachedResponseWillBeUsed","cachedResponse","has"],"mappings":"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"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-range-requests.prod.js b/pr-preview/pr-1029/workbox-v4.3.1/workbox-range-requests.prod.js deleted file mode 100644 index e60370cb9..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-range-requests.prod.js +++ /dev/null @@ -1,2 +0,0 @@ -this.workbox=this.workbox||{},this.workbox.rangeRequests=function(e,n){"use strict";try{self["workbox:range-requests:4.3.1"]&&_()}catch(e){}async function t(e,t){try{if(206===t.status)return t;const s=e.headers.get("range");if(!s)throw new n.WorkboxError("no-range-header");const a=function(e){const t=e.trim().toLowerCase();if(!t.startsWith("bytes="))throw new n.WorkboxError("unit-must-be-bytes",{normalizedRangeHeader:t});if(t.includes(","))throw new n.WorkboxError("single-range-only",{normalizedRangeHeader:t});const s=/(\d*)-(\d*)/.exec(t);if(null===s||!s[1]&&!s[2])throw new n.WorkboxError("invalid-range-values",{normalizedRangeHeader:t});return{start:""===s[1]?null:Number(s[1]),end:""===s[2]?null:Number(s[2])}}(s),r=await t.blob(),i=function(e,t,s){const a=e.size;if(s>a||t<0)throw new n.WorkboxError("range-not-satisfiable",{size:a,end:s,start:t});let r,i;return null===t?(r=a-s,i=a):null===s?(r=t,i=a):(r=t,i=s+1),{start:r,end:i}}(r,a.start,a.end),o=r.slice(i.start,i.end),u=o.size,l=new Response(o,{status:206,statusText:"Partial Content",headers:t.headers});return l.headers.set("Content-Length",u),l.headers.set("Content-Range",`bytes ${i.start}-${i.end-1}/`+r.size),l}catch(e){return new Response("",{status:416,statusText:"Range Not Satisfiable"})}}return e.createPartialResponse=t,e.Plugin=class{async cachedResponseWillBeUsed({request:e,cachedResponse:n}){return n&&e.headers.has("range")?await t(e,n):n}},e}({},workbox.core._private); -//# sourceMappingURL=workbox-range-requests.prod.js.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-range-requests.prod.js.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-range-requests.prod.js.map deleted file mode 100644 index 89bef8272..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-range-requests.prod.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-range-requests.prod.js","sources":["../_version.mjs","../createPartialResponse.mjs","../utils/parseRangeHeader.mjs","../utils/calculateEffectiveBoundaries.mjs","../Plugin.mjs"],"sourcesContent":["try{self['workbox:range-requests:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\n\nimport {calculateEffectiveBoundaries} from\n './utils/calculateEffectiveBoundaries.mjs';\nimport {parseRangeHeader} from './utils/parseRangeHeader.mjs';\n\nimport './_version.mjs';\n\n/**\n * Given a `Request` and `Response` objects as input, this will return a\n * promise for a new `Response`.\n *\n * If the original `Response` already contains partial content (i.e. it has\n * a status of 206), then this assumes it already fulfills the `Range:`\n * requirements, and will return it as-is.\n *\n * @param {Request} request A request, which should contain a Range:\n * header.\n * @param {Response} originalResponse A response.\n * @return {Promise} Either a `206 Partial Content` response, with\n * the response body set to the slice of content specified by the request's\n * `Range:` header, or a `416 Range Not Satisfiable` response if the\n * conditions of the `Range:` header can't be met.\n *\n * @memberof workbox.rangeRequests\n */\nasync function createPartialResponse(request, originalResponse) {\n try {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-range-requests',\n funcName: 'createPartialResponse',\n paramName: 'request',\n });\n\n assert.isInstance(originalResponse, Response, {\n moduleName: 'workbox-range-requests',\n funcName: 'createPartialResponse',\n paramName: 'originalResponse',\n });\n }\n\n if (originalResponse.status === 206) {\n // If we already have a 206, then just pass it through as-is;\n // see https://github.com/GoogleChrome/workbox/issues/1720\n return originalResponse;\n }\n\n const rangeHeader = request.headers.get('range');\n if (!rangeHeader) {\n throw new WorkboxError('no-range-header');\n }\n\n const boundaries = parseRangeHeader(rangeHeader);\n const originalBlob = await originalResponse.blob();\n\n const effectiveBoundaries = calculateEffectiveBoundaries(\n originalBlob, boundaries.start, boundaries.end);\n\n const slicedBlob = originalBlob.slice(effectiveBoundaries.start,\n effectiveBoundaries.end);\n const slicedBlobSize = slicedBlob.size;\n\n const slicedResponse = new Response(slicedBlob, {\n // Status code 206 is for a Partial Content response.\n // See https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/206\n status: 206,\n statusText: 'Partial Content',\n headers: originalResponse.headers,\n });\n\n slicedResponse.headers.set('Content-Length', slicedBlobSize);\n slicedResponse.headers.set('Content-Range',\n `bytes ${effectiveBoundaries.start}-${effectiveBoundaries.end - 1}/` +\n originalBlob.size);\n\n return slicedResponse;\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`Unable to construct a partial response; returning a ` +\n `416 Range Not Satisfiable response instead.`);\n logger.groupCollapsed(`View details here.`);\n logger.log(error);\n logger.log(request);\n logger.log(originalResponse);\n logger.groupEnd();\n }\n\n return new Response('', {\n status: 416,\n statusText: 'Range Not Satisfiable',\n });\n }\n}\n\nexport {createPartialResponse};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\nimport {assert} from 'workbox-core/_private/assert.mjs';\n\nimport '../_version.mjs';\n\n/**\n * @param {string} rangeHeader A Range: header value.\n * @return {Object} An object with `start` and `end` properties, reflecting\n * the parsed value of the Range: header. If either the `start` or `end` are\n * omitted, then `null` will be returned.\n *\n * @private\n */\nfunction parseRangeHeader(rangeHeader) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(rangeHeader, 'string', {\n moduleName: 'workbox-range-requests',\n funcName: 'parseRangeHeader',\n paramName: 'rangeHeader',\n });\n }\n\n const normalizedRangeHeader = rangeHeader.trim().toLowerCase();\n if (!normalizedRangeHeader.startsWith('bytes=')) {\n throw new WorkboxError('unit-must-be-bytes', {normalizedRangeHeader});\n }\n\n // Specifying multiple ranges separate by commas is valid syntax, but this\n // library only attempts to handle a single, contiguous sequence of bytes.\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range#Syntax\n if (normalizedRangeHeader.includes(',')) {\n throw new WorkboxError('single-range-only', {normalizedRangeHeader});\n }\n\n const rangeParts = /(\\d*)-(\\d*)/.exec(normalizedRangeHeader);\n // We need either at least one of the start or end values.\n if (rangeParts === null || !(rangeParts[1] || rangeParts[2])) {\n throw new WorkboxError('invalid-range-values', {normalizedRangeHeader});\n }\n\n return {\n start: rangeParts[1] === '' ? null : Number(rangeParts[1]),\n end: rangeParts[2] === '' ? null : Number(rangeParts[2]),\n };\n}\n\nexport {parseRangeHeader};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\nimport {assert} from 'workbox-core/_private/assert.mjs';\n\nimport '../_version.mjs';\n\n/**\n * @param {Blob} blob A source blob.\n * @param {number|null} start The offset to use as the start of the\n * slice.\n * @param {number|null} end The offset to use as the end of the slice.\n * @return {Object} An object with `start` and `end` properties, reflecting\n * the effective boundaries to use given the size of the blob.\n *\n * @private\n */\nfunction calculateEffectiveBoundaries(blob, start, end) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(blob, Blob, {\n moduleName: 'workbox-range-requests',\n funcName: 'calculateEffectiveBoundaries',\n paramName: 'blob',\n });\n }\n\n const blobSize = blob.size;\n\n if (end > blobSize || start < 0) {\n throw new WorkboxError('range-not-satisfiable', {\n size: blobSize,\n end,\n start,\n });\n }\n\n let effectiveStart;\n let effectiveEnd;\n\n if (start === null) {\n effectiveStart = blobSize - end;\n effectiveEnd = blobSize;\n } else if (end === null) {\n effectiveStart = start;\n effectiveEnd = blobSize;\n } else {\n effectiveStart = start;\n // Range values are inclusive, so add 1 to the value.\n effectiveEnd = end + 1;\n }\n\n return {\n start: effectiveStart,\n end: effectiveEnd,\n };\n}\n\nexport {calculateEffectiveBoundaries};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {createPartialResponse} from './createPartialResponse.mjs';\n\nimport './_version.mjs';\n\n/**\n * The range request plugin makes it easy for a request with a 'Range' header to\n * be fulfilled by a cached response.\n *\n * It does this by intercepting the `cachedResponseWillBeUsed` plugin callback\n * and returning the appropriate subset of the cached response body.\n *\n * @memberof workbox.rangeRequests\n */\nclass Plugin {\n /**\n * @param {Object} options\n * @param {Request} options.request The original request, which may or may not\n * contain a Range: header.\n * @param {Response} options.cachedResponse The complete cached response.\n * @return {Promise} If request contains a 'Range' header, then a\n * new response with status 206 whose body is a subset of `cachedResponse` is\n * returned. Otherwise, `cachedResponse` is returned as-is.\n *\n * @private\n */\n async cachedResponseWillBeUsed({request, cachedResponse}) {\n // Only return a sliced response if there's something valid in the cache,\n // and there's a Range: header in the request.\n if (cachedResponse && request.headers.has('range')) {\n return await createPartialResponse(request, cachedResponse);\n }\n\n // If there was no Range: header, or if cachedResponse wasn't valid, just\n // pass it through as-is.\n return cachedResponse;\n }\n}\n\nexport {Plugin};\n"],"names":["self","_","e","async","createPartialResponse","request","originalResponse","status","rangeHeader","headers","get","WorkboxError","boundaries","normalizedRangeHeader","trim","toLowerCase","startsWith","includes","rangeParts","exec","start","Number","end","parseRangeHeader","originalBlob","blob","effectiveBoundaries","blobSize","size","effectiveStart","effectiveEnd","calculateEffectiveBoundaries","slicedBlob","slice","slicedBlobSize","slicedResponse","Response","statusText","set","error","cachedResponse","has"],"mappings":"oFAAA,IAAIA,KAAK,iCAAiCC,IAAI,MAAMC,ICoCpDC,eAAeC,EAAsBC,EAASC,UAgBV,MAA5BA,EAAiBC,cAGZD,QAGHE,EAAcH,EAAQI,QAAQC,IAAI,aACnCF,QACG,IAAIG,eAAa,yBAGnBC,EC1CV,SAA0BJ,SASlBK,EAAwBL,EAAYM,OAAOC,kBAC5CF,EAAsBG,WAAW,gBAC9B,IAAIL,eAAa,qBAAsB,CAACE,sBAAAA,OAM5CA,EAAsBI,SAAS,WAC3B,IAAIN,eAAa,oBAAqB,CAACE,sBAAAA,UAGzCK,EAAa,cAAcC,KAAKN,MAEnB,OAAfK,IAAyBA,EAAW,KAAMA,EAAW,SACjD,IAAIP,eAAa,uBAAwB,CAACE,sBAAAA,UAG3C,CACLO,MAAyB,KAAlBF,EAAW,GAAY,KAAOG,OAAOH,EAAW,IACvDI,IAAuB,KAAlBJ,EAAW,GAAY,KAAOG,OAAOH,EAAW,KDalCK,CAAiBf,GAC9BgB,QAAqBlB,EAAiBmB,OAEtCC,EE3CV,SAAsCD,EAAML,EAAOE,SAS3CK,EAAWF,EAAKG,QAElBN,EAAMK,GAAYP,EAAQ,QACtB,IAAIT,eAAa,wBAAyB,CAC9CiB,KAAMD,EACNL,IAAAA,EACAF,MAAAA,QAIAS,EACAC,SAEU,OAAVV,GACFS,EAAiBF,EAAWL,EAC5BQ,EAAeH,GACE,OAARL,GACTO,EAAiBT,EACjBU,EAAeH,IAEfE,EAAiBT,EAEjBU,EAAeR,EAAM,GAGhB,CACLF,MAAOS,EACPP,IAAKQ,GFOuBC,CACxBP,EAAcZ,EAAWQ,MAAOR,EAAWU,KAEzCU,EAAaR,EAAaS,MAAMP,EAAoBN,MACtDM,EAAoBJ,KAClBY,EAAiBF,EAAWJ,KAE5BO,EAAiB,IAAIC,SAASJ,EAAY,CAG9CzB,OAAQ,IACR8B,WAAY,kBACZ5B,QAASH,EAAiBG,iBAG5B0B,EAAe1B,QAAQ6B,IAAI,iBAAkBJ,GAC7CC,EAAe1B,QAAQ6B,IAAI,yBACdZ,EAAoBN,SAASM,EAAoBJ,IAAM,KAClEE,EAAaI,MAERO,EACP,MAAOI,UAWA,IAAIH,SAAS,GAAI,CACtB7B,OAAQ,IACR8B,WAAY,qEG/ElB,sCAYiChC,QAACA,EAADmC,eAAUA,WAGnCA,GAAkBnC,EAAQI,QAAQgC,IAAI,eAC3BrC,EAAsBC,EAASmC,GAKvCA"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-routing.dev.js b/pr-preview/pr-1029/workbox-v4.3.1/workbox-routing.dev.js deleted file mode 100644 index b3acf069a..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-routing.dev.js +++ /dev/null @@ -1,1020 +0,0 @@ -this.workbox = this.workbox || {}; -this.workbox.routing = (function (exports, assert_mjs, logger_mjs, cacheNames_mjs, WorkboxError_mjs, getFriendlyURL_mjs) { - 'use strict'; - - try { - self['workbox:routing:4.3.1'] && _(); - } catch (e) {} // eslint-disable-line - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * The default HTTP method, 'GET', used when there's no specific method - * configured for a route. - * - * @type {string} - * - * @private - */ - - const defaultMethod = 'GET'; - /** - * The list of valid HTTP methods associated with requests that could be routed. - * - * @type {Array} - * - * @private - */ - - const validMethods = ['DELETE', 'GET', 'HEAD', 'PATCH', 'POST', 'PUT']; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * @param {function()|Object} handler Either a function, or an object with a - * 'handle' method. - * @return {Object} An object with a handle method. - * - * @private - */ - - const normalizeHandler = handler => { - if (handler && typeof handler === 'object') { - { - assert_mjs.assert.hasMethod(handler, 'handle', { - moduleName: 'workbox-routing', - className: 'Route', - funcName: 'constructor', - paramName: 'handler' - }); - } - - return handler; - } else { - { - assert_mjs.assert.isType(handler, 'function', { - moduleName: 'workbox-routing', - className: 'Route', - funcName: 'constructor', - paramName: 'handler' - }); - } - - return { - handle: handler - }; - } - }; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * A `Route` consists of a pair of callback functions, "match" and "handler". - * The "match" callback determine if a route should be used to "handle" a - * request by returning a non-falsy value if it can. The "handler" callback - * is called when there is a match and should return a Promise that resolves - * to a `Response`. - * - * @memberof workbox.routing - */ - - class Route { - /** - * Constructor for Route class. - * - * @param {workbox.routing.Route~matchCallback} match - * A callback function that determines whether the route matches a given - * `fetch` event by returning a non-falsy value. - * @param {workbox.routing.Route~handlerCallback} handler A callback - * function that returns a Promise resolving to a Response. - * @param {string} [method='GET'] The HTTP method to match the Route - * against. - */ - constructor(match, handler, method) { - { - assert_mjs.assert.isType(match, 'function', { - moduleName: 'workbox-routing', - className: 'Route', - funcName: 'constructor', - paramName: 'match' - }); - - if (method) { - assert_mjs.assert.isOneOf(method, validMethods, { - paramName: 'method' - }); - } - } // These values are referenced directly by Router so cannot be - // altered by minifification. - - - this.handler = normalizeHandler(handler); - this.match = match; - this.method = method || defaultMethod; - } - - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * NavigationRoute makes it easy to create a [Route]{@link - * workbox.routing.Route} that matches for browser - * [navigation requests]{@link https://developers.google.com/web/fundamentals/primers/service-workers/high-performance-loading#first_what_are_navigation_requests}. - * - * It will only match incoming Requests whose - * [`mode`]{@link https://fetch.spec.whatwg.org/#concept-request-mode} - * is set to `navigate`. - * - * You can optionally only apply this route to a subset of navigation requests - * by using one or both of the `blacklist` and `whitelist` parameters. - * - * @memberof workbox.routing - * @extends workbox.routing.Route - */ - - class NavigationRoute extends Route { - /** - * If both `blacklist` and `whiltelist` are provided, the `blacklist` will - * take precedence and the request will not match this route. - * - * The regular expressions in `whitelist` and `blacklist` - * are matched against the concatenated - * [`pathname`]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/pathname} - * and [`search`]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/search} - * portions of the requested URL. - * - * @param {workbox.routing.Route~handlerCallback} handler A callback - * function that returns a Promise resulting in a Response. - * @param {Object} options - * @param {Array} [options.blacklist] If any of these patterns match, - * the route will not handle the request (even if a whitelist RegExp matches). - * @param {Array} [options.whitelist=[/./]] If any of these patterns - * match the URL's pathname and search parameter, the route will handle the - * request (assuming the blacklist doesn't match). - */ - constructor(handler, { - whitelist = [/./], - blacklist = [] - } = {}) { - { - assert_mjs.assert.isArrayOfClass(whitelist, RegExp, { - moduleName: 'workbox-routing', - className: 'NavigationRoute', - funcName: 'constructor', - paramName: 'options.whitelist' - }); - assert_mjs.assert.isArrayOfClass(blacklist, RegExp, { - moduleName: 'workbox-routing', - className: 'NavigationRoute', - funcName: 'constructor', - paramName: 'options.blacklist' - }); - } - - super(options => this._match(options), handler); - this._whitelist = whitelist; - this._blacklist = blacklist; - } - /** - * Routes match handler. - * - * @param {Object} options - * @param {URL} options.url - * @param {Request} options.request - * @return {boolean} - * - * @private - */ - - - _match({ - url, - request - }) { - if (request.mode !== 'navigate') { - return false; - } - - const pathnameAndSearch = url.pathname + url.search; - - for (const regExp of this._blacklist) { - if (regExp.test(pathnameAndSearch)) { - { - logger_mjs.logger.log(`The navigation route is not being used, since the ` + `URL matches this blacklist pattern: ${regExp}`); - } - - return false; - } - } - - if (this._whitelist.some(regExp => regExp.test(pathnameAndSearch))) { - { - logger_mjs.logger.debug(`The navigation route is being used.`); - } - - return true; - } - - { - logger_mjs.logger.log(`The navigation route is not being used, since the URL ` + `being navigated to doesn't match the whitelist.`); - } - - return false; - } - - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * RegExpRoute makes it easy to create a regular expression based - * [Route]{@link workbox.routing.Route}. - * - * For same-origin requests the RegExp only needs to match part of the URL. For - * requests against third-party servers, you must define a RegExp that matches - * the start of the URL. - * - * [See the module docs for info.]{@link https://developers.google.com/web/tools/workbox/modules/workbox-routing} - * - * @memberof workbox.routing - * @extends workbox.routing.Route - */ - - class RegExpRoute extends Route { - /** - * If the regulard expression contains - * [capture groups]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#grouping-back-references}, - * th ecaptured values will be passed to the - * [handler's]{@link workbox.routing.Route~handlerCallback} `params` - * argument. - * - * @param {RegExp} regExp The regular expression to match against URLs. - * @param {workbox.routing.Route~handlerCallback} handler A callback - * function that returns a Promise resulting in a Response. - * @param {string} [method='GET'] The HTTP method to match the Route - * against. - */ - constructor(regExp, handler, method) { - { - assert_mjs.assert.isInstance(regExp, RegExp, { - moduleName: 'workbox-routing', - className: 'RegExpRoute', - funcName: 'constructor', - paramName: 'pattern' - }); - } - - const match = ({ - url - }) => { - const result = regExp.exec(url.href); // Return null immediately if there's no match. - - if (!result) { - return null; - } // Require that the match start at the first character in the URL string - // if it's a cross-origin request. - // See https://github.com/GoogleChrome/workbox/issues/281 for the context - // behind this behavior. - - - if (url.origin !== location.origin && result.index !== 0) { - { - logger_mjs.logger.debug(`The regular expression '${regExp}' only partially matched ` + `against the cross-origin URL '${url}'. RegExpRoute's will only ` + `handle cross-origin requests if they match the entire URL.`); - } - - return null; - } // If the route matches, but there aren't any capture groups defined, then - // this will return [], which is truthy and therefore sufficient to - // indicate a match. - // If there are capture groups, then it will return their values. - - - return result.slice(1); - }; - - super(match, handler, method); - } - - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * The Router can be used to process a FetchEvent through one or more - * [Routes]{@link workbox.routing.Route} responding with a Request if - * a matching route exists. - * - * If no route matches a given a request, the Router will use a "default" - * handler if one is defined. - * - * Should the matching Route throw an error, the Router will use a "catch" - * handler if one is defined to gracefully deal with issues and respond with a - * Request. - * - * If a request matches multiple routes, the **earliest** registered route will - * be used to respond to the request. - * - * @memberof workbox.routing - */ - - class Router { - /** - * Initializes a new Router. - */ - constructor() { - this._routes = new Map(); - } - /** - * @return {Map>} routes A `Map` of HTTP - * method name ('GET', etc.) to an array of all the corresponding `Route` - * instances that are registered. - */ - - - get routes() { - return this._routes; - } - /** - * Adds a fetch event listener to respond to events when a route matches - * the event's request. - */ - - - addFetchListener() { - self.addEventListener('fetch', event => { - const { - request - } = event; - const responsePromise = this.handleRequest({ - request, - event - }); - - if (responsePromise) { - event.respondWith(responsePromise); - } - }); - } - /** - * Adds a message event listener for URLs to cache from the window. - * This is useful to cache resources loaded on the page prior to when the - * service worker started controlling it. - * - * The format of the message data sent from the window should be as follows. - * Where the `urlsToCache` array may consist of URL strings or an array of - * URL string + `requestInit` object (the same as you'd pass to `fetch()`). - * - * ``` - * { - * type: 'CACHE_URLS', - * payload: { - * urlsToCache: [ - * './script1.js', - * './script2.js', - * ['./script3.js', {mode: 'no-cors'}], - * ], - * }, - * } - * ``` - */ - - - addCacheListener() { - self.addEventListener('message', async event => { - if (event.data && event.data.type === 'CACHE_URLS') { - const { - payload - } = event.data; - - { - logger_mjs.logger.debug(`Caching URLs from the window`, payload.urlsToCache); - } - - const requestPromises = Promise.all(payload.urlsToCache.map(entry => { - if (typeof entry === 'string') { - entry = [entry]; - } - - const request = new Request(...entry); - return this.handleRequest({ - request - }); - })); - event.waitUntil(requestPromises); // If a MessageChannel was used, reply to the message on success. - - if (event.ports && event.ports[0]) { - await requestPromises; - event.ports[0].postMessage(true); - } - } - }); - } - /** - * Apply the routing rules to a FetchEvent object to get a Response from an - * appropriate Route's handler. - * - * @param {Object} options - * @param {Request} options.request The request to handle (this is usually - * from a fetch event, but it does not have to be). - * @param {FetchEvent} [options.event] The event that triggered the request, - * if applicable. - * @return {Promise|undefined} A promise is returned if a - * registered route can handle the request. If there is no matching - * route and there's no `defaultHandler`, `undefined` is returned. - */ - - - handleRequest({ - request, - event - }) { - { - assert_mjs.assert.isInstance(request, Request, { - moduleName: 'workbox-routing', - className: 'Router', - funcName: 'handleRequest', - paramName: 'options.request' - }); - } - - const url = new URL(request.url, location); - - if (!url.protocol.startsWith('http')) { - { - logger_mjs.logger.debug(`Workbox Router only supports URLs that start with 'http'.`); - } - - return; - } - - let { - params, - route - } = this.findMatchingRoute({ - url, - request, - event - }); - let handler = route && route.handler; - let debugMessages = []; - - { - if (handler) { - debugMessages.push([`Found a route to handle this request:`, route]); - - if (params) { - debugMessages.push([`Passing the following params to the route's handler:`, params]); - } - } - } // If we don't have a handler because there was no matching route, then - // fall back to defaultHandler if that's defined. - - - if (!handler && this._defaultHandler) { - { - debugMessages.push(`Failed to find a matching route. Falling ` + `back to the default handler.`); // This is used for debugging in logs in the case of an error. - - route = '[Default Handler]'; - } - - handler = this._defaultHandler; - } - - if (!handler) { - { - // No handler so Workbox will do nothing. If logs is set of debug - // i.e. verbose, we should print out this information. - logger_mjs.logger.debug(`No route found for: ${getFriendlyURL_mjs.getFriendlyURL(url)}`); - } - - return; - } - - { - // We have a handler, meaning Workbox is going to handle the route. - // print the routing details to the console. - logger_mjs.logger.groupCollapsed(`Router is responding to: ${getFriendlyURL_mjs.getFriendlyURL(url)}`); - debugMessages.forEach(msg => { - if (Array.isArray(msg)) { - logger_mjs.logger.log(...msg); - } else { - logger_mjs.logger.log(msg); - } - }); // The Request and Response objects contains a great deal of information, - // hide it under a group in case developers want to see it. - - logger_mjs.logger.groupCollapsed(`View request details here.`); - logger_mjs.logger.log(request); - logger_mjs.logger.groupEnd(); - logger_mjs.logger.groupEnd(); - } // Wrap in try and catch in case the handle method throws a synchronous - // error. It should still callback to the catch handler. - - - let responsePromise; - - try { - responsePromise = handler.handle({ - url, - request, - event, - params - }); - } catch (err) { - responsePromise = Promise.reject(err); - } - - if (responsePromise && this._catchHandler) { - responsePromise = responsePromise.catch(err => { - { - // Still include URL here as it will be async from the console group - // and may not make sense without the URL - logger_mjs.logger.groupCollapsed(`Error thrown when responding to: ` + ` ${getFriendlyURL_mjs.getFriendlyURL(url)}. Falling back to Catch Handler.`); - logger_mjs.logger.error(`Error thrown by:`, route); - logger_mjs.logger.error(err); - logger_mjs.logger.groupEnd(); - } - - return this._catchHandler.handle({ - url, - event, - err - }); - }); - } - - return responsePromise; - } - /** - * Checks a request and URL (and optionally an event) against the list of - * registered routes, and if there's a match, returns the corresponding - * route along with any params generated by the match. - * - * @param {Object} options - * @param {URL} options.url - * @param {Request} options.request The request to match. - * @param {FetchEvent} [options.event] The corresponding event (unless N/A). - * @return {Object} An object with `route` and `params` properties. - * They are populated if a matching route was found or `undefined` - * otherwise. - */ - - - findMatchingRoute({ - url, - request, - event - }) { - { - assert_mjs.assert.isInstance(url, URL, { - moduleName: 'workbox-routing', - className: 'Router', - funcName: 'findMatchingRoute', - paramName: 'options.url' - }); - assert_mjs.assert.isInstance(request, Request, { - moduleName: 'workbox-routing', - className: 'Router', - funcName: 'findMatchingRoute', - paramName: 'options.request' - }); - } - - const routes = this._routes.get(request.method) || []; - - for (const route of routes) { - let params; - let matchResult = route.match({ - url, - request, - event - }); - - if (matchResult) { - if (Array.isArray(matchResult) && matchResult.length > 0) { - // Instead of passing an empty array in as params, use undefined. - params = matchResult; - } else if (matchResult.constructor === Object && Object.keys(matchResult).length > 0) { - // Instead of passing an empty object in as params, use undefined. - params = matchResult; - } // Return early if have a match. - - - return { - route, - params - }; - } - } // If no match was found above, return and empty object. - - - return {}; - } - /** - * Define a default `handler` that's called when no routes explicitly - * match the incoming request. - * - * Without a default handler, unmatched requests will go against the - * network as if there were no service worker present. - * - * @param {workbox.routing.Route~handlerCallback} handler A callback - * function that returns a Promise resulting in a Response. - */ - - - setDefaultHandler(handler) { - this._defaultHandler = normalizeHandler(handler); - } - /** - * If a Route throws an error while handling a request, this `handler` - * will be called and given a chance to provide a response. - * - * @param {workbox.routing.Route~handlerCallback} handler A callback - * function that returns a Promise resulting in a Response. - */ - - - setCatchHandler(handler) { - this._catchHandler = normalizeHandler(handler); - } - /** - * Registers a route with the router. - * - * @param {workbox.routing.Route} route The route to register. - */ - - - registerRoute(route) { - { - assert_mjs.assert.isType(route, 'object', { - moduleName: 'workbox-routing', - className: 'Router', - funcName: 'registerRoute', - paramName: 'route' - }); - assert_mjs.assert.hasMethod(route, 'match', { - moduleName: 'workbox-routing', - className: 'Router', - funcName: 'registerRoute', - paramName: 'route' - }); - assert_mjs.assert.isType(route.handler, 'object', { - moduleName: 'workbox-routing', - className: 'Router', - funcName: 'registerRoute', - paramName: 'route' - }); - assert_mjs.assert.hasMethod(route.handler, 'handle', { - moduleName: 'workbox-routing', - className: 'Router', - funcName: 'registerRoute', - paramName: 'route.handler' - }); - assert_mjs.assert.isType(route.method, 'string', { - moduleName: 'workbox-routing', - className: 'Router', - funcName: 'registerRoute', - paramName: 'route.method' - }); - } - - if (!this._routes.has(route.method)) { - this._routes.set(route.method, []); - } // Give precedence to all of the earlier routes by adding this additional - // route to the end of the array. - - - this._routes.get(route.method).push(route); - } - /** - * Unregisters a route with the router. - * - * @param {workbox.routing.Route} route The route to unregister. - */ - - - unregisterRoute(route) { - if (!this._routes.has(route.method)) { - throw new WorkboxError_mjs.WorkboxError('unregister-route-but-not-found-with-method', { - method: route.method - }); - } - - const routeIndex = this._routes.get(route.method).indexOf(route); - - if (routeIndex > -1) { - this._routes.get(route.method).splice(routeIndex, 1); - } else { - throw new WorkboxError_mjs.WorkboxError('unregister-route-route-not-registered'); - } - } - - } - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - let defaultRouter; - /** - * Creates a new, singleton Router instance if one does not exist. If one - * does already exist, that instance is returned. - * - * @private - * @return {Router} - */ - - const getOrCreateDefaultRouter = () => { - if (!defaultRouter) { - defaultRouter = new Router(); // The helpers that use the default Router assume these listeners exist. - - defaultRouter.addFetchListener(); - defaultRouter.addCacheListener(); - } - - return defaultRouter; - }; - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Registers a route that will return a precached file for a navigation - * request. This is useful for the - * [application shell pattern]{@link https://developers.google.com/web/fundamentals/architecture/app-shell}. - * - * When determining the URL of the precached HTML document, you will likely need - * to call `workbox.precaching.getCacheKeyForURL(originalUrl)`, to account for - * the fact that Workbox's precaching naming conventions often results in URL - * cache keys that contain extra revisioning info. - * - * This method will generate a - * [NavigationRoute]{@link workbox.routing.NavigationRoute} - * and call - * [Router.registerRoute()]{@link workbox.routing.Router#registerRoute} on a - * singleton Router instance. - * - * @param {string} cachedAssetUrl The cache key to use for the HTML file. - * @param {Object} [options] - * @param {string} [options.cacheName] Cache name to store and retrieve - * requests. Defaults to precache cache name provided by - * [workbox-core.cacheNames]{@link workbox.core.cacheNames}. - * @param {Array} [options.blacklist=[]] If any of these patterns - * match, the route will not handle the request (even if a whitelist entry - * matches). - * @param {Array} [options.whitelist=[/./]] If any of these patterns - * match the URL's pathname and search parameter, the route will handle the - * request (assuming the blacklist doesn't match). - * @return {workbox.routing.NavigationRoute} Returns the generated - * Route. - * - * @alias workbox.routing.registerNavigationRoute - */ - - const registerNavigationRoute = (cachedAssetUrl, options = {}) => { - { - assert_mjs.assert.isType(cachedAssetUrl, 'string', { - moduleName: 'workbox-routing', - funcName: 'registerNavigationRoute', - paramName: 'cachedAssetUrl' - }); - } - - const cacheName = cacheNames_mjs.cacheNames.getPrecacheName(options.cacheName); - - const handler = async () => { - try { - const response = await caches.match(cachedAssetUrl, { - cacheName - }); - - if (response) { - return response; - } // This shouldn't normally happen, but there are edge cases: - // https://github.com/GoogleChrome/workbox/issues/1441 - - - throw new Error(`The cache ${cacheName} did not have an entry for ` + `${cachedAssetUrl}.`); - } catch (error) { - // If there's either a cache miss, or the caches.match() call threw - // an exception, then attempt to fulfill the navigation request with - // a response from the network rather than leaving the user with a - // failed navigation. - { - logger_mjs.logger.debug(`Unable to respond to navigation request with ` + `cached response. Falling back to network.`, error); - } // This might still fail if the browser is offline... - - - return fetch(cachedAssetUrl); - } - }; - - const route = new NavigationRoute(handler, { - whitelist: options.whitelist, - blacklist: options.blacklist - }); - const defaultRouter = getOrCreateDefaultRouter(); - defaultRouter.registerRoute(route); - return route; - }; - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Easily register a RegExp, string, or function with a caching - * strategy to a singleton Router instance. - * - * This method will generate a Route for you if needed and - * call [Router.registerRoute()]{@link - * workbox.routing.Router#registerRoute}. - * - * @param { - * RegExp| - * string| - * workbox.routing.Route~matchCallback| - * workbox.routing.Route - * } capture - * If the capture param is a `Route`, all other arguments will be ignored. - * @param {workbox.routing.Route~handlerCallback} handler A callback - * function that returns a Promise resulting in a Response. - * @param {string} [method='GET'] The HTTP method to match the Route - * against. - * @return {workbox.routing.Route} The generated `Route`(Useful for - * unregistering). - * - * @alias workbox.routing.registerRoute - */ - - const registerRoute = (capture, handler, method = 'GET') => { - let route; - - if (typeof capture === 'string') { - const captureUrl = new URL(capture, location); - - { - if (!(capture.startsWith('/') || capture.startsWith('http'))) { - throw new WorkboxError_mjs.WorkboxError('invalid-string', { - moduleName: 'workbox-routing', - funcName: 'registerRoute', - paramName: 'capture' - }); - } // We want to check if Express-style wildcards are in the pathname only. - // TODO: Remove this log message in v4. - - - const valueToCheck = capture.startsWith('http') ? captureUrl.pathname : capture; // See https://github.com/pillarjs/path-to-regexp#parameters - - const wildcards = '[*:?+]'; - - if (valueToCheck.match(new RegExp(`${wildcards}`))) { - logger_mjs.logger.debug(`The '$capture' parameter contains an Express-style wildcard ` + `character (${wildcards}). Strings are now always interpreted as ` + `exact matches; use a RegExp for partial or wildcard matches.`); - } - } - - const matchCallback = ({ - url - }) => { - { - if (url.pathname === captureUrl.pathname && url.origin !== captureUrl.origin) { - logger_mjs.logger.debug(`${capture} only partially matches the cross-origin URL ` + `${url}. This route will only handle cross-origin requests ` + `if they match the entire URL.`); - } - } - - return url.href === captureUrl.href; - }; - - route = new Route(matchCallback, handler, method); - } else if (capture instanceof RegExp) { - route = new RegExpRoute(capture, handler, method); - } else if (typeof capture === 'function') { - route = new Route(capture, handler, method); - } else if (capture instanceof Route) { - route = capture; - } else { - throw new WorkboxError_mjs.WorkboxError('unsupported-route-type', { - moduleName: 'workbox-routing', - funcName: 'registerRoute', - paramName: 'capture' - }); - } - - const defaultRouter = getOrCreateDefaultRouter(); - defaultRouter.registerRoute(route); - return route; - }; - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * If a Route throws an error while handling a request, this `handler` - * will be called and given a chance to provide a response. - * - * @param {workbox.routing.Route~handlerCallback} handler A callback - * function that returns a Promise resulting in a Response. - * - * @alias workbox.routing.setCatchHandler - */ - - const setCatchHandler = handler => { - const defaultRouter = getOrCreateDefaultRouter(); - defaultRouter.setCatchHandler(handler); - }; - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Define a default `handler` that's called when no routes explicitly - * match the incoming request. - * - * Without a default handler, unmatched requests will go against the - * network as if there were no service worker present. - * - * @param {workbox.routing.Route~handlerCallback} handler A callback - * function that returns a Promise resulting in a Response. - * - * @alias workbox.routing.setDefaultHandler - */ - - const setDefaultHandler = handler => { - const defaultRouter = getOrCreateDefaultRouter(); - defaultRouter.setDefaultHandler(handler); - }; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - - { - assert_mjs.assert.isSWEnv('workbox-routing'); - } - - exports.NavigationRoute = NavigationRoute; - exports.RegExpRoute = RegExpRoute; - exports.registerNavigationRoute = registerNavigationRoute; - exports.registerRoute = registerRoute; - exports.Route = Route; - exports.Router = Router; - exports.setCatchHandler = setCatchHandler; - exports.setDefaultHandler = setDefaultHandler; - - return exports; - -}({}, workbox.core._private, workbox.core._private, workbox.core._private, workbox.core._private, workbox.core._private)); -//# sourceMappingURL=workbox-routing.dev.js.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-routing.dev.js.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-routing.dev.js.map deleted file mode 100644 index 710713224..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-routing.dev.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-routing.dev.js","sources":["../_version.mjs","../utils/constants.mjs","../utils/normalizeHandler.mjs","../Route.mjs","../NavigationRoute.mjs","../RegExpRoute.mjs","../Router.mjs","../utils/getOrCreateDefaultRouter.mjs","../registerNavigationRoute.mjs","../registerRoute.mjs","../setCatchHandler.mjs","../setDefaultHandler.mjs","../index.mjs"],"sourcesContent":["try{self['workbox:routing:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n/**\n * The default HTTP method, 'GET', used when there's no specific method\n * configured for a route.\n *\n * @type {string}\n *\n * @private\n */\nexport const defaultMethod = 'GET';\n\n/**\n * The list of valid HTTP methods associated with requests that could be routed.\n *\n * @type {Array}\n *\n * @private\n */\nexport const validMethods = [\n 'DELETE',\n 'GET',\n 'HEAD',\n 'PATCH',\n 'POST',\n 'PUT',\n];\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport '../_version.mjs';\n\n/**\n * @param {function()|Object} handler Either a function, or an object with a\n * 'handle' method.\n * @return {Object} An object with a handle method.\n *\n * @private\n */\nexport const normalizeHandler = (handler) => {\n if (handler && typeof handler === 'object') {\n if (process.env.NODE_ENV !== 'production') {\n assert.hasMethod(handler, 'handle', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'handler',\n });\n }\n return handler;\n } else {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(handler, 'function', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'handler',\n });\n }\n return {handle: handler};\n }\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\n\nimport {defaultMethod, validMethods} from './utils/constants.mjs';\nimport {normalizeHandler} from './utils/normalizeHandler.mjs';\nimport './_version.mjs';\n\n/**\n * A `Route` consists of a pair of callback functions, \"match\" and \"handler\".\n * The \"match\" callback determine if a route should be used to \"handle\" a\n * request by returning a non-falsy value if it can. The \"handler\" callback\n * is called when there is a match and should return a Promise that resolves\n * to a `Response`.\n *\n * @memberof workbox.routing\n */\nclass Route {\n /**\n * Constructor for Route class.\n *\n * @param {workbox.routing.Route~matchCallback} match\n * A callback function that determines whether the route matches a given\n * `fetch` event by returning a non-falsy value.\n * @param {workbox.routing.Route~handlerCallback} handler A callback\n * function that returns a Promise resolving to a Response.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n */\n constructor(match, handler, method) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(match, 'function', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'match',\n });\n\n if (method) {\n assert.isOneOf(method, validMethods, {paramName: 'method'});\n }\n }\n\n // These values are referenced directly by Router so cannot be\n // altered by minifification.\n this.handler = normalizeHandler(handler);\n this.match = match;\n this.method = method || defaultMethod;\n }\n}\n\nexport {Route};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {Route} from './Route.mjs';\nimport './_version.mjs';\n\n/**\n * NavigationRoute makes it easy to create a [Route]{@link\n * workbox.routing.Route} that matches for browser\n * [navigation requests]{@link https://developers.google.com/web/fundamentals/primers/service-workers/high-performance-loading#first_what_are_navigation_requests}.\n *\n * It will only match incoming Requests whose\n * [`mode`]{@link https://fetch.spec.whatwg.org/#concept-request-mode}\n * is set to `navigate`.\n *\n * You can optionally only apply this route to a subset of navigation requests\n * by using one or both of the `blacklist` and `whitelist` parameters.\n *\n * @memberof workbox.routing\n * @extends workbox.routing.Route\n */\nclass NavigationRoute extends Route {\n /**\n * If both `blacklist` and `whiltelist` are provided, the `blacklist` will\n * take precedence and the request will not match this route.\n *\n * The regular expressions in `whitelist` and `blacklist`\n * are matched against the concatenated\n * [`pathname`]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/pathname}\n * and [`search`]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/search}\n * portions of the requested URL.\n *\n * @param {workbox.routing.Route~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n * @param {Object} options\n * @param {Array} [options.blacklist] If any of these patterns match,\n * the route will not handle the request (even if a whitelist RegExp matches).\n * @param {Array} [options.whitelist=[/./]] If any of these patterns\n * match the URL's pathname and search parameter, the route will handle the\n * request (assuming the blacklist doesn't match).\n */\n constructor(handler, {whitelist = [/./], blacklist = []} = {}) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isArrayOfClass(whitelist, RegExp, {\n moduleName: 'workbox-routing',\n className: 'NavigationRoute',\n funcName: 'constructor',\n paramName: 'options.whitelist',\n });\n assert.isArrayOfClass(blacklist, RegExp, {\n moduleName: 'workbox-routing',\n className: 'NavigationRoute',\n funcName: 'constructor',\n paramName: 'options.blacklist',\n });\n }\n\n super((options) => this._match(options), handler);\n\n this._whitelist = whitelist;\n this._blacklist = blacklist;\n }\n\n /**\n * Routes match handler.\n *\n * @param {Object} options\n * @param {URL} options.url\n * @param {Request} options.request\n * @return {boolean}\n *\n * @private\n */\n _match({url, request}) {\n if (request.mode !== 'navigate') {\n return false;\n }\n\n const pathnameAndSearch = url.pathname + url.search;\n\n for (const regExp of this._blacklist) {\n if (regExp.test(pathnameAndSearch)) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`The navigation route is not being used, since the ` +\n `URL matches this blacklist pattern: ${regExp}`);\n }\n return false;\n }\n }\n\n if (this._whitelist.some((regExp) => regExp.test(pathnameAndSearch))) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`The navigation route is being used.`);\n }\n return true;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`The navigation route is not being used, since the URL ` +\n `being navigated to doesn't match the whitelist.`);\n }\n return false;\n }\n}\n\nexport {NavigationRoute};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {Route} from './Route.mjs';\nimport './_version.mjs';\n\n/**\n * RegExpRoute makes it easy to create a regular expression based\n * [Route]{@link workbox.routing.Route}.\n *\n * For same-origin requests the RegExp only needs to match part of the URL. For\n * requests against third-party servers, you must define a RegExp that matches\n * the start of the URL.\n *\n * [See the module docs for info.]{@link https://developers.google.com/web/tools/workbox/modules/workbox-routing}\n *\n * @memberof workbox.routing\n * @extends workbox.routing.Route\n */\nclass RegExpRoute extends Route {\n /**\n * If the regulard expression contains\n * [capture groups]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#grouping-back-references},\n * th ecaptured values will be passed to the\n * [handler's]{@link workbox.routing.Route~handlerCallback} `params`\n * argument.\n *\n * @param {RegExp} regExp The regular expression to match against URLs.\n * @param {workbox.routing.Route~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n */\n constructor(regExp, handler, method) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(regExp, RegExp, {\n moduleName: 'workbox-routing',\n className: 'RegExpRoute',\n funcName: 'constructor',\n paramName: 'pattern',\n });\n }\n\n const match = ({url}) => {\n const result = regExp.exec(url.href);\n\n // Return null immediately if there's no match.\n if (!result) {\n return null;\n }\n\n // Require that the match start at the first character in the URL string\n // if it's a cross-origin request.\n // See https://github.com/GoogleChrome/workbox/issues/281 for the context\n // behind this behavior.\n if ((url.origin !== location.origin) && (result.index !== 0)) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(\n `The regular expression '${regExp}' only partially matched ` +\n `against the cross-origin URL '${url}'. RegExpRoute's will only ` +\n `handle cross-origin requests if they match the entire URL.`\n );\n }\n\n return null;\n }\n\n // If the route matches, but there aren't any capture groups defined, then\n // this will return [], which is truthy and therefore sufficient to\n // indicate a match.\n // If there are capture groups, then it will return their values.\n return result.slice(1);\n };\n\n super(match, handler, method);\n }\n}\n\nexport {RegExpRoute};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\nimport {getFriendlyURL} from 'workbox-core/_private/getFriendlyURL.mjs';\n\nimport {normalizeHandler} from './utils/normalizeHandler.mjs';\nimport './_version.mjs';\n\n/**\n * The Router can be used to process a FetchEvent through one or more\n * [Routes]{@link workbox.routing.Route} responding with a Request if\n * a matching route exists.\n *\n * If no route matches a given a request, the Router will use a \"default\"\n * handler if one is defined.\n *\n * Should the matching Route throw an error, the Router will use a \"catch\"\n * handler if one is defined to gracefully deal with issues and respond with a\n * Request.\n *\n * If a request matches multiple routes, the **earliest** registered route will\n * be used to respond to the request.\n *\n * @memberof workbox.routing\n */\nclass Router {\n /**\n * Initializes a new Router.\n */\n constructor() {\n this._routes = new Map();\n }\n\n /**\n * @return {Map>} routes A `Map` of HTTP\n * method name ('GET', etc.) to an array of all the corresponding `Route`\n * instances that are registered.\n */\n get routes() {\n return this._routes;\n }\n\n /**\n * Adds a fetch event listener to respond to events when a route matches\n * the event's request.\n */\n addFetchListener() {\n self.addEventListener('fetch', (event) => {\n const {request} = event;\n const responsePromise = this.handleRequest({request, event});\n if (responsePromise) {\n event.respondWith(responsePromise);\n }\n });\n }\n\n /**\n * Adds a message event listener for URLs to cache from the window.\n * This is useful to cache resources loaded on the page prior to when the\n * service worker started controlling it.\n *\n * The format of the message data sent from the window should be as follows.\n * Where the `urlsToCache` array may consist of URL strings or an array of\n * URL string + `requestInit` object (the same as you'd pass to `fetch()`).\n *\n * ```\n * {\n * type: 'CACHE_URLS',\n * payload: {\n * urlsToCache: [\n * './script1.js',\n * './script2.js',\n * ['./script3.js', {mode: 'no-cors'}],\n * ],\n * },\n * }\n * ```\n */\n addCacheListener() {\n self.addEventListener('message', async (event) => {\n if (event.data && event.data.type === 'CACHE_URLS') {\n const {payload} = event.data;\n\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Caching URLs from the window`, payload.urlsToCache);\n }\n\n const requestPromises = Promise.all(payload.urlsToCache.map((entry) => {\n if (typeof entry === 'string') {\n entry = [entry];\n }\n\n const request = new Request(...entry);\n return this.handleRequest({request});\n }));\n\n event.waitUntil(requestPromises);\n\n // If a MessageChannel was used, reply to the message on success.\n if (event.ports && event.ports[0]) {\n await requestPromises;\n event.ports[0].postMessage(true);\n }\n }\n });\n }\n\n /**\n * Apply the routing rules to a FetchEvent object to get a Response from an\n * appropriate Route's handler.\n *\n * @param {Object} options\n * @param {Request} options.request The request to handle (this is usually\n * from a fetch event, but it does not have to be).\n * @param {FetchEvent} [options.event] The event that triggered the request,\n * if applicable.\n * @return {Promise|undefined} A promise is returned if a\n * registered route can handle the request. If there is no matching\n * route and there's no `defaultHandler`, `undefined` is returned.\n */\n handleRequest({request, event}) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'handleRequest',\n paramName: 'options.request',\n });\n }\n\n const url = new URL(request.url, location);\n if (!url.protocol.startsWith('http')) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(\n `Workbox Router only supports URLs that start with 'http'.`);\n }\n return;\n }\n\n let {params, route} = this.findMatchingRoute({url, request, event});\n let handler = route && route.handler;\n\n let debugMessages = [];\n if (process.env.NODE_ENV !== 'production') {\n if (handler) {\n debugMessages.push([\n `Found a route to handle this request:`, route,\n ]);\n\n if (params) {\n debugMessages.push([\n `Passing the following params to the route's handler:`, params,\n ]);\n }\n }\n }\n\n // If we don't have a handler because there was no matching route, then\n // fall back to defaultHandler if that's defined.\n if (!handler && this._defaultHandler) {\n if (process.env.NODE_ENV !== 'production') {\n debugMessages.push(`Failed to find a matching route. Falling ` +\n `back to the default handler.`);\n\n // This is used for debugging in logs in the case of an error.\n route = '[Default Handler]';\n }\n handler = this._defaultHandler;\n }\n\n if (!handler) {\n if (process.env.NODE_ENV !== 'production') {\n // No handler so Workbox will do nothing. If logs is set of debug\n // i.e. verbose, we should print out this information.\n logger.debug(`No route found for: ${getFriendlyURL(url)}`);\n }\n return;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // We have a handler, meaning Workbox is going to handle the route.\n // print the routing details to the console.\n logger.groupCollapsed(`Router is responding to: ${getFriendlyURL(url)}`);\n debugMessages.forEach((msg) => {\n if (Array.isArray(msg)) {\n logger.log(...msg);\n } else {\n logger.log(msg);\n }\n });\n\n // The Request and Response objects contains a great deal of information,\n // hide it under a group in case developers want to see it.\n logger.groupCollapsed(`View request details here.`);\n logger.log(request);\n logger.groupEnd();\n\n logger.groupEnd();\n }\n\n // Wrap in try and catch in case the handle method throws a synchronous\n // error. It should still callback to the catch handler.\n let responsePromise;\n try {\n responsePromise = handler.handle({url, request, event, params});\n } catch (err) {\n responsePromise = Promise.reject(err);\n }\n\n if (responsePromise && this._catchHandler) {\n responsePromise = responsePromise.catch((err) => {\n if (process.env.NODE_ENV !== 'production') {\n // Still include URL here as it will be async from the console group\n // and may not make sense without the URL\n logger.groupCollapsed(`Error thrown when responding to: ` +\n ` ${getFriendlyURL(url)}. Falling back to Catch Handler.`);\n logger.error(`Error thrown by:`, route);\n logger.error(err);\n logger.groupEnd();\n }\n return this._catchHandler.handle({url, event, err});\n });\n }\n\n return responsePromise;\n }\n\n /**\n * Checks a request and URL (and optionally an event) against the list of\n * registered routes, and if there's a match, returns the corresponding\n * route along with any params generated by the match.\n *\n * @param {Object} options\n * @param {URL} options.url\n * @param {Request} options.request The request to match.\n * @param {FetchEvent} [options.event] The corresponding event (unless N/A).\n * @return {Object} An object with `route` and `params` properties.\n * They are populated if a matching route was found or `undefined`\n * otherwise.\n */\n findMatchingRoute({url, request, event}) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(url, URL, {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'findMatchingRoute',\n paramName: 'options.url',\n });\n assert.isInstance(request, Request, {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'findMatchingRoute',\n paramName: 'options.request',\n });\n }\n\n const routes = this._routes.get(request.method) || [];\n for (const route of routes) {\n let params;\n let matchResult = route.match({url, request, event});\n if (matchResult) {\n if (Array.isArray(matchResult) && matchResult.length > 0) {\n // Instead of passing an empty array in as params, use undefined.\n params = matchResult;\n } else if ((matchResult.constructor === Object &&\n Object.keys(matchResult).length > 0)) {\n // Instead of passing an empty object in as params, use undefined.\n params = matchResult;\n }\n\n // Return early if have a match.\n return {route, params};\n }\n }\n // If no match was found above, return and empty object.\n return {};\n }\n\n /**\n * Define a default `handler` that's called when no routes explicitly\n * match the incoming request.\n *\n * Without a default handler, unmatched requests will go against the\n * network as if there were no service worker present.\n *\n * @param {workbox.routing.Route~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n */\n setDefaultHandler(handler) {\n this._defaultHandler = normalizeHandler(handler);\n }\n\n /**\n * If a Route throws an error while handling a request, this `handler`\n * will be called and given a chance to provide a response.\n *\n * @param {workbox.routing.Route~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n */\n setCatchHandler(handler) {\n this._catchHandler = normalizeHandler(handler);\n }\n\n /**\n * Registers a route with the router.\n *\n * @param {workbox.routing.Route} route The route to register.\n */\n registerRoute(route) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(route, 'object', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n\n assert.hasMethod(route, 'match', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n\n assert.isType(route.handler, 'object', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n\n assert.hasMethod(route.handler, 'handle', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route.handler',\n });\n\n assert.isType(route.method, 'string', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route.method',\n });\n }\n\n if (!this._routes.has(route.method)) {\n this._routes.set(route.method, []);\n }\n\n // Give precedence to all of the earlier routes by adding this additional\n // route to the end of the array.\n this._routes.get(route.method).push(route);\n }\n\n /**\n * Unregisters a route with the router.\n *\n * @param {workbox.routing.Route} route The route to unregister.\n */\n unregisterRoute(route) {\n if (!this._routes.has(route.method)) {\n throw new WorkboxError(\n 'unregister-route-but-not-found-with-method', {\n method: route.method,\n }\n );\n }\n\n const routeIndex = this._routes.get(route.method).indexOf(route);\n if (routeIndex > -1) {\n this._routes.get(route.method).splice(routeIndex, 1);\n } else {\n throw new WorkboxError('unregister-route-route-not-registered');\n }\n }\n}\n\nexport {Router};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {Router} from '../Router.mjs';\nimport '../_version.mjs';\n\nlet defaultRouter;\n\n/**\n * Creates a new, singleton Router instance if one does not exist. If one\n * does already exist, that instance is returned.\n *\n * @private\n * @return {Router}\n */\nexport const getOrCreateDefaultRouter = () => {\n if (!defaultRouter) {\n defaultRouter = new Router();\n\n // The helpers that use the default Router assume these listeners exist.\n defaultRouter.addFetchListener();\n defaultRouter.addCacheListener();\n }\n return defaultRouter;\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {cacheNames} from 'workbox-core/_private/cacheNames.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {NavigationRoute} from './NavigationRoute.mjs';\nimport {getOrCreateDefaultRouter} from './utils/getOrCreateDefaultRouter.mjs';\nimport './_version.mjs';\n\n\n/**\n * Registers a route that will return a precached file for a navigation\n * request. This is useful for the\n * [application shell pattern]{@link https://developers.google.com/web/fundamentals/architecture/app-shell}.\n *\n * When determining the URL of the precached HTML document, you will likely need\n * to call `workbox.precaching.getCacheKeyForURL(originalUrl)`, to account for\n * the fact that Workbox's precaching naming conventions often results in URL\n * cache keys that contain extra revisioning info.\n *\n * This method will generate a\n * [NavigationRoute]{@link workbox.routing.NavigationRoute}\n * and call\n * [Router.registerRoute()]{@link workbox.routing.Router#registerRoute} on a\n * singleton Router instance.\n *\n * @param {string} cachedAssetUrl The cache key to use for the HTML file.\n * @param {Object} [options]\n * @param {string} [options.cacheName] Cache name to store and retrieve\n * requests. Defaults to precache cache name provided by\n * [workbox-core.cacheNames]{@link workbox.core.cacheNames}.\n * @param {Array} [options.blacklist=[]] If any of these patterns\n * match, the route will not handle the request (even if a whitelist entry\n * matches).\n * @param {Array} [options.whitelist=[/./]] If any of these patterns\n * match the URL's pathname and search parameter, the route will handle the\n * request (assuming the blacklist doesn't match).\n * @return {workbox.routing.NavigationRoute} Returns the generated\n * Route.\n *\n * @alias workbox.routing.registerNavigationRoute\n */\nexport const registerNavigationRoute = (cachedAssetUrl, options = {}) => {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(cachedAssetUrl, 'string', {\n moduleName: 'workbox-routing',\n funcName: 'registerNavigationRoute',\n paramName: 'cachedAssetUrl',\n });\n }\n\n const cacheName = cacheNames.getPrecacheName(options.cacheName);\n const handler = async () => {\n try {\n const response = await caches.match(cachedAssetUrl, {cacheName});\n\n if (response) {\n return response;\n }\n\n // This shouldn't normally happen, but there are edge cases:\n // https://github.com/GoogleChrome/workbox/issues/1441\n throw new Error(`The cache ${cacheName} did not have an entry for ` +\n `${cachedAssetUrl}.`);\n } catch (error) {\n // If there's either a cache miss, or the caches.match() call threw\n // an exception, then attempt to fulfill the navigation request with\n // a response from the network rather than leaving the user with a\n // failed navigation.\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Unable to respond to navigation request with ` +\n `cached response. Falling back to network.`, error);\n }\n\n // This might still fail if the browser is offline...\n return fetch(cachedAssetUrl);\n }\n };\n\n const route = new NavigationRoute(handler, {\n whitelist: options.whitelist,\n blacklist: options.blacklist,\n });\n\n const defaultRouter = getOrCreateDefaultRouter();\n defaultRouter.registerRoute(route);\n\n return route;\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\nimport {Route} from './Route.mjs';\nimport {RegExpRoute} from './RegExpRoute.mjs';\nimport {getOrCreateDefaultRouter} from './utils/getOrCreateDefaultRouter.mjs';\nimport './_version.mjs';\n\n\n/**\n * Easily register a RegExp, string, or function with a caching\n * strategy to a singleton Router instance.\n *\n * This method will generate a Route for you if needed and\n * call [Router.registerRoute()]{@link\n * workbox.routing.Router#registerRoute}.\n *\n * @param {\n * RegExp|\n * string|\n * workbox.routing.Route~matchCallback|\n * workbox.routing.Route\n * } capture\n * If the capture param is a `Route`, all other arguments will be ignored.\n * @param {workbox.routing.Route~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n * @return {workbox.routing.Route} The generated `Route`(Useful for\n * unregistering).\n *\n * @alias workbox.routing.registerRoute\n */\nexport const registerRoute = (capture, handler, method = 'GET') => {\n let route;\n\n if (typeof capture === 'string') {\n const captureUrl = new URL(capture, location);\n\n if (process.env.NODE_ENV !== 'production') {\n if (!(capture.startsWith('/') || capture.startsWith('http'))) {\n throw new WorkboxError('invalid-string', {\n moduleName: 'workbox-routing',\n funcName: 'registerRoute',\n paramName: 'capture',\n });\n }\n\n // We want to check if Express-style wildcards are in the pathname only.\n // TODO: Remove this log message in v4.\n const valueToCheck = capture.startsWith('http') ?\n captureUrl.pathname : capture;\n\n // See https://github.com/pillarjs/path-to-regexp#parameters\n const wildcards = '[*:?+]';\n if (valueToCheck.match(new RegExp(`${wildcards}`))) {\n logger.debug(\n `The '$capture' parameter contains an Express-style wildcard ` +\n `character (${wildcards}). Strings are now always interpreted as ` +\n `exact matches; use a RegExp for partial or wildcard matches.`\n );\n }\n }\n\n const matchCallback = ({url}) => {\n if (process.env.NODE_ENV !== 'production') {\n if ((url.pathname === captureUrl.pathname) &&\n (url.origin !== captureUrl.origin)) {\n logger.debug(\n `${capture} only partially matches the cross-origin URL ` +\n `${url}. This route will only handle cross-origin requests ` +\n `if they match the entire URL.`);\n }\n }\n\n return url.href === captureUrl.href;\n };\n\n route = new Route(matchCallback, handler, method);\n } else if (capture instanceof RegExp) {\n route = new RegExpRoute(capture, handler, method);\n } else if (typeof capture === 'function') {\n route = new Route(capture, handler, method);\n } else if (capture instanceof Route) {\n route = capture;\n } else {\n throw new WorkboxError('unsupported-route-type', {\n moduleName: 'workbox-routing',\n funcName: 'registerRoute',\n paramName: 'capture',\n });\n }\n\n const defaultRouter = getOrCreateDefaultRouter();\n defaultRouter.registerRoute(route);\n\n return route;\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {getOrCreateDefaultRouter} from './utils/getOrCreateDefaultRouter.mjs';\n\nimport './_version.mjs';\n\n/**\n * If a Route throws an error while handling a request, this `handler`\n * will be called and given a chance to provide a response.\n *\n * @param {workbox.routing.Route~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n *\n * @alias workbox.routing.setCatchHandler\n */\nexport const setCatchHandler = (handler) => {\n const defaultRouter = getOrCreateDefaultRouter();\n defaultRouter.setCatchHandler(handler);\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {getOrCreateDefaultRouter} from './utils/getOrCreateDefaultRouter.mjs';\n\nimport './_version.mjs';\n\n/**\n * Define a default `handler` that's called when no routes explicitly\n * match the incoming request.\n *\n * Without a default handler, unmatched requests will go against the\n * network as if there were no service worker present.\n *\n * @param {workbox.routing.Route~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n *\n * @alias workbox.routing.setDefaultHandler\n */\nexport const setDefaultHandler = (handler) => {\n const defaultRouter = getOrCreateDefaultRouter();\n defaultRouter.setDefaultHandler(handler);\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\n\nimport {NavigationRoute} from './NavigationRoute.mjs';\nimport {RegExpRoute} from './RegExpRoute.mjs';\nimport {registerNavigationRoute} from './registerNavigationRoute.mjs';\nimport {registerRoute} from './registerRoute.mjs';\nimport {Route} from './Route.mjs';\nimport {Router} from './Router.mjs';\nimport {setCatchHandler} from './setCatchHandler.mjs';\nimport {setDefaultHandler} from './setDefaultHandler.mjs';\n\nimport './_version.mjs';\n\nif (process.env.NODE_ENV !== 'production') {\n assert.isSWEnv('workbox-routing');\n}\n\n/**\n * @namespace workbox.routing\n */\n\nexport {\n NavigationRoute,\n RegExpRoute,\n registerNavigationRoute,\n registerRoute,\n Route,\n Router,\n setCatchHandler,\n setDefaultHandler,\n};\n"],"names":["self","_","e","defaultMethod","validMethods","normalizeHandler","handler","assert","hasMethod","moduleName","className","funcName","paramName","isType","handle","Route","constructor","match","method","isOneOf","NavigationRoute","whitelist","blacklist","isArrayOfClass","RegExp","options","_match","_whitelist","_blacklist","url","request","mode","pathnameAndSearch","pathname","search","regExp","test","logger","log","some","debug","RegExpRoute","isInstance","result","exec","href","origin","location","index","slice","Router","_routes","Map","routes","addFetchListener","addEventListener","event","responsePromise","handleRequest","respondWith","addCacheListener","data","type","payload","urlsToCache","requestPromises","Promise","all","map","entry","Request","waitUntil","ports","postMessage","URL","protocol","startsWith","params","route","findMatchingRoute","debugMessages","push","_defaultHandler","getFriendlyURL","groupCollapsed","forEach","msg","Array","isArray","groupEnd","err","reject","_catchHandler","catch","error","get","matchResult","length","Object","keys","setDefaultHandler","setCatchHandler","registerRoute","has","set","unregisterRoute","WorkboxError","routeIndex","indexOf","splice","defaultRouter","getOrCreateDefaultRouter","registerNavigationRoute","cachedAssetUrl","cacheName","cacheNames","getPrecacheName","response","caches","Error","fetch","capture","captureUrl","valueToCheck","wildcards","matchCallback","isSWEnv"],"mappings":"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"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-routing.prod.js b/pr-preview/pr-1029/workbox-v4.3.1/workbox-routing.prod.js deleted file mode 100644 index ed87f9d14..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-routing.prod.js +++ /dev/null @@ -1,2 +0,0 @@ -this.workbox=this.workbox||{},this.workbox.routing=function(t,e,r){"use strict";try{self["workbox:routing:4.3.1"]&&_()}catch(t){}const s="GET",n=t=>t&&"object"==typeof t?t:{handle:t};class o{constructor(t,e,r){this.handler=n(e),this.match=t,this.method=r||s}}class i extends o{constructor(t,{whitelist:e=[/./],blacklist:r=[]}={}){super(t=>this.t(t),t),this.s=e,this.o=r}t({url:t,request:e}){if("navigate"!==e.mode)return!1;const r=t.pathname+t.search;for(const t of this.o)if(t.test(r))return!1;return!!this.s.some(t=>t.test(r))}}class u extends o{constructor(t,e,r){super(({url:e})=>{const r=t.exec(e.href);return r?e.origin!==location.origin&&0!==r.index?null:r.slice(1):null},e,r)}}class c{constructor(){this.i=new Map}get routes(){return this.i}addFetchListener(){self.addEventListener("fetch",t=>{const{request:e}=t,r=this.handleRequest({request:e,event:t});r&&t.respondWith(r)})}addCacheListener(){self.addEventListener("message",async t=>{if(t.data&&"CACHE_URLS"===t.data.type){const{payload:e}=t.data,r=Promise.all(e.urlsToCache.map(t=>{"string"==typeof t&&(t=[t]);const e=new Request(...t);return this.handleRequest({request:e})}));t.waitUntil(r),t.ports&&t.ports[0]&&(await r,t.ports[0].postMessage(!0))}})}handleRequest({request:t,event:e}){const r=new URL(t.url,location);if(!r.protocol.startsWith("http"))return;let s,{params:n,route:o}=this.findMatchingRoute({url:r,request:t,event:e}),i=o&&o.handler;if(!i&&this.u&&(i=this.u),i){try{s=i.handle({url:r,request:t,event:e,params:n})}catch(t){s=Promise.reject(t)}return s&&this.h&&(s=s.catch(t=>this.h.handle({url:r,event:e,err:t}))),s}}findMatchingRoute({url:t,request:e,event:r}){const s=this.i.get(e.method)||[];for(const n of s){let s,o=n.match({url:t,request:e,event:r});if(o)return Array.isArray(o)&&o.length>0?s=o:o.constructor===Object&&Object.keys(o).length>0&&(s=o),{route:n,params:s}}return{}}setDefaultHandler(t){this.u=n(t)}setCatchHandler(t){this.h=n(t)}registerRoute(t){this.i.has(t.method)||this.i.set(t.method,[]),this.i.get(t.method).push(t)}unregisterRoute(t){if(!this.i.has(t.method))throw new r.WorkboxError("unregister-route-but-not-found-with-method",{method:t.method});const e=this.i.get(t.method).indexOf(t);if(!(e>-1))throw new r.WorkboxError("unregister-route-route-not-registered");this.i.get(t.method).splice(e,1)}}let a;const h=()=>(a||((a=new c).addFetchListener(),a.addCacheListener()),a);return t.NavigationRoute=i,t.RegExpRoute=u,t.registerNavigationRoute=((t,r={})=>{const s=e.cacheNames.getPrecacheName(r.cacheName),n=new i(async()=>{try{const e=await caches.match(t,{cacheName:s});if(e)return e;throw new Error(`The cache ${s} did not have an entry for `+`${t}.`)}catch(e){return fetch(t)}},{whitelist:r.whitelist,blacklist:r.blacklist});return h().registerRoute(n),n}),t.registerRoute=((t,e,s="GET")=>{let n;if("string"==typeof t){const r=new URL(t,location);n=new o(({url:t})=>t.href===r.href,e,s)}else if(t instanceof RegExp)n=new u(t,e,s);else if("function"==typeof t)n=new o(t,e,s);else{if(!(t instanceof o))throw new r.WorkboxError("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});n=t}return h().registerRoute(n),n}),t.Route=o,t.Router=c,t.setCatchHandler=(t=>{h().setCatchHandler(t)}),t.setDefaultHandler=(t=>{h().setDefaultHandler(t)}),t}({},workbox.core._private,workbox.core._private); -//# sourceMappingURL=workbox-routing.prod.js.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-routing.prod.js.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-routing.prod.js.map deleted file mode 100644 index 56e5c0eee..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-routing.prod.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-routing.prod.js","sources":["../_version.mjs","../utils/constants.mjs","../utils/normalizeHandler.mjs","../Route.mjs","../NavigationRoute.mjs","../RegExpRoute.mjs","../Router.mjs","../utils/getOrCreateDefaultRouter.mjs","../registerNavigationRoute.mjs","../registerRoute.mjs","../setCatchHandler.mjs","../setDefaultHandler.mjs"],"sourcesContent":["try{self['workbox:routing:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n/**\n * The default HTTP method, 'GET', used when there's no specific method\n * configured for a route.\n *\n * @type {string}\n *\n * @private\n */\nexport const defaultMethod = 'GET';\n\n/**\n * The list of valid HTTP methods associated with requests that could be routed.\n *\n * @type {Array}\n *\n * @private\n */\nexport const validMethods = [\n 'DELETE',\n 'GET',\n 'HEAD',\n 'PATCH',\n 'POST',\n 'PUT',\n];\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport '../_version.mjs';\n\n/**\n * @param {function()|Object} handler Either a function, or an object with a\n * 'handle' method.\n * @return {Object} An object with a handle method.\n *\n * @private\n */\nexport const normalizeHandler = (handler) => {\n if (handler && typeof handler === 'object') {\n if (process.env.NODE_ENV !== 'production') {\n assert.hasMethod(handler, 'handle', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'handler',\n });\n }\n return handler;\n } else {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(handler, 'function', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'handler',\n });\n }\n return {handle: handler};\n }\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\n\nimport {defaultMethod, validMethods} from './utils/constants.mjs';\nimport {normalizeHandler} from './utils/normalizeHandler.mjs';\nimport './_version.mjs';\n\n/**\n * A `Route` consists of a pair of callback functions, \"match\" and \"handler\".\n * The \"match\" callback determine if a route should be used to \"handle\" a\n * request by returning a non-falsy value if it can. The \"handler\" callback\n * is called when there is a match and should return a Promise that resolves\n * to a `Response`.\n *\n * @memberof workbox.routing\n */\nclass Route {\n /**\n * Constructor for Route class.\n *\n * @param {workbox.routing.Route~matchCallback} match\n * A callback function that determines whether the route matches a given\n * `fetch` event by returning a non-falsy value.\n * @param {workbox.routing.Route~handlerCallback} handler A callback\n * function that returns a Promise resolving to a Response.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n */\n constructor(match, handler, method) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(match, 'function', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'match',\n });\n\n if (method) {\n assert.isOneOf(method, validMethods, {paramName: 'method'});\n }\n }\n\n // These values are referenced directly by Router so cannot be\n // altered by minifification.\n this.handler = normalizeHandler(handler);\n this.match = match;\n this.method = method || defaultMethod;\n }\n}\n\nexport {Route};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {Route} from './Route.mjs';\nimport './_version.mjs';\n\n/**\n * NavigationRoute makes it easy to create a [Route]{@link\n * workbox.routing.Route} that matches for browser\n * [navigation requests]{@link https://developers.google.com/web/fundamentals/primers/service-workers/high-performance-loading#first_what_are_navigation_requests}.\n *\n * It will only match incoming Requests whose\n * [`mode`]{@link https://fetch.spec.whatwg.org/#concept-request-mode}\n * is set to `navigate`.\n *\n * You can optionally only apply this route to a subset of navigation requests\n * by using one or both of the `blacklist` and `whitelist` parameters.\n *\n * @memberof workbox.routing\n * @extends workbox.routing.Route\n */\nclass NavigationRoute extends Route {\n /**\n * If both `blacklist` and `whiltelist` are provided, the `blacklist` will\n * take precedence and the request will not match this route.\n *\n * The regular expressions in `whitelist` and `blacklist`\n * are matched against the concatenated\n * [`pathname`]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/pathname}\n * and [`search`]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/search}\n * portions of the requested URL.\n *\n * @param {workbox.routing.Route~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n * @param {Object} options\n * @param {Array} [options.blacklist] If any of these patterns match,\n * the route will not handle the request (even if a whitelist RegExp matches).\n * @param {Array} [options.whitelist=[/./]] If any of these patterns\n * match the URL's pathname and search parameter, the route will handle the\n * request (assuming the blacklist doesn't match).\n */\n constructor(handler, {whitelist = [/./], blacklist = []} = {}) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isArrayOfClass(whitelist, RegExp, {\n moduleName: 'workbox-routing',\n className: 'NavigationRoute',\n funcName: 'constructor',\n paramName: 'options.whitelist',\n });\n assert.isArrayOfClass(blacklist, RegExp, {\n moduleName: 'workbox-routing',\n className: 'NavigationRoute',\n funcName: 'constructor',\n paramName: 'options.blacklist',\n });\n }\n\n super((options) => this._match(options), handler);\n\n this._whitelist = whitelist;\n this._blacklist = blacklist;\n }\n\n /**\n * Routes match handler.\n *\n * @param {Object} options\n * @param {URL} options.url\n * @param {Request} options.request\n * @return {boolean}\n *\n * @private\n */\n _match({url, request}) {\n if (request.mode !== 'navigate') {\n return false;\n }\n\n const pathnameAndSearch = url.pathname + url.search;\n\n for (const regExp of this._blacklist) {\n if (regExp.test(pathnameAndSearch)) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`The navigation route is not being used, since the ` +\n `URL matches this blacklist pattern: ${regExp}`);\n }\n return false;\n }\n }\n\n if (this._whitelist.some((regExp) => regExp.test(pathnameAndSearch))) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`The navigation route is being used.`);\n }\n return true;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`The navigation route is not being used, since the URL ` +\n `being navigated to doesn't match the whitelist.`);\n }\n return false;\n }\n}\n\nexport {NavigationRoute};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {Route} from './Route.mjs';\nimport './_version.mjs';\n\n/**\n * RegExpRoute makes it easy to create a regular expression based\n * [Route]{@link workbox.routing.Route}.\n *\n * For same-origin requests the RegExp only needs to match part of the URL. For\n * requests against third-party servers, you must define a RegExp that matches\n * the start of the URL.\n *\n * [See the module docs for info.]{@link https://developers.google.com/web/tools/workbox/modules/workbox-routing}\n *\n * @memberof workbox.routing\n * @extends workbox.routing.Route\n */\nclass RegExpRoute extends Route {\n /**\n * If the regulard expression contains\n * [capture groups]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#grouping-back-references},\n * th ecaptured values will be passed to the\n * [handler's]{@link workbox.routing.Route~handlerCallback} `params`\n * argument.\n *\n * @param {RegExp} regExp The regular expression to match against URLs.\n * @param {workbox.routing.Route~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n */\n constructor(regExp, handler, method) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(regExp, RegExp, {\n moduleName: 'workbox-routing',\n className: 'RegExpRoute',\n funcName: 'constructor',\n paramName: 'pattern',\n });\n }\n\n const match = ({url}) => {\n const result = regExp.exec(url.href);\n\n // Return null immediately if there's no match.\n if (!result) {\n return null;\n }\n\n // Require that the match start at the first character in the URL string\n // if it's a cross-origin request.\n // See https://github.com/GoogleChrome/workbox/issues/281 for the context\n // behind this behavior.\n if ((url.origin !== location.origin) && (result.index !== 0)) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(\n `The regular expression '${regExp}' only partially matched ` +\n `against the cross-origin URL '${url}'. RegExpRoute's will only ` +\n `handle cross-origin requests if they match the entire URL.`\n );\n }\n\n return null;\n }\n\n // If the route matches, but there aren't any capture groups defined, then\n // this will return [], which is truthy and therefore sufficient to\n // indicate a match.\n // If there are capture groups, then it will return their values.\n return result.slice(1);\n };\n\n super(match, handler, method);\n }\n}\n\nexport {RegExpRoute};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\nimport {getFriendlyURL} from 'workbox-core/_private/getFriendlyURL.mjs';\n\nimport {normalizeHandler} from './utils/normalizeHandler.mjs';\nimport './_version.mjs';\n\n/**\n * The Router can be used to process a FetchEvent through one or more\n * [Routes]{@link workbox.routing.Route} responding with a Request if\n * a matching route exists.\n *\n * If no route matches a given a request, the Router will use a \"default\"\n * handler if one is defined.\n *\n * Should the matching Route throw an error, the Router will use a \"catch\"\n * handler if one is defined to gracefully deal with issues and respond with a\n * Request.\n *\n * If a request matches multiple routes, the **earliest** registered route will\n * be used to respond to the request.\n *\n * @memberof workbox.routing\n */\nclass Router {\n /**\n * Initializes a new Router.\n */\n constructor() {\n this._routes = new Map();\n }\n\n /**\n * @return {Map>} routes A `Map` of HTTP\n * method name ('GET', etc.) to an array of all the corresponding `Route`\n * instances that are registered.\n */\n get routes() {\n return this._routes;\n }\n\n /**\n * Adds a fetch event listener to respond to events when a route matches\n * the event's request.\n */\n addFetchListener() {\n self.addEventListener('fetch', (event) => {\n const {request} = event;\n const responsePromise = this.handleRequest({request, event});\n if (responsePromise) {\n event.respondWith(responsePromise);\n }\n });\n }\n\n /**\n * Adds a message event listener for URLs to cache from the window.\n * This is useful to cache resources loaded on the page prior to when the\n * service worker started controlling it.\n *\n * The format of the message data sent from the window should be as follows.\n * Where the `urlsToCache` array may consist of URL strings or an array of\n * URL string + `requestInit` object (the same as you'd pass to `fetch()`).\n *\n * ```\n * {\n * type: 'CACHE_URLS',\n * payload: {\n * urlsToCache: [\n * './script1.js',\n * './script2.js',\n * ['./script3.js', {mode: 'no-cors'}],\n * ],\n * },\n * }\n * ```\n */\n addCacheListener() {\n self.addEventListener('message', async (event) => {\n if (event.data && event.data.type === 'CACHE_URLS') {\n const {payload} = event.data;\n\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Caching URLs from the window`, payload.urlsToCache);\n }\n\n const requestPromises = Promise.all(payload.urlsToCache.map((entry) => {\n if (typeof entry === 'string') {\n entry = [entry];\n }\n\n const request = new Request(...entry);\n return this.handleRequest({request});\n }));\n\n event.waitUntil(requestPromises);\n\n // If a MessageChannel was used, reply to the message on success.\n if (event.ports && event.ports[0]) {\n await requestPromises;\n event.ports[0].postMessage(true);\n }\n }\n });\n }\n\n /**\n * Apply the routing rules to a FetchEvent object to get a Response from an\n * appropriate Route's handler.\n *\n * @param {Object} options\n * @param {Request} options.request The request to handle (this is usually\n * from a fetch event, but it does not have to be).\n * @param {FetchEvent} [options.event] The event that triggered the request,\n * if applicable.\n * @return {Promise|undefined} A promise is returned if a\n * registered route can handle the request. If there is no matching\n * route and there's no `defaultHandler`, `undefined` is returned.\n */\n handleRequest({request, event}) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'handleRequest',\n paramName: 'options.request',\n });\n }\n\n const url = new URL(request.url, location);\n if (!url.protocol.startsWith('http')) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(\n `Workbox Router only supports URLs that start with 'http'.`);\n }\n return;\n }\n\n let {params, route} = this.findMatchingRoute({url, request, event});\n let handler = route && route.handler;\n\n let debugMessages = [];\n if (process.env.NODE_ENV !== 'production') {\n if (handler) {\n debugMessages.push([\n `Found a route to handle this request:`, route,\n ]);\n\n if (params) {\n debugMessages.push([\n `Passing the following params to the route's handler:`, params,\n ]);\n }\n }\n }\n\n // If we don't have a handler because there was no matching route, then\n // fall back to defaultHandler if that's defined.\n if (!handler && this._defaultHandler) {\n if (process.env.NODE_ENV !== 'production') {\n debugMessages.push(`Failed to find a matching route. Falling ` +\n `back to the default handler.`);\n\n // This is used for debugging in logs in the case of an error.\n route = '[Default Handler]';\n }\n handler = this._defaultHandler;\n }\n\n if (!handler) {\n if (process.env.NODE_ENV !== 'production') {\n // No handler so Workbox will do nothing. If logs is set of debug\n // i.e. verbose, we should print out this information.\n logger.debug(`No route found for: ${getFriendlyURL(url)}`);\n }\n return;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // We have a handler, meaning Workbox is going to handle the route.\n // print the routing details to the console.\n logger.groupCollapsed(`Router is responding to: ${getFriendlyURL(url)}`);\n debugMessages.forEach((msg) => {\n if (Array.isArray(msg)) {\n logger.log(...msg);\n } else {\n logger.log(msg);\n }\n });\n\n // The Request and Response objects contains a great deal of information,\n // hide it under a group in case developers want to see it.\n logger.groupCollapsed(`View request details here.`);\n logger.log(request);\n logger.groupEnd();\n\n logger.groupEnd();\n }\n\n // Wrap in try and catch in case the handle method throws a synchronous\n // error. It should still callback to the catch handler.\n let responsePromise;\n try {\n responsePromise = handler.handle({url, request, event, params});\n } catch (err) {\n responsePromise = Promise.reject(err);\n }\n\n if (responsePromise && this._catchHandler) {\n responsePromise = responsePromise.catch((err) => {\n if (process.env.NODE_ENV !== 'production') {\n // Still include URL here as it will be async from the console group\n // and may not make sense without the URL\n logger.groupCollapsed(`Error thrown when responding to: ` +\n ` ${getFriendlyURL(url)}. Falling back to Catch Handler.`);\n logger.error(`Error thrown by:`, route);\n logger.error(err);\n logger.groupEnd();\n }\n return this._catchHandler.handle({url, event, err});\n });\n }\n\n return responsePromise;\n }\n\n /**\n * Checks a request and URL (and optionally an event) against the list of\n * registered routes, and if there's a match, returns the corresponding\n * route along with any params generated by the match.\n *\n * @param {Object} options\n * @param {URL} options.url\n * @param {Request} options.request The request to match.\n * @param {FetchEvent} [options.event] The corresponding event (unless N/A).\n * @return {Object} An object with `route` and `params` properties.\n * They are populated if a matching route was found or `undefined`\n * otherwise.\n */\n findMatchingRoute({url, request, event}) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(url, URL, {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'findMatchingRoute',\n paramName: 'options.url',\n });\n assert.isInstance(request, Request, {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'findMatchingRoute',\n paramName: 'options.request',\n });\n }\n\n const routes = this._routes.get(request.method) || [];\n for (const route of routes) {\n let params;\n let matchResult = route.match({url, request, event});\n if (matchResult) {\n if (Array.isArray(matchResult) && matchResult.length > 0) {\n // Instead of passing an empty array in as params, use undefined.\n params = matchResult;\n } else if ((matchResult.constructor === Object &&\n Object.keys(matchResult).length > 0)) {\n // Instead of passing an empty object in as params, use undefined.\n params = matchResult;\n }\n\n // Return early if have a match.\n return {route, params};\n }\n }\n // If no match was found above, return and empty object.\n return {};\n }\n\n /**\n * Define a default `handler` that's called when no routes explicitly\n * match the incoming request.\n *\n * Without a default handler, unmatched requests will go against the\n * network as if there were no service worker present.\n *\n * @param {workbox.routing.Route~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n */\n setDefaultHandler(handler) {\n this._defaultHandler = normalizeHandler(handler);\n }\n\n /**\n * If a Route throws an error while handling a request, this `handler`\n * will be called and given a chance to provide a response.\n *\n * @param {workbox.routing.Route~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n */\n setCatchHandler(handler) {\n this._catchHandler = normalizeHandler(handler);\n }\n\n /**\n * Registers a route with the router.\n *\n * @param {workbox.routing.Route} route The route to register.\n */\n registerRoute(route) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(route, 'object', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n\n assert.hasMethod(route, 'match', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n\n assert.isType(route.handler, 'object', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n\n assert.hasMethod(route.handler, 'handle', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route.handler',\n });\n\n assert.isType(route.method, 'string', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route.method',\n });\n }\n\n if (!this._routes.has(route.method)) {\n this._routes.set(route.method, []);\n }\n\n // Give precedence to all of the earlier routes by adding this additional\n // route to the end of the array.\n this._routes.get(route.method).push(route);\n }\n\n /**\n * Unregisters a route with the router.\n *\n * @param {workbox.routing.Route} route The route to unregister.\n */\n unregisterRoute(route) {\n if (!this._routes.has(route.method)) {\n throw new WorkboxError(\n 'unregister-route-but-not-found-with-method', {\n method: route.method,\n }\n );\n }\n\n const routeIndex = this._routes.get(route.method).indexOf(route);\n if (routeIndex > -1) {\n this._routes.get(route.method).splice(routeIndex, 1);\n } else {\n throw new WorkboxError('unregister-route-route-not-registered');\n }\n }\n}\n\nexport {Router};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {Router} from '../Router.mjs';\nimport '../_version.mjs';\n\nlet defaultRouter;\n\n/**\n * Creates a new, singleton Router instance if one does not exist. If one\n * does already exist, that instance is returned.\n *\n * @private\n * @return {Router}\n */\nexport const getOrCreateDefaultRouter = () => {\n if (!defaultRouter) {\n defaultRouter = new Router();\n\n // The helpers that use the default Router assume these listeners exist.\n defaultRouter.addFetchListener();\n defaultRouter.addCacheListener();\n }\n return defaultRouter;\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {cacheNames} from 'workbox-core/_private/cacheNames.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {NavigationRoute} from './NavigationRoute.mjs';\nimport {getOrCreateDefaultRouter} from './utils/getOrCreateDefaultRouter.mjs';\nimport './_version.mjs';\n\n\n/**\n * Registers a route that will return a precached file for a navigation\n * request. This is useful for the\n * [application shell pattern]{@link https://developers.google.com/web/fundamentals/architecture/app-shell}.\n *\n * When determining the URL of the precached HTML document, you will likely need\n * to call `workbox.precaching.getCacheKeyForURL(originalUrl)`, to account for\n * the fact that Workbox's precaching naming conventions often results in URL\n * cache keys that contain extra revisioning info.\n *\n * This method will generate a\n * [NavigationRoute]{@link workbox.routing.NavigationRoute}\n * and call\n * [Router.registerRoute()]{@link workbox.routing.Router#registerRoute} on a\n * singleton Router instance.\n *\n * @param {string} cachedAssetUrl The cache key to use for the HTML file.\n * @param {Object} [options]\n * @param {string} [options.cacheName] Cache name to store and retrieve\n * requests. Defaults to precache cache name provided by\n * [workbox-core.cacheNames]{@link workbox.core.cacheNames}.\n * @param {Array} [options.blacklist=[]] If any of these patterns\n * match, the route will not handle the request (even if a whitelist entry\n * matches).\n * @param {Array} [options.whitelist=[/./]] If any of these patterns\n * match the URL's pathname and search parameter, the route will handle the\n * request (assuming the blacklist doesn't match).\n * @return {workbox.routing.NavigationRoute} Returns the generated\n * Route.\n *\n * @alias workbox.routing.registerNavigationRoute\n */\nexport const registerNavigationRoute = (cachedAssetUrl, options = {}) => {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(cachedAssetUrl, 'string', {\n moduleName: 'workbox-routing',\n funcName: 'registerNavigationRoute',\n paramName: 'cachedAssetUrl',\n });\n }\n\n const cacheName = cacheNames.getPrecacheName(options.cacheName);\n const handler = async () => {\n try {\n const response = await caches.match(cachedAssetUrl, {cacheName});\n\n if (response) {\n return response;\n }\n\n // This shouldn't normally happen, but there are edge cases:\n // https://github.com/GoogleChrome/workbox/issues/1441\n throw new Error(`The cache ${cacheName} did not have an entry for ` +\n `${cachedAssetUrl}.`);\n } catch (error) {\n // If there's either a cache miss, or the caches.match() call threw\n // an exception, then attempt to fulfill the navigation request with\n // a response from the network rather than leaving the user with a\n // failed navigation.\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Unable to respond to navigation request with ` +\n `cached response. Falling back to network.`, error);\n }\n\n // This might still fail if the browser is offline...\n return fetch(cachedAssetUrl);\n }\n };\n\n const route = new NavigationRoute(handler, {\n whitelist: options.whitelist,\n blacklist: options.blacklist,\n });\n\n const defaultRouter = getOrCreateDefaultRouter();\n defaultRouter.registerRoute(route);\n\n return route;\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\nimport {Route} from './Route.mjs';\nimport {RegExpRoute} from './RegExpRoute.mjs';\nimport {getOrCreateDefaultRouter} from './utils/getOrCreateDefaultRouter.mjs';\nimport './_version.mjs';\n\n\n/**\n * Easily register a RegExp, string, or function with a caching\n * strategy to a singleton Router instance.\n *\n * This method will generate a Route for you if needed and\n * call [Router.registerRoute()]{@link\n * workbox.routing.Router#registerRoute}.\n *\n * @param {\n * RegExp|\n * string|\n * workbox.routing.Route~matchCallback|\n * workbox.routing.Route\n * } capture\n * If the capture param is a `Route`, all other arguments will be ignored.\n * @param {workbox.routing.Route~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n * @return {workbox.routing.Route} The generated `Route`(Useful for\n * unregistering).\n *\n * @alias workbox.routing.registerRoute\n */\nexport const registerRoute = (capture, handler, method = 'GET') => {\n let route;\n\n if (typeof capture === 'string') {\n const captureUrl = new URL(capture, location);\n\n if (process.env.NODE_ENV !== 'production') {\n if (!(capture.startsWith('/') || capture.startsWith('http'))) {\n throw new WorkboxError('invalid-string', {\n moduleName: 'workbox-routing',\n funcName: 'registerRoute',\n paramName: 'capture',\n });\n }\n\n // We want to check if Express-style wildcards are in the pathname only.\n // TODO: Remove this log message in v4.\n const valueToCheck = capture.startsWith('http') ?\n captureUrl.pathname : capture;\n\n // See https://github.com/pillarjs/path-to-regexp#parameters\n const wildcards = '[*:?+]';\n if (valueToCheck.match(new RegExp(`${wildcards}`))) {\n logger.debug(\n `The '$capture' parameter contains an Express-style wildcard ` +\n `character (${wildcards}). Strings are now always interpreted as ` +\n `exact matches; use a RegExp for partial or wildcard matches.`\n );\n }\n }\n\n const matchCallback = ({url}) => {\n if (process.env.NODE_ENV !== 'production') {\n if ((url.pathname === captureUrl.pathname) &&\n (url.origin !== captureUrl.origin)) {\n logger.debug(\n `${capture} only partially matches the cross-origin URL ` +\n `${url}. This route will only handle cross-origin requests ` +\n `if they match the entire URL.`);\n }\n }\n\n return url.href === captureUrl.href;\n };\n\n route = new Route(matchCallback, handler, method);\n } else if (capture instanceof RegExp) {\n route = new RegExpRoute(capture, handler, method);\n } else if (typeof capture === 'function') {\n route = new Route(capture, handler, method);\n } else if (capture instanceof Route) {\n route = capture;\n } else {\n throw new WorkboxError('unsupported-route-type', {\n moduleName: 'workbox-routing',\n funcName: 'registerRoute',\n paramName: 'capture',\n });\n }\n\n const defaultRouter = getOrCreateDefaultRouter();\n defaultRouter.registerRoute(route);\n\n return route;\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {getOrCreateDefaultRouter} from './utils/getOrCreateDefaultRouter.mjs';\n\nimport './_version.mjs';\n\n/**\n * If a Route throws an error while handling a request, this `handler`\n * will be called and given a chance to provide a response.\n *\n * @param {workbox.routing.Route~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n *\n * @alias workbox.routing.setCatchHandler\n */\nexport const setCatchHandler = (handler) => {\n const defaultRouter = getOrCreateDefaultRouter();\n defaultRouter.setCatchHandler(handler);\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {getOrCreateDefaultRouter} from './utils/getOrCreateDefaultRouter.mjs';\n\nimport './_version.mjs';\n\n/**\n * Define a default `handler` that's called when no routes explicitly\n * match the incoming request.\n *\n * Without a default handler, unmatched requests will go against the\n * network as if there were no service worker present.\n *\n * @param {workbox.routing.Route~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n *\n * @alias workbox.routing.setDefaultHandler\n */\nexport const setDefaultHandler = (handler) => {\n const defaultRouter = getOrCreateDefaultRouter();\n defaultRouter.setDefaultHandler(handler);\n};\n"],"names":["self","_","e","defaultMethod","normalizeHandler","handler","handle","Route","constructor","match","method","NavigationRoute","whitelist","blacklist","options","this","_match","_whitelist","_blacklist","url","request","mode","pathnameAndSearch","pathname","search","regExp","test","some","RegExpRoute","result","exec","href","origin","location","index","slice","Router","_routes","Map","addFetchListener","addEventListener","event","responsePromise","handleRequest","respondWith","addCacheListener","async","data","type","payload","requestPromises","Promise","all","urlsToCache","map","entry","Request","waitUntil","ports","postMessage","URL","protocol","startsWith","params","route","findMatchingRoute","_defaultHandler","err","reject","_catchHandler","catch","routes","get","matchResult","Array","isArray","length","Object","keys","setDefaultHandler","setCatchHandler","registerRoute","has","set","push","unregisterRoute","WorkboxError","routeIndex","indexOf","splice","defaultRouter","getOrCreateDefaultRouter","cachedAssetUrl","cacheName","cacheNames","getPrecacheName","response","caches","Error","error","fetch","capture","captureUrl","RegExp","moduleName","funcName","paramName"],"mappings":"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"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-strategies.dev.js b/pr-preview/pr-1029/workbox-v4.3.1/workbox-strategies.dev.js deleted file mode 100644 index e88a65d8b..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-strategies.dev.js +++ /dev/null @@ -1,1138 +0,0 @@ -this.workbox = this.workbox || {}; -this.workbox.strategies = (function (exports, logger_mjs, assert_mjs, cacheNames_mjs, cacheWrapper_mjs, fetchWrapper_mjs, getFriendlyURL_mjs, WorkboxError_mjs) { - 'use strict'; - - try { - self['workbox:strategies:4.3.1'] && _(); - } catch (e) {} // eslint-disable-line - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - - const getFriendlyURL = url => { - const urlObj = new URL(url, location); - - if (urlObj.origin === location.origin) { - return urlObj.pathname; - } - - return urlObj.href; - }; - - const messages = { - strategyStart: (strategyName, request) => `Using ${strategyName} to ` + `respond to '${getFriendlyURL(request.url)}'`, - printFinalResponse: response => { - if (response) { - logger_mjs.logger.groupCollapsed(`View the final response here.`); - logger_mjs.logger.log(response); - logger_mjs.logger.groupEnd(); - } - } - }; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * An implementation of a [cache-first]{@link https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/#cache-falling-back-to-network} - * request strategy. - * - * A cache first strategy is useful for assets that have been revisioned, - * such as URLs like `/styles/example.a8f5f1.css`, since they - * can be cached for long periods of time. - * - * If the network request fails, and there is no cache match, this will throw - * a `WorkboxError` exception. - * - * @memberof workbox.strategies - */ - - class CacheFirst { - /** - * @param {Object} options - * @param {string} options.cacheName Cache name to store and retrieve - * requests. Defaults to cache names provided by - * [workbox-core]{@link workbox.core.cacheNames}. - * @param {Array} options.plugins [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins} - * to use in conjunction with this caching strategy. - * @param {Object} options.fetchOptions Values passed along to the - * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters) - * of all fetch() requests made by this strategy. - * @param {Object} options.matchOptions [`CacheQueryOptions`](https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions) - */ - constructor(options = {}) { - this._cacheName = cacheNames_mjs.cacheNames.getRuntimeName(options.cacheName); - this._plugins = options.plugins || []; - this._fetchOptions = options.fetchOptions || null; - this._matchOptions = options.matchOptions || null; - } - /** - * This method will perform a request strategy and follows an API that - * will work with the - * [Workbox Router]{@link workbox.routing.Router}. - * - * @param {Object} options - * @param {Request} options.request The request to run this strategy for. - * @param {Event} [options.event] The event that triggered the request. - * @return {Promise} - */ - - - async handle({ - event, - request - }) { - return this.makeRequest({ - event, - request: request || event.request - }); - } - /** - * This method can be used to perform a make a standalone request outside the - * context of the [Workbox Router]{@link workbox.routing.Router}. - * - * See "[Advanced Recipes](https://developers.google.com/web/tools/workbox/guides/advanced-recipes#make-requests)" - * for more usage information. - * - * @param {Object} options - * @param {Request|string} options.request Either a - * [`Request`]{@link https://developer.mozilla.org/en-US/docs/Web/API/Request} - * object, or a string URL, corresponding to the request to be made. - * @param {FetchEvent} [options.event] If provided, `event.waitUntil()` will - be called automatically to extend the service worker's lifetime. - * @return {Promise} - */ - - - async makeRequest({ - event, - request - }) { - const logs = []; - - if (typeof request === 'string') { - request = new Request(request); - } - - { - assert_mjs.assert.isInstance(request, Request, { - moduleName: 'workbox-strategies', - className: 'CacheFirst', - funcName: 'makeRequest', - paramName: 'request' - }); - } - - let response = await cacheWrapper_mjs.cacheWrapper.match({ - cacheName: this._cacheName, - request, - event, - matchOptions: this._matchOptions, - plugins: this._plugins - }); - let error; - - if (!response) { - { - logs.push(`No response found in the '${this._cacheName}' cache. ` + `Will respond with a network request.`); - } - - try { - response = await this._getFromNetwork(request, event); - } catch (err) { - error = err; - } - - { - if (response) { - logs.push(`Got response from network.`); - } else { - logs.push(`Unable to get a response from the network.`); - } - } - } else { - { - logs.push(`Found a cached response in the '${this._cacheName}' cache.`); - } - } - - { - logger_mjs.logger.groupCollapsed(messages.strategyStart('CacheFirst', request)); - - for (let log of logs) { - logger_mjs.logger.log(log); - } - - messages.printFinalResponse(response); - logger_mjs.logger.groupEnd(); - } - - if (!response) { - throw new WorkboxError_mjs.WorkboxError('no-response', { - url: request.url, - error - }); - } - - return response; - } - /** - * Handles the network and cache part of CacheFirst. - * - * @param {Request} request - * @param {FetchEvent} [event] - * @return {Promise} - * - * @private - */ - - - async _getFromNetwork(request, event) { - const response = await fetchWrapper_mjs.fetchWrapper.fetch({ - request, - event, - fetchOptions: this._fetchOptions, - plugins: this._plugins - }); // Keep the service worker while we put the request to the cache - - const responseClone = response.clone(); - const cachePutPromise = cacheWrapper_mjs.cacheWrapper.put({ - cacheName: this._cacheName, - request, - response: responseClone, - event, - plugins: this._plugins - }); - - if (event) { - try { - event.waitUntil(cachePutPromise); - } catch (error) { - { - logger_mjs.logger.warn(`Unable to ensure service worker stays alive when ` + `updating cache for '${getFriendlyURL_mjs.getFriendlyURL(request.url)}'.`); - } - } - } - - return response; - } - - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * An implementation of a - * [cache-only]{@link https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/#cache-only} - * request strategy. - * - * This class is useful if you want to take advantage of any - * [Workbox plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}. - * - * If there is no cache match, this will throw a `WorkboxError` exception. - * - * @memberof workbox.strategies - */ - - class CacheOnly { - /** - * @param {Object} options - * @param {string} options.cacheName Cache name to store and retrieve - * requests. Defaults to cache names provided by - * [workbox-core]{@link workbox.core.cacheNames}. - * @param {Array} options.plugins [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins} - * to use in conjunction with this caching strategy. - * @param {Object} options.matchOptions [`CacheQueryOptions`](https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions) - */ - constructor(options = {}) { - this._cacheName = cacheNames_mjs.cacheNames.getRuntimeName(options.cacheName); - this._plugins = options.plugins || []; - this._matchOptions = options.matchOptions || null; - } - /** - * This method will perform a request strategy and follows an API that - * will work with the - * [Workbox Router]{@link workbox.routing.Router}. - * - * @param {Object} options - * @param {Request} options.request The request to run this strategy for. - * @param {Event} [options.event] The event that triggered the request. - * @return {Promise} - */ - - - async handle({ - event, - request - }) { - return this.makeRequest({ - event, - request: request || event.request - }); - } - /** - * This method can be used to perform a make a standalone request outside the - * context of the [Workbox Router]{@link workbox.routing.Router}. - * - * See "[Advanced Recipes](https://developers.google.com/web/tools/workbox/guides/advanced-recipes#make-requests)" - * for more usage information. - * - * @param {Object} options - * @param {Request|string} options.request Either a - * [`Request`]{@link https://developer.mozilla.org/en-US/docs/Web/API/Request} - * object, or a string URL, corresponding to the request to be made. - * @param {FetchEvent} [options.event] If provided, `event.waitUntil()` will - * be called automatically to extend the service worker's lifetime. - * @return {Promise} - */ - - - async makeRequest({ - event, - request - }) { - if (typeof request === 'string') { - request = new Request(request); - } - - { - assert_mjs.assert.isInstance(request, Request, { - moduleName: 'workbox-strategies', - className: 'CacheOnly', - funcName: 'makeRequest', - paramName: 'request' - }); - } - - const response = await cacheWrapper_mjs.cacheWrapper.match({ - cacheName: this._cacheName, - request, - event, - matchOptions: this._matchOptions, - plugins: this._plugins - }); - - { - logger_mjs.logger.groupCollapsed(messages.strategyStart('CacheOnly', request)); - - if (response) { - logger_mjs.logger.log(`Found a cached response in the '${this._cacheName}'` + ` cache.`); - messages.printFinalResponse(response); - } else { - logger_mjs.logger.log(`No response found in the '${this._cacheName}' cache.`); - } - - logger_mjs.logger.groupEnd(); - } - - if (!response) { - throw new WorkboxError_mjs.WorkboxError('no-response', { - url: request.url - }); - } - - return response; - } - - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - const cacheOkAndOpaquePlugin = { - /** - * Returns a valid response (to allow caching) if the status is 200 (OK) or - * 0 (opaque). - * - * @param {Object} options - * @param {Response} options.response - * @return {Response|null} - * - * @private - */ - cacheWillUpdate: ({ - response - }) => { - if (response.status === 200 || response.status === 0) { - return response; - } - - return null; - } - }; - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * An implementation of a - * [network first]{@link https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/#network-falling-back-to-cache} - * request strategy. - * - * By default, this strategy will cache responses with a 200 status code as - * well as [opaque responses]{@link https://developers.google.com/web/tools/workbox/guides/handle-third-party-requests}. - * Opaque responses are are cross-origin requests where the response doesn't - * support [CORS]{@link https://enable-cors.org/}. - * - * If the network request fails, and there is no cache match, this will throw - * a `WorkboxError` exception. - * - * @memberof workbox.strategies - */ - - class NetworkFirst { - /** - * @param {Object} options - * @param {string} options.cacheName Cache name to store and retrieve - * requests. Defaults to cache names provided by - * [workbox-core]{@link workbox.core.cacheNames}. - * @param {Array} options.plugins [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins} - * to use in conjunction with this caching strategy. - * @param {Object} options.fetchOptions Values passed along to the - * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters) - * of all fetch() requests made by this strategy. - * @param {Object} options.matchOptions [`CacheQueryOptions`](https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions) - * @param {number} options.networkTimeoutSeconds If set, any network requests - * that fail to respond within the timeout will fallback to the cache. - * - * This option can be used to combat - * "[lie-fi]{@link https://developers.google.com/web/fundamentals/performance/poor-connectivity/#lie-fi}" - * scenarios. - */ - constructor(options = {}) { - this._cacheName = cacheNames_mjs.cacheNames.getRuntimeName(options.cacheName); - - if (options.plugins) { - let isUsingCacheWillUpdate = options.plugins.some(plugin => !!plugin.cacheWillUpdate); - this._plugins = isUsingCacheWillUpdate ? options.plugins : [cacheOkAndOpaquePlugin, ...options.plugins]; - } else { - // No plugins passed in, use the default plugin. - this._plugins = [cacheOkAndOpaquePlugin]; - } - - this._networkTimeoutSeconds = options.networkTimeoutSeconds; - - { - if (this._networkTimeoutSeconds) { - assert_mjs.assert.isType(this._networkTimeoutSeconds, 'number', { - moduleName: 'workbox-strategies', - className: 'NetworkFirst', - funcName: 'constructor', - paramName: 'networkTimeoutSeconds' - }); - } - } - - this._fetchOptions = options.fetchOptions || null; - this._matchOptions = options.matchOptions || null; - } - /** - * This method will perform a request strategy and follows an API that - * will work with the - * [Workbox Router]{@link workbox.routing.Router}. - * - * @param {Object} options - * @param {Request} options.request The request to run this strategy for. - * @param {Event} [options.event] The event that triggered the request. - * @return {Promise} - */ - - - async handle({ - event, - request - }) { - return this.makeRequest({ - event, - request: request || event.request - }); - } - /** - * This method can be used to perform a make a standalone request outside the - * context of the [Workbox Router]{@link workbox.routing.Router}. - * - * See "[Advanced Recipes](https://developers.google.com/web/tools/workbox/guides/advanced-recipes#make-requests)" - * for more usage information. - * - * @param {Object} options - * @param {Request|string} options.request Either a - * [`Request`]{@link https://developer.mozilla.org/en-US/docs/Web/API/Request} - * object, or a string URL, corresponding to the request to be made. - * @param {FetchEvent} [options.event] If provided, `event.waitUntil()` will - * be called automatically to extend the service worker's lifetime. - * @return {Promise} - */ - - - async makeRequest({ - event, - request - }) { - const logs = []; - - if (typeof request === 'string') { - request = new Request(request); - } - - { - assert_mjs.assert.isInstance(request, Request, { - moduleName: 'workbox-strategies', - className: 'NetworkFirst', - funcName: 'handle', - paramName: 'makeRequest' - }); - } - - const promises = []; - let timeoutId; - - if (this._networkTimeoutSeconds) { - const { - id, - promise - } = this._getTimeoutPromise({ - request, - event, - logs - }); - - timeoutId = id; - promises.push(promise); - } - - const networkPromise = this._getNetworkPromise({ - timeoutId, - request, - event, - logs - }); - - promises.push(networkPromise); // Promise.race() will resolve as soon as the first promise resolves. - - let response = await Promise.race(promises); // If Promise.race() resolved with null, it might be due to a network - // timeout + a cache miss. If that were to happen, we'd rather wait until - // the networkPromise resolves instead of returning null. - // Note that it's fine to await an already-resolved promise, so we don't - // have to check to see if it's still "in flight". - - if (!response) { - response = await networkPromise; - } - - { - logger_mjs.logger.groupCollapsed(messages.strategyStart('NetworkFirst', request)); - - for (let log of logs) { - logger_mjs.logger.log(log); - } - - messages.printFinalResponse(response); - logger_mjs.logger.groupEnd(); - } - - if (!response) { - throw new WorkboxError_mjs.WorkboxError('no-response', { - url: request.url - }); - } - - return response; - } - /** - * @param {Object} options - * @param {Request} options.request - * @param {Array} options.logs A reference to the logs array - * @param {Event} [options.event] - * @return {Promise} - * - * @private - */ - - - _getTimeoutPromise({ - request, - logs, - event - }) { - let timeoutId; - const timeoutPromise = new Promise(resolve => { - const onNetworkTimeout = async () => { - { - logs.push(`Timing out the network response at ` + `${this._networkTimeoutSeconds} seconds.`); - } - - resolve((await this._respondFromCache({ - request, - event - }))); - }; - - timeoutId = setTimeout(onNetworkTimeout, this._networkTimeoutSeconds * 1000); - }); - return { - promise: timeoutPromise, - id: timeoutId - }; - } - /** - * @param {Object} options - * @param {number|undefined} options.timeoutId - * @param {Request} options.request - * @param {Array} options.logs A reference to the logs Array. - * @param {Event} [options.event] - * @return {Promise} - * - * @private - */ - - - async _getNetworkPromise({ - timeoutId, - request, - logs, - event - }) { - let error; - let response; - - try { - response = await fetchWrapper_mjs.fetchWrapper.fetch({ - request, - event, - fetchOptions: this._fetchOptions, - plugins: this._plugins - }); - } catch (err) { - error = err; - } - - if (timeoutId) { - clearTimeout(timeoutId); - } - - { - if (response) { - logs.push(`Got response from network.`); - } else { - logs.push(`Unable to get a response from the network. Will respond ` + `with a cached response.`); - } - } - - if (error || !response) { - response = await this._respondFromCache({ - request, - event - }); - - { - if (response) { - logs.push(`Found a cached response in the '${this._cacheName}'` + ` cache.`); - } else { - logs.push(`No response found in the '${this._cacheName}' cache.`); - } - } - } else { - // Keep the service worker alive while we put the request in the cache - const responseClone = response.clone(); - const cachePut = cacheWrapper_mjs.cacheWrapper.put({ - cacheName: this._cacheName, - request, - response: responseClone, - event, - plugins: this._plugins - }); - - if (event) { - try { - // The event has been responded to so we can keep the SW alive to - // respond to the request - event.waitUntil(cachePut); - } catch (err) { - { - logger_mjs.logger.warn(`Unable to ensure service worker stays alive when ` + `updating cache for '${getFriendlyURL_mjs.getFriendlyURL(request.url)}'.`); - } - } - } - } - - return response; - } - /** - * Used if the network timeouts or fails to make the request. - * - * @param {Object} options - * @param {Request} request The request to match in the cache - * @param {Event} [options.event] - * @return {Promise} - * - * @private - */ - - - _respondFromCache({ - event, - request - }) { - return cacheWrapper_mjs.cacheWrapper.match({ - cacheName: this._cacheName, - request, - event, - matchOptions: this._matchOptions, - plugins: this._plugins - }); - } - - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * An implementation of a - * [network-only]{@link https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/#network-only} - * request strategy. - * - * This class is useful if you want to take advantage of any - * [Workbox plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}. - * - * If the network request fails, this will throw a `WorkboxError` exception. - * - * @memberof workbox.strategies - */ - - class NetworkOnly { - /** - * @param {Object} options - * @param {string} options.cacheName Cache name to store and retrieve - * requests. Defaults to cache names provided by - * [workbox-core]{@link workbox.core.cacheNames}. - * @param {Array} options.plugins [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins} - * to use in conjunction with this caching strategy. - * @param {Object} options.fetchOptions Values passed along to the - * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters) - * of all fetch() requests made by this strategy. - */ - constructor(options = {}) { - this._cacheName = cacheNames_mjs.cacheNames.getRuntimeName(options.cacheName); - this._plugins = options.plugins || []; - this._fetchOptions = options.fetchOptions || null; - } - /** - * This method will perform a request strategy and follows an API that - * will work with the - * [Workbox Router]{@link workbox.routing.Router}. - * - * @param {Object} options - * @param {Request} options.request The request to run this strategy for. - * @param {Event} [options.event] The event that triggered the request. - * @return {Promise} - */ - - - async handle({ - event, - request - }) { - return this.makeRequest({ - event, - request: request || event.request - }); - } - /** - * This method can be used to perform a make a standalone request outside the - * context of the [Workbox Router]{@link workbox.routing.Router}. - * - * See "[Advanced Recipes](https://developers.google.com/web/tools/workbox/guides/advanced-recipes#make-requests)" - * for more usage information. - * - * @param {Object} options - * @param {Request|string} options.request Either a - * [`Request`]{@link https://developer.mozilla.org/en-US/docs/Web/API/Request} - * object, or a string URL, corresponding to the request to be made. - * @param {FetchEvent} [options.event] If provided, `event.waitUntil()` will - * be called automatically to extend the service worker's lifetime. - * @return {Promise} - */ - - - async makeRequest({ - event, - request - }) { - if (typeof request === 'string') { - request = new Request(request); - } - - { - assert_mjs.assert.isInstance(request, Request, { - moduleName: 'workbox-strategies', - className: 'NetworkOnly', - funcName: 'handle', - paramName: 'request' - }); - } - - let error; - let response; - - try { - response = await fetchWrapper_mjs.fetchWrapper.fetch({ - request, - event, - fetchOptions: this._fetchOptions, - plugins: this._plugins - }); - } catch (err) { - error = err; - } - - { - logger_mjs.logger.groupCollapsed(messages.strategyStart('NetworkOnly', request)); - - if (response) { - logger_mjs.logger.log(`Got response from network.`); - } else { - logger_mjs.logger.log(`Unable to get a response from the network.`); - } - - messages.printFinalResponse(response); - logger_mjs.logger.groupEnd(); - } - - if (!response) { - throw new WorkboxError_mjs.WorkboxError('no-response', { - url: request.url, - error - }); - } - - return response; - } - - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * An implementation of a - * [stale-while-revalidate]{@link https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/#stale-while-revalidate} - * request strategy. - * - * Resources are requested from both the cache and the network in parallel. - * The strategy will respond with the cached version if available, otherwise - * wait for the network response. The cache is updated with the network response - * with each successful request. - * - * By default, this strategy will cache responses with a 200 status code as - * well as [opaque responses]{@link https://developers.google.com/web/tools/workbox/guides/handle-third-party-requests}. - * Opaque responses are are cross-origin requests where the response doesn't - * support [CORS]{@link https://enable-cors.org/}. - * - * If the network request fails, and there is no cache match, this will throw - * a `WorkboxError` exception. - * - * @memberof workbox.strategies - */ - - class StaleWhileRevalidate { - /** - * @param {Object} options - * @param {string} options.cacheName Cache name to store and retrieve - * requests. Defaults to cache names provided by - * [workbox-core]{@link workbox.core.cacheNames}. - * @param {Array} options.plugins [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins} - * to use in conjunction with this caching strategy. - * @param {Object} options.fetchOptions Values passed along to the - * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters) - * of all fetch() requests made by this strategy. - * @param {Object} options.matchOptions [`CacheQueryOptions`](https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions) - */ - constructor(options = {}) { - this._cacheName = cacheNames_mjs.cacheNames.getRuntimeName(options.cacheName); - this._plugins = options.plugins || []; - - if (options.plugins) { - let isUsingCacheWillUpdate = options.plugins.some(plugin => !!plugin.cacheWillUpdate); - this._plugins = isUsingCacheWillUpdate ? options.plugins : [cacheOkAndOpaquePlugin, ...options.plugins]; - } else { - // No plugins passed in, use the default plugin. - this._plugins = [cacheOkAndOpaquePlugin]; - } - - this._fetchOptions = options.fetchOptions || null; - this._matchOptions = options.matchOptions || null; - } - /** - * This method will perform a request strategy and follows an API that - * will work with the - * [Workbox Router]{@link workbox.routing.Router}. - * - * @param {Object} options - * @param {Request} options.request The request to run this strategy for. - * @param {Event} [options.event] The event that triggered the request. - * @return {Promise} - */ - - - async handle({ - event, - request - }) { - return this.makeRequest({ - event, - request: request || event.request - }); - } - /** - * This method can be used to perform a make a standalone request outside the - * context of the [Workbox Router]{@link workbox.routing.Router}. - * - * See "[Advanced Recipes](https://developers.google.com/web/tools/workbox/guides/advanced-recipes#make-requests)" - * for more usage information. - * - * @param {Object} options - * @param {Request|string} options.request Either a - * [`Request`]{@link https://developer.mozilla.org/en-US/docs/Web/API/Request} - * object, or a string URL, corresponding to the request to be made. - * @param {FetchEvent} [options.event] If provided, `event.waitUntil()` will - * be called automatically to extend the service worker's lifetime. - * @return {Promise} - */ - - - async makeRequest({ - event, - request - }) { - const logs = []; - - if (typeof request === 'string') { - request = new Request(request); - } - - { - assert_mjs.assert.isInstance(request, Request, { - moduleName: 'workbox-strategies', - className: 'StaleWhileRevalidate', - funcName: 'handle', - paramName: 'request' - }); - } - - const fetchAndCachePromise = this._getFromNetwork({ - request, - event - }); - - let response = await cacheWrapper_mjs.cacheWrapper.match({ - cacheName: this._cacheName, - request, - event, - matchOptions: this._matchOptions, - plugins: this._plugins - }); - let error; - - if (response) { - { - logs.push(`Found a cached response in the '${this._cacheName}'` + ` cache. Will update with the network response in the background.`); - } - - if (event) { - try { - event.waitUntil(fetchAndCachePromise); - } catch (error) { - { - logger_mjs.logger.warn(`Unable to ensure service worker stays alive when ` + `updating cache for '${getFriendlyURL_mjs.getFriendlyURL(request.url)}'.`); - } - } - } - } else { - { - logs.push(`No response found in the '${this._cacheName}' cache. ` + `Will wait for the network response.`); - } - - try { - response = await fetchAndCachePromise; - } catch (err) { - error = err; - } - } - - { - logger_mjs.logger.groupCollapsed(messages.strategyStart('StaleWhileRevalidate', request)); - - for (let log of logs) { - logger_mjs.logger.log(log); - } - - messages.printFinalResponse(response); - logger_mjs.logger.groupEnd(); - } - - if (!response) { - throw new WorkboxError_mjs.WorkboxError('no-response', { - url: request.url, - error - }); - } - - return response; - } - /** - * @param {Object} options - * @param {Request} options.request - * @param {Event} [options.event] - * @return {Promise} - * - * @private - */ - - - async _getFromNetwork({ - request, - event - }) { - const response = await fetchWrapper_mjs.fetchWrapper.fetch({ - request, - event, - fetchOptions: this._fetchOptions, - plugins: this._plugins - }); - const cachePutPromise = cacheWrapper_mjs.cacheWrapper.put({ - cacheName: this._cacheName, - request, - response: response.clone(), - event, - plugins: this._plugins - }); - - if (event) { - try { - event.waitUntil(cachePutPromise); - } catch (error) { - { - logger_mjs.logger.warn(`Unable to ensure service worker stays alive when ` + `updating cache for '${getFriendlyURL_mjs.getFriendlyURL(request.url)}'.`); - } - } - } - - return response; - } - - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - const mapping = { - cacheFirst: CacheFirst, - cacheOnly: CacheOnly, - networkFirst: NetworkFirst, - networkOnly: NetworkOnly, - staleWhileRevalidate: StaleWhileRevalidate - }; - - const deprecate = strategy => { - const StrategyCtr = mapping[strategy]; - return options => { - { - const strategyCtrName = strategy[0].toUpperCase() + strategy.slice(1); - logger_mjs.logger.warn(`The 'workbox.strategies.${strategy}()' function has been ` + `deprecated and will be removed in a future version of Workbox.\n` + `Please use 'new workbox.strategies.${strategyCtrName}()' instead.`); - } - - return new StrategyCtr(options); - }; - }; - /** - * @function workbox.strategies.cacheFirst - * @param {Object} options See the {@link workbox.strategies.CacheFirst} - * constructor for more info. - * @deprecated since v4.0.0 - */ - - - const cacheFirst = deprecate('cacheFirst'); - /** - * @function workbox.strategies.cacheOnly - * @param {Object} options See the {@link workbox.strategies.CacheOnly} - * constructor for more info. - * @deprecated since v4.0.0 - */ - - const cacheOnly = deprecate('cacheOnly'); - /** - * @function workbox.strategies.networkFirst - * @param {Object} options See the {@link workbox.strategies.NetworkFirst} - * constructor for more info. - * @deprecated since v4.0.0 - */ - - const networkFirst = deprecate('networkFirst'); - /** - * @function workbox.strategies.networkOnly - * @param {Object} options See the {@link workbox.strategies.NetworkOnly} - * constructor for more info. - * @deprecated since v4.0.0 - */ - - const networkOnly = deprecate('networkOnly'); - /** - * @function workbox.strategies.staleWhileRevalidate - * @param {Object} options See the - * {@link workbox.strategies.StaleWhileRevalidate} constructor for more info. - * @deprecated since v4.0.0 - */ - - const staleWhileRevalidate = deprecate('staleWhileRevalidate'); - - exports.CacheFirst = CacheFirst; - exports.CacheOnly = CacheOnly; - exports.NetworkFirst = NetworkFirst; - exports.NetworkOnly = NetworkOnly; - exports.StaleWhileRevalidate = StaleWhileRevalidate; - exports.cacheFirst = cacheFirst; - exports.cacheOnly = cacheOnly; - exports.networkFirst = networkFirst; - exports.networkOnly = networkOnly; - exports.staleWhileRevalidate = staleWhileRevalidate; - - return exports; - -}({}, workbox.core._private, workbox.core._private, workbox.core._private, workbox.core._private, workbox.core._private, workbox.core._private, workbox.core._private)); -//# sourceMappingURL=workbox-strategies.dev.js.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-strategies.dev.js.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-strategies.dev.js.map deleted file mode 100644 index 12df5e649..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-strategies.dev.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-strategies.dev.js","sources":["../_version.mjs","../utils/messages.mjs","../CacheFirst.mjs","../CacheOnly.mjs","../plugins/cacheOkAndOpaquePlugin.mjs","../NetworkFirst.mjs","../NetworkOnly.mjs","../StaleWhileRevalidate.mjs","../index.mjs"],"sourcesContent":["try{self['workbox:strategies:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport '../_version.mjs';\n\nconst getFriendlyURL = (url) => {\n const urlObj = new URL(url, location);\n if (urlObj.origin === location.origin) {\n return urlObj.pathname;\n }\n return urlObj.href;\n};\n\nexport const messages = {\n strategyStart: (strategyName, request) => `Using ${strategyName} to ` +\n `respond to '${getFriendlyURL(request.url)}'`,\n printFinalResponse: (response) => {\n if (response) {\n logger.groupCollapsed(`View the final response here.`);\n logger.log(response);\n logger.groupEnd();\n }\n },\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {cacheNames} from 'workbox-core/_private/cacheNames.mjs';\nimport {cacheWrapper} from 'workbox-core/_private/cacheWrapper.mjs';\nimport {fetchWrapper} from 'workbox-core/_private/fetchWrapper.mjs';\nimport {getFriendlyURL} from 'workbox-core/_private/getFriendlyURL.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\n\nimport {messages} from './utils/messages.mjs';\nimport './_version.mjs';\n\n/**\n * An implementation of a [cache-first]{@link https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/#cache-falling-back-to-network}\n * request strategy.\n *\n * A cache first strategy is useful for assets that have been revisioned,\n * such as URLs like `/styles/example.a8f5f1.css`, since they\n * can be cached for long periods of time.\n *\n * If the network request fails, and there is no cache match, this will throw\n * a `WorkboxError` exception.\n *\n * @memberof workbox.strategies\n */\nclass CacheFirst {\n /**\n * @param {Object} options\n * @param {string} options.cacheName Cache name to store and retrieve\n * requests. Defaults to cache names provided by\n * [workbox-core]{@link workbox.core.cacheNames}.\n * @param {Array} options.plugins [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} options.fetchOptions Values passed along to the\n * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)\n * of all fetch() requests made by this strategy.\n * @param {Object} options.matchOptions [`CacheQueryOptions`](https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions)\n */\n constructor(options = {}) {\n this._cacheName = cacheNames.getRuntimeName(options.cacheName);\n this._plugins = options.plugins || [];\n this._fetchOptions = options.fetchOptions || null;\n this._matchOptions = options.matchOptions || null;\n }\n\n /**\n * This method will perform a request strategy and follows an API that\n * will work with the\n * [Workbox Router]{@link workbox.routing.Router}.\n *\n * @param {Object} options\n * @param {Request} options.request The request to run this strategy for.\n * @param {Event} [options.event] The event that triggered the request.\n * @return {Promise}\n */\n async handle({event, request}) {\n return this.makeRequest({\n event,\n request: request || event.request,\n });\n }\n\n /**\n * This method can be used to perform a make a standalone request outside the\n * context of the [Workbox Router]{@link workbox.routing.Router}.\n *\n * See \"[Advanced Recipes](https://developers.google.com/web/tools/workbox/guides/advanced-recipes#make-requests)\"\n * for more usage information.\n *\n * @param {Object} options\n * @param {Request|string} options.request Either a\n * [`Request`]{@link https://developer.mozilla.org/en-US/docs/Web/API/Request}\n * object, or a string URL, corresponding to the request to be made.\n * @param {FetchEvent} [options.event] If provided, `event.waitUntil()` will\n be called automatically to extend the service worker's lifetime.\n * @return {Promise}\n */\n async makeRequest({event, request}) {\n const logs = [];\n\n if (typeof request === 'string') {\n request = new Request(request);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-strategies',\n className: 'CacheFirst',\n funcName: 'makeRequest',\n paramName: 'request',\n });\n }\n\n let response = await cacheWrapper.match({\n cacheName: this._cacheName,\n request,\n event,\n matchOptions: this._matchOptions,\n plugins: this._plugins,\n });\n\n let error;\n if (!response) {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(\n `No response found in the '${this._cacheName}' cache. ` +\n `Will respond with a network request.`);\n }\n try {\n response = await this._getFromNetwork(request, event);\n } catch (err) {\n error = err;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (response) {\n logs.push(`Got response from network.`);\n } else {\n logs.push(`Unable to get a response from the network.`);\n }\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(\n `Found a cached response in the '${this._cacheName}' cache.`);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n logger.groupCollapsed(\n messages.strategyStart('CacheFirst', request));\n for (let log of logs) {\n logger.log(log);\n }\n messages.printFinalResponse(response);\n logger.groupEnd();\n }\n\n if (!response) {\n throw new WorkboxError('no-response', {url: request.url, error});\n }\n return response;\n }\n\n /**\n * Handles the network and cache part of CacheFirst.\n *\n * @param {Request} request\n * @param {FetchEvent} [event]\n * @return {Promise}\n *\n * @private\n */\n async _getFromNetwork(request, event) {\n const response = await fetchWrapper.fetch({\n request,\n event,\n fetchOptions: this._fetchOptions,\n plugins: this._plugins,\n });\n\n // Keep the service worker while we put the request to the cache\n const responseClone = response.clone();\n const cachePutPromise = cacheWrapper.put({\n cacheName: this._cacheName,\n request,\n response: responseClone,\n event,\n plugins: this._plugins,\n });\n\n if (event) {\n try {\n event.waitUntil(cachePutPromise);\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`Unable to ensure service worker stays alive when ` +\n `updating cache for '${getFriendlyURL(request.url)}'.`);\n }\n }\n }\n\n return response;\n }\n}\n\nexport {CacheFirst};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {cacheNames} from 'workbox-core/_private/cacheNames.mjs';\nimport {cacheWrapper} from 'workbox-core/_private/cacheWrapper.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\n\nimport {messages} from './utils/messages.mjs';\nimport './_version.mjs';\n\n\n/**\n * An implementation of a\n * [cache-only]{@link https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/#cache-only}\n * request strategy.\n *\n * This class is useful if you want to take advantage of any\n * [Workbox plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}.\n *\n * If there is no cache match, this will throw a `WorkboxError` exception.\n *\n * @memberof workbox.strategies\n */\nclass CacheOnly {\n /**\n * @param {Object} options\n * @param {string} options.cacheName Cache name to store and retrieve\n * requests. Defaults to cache names provided by\n * [workbox-core]{@link workbox.core.cacheNames}.\n * @param {Array} options.plugins [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} options.matchOptions [`CacheQueryOptions`](https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions)\n */\n constructor(options = {}) {\n this._cacheName = cacheNames.getRuntimeName(options.cacheName);\n this._plugins = options.plugins || [];\n this._matchOptions = options.matchOptions || null;\n }\n\n /**\n * This method will perform a request strategy and follows an API that\n * will work with the\n * [Workbox Router]{@link workbox.routing.Router}.\n *\n * @param {Object} options\n * @param {Request} options.request The request to run this strategy for.\n * @param {Event} [options.event] The event that triggered the request.\n * @return {Promise}\n */\n async handle({event, request}) {\n return this.makeRequest({\n event,\n request: request || event.request,\n });\n }\n\n /**\n * This method can be used to perform a make a standalone request outside the\n * context of the [Workbox Router]{@link workbox.routing.Router}.\n *\n * See \"[Advanced Recipes](https://developers.google.com/web/tools/workbox/guides/advanced-recipes#make-requests)\"\n * for more usage information.\n *\n * @param {Object} options\n * @param {Request|string} options.request Either a\n * [`Request`]{@link https://developer.mozilla.org/en-US/docs/Web/API/Request}\n * object, or a string URL, corresponding to the request to be made.\n * @param {FetchEvent} [options.event] If provided, `event.waitUntil()` will\n * be called automatically to extend the service worker's lifetime.\n * @return {Promise}\n */\n async makeRequest({event, request}) {\n if (typeof request === 'string') {\n request = new Request(request);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-strategies',\n className: 'CacheOnly',\n funcName: 'makeRequest',\n paramName: 'request',\n });\n }\n\n const response = await cacheWrapper.match({\n cacheName: this._cacheName,\n request,\n event,\n matchOptions: this._matchOptions,\n plugins: this._plugins,\n });\n\n if (process.env.NODE_ENV !== 'production') {\n logger.groupCollapsed(\n messages.strategyStart('CacheOnly', request));\n if (response) {\n logger.log(`Found a cached response in the '${this._cacheName}'` +\n ` cache.`);\n messages.printFinalResponse(response);\n } else {\n logger.log(`No response found in the '${this._cacheName}' cache.`);\n }\n logger.groupEnd();\n }\n\n if (!response) {\n throw new WorkboxError('no-response', {url: request.url});\n }\n return response;\n }\n}\n\nexport {CacheOnly};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\nexport const cacheOkAndOpaquePlugin = {\n /**\n * Returns a valid response (to allow caching) if the status is 200 (OK) or\n * 0 (opaque).\n *\n * @param {Object} options\n * @param {Response} options.response\n * @return {Response|null}\n *\n * @private\n */\n cacheWillUpdate: ({response}) => {\n if (response.status === 200 || response.status === 0) {\n return response;\n }\n return null;\n },\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {cacheNames} from 'workbox-core/_private/cacheNames.mjs';\nimport {cacheWrapper} from 'workbox-core/_private/cacheWrapper.mjs';\nimport {fetchWrapper} from 'workbox-core/_private/fetchWrapper.mjs';\nimport {getFriendlyURL} from 'workbox-core/_private/getFriendlyURL.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\n\nimport {messages} from './utils/messages.mjs';\nimport {cacheOkAndOpaquePlugin} from './plugins/cacheOkAndOpaquePlugin.mjs';\nimport './_version.mjs';\n\n/**\n * An implementation of a\n * [network first]{@link https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/#network-falling-back-to-cache}\n * request strategy.\n *\n * By default, this strategy will cache responses with a 200 status code as\n * well as [opaque responses]{@link https://developers.google.com/web/tools/workbox/guides/handle-third-party-requests}.\n * Opaque responses are are cross-origin requests where the response doesn't\n * support [CORS]{@link https://enable-cors.org/}.\n *\n * If the network request fails, and there is no cache match, this will throw\n * a `WorkboxError` exception.\n *\n * @memberof workbox.strategies\n */\nclass NetworkFirst {\n /**\n * @param {Object} options\n * @param {string} options.cacheName Cache name to store and retrieve\n * requests. Defaults to cache names provided by\n * [workbox-core]{@link workbox.core.cacheNames}.\n * @param {Array} options.plugins [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} options.fetchOptions Values passed along to the\n * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)\n * of all fetch() requests made by this strategy.\n * @param {Object} options.matchOptions [`CacheQueryOptions`](https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions)\n * @param {number} options.networkTimeoutSeconds If set, any network requests\n * that fail to respond within the timeout will fallback to the cache.\n *\n * This option can be used to combat\n * \"[lie-fi]{@link https://developers.google.com/web/fundamentals/performance/poor-connectivity/#lie-fi}\"\n * scenarios.\n */\n constructor(options = {}) {\n this._cacheName = cacheNames.getRuntimeName(options.cacheName);\n\n if (options.plugins) {\n let isUsingCacheWillUpdate =\n options.plugins.some((plugin) => !!plugin.cacheWillUpdate);\n this._plugins = isUsingCacheWillUpdate ?\n options.plugins : [cacheOkAndOpaquePlugin, ...options.plugins];\n } else {\n // No plugins passed in, use the default plugin.\n this._plugins = [cacheOkAndOpaquePlugin];\n }\n\n this._networkTimeoutSeconds = options.networkTimeoutSeconds;\n if (process.env.NODE_ENV !== 'production') {\n if (this._networkTimeoutSeconds) {\n assert.isType(this._networkTimeoutSeconds, 'number', {\n moduleName: 'workbox-strategies',\n className: 'NetworkFirst',\n funcName: 'constructor',\n paramName: 'networkTimeoutSeconds',\n });\n }\n }\n\n this._fetchOptions = options.fetchOptions || null;\n this._matchOptions = options.matchOptions || null;\n }\n\n /**\n * This method will perform a request strategy and follows an API that\n * will work with the\n * [Workbox Router]{@link workbox.routing.Router}.\n *\n * @param {Object} options\n * @param {Request} options.request The request to run this strategy for.\n * @param {Event} [options.event] The event that triggered the request.\n * @return {Promise}\n */\n async handle({event, request}) {\n return this.makeRequest({\n event,\n request: request || event.request,\n });\n }\n\n /**\n * This method can be used to perform a make a standalone request outside the\n * context of the [Workbox Router]{@link workbox.routing.Router}.\n *\n * See \"[Advanced Recipes](https://developers.google.com/web/tools/workbox/guides/advanced-recipes#make-requests)\"\n * for more usage information.\n *\n * @param {Object} options\n * @param {Request|string} options.request Either a\n * [`Request`]{@link https://developer.mozilla.org/en-US/docs/Web/API/Request}\n * object, or a string URL, corresponding to the request to be made.\n * @param {FetchEvent} [options.event] If provided, `event.waitUntil()` will\n * be called automatically to extend the service worker's lifetime.\n * @return {Promise}\n */\n async makeRequest({event, request}) {\n const logs = [];\n\n if (typeof request === 'string') {\n request = new Request(request);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-strategies',\n className: 'NetworkFirst',\n funcName: 'handle',\n paramName: 'makeRequest',\n });\n }\n\n const promises = [];\n let timeoutId;\n\n if (this._networkTimeoutSeconds) {\n const {id, promise} = this._getTimeoutPromise({request, event, logs});\n timeoutId = id;\n promises.push(promise);\n }\n\n const networkPromise =\n this._getNetworkPromise({timeoutId, request, event, logs});\n promises.push(networkPromise);\n\n // Promise.race() will resolve as soon as the first promise resolves.\n let response = await Promise.race(promises);\n // If Promise.race() resolved with null, it might be due to a network\n // timeout + a cache miss. If that were to happen, we'd rather wait until\n // the networkPromise resolves instead of returning null.\n // Note that it's fine to await an already-resolved promise, so we don't\n // have to check to see if it's still \"in flight\".\n if (!response) {\n response = await networkPromise;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n logger.groupCollapsed(\n messages.strategyStart('NetworkFirst', request));\n for (let log of logs) {\n logger.log(log);\n }\n messages.printFinalResponse(response);\n logger.groupEnd();\n }\n\n if (!response) {\n throw new WorkboxError('no-response', {url: request.url});\n }\n return response;\n }\n\n /**\n * @param {Object} options\n * @param {Request} options.request\n * @param {Array} options.logs A reference to the logs array\n * @param {Event} [options.event]\n * @return {Promise}\n *\n * @private\n */\n _getTimeoutPromise({request, logs, event}) {\n let timeoutId;\n const timeoutPromise = new Promise((resolve) => {\n const onNetworkTimeout = async () => {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(`Timing out the network response at ` +\n `${this._networkTimeoutSeconds} seconds.`);\n }\n\n resolve(await this._respondFromCache({request, event}));\n };\n\n timeoutId = setTimeout(\n onNetworkTimeout,\n this._networkTimeoutSeconds * 1000,\n );\n });\n\n return {\n promise: timeoutPromise,\n id: timeoutId,\n };\n }\n\n /**\n * @param {Object} options\n * @param {number|undefined} options.timeoutId\n * @param {Request} options.request\n * @param {Array} options.logs A reference to the logs Array.\n * @param {Event} [options.event]\n * @return {Promise}\n *\n * @private\n */\n async _getNetworkPromise({timeoutId, request, logs, event}) {\n let error;\n let response;\n try {\n response = await fetchWrapper.fetch({\n request,\n event,\n fetchOptions: this._fetchOptions,\n plugins: this._plugins,\n });\n } catch (err) {\n error = err;\n }\n\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (response) {\n logs.push(`Got response from network.`);\n } else {\n logs.push(`Unable to get a response from the network. Will respond ` +\n `with a cached response.`);\n }\n }\n\n if (error || !response) {\n response = await this._respondFromCache({request, event});\n if (process.env.NODE_ENV !== 'production') {\n if (response) {\n logs.push(`Found a cached response in the '${this._cacheName}'` +\n ` cache.`);\n } else {\n logs.push(`No response found in the '${this._cacheName}' cache.`);\n }\n }\n } else {\n // Keep the service worker alive while we put the request in the cache\n const responseClone = response.clone();\n const cachePut = cacheWrapper.put({\n cacheName: this._cacheName,\n request,\n response: responseClone,\n event,\n plugins: this._plugins,\n });\n\n if (event) {\n try {\n // The event has been responded to so we can keep the SW alive to\n // respond to the request\n event.waitUntil(cachePut);\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`Unable to ensure service worker stays alive when ` +\n `updating cache for '${getFriendlyURL(request.url)}'.`);\n }\n }\n }\n }\n\n return response;\n }\n\n /**\n * Used if the network timeouts or fails to make the request.\n *\n * @param {Object} options\n * @param {Request} request The request to match in the cache\n * @param {Event} [options.event]\n * @return {Promise}\n *\n * @private\n */\n _respondFromCache({event, request}) {\n return cacheWrapper.match({\n cacheName: this._cacheName,\n request,\n event,\n matchOptions: this._matchOptions,\n plugins: this._plugins,\n });\n }\n}\n\nexport {NetworkFirst};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {cacheNames} from 'workbox-core/_private/cacheNames.mjs';\nimport {fetchWrapper} from 'workbox-core/_private/fetchWrapper.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\n\nimport {messages} from './utils/messages.mjs';\nimport './_version.mjs';\n\n/**\n * An implementation of a\n * [network-only]{@link https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/#network-only}\n * request strategy.\n *\n * This class is useful if you want to take advantage of any\n * [Workbox plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}.\n *\n * If the network request fails, this will throw a `WorkboxError` exception.\n *\n * @memberof workbox.strategies\n */\nclass NetworkOnly {\n /**\n * @param {Object} options\n * @param {string} options.cacheName Cache name to store and retrieve\n * requests. Defaults to cache names provided by\n * [workbox-core]{@link workbox.core.cacheNames}.\n * @param {Array} options.plugins [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} options.fetchOptions Values passed along to the\n * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)\n * of all fetch() requests made by this strategy.\n */\n constructor(options = {}) {\n this._cacheName = cacheNames.getRuntimeName(options.cacheName);\n this._plugins = options.plugins || [];\n this._fetchOptions = options.fetchOptions || null;\n }\n\n /**\n * This method will perform a request strategy and follows an API that\n * will work with the\n * [Workbox Router]{@link workbox.routing.Router}.\n *\n * @param {Object} options\n * @param {Request} options.request The request to run this strategy for.\n * @param {Event} [options.event] The event that triggered the request.\n * @return {Promise}\n */\n async handle({event, request}) {\n return this.makeRequest({\n event,\n request: request || event.request,\n });\n }\n\n /**\n * This method can be used to perform a make a standalone request outside the\n * context of the [Workbox Router]{@link workbox.routing.Router}.\n *\n * See \"[Advanced Recipes](https://developers.google.com/web/tools/workbox/guides/advanced-recipes#make-requests)\"\n * for more usage information.\n *\n * @param {Object} options\n * @param {Request|string} options.request Either a\n * [`Request`]{@link https://developer.mozilla.org/en-US/docs/Web/API/Request}\n * object, or a string URL, corresponding to the request to be made.\n * @param {FetchEvent} [options.event] If provided, `event.waitUntil()` will\n * be called automatically to extend the service worker's lifetime.\n * @return {Promise}\n */\n async makeRequest({event, request}) {\n if (typeof request === 'string') {\n request = new Request(request);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-strategies',\n className: 'NetworkOnly',\n funcName: 'handle',\n paramName: 'request',\n });\n }\n\n let error;\n let response;\n try {\n response = await fetchWrapper.fetch({\n request,\n event,\n fetchOptions: this._fetchOptions,\n plugins: this._plugins,\n });\n } catch (err) {\n error = err;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n logger.groupCollapsed(\n messages.strategyStart('NetworkOnly', request));\n if (response) {\n logger.log(`Got response from network.`);\n } else {\n logger.log(`Unable to get a response from the network.`);\n }\n messages.printFinalResponse(response);\n logger.groupEnd();\n }\n\n if (!response) {\n throw new WorkboxError('no-response', {url: request.url, error});\n }\n return response;\n }\n}\n\nexport {NetworkOnly};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {cacheNames} from 'workbox-core/_private/cacheNames.mjs';\nimport {cacheWrapper} from 'workbox-core/_private/cacheWrapper.mjs';\nimport {fetchWrapper} from 'workbox-core/_private/fetchWrapper.mjs';\nimport {getFriendlyURL} from 'workbox-core/_private/getFriendlyURL.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\n\nimport {messages} from './utils/messages.mjs';\nimport {cacheOkAndOpaquePlugin} from './plugins/cacheOkAndOpaquePlugin.mjs';\nimport './_version.mjs';\n\n/**\n * An implementation of a\n * [stale-while-revalidate]{@link https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/#stale-while-revalidate}\n * request strategy.\n *\n * Resources are requested from both the cache and the network in parallel.\n * The strategy will respond with the cached version if available, otherwise\n * wait for the network response. The cache is updated with the network response\n * with each successful request.\n *\n * By default, this strategy will cache responses with a 200 status code as\n * well as [opaque responses]{@link https://developers.google.com/web/tools/workbox/guides/handle-third-party-requests}.\n * Opaque responses are are cross-origin requests where the response doesn't\n * support [CORS]{@link https://enable-cors.org/}.\n *\n * If the network request fails, and there is no cache match, this will throw\n * a `WorkboxError` exception.\n *\n * @memberof workbox.strategies\n */\nclass StaleWhileRevalidate {\n /**\n * @param {Object} options\n * @param {string} options.cacheName Cache name to store and retrieve\n * requests. Defaults to cache names provided by\n * [workbox-core]{@link workbox.core.cacheNames}.\n * @param {Array} options.plugins [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} options.fetchOptions Values passed along to the\n * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)\n * of all fetch() requests made by this strategy.\n * @param {Object} options.matchOptions [`CacheQueryOptions`](https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions)\n */\n constructor(options = {}) {\n this._cacheName = cacheNames.getRuntimeName(options.cacheName);\n this._plugins = options.plugins || [];\n\n if (options.plugins) {\n let isUsingCacheWillUpdate =\n options.plugins.some((plugin) => !!plugin.cacheWillUpdate);\n this._plugins = isUsingCacheWillUpdate ?\n options.plugins : [cacheOkAndOpaquePlugin, ...options.plugins];\n } else {\n // No plugins passed in, use the default plugin.\n this._plugins = [cacheOkAndOpaquePlugin];\n }\n\n this._fetchOptions = options.fetchOptions || null;\n this._matchOptions = options.matchOptions || null;\n }\n\n /**\n * This method will perform a request strategy and follows an API that\n * will work with the\n * [Workbox Router]{@link workbox.routing.Router}.\n *\n * @param {Object} options\n * @param {Request} options.request The request to run this strategy for.\n * @param {Event} [options.event] The event that triggered the request.\n * @return {Promise}\n */\n async handle({event, request}) {\n return this.makeRequest({\n event,\n request: request || event.request,\n });\n }\n /**\n * This method can be used to perform a make a standalone request outside the\n * context of the [Workbox Router]{@link workbox.routing.Router}.\n *\n * See \"[Advanced Recipes](https://developers.google.com/web/tools/workbox/guides/advanced-recipes#make-requests)\"\n * for more usage information.\n *\n * @param {Object} options\n * @param {Request|string} options.request Either a\n * [`Request`]{@link https://developer.mozilla.org/en-US/docs/Web/API/Request}\n * object, or a string URL, corresponding to the request to be made.\n * @param {FetchEvent} [options.event] If provided, `event.waitUntil()` will\n * be called automatically to extend the service worker's lifetime.\n * @return {Promise}\n */\n async makeRequest({event, request}) {\n const logs = [];\n\n if (typeof request === 'string') {\n request = new Request(request);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-strategies',\n className: 'StaleWhileRevalidate',\n funcName: 'handle',\n paramName: 'request',\n });\n }\n\n const fetchAndCachePromise = this._getFromNetwork({request, event});\n\n let response = await cacheWrapper.match({\n cacheName: this._cacheName,\n request,\n event,\n matchOptions: this._matchOptions,\n plugins: this._plugins,\n });\n let error;\n if (response) {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(`Found a cached response in the '${this._cacheName}'` +\n ` cache. Will update with the network response in the background.`);\n }\n\n if (event) {\n try {\n event.waitUntil(fetchAndCachePromise);\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`Unable to ensure service worker stays alive when ` +\n `updating cache for '${getFriendlyURL(request.url)}'.`);\n }\n }\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(`No response found in the '${this._cacheName}' cache. ` +\n `Will wait for the network response.`);\n }\n try {\n response = await fetchAndCachePromise;\n } catch (err) {\n error = err;\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n logger.groupCollapsed(\n messages.strategyStart('StaleWhileRevalidate', request));\n for (let log of logs) {\n logger.log(log);\n }\n messages.printFinalResponse(response);\n logger.groupEnd();\n }\n\n if (!response) {\n throw new WorkboxError('no-response', {url: request.url, error});\n }\n return response;\n }\n\n /**\n * @param {Object} options\n * @param {Request} options.request\n * @param {Event} [options.event]\n * @return {Promise}\n *\n * @private\n */\n async _getFromNetwork({request, event}) {\n const response = await fetchWrapper.fetch({\n request,\n event,\n fetchOptions: this._fetchOptions,\n plugins: this._plugins,\n });\n\n const cachePutPromise = cacheWrapper.put({\n cacheName: this._cacheName,\n request,\n response: response.clone(),\n event,\n plugins: this._plugins,\n });\n\n if (event) {\n try {\n event.waitUntil(cachePutPromise);\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`Unable to ensure service worker stays alive when ` +\n `updating cache for '${getFriendlyURL(request.url)}'.`);\n }\n }\n }\n\n return response;\n }\n}\n\nexport {StaleWhileRevalidate};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {CacheFirst} from './CacheFirst.mjs';\nimport {CacheOnly} from './CacheOnly.mjs';\nimport {NetworkFirst} from './NetworkFirst.mjs';\nimport {NetworkOnly} from './NetworkOnly.mjs';\nimport {StaleWhileRevalidate} from './StaleWhileRevalidate.mjs';\nimport './_version.mjs';\n\n\nconst mapping = {\n cacheFirst: CacheFirst,\n cacheOnly: CacheOnly,\n networkFirst: NetworkFirst,\n networkOnly: NetworkOnly,\n staleWhileRevalidate: StaleWhileRevalidate,\n};\n\nconst deprecate = (strategy) => {\n const StrategyCtr = mapping[strategy];\n\n return (options) => {\n if (process.env.NODE_ENV !== 'production') {\n const strategyCtrName = strategy[0].toUpperCase() + strategy.slice(1);\n logger.warn(`The 'workbox.strategies.${strategy}()' function has been ` +\n `deprecated and will be removed in a future version of Workbox.\\n` +\n `Please use 'new workbox.strategies.${strategyCtrName}()' instead.`);\n }\n return new StrategyCtr(options);\n };\n};\n\n/**\n * @function workbox.strategies.cacheFirst\n * @param {Object} options See the {@link workbox.strategies.CacheFirst}\n * constructor for more info.\n * @deprecated since v4.0.0\n */\nconst cacheFirst = deprecate('cacheFirst');\n\n/**\n * @function workbox.strategies.cacheOnly\n * @param {Object} options See the {@link workbox.strategies.CacheOnly}\n * constructor for more info.\n * @deprecated since v4.0.0\n */\nconst cacheOnly = deprecate('cacheOnly');\n\n/**\n * @function workbox.strategies.networkFirst\n * @param {Object} options See the {@link workbox.strategies.NetworkFirst}\n * constructor for more info.\n * @deprecated since v4.0.0\n */\nconst networkFirst = deprecate('networkFirst');\n\n/**\n * @function workbox.strategies.networkOnly\n * @param {Object} options See the {@link workbox.strategies.NetworkOnly}\n * constructor for more info.\n * @deprecated since v4.0.0\n */\nconst networkOnly = deprecate('networkOnly');\n\n/**\n * @function workbox.strategies.staleWhileRevalidate\n * @param {Object} options See the\n * {@link workbox.strategies.StaleWhileRevalidate} constructor for more info.\n * @deprecated since v4.0.0\n */\nconst staleWhileRevalidate = deprecate('staleWhileRevalidate');\n\n/**\n * There are common caching strategies that most service workers will need\n * and use. This module provides simple implementations of these strategies.\n *\n * @namespace workbox.strategies\n */\n\nexport {\n CacheFirst,\n CacheOnly,\n NetworkFirst,\n NetworkOnly,\n StaleWhileRevalidate,\n\n // Deprecated...\n cacheFirst,\n cacheOnly,\n networkFirst,\n networkOnly,\n staleWhileRevalidate,\n};\n\n"],"names":["self","_","e","getFriendlyURL","url","urlObj","URL","location","origin","pathname","href","messages","strategyStart","strategyName","request","printFinalResponse","response","logger","groupCollapsed","log","groupEnd","CacheFirst","constructor","options","_cacheName","cacheNames","getRuntimeName","cacheName","_plugins","plugins","_fetchOptions","fetchOptions","_matchOptions","matchOptions","handle","event","makeRequest","logs","Request","assert","isInstance","moduleName","className","funcName","paramName","cacheWrapper","match","error","push","_getFromNetwork","err","WorkboxError","fetchWrapper","fetch","responseClone","clone","cachePutPromise","put","waitUntil","warn","CacheOnly","cacheOkAndOpaquePlugin","cacheWillUpdate","status","NetworkFirst","isUsingCacheWillUpdate","some","plugin","_networkTimeoutSeconds","networkTimeoutSeconds","isType","promises","timeoutId","id","promise","_getTimeoutPromise","networkPromise","_getNetworkPromise","Promise","race","timeoutPromise","resolve","onNetworkTimeout","_respondFromCache","setTimeout","clearTimeout","cachePut","NetworkOnly","StaleWhileRevalidate","fetchAndCachePromise","mapping","cacheFirst","cacheOnly","networkFirst","networkOnly","staleWhileRevalidate","deprecate","strategy","StrategyCtr","strategyCtrName","toUpperCase","slice"],"mappings":"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"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-strategies.prod.js b/pr-preview/pr-1029/workbox-v4.3.1/workbox-strategies.prod.js deleted file mode 100644 index 29909af30..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-strategies.prod.js +++ /dev/null @@ -1,2 +0,0 @@ -this.workbox=this.workbox||{},this.workbox.strategies=function(e,t,s,n,r){"use strict";try{self["workbox:strategies:4.3.1"]&&_()}catch(e){}class i{constructor(e={}){this.t=t.cacheNames.getRuntimeName(e.cacheName),this.s=e.plugins||[],this.i=e.fetchOptions||null,this.h=e.matchOptions||null}async handle({event:e,request:t}){return this.makeRequest({event:e,request:t||e.request})}async makeRequest({event:e,request:t}){"string"==typeof t&&(t=new Request(t));let n,i=await s.cacheWrapper.match({cacheName:this.t,request:t,event:e,matchOptions:this.h,plugins:this.s});if(!i)try{i=await this.u(t,e)}catch(e){n=e}if(!i)throw new r.WorkboxError("no-response",{url:t.url,error:n});return i}async u(e,t){const r=await n.fetchWrapper.fetch({request:e,event:t,fetchOptions:this.i,plugins:this.s}),i=r.clone(),h=s.cacheWrapper.put({cacheName:this.t,request:e,response:i,event:t,plugins:this.s});if(t)try{t.waitUntil(h)}catch(e){}return r}}class h{constructor(e={}){this.t=t.cacheNames.getRuntimeName(e.cacheName),this.s=e.plugins||[],this.h=e.matchOptions||null}async handle({event:e,request:t}){return this.makeRequest({event:e,request:t||e.request})}async makeRequest({event:e,request:t}){"string"==typeof t&&(t=new Request(t));const n=await s.cacheWrapper.match({cacheName:this.t,request:t,event:e,matchOptions:this.h,plugins:this.s});if(!n)throw new r.WorkboxError("no-response",{url:t.url});return n}}const u={cacheWillUpdate:({response:e})=>200===e.status||0===e.status?e:null};class a{constructor(e={}){if(this.t=t.cacheNames.getRuntimeName(e.cacheName),e.plugins){let t=e.plugins.some(e=>!!e.cacheWillUpdate);this.s=t?e.plugins:[u,...e.plugins]}else this.s=[u];this.o=e.networkTimeoutSeconds,this.i=e.fetchOptions||null,this.h=e.matchOptions||null}async handle({event:e,request:t}){return this.makeRequest({event:e,request:t||e.request})}async makeRequest({event:e,request:t}){const s=[];"string"==typeof t&&(t=new Request(t));const n=[];let i;if(this.o){const{id:r,promise:h}=this.l({request:t,event:e,logs:s});i=r,n.push(h)}const h=this.q({timeoutId:i,request:t,event:e,logs:s});n.push(h);let u=await Promise.race(n);if(u||(u=await h),!u)throw new r.WorkboxError("no-response",{url:t.url});return u}l({request:e,logs:t,event:s}){let n;return{promise:new Promise(t=>{n=setTimeout(async()=>{t(await this.p({request:e,event:s}))},1e3*this.o)}),id:n}}async q({timeoutId:e,request:t,logs:r,event:i}){let h,u;try{u=await n.fetchWrapper.fetch({request:t,event:i,fetchOptions:this.i,plugins:this.s})}catch(e){h=e}if(e&&clearTimeout(e),h||!u)u=await this.p({request:t,event:i});else{const e=u.clone(),n=s.cacheWrapper.put({cacheName:this.t,request:t,response:e,event:i,plugins:this.s});if(i)try{i.waitUntil(n)}catch(e){}}return u}p({event:e,request:t}){return s.cacheWrapper.match({cacheName:this.t,request:t,event:e,matchOptions:this.h,plugins:this.s})}}class c{constructor(e={}){this.t=t.cacheNames.getRuntimeName(e.cacheName),this.s=e.plugins||[],this.i=e.fetchOptions||null}async handle({event:e,request:t}){return this.makeRequest({event:e,request:t||e.request})}async makeRequest({event:e,request:t}){let s,i;"string"==typeof t&&(t=new Request(t));try{i=await n.fetchWrapper.fetch({request:t,event:e,fetchOptions:this.i,plugins:this.s})}catch(e){s=e}if(!i)throw new r.WorkboxError("no-response",{url:t.url,error:s});return i}}class o{constructor(e={}){if(this.t=t.cacheNames.getRuntimeName(e.cacheName),this.s=e.plugins||[],e.plugins){let t=e.plugins.some(e=>!!e.cacheWillUpdate);this.s=t?e.plugins:[u,...e.plugins]}else this.s=[u];this.i=e.fetchOptions||null,this.h=e.matchOptions||null}async handle({event:e,request:t}){return this.makeRequest({event:e,request:t||e.request})}async makeRequest({event:e,request:t}){"string"==typeof t&&(t=new Request(t));const n=this.u({request:t,event:e});let i,h=await s.cacheWrapper.match({cacheName:this.t,request:t,event:e,matchOptions:this.h,plugins:this.s});if(h){if(e)try{e.waitUntil(n)}catch(i){}}else try{h=await n}catch(e){i=e}if(!h)throw new r.WorkboxError("no-response",{url:t.url,error:i});return h}async u({request:e,event:t}){const r=await n.fetchWrapper.fetch({request:e,event:t,fetchOptions:this.i,plugins:this.s}),i=s.cacheWrapper.put({cacheName:this.t,request:e,response:r.clone(),event:t,plugins:this.s});if(t)try{t.waitUntil(i)}catch(e){}return r}}const l={cacheFirst:i,cacheOnly:h,networkFirst:a,networkOnly:c,staleWhileRevalidate:o},q=e=>{const t=l[e];return e=>new t(e)},w=q("cacheFirst"),p=q("cacheOnly"),v=q("networkFirst"),y=q("networkOnly"),m=q("staleWhileRevalidate");return e.CacheFirst=i,e.CacheOnly=h,e.NetworkFirst=a,e.NetworkOnly=c,e.StaleWhileRevalidate=o,e.cacheFirst=w,e.cacheOnly=p,e.networkFirst=v,e.networkOnly=y,e.staleWhileRevalidate=m,e}({},workbox.core._private,workbox.core._private,workbox.core._private,workbox.core._private); -//# sourceMappingURL=workbox-strategies.prod.js.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-strategies.prod.js.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-strategies.prod.js.map deleted file mode 100644 index 6ad0b3e37..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-strategies.prod.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-strategies.prod.js","sources":["../_version.mjs","../CacheFirst.mjs","../CacheOnly.mjs","../plugins/cacheOkAndOpaquePlugin.mjs","../NetworkFirst.mjs","../NetworkOnly.mjs","../StaleWhileRevalidate.mjs","../index.mjs"],"sourcesContent":["try{self['workbox:strategies:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {cacheNames} from 'workbox-core/_private/cacheNames.mjs';\nimport {cacheWrapper} from 'workbox-core/_private/cacheWrapper.mjs';\nimport {fetchWrapper} from 'workbox-core/_private/fetchWrapper.mjs';\nimport {getFriendlyURL} from 'workbox-core/_private/getFriendlyURL.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\n\nimport {messages} from './utils/messages.mjs';\nimport './_version.mjs';\n\n/**\n * An implementation of a [cache-first]{@link https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/#cache-falling-back-to-network}\n * request strategy.\n *\n * A cache first strategy is useful for assets that have been revisioned,\n * such as URLs like `/styles/example.a8f5f1.css`, since they\n * can be cached for long periods of time.\n *\n * If the network request fails, and there is no cache match, this will throw\n * a `WorkboxError` exception.\n *\n * @memberof workbox.strategies\n */\nclass CacheFirst {\n /**\n * @param {Object} options\n * @param {string} options.cacheName Cache name to store and retrieve\n * requests. Defaults to cache names provided by\n * [workbox-core]{@link workbox.core.cacheNames}.\n * @param {Array} options.plugins [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} options.fetchOptions Values passed along to the\n * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)\n * of all fetch() requests made by this strategy.\n * @param {Object} options.matchOptions [`CacheQueryOptions`](https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions)\n */\n constructor(options = {}) {\n this._cacheName = cacheNames.getRuntimeName(options.cacheName);\n this._plugins = options.plugins || [];\n this._fetchOptions = options.fetchOptions || null;\n this._matchOptions = options.matchOptions || null;\n }\n\n /**\n * This method will perform a request strategy and follows an API that\n * will work with the\n * [Workbox Router]{@link workbox.routing.Router}.\n *\n * @param {Object} options\n * @param {Request} options.request The request to run this strategy for.\n * @param {Event} [options.event] The event that triggered the request.\n * @return {Promise}\n */\n async handle({event, request}) {\n return this.makeRequest({\n event,\n request: request || event.request,\n });\n }\n\n /**\n * This method can be used to perform a make a standalone request outside the\n * context of the [Workbox Router]{@link workbox.routing.Router}.\n *\n * See \"[Advanced Recipes](https://developers.google.com/web/tools/workbox/guides/advanced-recipes#make-requests)\"\n * for more usage information.\n *\n * @param {Object} options\n * @param {Request|string} options.request Either a\n * [`Request`]{@link https://developer.mozilla.org/en-US/docs/Web/API/Request}\n * object, or a string URL, corresponding to the request to be made.\n * @param {FetchEvent} [options.event] If provided, `event.waitUntil()` will\n be called automatically to extend the service worker's lifetime.\n * @return {Promise}\n */\n async makeRequest({event, request}) {\n const logs = [];\n\n if (typeof request === 'string') {\n request = new Request(request);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-strategies',\n className: 'CacheFirst',\n funcName: 'makeRequest',\n paramName: 'request',\n });\n }\n\n let response = await cacheWrapper.match({\n cacheName: this._cacheName,\n request,\n event,\n matchOptions: this._matchOptions,\n plugins: this._plugins,\n });\n\n let error;\n if (!response) {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(\n `No response found in the '${this._cacheName}' cache. ` +\n `Will respond with a network request.`);\n }\n try {\n response = await this._getFromNetwork(request, event);\n } catch (err) {\n error = err;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (response) {\n logs.push(`Got response from network.`);\n } else {\n logs.push(`Unable to get a response from the network.`);\n }\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(\n `Found a cached response in the '${this._cacheName}' cache.`);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n logger.groupCollapsed(\n messages.strategyStart('CacheFirst', request));\n for (let log of logs) {\n logger.log(log);\n }\n messages.printFinalResponse(response);\n logger.groupEnd();\n }\n\n if (!response) {\n throw new WorkboxError('no-response', {url: request.url, error});\n }\n return response;\n }\n\n /**\n * Handles the network and cache part of CacheFirst.\n *\n * @param {Request} request\n * @param {FetchEvent} [event]\n * @return {Promise}\n *\n * @private\n */\n async _getFromNetwork(request, event) {\n const response = await fetchWrapper.fetch({\n request,\n event,\n fetchOptions: this._fetchOptions,\n plugins: this._plugins,\n });\n\n // Keep the service worker while we put the request to the cache\n const responseClone = response.clone();\n const cachePutPromise = cacheWrapper.put({\n cacheName: this._cacheName,\n request,\n response: responseClone,\n event,\n plugins: this._plugins,\n });\n\n if (event) {\n try {\n event.waitUntil(cachePutPromise);\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`Unable to ensure service worker stays alive when ` +\n `updating cache for '${getFriendlyURL(request.url)}'.`);\n }\n }\n }\n\n return response;\n }\n}\n\nexport {CacheFirst};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {cacheNames} from 'workbox-core/_private/cacheNames.mjs';\nimport {cacheWrapper} from 'workbox-core/_private/cacheWrapper.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\n\nimport {messages} from './utils/messages.mjs';\nimport './_version.mjs';\n\n\n/**\n * An implementation of a\n * [cache-only]{@link https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/#cache-only}\n * request strategy.\n *\n * This class is useful if you want to take advantage of any\n * [Workbox plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}.\n *\n * If there is no cache match, this will throw a `WorkboxError` exception.\n *\n * @memberof workbox.strategies\n */\nclass CacheOnly {\n /**\n * @param {Object} options\n * @param {string} options.cacheName Cache name to store and retrieve\n * requests. Defaults to cache names provided by\n * [workbox-core]{@link workbox.core.cacheNames}.\n * @param {Array} options.plugins [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} options.matchOptions [`CacheQueryOptions`](https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions)\n */\n constructor(options = {}) {\n this._cacheName = cacheNames.getRuntimeName(options.cacheName);\n this._plugins = options.plugins || [];\n this._matchOptions = options.matchOptions || null;\n }\n\n /**\n * This method will perform a request strategy and follows an API that\n * will work with the\n * [Workbox Router]{@link workbox.routing.Router}.\n *\n * @param {Object} options\n * @param {Request} options.request The request to run this strategy for.\n * @param {Event} [options.event] The event that triggered the request.\n * @return {Promise}\n */\n async handle({event, request}) {\n return this.makeRequest({\n event,\n request: request || event.request,\n });\n }\n\n /**\n * This method can be used to perform a make a standalone request outside the\n * context of the [Workbox Router]{@link workbox.routing.Router}.\n *\n * See \"[Advanced Recipes](https://developers.google.com/web/tools/workbox/guides/advanced-recipes#make-requests)\"\n * for more usage information.\n *\n * @param {Object} options\n * @param {Request|string} options.request Either a\n * [`Request`]{@link https://developer.mozilla.org/en-US/docs/Web/API/Request}\n * object, or a string URL, corresponding to the request to be made.\n * @param {FetchEvent} [options.event] If provided, `event.waitUntil()` will\n * be called automatically to extend the service worker's lifetime.\n * @return {Promise}\n */\n async makeRequest({event, request}) {\n if (typeof request === 'string') {\n request = new Request(request);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-strategies',\n className: 'CacheOnly',\n funcName: 'makeRequest',\n paramName: 'request',\n });\n }\n\n const response = await cacheWrapper.match({\n cacheName: this._cacheName,\n request,\n event,\n matchOptions: this._matchOptions,\n plugins: this._plugins,\n });\n\n if (process.env.NODE_ENV !== 'production') {\n logger.groupCollapsed(\n messages.strategyStart('CacheOnly', request));\n if (response) {\n logger.log(`Found a cached response in the '${this._cacheName}'` +\n ` cache.`);\n messages.printFinalResponse(response);\n } else {\n logger.log(`No response found in the '${this._cacheName}' cache.`);\n }\n logger.groupEnd();\n }\n\n if (!response) {\n throw new WorkboxError('no-response', {url: request.url});\n }\n return response;\n }\n}\n\nexport {CacheOnly};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\nexport const cacheOkAndOpaquePlugin = {\n /**\n * Returns a valid response (to allow caching) if the status is 200 (OK) or\n * 0 (opaque).\n *\n * @param {Object} options\n * @param {Response} options.response\n * @return {Response|null}\n *\n * @private\n */\n cacheWillUpdate: ({response}) => {\n if (response.status === 200 || response.status === 0) {\n return response;\n }\n return null;\n },\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {cacheNames} from 'workbox-core/_private/cacheNames.mjs';\nimport {cacheWrapper} from 'workbox-core/_private/cacheWrapper.mjs';\nimport {fetchWrapper} from 'workbox-core/_private/fetchWrapper.mjs';\nimport {getFriendlyURL} from 'workbox-core/_private/getFriendlyURL.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\n\nimport {messages} from './utils/messages.mjs';\nimport {cacheOkAndOpaquePlugin} from './plugins/cacheOkAndOpaquePlugin.mjs';\nimport './_version.mjs';\n\n/**\n * An implementation of a\n * [network first]{@link https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/#network-falling-back-to-cache}\n * request strategy.\n *\n * By default, this strategy will cache responses with a 200 status code as\n * well as [opaque responses]{@link https://developers.google.com/web/tools/workbox/guides/handle-third-party-requests}.\n * Opaque responses are are cross-origin requests where the response doesn't\n * support [CORS]{@link https://enable-cors.org/}.\n *\n * If the network request fails, and there is no cache match, this will throw\n * a `WorkboxError` exception.\n *\n * @memberof workbox.strategies\n */\nclass NetworkFirst {\n /**\n * @param {Object} options\n * @param {string} options.cacheName Cache name to store and retrieve\n * requests. Defaults to cache names provided by\n * [workbox-core]{@link workbox.core.cacheNames}.\n * @param {Array} options.plugins [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} options.fetchOptions Values passed along to the\n * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)\n * of all fetch() requests made by this strategy.\n * @param {Object} options.matchOptions [`CacheQueryOptions`](https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions)\n * @param {number} options.networkTimeoutSeconds If set, any network requests\n * that fail to respond within the timeout will fallback to the cache.\n *\n * This option can be used to combat\n * \"[lie-fi]{@link https://developers.google.com/web/fundamentals/performance/poor-connectivity/#lie-fi}\"\n * scenarios.\n */\n constructor(options = {}) {\n this._cacheName = cacheNames.getRuntimeName(options.cacheName);\n\n if (options.plugins) {\n let isUsingCacheWillUpdate =\n options.plugins.some((plugin) => !!plugin.cacheWillUpdate);\n this._plugins = isUsingCacheWillUpdate ?\n options.plugins : [cacheOkAndOpaquePlugin, ...options.plugins];\n } else {\n // No plugins passed in, use the default plugin.\n this._plugins = [cacheOkAndOpaquePlugin];\n }\n\n this._networkTimeoutSeconds = options.networkTimeoutSeconds;\n if (process.env.NODE_ENV !== 'production') {\n if (this._networkTimeoutSeconds) {\n assert.isType(this._networkTimeoutSeconds, 'number', {\n moduleName: 'workbox-strategies',\n className: 'NetworkFirst',\n funcName: 'constructor',\n paramName: 'networkTimeoutSeconds',\n });\n }\n }\n\n this._fetchOptions = options.fetchOptions || null;\n this._matchOptions = options.matchOptions || null;\n }\n\n /**\n * This method will perform a request strategy and follows an API that\n * will work with the\n * [Workbox Router]{@link workbox.routing.Router}.\n *\n * @param {Object} options\n * @param {Request} options.request The request to run this strategy for.\n * @param {Event} [options.event] The event that triggered the request.\n * @return {Promise}\n */\n async handle({event, request}) {\n return this.makeRequest({\n event,\n request: request || event.request,\n });\n }\n\n /**\n * This method can be used to perform a make a standalone request outside the\n * context of the [Workbox Router]{@link workbox.routing.Router}.\n *\n * See \"[Advanced Recipes](https://developers.google.com/web/tools/workbox/guides/advanced-recipes#make-requests)\"\n * for more usage information.\n *\n * @param {Object} options\n * @param {Request|string} options.request Either a\n * [`Request`]{@link https://developer.mozilla.org/en-US/docs/Web/API/Request}\n * object, or a string URL, corresponding to the request to be made.\n * @param {FetchEvent} [options.event] If provided, `event.waitUntil()` will\n * be called automatically to extend the service worker's lifetime.\n * @return {Promise}\n */\n async makeRequest({event, request}) {\n const logs = [];\n\n if (typeof request === 'string') {\n request = new Request(request);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-strategies',\n className: 'NetworkFirst',\n funcName: 'handle',\n paramName: 'makeRequest',\n });\n }\n\n const promises = [];\n let timeoutId;\n\n if (this._networkTimeoutSeconds) {\n const {id, promise} = this._getTimeoutPromise({request, event, logs});\n timeoutId = id;\n promises.push(promise);\n }\n\n const networkPromise =\n this._getNetworkPromise({timeoutId, request, event, logs});\n promises.push(networkPromise);\n\n // Promise.race() will resolve as soon as the first promise resolves.\n let response = await Promise.race(promises);\n // If Promise.race() resolved with null, it might be due to a network\n // timeout + a cache miss. If that were to happen, we'd rather wait until\n // the networkPromise resolves instead of returning null.\n // Note that it's fine to await an already-resolved promise, so we don't\n // have to check to see if it's still \"in flight\".\n if (!response) {\n response = await networkPromise;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n logger.groupCollapsed(\n messages.strategyStart('NetworkFirst', request));\n for (let log of logs) {\n logger.log(log);\n }\n messages.printFinalResponse(response);\n logger.groupEnd();\n }\n\n if (!response) {\n throw new WorkboxError('no-response', {url: request.url});\n }\n return response;\n }\n\n /**\n * @param {Object} options\n * @param {Request} options.request\n * @param {Array} options.logs A reference to the logs array\n * @param {Event} [options.event]\n * @return {Promise}\n *\n * @private\n */\n _getTimeoutPromise({request, logs, event}) {\n let timeoutId;\n const timeoutPromise = new Promise((resolve) => {\n const onNetworkTimeout = async () => {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(`Timing out the network response at ` +\n `${this._networkTimeoutSeconds} seconds.`);\n }\n\n resolve(await this._respondFromCache({request, event}));\n };\n\n timeoutId = setTimeout(\n onNetworkTimeout,\n this._networkTimeoutSeconds * 1000,\n );\n });\n\n return {\n promise: timeoutPromise,\n id: timeoutId,\n };\n }\n\n /**\n * @param {Object} options\n * @param {number|undefined} options.timeoutId\n * @param {Request} options.request\n * @param {Array} options.logs A reference to the logs Array.\n * @param {Event} [options.event]\n * @return {Promise}\n *\n * @private\n */\n async _getNetworkPromise({timeoutId, request, logs, event}) {\n let error;\n let response;\n try {\n response = await fetchWrapper.fetch({\n request,\n event,\n fetchOptions: this._fetchOptions,\n plugins: this._plugins,\n });\n } catch (err) {\n error = err;\n }\n\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (response) {\n logs.push(`Got response from network.`);\n } else {\n logs.push(`Unable to get a response from the network. Will respond ` +\n `with a cached response.`);\n }\n }\n\n if (error || !response) {\n response = await this._respondFromCache({request, event});\n if (process.env.NODE_ENV !== 'production') {\n if (response) {\n logs.push(`Found a cached response in the '${this._cacheName}'` +\n ` cache.`);\n } else {\n logs.push(`No response found in the '${this._cacheName}' cache.`);\n }\n }\n } else {\n // Keep the service worker alive while we put the request in the cache\n const responseClone = response.clone();\n const cachePut = cacheWrapper.put({\n cacheName: this._cacheName,\n request,\n response: responseClone,\n event,\n plugins: this._plugins,\n });\n\n if (event) {\n try {\n // The event has been responded to so we can keep the SW alive to\n // respond to the request\n event.waitUntil(cachePut);\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`Unable to ensure service worker stays alive when ` +\n `updating cache for '${getFriendlyURL(request.url)}'.`);\n }\n }\n }\n }\n\n return response;\n }\n\n /**\n * Used if the network timeouts or fails to make the request.\n *\n * @param {Object} options\n * @param {Request} request The request to match in the cache\n * @param {Event} [options.event]\n * @return {Promise}\n *\n * @private\n */\n _respondFromCache({event, request}) {\n return cacheWrapper.match({\n cacheName: this._cacheName,\n request,\n event,\n matchOptions: this._matchOptions,\n plugins: this._plugins,\n });\n }\n}\n\nexport {NetworkFirst};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {cacheNames} from 'workbox-core/_private/cacheNames.mjs';\nimport {fetchWrapper} from 'workbox-core/_private/fetchWrapper.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\n\nimport {messages} from './utils/messages.mjs';\nimport './_version.mjs';\n\n/**\n * An implementation of a\n * [network-only]{@link https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/#network-only}\n * request strategy.\n *\n * This class is useful if you want to take advantage of any\n * [Workbox plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}.\n *\n * If the network request fails, this will throw a `WorkboxError` exception.\n *\n * @memberof workbox.strategies\n */\nclass NetworkOnly {\n /**\n * @param {Object} options\n * @param {string} options.cacheName Cache name to store and retrieve\n * requests. Defaults to cache names provided by\n * [workbox-core]{@link workbox.core.cacheNames}.\n * @param {Array} options.plugins [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} options.fetchOptions Values passed along to the\n * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)\n * of all fetch() requests made by this strategy.\n */\n constructor(options = {}) {\n this._cacheName = cacheNames.getRuntimeName(options.cacheName);\n this._plugins = options.plugins || [];\n this._fetchOptions = options.fetchOptions || null;\n }\n\n /**\n * This method will perform a request strategy and follows an API that\n * will work with the\n * [Workbox Router]{@link workbox.routing.Router}.\n *\n * @param {Object} options\n * @param {Request} options.request The request to run this strategy for.\n * @param {Event} [options.event] The event that triggered the request.\n * @return {Promise}\n */\n async handle({event, request}) {\n return this.makeRequest({\n event,\n request: request || event.request,\n });\n }\n\n /**\n * This method can be used to perform a make a standalone request outside the\n * context of the [Workbox Router]{@link workbox.routing.Router}.\n *\n * See \"[Advanced Recipes](https://developers.google.com/web/tools/workbox/guides/advanced-recipes#make-requests)\"\n * for more usage information.\n *\n * @param {Object} options\n * @param {Request|string} options.request Either a\n * [`Request`]{@link https://developer.mozilla.org/en-US/docs/Web/API/Request}\n * object, or a string URL, corresponding to the request to be made.\n * @param {FetchEvent} [options.event] If provided, `event.waitUntil()` will\n * be called automatically to extend the service worker's lifetime.\n * @return {Promise}\n */\n async makeRequest({event, request}) {\n if (typeof request === 'string') {\n request = new Request(request);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-strategies',\n className: 'NetworkOnly',\n funcName: 'handle',\n paramName: 'request',\n });\n }\n\n let error;\n let response;\n try {\n response = await fetchWrapper.fetch({\n request,\n event,\n fetchOptions: this._fetchOptions,\n plugins: this._plugins,\n });\n } catch (err) {\n error = err;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n logger.groupCollapsed(\n messages.strategyStart('NetworkOnly', request));\n if (response) {\n logger.log(`Got response from network.`);\n } else {\n logger.log(`Unable to get a response from the network.`);\n }\n messages.printFinalResponse(response);\n logger.groupEnd();\n }\n\n if (!response) {\n throw new WorkboxError('no-response', {url: request.url, error});\n }\n return response;\n }\n}\n\nexport {NetworkOnly};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {assert} from 'workbox-core/_private/assert.mjs';\nimport {cacheNames} from 'workbox-core/_private/cacheNames.mjs';\nimport {cacheWrapper} from 'workbox-core/_private/cacheWrapper.mjs';\nimport {fetchWrapper} from 'workbox-core/_private/fetchWrapper.mjs';\nimport {getFriendlyURL} from 'workbox-core/_private/getFriendlyURL.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {WorkboxError} from 'workbox-core/_private/WorkboxError.mjs';\n\nimport {messages} from './utils/messages.mjs';\nimport {cacheOkAndOpaquePlugin} from './plugins/cacheOkAndOpaquePlugin.mjs';\nimport './_version.mjs';\n\n/**\n * An implementation of a\n * [stale-while-revalidate]{@link https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/#stale-while-revalidate}\n * request strategy.\n *\n * Resources are requested from both the cache and the network in parallel.\n * The strategy will respond with the cached version if available, otherwise\n * wait for the network response. The cache is updated with the network response\n * with each successful request.\n *\n * By default, this strategy will cache responses with a 200 status code as\n * well as [opaque responses]{@link https://developers.google.com/web/tools/workbox/guides/handle-third-party-requests}.\n * Opaque responses are are cross-origin requests where the response doesn't\n * support [CORS]{@link https://enable-cors.org/}.\n *\n * If the network request fails, and there is no cache match, this will throw\n * a `WorkboxError` exception.\n *\n * @memberof workbox.strategies\n */\nclass StaleWhileRevalidate {\n /**\n * @param {Object} options\n * @param {string} options.cacheName Cache name to store and retrieve\n * requests. Defaults to cache names provided by\n * [workbox-core]{@link workbox.core.cacheNames}.\n * @param {Array} options.plugins [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} options.fetchOptions Values passed along to the\n * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)\n * of all fetch() requests made by this strategy.\n * @param {Object} options.matchOptions [`CacheQueryOptions`](https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions)\n */\n constructor(options = {}) {\n this._cacheName = cacheNames.getRuntimeName(options.cacheName);\n this._plugins = options.plugins || [];\n\n if (options.plugins) {\n let isUsingCacheWillUpdate =\n options.plugins.some((plugin) => !!plugin.cacheWillUpdate);\n this._plugins = isUsingCacheWillUpdate ?\n options.plugins : [cacheOkAndOpaquePlugin, ...options.plugins];\n } else {\n // No plugins passed in, use the default plugin.\n this._plugins = [cacheOkAndOpaquePlugin];\n }\n\n this._fetchOptions = options.fetchOptions || null;\n this._matchOptions = options.matchOptions || null;\n }\n\n /**\n * This method will perform a request strategy and follows an API that\n * will work with the\n * [Workbox Router]{@link workbox.routing.Router}.\n *\n * @param {Object} options\n * @param {Request} options.request The request to run this strategy for.\n * @param {Event} [options.event] The event that triggered the request.\n * @return {Promise}\n */\n async handle({event, request}) {\n return this.makeRequest({\n event,\n request: request || event.request,\n });\n }\n /**\n * This method can be used to perform a make a standalone request outside the\n * context of the [Workbox Router]{@link workbox.routing.Router}.\n *\n * See \"[Advanced Recipes](https://developers.google.com/web/tools/workbox/guides/advanced-recipes#make-requests)\"\n * for more usage information.\n *\n * @param {Object} options\n * @param {Request|string} options.request Either a\n * [`Request`]{@link https://developer.mozilla.org/en-US/docs/Web/API/Request}\n * object, or a string URL, corresponding to the request to be made.\n * @param {FetchEvent} [options.event] If provided, `event.waitUntil()` will\n * be called automatically to extend the service worker's lifetime.\n * @return {Promise}\n */\n async makeRequest({event, request}) {\n const logs = [];\n\n if (typeof request === 'string') {\n request = new Request(request);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-strategies',\n className: 'StaleWhileRevalidate',\n funcName: 'handle',\n paramName: 'request',\n });\n }\n\n const fetchAndCachePromise = this._getFromNetwork({request, event});\n\n let response = await cacheWrapper.match({\n cacheName: this._cacheName,\n request,\n event,\n matchOptions: this._matchOptions,\n plugins: this._plugins,\n });\n let error;\n if (response) {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(`Found a cached response in the '${this._cacheName}'` +\n ` cache. Will update with the network response in the background.`);\n }\n\n if (event) {\n try {\n event.waitUntil(fetchAndCachePromise);\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`Unable to ensure service worker stays alive when ` +\n `updating cache for '${getFriendlyURL(request.url)}'.`);\n }\n }\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(`No response found in the '${this._cacheName}' cache. ` +\n `Will wait for the network response.`);\n }\n try {\n response = await fetchAndCachePromise;\n } catch (err) {\n error = err;\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n logger.groupCollapsed(\n messages.strategyStart('StaleWhileRevalidate', request));\n for (let log of logs) {\n logger.log(log);\n }\n messages.printFinalResponse(response);\n logger.groupEnd();\n }\n\n if (!response) {\n throw new WorkboxError('no-response', {url: request.url, error});\n }\n return response;\n }\n\n /**\n * @param {Object} options\n * @param {Request} options.request\n * @param {Event} [options.event]\n * @return {Promise}\n *\n * @private\n */\n async _getFromNetwork({request, event}) {\n const response = await fetchWrapper.fetch({\n request,\n event,\n fetchOptions: this._fetchOptions,\n plugins: this._plugins,\n });\n\n const cachePutPromise = cacheWrapper.put({\n cacheName: this._cacheName,\n request,\n response: response.clone(),\n event,\n plugins: this._plugins,\n });\n\n if (event) {\n try {\n event.waitUntil(cachePutPromise);\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`Unable to ensure service worker stays alive when ` +\n `updating cache for '${getFriendlyURL(request.url)}'.`);\n }\n }\n }\n\n return response;\n }\n}\n\nexport {StaleWhileRevalidate};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {CacheFirst} from './CacheFirst.mjs';\nimport {CacheOnly} from './CacheOnly.mjs';\nimport {NetworkFirst} from './NetworkFirst.mjs';\nimport {NetworkOnly} from './NetworkOnly.mjs';\nimport {StaleWhileRevalidate} from './StaleWhileRevalidate.mjs';\nimport './_version.mjs';\n\n\nconst mapping = {\n cacheFirst: CacheFirst,\n cacheOnly: CacheOnly,\n networkFirst: NetworkFirst,\n networkOnly: NetworkOnly,\n staleWhileRevalidate: StaleWhileRevalidate,\n};\n\nconst deprecate = (strategy) => {\n const StrategyCtr = mapping[strategy];\n\n return (options) => {\n if (process.env.NODE_ENV !== 'production') {\n const strategyCtrName = strategy[0].toUpperCase() + strategy.slice(1);\n logger.warn(`The 'workbox.strategies.${strategy}()' function has been ` +\n `deprecated and will be removed in a future version of Workbox.\\n` +\n `Please use 'new workbox.strategies.${strategyCtrName}()' instead.`);\n }\n return new StrategyCtr(options);\n };\n};\n\n/**\n * @function workbox.strategies.cacheFirst\n * @param {Object} options See the {@link workbox.strategies.CacheFirst}\n * constructor for more info.\n * @deprecated since v4.0.0\n */\nconst cacheFirst = deprecate('cacheFirst');\n\n/**\n * @function workbox.strategies.cacheOnly\n * @param {Object} options See the {@link workbox.strategies.CacheOnly}\n * constructor for more info.\n * @deprecated since v4.0.0\n */\nconst cacheOnly = deprecate('cacheOnly');\n\n/**\n * @function workbox.strategies.networkFirst\n * @param {Object} options See the {@link workbox.strategies.NetworkFirst}\n * constructor for more info.\n * @deprecated since v4.0.0\n */\nconst networkFirst = deprecate('networkFirst');\n\n/**\n * @function workbox.strategies.networkOnly\n * @param {Object} options See the {@link workbox.strategies.NetworkOnly}\n * constructor for more info.\n * @deprecated since v4.0.0\n */\nconst networkOnly = deprecate('networkOnly');\n\n/**\n * @function workbox.strategies.staleWhileRevalidate\n * @param {Object} options See the\n * {@link workbox.strategies.StaleWhileRevalidate} constructor for more info.\n * @deprecated since v4.0.0\n */\nconst staleWhileRevalidate = deprecate('staleWhileRevalidate');\n\n/**\n * There are common caching strategies that most service workers will need\n * and use. This module provides simple implementations of these strategies.\n *\n * @namespace workbox.strategies\n */\n\nexport {\n CacheFirst,\n CacheOnly,\n NetworkFirst,\n NetworkOnly,\n StaleWhileRevalidate,\n\n // Deprecated...\n cacheFirst,\n cacheOnly,\n networkFirst,\n networkOnly,\n staleWhileRevalidate,\n};\n\n"],"names":["self","_","e","CacheFirst","constructor","options","_cacheName","cacheNames","getRuntimeName","cacheName","_plugins","plugins","_fetchOptions","fetchOptions","_matchOptions","matchOptions","event","request","this","makeRequest","Request","error","response","cacheWrapper","match","_getFromNetwork","err","WorkboxError","url","fetchWrapper","fetch","responseClone","clone","cachePutPromise","put","waitUntil","CacheOnly","cacheOkAndOpaquePlugin","cacheWillUpdate","status","NetworkFirst","isUsingCacheWillUpdate","some","plugin","_networkTimeoutSeconds","networkTimeoutSeconds","logs","promises","timeoutId","id","promise","_getTimeoutPromise","push","networkPromise","_getNetworkPromise","Promise","race","resolve","setTimeout","async","_respondFromCache","clearTimeout","cachePut","NetworkOnly","StaleWhileRevalidate","fetchAndCachePromise","mapping","cacheFirst","cacheOnly","networkFirst","networkOnly","staleWhileRevalidate","deprecate","strategy","StrategyCtr"],"mappings":"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"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-streams.dev.js b/pr-preview/pr-1029/workbox-v4.3.1/workbox-streams.dev.js deleted file mode 100644 index c90b3dcda..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-streams.dev.js +++ /dev/null @@ -1,337 +0,0 @@ -this.workbox = this.workbox || {}; -this.workbox.streams = (function (exports, logger_mjs, assert_mjs) { - 'use strict'; - - try { - self['workbox:streams:4.3.1'] && _(); - } catch (e) {} // eslint-disable-line - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Takes either a Response, a ReadableStream, or a - * [BodyInit](https://fetch.spec.whatwg.org/#bodyinit) and returns the - * ReadableStreamReader object associated with it. - * - * @param {workbox.streams.StreamSource} source - * @return {ReadableStreamReader} - * @private - */ - - function _getReaderFromSource(source) { - if (source.body && source.body.getReader) { - return source.body.getReader(); - } - - if (source.getReader) { - return source.getReader(); - } // TODO: This should be possible to do by constructing a ReadableStream, but - // I can't get it to work. As a hack, construct a new Response, and use the - // reader associated with its body. - - - return new Response(source).body.getReader(); - } - /** - * Takes multiple source Promises, each of which could resolve to a Response, a - * ReadableStream, or a [BodyInit](https://fetch.spec.whatwg.org/#bodyinit). - * - * Returns an object exposing a ReadableStream with each individual stream's - * data returned in sequence, along with a Promise which signals when the - * stream is finished (useful for passing to a FetchEvent's waitUntil()). - * - * @param {Array>} sourcePromises - * @return {Object<{done: Promise, stream: ReadableStream}>} - * - * @memberof workbox.streams - */ - - - function concatenate(sourcePromises) { - { - assert_mjs.assert.isArray(sourcePromises, { - moduleName: 'workbox-streams', - funcName: 'concatenate', - paramName: 'sourcePromises' - }); - } - - const readerPromises = sourcePromises.map(sourcePromise => { - return Promise.resolve(sourcePromise).then(source => { - return _getReaderFromSource(source); - }); - }); - let fullyStreamedResolve; - let fullyStreamedReject; - const done = new Promise((resolve, reject) => { - fullyStreamedResolve = resolve; - fullyStreamedReject = reject; - }); - let i = 0; - const logMessages = []; - const stream = new ReadableStream({ - pull(controller) { - return readerPromises[i].then(reader => reader.read()).then(result => { - if (result.done) { - { - logMessages.push(['Reached the end of source:', sourcePromises[i]]); - } - - i++; - - if (i >= readerPromises.length) { - // Log all the messages in the group at once in a single group. - { - logger_mjs.logger.groupCollapsed(`Concatenating ${readerPromises.length} sources.`); - - for (const message of logMessages) { - if (Array.isArray(message)) { - logger_mjs.logger.log(...message); - } else { - logger_mjs.logger.log(message); - } - } - - logger_mjs.logger.log('Finished reading all sources.'); - logger_mjs.logger.groupEnd(); - } - - controller.close(); - fullyStreamedResolve(); - return; - } - - return this.pull(controller); - } else { - controller.enqueue(result.value); - } - }).catch(error => { - { - logger_mjs.logger.error('An error occurred:', error); - } - - fullyStreamedReject(error); - throw error; - }); - }, - - cancel() { - { - logger_mjs.logger.warn('The ReadableStream was cancelled.'); - } - - fullyStreamedResolve(); - } - - }); - return { - done, - stream - }; - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * This is a utility method that determines whether the current browser supports - * the features required to create streamed responses. Currently, it checks if - * [`ReadableStream`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/ReadableStream) - * is available. - * - * @param {HeadersInit} [headersInit] If there's no `Content-Type` specified, - * `'text/html'` will be used by default. - * @return {boolean} `true`, if the current browser meets the requirements for - * streaming responses, and `false` otherwise. - * - * @memberof workbox.streams - */ - - function createHeaders(headersInit = {}) { - // See https://github.com/GoogleChrome/workbox/issues/1461 - const headers = new Headers(headersInit); - - if (!headers.has('content-type')) { - headers.set('content-type', 'text/html'); - } - - return headers; - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Takes multiple source Promises, each of which could resolve to a Response, a - * ReadableStream, or a [BodyInit](https://fetch.spec.whatwg.org/#bodyinit), - * along with a - * [HeadersInit](https://fetch.spec.whatwg.org/#typedefdef-headersinit). - * - * Returns an object exposing a Response whose body consists of each individual - * stream's data returned in sequence, along with a Promise which signals when - * the stream is finished (useful for passing to a FetchEvent's waitUntil()). - * - * @param {Array>} sourcePromises - * @param {HeadersInit} [headersInit] If there's no `Content-Type` specified, - * `'text/html'` will be used by default. - * @return {Object<{done: Promise, response: Response}>} - * - * @memberof workbox.streams - */ - - function concatenateToResponse(sourcePromises, headersInit) { - const { - done, - stream - } = concatenate(sourcePromises); - const headers = createHeaders(headersInit); - const response = new Response(stream, { - headers - }); - return { - done, - response - }; - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - let cachedIsSupported = undefined; - /** - * This is a utility method that determines whether the current browser supports - * the features required to create streamed responses. Currently, it checks if - * [`ReadableStream`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/ReadableStream) - * can be created. - * - * @return {boolean} `true`, if the current browser meets the requirements for - * streaming responses, and `false` otherwise. - * - * @memberof workbox.streams - */ - - function isSupported() { - if (cachedIsSupported === undefined) { - // See https://github.com/GoogleChrome/workbox/issues/1473 - try { - new ReadableStream({ - start() {} - - }); - cachedIsSupported = true; - } catch (error) { - cachedIsSupported = false; - } - } - - return cachedIsSupported; - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * A shortcut to create a strategy that could be dropped-in to Workbox's router. - * - * On browsers that do not support constructing new `ReadableStream`s, this - * strategy will automatically wait for all the `sourceFunctions` to complete, - * and create a final response that concatenates their values together. - * - * @param { - * Array} sourceFunctions - * Each function should return a {@link workbox.streams.StreamSource} (or a - * Promise which resolves to one). - * @param {HeadersInit} [headersInit] If there's no `Content-Type` specified, - * `'text/html'` will be used by default. - * @return {workbox.routing.Route~handlerCallback} - * - * @memberof workbox.streams - */ - - function strategy(sourceFunctions, headersInit) { - return async ({ - event, - url, - params - }) => { - if (isSupported()) { - const { - done, - response - } = concatenateToResponse(sourceFunctions.map(fn => fn({ - event, - url, - params - })), headersInit); - event.waitUntil(done); - return response; - } - - { - logger_mjs.logger.log(`The current browser doesn't support creating response ` + `streams. Falling back to non-streaming response instead.`); - } // Fallback to waiting for everything to finish, and concatenating the - // responses. - - - const parts = await Promise.all(sourceFunctions.map(sourceFunction => sourceFunction({ - event, - url, - params - })).map(async responsePromise => { - const response = await responsePromise; - - if (response instanceof Response) { - return response.blob(); - } // Otherwise, assume it's something like a string which can be used - // as-is when constructing the final composite blob. - - - return response; - })); - const headers = createHeaders(headersInit); // Constructing a new Response from a Blob source is well-supported. - // So is constructing a new Blob from multiple source Blobs or strings. - - return new Response(new Blob(parts), { - headers - }); - }; - } - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - - exports.concatenate = concatenate; - exports.concatenateToResponse = concatenateToResponse; - exports.isSupported = isSupported; - exports.strategy = strategy; - - return exports; - -}({}, workbox.core._private, workbox.core._private)); -//# sourceMappingURL=workbox-streams.dev.js.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-streams.dev.js.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-streams.dev.js.map deleted file mode 100644 index c175f5e89..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-streams.dev.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-streams.dev.js","sources":["../_version.mjs","../concatenate.mjs","../utils/createHeaders.mjs","../concatenateToResponse.mjs","../isSupported.mjs","../strategy.mjs","../index.mjs"],"sourcesContent":["try{self['workbox:streams:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {assert} from 'workbox-core/_private/assert.mjs';\n\nimport './_version.mjs';\n\n/**\n * Takes either a Response, a ReadableStream, or a\n * [BodyInit](https://fetch.spec.whatwg.org/#bodyinit) and returns the\n * ReadableStreamReader object associated with it.\n *\n * @param {workbox.streams.StreamSource} source\n * @return {ReadableStreamReader}\n * @private\n */\nfunction _getReaderFromSource(source) {\n if (source.body && source.body.getReader) {\n return source.body.getReader();\n }\n\n if (source.getReader) {\n return source.getReader();\n }\n\n // TODO: This should be possible to do by constructing a ReadableStream, but\n // I can't get it to work. As a hack, construct a new Response, and use the\n // reader associated with its body.\n return new Response(source).body.getReader();\n}\n\n/**\n * Takes multiple source Promises, each of which could resolve to a Response, a\n * ReadableStream, or a [BodyInit](https://fetch.spec.whatwg.org/#bodyinit).\n *\n * Returns an object exposing a ReadableStream with each individual stream's\n * data returned in sequence, along with a Promise which signals when the\n * stream is finished (useful for passing to a FetchEvent's waitUntil()).\n *\n * @param {Array>} sourcePromises\n * @return {Object<{done: Promise, stream: ReadableStream}>}\n *\n * @memberof workbox.streams\n */\nfunction concatenate(sourcePromises) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isArray(sourcePromises, {\n moduleName: 'workbox-streams',\n funcName: 'concatenate',\n paramName: 'sourcePromises',\n });\n }\n\n const readerPromises = sourcePromises.map((sourcePromise) => {\n return Promise.resolve(sourcePromise).then((source) => {\n return _getReaderFromSource(source);\n });\n });\n\n let fullyStreamedResolve;\n let fullyStreamedReject;\n const done = new Promise((resolve, reject) => {\n fullyStreamedResolve = resolve;\n fullyStreamedReject = reject;\n });\n\n let i = 0;\n const logMessages = [];\n const stream = new ReadableStream({\n pull(controller) {\n return readerPromises[i]\n .then((reader) => reader.read())\n .then((result) => {\n if (result.done) {\n if (process.env.NODE_ENV !== 'production') {\n logMessages.push(['Reached the end of source:',\n sourcePromises[i]]);\n }\n\n i++;\n if (i >= readerPromises.length) {\n // Log all the messages in the group at once in a single group.\n if (process.env.NODE_ENV !== 'production') {\n logger.groupCollapsed(\n `Concatenating ${readerPromises.length} sources.`);\n for (const message of logMessages) {\n if (Array.isArray(message)) {\n logger.log(...message);\n } else {\n logger.log(message);\n }\n }\n logger.log('Finished reading all sources.');\n logger.groupEnd();\n }\n\n controller.close();\n fullyStreamedResolve();\n return;\n }\n\n return this.pull(controller);\n } else {\n controller.enqueue(result.value);\n }\n }).catch((error) => {\n if (process.env.NODE_ENV !== 'production') {\n logger.error('An error occurred:', error);\n }\n fullyStreamedReject(error);\n throw error;\n });\n },\n\n cancel() {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn('The ReadableStream was cancelled.');\n }\n\n fullyStreamedResolve();\n },\n });\n\n return {done, stream};\n}\n\nexport {concatenate};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n/**\n * This is a utility method that determines whether the current browser supports\n * the features required to create streamed responses. Currently, it checks if\n * [`ReadableStream`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/ReadableStream)\n * is available.\n *\n * @param {HeadersInit} [headersInit] If there's no `Content-Type` specified,\n * `'text/html'` will be used by default.\n * @return {boolean} `true`, if the current browser meets the requirements for\n * streaming responses, and `false` otherwise.\n *\n * @memberof workbox.streams\n */\nfunction createHeaders(headersInit = {}) {\n // See https://github.com/GoogleChrome/workbox/issues/1461\n const headers = new Headers(headersInit);\n if (!headers.has('content-type')) {\n headers.set('content-type', 'text/html');\n }\n return headers;\n}\n\nexport {createHeaders};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {createHeaders} from './utils/createHeaders.mjs';\nimport {concatenate} from './concatenate.mjs';\n\nimport './_version.mjs';\n\n/**\n * Takes multiple source Promises, each of which could resolve to a Response, a\n * ReadableStream, or a [BodyInit](https://fetch.spec.whatwg.org/#bodyinit),\n * along with a\n * [HeadersInit](https://fetch.spec.whatwg.org/#typedefdef-headersinit).\n *\n * Returns an object exposing a Response whose body consists of each individual\n * stream's data returned in sequence, along with a Promise which signals when\n * the stream is finished (useful for passing to a FetchEvent's waitUntil()).\n *\n * @param {Array>} sourcePromises\n * @param {HeadersInit} [headersInit] If there's no `Content-Type` specified,\n * `'text/html'` will be used by default.\n * @return {Object<{done: Promise, response: Response}>}\n *\n * @memberof workbox.streams\n */\nfunction concatenateToResponse(sourcePromises, headersInit) {\n const {done, stream} = concatenate(sourcePromises);\n\n const headers = createHeaders(headersInit);\n const response = new Response(stream, {headers});\n\n return {done, response};\n}\n\nexport {concatenateToResponse};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport './_version.mjs';\n\nlet cachedIsSupported = undefined;\n\n/**\n * This is a utility method that determines whether the current browser supports\n * the features required to create streamed responses. Currently, it checks if\n * [`ReadableStream`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/ReadableStream)\n * can be created.\n *\n * @return {boolean} `true`, if the current browser meets the requirements for\n * streaming responses, and `false` otherwise.\n *\n * @memberof workbox.streams\n */\nfunction isSupported() {\n if (cachedIsSupported === undefined) {\n // See https://github.com/GoogleChrome/workbox/issues/1473\n try {\n new ReadableStream({start() {}});\n cachedIsSupported = true;\n } catch (error) {\n cachedIsSupported = false;\n }\n }\n\n return cachedIsSupported;\n}\n\nexport {isSupported};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {logger} from 'workbox-core/_private/logger.mjs';\n\nimport {createHeaders} from './utils/createHeaders.mjs';\nimport {concatenateToResponse} from './concatenateToResponse.mjs';\nimport {isSupported} from './isSupported.mjs';\n\nimport './_version.mjs';\n\n/**\n * A shortcut to create a strategy that could be dropped-in to Workbox's router.\n *\n * On browsers that do not support constructing new `ReadableStream`s, this\n * strategy will automatically wait for all the `sourceFunctions` to complete,\n * and create a final response that concatenates their values together.\n *\n * @param {\n * Array} sourceFunctions\n * Each function should return a {@link workbox.streams.StreamSource} (or a\n * Promise which resolves to one).\n * @param {HeadersInit} [headersInit] If there's no `Content-Type` specified,\n * `'text/html'` will be used by default.\n * @return {workbox.routing.Route~handlerCallback}\n *\n * @memberof workbox.streams\n */\nexport function strategy(sourceFunctions, headersInit) {\n return async ({event, url, params}) => {\n if (isSupported()) {\n const {done, response} = concatenateToResponse(sourceFunctions.map(\n (fn) => fn({event, url, params})), headersInit);\n event.waitUntil(done);\n return response;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`The current browser doesn't support creating response ` +\n `streams. Falling back to non-streaming response instead.`);\n }\n\n // Fallback to waiting for everything to finish, and concatenating the\n // responses.\n const parts = await Promise.all(\n sourceFunctions.map(\n (sourceFunction) => sourceFunction({event, url, params})\n ).map(async (responsePromise) => {\n const response = await responsePromise;\n if (response instanceof Response) {\n return response.blob();\n }\n\n // Otherwise, assume it's something like a string which can be used\n // as-is when constructing the final composite blob.\n return response;\n })\n );\n\n const headers = createHeaders(headersInit);\n // Constructing a new Response from a Blob source is well-supported.\n // So is constructing a new Blob from multiple source Blobs or strings.\n return new Response(new Blob(parts), {headers});\n };\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {concatenate} from './concatenate.mjs';\nimport {concatenateToResponse} from './concatenateToResponse.mjs';\nimport {isSupported} from './isSupported.mjs';\nimport {strategy} from './strategy.mjs';\nimport './_version.mjs';\n\n\n/**\n * @namespace workbox.streams\n */\n\nexport {\n concatenate,\n concatenateToResponse,\n isSupported,\n strategy,\n};\n"],"names":["self","_","e","_getReaderFromSource","source","body","getReader","Response","concatenate","sourcePromises","assert","isArray","moduleName","funcName","paramName","readerPromises","map","sourcePromise","Promise","resolve","then","fullyStreamedResolve","fullyStreamedReject","done","reject","i","logMessages","stream","ReadableStream","pull","controller","reader","read","result","push","length","logger","groupCollapsed","message","Array","log","groupEnd","close","enqueue","value","catch","error","cancel","warn","createHeaders","headersInit","headers","Headers","has","set","concatenateToResponse","response","cachedIsSupported","undefined","isSupported","start","strategy","sourceFunctions","event","url","params","fn","waitUntil","parts","all","sourceFunction","responsePromise","blob","Blob"],"mappings":"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"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-streams.prod.js b/pr-preview/pr-1029/workbox-v4.3.1/workbox-streams.prod.js deleted file mode 100644 index dc3484464..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-streams.prod.js +++ /dev/null @@ -1,2 +0,0 @@ -this.workbox=this.workbox||{},this.workbox.streams=function(e){"use strict";try{self["workbox:streams:4.3.1"]&&_()}catch(e){}function n(e){const n=e.map(e=>Promise.resolve(e).then(e=>(function(e){return e.body&&e.body.getReader?e.body.getReader():e.getReader?e.getReader():new Response(e).body.getReader()})(e)));let t,r;const s=new Promise((e,n)=>{t=e,r=n});let o=0;return{done:s,stream:new ReadableStream({pull(e){return n[o].then(e=>e.read()).then(r=>{if(r.done)return++o>=n.length?(e.close(),void t()):this.pull(e);e.enqueue(r.value)}).catch(e=>{throw r(e),e})},cancel(){t()}})}}function t(e={}){const n=new Headers(e);return n.has("content-type")||n.set("content-type","text/html"),n}function r(e,r){const{done:s,stream:o}=n(e),a=t(r);return{done:s,response:new Response(o,{headers:a})}}let s=void 0;function o(){if(void 0===s)try{new ReadableStream({start(){}}),s=!0}catch(e){s=!1}return s}return e.concatenate=n,e.concatenateToResponse=r,e.isSupported=o,e.strategy=function(e,n){return async({event:s,url:a,params:c})=>{if(o()){const{done:t,response:o}=r(e.map(e=>e({event:s,url:a,params:c})),n);return s.waitUntil(t),o}const i=await Promise.all(e.map(e=>e({event:s,url:a,params:c})).map(async e=>{const n=await e;return n instanceof Response?n.blob():n})),u=t(n);return new Response(new Blob(i),{headers:u})}},e}({}); -//# sourceMappingURL=workbox-streams.prod.js.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-streams.prod.js.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-streams.prod.js.map deleted file mode 100644 index ac76d02e4..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-streams.prod.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-streams.prod.js","sources":["../_version.mjs","../concatenate.mjs","../utils/createHeaders.mjs","../concatenateToResponse.mjs","../isSupported.mjs","../strategy.mjs"],"sourcesContent":["try{self['workbox:streams:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {assert} from 'workbox-core/_private/assert.mjs';\n\nimport './_version.mjs';\n\n/**\n * Takes either a Response, a ReadableStream, or a\n * [BodyInit](https://fetch.spec.whatwg.org/#bodyinit) and returns the\n * ReadableStreamReader object associated with it.\n *\n * @param {workbox.streams.StreamSource} source\n * @return {ReadableStreamReader}\n * @private\n */\nfunction _getReaderFromSource(source) {\n if (source.body && source.body.getReader) {\n return source.body.getReader();\n }\n\n if (source.getReader) {\n return source.getReader();\n }\n\n // TODO: This should be possible to do by constructing a ReadableStream, but\n // I can't get it to work. As a hack, construct a new Response, and use the\n // reader associated with its body.\n return new Response(source).body.getReader();\n}\n\n/**\n * Takes multiple source Promises, each of which could resolve to a Response, a\n * ReadableStream, or a [BodyInit](https://fetch.spec.whatwg.org/#bodyinit).\n *\n * Returns an object exposing a ReadableStream with each individual stream's\n * data returned in sequence, along with a Promise which signals when the\n * stream is finished (useful for passing to a FetchEvent's waitUntil()).\n *\n * @param {Array>} sourcePromises\n * @return {Object<{done: Promise, stream: ReadableStream}>}\n *\n * @memberof workbox.streams\n */\nfunction concatenate(sourcePromises) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isArray(sourcePromises, {\n moduleName: 'workbox-streams',\n funcName: 'concatenate',\n paramName: 'sourcePromises',\n });\n }\n\n const readerPromises = sourcePromises.map((sourcePromise) => {\n return Promise.resolve(sourcePromise).then((source) => {\n return _getReaderFromSource(source);\n });\n });\n\n let fullyStreamedResolve;\n let fullyStreamedReject;\n const done = new Promise((resolve, reject) => {\n fullyStreamedResolve = resolve;\n fullyStreamedReject = reject;\n });\n\n let i = 0;\n const logMessages = [];\n const stream = new ReadableStream({\n pull(controller) {\n return readerPromises[i]\n .then((reader) => reader.read())\n .then((result) => {\n if (result.done) {\n if (process.env.NODE_ENV !== 'production') {\n logMessages.push(['Reached the end of source:',\n sourcePromises[i]]);\n }\n\n i++;\n if (i >= readerPromises.length) {\n // Log all the messages in the group at once in a single group.\n if (process.env.NODE_ENV !== 'production') {\n logger.groupCollapsed(\n `Concatenating ${readerPromises.length} sources.`);\n for (const message of logMessages) {\n if (Array.isArray(message)) {\n logger.log(...message);\n } else {\n logger.log(message);\n }\n }\n logger.log('Finished reading all sources.');\n logger.groupEnd();\n }\n\n controller.close();\n fullyStreamedResolve();\n return;\n }\n\n return this.pull(controller);\n } else {\n controller.enqueue(result.value);\n }\n }).catch((error) => {\n if (process.env.NODE_ENV !== 'production') {\n logger.error('An error occurred:', error);\n }\n fullyStreamedReject(error);\n throw error;\n });\n },\n\n cancel() {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn('The ReadableStream was cancelled.');\n }\n\n fullyStreamedResolve();\n },\n });\n\n return {done, stream};\n}\n\nexport {concatenate};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n/**\n * This is a utility method that determines whether the current browser supports\n * the features required to create streamed responses. Currently, it checks if\n * [`ReadableStream`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/ReadableStream)\n * is available.\n *\n * @param {HeadersInit} [headersInit] If there's no `Content-Type` specified,\n * `'text/html'` will be used by default.\n * @return {boolean} `true`, if the current browser meets the requirements for\n * streaming responses, and `false` otherwise.\n *\n * @memberof workbox.streams\n */\nfunction createHeaders(headersInit = {}) {\n // See https://github.com/GoogleChrome/workbox/issues/1461\n const headers = new Headers(headersInit);\n if (!headers.has('content-type')) {\n headers.set('content-type', 'text/html');\n }\n return headers;\n}\n\nexport {createHeaders};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {createHeaders} from './utils/createHeaders.mjs';\nimport {concatenate} from './concatenate.mjs';\n\nimport './_version.mjs';\n\n/**\n * Takes multiple source Promises, each of which could resolve to a Response, a\n * ReadableStream, or a [BodyInit](https://fetch.spec.whatwg.org/#bodyinit),\n * along with a\n * [HeadersInit](https://fetch.spec.whatwg.org/#typedefdef-headersinit).\n *\n * Returns an object exposing a Response whose body consists of each individual\n * stream's data returned in sequence, along with a Promise which signals when\n * the stream is finished (useful for passing to a FetchEvent's waitUntil()).\n *\n * @param {Array>} sourcePromises\n * @param {HeadersInit} [headersInit] If there's no `Content-Type` specified,\n * `'text/html'` will be used by default.\n * @return {Object<{done: Promise, response: Response}>}\n *\n * @memberof workbox.streams\n */\nfunction concatenateToResponse(sourcePromises, headersInit) {\n const {done, stream} = concatenate(sourcePromises);\n\n const headers = createHeaders(headersInit);\n const response = new Response(stream, {headers});\n\n return {done, response};\n}\n\nexport {concatenateToResponse};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport './_version.mjs';\n\nlet cachedIsSupported = undefined;\n\n/**\n * This is a utility method that determines whether the current browser supports\n * the features required to create streamed responses. Currently, it checks if\n * [`ReadableStream`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/ReadableStream)\n * can be created.\n *\n * @return {boolean} `true`, if the current browser meets the requirements for\n * streaming responses, and `false` otherwise.\n *\n * @memberof workbox.streams\n */\nfunction isSupported() {\n if (cachedIsSupported === undefined) {\n // See https://github.com/GoogleChrome/workbox/issues/1473\n try {\n new ReadableStream({start() {}});\n cachedIsSupported = true;\n } catch (error) {\n cachedIsSupported = false;\n }\n }\n\n return cachedIsSupported;\n}\n\nexport {isSupported};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {logger} from 'workbox-core/_private/logger.mjs';\n\nimport {createHeaders} from './utils/createHeaders.mjs';\nimport {concatenateToResponse} from './concatenateToResponse.mjs';\nimport {isSupported} from './isSupported.mjs';\n\nimport './_version.mjs';\n\n/**\n * A shortcut to create a strategy that could be dropped-in to Workbox's router.\n *\n * On browsers that do not support constructing new `ReadableStream`s, this\n * strategy will automatically wait for all the `sourceFunctions` to complete,\n * and create a final response that concatenates their values together.\n *\n * @param {\n * Array} sourceFunctions\n * Each function should return a {@link workbox.streams.StreamSource} (or a\n * Promise which resolves to one).\n * @param {HeadersInit} [headersInit] If there's no `Content-Type` specified,\n * `'text/html'` will be used by default.\n * @return {workbox.routing.Route~handlerCallback}\n *\n * @memberof workbox.streams\n */\nexport function strategy(sourceFunctions, headersInit) {\n return async ({event, url, params}) => {\n if (isSupported()) {\n const {done, response} = concatenateToResponse(sourceFunctions.map(\n (fn) => fn({event, url, params})), headersInit);\n event.waitUntil(done);\n return response;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`The current browser doesn't support creating response ` +\n `streams. Falling back to non-streaming response instead.`);\n }\n\n // Fallback to waiting for everything to finish, and concatenating the\n // responses.\n const parts = await Promise.all(\n sourceFunctions.map(\n (sourceFunction) => sourceFunction({event, url, params})\n ).map(async (responsePromise) => {\n const response = await responsePromise;\n if (response instanceof Response) {\n return response.blob();\n }\n\n // Otherwise, assume it's something like a string which can be used\n // as-is when constructing the final composite blob.\n return response;\n })\n );\n\n const headers = createHeaders(headersInit);\n // Constructing a new Response from a Blob source is well-supported.\n // So is constructing a new Blob from multiple source Blobs or strings.\n return new Response(new Blob(parts), {headers});\n };\n}\n"],"names":["self","_","e","concatenate","sourcePromises","readerPromises","map","sourcePromise","Promise","resolve","then","source","body","getReader","Response","_getReaderFromSource","fullyStreamedResolve","fullyStreamedReject","done","reject","i","stream","ReadableStream","pull","controller","reader","read","result","length","close","this","enqueue","value","catch","error","cancel","createHeaders","headersInit","headers","Headers","has","set","concatenateToResponse","response","cachedIsSupported","undefined","isSupported","start","sourceFunctions","async","event","url","params","fn","waitUntil","parts","all","sourceFunction","responsePromise","blob","Blob"],"mappings":"4EAAA,IAAIA,KAAK,0BAA0BC,IAAI,MAAMC,ICkD7C,SAASC,EAAYC,SASbC,EAAiBD,EAAeE,IAAKC,GAClCC,QAAQC,QAAQF,GAAeG,KAAMC,IAtChD,SAA8BA,UACxBA,EAAOC,MAAQD,EAAOC,KAAKC,UACtBF,EAAOC,KAAKC,YAGjBF,EAAOE,UACFF,EAAOE,YAMT,IAAIC,SAASH,GAAQC,KAAKC,aA2BtBE,CAAqBJ,SAI5BK,EACAC,QACEC,EAAO,IAAIV,QAAQ,CAACC,EAASU,KACjCH,EAAuBP,EACvBQ,EAAsBE,QAGpBC,EAAI,QAyDD,CAACF,KAAAA,EAAMG,OAvDC,IAAIC,eAAe,CAChCC,KAAKC,UACInB,EAAee,GACjBV,KAAMe,GAAWA,EAAOC,QACxBhB,KAAMiB,OACDA,EAAOT,aAMTE,GACSf,EAAeuB,QAgBtBJ,EAAWK,aACXb,KAIKc,KAAKP,KAAKC,GAEjBA,EAAWO,QAAQJ,EAAOK,SAE3BC,MAAOC,UAIRjB,EAAoBiB,GACdA,KAIdC,SAKEnB,QCtGN,SAASoB,EAAcC,EAAc,UAE7BC,EAAU,IAAIC,QAAQF,UACvBC,EAAQE,IAAI,iBACfF,EAAQG,IAAI,eAAgB,aAEvBH,ECCT,SAASI,EAAsBtC,EAAgBiC,SACvCnB,KAACA,EAADG,OAAOA,GAAUlB,EAAYC,GAE7BkC,EAAUF,EAAcC,SAGvB,CAACnB,KAAAA,EAAMyB,SAFG,IAAI7B,SAASO,EAAQ,CAACiB,QAAAA,KCxBzC,IAAIM,OAAoBC,EAaxB,SAASC,YACmBD,IAAtBD,UAGItB,eAAe,CAACyB,YACpBH,GAAoB,EACpB,MAAOV,GACPU,GAAoB,SAIjBA,8ECDF,SAAkBI,EAAiBX,UACjCY,OAAQC,MAAAA,EAAOC,IAAAA,EAAKC,OAAAA,SACrBN,IAAe,OACX5B,KAACA,EAADyB,SAAOA,GAAYD,EAAsBM,EAAgB1C,IAC1D+C,GAAOA,EAAG,CAACH,MAAAA,EAAOC,IAAAA,EAAKC,OAAAA,KAAWf,UACvCa,EAAMI,UAAUpC,GACTyB,QAUHY,QAAc/C,QAAQgD,IACxBR,EAAgB1C,IACXmD,GAAmBA,EAAe,CAACP,MAAAA,EAAOC,IAAAA,EAAKC,OAAAA,KAClD9C,IAAI2C,MAAAA,UACEN,QAAiBe,SACnBf,aAAoB7B,SACf6B,EAASgB,OAKXhB,KAIPL,EAAUF,EAAcC,UAGvB,IAAIvB,SAAS,IAAI8C,KAAKL,GAAQ,CAACjB,QAAAA"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-sw.js b/pr-preview/pr-1029/workbox-v4.3.1/workbox-sw.js deleted file mode 100644 index 61b3289a8..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-sw.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(){"use strict";try{self["workbox:sw:4.3.1"]&&_()}catch(t){}const t="https://storage.googleapis.com/workbox-cdn/releases/4.3.1",e={backgroundSync:"background-sync",broadcastUpdate:"broadcast-update",cacheableResponse:"cacheable-response",core:"core",expiration:"expiration",googleAnalytics:"offline-ga",navigationPreload:"navigation-preload",precaching:"precaching",rangeRequests:"range-requests",routing:"routing",strategies:"strategies",streams:"streams"};self.workbox=new class{constructor(){return this.v={},this.t={debug:"localhost"===self.location.hostname,modulePathPrefix:null,modulePathCb:null},this.s=this.t.debug?"dev":"prod",this.o=!1,new Proxy(this,{get(t,s){if(t[s])return t[s];const o=e[s];return o&&t.loadModule(`workbox-${o}`),t[s]}})}setConfig(t={}){if(this.o)throw new Error("Config must be set before accessing workbox.* modules");Object.assign(this.t,t),this.s=this.t.debug?"dev":"prod"}loadModule(t){const e=this.i(t);try{importScripts(e),this.o=!0}catch(s){throw console.error(`Unable to import module '${t}' from '${e}'.`),s}}i(e){if(this.t.modulePathCb)return this.t.modulePathCb(e,this.t.debug);let s=[t];const o=`${e}.${this.s}.js`,r=this.t.modulePathPrefix;return r&&""===(s=r.split("/"))[s.length-1]&&s.splice(s.length-1,1),s.push(o),s.join("/")}}}(); -//# sourceMappingURL=workbox-sw.js.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-sw.js.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-sw.js.map deleted file mode 100644 index efb3c3655..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-sw.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-sw.js","sources":["../_version.mjs","../controllers/WorkboxSW.mjs","../index.mjs"],"sourcesContent":["try{self['workbox:sw:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\nconst CDN_PATH = `WORKBOX_CDN_ROOT_URL`;\n\nconst MODULE_KEY_TO_NAME_MAPPING = {\n // TODO(philipwalton): add jsdoc tags to associate these with their module.\n // @name backgroundSync\n // @memberof workbox\n // @see module:workbox-background-sync\n backgroundSync: 'background-sync',\n broadcastUpdate: 'broadcast-update',\n cacheableResponse: 'cacheable-response',\n core: 'core',\n expiration: 'expiration',\n googleAnalytics: 'offline-ga',\n navigationPreload: 'navigation-preload',\n precaching: 'precaching',\n rangeRequests: 'range-requests',\n routing: 'routing',\n strategies: 'strategies',\n streams: 'streams',\n};\n\n/**\n * This class can be used to make it easy to use the various parts of\n * Workbox.\n *\n * @private\n */\nexport class WorkboxSW {\n /**\n * Creates a proxy that automatically loads workbox namespaces on demand.\n *\n * @private\n */\n constructor() {\n this.v = {};\n this._options = {\n debug: self.location.hostname === 'localhost',\n modulePathPrefix: null,\n modulePathCb: null,\n };\n\n this._env = this._options.debug ? 'dev' : 'prod';\n this._modulesLoaded = false;\n\n return new Proxy(this, {\n get(target, key) {\n if (target[key]) {\n return target[key];\n }\n\n const moduleName = MODULE_KEY_TO_NAME_MAPPING[key];\n if (moduleName) {\n target.loadModule(`workbox-${moduleName}`);\n }\n\n return target[key];\n },\n });\n }\n\n /**\n * Updates the configuration options. You can specify whether to treat as a\n * debug build and whether to use a CDN or a specific path when importing\n * other workbox-modules\n *\n * @param {Object} [options]\n * @param {boolean} [options.debug] If true, `dev` builds are using, otherwise\n * `prod` builds are used. By default, `prod` is used unless on localhost.\n * @param {Function} [options.modulePathPrefix] To avoid using the CDN with\n * `workbox-sw` set the path prefix of where modules should be loaded from.\n * For example `modulePathPrefix: '/third_party/workbox/v3.0.0/'`.\n * @param {workbox~ModulePathCallback} [options.modulePathCb] If defined,\n * this callback will be responsible for determining the path of each\n * workbox module.\n *\n * @alias workbox.setConfig\n */\n setConfig(options = {}) {\n if (!this._modulesLoaded) {\n Object.assign(this._options, options);\n this._env = this._options.debug ? 'dev' : 'prod';\n } else {\n throw new Error('Config must be set before accessing workbox.* modules');\n }\n }\n\n /**\n * Load a Workbox module by passing in the appropriate module name.\n *\n * This is not generally needed unless you know there are modules that are\n * dynamically used and you want to safe guard use of the module while the\n * user may be offline.\n *\n * @param {string} moduleName\n *\n * @alias workbox.loadModule\n */\n loadModule(moduleName) {\n const modulePath = this._getImportPath(moduleName);\n try {\n importScripts(modulePath);\n this._modulesLoaded = true;\n } catch (err) {\n // TODO Add context of this error if using the CDN vs the local file.\n\n // We can't rely on workbox-core being loaded so using console\n // eslint-disable-next-line\n console.error(\n `Unable to import module '${moduleName}' from '${modulePath}'.`);\n throw err;\n }\n }\n\n /**\n * This method will get the path / CDN URL to be used for importScript calls.\n *\n * @param {string} moduleName\n * @return {string} URL to the desired module.\n *\n * @private\n */\n _getImportPath(moduleName) {\n if (this._options.modulePathCb) {\n return this._options.modulePathCb(moduleName, this._options.debug);\n }\n\n // TODO: This needs to be dynamic some how.\n let pathParts = [CDN_PATH];\n\n const fileName = `${moduleName}.${this._env}.js`;\n\n const pathPrefix = this._options.modulePathPrefix;\n if (pathPrefix) {\n // Split to avoid issues with developers ending / not ending with slash\n pathParts = pathPrefix.split('/');\n\n // We don't need a slash at the end as we will be adding\n // a filename regardless\n if (pathParts[pathParts.length - 1] === '') {\n pathParts.splice(pathParts.length - 1, 1);\n }\n }\n\n pathParts.push(fileName);\n\n return pathParts.join('/');\n }\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {WorkboxSW} from './controllers/WorkboxSW.mjs';\nimport './_version.mjs';\n\n/**\n * @namespace workbox\n */\n\n// Don't export anything, just expose a global.\nself.workbox = new WorkboxSW();\n"],"names":["self","_","e","CDN_PATH","MODULE_KEY_TO_NAME_MAPPING","backgroundSync","broadcastUpdate","cacheableResponse","core","expiration","googleAnalytics","navigationPreload","precaching","rangeRequests","routing","strategies","streams","workbox","constructor","v","_options","debug","location","hostname","modulePathPrefix","modulePathCb","_env","this","_modulesLoaded","Proxy","get","target","key","moduleName","loadModule","setConfig","options","Error","Object","assign","modulePath","_getImportPath","importScripts","err","console","error","pathParts","fileName","pathPrefix","split","length","splice","push","join"],"mappings":"yBAAA,IAAIA,KAAK,qBAAqBC,IAAI,MAAMC,ICUxC,MAAMC,EAAY,4DAEZC,EAA6B,CAKjCC,eAAgB,kBAChBC,gBAAiB,mBACjBC,kBAAmB,qBACnBC,KAAM,OACNC,WAAY,aACZC,gBAAiB,aACjBC,kBAAmB,qBACnBC,WAAY,aACZC,cAAe,iBACfC,QAAS,UACTC,WAAY,aACZC,QAAS,WCZXhB,KAAKiB,QAAU,IDqBR,MAMLC,0BACOC,EAAI,QACJC,EAAW,CACdC,MAAkC,cAA3BrB,KAAKsB,SAASC,SACrBC,iBAAkB,KAClBC,aAAc,WAGXC,EAAOC,KAAKP,EAASC,MAAQ,MAAQ,YACrCO,GAAiB,EAEf,IAAIC,MAAMF,KAAM,CACrBG,IAAIC,EAAQC,MACND,EAAOC,UACFD,EAAOC,SAGVC,EAAa7B,EAA2B4B,UAC1CC,GACFF,EAAOG,sBAAsBD,KAGxBF,EAAOC,MAsBpBG,UAAUC,EAAU,OACbT,KAAKC,QAIF,IAAIS,MAAM,yDAHhBC,OAAOC,OAAOZ,KAAKP,EAAUgB,QACxBV,EAAOC,KAAKP,EAASC,MAAQ,MAAQ,OAiB9Ca,WAAWD,SACHO,EAAab,KAAKc,EAAeR,OAErCS,cAAcF,QACTZ,GAAiB,EACtB,MAAOe,SAKPC,QAAQC,kCACwBZ,YAAqBO,OAC/CG,GAYVF,EAAeR,MACTN,KAAKP,EAASK,oBACTE,KAAKP,EAASK,aAAaQ,EAAYN,KAAKP,EAASC,WAI1DyB,EAAY,CAAC3C,SAEX4C,KAAcd,KAAcN,KAAKD,OAEjCsB,EAAarB,KAAKP,EAASI,wBAC7BwB,GAMsC,MAJxCF,EAAYE,EAAWC,MAAM,MAIfH,EAAUI,OAAS,IAC/BJ,EAAUK,OAAOL,EAAUI,OAAS,EAAG,GAI3CJ,EAAUM,KAAKL,GAERD,EAAUO,KAAK"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.dev.es5.mjs b/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.dev.es5.mjs deleted file mode 100644 index 73240674b..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.dev.es5.mjs +++ /dev/null @@ -1,885 +0,0 @@ -try { - self['workbox:window:4.3.1'] && _(); -} catch (e) {} // eslint-disable-line - -/* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. -*/ -/** - * Sends a data object to a service worker via `postMessage` and resolves with - * a response (if any). - * - * A response can be set in a message handler in the service worker by - * calling `event.ports[0].postMessage(...)`, which will resolve the promise - * returned by `messageSW()`. If no response is set, the promise will not - * resolve. - * - * @param {ServiceWorker} sw The service worker to send the message to. - * @param {Object} data An object to send to the service worker. - * @return {Promise} - * - * @memberof module:workbox-window - */ - -var messageSW = function messageSW(sw, data) { - return new Promise(function (resolve) { - var messageChannel = new MessageChannel(); - - messageChannel.port1.onmessage = function (evt) { - return resolve(evt.data); - }; - - sw.postMessage(data, [messageChannel.port2]); - }); -}; - -function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } -} - -function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; -} - -function _inheritsLoose(subClass, superClass) { - subClass.prototype = Object.create(superClass.prototype); - subClass.prototype.constructor = subClass; - subClass.__proto__ = superClass; -} - -function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - - return self; -} - -try { - self['workbox:core:4.3.1'] && _(); -} catch (e) {} // eslint-disable-line - -/* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. -*/ -/** - * The Deferred class composes Promises in a way that allows for them to be - * resolved or rejected from outside the constructor. In most cases promises - * should be used directly, but Deferreds can be necessary when the logic to - * resolve a promise must be separate. - * - * @private - */ - -var Deferred = -/** - * Creates a promise and exposes its resolve and reject functions as methods. - */ -function Deferred() { - var _this = this; - - this.promise = new Promise(function (resolve, reject) { - _this.resolve = resolve; - _this.reject = reject; - }); -}; - -/* - Copyright 2019 Google LLC - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. -*/ -var logger = function () { - var inGroup = false; - var methodToColorMap = { - debug: "#7f8c8d", - // Gray - log: "#2ecc71", - // Green - warn: "#f39c12", - // Yellow - error: "#c0392b", - // Red - groupCollapsed: "#3498db", - // Blue - groupEnd: null // No colored prefix on groupEnd - - }; - - var print = function print(method, args) { - var _console2; - - if (method === 'groupCollapsed') { - // Safari doesn't print all console.groupCollapsed() arguments: - // https://bugs.webkit.org/show_bug.cgi?id=182754 - if (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { - var _console; - - (_console = console)[method].apply(_console, args); - - return; - } - } - - var styles = ["background: " + methodToColorMap[method], "border-radius: 0.5em", "color: white", "font-weight: bold", "padding: 2px 0.5em"]; // When in a group, the workbox prefix is not displayed. - - var logPrefix = inGroup ? [] : ['%cworkbox', styles.join(';')]; - - (_console2 = console)[method].apply(_console2, logPrefix.concat(args)); - - if (method === 'groupCollapsed') { - inGroup = true; - } - - if (method === 'groupEnd') { - inGroup = false; - } - }; - - var api = {}; - - var _arr = Object.keys(methodToColorMap); - - var _loop = function _loop() { - var method = _arr[_i]; - - api[method] = function () { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - print(method, args); - }; - }; - - for (var _i = 0; _i < _arr.length; _i++) { - _loop(); - } - - return api; -}(); - -/* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. -*/ -/** - * A minimal `EventTarget` shim. - * This is necessary because not all browsers support constructable - * `EventTarget`, so using a real `EventTarget` will error. - * @private - */ - -var EventTargetShim = -/*#__PURE__*/ -function () { - /** - * Creates an event listener registry - * - * @private - */ - function EventTargetShim() { - // A registry of event types to listeners. - this._eventListenerRegistry = {}; - } - /** - * @param {string} type - * @param {Function} listener - * @private - */ - - - var _proto = EventTargetShim.prototype; - - _proto.addEventListener = function addEventListener(type, listener) { - this._getEventListenersByType(type).add(listener); - }; - /** - * @param {string} type - * @param {Function} listener - * @private - */ - - - _proto.removeEventListener = function removeEventListener(type, listener) { - this._getEventListenersByType(type).delete(listener); - }; - /** - * @param {Event} event - * @private - */ - - - _proto.dispatchEvent = function dispatchEvent(event) { - event.target = this; - - this._getEventListenersByType(event.type).forEach(function (listener) { - return listener(event); - }); - }; - /** - * Returns a Set of listeners associated with the passed event type. - * If no handlers have been registered, an empty Set is returned. - * - * @param {string} type The event type. - * @return {Set} An array of handler functions. - * @private - */ - - - _proto._getEventListenersByType = function _getEventListenersByType(type) { - return this._eventListenerRegistry[type] = this._eventListenerRegistry[type] || new Set(); - }; - - return EventTargetShim; -}(); - -/* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. -*/ -/** - * Returns true if two URLs have the same `.href` property. The URLS can be - * relative, and if they are the current location href is used to resolve URLs. - * - * @private - * @param {string} url1 - * @param {string} url2 - * @return {boolean} - */ - -var urlsMatch = function urlsMatch(url1, url2) { - return new URL(url1, location).href === new URL(url2, location).href; -}; - -/* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. -*/ -/** - * A minimal `Event` subclass shim. - * This doesn't *actually* subclass `Event` because not all browsers support - * constructable `EventTarget`, and using a real `Event` will error. - * @private - */ - -var WorkboxEvent = -/** - * @param {string} type - * @param {Object} props - */ -function WorkboxEvent(type, props) { - Object.assign(this, props, { - type: type - }); -}; - -function _catch(body, recover) { - try { - var result = body(); - } catch (e) { - return recover(e); - } - - if (result && result.then) { - return result.then(void 0, recover); - } - - return result; -} - -function _async(f) { - return function () { - for (var args = [], i = 0; i < arguments.length; i++) { - args[i] = arguments[i]; - } - - try { - return Promise.resolve(f.apply(this, args)); - } catch (e) { - return Promise.reject(e); - } - }; -} - -function _invoke(body, then) { - var result = body(); - - if (result && result.then) { - return result.then(then); - } - - return then(result); -} - -function _await(value, then, direct) { - if (direct) { - return then ? then(value) : value; - } - - if (!value || !value.then) { - value = Promise.resolve(value); - } - - return then ? value.then(then) : value; -} - -function _awaitIgnored(value, direct) { - if (!direct) { - return value && value.then ? value.then(_empty) : Promise.resolve(); - } -} - -function _empty() {} -// `skipWaiting()` wasn't called. This 200 amount wasn't scientifically -// chosen, but it seems to avoid false positives in my testing. - -var WAITING_TIMEOUT_DURATION = 200; // The amount of time after a registration that we can reasonably conclude -// that the registration didn't trigger an update. - -var REGISTRATION_TIMEOUT_DURATION = 60000; -/** - * A class to aid in handling service worker registration, updates, and - * reacting to service worker lifecycle events. - * - * @fires [message]{@link module:workbox-window.Workbox#message} - * @fires [installed]{@link module:workbox-window.Workbox#installed} - * @fires [waiting]{@link module:workbox-window.Workbox#waiting} - * @fires [controlling]{@link module:workbox-window.Workbox#controlling} - * @fires [activated]{@link module:workbox-window.Workbox#activated} - * @fires [redundant]{@link module:workbox-window.Workbox#redundant} - * @fires [externalinstalled]{@link module:workbox-window.Workbox#externalinstalled} - * @fires [externalwaiting]{@link module:workbox-window.Workbox#externalwaiting} - * @fires [externalactivated]{@link module:workbox-window.Workbox#externalactivated} - * - * @memberof module:workbox-window - */ - -var Workbox = -/*#__PURE__*/ -function (_EventTargetShim) { - _inheritsLoose(Workbox, _EventTargetShim); - - /** - * Creates a new Workbox instance with a script URL and service worker - * options. The script URL and options are the same as those used when - * calling `navigator.serviceWorker.register(scriptURL, options)`. See: - * https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/register - * - * @param {string} scriptURL The service worker script associated with this - * instance. - * @param {Object} [registerOptions] The service worker options associated - * with this instance. - */ - function Workbox(scriptURL, registerOptions) { - var _this; - - if (registerOptions === void 0) { - registerOptions = {}; - } - - _this = _EventTargetShim.call(this) || this; - _this._scriptURL = scriptURL; - _this._registerOptions = registerOptions; - _this._updateFoundCount = 0; // Deferreds we can resolve later. - - _this._swDeferred = new Deferred(); - _this._activeDeferred = new Deferred(); - _this._controllingDeferred = new Deferred(); // Bind event handler callbacks. - - _this._onMessage = _this._onMessage.bind(_assertThisInitialized(_assertThisInitialized(_this))); - _this._onStateChange = _this._onStateChange.bind(_assertThisInitialized(_assertThisInitialized(_this))); - _this._onUpdateFound = _this._onUpdateFound.bind(_assertThisInitialized(_assertThisInitialized(_this))); - _this._onControllerChange = _this._onControllerChange.bind(_assertThisInitialized(_assertThisInitialized(_this))); - return _this; - } - /** - * Registers a service worker for this instances script URL and service - * worker options. By default this method delays registration until after - * the window has loaded. - * - * @param {Object} [options] - * @param {Function} [options.immediate=false] Setting this to true will - * register the service worker immediately, even if the window has - * not loaded (not recommended). - */ - - - var _proto = Workbox.prototype; - _proto.register = _async(function (_temp) { - var _this2 = this; - - var _ref = _temp === void 0 ? {} : _temp, - _ref$immediate = _ref.immediate, - immediate = _ref$immediate === void 0 ? false : _ref$immediate; - - { - if (_this2._registrationTime) { - logger.error('Cannot re-register a Workbox instance after it has ' + 'been registered. Create a new instance instead.'); - return; - } - } - - return _invoke(function () { - if (!immediate && document.readyState !== 'complete') { - return _awaitIgnored(new Promise(function (res) { - return addEventListener('load', res); - })); - } - }, function () { - // Set this flag to true if any service worker was controlling the page - // at registration time. - _this2._isUpdate = Boolean(navigator.serviceWorker.controller); // Before registering, attempt to determine if a SW is already controlling - // the page, and if that SW script (and version, if specified) matches this - // instance's script. - - _this2._compatibleControllingSW = _this2._getControllingSWIfCompatible(); - return _await(_this2._registerScript(), function (_this2$_registerScrip) { - _this2._registration = _this2$_registerScrip; - - // If we have a compatible controller, store the controller as the "own" - // SW, resolve active/controlling deferreds and add necessary listeners. - if (_this2._compatibleControllingSW) { - _this2._sw = _this2._compatibleControllingSW; - - _this2._activeDeferred.resolve(_this2._compatibleControllingSW); - - _this2._controllingDeferred.resolve(_this2._compatibleControllingSW); - - _this2._reportWindowReady(_this2._compatibleControllingSW); - - _this2._compatibleControllingSW.addEventListener('statechange', _this2._onStateChange, { - once: true - }); - } // If there's a waiting service worker with a matching URL before the - // `updatefound` event fires, it likely means that this site is open - // in another tab, or the user refreshed the page (and thus the prevoius - // page wasn't fully unloaded before this page started loading). - // https://developers.google.com/web/fundamentals/primers/service-workers/lifecycle#waiting - - - var waitingSW = _this2._registration.waiting; - - if (waitingSW && urlsMatch(waitingSW.scriptURL, _this2._scriptURL)) { - // Store the waiting SW as the "own" Sw, even if it means overwriting - // a compatible controller. - _this2._sw = waitingSW; // Run this in the next microtask, so any code that adds an event - // listener after awaiting `register()` will get this event. - - Promise.resolve().then(function () { - _this2.dispatchEvent(new WorkboxEvent('waiting', { - sw: waitingSW, - wasWaitingBeforeRegister: true - })); - - { - logger.warn('A service worker was already waiting to activate ' + 'before this script was registered...'); - } - }); - } // If an "own" SW is already set, resolve the deferred. - - - if (_this2._sw) { - _this2._swDeferred.resolve(_this2._sw); - } - - { - logger.log('Successfully registered service worker.', _this2._scriptURL); - - if (navigator.serviceWorker.controller) { - if (_this2._compatibleControllingSW) { - logger.debug('A service worker with the same script URL ' + 'is already controlling this page.'); - } else { - logger.debug('A service worker with a different script URL is ' + 'currently controlling the page. The browser is now fetching ' + 'the new script now...'); - } - } - - var currentPageIsOutOfScope = function currentPageIsOutOfScope() { - var scopeURL = new URL(_this2._registerOptions.scope || _this2._scriptURL, document.baseURI); - var scopeURLBasePath = new URL('./', scopeURL.href).pathname; - return !location.pathname.startsWith(scopeURLBasePath); - }; - - if (currentPageIsOutOfScope()) { - logger.warn('The current page is not in scope for the registered ' + 'service worker. Was this a mistake?'); - } - } - - _this2._registration.addEventListener('updatefound', _this2._onUpdateFound); - - navigator.serviceWorker.addEventListener('controllerchange', _this2._onControllerChange, { - once: true - }); // Add message listeners. - - if ('BroadcastChannel' in self) { - _this2._broadcastChannel = new BroadcastChannel('workbox'); - - _this2._broadcastChannel.addEventListener('message', _this2._onMessage); - } - - navigator.serviceWorker.addEventListener('message', _this2._onMessage); - return _this2._registration; - }); - }); - }); - /** - * Resolves to the service worker registered by this instance as soon as it - * is active. If a service worker was already controlling at registration - * time then it will resolve to that if the script URLs (and optionally - * script versions) match, otherwise it will wait until an update is found - * and activates. - * - * @return {Promise} - */ - - /** - * Resolves with a reference to a service worker that matches the script URL - * of this instance, as soon as it's available. - * - * If, at registration time, there's already an active or waiting service - * worker with a matching script URL, it will be used (with the waiting - * service worker taking precedence over the active service worker if both - * match, since the waiting service worker would have been registered more - * recently). - * If there's no matching active or waiting service worker at registration - * time then the promise will not resolve until an update is found and starts - * installing, at which point the installing service worker is used. - * - * @return {Promise} - */ - _proto.getSW = _async(function () { - var _this3 = this; - - // If `this._sw` is set, resolve with that as we want `getSW()` to - // return the correct (new) service worker if an update is found. - return _this3._sw || _this3._swDeferred.promise; - }); - /** - * Sends the passed data object to the service worker registered by this - * instance (via [`getSW()`]{@link module:workbox-window.Workbox#getSW}) and resolves - * with a response (if any). - * - * A response can be set in a message handler in the service worker by - * calling `event.ports[0].postMessage(...)`, which will resolve the promise - * returned by `messageSW()`. If no response is set, the promise will never - * resolve. - * - * @param {Object} data An object to send to the service worker - * @return {Promise} - */ - - _proto.messageSW = _async(function (data) { - var _this4 = this; - - return _await(_this4.getSW(), function (sw) { - return messageSW(sw, data); - }); - }); - /** - * Checks for a service worker already controlling the page and returns - * it if its script URL matchs. - * - * @private - * @return {ServiceWorker|undefined} - */ - - _proto._getControllingSWIfCompatible = function _getControllingSWIfCompatible() { - var controller = navigator.serviceWorker.controller; - - if (controller && urlsMatch(controller.scriptURL, this._scriptURL)) { - return controller; - } - }; - /** - * Registers a service worker for this instances script URL and register - * options and tracks the time registration was complete. - * - * @private - */ - - - _proto._registerScript = _async(function () { - var _this5 = this; - - return _catch(function () { - return _await(navigator.serviceWorker.register(_this5._scriptURL, _this5._registerOptions), function (reg) { - // Keep track of when registration happened, so it can be used in the - // `this._onUpdateFound` heuristic. Also use the presence of this - // property as a way to see if `.register()` has been called. - _this5._registrationTime = performance.now(); - return reg; - }); - }, function (error) { - { - logger.error(error); - } // Re-throw the error. - - - throw error; - }); - }); - /** - * Sends a message to the passed service worker that the window is ready. - * - * @param {ServiceWorker} sw - * @private - */ - - _proto._reportWindowReady = function _reportWindowReady(sw) { - messageSW(sw, { - type: 'WINDOW_READY', - meta: 'workbox-window' - }); - }; - /** - * @private - */ - - - _proto._onUpdateFound = function _onUpdateFound() { - var installingSW = this._registration.installing; // If the script URL passed to `navigator.serviceWorker.register()` is - // different from the current controlling SW's script URL, we know any - // successful registration calls will trigger an `updatefound` event. - // But if the registered script URL is the same as the current controlling - // SW's script URL, we'll only get an `updatefound` event if the file - // changed since it was last registered. This can be a problem if the user - // opens up the same page in a different tab, and that page registers - // a SW that triggers an update. It's a problem because this page has no - // good way of knowing whether the `updatefound` event came from the SW - // script it registered or from a registration attempt made by a newer - // version of the page running in another tab. - // To minimize the possibility of a false positive, we use the logic here: - - var updateLikelyTriggeredExternally = // Since we enforce only calling `register()` once, and since we don't - // add the `updatefound` event listener until the `register()` call, if - // `_updateFoundCount` is > 0 then it means this method has already - // been called, thus this SW must be external - this._updateFoundCount > 0 || // If the script URL of the installing SW is different from this - // instance's script URL, we know it's definitely not from our - // registration. - !urlsMatch(installingSW.scriptURL, this._scriptURL) || // If all of the above are false, then we use a time-based heuristic: - // Any `updatefound` event that occurs long after our registration is - // assumed to be external. - performance.now() > this._registrationTime + REGISTRATION_TIMEOUT_DURATION ? // If any of the above are not true, we assume the update was - // triggered by this instance. - true : false; - - if (updateLikelyTriggeredExternally) { - this._externalSW = installingSW; - - this._registration.removeEventListener('updatefound', this._onUpdateFound); - } else { - // If the update was not triggered externally we know the installing - // SW is the one we registered, so we set it. - this._sw = installingSW; - - this._swDeferred.resolve(installingSW); // The `installing` state isn't something we have a dedicated - // callback for, but we do log messages for it in development. - - - { - if (navigator.serviceWorker.controller) { - logger.log('Updated service worker found. Installing now...'); - } else { - logger.log('Service worker is installing...'); - } - } - } // Increment the `updatefound` count, so future invocations of this - // method can be sure they were triggered externally. - - - ++this._updateFoundCount; // Add a `statechange` listener regardless of whether this update was - // triggered externally, since we have callbacks for both. - - installingSW.addEventListener('statechange', this._onStateChange); - }; - /** - * @private - * @param {Event} originalEvent - */ - - - _proto._onStateChange = function _onStateChange(originalEvent) { - var _this6 = this; - - var sw = originalEvent.target; - var state = sw.state; - var isExternal = sw === this._externalSW; - var eventPrefix = isExternal ? 'external' : ''; - var eventProps = { - sw: sw, - originalEvent: originalEvent - }; - - if (!isExternal && this._isUpdate) { - eventProps.isUpdate = true; - } - - this.dispatchEvent(new WorkboxEvent(eventPrefix + state, eventProps)); - - if (state === 'installed') { - // This timeout is used to ignore cases where the service worker calls - // `skipWaiting()` in the install event, thus moving it directly in the - // activating state. (Since all service workers *must* go through the - // waiting phase, the only way to detect `skipWaiting()` called in the - // install event is to observe that the time spent in the waiting phase - // is very short.) - // NOTE: we don't need separate timeouts for the own and external SWs - // since they can't go through these phases at the same time. - this._waitingTimeout = setTimeout(function () { - // Ensure the SW is still waiting (it may now be redundant). - if (state === 'installed' && _this6._registration.waiting === sw) { - _this6.dispatchEvent(new WorkboxEvent(eventPrefix + 'waiting', eventProps)); - - { - if (isExternal) { - logger.warn('An external service worker has installed but is ' + 'waiting for this client to close before activating...'); - } else { - logger.warn('The service worker has installed but is waiting ' + 'for existing clients to close before activating...'); - } - } - } - }, WAITING_TIMEOUT_DURATION); - } else if (state === 'activating') { - clearTimeout(this._waitingTimeout); - - if (!isExternal) { - this._activeDeferred.resolve(sw); - } - } - - { - switch (state) { - case 'installed': - if (isExternal) { - logger.warn('An external service worker has installed. ' + 'You may want to suggest users reload this page.'); - } else { - logger.log('Registered service worker installed.'); - } - - break; - - case 'activated': - if (isExternal) { - logger.warn('An external service worker has activated.'); - } else { - logger.log('Registered service worker activated.'); - - if (sw !== navigator.serviceWorker.controller) { - logger.warn('The registered service worker is active but ' + 'not yet controlling the page. Reload or run ' + '`clients.claim()` in the service worker.'); - } - } - - break; - - case 'redundant': - if (sw === this._compatibleControllingSW) { - logger.log('Previously controlling service worker now redundant!'); - } else if (!isExternal) { - logger.log('Registered service worker now redundant!'); - } - - break; - } - } - }; - /** - * @private - * @param {Event} originalEvent - */ - - - _proto._onControllerChange = function _onControllerChange(originalEvent) { - var sw = this._sw; - - if (sw === navigator.serviceWorker.controller) { - this.dispatchEvent(new WorkboxEvent('controlling', { - sw: sw, - originalEvent: originalEvent - })); - - { - logger.log('Registered service worker now controlling this page.'); - } - - this._controllingDeferred.resolve(sw); - } - }; - /** - * @private - * @param {Event} originalEvent - */ - - - _proto._onMessage = function _onMessage(originalEvent) { - var data = originalEvent.data; - this.dispatchEvent(new WorkboxEvent('message', { - data: data, - originalEvent: originalEvent - })); - }; - - _createClass(Workbox, [{ - key: "active", - get: function get() { - return this._activeDeferred.promise; - } - /** - * Resolves to the service worker registered by this instance as soon as it - * is controlling the page. If a service worker was already controlling at - * registration time then it will resolve to that if the script URLs (and - * optionally script versions) match, otherwise it will wait until an update - * is found and starts controlling the page. - * Note: the first time a service worker is installed it will active but - * not start controlling the page unless `clients.claim()` is called in the - * service worker. - * - * @return {Promise} - */ - - }, { - key: "controlling", - get: function get() { - return this._controllingDeferred.promise; - } - }]); - - return Workbox; -}(EventTargetShim); // The jsdoc comments below outline the events this instance may dispatch: - -/* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. -*/ - -export { Workbox, messageSW }; -//# sourceMappingURL=workbox-window.dev.es5.mjs.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.dev.es5.mjs.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.dev.es5.mjs.map deleted file mode 100644 index f8eeed610..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.dev.es5.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-window.dev.es5.mjs","sources":["../_version.mjs","../messageSW.mjs","../../workbox-core/_version.mjs","../../workbox-core/_private/Deferred.mjs","../../workbox-core/_private/logger.mjs","../utils/EventTargetShim.mjs","../utils/urlsMatch.mjs","../utils/WorkboxEvent.mjs","../Workbox.mjs","../index.mjs"],"sourcesContent":["try{self['workbox:window:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport './_version.mjs';\n\n\n/**\n * Sends a data object to a service worker via `postMessage` and resolves with\n * a response (if any).\n *\n * A response can be set in a message handler in the service worker by\n * calling `event.ports[0].postMessage(...)`, which will resolve the promise\n * returned by `messageSW()`. If no response is set, the promise will not\n * resolve.\n *\n * @param {ServiceWorker} sw The service worker to send the message to.\n * @param {Object} data An object to send to the service worker.\n * @return {Promise}\n *\n * @memberof module:workbox-window\n */\nconst messageSW = (sw, data) => {\n return new Promise((resolve) => {\n let messageChannel = new MessageChannel();\n messageChannel.port1.onmessage = (evt) => resolve(evt.data);\n sw.postMessage(data, [messageChannel.port2]);\n });\n};\n\nexport {messageSW};\n","try{self['workbox:core:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\n/**\n * The Deferred class composes Promises in a way that allows for them to be\n * resolved or rejected from outside the constructor. In most cases promises\n * should be used directly, but Deferreds can be necessary when the logic to\n * resolve a promise must be separate.\n *\n * @private\n */\nexport class Deferred {\n /**\n * Creates a promise and exposes its resolve and reject functions as methods.\n */\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\nconst logger = process.env.NODE_ENV === 'production' ? null : (() => {\n let inGroup = false;\n\n const methodToColorMap = {\n debug: `#7f8c8d`, // Gray\n log: `#2ecc71`, // Green\n warn: `#f39c12`, // Yellow\n error: `#c0392b`, // Red\n groupCollapsed: `#3498db`, // Blue\n groupEnd: null, // No colored prefix on groupEnd\n };\n\n const print = function(method, args) {\n if (method === 'groupCollapsed') {\n // Safari doesn't print all console.groupCollapsed() arguments:\n // https://bugs.webkit.org/show_bug.cgi?id=182754\n if (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n console[method](...args);\n return;\n }\n }\n\n const styles = [\n `background: ${methodToColorMap[method]}`,\n `border-radius: 0.5em`,\n `color: white`,\n `font-weight: bold`,\n `padding: 2px 0.5em`,\n ];\n\n // When in a group, the workbox prefix is not displayed.\n const logPrefix = inGroup ? [] : ['%cworkbox', styles.join(';')];\n\n console[method](...logPrefix, ...args);\n\n if (method === 'groupCollapsed') {\n inGroup = true;\n }\n if (method === 'groupEnd') {\n inGroup = false;\n }\n };\n\n const api = {};\n for (const method of Object.keys(methodToColorMap)) {\n api[method] = (...args) => {\n print(method, args);\n };\n }\n\n return api;\n})();\n\nexport {logger};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\n/**\n * A minimal `EventTarget` shim.\n * This is necessary because not all browsers support constructable\n * `EventTarget`, so using a real `EventTarget` will error.\n * @private\n */\nclass EventTargetShim {\n /**\n * Creates an event listener registry\n *\n * @private\n */\n constructor() {\n // A registry of event types to listeners.\n this._eventListenerRegistry = {};\n }\n /**\n * @param {string} type\n * @param {Function} listener\n * @private\n */\n addEventListener(type, listener) {\n this._getEventListenersByType(type).add(listener);\n }\n\n /**\n * @param {string} type\n * @param {Function} listener\n * @private\n */\n removeEventListener(type, listener) {\n this._getEventListenersByType(type).delete(listener);\n }\n\n /**\n * @param {Event} event\n * @private\n */\n dispatchEvent(event) {\n event.target = this;\n this._getEventListenersByType(event.type).forEach(\n (listener) => listener(event));\n }\n\n /**\n * Returns a Set of listeners associated with the passed event type.\n * If no handlers have been registered, an empty Set is returned.\n *\n * @param {string} type The event type.\n * @return {Set} An array of handler functions.\n * @private\n */\n _getEventListenersByType(type) {\n return this._eventListenerRegistry[type] =\n (this._eventListenerRegistry[type] || new Set());\n }\n}\n\nexport {EventTargetShim};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\n/**\n * Returns true if two URLs have the same `.href` property. The URLS can be\n * relative, and if they are the current location href is used to resolve URLs.\n *\n * @private\n * @param {string} url1\n * @param {string} url2\n * @return {boolean}\n */\nconst urlsMatch = (url1, url2) => {\n return new URL(url1, location).href === new URL(url2, location).href;\n};\n\nexport {urlsMatch};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n/**\n * A minimal `Event` subclass shim.\n * This doesn't *actually* subclass `Event` because not all browsers support\n * constructable `EventTarget`, and using a real `Event` will error.\n * @private\n */\nclass WorkboxEvent {\n /**\n * @param {string} type\n * @param {Object} props\n */\n constructor(type, props) {\n Object.assign(this, props, {type});\n }\n}\n\nexport {WorkboxEvent};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {Deferred} from 'workbox-core/_private/Deferred.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {messageSW} from './messageSW.mjs';\nimport {EventTargetShim} from './utils/EventTargetShim.mjs';\nimport {urlsMatch} from './utils/urlsMatch.mjs';\nimport {WorkboxEvent} from './utils/WorkboxEvent.mjs';\nimport './_version.mjs';\n\n\n// The time a SW must be in the waiting phase before we can conclude\n// `skipWaiting()` wasn't called. This 200 amount wasn't scientifically\n// chosen, but it seems to avoid false positives in my testing.\nconst WAITING_TIMEOUT_DURATION = 200;\n\n// The amount of time after a registration that we can reasonably conclude\n// that the registration didn't trigger an update.\nconst REGISTRATION_TIMEOUT_DURATION = 60000;\n\n/**\n * A class to aid in handling service worker registration, updates, and\n * reacting to service worker lifecycle events.\n *\n * @fires [message]{@link module:workbox-window.Workbox#message}\n * @fires [installed]{@link module:workbox-window.Workbox#installed}\n * @fires [waiting]{@link module:workbox-window.Workbox#waiting}\n * @fires [controlling]{@link module:workbox-window.Workbox#controlling}\n * @fires [activated]{@link module:workbox-window.Workbox#activated}\n * @fires [redundant]{@link module:workbox-window.Workbox#redundant}\n * @fires [externalinstalled]{@link module:workbox-window.Workbox#externalinstalled}\n * @fires [externalwaiting]{@link module:workbox-window.Workbox#externalwaiting}\n * @fires [externalactivated]{@link module:workbox-window.Workbox#externalactivated}\n *\n * @memberof module:workbox-window\n */\nclass Workbox extends EventTargetShim {\n /**\n * Creates a new Workbox instance with a script URL and service worker\n * options. The script URL and options are the same as those used when\n * calling `navigator.serviceWorker.register(scriptURL, options)`. See:\n * https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/register\n *\n * @param {string} scriptURL The service worker script associated with this\n * instance.\n * @param {Object} [registerOptions] The service worker options associated\n * with this instance.\n */\n constructor(scriptURL, registerOptions = {}) {\n super();\n\n this._scriptURL = scriptURL;\n this._registerOptions = registerOptions;\n this._updateFoundCount = 0;\n\n // Deferreds we can resolve later.\n this._swDeferred = new Deferred();\n this._activeDeferred = new Deferred();\n this._controllingDeferred = new Deferred();\n\n // Bind event handler callbacks.\n this._onMessage = this._onMessage.bind(this);\n this._onStateChange = this._onStateChange.bind(this);\n this._onUpdateFound = this._onUpdateFound.bind(this);\n this._onControllerChange = this._onControllerChange.bind(this);\n }\n\n /**\n * Registers a service worker for this instances script URL and service\n * worker options. By default this method delays registration until after\n * the window has loaded.\n *\n * @param {Object} [options]\n * @param {Function} [options.immediate=false] Setting this to true will\n * register the service worker immediately, even if the window has\n * not loaded (not recommended).\n */\n async register({immediate = false} = {}) {\n if (process.env.NODE_ENV !== 'production') {\n if (this._registrationTime) {\n logger.error('Cannot re-register a Workbox instance after it has ' +\n 'been registered. Create a new instance instead.');\n return;\n }\n }\n\n if (!immediate && document.readyState !== 'complete') {\n await new Promise((res) => addEventListener('load', res));\n }\n\n // Set this flag to true if any service worker was controlling the page\n // at registration time.\n this._isUpdate = Boolean(navigator.serviceWorker.controller);\n\n // Before registering, attempt to determine if a SW is already controlling\n // the page, and if that SW script (and version, if specified) matches this\n // instance's script.\n this._compatibleControllingSW = this._getControllingSWIfCompatible();\n\n this._registration = await this._registerScript();\n\n // If we have a compatible controller, store the controller as the \"own\"\n // SW, resolve active/controlling deferreds and add necessary listeners.\n if (this._compatibleControllingSW) {\n this._sw = this._compatibleControllingSW;\n this._activeDeferred.resolve(this._compatibleControllingSW);\n this._controllingDeferred.resolve(this._compatibleControllingSW);\n\n this._reportWindowReady(this._compatibleControllingSW);\n this._compatibleControllingSW.addEventListener(\n 'statechange', this._onStateChange, {once: true});\n }\n\n // If there's a waiting service worker with a matching URL before the\n // `updatefound` event fires, it likely means that this site is open\n // in another tab, or the user refreshed the page (and thus the prevoius\n // page wasn't fully unloaded before this page started loading).\n // https://developers.google.com/web/fundamentals/primers/service-workers/lifecycle#waiting\n const waitingSW = this._registration.waiting;\n if (waitingSW && urlsMatch(waitingSW.scriptURL, this._scriptURL)) {\n // Store the waiting SW as the \"own\" Sw, even if it means overwriting\n // a compatible controller.\n this._sw = waitingSW;\n\n // Run this in the next microtask, so any code that adds an event\n // listener after awaiting `register()` will get this event.\n Promise.resolve().then(() => {\n this.dispatchEvent(new WorkboxEvent('waiting', {\n sw: waitingSW,\n wasWaitingBeforeRegister: true,\n }));\n if (process.env.NODE_ENV !== 'production') {\n logger.warn('A service worker was already waiting to activate ' +\n 'before this script was registered...');\n }\n });\n }\n\n // If an \"own\" SW is already set, resolve the deferred.\n if (this._sw) {\n this._swDeferred.resolve(this._sw);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Successfully registered service worker.', this._scriptURL);\n\n if (navigator.serviceWorker.controller) {\n if (this._compatibleControllingSW) {\n logger.debug('A service worker with the same script URL ' +\n 'is already controlling this page.');\n } else {\n logger.debug('A service worker with a different script URL is ' +\n 'currently controlling the page. The browser is now fetching ' +\n 'the new script now...');\n }\n }\n\n const currentPageIsOutOfScope = () => {\n const scopeURL = new URL(\n this._registerOptions.scope || this._scriptURL, document.baseURI);\n const scopeURLBasePath = new URL('./', scopeURL.href).pathname;\n return !location.pathname.startsWith(scopeURLBasePath);\n };\n if (currentPageIsOutOfScope()) {\n logger.warn('The current page is not in scope for the registered ' +\n 'service worker. Was this a mistake?');\n }\n }\n\n this._registration.addEventListener('updatefound', this._onUpdateFound);\n navigator.serviceWorker.addEventListener(\n 'controllerchange', this._onControllerChange, {once: true});\n\n // Add message listeners.\n if ('BroadcastChannel' in self) {\n this._broadcastChannel = new BroadcastChannel('workbox');\n this._broadcastChannel.addEventListener('message', this._onMessage);\n }\n navigator.serviceWorker.addEventListener('message', this._onMessage);\n\n return this._registration;\n }\n\n /**\n * Resolves to the service worker registered by this instance as soon as it\n * is active. If a service worker was already controlling at registration\n * time then it will resolve to that if the script URLs (and optionally\n * script versions) match, otherwise it will wait until an update is found\n * and activates.\n *\n * @return {Promise}\n */\n get active() {\n return this._activeDeferred.promise;\n }\n\n /**\n * Resolves to the service worker registered by this instance as soon as it\n * is controlling the page. If a service worker was already controlling at\n * registration time then it will resolve to that if the script URLs (and\n * optionally script versions) match, otherwise it will wait until an update\n * is found and starts controlling the page.\n * Note: the first time a service worker is installed it will active but\n * not start controlling the page unless `clients.claim()` is called in the\n * service worker.\n *\n * @return {Promise}\n */\n get controlling() {\n return this._controllingDeferred.promise;\n }\n\n /**\n * Resolves with a reference to a service worker that matches the script URL\n * of this instance, as soon as it's available.\n *\n * If, at registration time, there's already an active or waiting service\n * worker with a matching script URL, it will be used (with the waiting\n * service worker taking precedence over the active service worker if both\n * match, since the waiting service worker would have been registered more\n * recently).\n * If there's no matching active or waiting service worker at registration\n * time then the promise will not resolve until an update is found and starts\n * installing, at which point the installing service worker is used.\n *\n * @return {Promise}\n */\n async getSW() {\n // If `this._sw` is set, resolve with that as we want `getSW()` to\n // return the correct (new) service worker if an update is found.\n return this._sw || this._swDeferred.promise;\n }\n\n /**\n * Sends the passed data object to the service worker registered by this\n * instance (via [`getSW()`]{@link module:workbox-window.Workbox#getSW}) and resolves\n * with a response (if any).\n *\n * A response can be set in a message handler in the service worker by\n * calling `event.ports[0].postMessage(...)`, which will resolve the promise\n * returned by `messageSW()`. If no response is set, the promise will never\n * resolve.\n *\n * @param {Object} data An object to send to the service worker\n * @return {Promise}\n */\n async messageSW(data) {\n const sw = await this.getSW();\n return messageSW(sw, data);\n }\n\n /**\n * Checks for a service worker already controlling the page and returns\n * it if its script URL matchs.\n *\n * @private\n * @return {ServiceWorker|undefined}\n */\n _getControllingSWIfCompatible() {\n const controller = navigator.serviceWorker.controller;\n if (controller && urlsMatch(controller.scriptURL, this._scriptURL)) {\n return controller;\n }\n }\n\n /**\n * Registers a service worker for this instances script URL and register\n * options and tracks the time registration was complete.\n *\n * @private\n */\n async _registerScript() {\n try {\n const reg = await navigator.serviceWorker.register(\n this._scriptURL, this._registerOptions);\n\n // Keep track of when registration happened, so it can be used in the\n // `this._onUpdateFound` heuristic. Also use the presence of this\n // property as a way to see if `.register()` has been called.\n this._registrationTime = performance.now();\n\n return reg;\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(error);\n }\n // Re-throw the error.\n throw error;\n }\n }\n\n\n /**\n * Sends a message to the passed service worker that the window is ready.\n *\n * @param {ServiceWorker} sw\n * @private\n */\n _reportWindowReady(sw) {\n messageSW(sw, {\n type: 'WINDOW_READY',\n meta: 'workbox-window',\n });\n }\n\n /**\n * @private\n */\n _onUpdateFound() {\n const installingSW = this._registration.installing;\n\n // If the script URL passed to `navigator.serviceWorker.register()` is\n // different from the current controlling SW's script URL, we know any\n // successful registration calls will trigger an `updatefound` event.\n // But if the registered script URL is the same as the current controlling\n // SW's script URL, we'll only get an `updatefound` event if the file\n // changed since it was last registered. This can be a problem if the user\n // opens up the same page in a different tab, and that page registers\n // a SW that triggers an update. It's a problem because this page has no\n // good way of knowing whether the `updatefound` event came from the SW\n // script it registered or from a registration attempt made by a newer\n // version of the page running in another tab.\n // To minimize the possibility of a false positive, we use the logic here:\n let updateLikelyTriggeredExternally =\n // Since we enforce only calling `register()` once, and since we don't\n // add the `updatefound` event listener until the `register()` call, if\n // `_updateFoundCount` is > 0 then it means this method has already\n // been called, thus this SW must be external\n this._updateFoundCount > 0 ||\n // If the script URL of the installing SW is different from this\n // instance's script URL, we know it's definitely not from our\n // registration.\n !urlsMatch(installingSW.scriptURL, this._scriptURL) ||\n // If all of the above are false, then we use a time-based heuristic:\n // Any `updatefound` event that occurs long after our registration is\n // assumed to be external.\n (performance.now() >\n this._registrationTime + REGISTRATION_TIMEOUT_DURATION) ?\n // If any of the above are not true, we assume the update was\n // triggered by this instance.\n true : false;\n\n if (updateLikelyTriggeredExternally) {\n this._externalSW = installingSW;\n this._registration.removeEventListener(\n 'updatefound', this._onUpdateFound);\n } else {\n // If the update was not triggered externally we know the installing\n // SW is the one we registered, so we set it.\n this._sw = installingSW;\n this._swDeferred.resolve(installingSW);\n\n // The `installing` state isn't something we have a dedicated\n // callback for, but we do log messages for it in development.\n if (process.env.NODE_ENV !== 'production') {\n if (navigator.serviceWorker.controller) {\n logger.log('Updated service worker found. Installing now...');\n } else {\n logger.log('Service worker is installing...');\n }\n }\n }\n\n // Increment the `updatefound` count, so future invocations of this\n // method can be sure they were triggered externally.\n ++this._updateFoundCount;\n\n // Add a `statechange` listener regardless of whether this update was\n // triggered externally, since we have callbacks for both.\n installingSW.addEventListener('statechange', this._onStateChange);\n }\n\n /**\n * @private\n * @param {Event} originalEvent\n */\n _onStateChange(originalEvent) {\n const sw = originalEvent.target;\n const {state} = sw;\n const isExternal = sw === this._externalSW;\n const eventPrefix = isExternal ? 'external' : '';\n\n const eventProps = {sw, originalEvent};\n if (!isExternal && this._isUpdate) {\n eventProps.isUpdate = true;\n }\n\n this.dispatchEvent(new WorkboxEvent(\n eventPrefix + state, eventProps));\n\n if (state === 'installed') {\n // This timeout is used to ignore cases where the service worker calls\n // `skipWaiting()` in the install event, thus moving it directly in the\n // activating state. (Since all service workers *must* go through the\n // waiting phase, the only way to detect `skipWaiting()` called in the\n // install event is to observe that the time spent in the waiting phase\n // is very short.)\n // NOTE: we don't need separate timeouts for the own and external SWs\n // since they can't go through these phases at the same time.\n this._waitingTimeout = setTimeout(() => {\n // Ensure the SW is still waiting (it may now be redundant).\n if (state === 'installed' && this._registration.waiting === sw) {\n this.dispatchEvent(new WorkboxEvent(\n eventPrefix + 'waiting', eventProps));\n\n if (process.env.NODE_ENV !== 'production') {\n if (isExternal) {\n logger.warn('An external service worker has installed but is ' +\n 'waiting for this client to close before activating...');\n } else {\n logger.warn('The service worker has installed but is waiting ' +\n 'for existing clients to close before activating...');\n }\n }\n }\n }, WAITING_TIMEOUT_DURATION);\n } else if (state === 'activating') {\n clearTimeout(this._waitingTimeout);\n if (!isExternal) {\n this._activeDeferred.resolve(sw);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n switch (state) {\n case 'installed':\n if (isExternal) {\n logger.warn('An external service worker has installed. ' +\n 'You may want to suggest users reload this page.');\n } else {\n logger.log('Registered service worker installed.');\n }\n break;\n case 'activated':\n if (isExternal) {\n logger.warn('An external service worker has activated.');\n } else {\n logger.log('Registered service worker activated.');\n if (sw !== navigator.serviceWorker.controller) {\n logger.warn('The registered service worker is active but ' +\n 'not yet controlling the page. Reload or run ' +\n '`clients.claim()` in the service worker.');\n }\n }\n break;\n case 'redundant':\n if (sw === this._compatibleControllingSW) {\n logger.log('Previously controlling service worker now redundant!');\n } else if (!isExternal) {\n logger.log('Registered service worker now redundant!');\n }\n break;\n }\n }\n }\n\n /**\n * @private\n * @param {Event} originalEvent\n */\n _onControllerChange(originalEvent) {\n const sw = this._sw;\n if (sw === navigator.serviceWorker.controller) {\n this.dispatchEvent(new WorkboxEvent('controlling', {sw, originalEvent}));\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Registered service worker now controlling this page.');\n }\n this._controllingDeferred.resolve(sw);\n }\n }\n\n /**\n * @private\n * @param {Event} originalEvent\n */\n _onMessage(originalEvent) {\n const {data} = originalEvent;\n this.dispatchEvent(new WorkboxEvent('message', {data, originalEvent}));\n }\n}\n\n// The jsdoc comments below outline the events this instance may dispatch:\n// -----------------------------------------------------------------------\n\n/**\n * The `message` event is dispatched any time a `postMessage` (or a\n * `BroadcastChannel` message with the `workbox` channel name) is received.\n *\n * @event module:workbox-window.Workbox#message\n * @type {WorkboxEvent}\n * @property {*} data The `data` property from the original `message` event.\n * @property {Event} originalEvent The original [`message`]{@link https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent}\n * event.\n * @property {string} type `message`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `installed` event is dispatched if the state of a\n * [`Workbox`]{@link module:workbox-window.Workbox} instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}\n * changes to `installed`.\n *\n * Then can happen either the very first time a service worker is installed,\n * or after an update to the current service worker is found. In the case\n * of an update being found, the event's `isUpdate` property will be `true`.\n *\n * @event module:workbox-window.Workbox#installed\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this `Workbox` instance called `register()`.\n * @property {string} type `installed`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `waiting` event is dispatched if the state of a\n * [`Workbox`]{@link module:workbox-window.Workbox} instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}\n * changes to `installed` and then doesn't immediately change to `activating`.\n * It may also be dispatched if a service worker with the same\n * [`scriptURL`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/scriptURL}\n * was already waiting when the [`register()`]{@link module:workbox-window.Workbox#register}\n * method was called.\n *\n * @event module:workbox-window.Workbox#waiting\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The native `controllerchange` event\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this `Workbox` instance called `register()`.\n * @property {boolean|undefined} wasWaitingBeforeRegister True if a service worker with\n * a matching `scriptURL` was already waiting when this `Workbox`\n * instance called `register()`.\n * @property {string} type `waiting`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `controlling` event is dispatched if a\n * [`controllerchange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/oncontrollerchange}\n * fires on the service worker [container]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer}\n * and the [`scriptURL`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/scriptURL}\n * of the new [controller]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/controller}\n * matches the `scriptURL` of the `Workbox` instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}.\n *\n * @event module:workbox-window.Workbox#controlling\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`controllerchange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/oncontrollerchange}\n * event.\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this service worker was registered.\n * @property {string} type `controlling`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `activated` event is dispatched if the state of a\n * [`Workbox`]{@link module:workbox-window.Workbox} instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}\n * changes to `activated`.\n *\n * @event module:workbox-window.Workbox#activated\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this `Workbox` instance called `register()`.\n * @property {string} type `activated`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `redundant` event is dispatched if the state of a\n * [`Workbox`]{@link module:workbox-window.Workbox} instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}\n * changes to `redundant`.\n *\n * @event module:workbox-window.Workbox#redundant\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this `Workbox` instance called `register()`.\n * @property {string} type `redundant`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `externalinstalled` event is dispatched if the state of an\n * [external service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-external-sw}\n * changes to `installed`.\n *\n * @event module:workbox-window.Workbox#externalinstalled\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {string} type `externalinstalled`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `externalwaiting` event is dispatched if the state of an\n * [external service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-external-sw}\n * changes to `waiting`.\n *\n * @event module:workbox-window.Workbox#externalwaiting\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event|undefined} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {string} type `externalwaiting`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `externalactivated` event is dispatched if the state of an\n * [external service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-external-sw}\n * changes to `activated`.\n *\n * @event module:workbox-window.Workbox#externalactivated\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {string} type `externalactivated`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\nexport {Workbox};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {messageSW} from './messageSW.mjs';\nimport {Workbox} from './Workbox.mjs';\nimport './_version.mjs';\n\n\n/**\n * @module workbox-window\n */\nexport {\n Workbox,\n messageSW,\n};\n"],"names":["self","_","e","messageSW","sw","data","Promise","resolve","messageChannel","MessageChannel","port1","onmessage","evt","postMessage","port2","Deferred","promise","reject","logger","process","inGroup","methodToColorMap","debug","log","warn","error","groupCollapsed","groupEnd","print","method","args","test","navigator","userAgent","console","styles","logPrefix","join","api","Object","keys","EventTargetShim","_eventListenerRegistry","addEventListener","type","listener","_getEventListenersByType","add","removeEventListener","delete","dispatchEvent","event","target","forEach","Set","urlsMatch","url1","url2","URL","location","href","WorkboxEvent","props","assign","body","recover","result","then","f","i","arguments","length","apply","value","direct","WAITING_TIMEOUT_DURATION","REGISTRATION_TIMEOUT_DURATION","Workbox","scriptURL","registerOptions","_scriptURL","_registerOptions","_updateFoundCount","_swDeferred","_activeDeferred","_controllingDeferred","_onMessage","bind","_onStateChange","_onUpdateFound","_onControllerChange","register","immediate","_registrationTime","document","readyState","res","_isUpdate","Boolean","serviceWorker","controller","_compatibleControllingSW","_getControllingSWIfCompatible","_registerScript","_registration","_sw","_reportWindowReady","once","waitingSW","waiting","wasWaitingBeforeRegister","currentPageIsOutOfScope","scopeURL","scope","baseURI","scopeURLBasePath","pathname","startsWith","_broadcastChannel","BroadcastChannel","getSW","reg","performance","now","meta","installingSW","installing","updateLikelyTriggeredExternally","_externalSW","originalEvent","state","isExternal","eventPrefix","eventProps","isUpdate","_waitingTimeout","setTimeout","clearTimeout"],"mappings":"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"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.dev.mjs b/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.dev.mjs deleted file mode 100644 index bc6380b16..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.dev.mjs +++ /dev/null @@ -1,751 +0,0 @@ -try { - self['workbox:window:4.3.1'] && _(); -} catch (e) {} // eslint-disable-line - -/* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. -*/ -/** - * Sends a data object to a service worker via `postMessage` and resolves with - * a response (if any). - * - * A response can be set in a message handler in the service worker by - * calling `event.ports[0].postMessage(...)`, which will resolve the promise - * returned by `messageSW()`. If no response is set, the promise will not - * resolve. - * - * @param {ServiceWorker} sw The service worker to send the message to. - * @param {Object} data An object to send to the service worker. - * @return {Promise} - * - * @memberof module:workbox-window - */ - -const messageSW = (sw, data) => { - return new Promise(resolve => { - let messageChannel = new MessageChannel(); - - messageChannel.port1.onmessage = evt => resolve(evt.data); - - sw.postMessage(data, [messageChannel.port2]); - }); -}; - -try { - self['workbox:core:4.3.1'] && _(); -} catch (e) {} // eslint-disable-line - -/* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. -*/ -/** - * The Deferred class composes Promises in a way that allows for them to be - * resolved or rejected from outside the constructor. In most cases promises - * should be used directly, but Deferreds can be necessary when the logic to - * resolve a promise must be separate. - * - * @private - */ - -class Deferred { - /** - * Creates a promise and exposes its resolve and reject functions as methods. - */ - constructor() { - this.promise = new Promise((resolve, reject) => { - this.resolve = resolve; - this.reject = reject; - }); - } - -} - -/* - Copyright 2019 Google LLC - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. -*/ -const logger = (() => { - let inGroup = false; - const methodToColorMap = { - debug: `#7f8c8d`, - // Gray - log: `#2ecc71`, - // Green - warn: `#f39c12`, - // Yellow - error: `#c0392b`, - // Red - groupCollapsed: `#3498db`, - // Blue - groupEnd: null // No colored prefix on groupEnd - - }; - - const print = function (method, args) { - if (method === 'groupCollapsed') { - // Safari doesn't print all console.groupCollapsed() arguments: - // https://bugs.webkit.org/show_bug.cgi?id=182754 - if (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { - console[method](...args); - return; - } - } - - const styles = [`background: ${methodToColorMap[method]}`, `border-radius: 0.5em`, `color: white`, `font-weight: bold`, `padding: 2px 0.5em`]; // When in a group, the workbox prefix is not displayed. - - const logPrefix = inGroup ? [] : ['%cworkbox', styles.join(';')]; - console[method](...logPrefix, ...args); - - if (method === 'groupCollapsed') { - inGroup = true; - } - - if (method === 'groupEnd') { - inGroup = false; - } - }; - - const api = {}; - - for (const method of Object.keys(methodToColorMap)) { - api[method] = (...args) => { - print(method, args); - }; - } - - return api; -})(); - -/* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. -*/ -/** - * A minimal `EventTarget` shim. - * This is necessary because not all browsers support constructable - * `EventTarget`, so using a real `EventTarget` will error. - * @private - */ - -class EventTargetShim { - /** - * Creates an event listener registry - * - * @private - */ - constructor() { - // A registry of event types to listeners. - this._eventListenerRegistry = {}; - } - /** - * @param {string} type - * @param {Function} listener - * @private - */ - - - addEventListener(type, listener) { - this._getEventListenersByType(type).add(listener); - } - /** - * @param {string} type - * @param {Function} listener - * @private - */ - - - removeEventListener(type, listener) { - this._getEventListenersByType(type).delete(listener); - } - /** - * @param {Event} event - * @private - */ - - - dispatchEvent(event) { - event.target = this; - - this._getEventListenersByType(event.type).forEach(listener => listener(event)); - } - /** - * Returns a Set of listeners associated with the passed event type. - * If no handlers have been registered, an empty Set is returned. - * - * @param {string} type The event type. - * @return {Set} An array of handler functions. - * @private - */ - - - _getEventListenersByType(type) { - return this._eventListenerRegistry[type] = this._eventListenerRegistry[type] || new Set(); - } - -} - -/* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. -*/ -/** - * Returns true if two URLs have the same `.href` property. The URLS can be - * relative, and if they are the current location href is used to resolve URLs. - * - * @private - * @param {string} url1 - * @param {string} url2 - * @return {boolean} - */ - -const urlsMatch = (url1, url2) => { - return new URL(url1, location).href === new URL(url2, location).href; -}; - -/* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. -*/ -/** - * A minimal `Event` subclass shim. - * This doesn't *actually* subclass `Event` because not all browsers support - * constructable `EventTarget`, and using a real `Event` will error. - * @private - */ - -class WorkboxEvent { - /** - * @param {string} type - * @param {Object} props - */ - constructor(type, props) { - Object.assign(this, props, { - type - }); - } - -} - -/* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. -*/ -// `skipWaiting()` wasn't called. This 200 amount wasn't scientifically -// chosen, but it seems to avoid false positives in my testing. - -const WAITING_TIMEOUT_DURATION = 200; // The amount of time after a registration that we can reasonably conclude -// that the registration didn't trigger an update. - -const REGISTRATION_TIMEOUT_DURATION = 60000; -/** - * A class to aid in handling service worker registration, updates, and - * reacting to service worker lifecycle events. - * - * @fires [message]{@link module:workbox-window.Workbox#message} - * @fires [installed]{@link module:workbox-window.Workbox#installed} - * @fires [waiting]{@link module:workbox-window.Workbox#waiting} - * @fires [controlling]{@link module:workbox-window.Workbox#controlling} - * @fires [activated]{@link module:workbox-window.Workbox#activated} - * @fires [redundant]{@link module:workbox-window.Workbox#redundant} - * @fires [externalinstalled]{@link module:workbox-window.Workbox#externalinstalled} - * @fires [externalwaiting]{@link module:workbox-window.Workbox#externalwaiting} - * @fires [externalactivated]{@link module:workbox-window.Workbox#externalactivated} - * - * @memberof module:workbox-window - */ - -class Workbox extends EventTargetShim { - /** - * Creates a new Workbox instance with a script URL and service worker - * options. The script URL and options are the same as those used when - * calling `navigator.serviceWorker.register(scriptURL, options)`. See: - * https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/register - * - * @param {string} scriptURL The service worker script associated with this - * instance. - * @param {Object} [registerOptions] The service worker options associated - * with this instance. - */ - constructor(scriptURL, registerOptions = {}) { - super(); - this._scriptURL = scriptURL; - this._registerOptions = registerOptions; - this._updateFoundCount = 0; // Deferreds we can resolve later. - - this._swDeferred = new Deferred(); - this._activeDeferred = new Deferred(); - this._controllingDeferred = new Deferred(); // Bind event handler callbacks. - - this._onMessage = this._onMessage.bind(this); - this._onStateChange = this._onStateChange.bind(this); - this._onUpdateFound = this._onUpdateFound.bind(this); - this._onControllerChange = this._onControllerChange.bind(this); - } - /** - * Registers a service worker for this instances script URL and service - * worker options. By default this method delays registration until after - * the window has loaded. - * - * @param {Object} [options] - * @param {Function} [options.immediate=false] Setting this to true will - * register the service worker immediately, even if the window has - * not loaded (not recommended). - */ - - - async register({ - immediate = false - } = {}) { - { - if (this._registrationTime) { - logger.error('Cannot re-register a Workbox instance after it has ' + 'been registered. Create a new instance instead.'); - return; - } - } - - if (!immediate && document.readyState !== 'complete') { - await new Promise(res => addEventListener('load', res)); - } // Set this flag to true if any service worker was controlling the page - // at registration time. - - - this._isUpdate = Boolean(navigator.serviceWorker.controller); // Before registering, attempt to determine if a SW is already controlling - // the page, and if that SW script (and version, if specified) matches this - // instance's script. - - this._compatibleControllingSW = this._getControllingSWIfCompatible(); - this._registration = await this._registerScript(); // If we have a compatible controller, store the controller as the "own" - // SW, resolve active/controlling deferreds and add necessary listeners. - - if (this._compatibleControllingSW) { - this._sw = this._compatibleControllingSW; - - this._activeDeferred.resolve(this._compatibleControllingSW); - - this._controllingDeferred.resolve(this._compatibleControllingSW); - - this._reportWindowReady(this._compatibleControllingSW); - - this._compatibleControllingSW.addEventListener('statechange', this._onStateChange, { - once: true - }); - } // If there's a waiting service worker with a matching URL before the - // `updatefound` event fires, it likely means that this site is open - // in another tab, or the user refreshed the page (and thus the prevoius - // page wasn't fully unloaded before this page started loading). - // https://developers.google.com/web/fundamentals/primers/service-workers/lifecycle#waiting - - - const waitingSW = this._registration.waiting; - - if (waitingSW && urlsMatch(waitingSW.scriptURL, this._scriptURL)) { - // Store the waiting SW as the "own" Sw, even if it means overwriting - // a compatible controller. - this._sw = waitingSW; // Run this in the next microtask, so any code that adds an event - // listener after awaiting `register()` will get this event. - - Promise.resolve().then(() => { - this.dispatchEvent(new WorkboxEvent('waiting', { - sw: waitingSW, - wasWaitingBeforeRegister: true - })); - - { - logger.warn('A service worker was already waiting to activate ' + 'before this script was registered...'); - } - }); - } // If an "own" SW is already set, resolve the deferred. - - - if (this._sw) { - this._swDeferred.resolve(this._sw); - } - - { - logger.log('Successfully registered service worker.', this._scriptURL); - - if (navigator.serviceWorker.controller) { - if (this._compatibleControllingSW) { - logger.debug('A service worker with the same script URL ' + 'is already controlling this page.'); - } else { - logger.debug('A service worker with a different script URL is ' + 'currently controlling the page. The browser is now fetching ' + 'the new script now...'); - } - } - - const currentPageIsOutOfScope = () => { - const scopeURL = new URL(this._registerOptions.scope || this._scriptURL, document.baseURI); - const scopeURLBasePath = new URL('./', scopeURL.href).pathname; - return !location.pathname.startsWith(scopeURLBasePath); - }; - - if (currentPageIsOutOfScope()) { - logger.warn('The current page is not in scope for the registered ' + 'service worker. Was this a mistake?'); - } - } - - this._registration.addEventListener('updatefound', this._onUpdateFound); - - navigator.serviceWorker.addEventListener('controllerchange', this._onControllerChange, { - once: true - }); // Add message listeners. - - if ('BroadcastChannel' in self) { - this._broadcastChannel = new BroadcastChannel('workbox'); - - this._broadcastChannel.addEventListener('message', this._onMessage); - } - - navigator.serviceWorker.addEventListener('message', this._onMessage); - return this._registration; - } - /** - * Resolves to the service worker registered by this instance as soon as it - * is active. If a service worker was already controlling at registration - * time then it will resolve to that if the script URLs (and optionally - * script versions) match, otherwise it will wait until an update is found - * and activates. - * - * @return {Promise} - */ - - - get active() { - return this._activeDeferred.promise; - } - /** - * Resolves to the service worker registered by this instance as soon as it - * is controlling the page. If a service worker was already controlling at - * registration time then it will resolve to that if the script URLs (and - * optionally script versions) match, otherwise it will wait until an update - * is found and starts controlling the page. - * Note: the first time a service worker is installed it will active but - * not start controlling the page unless `clients.claim()` is called in the - * service worker. - * - * @return {Promise} - */ - - - get controlling() { - return this._controllingDeferred.promise; - } - /** - * Resolves with a reference to a service worker that matches the script URL - * of this instance, as soon as it's available. - * - * If, at registration time, there's already an active or waiting service - * worker with a matching script URL, it will be used (with the waiting - * service worker taking precedence over the active service worker if both - * match, since the waiting service worker would have been registered more - * recently). - * If there's no matching active or waiting service worker at registration - * time then the promise will not resolve until an update is found and starts - * installing, at which point the installing service worker is used. - * - * @return {Promise} - */ - - - async getSW() { - // If `this._sw` is set, resolve with that as we want `getSW()` to - // return the correct (new) service worker if an update is found. - return this._sw || this._swDeferred.promise; - } - /** - * Sends the passed data object to the service worker registered by this - * instance (via [`getSW()`]{@link module:workbox-window.Workbox#getSW}) and resolves - * with a response (if any). - * - * A response can be set in a message handler in the service worker by - * calling `event.ports[0].postMessage(...)`, which will resolve the promise - * returned by `messageSW()`. If no response is set, the promise will never - * resolve. - * - * @param {Object} data An object to send to the service worker - * @return {Promise} - */ - - - async messageSW(data) { - const sw = await this.getSW(); - return messageSW(sw, data); - } - /** - * Checks for a service worker already controlling the page and returns - * it if its script URL matchs. - * - * @private - * @return {ServiceWorker|undefined} - */ - - - _getControllingSWIfCompatible() { - const controller = navigator.serviceWorker.controller; - - if (controller && urlsMatch(controller.scriptURL, this._scriptURL)) { - return controller; - } - } - /** - * Registers a service worker for this instances script URL and register - * options and tracks the time registration was complete. - * - * @private - */ - - - async _registerScript() { - try { - const reg = await navigator.serviceWorker.register(this._scriptURL, this._registerOptions); // Keep track of when registration happened, so it can be used in the - // `this._onUpdateFound` heuristic. Also use the presence of this - // property as a way to see if `.register()` has been called. - - this._registrationTime = performance.now(); - return reg; - } catch (error) { - { - logger.error(error); - } // Re-throw the error. - - - throw error; - } - } - /** - * Sends a message to the passed service worker that the window is ready. - * - * @param {ServiceWorker} sw - * @private - */ - - - _reportWindowReady(sw) { - messageSW(sw, { - type: 'WINDOW_READY', - meta: 'workbox-window' - }); - } - /** - * @private - */ - - - _onUpdateFound() { - const installingSW = this._registration.installing; // If the script URL passed to `navigator.serviceWorker.register()` is - // different from the current controlling SW's script URL, we know any - // successful registration calls will trigger an `updatefound` event. - // But if the registered script URL is the same as the current controlling - // SW's script URL, we'll only get an `updatefound` event if the file - // changed since it was last registered. This can be a problem if the user - // opens up the same page in a different tab, and that page registers - // a SW that triggers an update. It's a problem because this page has no - // good way of knowing whether the `updatefound` event came from the SW - // script it registered or from a registration attempt made by a newer - // version of the page running in another tab. - // To minimize the possibility of a false positive, we use the logic here: - - let updateLikelyTriggeredExternally = // Since we enforce only calling `register()` once, and since we don't - // add the `updatefound` event listener until the `register()` call, if - // `_updateFoundCount` is > 0 then it means this method has already - // been called, thus this SW must be external - this._updateFoundCount > 0 || // If the script URL of the installing SW is different from this - // instance's script URL, we know it's definitely not from our - // registration. - !urlsMatch(installingSW.scriptURL, this._scriptURL) || // If all of the above are false, then we use a time-based heuristic: - // Any `updatefound` event that occurs long after our registration is - // assumed to be external. - performance.now() > this._registrationTime + REGISTRATION_TIMEOUT_DURATION ? // If any of the above are not true, we assume the update was - // triggered by this instance. - true : false; - - if (updateLikelyTriggeredExternally) { - this._externalSW = installingSW; - - this._registration.removeEventListener('updatefound', this._onUpdateFound); - } else { - // If the update was not triggered externally we know the installing - // SW is the one we registered, so we set it. - this._sw = installingSW; - - this._swDeferred.resolve(installingSW); // The `installing` state isn't something we have a dedicated - // callback for, but we do log messages for it in development. - - - { - if (navigator.serviceWorker.controller) { - logger.log('Updated service worker found. Installing now...'); - } else { - logger.log('Service worker is installing...'); - } - } - } // Increment the `updatefound` count, so future invocations of this - // method can be sure they were triggered externally. - - - ++this._updateFoundCount; // Add a `statechange` listener regardless of whether this update was - // triggered externally, since we have callbacks for both. - - installingSW.addEventListener('statechange', this._onStateChange); - } - /** - * @private - * @param {Event} originalEvent - */ - - - _onStateChange(originalEvent) { - const sw = originalEvent.target; - const { - state - } = sw; - const isExternal = sw === this._externalSW; - const eventPrefix = isExternal ? 'external' : ''; - const eventProps = { - sw, - originalEvent - }; - - if (!isExternal && this._isUpdate) { - eventProps.isUpdate = true; - } - - this.dispatchEvent(new WorkboxEvent(eventPrefix + state, eventProps)); - - if (state === 'installed') { - // This timeout is used to ignore cases where the service worker calls - // `skipWaiting()` in the install event, thus moving it directly in the - // activating state. (Since all service workers *must* go through the - // waiting phase, the only way to detect `skipWaiting()` called in the - // install event is to observe that the time spent in the waiting phase - // is very short.) - // NOTE: we don't need separate timeouts for the own and external SWs - // since they can't go through these phases at the same time. - this._waitingTimeout = setTimeout(() => { - // Ensure the SW is still waiting (it may now be redundant). - if (state === 'installed' && this._registration.waiting === sw) { - this.dispatchEvent(new WorkboxEvent(eventPrefix + 'waiting', eventProps)); - - { - if (isExternal) { - logger.warn('An external service worker has installed but is ' + 'waiting for this client to close before activating...'); - } else { - logger.warn('The service worker has installed but is waiting ' + 'for existing clients to close before activating...'); - } - } - } - }, WAITING_TIMEOUT_DURATION); - } else if (state === 'activating') { - clearTimeout(this._waitingTimeout); - - if (!isExternal) { - this._activeDeferred.resolve(sw); - } - } - - { - switch (state) { - case 'installed': - if (isExternal) { - logger.warn('An external service worker has installed. ' + 'You may want to suggest users reload this page.'); - } else { - logger.log('Registered service worker installed.'); - } - - break; - - case 'activated': - if (isExternal) { - logger.warn('An external service worker has activated.'); - } else { - logger.log('Registered service worker activated.'); - - if (sw !== navigator.serviceWorker.controller) { - logger.warn('The registered service worker is active but ' + 'not yet controlling the page. Reload or run ' + '`clients.claim()` in the service worker.'); - } - } - - break; - - case 'redundant': - if (sw === this._compatibleControllingSW) { - logger.log('Previously controlling service worker now redundant!'); - } else if (!isExternal) { - logger.log('Registered service worker now redundant!'); - } - - break; - } - } - } - /** - * @private - * @param {Event} originalEvent - */ - - - _onControllerChange(originalEvent) { - const sw = this._sw; - - if (sw === navigator.serviceWorker.controller) { - this.dispatchEvent(new WorkboxEvent('controlling', { - sw, - originalEvent - })); - - { - logger.log('Registered service worker now controlling this page.'); - } - - this._controllingDeferred.resolve(sw); - } - } - /** - * @private - * @param {Event} originalEvent - */ - - - _onMessage(originalEvent) { - const { - data - } = originalEvent; - this.dispatchEvent(new WorkboxEvent('message', { - data, - originalEvent - })); - } - -} // The jsdoc comments below outline the events this instance may dispatch: - -/* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. -*/ - -export { Workbox, messageSW }; -//# sourceMappingURL=workbox-window.dev.mjs.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.dev.mjs.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.dev.mjs.map deleted file mode 100644 index 8abff0374..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.dev.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-window.dev.mjs","sources":["../_version.mjs","../messageSW.mjs","../../workbox-core/_version.mjs","../../workbox-core/_private/Deferred.mjs","../../workbox-core/_private/logger.mjs","../utils/EventTargetShim.mjs","../utils/urlsMatch.mjs","../utils/WorkboxEvent.mjs","../Workbox.mjs","../index.mjs"],"sourcesContent":["try{self['workbox:window:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport './_version.mjs';\n\n\n/**\n * Sends a data object to a service worker via `postMessage` and resolves with\n * a response (if any).\n *\n * A response can be set in a message handler in the service worker by\n * calling `event.ports[0].postMessage(...)`, which will resolve the promise\n * returned by `messageSW()`. If no response is set, the promise will not\n * resolve.\n *\n * @param {ServiceWorker} sw The service worker to send the message to.\n * @param {Object} data An object to send to the service worker.\n * @return {Promise}\n *\n * @memberof module:workbox-window\n */\nconst messageSW = (sw, data) => {\n return new Promise((resolve) => {\n let messageChannel = new MessageChannel();\n messageChannel.port1.onmessage = (evt) => resolve(evt.data);\n sw.postMessage(data, [messageChannel.port2]);\n });\n};\n\nexport {messageSW};\n","try{self['workbox:core:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\n/**\n * The Deferred class composes Promises in a way that allows for them to be\n * resolved or rejected from outside the constructor. In most cases promises\n * should be used directly, but Deferreds can be necessary when the logic to\n * resolve a promise must be separate.\n *\n * @private\n */\nexport class Deferred {\n /**\n * Creates a promise and exposes its resolve and reject functions as methods.\n */\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\nconst logger = process.env.NODE_ENV === 'production' ? null : (() => {\n let inGroup = false;\n\n const methodToColorMap = {\n debug: `#7f8c8d`, // Gray\n log: `#2ecc71`, // Green\n warn: `#f39c12`, // Yellow\n error: `#c0392b`, // Red\n groupCollapsed: `#3498db`, // Blue\n groupEnd: null, // No colored prefix on groupEnd\n };\n\n const print = function(method, args) {\n if (method === 'groupCollapsed') {\n // Safari doesn't print all console.groupCollapsed() arguments:\n // https://bugs.webkit.org/show_bug.cgi?id=182754\n if (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n console[method](...args);\n return;\n }\n }\n\n const styles = [\n `background: ${methodToColorMap[method]}`,\n `border-radius: 0.5em`,\n `color: white`,\n `font-weight: bold`,\n `padding: 2px 0.5em`,\n ];\n\n // When in a group, the workbox prefix is not displayed.\n const logPrefix = inGroup ? [] : ['%cworkbox', styles.join(';')];\n\n console[method](...logPrefix, ...args);\n\n if (method === 'groupCollapsed') {\n inGroup = true;\n }\n if (method === 'groupEnd') {\n inGroup = false;\n }\n };\n\n const api = {};\n for (const method of Object.keys(methodToColorMap)) {\n api[method] = (...args) => {\n print(method, args);\n };\n }\n\n return api;\n})();\n\nexport {logger};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\n/**\n * A minimal `EventTarget` shim.\n * This is necessary because not all browsers support constructable\n * `EventTarget`, so using a real `EventTarget` will error.\n * @private\n */\nclass EventTargetShim {\n /**\n * Creates an event listener registry\n *\n * @private\n */\n constructor() {\n // A registry of event types to listeners.\n this._eventListenerRegistry = {};\n }\n /**\n * @param {string} type\n * @param {Function} listener\n * @private\n */\n addEventListener(type, listener) {\n this._getEventListenersByType(type).add(listener);\n }\n\n /**\n * @param {string} type\n * @param {Function} listener\n * @private\n */\n removeEventListener(type, listener) {\n this._getEventListenersByType(type).delete(listener);\n }\n\n /**\n * @param {Event} event\n * @private\n */\n dispatchEvent(event) {\n event.target = this;\n this._getEventListenersByType(event.type).forEach(\n (listener) => listener(event));\n }\n\n /**\n * Returns a Set of listeners associated with the passed event type.\n * If no handlers have been registered, an empty Set is returned.\n *\n * @param {string} type The event type.\n * @return {Set} An array of handler functions.\n * @private\n */\n _getEventListenersByType(type) {\n return this._eventListenerRegistry[type] =\n (this._eventListenerRegistry[type] || new Set());\n }\n}\n\nexport {EventTargetShim};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\n/**\n * Returns true if two URLs have the same `.href` property. The URLS can be\n * relative, and if they are the current location href is used to resolve URLs.\n *\n * @private\n * @param {string} url1\n * @param {string} url2\n * @return {boolean}\n */\nconst urlsMatch = (url1, url2) => {\n return new URL(url1, location).href === new URL(url2, location).href;\n};\n\nexport {urlsMatch};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n/**\n * A minimal `Event` subclass shim.\n * This doesn't *actually* subclass `Event` because not all browsers support\n * constructable `EventTarget`, and using a real `Event` will error.\n * @private\n */\nclass WorkboxEvent {\n /**\n * @param {string} type\n * @param {Object} props\n */\n constructor(type, props) {\n Object.assign(this, props, {type});\n }\n}\n\nexport {WorkboxEvent};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {Deferred} from 'workbox-core/_private/Deferred.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {messageSW} from './messageSW.mjs';\nimport {EventTargetShim} from './utils/EventTargetShim.mjs';\nimport {urlsMatch} from './utils/urlsMatch.mjs';\nimport {WorkboxEvent} from './utils/WorkboxEvent.mjs';\nimport './_version.mjs';\n\n\n// The time a SW must be in the waiting phase before we can conclude\n// `skipWaiting()` wasn't called. This 200 amount wasn't scientifically\n// chosen, but it seems to avoid false positives in my testing.\nconst WAITING_TIMEOUT_DURATION = 200;\n\n// The amount of time after a registration that we can reasonably conclude\n// that the registration didn't trigger an update.\nconst REGISTRATION_TIMEOUT_DURATION = 60000;\n\n/**\n * A class to aid in handling service worker registration, updates, and\n * reacting to service worker lifecycle events.\n *\n * @fires [message]{@link module:workbox-window.Workbox#message}\n * @fires [installed]{@link module:workbox-window.Workbox#installed}\n * @fires [waiting]{@link module:workbox-window.Workbox#waiting}\n * @fires [controlling]{@link module:workbox-window.Workbox#controlling}\n * @fires [activated]{@link module:workbox-window.Workbox#activated}\n * @fires [redundant]{@link module:workbox-window.Workbox#redundant}\n * @fires [externalinstalled]{@link module:workbox-window.Workbox#externalinstalled}\n * @fires [externalwaiting]{@link module:workbox-window.Workbox#externalwaiting}\n * @fires [externalactivated]{@link module:workbox-window.Workbox#externalactivated}\n *\n * @memberof module:workbox-window\n */\nclass Workbox extends EventTargetShim {\n /**\n * Creates a new Workbox instance with a script URL and service worker\n * options. The script URL and options are the same as those used when\n * calling `navigator.serviceWorker.register(scriptURL, options)`. See:\n * https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/register\n *\n * @param {string} scriptURL The service worker script associated with this\n * instance.\n * @param {Object} [registerOptions] The service worker options associated\n * with this instance.\n */\n constructor(scriptURL, registerOptions = {}) {\n super();\n\n this._scriptURL = scriptURL;\n this._registerOptions = registerOptions;\n this._updateFoundCount = 0;\n\n // Deferreds we can resolve later.\n this._swDeferred = new Deferred();\n this._activeDeferred = new Deferred();\n this._controllingDeferred = new Deferred();\n\n // Bind event handler callbacks.\n this._onMessage = this._onMessage.bind(this);\n this._onStateChange = this._onStateChange.bind(this);\n this._onUpdateFound = this._onUpdateFound.bind(this);\n this._onControllerChange = this._onControllerChange.bind(this);\n }\n\n /**\n * Registers a service worker for this instances script URL and service\n * worker options. By default this method delays registration until after\n * the window has loaded.\n *\n * @param {Object} [options]\n * @param {Function} [options.immediate=false] Setting this to true will\n * register the service worker immediately, even if the window has\n * not loaded (not recommended).\n */\n async register({immediate = false} = {}) {\n if (process.env.NODE_ENV !== 'production') {\n if (this._registrationTime) {\n logger.error('Cannot re-register a Workbox instance after it has ' +\n 'been registered. Create a new instance instead.');\n return;\n }\n }\n\n if (!immediate && document.readyState !== 'complete') {\n await new Promise((res) => addEventListener('load', res));\n }\n\n // Set this flag to true if any service worker was controlling the page\n // at registration time.\n this._isUpdate = Boolean(navigator.serviceWorker.controller);\n\n // Before registering, attempt to determine if a SW is already controlling\n // the page, and if that SW script (and version, if specified) matches this\n // instance's script.\n this._compatibleControllingSW = this._getControllingSWIfCompatible();\n\n this._registration = await this._registerScript();\n\n // If we have a compatible controller, store the controller as the \"own\"\n // SW, resolve active/controlling deferreds and add necessary listeners.\n if (this._compatibleControllingSW) {\n this._sw = this._compatibleControllingSW;\n this._activeDeferred.resolve(this._compatibleControllingSW);\n this._controllingDeferred.resolve(this._compatibleControllingSW);\n\n this._reportWindowReady(this._compatibleControllingSW);\n this._compatibleControllingSW.addEventListener(\n 'statechange', this._onStateChange, {once: true});\n }\n\n // If there's a waiting service worker with a matching URL before the\n // `updatefound` event fires, it likely means that this site is open\n // in another tab, or the user refreshed the page (and thus the prevoius\n // page wasn't fully unloaded before this page started loading).\n // https://developers.google.com/web/fundamentals/primers/service-workers/lifecycle#waiting\n const waitingSW = this._registration.waiting;\n if (waitingSW && urlsMatch(waitingSW.scriptURL, this._scriptURL)) {\n // Store the waiting SW as the \"own\" Sw, even if it means overwriting\n // a compatible controller.\n this._sw = waitingSW;\n\n // Run this in the next microtask, so any code that adds an event\n // listener after awaiting `register()` will get this event.\n Promise.resolve().then(() => {\n this.dispatchEvent(new WorkboxEvent('waiting', {\n sw: waitingSW,\n wasWaitingBeforeRegister: true,\n }));\n if (process.env.NODE_ENV !== 'production') {\n logger.warn('A service worker was already waiting to activate ' +\n 'before this script was registered...');\n }\n });\n }\n\n // If an \"own\" SW is already set, resolve the deferred.\n if (this._sw) {\n this._swDeferred.resolve(this._sw);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Successfully registered service worker.', this._scriptURL);\n\n if (navigator.serviceWorker.controller) {\n if (this._compatibleControllingSW) {\n logger.debug('A service worker with the same script URL ' +\n 'is already controlling this page.');\n } else {\n logger.debug('A service worker with a different script URL is ' +\n 'currently controlling the page. The browser is now fetching ' +\n 'the new script now...');\n }\n }\n\n const currentPageIsOutOfScope = () => {\n const scopeURL = new URL(\n this._registerOptions.scope || this._scriptURL, document.baseURI);\n const scopeURLBasePath = new URL('./', scopeURL.href).pathname;\n return !location.pathname.startsWith(scopeURLBasePath);\n };\n if (currentPageIsOutOfScope()) {\n logger.warn('The current page is not in scope for the registered ' +\n 'service worker. Was this a mistake?');\n }\n }\n\n this._registration.addEventListener('updatefound', this._onUpdateFound);\n navigator.serviceWorker.addEventListener(\n 'controllerchange', this._onControllerChange, {once: true});\n\n // Add message listeners.\n if ('BroadcastChannel' in self) {\n this._broadcastChannel = new BroadcastChannel('workbox');\n this._broadcastChannel.addEventListener('message', this._onMessage);\n }\n navigator.serviceWorker.addEventListener('message', this._onMessage);\n\n return this._registration;\n }\n\n /**\n * Resolves to the service worker registered by this instance as soon as it\n * is active. If a service worker was already controlling at registration\n * time then it will resolve to that if the script URLs (and optionally\n * script versions) match, otherwise it will wait until an update is found\n * and activates.\n *\n * @return {Promise}\n */\n get active() {\n return this._activeDeferred.promise;\n }\n\n /**\n * Resolves to the service worker registered by this instance as soon as it\n * is controlling the page. If a service worker was already controlling at\n * registration time then it will resolve to that if the script URLs (and\n * optionally script versions) match, otherwise it will wait until an update\n * is found and starts controlling the page.\n * Note: the first time a service worker is installed it will active but\n * not start controlling the page unless `clients.claim()` is called in the\n * service worker.\n *\n * @return {Promise}\n */\n get controlling() {\n return this._controllingDeferred.promise;\n }\n\n /**\n * Resolves with a reference to a service worker that matches the script URL\n * of this instance, as soon as it's available.\n *\n * If, at registration time, there's already an active or waiting service\n * worker with a matching script URL, it will be used (with the waiting\n * service worker taking precedence over the active service worker if both\n * match, since the waiting service worker would have been registered more\n * recently).\n * If there's no matching active or waiting service worker at registration\n * time then the promise will not resolve until an update is found and starts\n * installing, at which point the installing service worker is used.\n *\n * @return {Promise}\n */\n async getSW() {\n // If `this._sw` is set, resolve with that as we want `getSW()` to\n // return the correct (new) service worker if an update is found.\n return this._sw || this._swDeferred.promise;\n }\n\n /**\n * Sends the passed data object to the service worker registered by this\n * instance (via [`getSW()`]{@link module:workbox-window.Workbox#getSW}) and resolves\n * with a response (if any).\n *\n * A response can be set in a message handler in the service worker by\n * calling `event.ports[0].postMessage(...)`, which will resolve the promise\n * returned by `messageSW()`. If no response is set, the promise will never\n * resolve.\n *\n * @param {Object} data An object to send to the service worker\n * @return {Promise}\n */\n async messageSW(data) {\n const sw = await this.getSW();\n return messageSW(sw, data);\n }\n\n /**\n * Checks for a service worker already controlling the page and returns\n * it if its script URL matchs.\n *\n * @private\n * @return {ServiceWorker|undefined}\n */\n _getControllingSWIfCompatible() {\n const controller = navigator.serviceWorker.controller;\n if (controller && urlsMatch(controller.scriptURL, this._scriptURL)) {\n return controller;\n }\n }\n\n /**\n * Registers a service worker for this instances script URL and register\n * options and tracks the time registration was complete.\n *\n * @private\n */\n async _registerScript() {\n try {\n const reg = await navigator.serviceWorker.register(\n this._scriptURL, this._registerOptions);\n\n // Keep track of when registration happened, so it can be used in the\n // `this._onUpdateFound` heuristic. Also use the presence of this\n // property as a way to see if `.register()` has been called.\n this._registrationTime = performance.now();\n\n return reg;\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(error);\n }\n // Re-throw the error.\n throw error;\n }\n }\n\n\n /**\n * Sends a message to the passed service worker that the window is ready.\n *\n * @param {ServiceWorker} sw\n * @private\n */\n _reportWindowReady(sw) {\n messageSW(sw, {\n type: 'WINDOW_READY',\n meta: 'workbox-window',\n });\n }\n\n /**\n * @private\n */\n _onUpdateFound() {\n const installingSW = this._registration.installing;\n\n // If the script URL passed to `navigator.serviceWorker.register()` is\n // different from the current controlling SW's script URL, we know any\n // successful registration calls will trigger an `updatefound` event.\n // But if the registered script URL is the same as the current controlling\n // SW's script URL, we'll only get an `updatefound` event if the file\n // changed since it was last registered. This can be a problem if the user\n // opens up the same page in a different tab, and that page registers\n // a SW that triggers an update. It's a problem because this page has no\n // good way of knowing whether the `updatefound` event came from the SW\n // script it registered or from a registration attempt made by a newer\n // version of the page running in another tab.\n // To minimize the possibility of a false positive, we use the logic here:\n let updateLikelyTriggeredExternally =\n // Since we enforce only calling `register()` once, and since we don't\n // add the `updatefound` event listener until the `register()` call, if\n // `_updateFoundCount` is > 0 then it means this method has already\n // been called, thus this SW must be external\n this._updateFoundCount > 0 ||\n // If the script URL of the installing SW is different from this\n // instance's script URL, we know it's definitely not from our\n // registration.\n !urlsMatch(installingSW.scriptURL, this._scriptURL) ||\n // If all of the above are false, then we use a time-based heuristic:\n // Any `updatefound` event that occurs long after our registration is\n // assumed to be external.\n (performance.now() >\n this._registrationTime + REGISTRATION_TIMEOUT_DURATION) ?\n // If any of the above are not true, we assume the update was\n // triggered by this instance.\n true : false;\n\n if (updateLikelyTriggeredExternally) {\n this._externalSW = installingSW;\n this._registration.removeEventListener(\n 'updatefound', this._onUpdateFound);\n } else {\n // If the update was not triggered externally we know the installing\n // SW is the one we registered, so we set it.\n this._sw = installingSW;\n this._swDeferred.resolve(installingSW);\n\n // The `installing` state isn't something we have a dedicated\n // callback for, but we do log messages for it in development.\n if (process.env.NODE_ENV !== 'production') {\n if (navigator.serviceWorker.controller) {\n logger.log('Updated service worker found. Installing now...');\n } else {\n logger.log('Service worker is installing...');\n }\n }\n }\n\n // Increment the `updatefound` count, so future invocations of this\n // method can be sure they were triggered externally.\n ++this._updateFoundCount;\n\n // Add a `statechange` listener regardless of whether this update was\n // triggered externally, since we have callbacks for both.\n installingSW.addEventListener('statechange', this._onStateChange);\n }\n\n /**\n * @private\n * @param {Event} originalEvent\n */\n _onStateChange(originalEvent) {\n const sw = originalEvent.target;\n const {state} = sw;\n const isExternal = sw === this._externalSW;\n const eventPrefix = isExternal ? 'external' : '';\n\n const eventProps = {sw, originalEvent};\n if (!isExternal && this._isUpdate) {\n eventProps.isUpdate = true;\n }\n\n this.dispatchEvent(new WorkboxEvent(\n eventPrefix + state, eventProps));\n\n if (state === 'installed') {\n // This timeout is used to ignore cases where the service worker calls\n // `skipWaiting()` in the install event, thus moving it directly in the\n // activating state. (Since all service workers *must* go through the\n // waiting phase, the only way to detect `skipWaiting()` called in the\n // install event is to observe that the time spent in the waiting phase\n // is very short.)\n // NOTE: we don't need separate timeouts for the own and external SWs\n // since they can't go through these phases at the same time.\n this._waitingTimeout = setTimeout(() => {\n // Ensure the SW is still waiting (it may now be redundant).\n if (state === 'installed' && this._registration.waiting === sw) {\n this.dispatchEvent(new WorkboxEvent(\n eventPrefix + 'waiting', eventProps));\n\n if (process.env.NODE_ENV !== 'production') {\n if (isExternal) {\n logger.warn('An external service worker has installed but is ' +\n 'waiting for this client to close before activating...');\n } else {\n logger.warn('The service worker has installed but is waiting ' +\n 'for existing clients to close before activating...');\n }\n }\n }\n }, WAITING_TIMEOUT_DURATION);\n } else if (state === 'activating') {\n clearTimeout(this._waitingTimeout);\n if (!isExternal) {\n this._activeDeferred.resolve(sw);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n switch (state) {\n case 'installed':\n if (isExternal) {\n logger.warn('An external service worker has installed. ' +\n 'You may want to suggest users reload this page.');\n } else {\n logger.log('Registered service worker installed.');\n }\n break;\n case 'activated':\n if (isExternal) {\n logger.warn('An external service worker has activated.');\n } else {\n logger.log('Registered service worker activated.');\n if (sw !== navigator.serviceWorker.controller) {\n logger.warn('The registered service worker is active but ' +\n 'not yet controlling the page. Reload or run ' +\n '`clients.claim()` in the service worker.');\n }\n }\n break;\n case 'redundant':\n if (sw === this._compatibleControllingSW) {\n logger.log('Previously controlling service worker now redundant!');\n } else if (!isExternal) {\n logger.log('Registered service worker now redundant!');\n }\n break;\n }\n }\n }\n\n /**\n * @private\n * @param {Event} originalEvent\n */\n _onControllerChange(originalEvent) {\n const sw = this._sw;\n if (sw === navigator.serviceWorker.controller) {\n this.dispatchEvent(new WorkboxEvent('controlling', {sw, originalEvent}));\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Registered service worker now controlling this page.');\n }\n this._controllingDeferred.resolve(sw);\n }\n }\n\n /**\n * @private\n * @param {Event} originalEvent\n */\n _onMessage(originalEvent) {\n const {data} = originalEvent;\n this.dispatchEvent(new WorkboxEvent('message', {data, originalEvent}));\n }\n}\n\n// The jsdoc comments below outline the events this instance may dispatch:\n// -----------------------------------------------------------------------\n\n/**\n * The `message` event is dispatched any time a `postMessage` (or a\n * `BroadcastChannel` message with the `workbox` channel name) is received.\n *\n * @event module:workbox-window.Workbox#message\n * @type {WorkboxEvent}\n * @property {*} data The `data` property from the original `message` event.\n * @property {Event} originalEvent The original [`message`]{@link https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent}\n * event.\n * @property {string} type `message`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `installed` event is dispatched if the state of a\n * [`Workbox`]{@link module:workbox-window.Workbox} instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}\n * changes to `installed`.\n *\n * Then can happen either the very first time a service worker is installed,\n * or after an update to the current service worker is found. In the case\n * of an update being found, the event's `isUpdate` property will be `true`.\n *\n * @event module:workbox-window.Workbox#installed\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this `Workbox` instance called `register()`.\n * @property {string} type `installed`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `waiting` event is dispatched if the state of a\n * [`Workbox`]{@link module:workbox-window.Workbox} instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}\n * changes to `installed` and then doesn't immediately change to `activating`.\n * It may also be dispatched if a service worker with the same\n * [`scriptURL`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/scriptURL}\n * was already waiting when the [`register()`]{@link module:workbox-window.Workbox#register}\n * method was called.\n *\n * @event module:workbox-window.Workbox#waiting\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The native `controllerchange` event\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this `Workbox` instance called `register()`.\n * @property {boolean|undefined} wasWaitingBeforeRegister True if a service worker with\n * a matching `scriptURL` was already waiting when this `Workbox`\n * instance called `register()`.\n * @property {string} type `waiting`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `controlling` event is dispatched if a\n * [`controllerchange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/oncontrollerchange}\n * fires on the service worker [container]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer}\n * and the [`scriptURL`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/scriptURL}\n * of the new [controller]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/controller}\n * matches the `scriptURL` of the `Workbox` instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}.\n *\n * @event module:workbox-window.Workbox#controlling\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`controllerchange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/oncontrollerchange}\n * event.\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this service worker was registered.\n * @property {string} type `controlling`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `activated` event is dispatched if the state of a\n * [`Workbox`]{@link module:workbox-window.Workbox} instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}\n * changes to `activated`.\n *\n * @event module:workbox-window.Workbox#activated\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this `Workbox` instance called `register()`.\n * @property {string} type `activated`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `redundant` event is dispatched if the state of a\n * [`Workbox`]{@link module:workbox-window.Workbox} instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}\n * changes to `redundant`.\n *\n * @event module:workbox-window.Workbox#redundant\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this `Workbox` instance called `register()`.\n * @property {string} type `redundant`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `externalinstalled` event is dispatched if the state of an\n * [external service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-external-sw}\n * changes to `installed`.\n *\n * @event module:workbox-window.Workbox#externalinstalled\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {string} type `externalinstalled`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `externalwaiting` event is dispatched if the state of an\n * [external service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-external-sw}\n * changes to `waiting`.\n *\n * @event module:workbox-window.Workbox#externalwaiting\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event|undefined} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {string} type `externalwaiting`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `externalactivated` event is dispatched if the state of an\n * [external service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-external-sw}\n * changes to `activated`.\n *\n * @event module:workbox-window.Workbox#externalactivated\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {string} type `externalactivated`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\nexport {Workbox};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {messageSW} from './messageSW.mjs';\nimport {Workbox} from './Workbox.mjs';\nimport './_version.mjs';\n\n\n/**\n * @module workbox-window\n */\nexport {\n Workbox,\n messageSW,\n};\n"],"names":["self","_","e","messageSW","sw","data","Promise","resolve","messageChannel","MessageChannel","port1","onmessage","evt","postMessage","port2","Deferred","constructor","promise","reject","logger","process","inGroup","methodToColorMap","debug","log","warn","error","groupCollapsed","groupEnd","print","method","args","test","navigator","userAgent","console","styles","logPrefix","join","api","Object","keys","EventTargetShim","_eventListenerRegistry","addEventListener","type","listener","_getEventListenersByType","add","removeEventListener","delete","dispatchEvent","event","target","forEach","Set","urlsMatch","url1","url2","URL","location","href","WorkboxEvent","props","assign","WAITING_TIMEOUT_DURATION","REGISTRATION_TIMEOUT_DURATION","Workbox","scriptURL","registerOptions","_scriptURL","_registerOptions","_updateFoundCount","_swDeferred","_activeDeferred","_controllingDeferred","_onMessage","bind","_onStateChange","_onUpdateFound","_onControllerChange","register","immediate","_registrationTime","document","readyState","res","_isUpdate","Boolean","serviceWorker","controller","_compatibleControllingSW","_getControllingSWIfCompatible","_registration","_registerScript","_sw","_reportWindowReady","once","waitingSW","waiting","then","wasWaitingBeforeRegister","currentPageIsOutOfScope","scopeURL","scope","baseURI","scopeURLBasePath","pathname","startsWith","_broadcastChannel","BroadcastChannel","active","controlling","getSW","reg","performance","now","meta","installingSW","installing","updateLikelyTriggeredExternally","_externalSW","originalEvent","state","isExternal","eventPrefix","eventProps","isUpdate","_waitingTimeout","setTimeout","clearTimeout"],"mappings":"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"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.dev.umd.js b/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.dev.umd.js deleted file mode 100644 index 7e13ff6a9..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.dev.umd.js +++ /dev/null @@ -1,896 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = global || self, factory(global.workbox = {})); -}(this, function (exports) { 'use strict'; - - try { - self['workbox:window:4.3.1'] && _(); - } catch (e) {} // eslint-disable-line - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Sends a data object to a service worker via `postMessage` and resolves with - * a response (if any). - * - * A response can be set in a message handler in the service worker by - * calling `event.ports[0].postMessage(...)`, which will resolve the promise - * returned by `messageSW()`. If no response is set, the promise will not - * resolve. - * - * @param {ServiceWorker} sw The service worker to send the message to. - * @param {Object} data An object to send to the service worker. - * @return {Promise} - * - * @memberof module:workbox-window - */ - - var messageSW = function messageSW(sw, data) { - return new Promise(function (resolve) { - var messageChannel = new MessageChannel(); - - messageChannel.port1.onmessage = function (evt) { - return resolve(evt.data); - }; - - sw.postMessage(data, [messageChannel.port2]); - }); - }; - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - function _inheritsLoose(subClass, superClass) { - subClass.prototype = Object.create(superClass.prototype); - subClass.prototype.constructor = subClass; - subClass.__proto__ = superClass; - } - - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - - return self; - } - - try { - self['workbox:core:4.3.1'] && _(); - } catch (e) {} // eslint-disable-line - - /* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * The Deferred class composes Promises in a way that allows for them to be - * resolved or rejected from outside the constructor. In most cases promises - * should be used directly, but Deferreds can be necessary when the logic to - * resolve a promise must be separate. - * - * @private - */ - - var Deferred = - /** - * Creates a promise and exposes its resolve and reject functions as methods. - */ - function Deferred() { - var _this = this; - - this.promise = new Promise(function (resolve, reject) { - _this.resolve = resolve; - _this.reject = reject; - }); - }; - - /* - Copyright 2019 Google LLC - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - var logger = function () { - var inGroup = false; - var methodToColorMap = { - debug: "#7f8c8d", - // Gray - log: "#2ecc71", - // Green - warn: "#f39c12", - // Yellow - error: "#c0392b", - // Red - groupCollapsed: "#3498db", - // Blue - groupEnd: null // No colored prefix on groupEnd - - }; - - var print = function print(method, args) { - var _console2; - - if (method === 'groupCollapsed') { - // Safari doesn't print all console.groupCollapsed() arguments: - // https://bugs.webkit.org/show_bug.cgi?id=182754 - if (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { - var _console; - - (_console = console)[method].apply(_console, args); - - return; - } - } - - var styles = ["background: " + methodToColorMap[method], "border-radius: 0.5em", "color: white", "font-weight: bold", "padding: 2px 0.5em"]; // When in a group, the workbox prefix is not displayed. - - var logPrefix = inGroup ? [] : ['%cworkbox', styles.join(';')]; - - (_console2 = console)[method].apply(_console2, logPrefix.concat(args)); - - if (method === 'groupCollapsed') { - inGroup = true; - } - - if (method === 'groupEnd') { - inGroup = false; - } - }; - - var api = {}; - - var _arr = Object.keys(methodToColorMap); - - var _loop = function _loop() { - var method = _arr[_i]; - - api[method] = function () { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - print(method, args); - }; - }; - - for (var _i = 0; _i < _arr.length; _i++) { - _loop(); - } - - return api; - }(); - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * A minimal `EventTarget` shim. - * This is necessary because not all browsers support constructable - * `EventTarget`, so using a real `EventTarget` will error. - * @private - */ - - var EventTargetShim = - /*#__PURE__*/ - function () { - /** - * Creates an event listener registry - * - * @private - */ - function EventTargetShim() { - // A registry of event types to listeners. - this._eventListenerRegistry = {}; - } - /** - * @param {string} type - * @param {Function} listener - * @private - */ - - - var _proto = EventTargetShim.prototype; - - _proto.addEventListener = function addEventListener(type, listener) { - this._getEventListenersByType(type).add(listener); - }; - /** - * @param {string} type - * @param {Function} listener - * @private - */ - - - _proto.removeEventListener = function removeEventListener(type, listener) { - this._getEventListenersByType(type).delete(listener); - }; - /** - * @param {Event} event - * @private - */ - - - _proto.dispatchEvent = function dispatchEvent(event) { - event.target = this; - - this._getEventListenersByType(event.type).forEach(function (listener) { - return listener(event); - }); - }; - /** - * Returns a Set of listeners associated with the passed event type. - * If no handlers have been registered, an empty Set is returned. - * - * @param {string} type The event type. - * @return {Set} An array of handler functions. - * @private - */ - - - _proto._getEventListenersByType = function _getEventListenersByType(type) { - return this._eventListenerRegistry[type] = this._eventListenerRegistry[type] || new Set(); - }; - - return EventTargetShim; - }(); - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * Returns true if two URLs have the same `.href` property. The URLS can be - * relative, and if they are the current location href is used to resolve URLs. - * - * @private - * @param {string} url1 - * @param {string} url2 - * @return {boolean} - */ - - var urlsMatch = function urlsMatch(url1, url2) { - return new URL(url1, location).href === new URL(url2, location).href; - }; - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - /** - * A minimal `Event` subclass shim. - * This doesn't *actually* subclass `Event` because not all browsers support - * constructable `EventTarget`, and using a real `Event` will error. - * @private - */ - - var WorkboxEvent = - /** - * @param {string} type - * @param {Object} props - */ - function WorkboxEvent(type, props) { - Object.assign(this, props, { - type: type - }); - }; - - function _catch(body, recover) { - try { - var result = body(); - } catch (e) { - return recover(e); - } - - if (result && result.then) { - return result.then(void 0, recover); - } - - return result; - } - - function _async(f) { - return function () { - for (var args = [], i = 0; i < arguments.length; i++) { - args[i] = arguments[i]; - } - - try { - return Promise.resolve(f.apply(this, args)); - } catch (e) { - return Promise.reject(e); - } - }; - } - - function _invoke(body, then) { - var result = body(); - - if (result && result.then) { - return result.then(then); - } - - return then(result); - } - - function _await(value, then, direct) { - if (direct) { - return then ? then(value) : value; - } - - if (!value || !value.then) { - value = Promise.resolve(value); - } - - return then ? value.then(then) : value; - } - - function _awaitIgnored(value, direct) { - if (!direct) { - return value && value.then ? value.then(_empty) : Promise.resolve(); - } - } - - function _empty() {} - // `skipWaiting()` wasn't called. This 200 amount wasn't scientifically - // chosen, but it seems to avoid false positives in my testing. - - var WAITING_TIMEOUT_DURATION = 200; // The amount of time after a registration that we can reasonably conclude - // that the registration didn't trigger an update. - - var REGISTRATION_TIMEOUT_DURATION = 60000; - /** - * A class to aid in handling service worker registration, updates, and - * reacting to service worker lifecycle events. - * - * @fires [message]{@link module:workbox-window.Workbox#message} - * @fires [installed]{@link module:workbox-window.Workbox#installed} - * @fires [waiting]{@link module:workbox-window.Workbox#waiting} - * @fires [controlling]{@link module:workbox-window.Workbox#controlling} - * @fires [activated]{@link module:workbox-window.Workbox#activated} - * @fires [redundant]{@link module:workbox-window.Workbox#redundant} - * @fires [externalinstalled]{@link module:workbox-window.Workbox#externalinstalled} - * @fires [externalwaiting]{@link module:workbox-window.Workbox#externalwaiting} - * @fires [externalactivated]{@link module:workbox-window.Workbox#externalactivated} - * - * @memberof module:workbox-window - */ - - var Workbox = - /*#__PURE__*/ - function (_EventTargetShim) { - _inheritsLoose(Workbox, _EventTargetShim); - - /** - * Creates a new Workbox instance with a script URL and service worker - * options. The script URL and options are the same as those used when - * calling `navigator.serviceWorker.register(scriptURL, options)`. See: - * https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/register - * - * @param {string} scriptURL The service worker script associated with this - * instance. - * @param {Object} [registerOptions] The service worker options associated - * with this instance. - */ - function Workbox(scriptURL, registerOptions) { - var _this; - - if (registerOptions === void 0) { - registerOptions = {}; - } - - _this = _EventTargetShim.call(this) || this; - _this._scriptURL = scriptURL; - _this._registerOptions = registerOptions; - _this._updateFoundCount = 0; // Deferreds we can resolve later. - - _this._swDeferred = new Deferred(); - _this._activeDeferred = new Deferred(); - _this._controllingDeferred = new Deferred(); // Bind event handler callbacks. - - _this._onMessage = _this._onMessage.bind(_assertThisInitialized(_assertThisInitialized(_this))); - _this._onStateChange = _this._onStateChange.bind(_assertThisInitialized(_assertThisInitialized(_this))); - _this._onUpdateFound = _this._onUpdateFound.bind(_assertThisInitialized(_assertThisInitialized(_this))); - _this._onControllerChange = _this._onControllerChange.bind(_assertThisInitialized(_assertThisInitialized(_this))); - return _this; - } - /** - * Registers a service worker for this instances script URL and service - * worker options. By default this method delays registration until after - * the window has loaded. - * - * @param {Object} [options] - * @param {Function} [options.immediate=false] Setting this to true will - * register the service worker immediately, even if the window has - * not loaded (not recommended). - */ - - - var _proto = Workbox.prototype; - _proto.register = _async(function (_temp) { - var _this2 = this; - - var _ref = _temp === void 0 ? {} : _temp, - _ref$immediate = _ref.immediate, - immediate = _ref$immediate === void 0 ? false : _ref$immediate; - - { - if (_this2._registrationTime) { - logger.error('Cannot re-register a Workbox instance after it has ' + 'been registered. Create a new instance instead.'); - return; - } - } - - return _invoke(function () { - if (!immediate && document.readyState !== 'complete') { - return _awaitIgnored(new Promise(function (res) { - return addEventListener('load', res); - })); - } - }, function () { - // Set this flag to true if any service worker was controlling the page - // at registration time. - _this2._isUpdate = Boolean(navigator.serviceWorker.controller); // Before registering, attempt to determine if a SW is already controlling - // the page, and if that SW script (and version, if specified) matches this - // instance's script. - - _this2._compatibleControllingSW = _this2._getControllingSWIfCompatible(); - return _await(_this2._registerScript(), function (_this2$_registerScrip) { - _this2._registration = _this2$_registerScrip; - - // If we have a compatible controller, store the controller as the "own" - // SW, resolve active/controlling deferreds and add necessary listeners. - if (_this2._compatibleControllingSW) { - _this2._sw = _this2._compatibleControllingSW; - - _this2._activeDeferred.resolve(_this2._compatibleControllingSW); - - _this2._controllingDeferred.resolve(_this2._compatibleControllingSW); - - _this2._reportWindowReady(_this2._compatibleControllingSW); - - _this2._compatibleControllingSW.addEventListener('statechange', _this2._onStateChange, { - once: true - }); - } // If there's a waiting service worker with a matching URL before the - // `updatefound` event fires, it likely means that this site is open - // in another tab, or the user refreshed the page (and thus the prevoius - // page wasn't fully unloaded before this page started loading). - // https://developers.google.com/web/fundamentals/primers/service-workers/lifecycle#waiting - - - var waitingSW = _this2._registration.waiting; - - if (waitingSW && urlsMatch(waitingSW.scriptURL, _this2._scriptURL)) { - // Store the waiting SW as the "own" Sw, even if it means overwriting - // a compatible controller. - _this2._sw = waitingSW; // Run this in the next microtask, so any code that adds an event - // listener after awaiting `register()` will get this event. - - Promise.resolve().then(function () { - _this2.dispatchEvent(new WorkboxEvent('waiting', { - sw: waitingSW, - wasWaitingBeforeRegister: true - })); - - { - logger.warn('A service worker was already waiting to activate ' + 'before this script was registered...'); - } - }); - } // If an "own" SW is already set, resolve the deferred. - - - if (_this2._sw) { - _this2._swDeferred.resolve(_this2._sw); - } - - { - logger.log('Successfully registered service worker.', _this2._scriptURL); - - if (navigator.serviceWorker.controller) { - if (_this2._compatibleControllingSW) { - logger.debug('A service worker with the same script URL ' + 'is already controlling this page.'); - } else { - logger.debug('A service worker with a different script URL is ' + 'currently controlling the page. The browser is now fetching ' + 'the new script now...'); - } - } - - var currentPageIsOutOfScope = function currentPageIsOutOfScope() { - var scopeURL = new URL(_this2._registerOptions.scope || _this2._scriptURL, document.baseURI); - var scopeURLBasePath = new URL('./', scopeURL.href).pathname; - return !location.pathname.startsWith(scopeURLBasePath); - }; - - if (currentPageIsOutOfScope()) { - logger.warn('The current page is not in scope for the registered ' + 'service worker. Was this a mistake?'); - } - } - - _this2._registration.addEventListener('updatefound', _this2._onUpdateFound); - - navigator.serviceWorker.addEventListener('controllerchange', _this2._onControllerChange, { - once: true - }); // Add message listeners. - - if ('BroadcastChannel' in self) { - _this2._broadcastChannel = new BroadcastChannel('workbox'); - - _this2._broadcastChannel.addEventListener('message', _this2._onMessage); - } - - navigator.serviceWorker.addEventListener('message', _this2._onMessage); - return _this2._registration; - }); - }); - }); - /** - * Resolves to the service worker registered by this instance as soon as it - * is active. If a service worker was already controlling at registration - * time then it will resolve to that if the script URLs (and optionally - * script versions) match, otherwise it will wait until an update is found - * and activates. - * - * @return {Promise} - */ - - /** - * Resolves with a reference to a service worker that matches the script URL - * of this instance, as soon as it's available. - * - * If, at registration time, there's already an active or waiting service - * worker with a matching script URL, it will be used (with the waiting - * service worker taking precedence over the active service worker if both - * match, since the waiting service worker would have been registered more - * recently). - * If there's no matching active or waiting service worker at registration - * time then the promise will not resolve until an update is found and starts - * installing, at which point the installing service worker is used. - * - * @return {Promise} - */ - _proto.getSW = _async(function () { - var _this3 = this; - - // If `this._sw` is set, resolve with that as we want `getSW()` to - // return the correct (new) service worker if an update is found. - return _this3._sw || _this3._swDeferred.promise; - }); - /** - * Sends the passed data object to the service worker registered by this - * instance (via [`getSW()`]{@link module:workbox-window.Workbox#getSW}) and resolves - * with a response (if any). - * - * A response can be set in a message handler in the service worker by - * calling `event.ports[0].postMessage(...)`, which will resolve the promise - * returned by `messageSW()`. If no response is set, the promise will never - * resolve. - * - * @param {Object} data An object to send to the service worker - * @return {Promise} - */ - - _proto.messageSW = _async(function (data) { - var _this4 = this; - - return _await(_this4.getSW(), function (sw) { - return messageSW(sw, data); - }); - }); - /** - * Checks for a service worker already controlling the page and returns - * it if its script URL matchs. - * - * @private - * @return {ServiceWorker|undefined} - */ - - _proto._getControllingSWIfCompatible = function _getControllingSWIfCompatible() { - var controller = navigator.serviceWorker.controller; - - if (controller && urlsMatch(controller.scriptURL, this._scriptURL)) { - return controller; - } - }; - /** - * Registers a service worker for this instances script URL and register - * options and tracks the time registration was complete. - * - * @private - */ - - - _proto._registerScript = _async(function () { - var _this5 = this; - - return _catch(function () { - return _await(navigator.serviceWorker.register(_this5._scriptURL, _this5._registerOptions), function (reg) { - // Keep track of when registration happened, so it can be used in the - // `this._onUpdateFound` heuristic. Also use the presence of this - // property as a way to see if `.register()` has been called. - _this5._registrationTime = performance.now(); - return reg; - }); - }, function (error) { - { - logger.error(error); - } // Re-throw the error. - - - throw error; - }); - }); - /** - * Sends a message to the passed service worker that the window is ready. - * - * @param {ServiceWorker} sw - * @private - */ - - _proto._reportWindowReady = function _reportWindowReady(sw) { - messageSW(sw, { - type: 'WINDOW_READY', - meta: 'workbox-window' - }); - }; - /** - * @private - */ - - - _proto._onUpdateFound = function _onUpdateFound() { - var installingSW = this._registration.installing; // If the script URL passed to `navigator.serviceWorker.register()` is - // different from the current controlling SW's script URL, we know any - // successful registration calls will trigger an `updatefound` event. - // But if the registered script URL is the same as the current controlling - // SW's script URL, we'll only get an `updatefound` event if the file - // changed since it was last registered. This can be a problem if the user - // opens up the same page in a different tab, and that page registers - // a SW that triggers an update. It's a problem because this page has no - // good way of knowing whether the `updatefound` event came from the SW - // script it registered or from a registration attempt made by a newer - // version of the page running in another tab. - // To minimize the possibility of a false positive, we use the logic here: - - var updateLikelyTriggeredExternally = // Since we enforce only calling `register()` once, and since we don't - // add the `updatefound` event listener until the `register()` call, if - // `_updateFoundCount` is > 0 then it means this method has already - // been called, thus this SW must be external - this._updateFoundCount > 0 || // If the script URL of the installing SW is different from this - // instance's script URL, we know it's definitely not from our - // registration. - !urlsMatch(installingSW.scriptURL, this._scriptURL) || // If all of the above are false, then we use a time-based heuristic: - // Any `updatefound` event that occurs long after our registration is - // assumed to be external. - performance.now() > this._registrationTime + REGISTRATION_TIMEOUT_DURATION ? // If any of the above are not true, we assume the update was - // triggered by this instance. - true : false; - - if (updateLikelyTriggeredExternally) { - this._externalSW = installingSW; - - this._registration.removeEventListener('updatefound', this._onUpdateFound); - } else { - // If the update was not triggered externally we know the installing - // SW is the one we registered, so we set it. - this._sw = installingSW; - - this._swDeferred.resolve(installingSW); // The `installing` state isn't something we have a dedicated - // callback for, but we do log messages for it in development. - - - { - if (navigator.serviceWorker.controller) { - logger.log('Updated service worker found. Installing now...'); - } else { - logger.log('Service worker is installing...'); - } - } - } // Increment the `updatefound` count, so future invocations of this - // method can be sure they were triggered externally. - - - ++this._updateFoundCount; // Add a `statechange` listener regardless of whether this update was - // triggered externally, since we have callbacks for both. - - installingSW.addEventListener('statechange', this._onStateChange); - }; - /** - * @private - * @param {Event} originalEvent - */ - - - _proto._onStateChange = function _onStateChange(originalEvent) { - var _this6 = this; - - var sw = originalEvent.target; - var state = sw.state; - var isExternal = sw === this._externalSW; - var eventPrefix = isExternal ? 'external' : ''; - var eventProps = { - sw: sw, - originalEvent: originalEvent - }; - - if (!isExternal && this._isUpdate) { - eventProps.isUpdate = true; - } - - this.dispatchEvent(new WorkboxEvent(eventPrefix + state, eventProps)); - - if (state === 'installed') { - // This timeout is used to ignore cases where the service worker calls - // `skipWaiting()` in the install event, thus moving it directly in the - // activating state. (Since all service workers *must* go through the - // waiting phase, the only way to detect `skipWaiting()` called in the - // install event is to observe that the time spent in the waiting phase - // is very short.) - // NOTE: we don't need separate timeouts for the own and external SWs - // since they can't go through these phases at the same time. - this._waitingTimeout = setTimeout(function () { - // Ensure the SW is still waiting (it may now be redundant). - if (state === 'installed' && _this6._registration.waiting === sw) { - _this6.dispatchEvent(new WorkboxEvent(eventPrefix + 'waiting', eventProps)); - - { - if (isExternal) { - logger.warn('An external service worker has installed but is ' + 'waiting for this client to close before activating...'); - } else { - logger.warn('The service worker has installed but is waiting ' + 'for existing clients to close before activating...'); - } - } - } - }, WAITING_TIMEOUT_DURATION); - } else if (state === 'activating') { - clearTimeout(this._waitingTimeout); - - if (!isExternal) { - this._activeDeferred.resolve(sw); - } - } - - { - switch (state) { - case 'installed': - if (isExternal) { - logger.warn('An external service worker has installed. ' + 'You may want to suggest users reload this page.'); - } else { - logger.log('Registered service worker installed.'); - } - - break; - - case 'activated': - if (isExternal) { - logger.warn('An external service worker has activated.'); - } else { - logger.log('Registered service worker activated.'); - - if (sw !== navigator.serviceWorker.controller) { - logger.warn('The registered service worker is active but ' + 'not yet controlling the page. Reload or run ' + '`clients.claim()` in the service worker.'); - } - } - - break; - - case 'redundant': - if (sw === this._compatibleControllingSW) { - logger.log('Previously controlling service worker now redundant!'); - } else if (!isExternal) { - logger.log('Registered service worker now redundant!'); - } - - break; - } - } - }; - /** - * @private - * @param {Event} originalEvent - */ - - - _proto._onControllerChange = function _onControllerChange(originalEvent) { - var sw = this._sw; - - if (sw === navigator.serviceWorker.controller) { - this.dispatchEvent(new WorkboxEvent('controlling', { - sw: sw, - originalEvent: originalEvent - })); - - { - logger.log('Registered service worker now controlling this page.'); - } - - this._controllingDeferred.resolve(sw); - } - }; - /** - * @private - * @param {Event} originalEvent - */ - - - _proto._onMessage = function _onMessage(originalEvent) { - var data = originalEvent.data; - this.dispatchEvent(new WorkboxEvent('message', { - data: data, - originalEvent: originalEvent - })); - }; - - _createClass(Workbox, [{ - key: "active", - get: function get() { - return this._activeDeferred.promise; - } - /** - * Resolves to the service worker registered by this instance as soon as it - * is controlling the page. If a service worker was already controlling at - * registration time then it will resolve to that if the script URLs (and - * optionally script versions) match, otherwise it will wait until an update - * is found and starts controlling the page. - * Note: the first time a service worker is installed it will active but - * not start controlling the page unless `clients.claim()` is called in the - * service worker. - * - * @return {Promise} - */ - - }, { - key: "controlling", - get: function get() { - return this._controllingDeferred.promise; - } - }]); - - return Workbox; - }(EventTargetShim); // The jsdoc comments below outline the events this instance may dispatch: - - /* - Copyright 2019 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. - */ - - exports.Workbox = Workbox; - exports.messageSW = messageSW; - - Object.defineProperty(exports, '__esModule', { value: true }); - -})); -//# sourceMappingURL=workbox-window.dev.umd.js.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.dev.umd.js.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.dev.umd.js.map deleted file mode 100644 index 0fc86b824..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.dev.umd.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-window.dev.umd.js","sources":["../_version.mjs","../messageSW.mjs","../../workbox-core/_version.mjs","../../workbox-core/_private/Deferred.mjs","../../workbox-core/_private/logger.mjs","../utils/EventTargetShim.mjs","../utils/urlsMatch.mjs","../utils/WorkboxEvent.mjs","../Workbox.mjs","../index.mjs"],"sourcesContent":["try{self['workbox:window:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport './_version.mjs';\n\n\n/**\n * Sends a data object to a service worker via `postMessage` and resolves with\n * a response (if any).\n *\n * A response can be set in a message handler in the service worker by\n * calling `event.ports[0].postMessage(...)`, which will resolve the promise\n * returned by `messageSW()`. If no response is set, the promise will not\n * resolve.\n *\n * @param {ServiceWorker} sw The service worker to send the message to.\n * @param {Object} data An object to send to the service worker.\n * @return {Promise}\n *\n * @memberof module:workbox-window\n */\nconst messageSW = (sw, data) => {\n return new Promise((resolve) => {\n let messageChannel = new MessageChannel();\n messageChannel.port1.onmessage = (evt) => resolve(evt.data);\n sw.postMessage(data, [messageChannel.port2]);\n });\n};\n\nexport {messageSW};\n","try{self['workbox:core:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\n/**\n * The Deferred class composes Promises in a way that allows for them to be\n * resolved or rejected from outside the constructor. In most cases promises\n * should be used directly, but Deferreds can be necessary when the logic to\n * resolve a promise must be separate.\n *\n * @private\n */\nexport class Deferred {\n /**\n * Creates a promise and exposes its resolve and reject functions as methods.\n */\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\nconst logger = process.env.NODE_ENV === 'production' ? null : (() => {\n let inGroup = false;\n\n const methodToColorMap = {\n debug: `#7f8c8d`, // Gray\n log: `#2ecc71`, // Green\n warn: `#f39c12`, // Yellow\n error: `#c0392b`, // Red\n groupCollapsed: `#3498db`, // Blue\n groupEnd: null, // No colored prefix on groupEnd\n };\n\n const print = function(method, args) {\n if (method === 'groupCollapsed') {\n // Safari doesn't print all console.groupCollapsed() arguments:\n // https://bugs.webkit.org/show_bug.cgi?id=182754\n if (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n console[method](...args);\n return;\n }\n }\n\n const styles = [\n `background: ${methodToColorMap[method]}`,\n `border-radius: 0.5em`,\n `color: white`,\n `font-weight: bold`,\n `padding: 2px 0.5em`,\n ];\n\n // When in a group, the workbox prefix is not displayed.\n const logPrefix = inGroup ? [] : ['%cworkbox', styles.join(';')];\n\n console[method](...logPrefix, ...args);\n\n if (method === 'groupCollapsed') {\n inGroup = true;\n }\n if (method === 'groupEnd') {\n inGroup = false;\n }\n };\n\n const api = {};\n for (const method of Object.keys(methodToColorMap)) {\n api[method] = (...args) => {\n print(method, args);\n };\n }\n\n return api;\n})();\n\nexport {logger};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\n/**\n * A minimal `EventTarget` shim.\n * This is necessary because not all browsers support constructable\n * `EventTarget`, so using a real `EventTarget` will error.\n * @private\n */\nclass EventTargetShim {\n /**\n * Creates an event listener registry\n *\n * @private\n */\n constructor() {\n // A registry of event types to listeners.\n this._eventListenerRegistry = {};\n }\n /**\n * @param {string} type\n * @param {Function} listener\n * @private\n */\n addEventListener(type, listener) {\n this._getEventListenersByType(type).add(listener);\n }\n\n /**\n * @param {string} type\n * @param {Function} listener\n * @private\n */\n removeEventListener(type, listener) {\n this._getEventListenersByType(type).delete(listener);\n }\n\n /**\n * @param {Event} event\n * @private\n */\n dispatchEvent(event) {\n event.target = this;\n this._getEventListenersByType(event.type).forEach(\n (listener) => listener(event));\n }\n\n /**\n * Returns a Set of listeners associated with the passed event type.\n * If no handlers have been registered, an empty Set is returned.\n *\n * @param {string} type The event type.\n * @return {Set} An array of handler functions.\n * @private\n */\n _getEventListenersByType(type) {\n return this._eventListenerRegistry[type] =\n (this._eventListenerRegistry[type] || new Set());\n }\n}\n\nexport {EventTargetShim};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\n/**\n * Returns true if two URLs have the same `.href` property. The URLS can be\n * relative, and if they are the current location href is used to resolve URLs.\n *\n * @private\n * @param {string} url1\n * @param {string} url2\n * @return {boolean}\n */\nconst urlsMatch = (url1, url2) => {\n return new URL(url1, location).href === new URL(url2, location).href;\n};\n\nexport {urlsMatch};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n/**\n * A minimal `Event` subclass shim.\n * This doesn't *actually* subclass `Event` because not all browsers support\n * constructable `EventTarget`, and using a real `Event` will error.\n * @private\n */\nclass WorkboxEvent {\n /**\n * @param {string} type\n * @param {Object} props\n */\n constructor(type, props) {\n Object.assign(this, props, {type});\n }\n}\n\nexport {WorkboxEvent};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {Deferred} from 'workbox-core/_private/Deferred.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {messageSW} from './messageSW.mjs';\nimport {EventTargetShim} from './utils/EventTargetShim.mjs';\nimport {urlsMatch} from './utils/urlsMatch.mjs';\nimport {WorkboxEvent} from './utils/WorkboxEvent.mjs';\nimport './_version.mjs';\n\n\n// The time a SW must be in the waiting phase before we can conclude\n// `skipWaiting()` wasn't called. This 200 amount wasn't scientifically\n// chosen, but it seems to avoid false positives in my testing.\nconst WAITING_TIMEOUT_DURATION = 200;\n\n// The amount of time after a registration that we can reasonably conclude\n// that the registration didn't trigger an update.\nconst REGISTRATION_TIMEOUT_DURATION = 60000;\n\n/**\n * A class to aid in handling service worker registration, updates, and\n * reacting to service worker lifecycle events.\n *\n * @fires [message]{@link module:workbox-window.Workbox#message}\n * @fires [installed]{@link module:workbox-window.Workbox#installed}\n * @fires [waiting]{@link module:workbox-window.Workbox#waiting}\n * @fires [controlling]{@link module:workbox-window.Workbox#controlling}\n * @fires [activated]{@link module:workbox-window.Workbox#activated}\n * @fires [redundant]{@link module:workbox-window.Workbox#redundant}\n * @fires [externalinstalled]{@link module:workbox-window.Workbox#externalinstalled}\n * @fires [externalwaiting]{@link module:workbox-window.Workbox#externalwaiting}\n * @fires [externalactivated]{@link module:workbox-window.Workbox#externalactivated}\n *\n * @memberof module:workbox-window\n */\nclass Workbox extends EventTargetShim {\n /**\n * Creates a new Workbox instance with a script URL and service worker\n * options. The script URL and options are the same as those used when\n * calling `navigator.serviceWorker.register(scriptURL, options)`. See:\n * https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/register\n *\n * @param {string} scriptURL The service worker script associated with this\n * instance.\n * @param {Object} [registerOptions] The service worker options associated\n * with this instance.\n */\n constructor(scriptURL, registerOptions = {}) {\n super();\n\n this._scriptURL = scriptURL;\n this._registerOptions = registerOptions;\n this._updateFoundCount = 0;\n\n // Deferreds we can resolve later.\n this._swDeferred = new Deferred();\n this._activeDeferred = new Deferred();\n this._controllingDeferred = new Deferred();\n\n // Bind event handler callbacks.\n this._onMessage = this._onMessage.bind(this);\n this._onStateChange = this._onStateChange.bind(this);\n this._onUpdateFound = this._onUpdateFound.bind(this);\n this._onControllerChange = this._onControllerChange.bind(this);\n }\n\n /**\n * Registers a service worker for this instances script URL and service\n * worker options. By default this method delays registration until after\n * the window has loaded.\n *\n * @param {Object} [options]\n * @param {Function} [options.immediate=false] Setting this to true will\n * register the service worker immediately, even if the window has\n * not loaded (not recommended).\n */\n async register({immediate = false} = {}) {\n if (process.env.NODE_ENV !== 'production') {\n if (this._registrationTime) {\n logger.error('Cannot re-register a Workbox instance after it has ' +\n 'been registered. Create a new instance instead.');\n return;\n }\n }\n\n if (!immediate && document.readyState !== 'complete') {\n await new Promise((res) => addEventListener('load', res));\n }\n\n // Set this flag to true if any service worker was controlling the page\n // at registration time.\n this._isUpdate = Boolean(navigator.serviceWorker.controller);\n\n // Before registering, attempt to determine if a SW is already controlling\n // the page, and if that SW script (and version, if specified) matches this\n // instance's script.\n this._compatibleControllingSW = this._getControllingSWIfCompatible();\n\n this._registration = await this._registerScript();\n\n // If we have a compatible controller, store the controller as the \"own\"\n // SW, resolve active/controlling deferreds and add necessary listeners.\n if (this._compatibleControllingSW) {\n this._sw = this._compatibleControllingSW;\n this._activeDeferred.resolve(this._compatibleControllingSW);\n this._controllingDeferred.resolve(this._compatibleControllingSW);\n\n this._reportWindowReady(this._compatibleControllingSW);\n this._compatibleControllingSW.addEventListener(\n 'statechange', this._onStateChange, {once: true});\n }\n\n // If there's a waiting service worker with a matching URL before the\n // `updatefound` event fires, it likely means that this site is open\n // in another tab, or the user refreshed the page (and thus the prevoius\n // page wasn't fully unloaded before this page started loading).\n // https://developers.google.com/web/fundamentals/primers/service-workers/lifecycle#waiting\n const waitingSW = this._registration.waiting;\n if (waitingSW && urlsMatch(waitingSW.scriptURL, this._scriptURL)) {\n // Store the waiting SW as the \"own\" Sw, even if it means overwriting\n // a compatible controller.\n this._sw = waitingSW;\n\n // Run this in the next microtask, so any code that adds an event\n // listener after awaiting `register()` will get this event.\n Promise.resolve().then(() => {\n this.dispatchEvent(new WorkboxEvent('waiting', {\n sw: waitingSW,\n wasWaitingBeforeRegister: true,\n }));\n if (process.env.NODE_ENV !== 'production') {\n logger.warn('A service worker was already waiting to activate ' +\n 'before this script was registered...');\n }\n });\n }\n\n // If an \"own\" SW is already set, resolve the deferred.\n if (this._sw) {\n this._swDeferred.resolve(this._sw);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Successfully registered service worker.', this._scriptURL);\n\n if (navigator.serviceWorker.controller) {\n if (this._compatibleControllingSW) {\n logger.debug('A service worker with the same script URL ' +\n 'is already controlling this page.');\n } else {\n logger.debug('A service worker with a different script URL is ' +\n 'currently controlling the page. The browser is now fetching ' +\n 'the new script now...');\n }\n }\n\n const currentPageIsOutOfScope = () => {\n const scopeURL = new URL(\n this._registerOptions.scope || this._scriptURL, document.baseURI);\n const scopeURLBasePath = new URL('./', scopeURL.href).pathname;\n return !location.pathname.startsWith(scopeURLBasePath);\n };\n if (currentPageIsOutOfScope()) {\n logger.warn('The current page is not in scope for the registered ' +\n 'service worker. Was this a mistake?');\n }\n }\n\n this._registration.addEventListener('updatefound', this._onUpdateFound);\n navigator.serviceWorker.addEventListener(\n 'controllerchange', this._onControllerChange, {once: true});\n\n // Add message listeners.\n if ('BroadcastChannel' in self) {\n this._broadcastChannel = new BroadcastChannel('workbox');\n this._broadcastChannel.addEventListener('message', this._onMessage);\n }\n navigator.serviceWorker.addEventListener('message', this._onMessage);\n\n return this._registration;\n }\n\n /**\n * Resolves to the service worker registered by this instance as soon as it\n * is active. If a service worker was already controlling at registration\n * time then it will resolve to that if the script URLs (and optionally\n * script versions) match, otherwise it will wait until an update is found\n * and activates.\n *\n * @return {Promise}\n */\n get active() {\n return this._activeDeferred.promise;\n }\n\n /**\n * Resolves to the service worker registered by this instance as soon as it\n * is controlling the page. If a service worker was already controlling at\n * registration time then it will resolve to that if the script URLs (and\n * optionally script versions) match, otherwise it will wait until an update\n * is found and starts controlling the page.\n * Note: the first time a service worker is installed it will active but\n * not start controlling the page unless `clients.claim()` is called in the\n * service worker.\n *\n * @return {Promise}\n */\n get controlling() {\n return this._controllingDeferred.promise;\n }\n\n /**\n * Resolves with a reference to a service worker that matches the script URL\n * of this instance, as soon as it's available.\n *\n * If, at registration time, there's already an active or waiting service\n * worker with a matching script URL, it will be used (with the waiting\n * service worker taking precedence over the active service worker if both\n * match, since the waiting service worker would have been registered more\n * recently).\n * If there's no matching active or waiting service worker at registration\n * time then the promise will not resolve until an update is found and starts\n * installing, at which point the installing service worker is used.\n *\n * @return {Promise}\n */\n async getSW() {\n // If `this._sw` is set, resolve with that as we want `getSW()` to\n // return the correct (new) service worker if an update is found.\n return this._sw || this._swDeferred.promise;\n }\n\n /**\n * Sends the passed data object to the service worker registered by this\n * instance (via [`getSW()`]{@link module:workbox-window.Workbox#getSW}) and resolves\n * with a response (if any).\n *\n * A response can be set in a message handler in the service worker by\n * calling `event.ports[0].postMessage(...)`, which will resolve the promise\n * returned by `messageSW()`. If no response is set, the promise will never\n * resolve.\n *\n * @param {Object} data An object to send to the service worker\n * @return {Promise}\n */\n async messageSW(data) {\n const sw = await this.getSW();\n return messageSW(sw, data);\n }\n\n /**\n * Checks for a service worker already controlling the page and returns\n * it if its script URL matchs.\n *\n * @private\n * @return {ServiceWorker|undefined}\n */\n _getControllingSWIfCompatible() {\n const controller = navigator.serviceWorker.controller;\n if (controller && urlsMatch(controller.scriptURL, this._scriptURL)) {\n return controller;\n }\n }\n\n /**\n * Registers a service worker for this instances script URL and register\n * options and tracks the time registration was complete.\n *\n * @private\n */\n async _registerScript() {\n try {\n const reg = await navigator.serviceWorker.register(\n this._scriptURL, this._registerOptions);\n\n // Keep track of when registration happened, so it can be used in the\n // `this._onUpdateFound` heuristic. Also use the presence of this\n // property as a way to see if `.register()` has been called.\n this._registrationTime = performance.now();\n\n return reg;\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(error);\n }\n // Re-throw the error.\n throw error;\n }\n }\n\n\n /**\n * Sends a message to the passed service worker that the window is ready.\n *\n * @param {ServiceWorker} sw\n * @private\n */\n _reportWindowReady(sw) {\n messageSW(sw, {\n type: 'WINDOW_READY',\n meta: 'workbox-window',\n });\n }\n\n /**\n * @private\n */\n _onUpdateFound() {\n const installingSW = this._registration.installing;\n\n // If the script URL passed to `navigator.serviceWorker.register()` is\n // different from the current controlling SW's script URL, we know any\n // successful registration calls will trigger an `updatefound` event.\n // But if the registered script URL is the same as the current controlling\n // SW's script URL, we'll only get an `updatefound` event if the file\n // changed since it was last registered. This can be a problem if the user\n // opens up the same page in a different tab, and that page registers\n // a SW that triggers an update. It's a problem because this page has no\n // good way of knowing whether the `updatefound` event came from the SW\n // script it registered or from a registration attempt made by a newer\n // version of the page running in another tab.\n // To minimize the possibility of a false positive, we use the logic here:\n let updateLikelyTriggeredExternally =\n // Since we enforce only calling `register()` once, and since we don't\n // add the `updatefound` event listener until the `register()` call, if\n // `_updateFoundCount` is > 0 then it means this method has already\n // been called, thus this SW must be external\n this._updateFoundCount > 0 ||\n // If the script URL of the installing SW is different from this\n // instance's script URL, we know it's definitely not from our\n // registration.\n !urlsMatch(installingSW.scriptURL, this._scriptURL) ||\n // If all of the above are false, then we use a time-based heuristic:\n // Any `updatefound` event that occurs long after our registration is\n // assumed to be external.\n (performance.now() >\n this._registrationTime + REGISTRATION_TIMEOUT_DURATION) ?\n // If any of the above are not true, we assume the update was\n // triggered by this instance.\n true : false;\n\n if (updateLikelyTriggeredExternally) {\n this._externalSW = installingSW;\n this._registration.removeEventListener(\n 'updatefound', this._onUpdateFound);\n } else {\n // If the update was not triggered externally we know the installing\n // SW is the one we registered, so we set it.\n this._sw = installingSW;\n this._swDeferred.resolve(installingSW);\n\n // The `installing` state isn't something we have a dedicated\n // callback for, but we do log messages for it in development.\n if (process.env.NODE_ENV !== 'production') {\n if (navigator.serviceWorker.controller) {\n logger.log('Updated service worker found. Installing now...');\n } else {\n logger.log('Service worker is installing...');\n }\n }\n }\n\n // Increment the `updatefound` count, so future invocations of this\n // method can be sure they were triggered externally.\n ++this._updateFoundCount;\n\n // Add a `statechange` listener regardless of whether this update was\n // triggered externally, since we have callbacks for both.\n installingSW.addEventListener('statechange', this._onStateChange);\n }\n\n /**\n * @private\n * @param {Event} originalEvent\n */\n _onStateChange(originalEvent) {\n const sw = originalEvent.target;\n const {state} = sw;\n const isExternal = sw === this._externalSW;\n const eventPrefix = isExternal ? 'external' : '';\n\n const eventProps = {sw, originalEvent};\n if (!isExternal && this._isUpdate) {\n eventProps.isUpdate = true;\n }\n\n this.dispatchEvent(new WorkboxEvent(\n eventPrefix + state, eventProps));\n\n if (state === 'installed') {\n // This timeout is used to ignore cases where the service worker calls\n // `skipWaiting()` in the install event, thus moving it directly in the\n // activating state. (Since all service workers *must* go through the\n // waiting phase, the only way to detect `skipWaiting()` called in the\n // install event is to observe that the time spent in the waiting phase\n // is very short.)\n // NOTE: we don't need separate timeouts for the own and external SWs\n // since they can't go through these phases at the same time.\n this._waitingTimeout = setTimeout(() => {\n // Ensure the SW is still waiting (it may now be redundant).\n if (state === 'installed' && this._registration.waiting === sw) {\n this.dispatchEvent(new WorkboxEvent(\n eventPrefix + 'waiting', eventProps));\n\n if (process.env.NODE_ENV !== 'production') {\n if (isExternal) {\n logger.warn('An external service worker has installed but is ' +\n 'waiting for this client to close before activating...');\n } else {\n logger.warn('The service worker has installed but is waiting ' +\n 'for existing clients to close before activating...');\n }\n }\n }\n }, WAITING_TIMEOUT_DURATION);\n } else if (state === 'activating') {\n clearTimeout(this._waitingTimeout);\n if (!isExternal) {\n this._activeDeferred.resolve(sw);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n switch (state) {\n case 'installed':\n if (isExternal) {\n logger.warn('An external service worker has installed. ' +\n 'You may want to suggest users reload this page.');\n } else {\n logger.log('Registered service worker installed.');\n }\n break;\n case 'activated':\n if (isExternal) {\n logger.warn('An external service worker has activated.');\n } else {\n logger.log('Registered service worker activated.');\n if (sw !== navigator.serviceWorker.controller) {\n logger.warn('The registered service worker is active but ' +\n 'not yet controlling the page. Reload or run ' +\n '`clients.claim()` in the service worker.');\n }\n }\n break;\n case 'redundant':\n if (sw === this._compatibleControllingSW) {\n logger.log('Previously controlling service worker now redundant!');\n } else if (!isExternal) {\n logger.log('Registered service worker now redundant!');\n }\n break;\n }\n }\n }\n\n /**\n * @private\n * @param {Event} originalEvent\n */\n _onControllerChange(originalEvent) {\n const sw = this._sw;\n if (sw === navigator.serviceWorker.controller) {\n this.dispatchEvent(new WorkboxEvent('controlling', {sw, originalEvent}));\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Registered service worker now controlling this page.');\n }\n this._controllingDeferred.resolve(sw);\n }\n }\n\n /**\n * @private\n * @param {Event} originalEvent\n */\n _onMessage(originalEvent) {\n const {data} = originalEvent;\n this.dispatchEvent(new WorkboxEvent('message', {data, originalEvent}));\n }\n}\n\n// The jsdoc comments below outline the events this instance may dispatch:\n// -----------------------------------------------------------------------\n\n/**\n * The `message` event is dispatched any time a `postMessage` (or a\n * `BroadcastChannel` message with the `workbox` channel name) is received.\n *\n * @event module:workbox-window.Workbox#message\n * @type {WorkboxEvent}\n * @property {*} data The `data` property from the original `message` event.\n * @property {Event} originalEvent The original [`message`]{@link https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent}\n * event.\n * @property {string} type `message`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `installed` event is dispatched if the state of a\n * [`Workbox`]{@link module:workbox-window.Workbox} instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}\n * changes to `installed`.\n *\n * Then can happen either the very first time a service worker is installed,\n * or after an update to the current service worker is found. In the case\n * of an update being found, the event's `isUpdate` property will be `true`.\n *\n * @event module:workbox-window.Workbox#installed\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this `Workbox` instance called `register()`.\n * @property {string} type `installed`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `waiting` event is dispatched if the state of a\n * [`Workbox`]{@link module:workbox-window.Workbox} instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}\n * changes to `installed` and then doesn't immediately change to `activating`.\n * It may also be dispatched if a service worker with the same\n * [`scriptURL`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/scriptURL}\n * was already waiting when the [`register()`]{@link module:workbox-window.Workbox#register}\n * method was called.\n *\n * @event module:workbox-window.Workbox#waiting\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The native `controllerchange` event\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this `Workbox` instance called `register()`.\n * @property {boolean|undefined} wasWaitingBeforeRegister True if a service worker with\n * a matching `scriptURL` was already waiting when this `Workbox`\n * instance called `register()`.\n * @property {string} type `waiting`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `controlling` event is dispatched if a\n * [`controllerchange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/oncontrollerchange}\n * fires on the service worker [container]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer}\n * and the [`scriptURL`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/scriptURL}\n * of the new [controller]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/controller}\n * matches the `scriptURL` of the `Workbox` instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}.\n *\n * @event module:workbox-window.Workbox#controlling\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`controllerchange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/oncontrollerchange}\n * event.\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this service worker was registered.\n * @property {string} type `controlling`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `activated` event is dispatched if the state of a\n * [`Workbox`]{@link module:workbox-window.Workbox} instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}\n * changes to `activated`.\n *\n * @event module:workbox-window.Workbox#activated\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this `Workbox` instance called `register()`.\n * @property {string} type `activated`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `redundant` event is dispatched if the state of a\n * [`Workbox`]{@link module:workbox-window.Workbox} instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}\n * changes to `redundant`.\n *\n * @event module:workbox-window.Workbox#redundant\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this `Workbox` instance called `register()`.\n * @property {string} type `redundant`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `externalinstalled` event is dispatched if the state of an\n * [external service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-external-sw}\n * changes to `installed`.\n *\n * @event module:workbox-window.Workbox#externalinstalled\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {string} type `externalinstalled`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `externalwaiting` event is dispatched if the state of an\n * [external service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-external-sw}\n * changes to `waiting`.\n *\n * @event module:workbox-window.Workbox#externalwaiting\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event|undefined} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {string} type `externalwaiting`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `externalactivated` event is dispatched if the state of an\n * [external service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-external-sw}\n * changes to `activated`.\n *\n * @event module:workbox-window.Workbox#externalactivated\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {string} type `externalactivated`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\nexport {Workbox};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {messageSW} from './messageSW.mjs';\nimport {Workbox} from './Workbox.mjs';\nimport './_version.mjs';\n\n\n/**\n * @module workbox-window\n */\nexport {\n Workbox,\n messageSW,\n};\n"],"names":["self","_","e","messageSW","sw","data","Promise","resolve","messageChannel","MessageChannel","port1","onmessage","evt","postMessage","port2","Deferred","promise","reject","logger","process","inGroup","methodToColorMap","debug","log","warn","error","groupCollapsed","groupEnd","print","method","args","test","navigator","userAgent","console","styles","logPrefix","join","api","Object","keys","EventTargetShim","_eventListenerRegistry","addEventListener","type","listener","_getEventListenersByType","add","removeEventListener","delete","dispatchEvent","event","target","forEach","Set","urlsMatch","url1","url2","URL","location","href","WorkboxEvent","props","assign","body","recover","result","then","f","i","arguments","length","apply","value","direct","WAITING_TIMEOUT_DURATION","REGISTRATION_TIMEOUT_DURATION","Workbox","scriptURL","registerOptions","_scriptURL","_registerOptions","_updateFoundCount","_swDeferred","_activeDeferred","_controllingDeferred","_onMessage","bind","_onStateChange","_onUpdateFound","_onControllerChange","register","immediate","_registrationTime","document","readyState","res","_isUpdate","Boolean","serviceWorker","controller","_compatibleControllingSW","_getControllingSWIfCompatible","_registerScript","_registration","_sw","_reportWindowReady","once","waitingSW","waiting","wasWaitingBeforeRegister","currentPageIsOutOfScope","scopeURL","scope","baseURI","scopeURLBasePath","pathname","startsWith","_broadcastChannel","BroadcastChannel","getSW","reg","performance","now","meta","installingSW","installing","updateLikelyTriggeredExternally","_externalSW","originalEvent","state","isExternal","eventPrefix","eventProps","isUpdate","_waitingTimeout","setTimeout","clearTimeout"],"mappings":"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"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.prod.es5.mjs b/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.prod.es5.mjs deleted file mode 100644 index 7d15b6201..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.prod.es5.mjs +++ /dev/null @@ -1,2 +0,0 @@ -try{self["workbox:window:4.3.1"]&&_()}catch(n){}var n=function(n,t){return new Promise(function(i){var e=new MessageChannel;e.port1.onmessage=function(n){return i(n.data)},n.postMessage(t,[e.port2])})};function t(n,t){for(var i=0;i0||!r(n.scriptURL,this.t)||performance.now()>this.L+6e4?(this.W=n,this.B.removeEventListener("updatefound",this.g)):(this.O=n,this.u.resolve(n)),++this.o,n.addEventListener("statechange",this.l)},d.l=function(n){var t=this,i=n.target,e=i.state,r=i===this.W,u=r?"external":"",a={sw:i,originalEvent:n};!r&&this.p&&(a.isUpdate=!0),this.dispatchEvent(new o(u+e,a)),"installed"===e?this._=setTimeout(function(){"installed"===e&&t.B.waiting===i&&t.dispatchEvent(new o(u+"waiting",a))},200):"activating"===e&&(clearTimeout(this._),r||this.s.resolve(i))},d.m=function(n){var t=this.O;t===navigator.serviceWorker.controller&&(this.dispatchEvent(new o("controlling",{sw:t,originalEvent:n})),this.h.resolve(t))},d.v=function(n){var t=n.data;this.dispatchEvent(new o("message",{data:t,originalEvent:n}))},l=v,(w=[{key:"active",get:function(){return this.s.promise}},{key:"controlling",get:function(){return this.h.promise}}])&&t(l.prototype,w),g&&t(l,g),v}(function(){function n(){this.D={}}var t=n.prototype;return t.addEventListener=function(n,t){this.T(n).add(t)},t.removeEventListener=function(n,t){this.T(n).delete(t)},t.dispatchEvent=function(n){n.target=this,this.T(n.type).forEach(function(t){return t(n)})},t.T=function(n){return this.D[n]=this.D[n]||new Set},n}());export{c as Workbox,n as messageSW}; -//# sourceMappingURL=workbox-window.prod.es5.mjs.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.prod.es5.mjs.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.prod.es5.mjs.map deleted file mode 100644 index d7e18f76c..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.prod.es5.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-window.prod.es5.mjs","sources":["../_version.mjs","../messageSW.mjs","../../workbox-core/_version.mjs","../../workbox-core/_private/Deferred.mjs","../utils/urlsMatch.mjs","../utils/WorkboxEvent.mjs","../Workbox.mjs","../utils/EventTargetShim.mjs"],"sourcesContent":["try{self['workbox:window:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport './_version.mjs';\n\n\n/**\n * Sends a data object to a service worker via `postMessage` and resolves with\n * a response (if any).\n *\n * A response can be set in a message handler in the service worker by\n * calling `event.ports[0].postMessage(...)`, which will resolve the promise\n * returned by `messageSW()`. If no response is set, the promise will not\n * resolve.\n *\n * @param {ServiceWorker} sw The service worker to send the message to.\n * @param {Object} data An object to send to the service worker.\n * @return {Promise}\n *\n * @memberof module:workbox-window\n */\nconst messageSW = (sw, data) => {\n return new Promise((resolve) => {\n let messageChannel = new MessageChannel();\n messageChannel.port1.onmessage = (evt) => resolve(evt.data);\n sw.postMessage(data, [messageChannel.port2]);\n });\n};\n\nexport {messageSW};\n","try{self['workbox:core:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\n/**\n * The Deferred class composes Promises in a way that allows for them to be\n * resolved or rejected from outside the constructor. In most cases promises\n * should be used directly, but Deferreds can be necessary when the logic to\n * resolve a promise must be separate.\n *\n * @private\n */\nexport class Deferred {\n /**\n * Creates a promise and exposes its resolve and reject functions as methods.\n */\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\n/**\n * Returns true if two URLs have the same `.href` property. The URLS can be\n * relative, and if they are the current location href is used to resolve URLs.\n *\n * @private\n * @param {string} url1\n * @param {string} url2\n * @return {boolean}\n */\nconst urlsMatch = (url1, url2) => {\n return new URL(url1, location).href === new URL(url2, location).href;\n};\n\nexport {urlsMatch};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n/**\n * A minimal `Event` subclass shim.\n * This doesn't *actually* subclass `Event` because not all browsers support\n * constructable `EventTarget`, and using a real `Event` will error.\n * @private\n */\nclass WorkboxEvent {\n /**\n * @param {string} type\n * @param {Object} props\n */\n constructor(type, props) {\n Object.assign(this, props, {type});\n }\n}\n\nexport {WorkboxEvent};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {Deferred} from 'workbox-core/_private/Deferred.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {messageSW} from './messageSW.mjs';\nimport {EventTargetShim} from './utils/EventTargetShim.mjs';\nimport {urlsMatch} from './utils/urlsMatch.mjs';\nimport {WorkboxEvent} from './utils/WorkboxEvent.mjs';\nimport './_version.mjs';\n\n\n// The time a SW must be in the waiting phase before we can conclude\n// `skipWaiting()` wasn't called. This 200 amount wasn't scientifically\n// chosen, but it seems to avoid false positives in my testing.\nconst WAITING_TIMEOUT_DURATION = 200;\n\n// The amount of time after a registration that we can reasonably conclude\n// that the registration didn't trigger an update.\nconst REGISTRATION_TIMEOUT_DURATION = 60000;\n\n/**\n * A class to aid in handling service worker registration, updates, and\n * reacting to service worker lifecycle events.\n *\n * @fires [message]{@link module:workbox-window.Workbox#message}\n * @fires [installed]{@link module:workbox-window.Workbox#installed}\n * @fires [waiting]{@link module:workbox-window.Workbox#waiting}\n * @fires [controlling]{@link module:workbox-window.Workbox#controlling}\n * @fires [activated]{@link module:workbox-window.Workbox#activated}\n * @fires [redundant]{@link module:workbox-window.Workbox#redundant}\n * @fires [externalinstalled]{@link module:workbox-window.Workbox#externalinstalled}\n * @fires [externalwaiting]{@link module:workbox-window.Workbox#externalwaiting}\n * @fires [externalactivated]{@link module:workbox-window.Workbox#externalactivated}\n *\n * @memberof module:workbox-window\n */\nclass Workbox extends EventTargetShim {\n /**\n * Creates a new Workbox instance with a script URL and service worker\n * options. The script URL and options are the same as those used when\n * calling `navigator.serviceWorker.register(scriptURL, options)`. See:\n * https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/register\n *\n * @param {string} scriptURL The service worker script associated with this\n * instance.\n * @param {Object} [registerOptions] The service worker options associated\n * with this instance.\n */\n constructor(scriptURL, registerOptions = {}) {\n super();\n\n this._scriptURL = scriptURL;\n this._registerOptions = registerOptions;\n this._updateFoundCount = 0;\n\n // Deferreds we can resolve later.\n this._swDeferred = new Deferred();\n this._activeDeferred = new Deferred();\n this._controllingDeferred = new Deferred();\n\n // Bind event handler callbacks.\n this._onMessage = this._onMessage.bind(this);\n this._onStateChange = this._onStateChange.bind(this);\n this._onUpdateFound = this._onUpdateFound.bind(this);\n this._onControllerChange = this._onControllerChange.bind(this);\n }\n\n /**\n * Registers a service worker for this instances script URL and service\n * worker options. By default this method delays registration until after\n * the window has loaded.\n *\n * @param {Object} [options]\n * @param {Function} [options.immediate=false] Setting this to true will\n * register the service worker immediately, even if the window has\n * not loaded (not recommended).\n */\n async register({immediate = false} = {}) {\n if (process.env.NODE_ENV !== 'production') {\n if (this._registrationTime) {\n logger.error('Cannot re-register a Workbox instance after it has ' +\n 'been registered. Create a new instance instead.');\n return;\n }\n }\n\n if (!immediate && document.readyState !== 'complete') {\n await new Promise((res) => addEventListener('load', res));\n }\n\n // Set this flag to true if any service worker was controlling the page\n // at registration time.\n this._isUpdate = Boolean(navigator.serviceWorker.controller);\n\n // Before registering, attempt to determine if a SW is already controlling\n // the page, and if that SW script (and version, if specified) matches this\n // instance's script.\n this._compatibleControllingSW = this._getControllingSWIfCompatible();\n\n this._registration = await this._registerScript();\n\n // If we have a compatible controller, store the controller as the \"own\"\n // SW, resolve active/controlling deferreds and add necessary listeners.\n if (this._compatibleControllingSW) {\n this._sw = this._compatibleControllingSW;\n this._activeDeferred.resolve(this._compatibleControllingSW);\n this._controllingDeferred.resolve(this._compatibleControllingSW);\n\n this._reportWindowReady(this._compatibleControllingSW);\n this._compatibleControllingSW.addEventListener(\n 'statechange', this._onStateChange, {once: true});\n }\n\n // If there's a waiting service worker with a matching URL before the\n // `updatefound` event fires, it likely means that this site is open\n // in another tab, or the user refreshed the page (and thus the prevoius\n // page wasn't fully unloaded before this page started loading).\n // https://developers.google.com/web/fundamentals/primers/service-workers/lifecycle#waiting\n const waitingSW = this._registration.waiting;\n if (waitingSW && urlsMatch(waitingSW.scriptURL, this._scriptURL)) {\n // Store the waiting SW as the \"own\" Sw, even if it means overwriting\n // a compatible controller.\n this._sw = waitingSW;\n\n // Run this in the next microtask, so any code that adds an event\n // listener after awaiting `register()` will get this event.\n Promise.resolve().then(() => {\n this.dispatchEvent(new WorkboxEvent('waiting', {\n sw: waitingSW,\n wasWaitingBeforeRegister: true,\n }));\n if (process.env.NODE_ENV !== 'production') {\n logger.warn('A service worker was already waiting to activate ' +\n 'before this script was registered...');\n }\n });\n }\n\n // If an \"own\" SW is already set, resolve the deferred.\n if (this._sw) {\n this._swDeferred.resolve(this._sw);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Successfully registered service worker.', this._scriptURL);\n\n if (navigator.serviceWorker.controller) {\n if (this._compatibleControllingSW) {\n logger.debug('A service worker with the same script URL ' +\n 'is already controlling this page.');\n } else {\n logger.debug('A service worker with a different script URL is ' +\n 'currently controlling the page. The browser is now fetching ' +\n 'the new script now...');\n }\n }\n\n const currentPageIsOutOfScope = () => {\n const scopeURL = new URL(\n this._registerOptions.scope || this._scriptURL, document.baseURI);\n const scopeURLBasePath = new URL('./', scopeURL.href).pathname;\n return !location.pathname.startsWith(scopeURLBasePath);\n };\n if (currentPageIsOutOfScope()) {\n logger.warn('The current page is not in scope for the registered ' +\n 'service worker. Was this a mistake?');\n }\n }\n\n this._registration.addEventListener('updatefound', this._onUpdateFound);\n navigator.serviceWorker.addEventListener(\n 'controllerchange', this._onControllerChange, {once: true});\n\n // Add message listeners.\n if ('BroadcastChannel' in self) {\n this._broadcastChannel = new BroadcastChannel('workbox');\n this._broadcastChannel.addEventListener('message', this._onMessage);\n }\n navigator.serviceWorker.addEventListener('message', this._onMessage);\n\n return this._registration;\n }\n\n /**\n * Resolves to the service worker registered by this instance as soon as it\n * is active. If a service worker was already controlling at registration\n * time then it will resolve to that if the script URLs (and optionally\n * script versions) match, otherwise it will wait until an update is found\n * and activates.\n *\n * @return {Promise}\n */\n get active() {\n return this._activeDeferred.promise;\n }\n\n /**\n * Resolves to the service worker registered by this instance as soon as it\n * is controlling the page. If a service worker was already controlling at\n * registration time then it will resolve to that if the script URLs (and\n * optionally script versions) match, otherwise it will wait until an update\n * is found and starts controlling the page.\n * Note: the first time a service worker is installed it will active but\n * not start controlling the page unless `clients.claim()` is called in the\n * service worker.\n *\n * @return {Promise}\n */\n get controlling() {\n return this._controllingDeferred.promise;\n }\n\n /**\n * Resolves with a reference to a service worker that matches the script URL\n * of this instance, as soon as it's available.\n *\n * If, at registration time, there's already an active or waiting service\n * worker with a matching script URL, it will be used (with the waiting\n * service worker taking precedence over the active service worker if both\n * match, since the waiting service worker would have been registered more\n * recently).\n * If there's no matching active or waiting service worker at registration\n * time then the promise will not resolve until an update is found and starts\n * installing, at which point the installing service worker is used.\n *\n * @return {Promise}\n */\n async getSW() {\n // If `this._sw` is set, resolve with that as we want `getSW()` to\n // return the correct (new) service worker if an update is found.\n return this._sw || this._swDeferred.promise;\n }\n\n /**\n * Sends the passed data object to the service worker registered by this\n * instance (via [`getSW()`]{@link module:workbox-window.Workbox#getSW}) and resolves\n * with a response (if any).\n *\n * A response can be set in a message handler in the service worker by\n * calling `event.ports[0].postMessage(...)`, which will resolve the promise\n * returned by `messageSW()`. If no response is set, the promise will never\n * resolve.\n *\n * @param {Object} data An object to send to the service worker\n * @return {Promise}\n */\n async messageSW(data) {\n const sw = await this.getSW();\n return messageSW(sw, data);\n }\n\n /**\n * Checks for a service worker already controlling the page and returns\n * it if its script URL matchs.\n *\n * @private\n * @return {ServiceWorker|undefined}\n */\n _getControllingSWIfCompatible() {\n const controller = navigator.serviceWorker.controller;\n if (controller && urlsMatch(controller.scriptURL, this._scriptURL)) {\n return controller;\n }\n }\n\n /**\n * Registers a service worker for this instances script URL and register\n * options and tracks the time registration was complete.\n *\n * @private\n */\n async _registerScript() {\n try {\n const reg = await navigator.serviceWorker.register(\n this._scriptURL, this._registerOptions);\n\n // Keep track of when registration happened, so it can be used in the\n // `this._onUpdateFound` heuristic. Also use the presence of this\n // property as a way to see if `.register()` has been called.\n this._registrationTime = performance.now();\n\n return reg;\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(error);\n }\n // Re-throw the error.\n throw error;\n }\n }\n\n\n /**\n * Sends a message to the passed service worker that the window is ready.\n *\n * @param {ServiceWorker} sw\n * @private\n */\n _reportWindowReady(sw) {\n messageSW(sw, {\n type: 'WINDOW_READY',\n meta: 'workbox-window',\n });\n }\n\n /**\n * @private\n */\n _onUpdateFound() {\n const installingSW = this._registration.installing;\n\n // If the script URL passed to `navigator.serviceWorker.register()` is\n // different from the current controlling SW's script URL, we know any\n // successful registration calls will trigger an `updatefound` event.\n // But if the registered script URL is the same as the current controlling\n // SW's script URL, we'll only get an `updatefound` event if the file\n // changed since it was last registered. This can be a problem if the user\n // opens up the same page in a different tab, and that page registers\n // a SW that triggers an update. It's a problem because this page has no\n // good way of knowing whether the `updatefound` event came from the SW\n // script it registered or from a registration attempt made by a newer\n // version of the page running in another tab.\n // To minimize the possibility of a false positive, we use the logic here:\n let updateLikelyTriggeredExternally =\n // Since we enforce only calling `register()` once, and since we don't\n // add the `updatefound` event listener until the `register()` call, if\n // `_updateFoundCount` is > 0 then it means this method has already\n // been called, thus this SW must be external\n this._updateFoundCount > 0 ||\n // If the script URL of the installing SW is different from this\n // instance's script URL, we know it's definitely not from our\n // registration.\n !urlsMatch(installingSW.scriptURL, this._scriptURL) ||\n // If all of the above are false, then we use a time-based heuristic:\n // Any `updatefound` event that occurs long after our registration is\n // assumed to be external.\n (performance.now() >\n this._registrationTime + REGISTRATION_TIMEOUT_DURATION) ?\n // If any of the above are not true, we assume the update was\n // triggered by this instance.\n true : false;\n\n if (updateLikelyTriggeredExternally) {\n this._externalSW = installingSW;\n this._registration.removeEventListener(\n 'updatefound', this._onUpdateFound);\n } else {\n // If the update was not triggered externally we know the installing\n // SW is the one we registered, so we set it.\n this._sw = installingSW;\n this._swDeferred.resolve(installingSW);\n\n // The `installing` state isn't something we have a dedicated\n // callback for, but we do log messages for it in development.\n if (process.env.NODE_ENV !== 'production') {\n if (navigator.serviceWorker.controller) {\n logger.log('Updated service worker found. Installing now...');\n } else {\n logger.log('Service worker is installing...');\n }\n }\n }\n\n // Increment the `updatefound` count, so future invocations of this\n // method can be sure they were triggered externally.\n ++this._updateFoundCount;\n\n // Add a `statechange` listener regardless of whether this update was\n // triggered externally, since we have callbacks for both.\n installingSW.addEventListener('statechange', this._onStateChange);\n }\n\n /**\n * @private\n * @param {Event} originalEvent\n */\n _onStateChange(originalEvent) {\n const sw = originalEvent.target;\n const {state} = sw;\n const isExternal = sw === this._externalSW;\n const eventPrefix = isExternal ? 'external' : '';\n\n const eventProps = {sw, originalEvent};\n if (!isExternal && this._isUpdate) {\n eventProps.isUpdate = true;\n }\n\n this.dispatchEvent(new WorkboxEvent(\n eventPrefix + state, eventProps));\n\n if (state === 'installed') {\n // This timeout is used to ignore cases where the service worker calls\n // `skipWaiting()` in the install event, thus moving it directly in the\n // activating state. (Since all service workers *must* go through the\n // waiting phase, the only way to detect `skipWaiting()` called in the\n // install event is to observe that the time spent in the waiting phase\n // is very short.)\n // NOTE: we don't need separate timeouts for the own and external SWs\n // since they can't go through these phases at the same time.\n this._waitingTimeout = setTimeout(() => {\n // Ensure the SW is still waiting (it may now be redundant).\n if (state === 'installed' && this._registration.waiting === sw) {\n this.dispatchEvent(new WorkboxEvent(\n eventPrefix + 'waiting', eventProps));\n\n if (process.env.NODE_ENV !== 'production') {\n if (isExternal) {\n logger.warn('An external service worker has installed but is ' +\n 'waiting for this client to close before activating...');\n } else {\n logger.warn('The service worker has installed but is waiting ' +\n 'for existing clients to close before activating...');\n }\n }\n }\n }, WAITING_TIMEOUT_DURATION);\n } else if (state === 'activating') {\n clearTimeout(this._waitingTimeout);\n if (!isExternal) {\n this._activeDeferred.resolve(sw);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n switch (state) {\n case 'installed':\n if (isExternal) {\n logger.warn('An external service worker has installed. ' +\n 'You may want to suggest users reload this page.');\n } else {\n logger.log('Registered service worker installed.');\n }\n break;\n case 'activated':\n if (isExternal) {\n logger.warn('An external service worker has activated.');\n } else {\n logger.log('Registered service worker activated.');\n if (sw !== navigator.serviceWorker.controller) {\n logger.warn('The registered service worker is active but ' +\n 'not yet controlling the page. Reload or run ' +\n '`clients.claim()` in the service worker.');\n }\n }\n break;\n case 'redundant':\n if (sw === this._compatibleControllingSW) {\n logger.log('Previously controlling service worker now redundant!');\n } else if (!isExternal) {\n logger.log('Registered service worker now redundant!');\n }\n break;\n }\n }\n }\n\n /**\n * @private\n * @param {Event} originalEvent\n */\n _onControllerChange(originalEvent) {\n const sw = this._sw;\n if (sw === navigator.serviceWorker.controller) {\n this.dispatchEvent(new WorkboxEvent('controlling', {sw, originalEvent}));\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Registered service worker now controlling this page.');\n }\n this._controllingDeferred.resolve(sw);\n }\n }\n\n /**\n * @private\n * @param {Event} originalEvent\n */\n _onMessage(originalEvent) {\n const {data} = originalEvent;\n this.dispatchEvent(new WorkboxEvent('message', {data, originalEvent}));\n }\n}\n\n// The jsdoc comments below outline the events this instance may dispatch:\n// -----------------------------------------------------------------------\n\n/**\n * The `message` event is dispatched any time a `postMessage` (or a\n * `BroadcastChannel` message with the `workbox` channel name) is received.\n *\n * @event module:workbox-window.Workbox#message\n * @type {WorkboxEvent}\n * @property {*} data The `data` property from the original `message` event.\n * @property {Event} originalEvent The original [`message`]{@link https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent}\n * event.\n * @property {string} type `message`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `installed` event is dispatched if the state of a\n * [`Workbox`]{@link module:workbox-window.Workbox} instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}\n * changes to `installed`.\n *\n * Then can happen either the very first time a service worker is installed,\n * or after an update to the current service worker is found. In the case\n * of an update being found, the event's `isUpdate` property will be `true`.\n *\n * @event module:workbox-window.Workbox#installed\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this `Workbox` instance called `register()`.\n * @property {string} type `installed`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `waiting` event is dispatched if the state of a\n * [`Workbox`]{@link module:workbox-window.Workbox} instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}\n * changes to `installed` and then doesn't immediately change to `activating`.\n * It may also be dispatched if a service worker with the same\n * [`scriptURL`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/scriptURL}\n * was already waiting when the [`register()`]{@link module:workbox-window.Workbox#register}\n * method was called.\n *\n * @event module:workbox-window.Workbox#waiting\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The native `controllerchange` event\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this `Workbox` instance called `register()`.\n * @property {boolean|undefined} wasWaitingBeforeRegister True if a service worker with\n * a matching `scriptURL` was already waiting when this `Workbox`\n * instance called `register()`.\n * @property {string} type `waiting`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `controlling` event is dispatched if a\n * [`controllerchange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/oncontrollerchange}\n * fires on the service worker [container]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer}\n * and the [`scriptURL`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/scriptURL}\n * of the new [controller]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/controller}\n * matches the `scriptURL` of the `Workbox` instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}.\n *\n * @event module:workbox-window.Workbox#controlling\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`controllerchange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/oncontrollerchange}\n * event.\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this service worker was registered.\n * @property {string} type `controlling`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `activated` event is dispatched if the state of a\n * [`Workbox`]{@link module:workbox-window.Workbox} instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}\n * changes to `activated`.\n *\n * @event module:workbox-window.Workbox#activated\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this `Workbox` instance called `register()`.\n * @property {string} type `activated`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `redundant` event is dispatched if the state of a\n * [`Workbox`]{@link module:workbox-window.Workbox} instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}\n * changes to `redundant`.\n *\n * @event module:workbox-window.Workbox#redundant\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this `Workbox` instance called `register()`.\n * @property {string} type `redundant`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `externalinstalled` event is dispatched if the state of an\n * [external service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-external-sw}\n * changes to `installed`.\n *\n * @event module:workbox-window.Workbox#externalinstalled\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {string} type `externalinstalled`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `externalwaiting` event is dispatched if the state of an\n * [external service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-external-sw}\n * changes to `waiting`.\n *\n * @event module:workbox-window.Workbox#externalwaiting\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event|undefined} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {string} type `externalwaiting`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `externalactivated` event is dispatched if the state of an\n * [external service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-external-sw}\n * changes to `activated`.\n *\n * @event module:workbox-window.Workbox#externalactivated\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {string} type `externalactivated`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\nexport {Workbox};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\n/**\n * A minimal `EventTarget` shim.\n * This is necessary because not all browsers support constructable\n * `EventTarget`, so using a real `EventTarget` will error.\n * @private\n */\nclass EventTargetShim {\n /**\n * Creates an event listener registry\n *\n * @private\n */\n constructor() {\n // A registry of event types to listeners.\n this._eventListenerRegistry = {};\n }\n /**\n * @param {string} type\n * @param {Function} listener\n * @private\n */\n addEventListener(type, listener) {\n this._getEventListenersByType(type).add(listener);\n }\n\n /**\n * @param {string} type\n * @param {Function} listener\n * @private\n */\n removeEventListener(type, listener) {\n this._getEventListenersByType(type).delete(listener);\n }\n\n /**\n * @param {Event} event\n * @private\n */\n dispatchEvent(event) {\n event.target = this;\n this._getEventListenersByType(event.type).forEach(\n (listener) => listener(event));\n }\n\n /**\n * Returns a Set of listeners associated with the passed event type.\n * If no handlers have been registered, an empty Set is returned.\n *\n * @param {string} type The event type.\n * @return {Set} An array of handler functions.\n * @private\n */\n _getEventListenersByType(type) {\n return this._eventListenerRegistry[type] =\n (this._eventListenerRegistry[type] || new Set());\n }\n}\n\nexport {EventTargetShim};\n"],"names":["self","_","e","messageSW","sw","data","Promise","resolve","messageChannel","MessageChannel","port1","onmessage","evt","postMessage","port2","Deferred","promise","reject","_this","urlsMatch","url1","url2","URL","location","href","WorkboxEvent","type","props","Object","assign","this","f","args","i","arguments","length","apply","value","then","direct","Workbox","scriptURL","registerOptions","_scriptURL","_registerOptions","_updateFoundCount","_swDeferred","_activeDeferred","_controllingDeferred","_onMessage","bind","_onStateChange","_onUpdateFound","_onControllerChange","register","result","immediate","_isUpdate","Boolean","navigator","serviceWorker","controller","_compatibleControllingSW","_this2","_getControllingSWIfCompatible","_registerScript","_registration","_sw","_reportWindowReady","addEventListener","once","waitingSW","waiting","dispatchEvent","wasWaitingBeforeRegister","_broadcastChannel","BroadcastChannel","document","readyState","res","body","getSW","recover","_this5","reg","_registrationTime","performance","now","error","meta","installingSW","installing","_externalSW","removeEventListener","originalEvent","target","state","isExternal","eventPrefix","eventProps","isUpdate","_waitingTimeout","setTimeout","_this6","clearTimeout","_eventListenerRegistry","listener","_getEventListenersByType","add","delete","event","forEach","Set"],"mappings":"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"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.prod.mjs b/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.prod.mjs deleted file mode 100644 index 433ab7e4a..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.prod.mjs +++ /dev/null @@ -1,2 +0,0 @@ -try{self["workbox:window:4.3.1"]&&_()}catch(t){}const t=(t,s)=>new Promise(i=>{let e=new MessageChannel;e.port1.onmessage=(t=>i(t.data)),t.postMessage(s,[e.port2])});try{self["workbox:core:4.3.1"]&&_()}catch(t){}class s{constructor(){this.promise=new Promise((t,s)=>{this.resolve=t,this.reject=s})}}class i{constructor(){this.t={}}addEventListener(t,s){this.s(t).add(s)}removeEventListener(t,s){this.s(t).delete(s)}dispatchEvent(t){t.target=this,this.s(t.type).forEach(s=>s(t))}s(t){return this.t[t]=this.t[t]||new Set}}const e=(t,s)=>new URL(t,location).href===new URL(s,location).href;class n{constructor(t,s){Object.assign(this,s,{type:t})}}const h=200,a=6e4;class o extends i{constructor(t,i={}){super(),this.i=t,this.h=i,this.o=0,this.l=new s,this.g=new s,this.u=new s,this.m=this.m.bind(this),this.v=this.v.bind(this),this.p=this.p.bind(this),this._=this._.bind(this)}async register({immediate:t=!1}={}){t||"complete"===document.readyState||await new Promise(t=>addEventListener("load",t)),this.C=Boolean(navigator.serviceWorker.controller),this.W=this.L(),this.S=await this.B(),this.W&&(this.R=this.W,this.g.resolve(this.W),this.u.resolve(this.W),this.P(this.W),this.W.addEventListener("statechange",this.v,{once:!0}));const s=this.S.waiting;return s&&e(s.scriptURL,this.i)&&(this.R=s,Promise.resolve().then(()=>{this.dispatchEvent(new n("waiting",{sw:s,wasWaitingBeforeRegister:!0}))})),this.R&&this.l.resolve(this.R),this.S.addEventListener("updatefound",this.p),navigator.serviceWorker.addEventListener("controllerchange",this._,{once:!0}),"BroadcastChannel"in self&&(this.T=new BroadcastChannel("workbox"),this.T.addEventListener("message",this.m)),navigator.serviceWorker.addEventListener("message",this.m),this.S}get active(){return this.g.promise}get controlling(){return this.u.promise}async getSW(){return this.R||this.l.promise}async messageSW(s){const i=await this.getSW();return t(i,s)}L(){const t=navigator.serviceWorker.controller;if(t&&e(t.scriptURL,this.i))return t}async B(){try{const t=await navigator.serviceWorker.register(this.i,this.h);return this.U=performance.now(),t}catch(t){throw t}}P(s){t(s,{type:"WINDOW_READY",meta:"workbox-window"})}p(){const t=this.S.installing;this.o>0||!e(t.scriptURL,this.i)||performance.now()>this.U+a?(this.k=t,this.S.removeEventListener("updatefound",this.p)):(this.R=t,this.l.resolve(t)),++this.o,t.addEventListener("statechange",this.v)}v(t){const s=t.target,{state:i}=s,e=s===this.k,a=e?"external":"",o={sw:s,originalEvent:t};!e&&this.C&&(o.isUpdate=!0),this.dispatchEvent(new n(a+i,o)),"installed"===i?this.D=setTimeout(()=>{"installed"===i&&this.S.waiting===s&&this.dispatchEvent(new n(a+"waiting",o))},h):"activating"===i&&(clearTimeout(this.D),e||this.g.resolve(s))}_(t){const s=this.R;s===navigator.serviceWorker.controller&&(this.dispatchEvent(new n("controlling",{sw:s,originalEvent:t})),this.u.resolve(s))}m(t){const{data:s}=t;this.dispatchEvent(new n("message",{data:s,originalEvent:t}))}}export{o as Workbox,t as messageSW}; -//# sourceMappingURL=workbox-window.prod.mjs.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.prod.mjs.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.prod.mjs.map deleted file mode 100644 index e4febb099..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.prod.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-window.prod.mjs","sources":["../_version.mjs","../messageSW.mjs","../../workbox-core/_version.mjs","../../workbox-core/_private/Deferred.mjs","../utils/EventTargetShim.mjs","../utils/urlsMatch.mjs","../utils/WorkboxEvent.mjs","../Workbox.mjs"],"sourcesContent":["try{self['workbox:window:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport './_version.mjs';\n\n\n/**\n * Sends a data object to a service worker via `postMessage` and resolves with\n * a response (if any).\n *\n * A response can be set in a message handler in the service worker by\n * calling `event.ports[0].postMessage(...)`, which will resolve the promise\n * returned by `messageSW()`. If no response is set, the promise will not\n * resolve.\n *\n * @param {ServiceWorker} sw The service worker to send the message to.\n * @param {Object} data An object to send to the service worker.\n * @return {Promise}\n *\n * @memberof module:workbox-window\n */\nconst messageSW = (sw, data) => {\n return new Promise((resolve) => {\n let messageChannel = new MessageChannel();\n messageChannel.port1.onmessage = (evt) => resolve(evt.data);\n sw.postMessage(data, [messageChannel.port2]);\n });\n};\n\nexport {messageSW};\n","try{self['workbox:core:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\n/**\n * The Deferred class composes Promises in a way that allows for them to be\n * resolved or rejected from outside the constructor. In most cases promises\n * should be used directly, but Deferreds can be necessary when the logic to\n * resolve a promise must be separate.\n *\n * @private\n */\nexport class Deferred {\n /**\n * Creates a promise and exposes its resolve and reject functions as methods.\n */\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\n/**\n * A minimal `EventTarget` shim.\n * This is necessary because not all browsers support constructable\n * `EventTarget`, so using a real `EventTarget` will error.\n * @private\n */\nclass EventTargetShim {\n /**\n * Creates an event listener registry\n *\n * @private\n */\n constructor() {\n // A registry of event types to listeners.\n this._eventListenerRegistry = {};\n }\n /**\n * @param {string} type\n * @param {Function} listener\n * @private\n */\n addEventListener(type, listener) {\n this._getEventListenersByType(type).add(listener);\n }\n\n /**\n * @param {string} type\n * @param {Function} listener\n * @private\n */\n removeEventListener(type, listener) {\n this._getEventListenersByType(type).delete(listener);\n }\n\n /**\n * @param {Event} event\n * @private\n */\n dispatchEvent(event) {\n event.target = this;\n this._getEventListenersByType(event.type).forEach(\n (listener) => listener(event));\n }\n\n /**\n * Returns a Set of listeners associated with the passed event type.\n * If no handlers have been registered, an empty Set is returned.\n *\n * @param {string} type The event type.\n * @return {Set} An array of handler functions.\n * @private\n */\n _getEventListenersByType(type) {\n return this._eventListenerRegistry[type] =\n (this._eventListenerRegistry[type] || new Set());\n }\n}\n\nexport {EventTargetShim};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\n/**\n * Returns true if two URLs have the same `.href` property. The URLS can be\n * relative, and if they are the current location href is used to resolve URLs.\n *\n * @private\n * @param {string} url1\n * @param {string} url2\n * @return {boolean}\n */\nconst urlsMatch = (url1, url2) => {\n return new URL(url1, location).href === new URL(url2, location).href;\n};\n\nexport {urlsMatch};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n/**\n * A minimal `Event` subclass shim.\n * This doesn't *actually* subclass `Event` because not all browsers support\n * constructable `EventTarget`, and using a real `Event` will error.\n * @private\n */\nclass WorkboxEvent {\n /**\n * @param {string} type\n * @param {Object} props\n */\n constructor(type, props) {\n Object.assign(this, props, {type});\n }\n}\n\nexport {WorkboxEvent};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {Deferred} from 'workbox-core/_private/Deferred.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {messageSW} from './messageSW.mjs';\nimport {EventTargetShim} from './utils/EventTargetShim.mjs';\nimport {urlsMatch} from './utils/urlsMatch.mjs';\nimport {WorkboxEvent} from './utils/WorkboxEvent.mjs';\nimport './_version.mjs';\n\n\n// The time a SW must be in the waiting phase before we can conclude\n// `skipWaiting()` wasn't called. This 200 amount wasn't scientifically\n// chosen, but it seems to avoid false positives in my testing.\nconst WAITING_TIMEOUT_DURATION = 200;\n\n// The amount of time after a registration that we can reasonably conclude\n// that the registration didn't trigger an update.\nconst REGISTRATION_TIMEOUT_DURATION = 60000;\n\n/**\n * A class to aid in handling service worker registration, updates, and\n * reacting to service worker lifecycle events.\n *\n * @fires [message]{@link module:workbox-window.Workbox#message}\n * @fires [installed]{@link module:workbox-window.Workbox#installed}\n * @fires [waiting]{@link module:workbox-window.Workbox#waiting}\n * @fires [controlling]{@link module:workbox-window.Workbox#controlling}\n * @fires [activated]{@link module:workbox-window.Workbox#activated}\n * @fires [redundant]{@link module:workbox-window.Workbox#redundant}\n * @fires [externalinstalled]{@link module:workbox-window.Workbox#externalinstalled}\n * @fires [externalwaiting]{@link module:workbox-window.Workbox#externalwaiting}\n * @fires [externalactivated]{@link module:workbox-window.Workbox#externalactivated}\n *\n * @memberof module:workbox-window\n */\nclass Workbox extends EventTargetShim {\n /**\n * Creates a new Workbox instance with a script URL and service worker\n * options. The script URL and options are the same as those used when\n * calling `navigator.serviceWorker.register(scriptURL, options)`. See:\n * https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/register\n *\n * @param {string} scriptURL The service worker script associated with this\n * instance.\n * @param {Object} [registerOptions] The service worker options associated\n * with this instance.\n */\n constructor(scriptURL, registerOptions = {}) {\n super();\n\n this._scriptURL = scriptURL;\n this._registerOptions = registerOptions;\n this._updateFoundCount = 0;\n\n // Deferreds we can resolve later.\n this._swDeferred = new Deferred();\n this._activeDeferred = new Deferred();\n this._controllingDeferred = new Deferred();\n\n // Bind event handler callbacks.\n this._onMessage = this._onMessage.bind(this);\n this._onStateChange = this._onStateChange.bind(this);\n this._onUpdateFound = this._onUpdateFound.bind(this);\n this._onControllerChange = this._onControllerChange.bind(this);\n }\n\n /**\n * Registers a service worker for this instances script URL and service\n * worker options. By default this method delays registration until after\n * the window has loaded.\n *\n * @param {Object} [options]\n * @param {Function} [options.immediate=false] Setting this to true will\n * register the service worker immediately, even if the window has\n * not loaded (not recommended).\n */\n async register({immediate = false} = {}) {\n if (process.env.NODE_ENV !== 'production') {\n if (this._registrationTime) {\n logger.error('Cannot re-register a Workbox instance after it has ' +\n 'been registered. Create a new instance instead.');\n return;\n }\n }\n\n if (!immediate && document.readyState !== 'complete') {\n await new Promise((res) => addEventListener('load', res));\n }\n\n // Set this flag to true if any service worker was controlling the page\n // at registration time.\n this._isUpdate = Boolean(navigator.serviceWorker.controller);\n\n // Before registering, attempt to determine if a SW is already controlling\n // the page, and if that SW script (and version, if specified) matches this\n // instance's script.\n this._compatibleControllingSW = this._getControllingSWIfCompatible();\n\n this._registration = await this._registerScript();\n\n // If we have a compatible controller, store the controller as the \"own\"\n // SW, resolve active/controlling deferreds and add necessary listeners.\n if (this._compatibleControllingSW) {\n this._sw = this._compatibleControllingSW;\n this._activeDeferred.resolve(this._compatibleControllingSW);\n this._controllingDeferred.resolve(this._compatibleControllingSW);\n\n this._reportWindowReady(this._compatibleControllingSW);\n this._compatibleControllingSW.addEventListener(\n 'statechange', this._onStateChange, {once: true});\n }\n\n // If there's a waiting service worker with a matching URL before the\n // `updatefound` event fires, it likely means that this site is open\n // in another tab, or the user refreshed the page (and thus the prevoius\n // page wasn't fully unloaded before this page started loading).\n // https://developers.google.com/web/fundamentals/primers/service-workers/lifecycle#waiting\n const waitingSW = this._registration.waiting;\n if (waitingSW && urlsMatch(waitingSW.scriptURL, this._scriptURL)) {\n // Store the waiting SW as the \"own\" Sw, even if it means overwriting\n // a compatible controller.\n this._sw = waitingSW;\n\n // Run this in the next microtask, so any code that adds an event\n // listener after awaiting `register()` will get this event.\n Promise.resolve().then(() => {\n this.dispatchEvent(new WorkboxEvent('waiting', {\n sw: waitingSW,\n wasWaitingBeforeRegister: true,\n }));\n if (process.env.NODE_ENV !== 'production') {\n logger.warn('A service worker was already waiting to activate ' +\n 'before this script was registered...');\n }\n });\n }\n\n // If an \"own\" SW is already set, resolve the deferred.\n if (this._sw) {\n this._swDeferred.resolve(this._sw);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Successfully registered service worker.', this._scriptURL);\n\n if (navigator.serviceWorker.controller) {\n if (this._compatibleControllingSW) {\n logger.debug('A service worker with the same script URL ' +\n 'is already controlling this page.');\n } else {\n logger.debug('A service worker with a different script URL is ' +\n 'currently controlling the page. The browser is now fetching ' +\n 'the new script now...');\n }\n }\n\n const currentPageIsOutOfScope = () => {\n const scopeURL = new URL(\n this._registerOptions.scope || this._scriptURL, document.baseURI);\n const scopeURLBasePath = new URL('./', scopeURL.href).pathname;\n return !location.pathname.startsWith(scopeURLBasePath);\n };\n if (currentPageIsOutOfScope()) {\n logger.warn('The current page is not in scope for the registered ' +\n 'service worker. Was this a mistake?');\n }\n }\n\n this._registration.addEventListener('updatefound', this._onUpdateFound);\n navigator.serviceWorker.addEventListener(\n 'controllerchange', this._onControllerChange, {once: true});\n\n // Add message listeners.\n if ('BroadcastChannel' in self) {\n this._broadcastChannel = new BroadcastChannel('workbox');\n this._broadcastChannel.addEventListener('message', this._onMessage);\n }\n navigator.serviceWorker.addEventListener('message', this._onMessage);\n\n return this._registration;\n }\n\n /**\n * Resolves to the service worker registered by this instance as soon as it\n * is active. If a service worker was already controlling at registration\n * time then it will resolve to that if the script URLs (and optionally\n * script versions) match, otherwise it will wait until an update is found\n * and activates.\n *\n * @return {Promise}\n */\n get active() {\n return this._activeDeferred.promise;\n }\n\n /**\n * Resolves to the service worker registered by this instance as soon as it\n * is controlling the page. If a service worker was already controlling at\n * registration time then it will resolve to that if the script URLs (and\n * optionally script versions) match, otherwise it will wait until an update\n * is found and starts controlling the page.\n * Note: the first time a service worker is installed it will active but\n * not start controlling the page unless `clients.claim()` is called in the\n * service worker.\n *\n * @return {Promise}\n */\n get controlling() {\n return this._controllingDeferred.promise;\n }\n\n /**\n * Resolves with a reference to a service worker that matches the script URL\n * of this instance, as soon as it's available.\n *\n * If, at registration time, there's already an active or waiting service\n * worker with a matching script URL, it will be used (with the waiting\n * service worker taking precedence over the active service worker if both\n * match, since the waiting service worker would have been registered more\n * recently).\n * If there's no matching active or waiting service worker at registration\n * time then the promise will not resolve until an update is found and starts\n * installing, at which point the installing service worker is used.\n *\n * @return {Promise}\n */\n async getSW() {\n // If `this._sw` is set, resolve with that as we want `getSW()` to\n // return the correct (new) service worker if an update is found.\n return this._sw || this._swDeferred.promise;\n }\n\n /**\n * Sends the passed data object to the service worker registered by this\n * instance (via [`getSW()`]{@link module:workbox-window.Workbox#getSW}) and resolves\n * with a response (if any).\n *\n * A response can be set in a message handler in the service worker by\n * calling `event.ports[0].postMessage(...)`, which will resolve the promise\n * returned by `messageSW()`. If no response is set, the promise will never\n * resolve.\n *\n * @param {Object} data An object to send to the service worker\n * @return {Promise}\n */\n async messageSW(data) {\n const sw = await this.getSW();\n return messageSW(sw, data);\n }\n\n /**\n * Checks for a service worker already controlling the page and returns\n * it if its script URL matchs.\n *\n * @private\n * @return {ServiceWorker|undefined}\n */\n _getControllingSWIfCompatible() {\n const controller = navigator.serviceWorker.controller;\n if (controller && urlsMatch(controller.scriptURL, this._scriptURL)) {\n return controller;\n }\n }\n\n /**\n * Registers a service worker for this instances script URL and register\n * options and tracks the time registration was complete.\n *\n * @private\n */\n async _registerScript() {\n try {\n const reg = await navigator.serviceWorker.register(\n this._scriptURL, this._registerOptions);\n\n // Keep track of when registration happened, so it can be used in the\n // `this._onUpdateFound` heuristic. Also use the presence of this\n // property as a way to see if `.register()` has been called.\n this._registrationTime = performance.now();\n\n return reg;\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(error);\n }\n // Re-throw the error.\n throw error;\n }\n }\n\n\n /**\n * Sends a message to the passed service worker that the window is ready.\n *\n * @param {ServiceWorker} sw\n * @private\n */\n _reportWindowReady(sw) {\n messageSW(sw, {\n type: 'WINDOW_READY',\n meta: 'workbox-window',\n });\n }\n\n /**\n * @private\n */\n _onUpdateFound() {\n const installingSW = this._registration.installing;\n\n // If the script URL passed to `navigator.serviceWorker.register()` is\n // different from the current controlling SW's script URL, we know any\n // successful registration calls will trigger an `updatefound` event.\n // But if the registered script URL is the same as the current controlling\n // SW's script URL, we'll only get an `updatefound` event if the file\n // changed since it was last registered. This can be a problem if the user\n // opens up the same page in a different tab, and that page registers\n // a SW that triggers an update. It's a problem because this page has no\n // good way of knowing whether the `updatefound` event came from the SW\n // script it registered or from a registration attempt made by a newer\n // version of the page running in another tab.\n // To minimize the possibility of a false positive, we use the logic here:\n let updateLikelyTriggeredExternally =\n // Since we enforce only calling `register()` once, and since we don't\n // add the `updatefound` event listener until the `register()` call, if\n // `_updateFoundCount` is > 0 then it means this method has already\n // been called, thus this SW must be external\n this._updateFoundCount > 0 ||\n // If the script URL of the installing SW is different from this\n // instance's script URL, we know it's definitely not from our\n // registration.\n !urlsMatch(installingSW.scriptURL, this._scriptURL) ||\n // If all of the above are false, then we use a time-based heuristic:\n // Any `updatefound` event that occurs long after our registration is\n // assumed to be external.\n (performance.now() >\n this._registrationTime + REGISTRATION_TIMEOUT_DURATION) ?\n // If any of the above are not true, we assume the update was\n // triggered by this instance.\n true : false;\n\n if (updateLikelyTriggeredExternally) {\n this._externalSW = installingSW;\n this._registration.removeEventListener(\n 'updatefound', this._onUpdateFound);\n } else {\n // If the update was not triggered externally we know the installing\n // SW is the one we registered, so we set it.\n this._sw = installingSW;\n this._swDeferred.resolve(installingSW);\n\n // The `installing` state isn't something we have a dedicated\n // callback for, but we do log messages for it in development.\n if (process.env.NODE_ENV !== 'production') {\n if (navigator.serviceWorker.controller) {\n logger.log('Updated service worker found. Installing now...');\n } else {\n logger.log('Service worker is installing...');\n }\n }\n }\n\n // Increment the `updatefound` count, so future invocations of this\n // method can be sure they were triggered externally.\n ++this._updateFoundCount;\n\n // Add a `statechange` listener regardless of whether this update was\n // triggered externally, since we have callbacks for both.\n installingSW.addEventListener('statechange', this._onStateChange);\n }\n\n /**\n * @private\n * @param {Event} originalEvent\n */\n _onStateChange(originalEvent) {\n const sw = originalEvent.target;\n const {state} = sw;\n const isExternal = sw === this._externalSW;\n const eventPrefix = isExternal ? 'external' : '';\n\n const eventProps = {sw, originalEvent};\n if (!isExternal && this._isUpdate) {\n eventProps.isUpdate = true;\n }\n\n this.dispatchEvent(new WorkboxEvent(\n eventPrefix + state, eventProps));\n\n if (state === 'installed') {\n // This timeout is used to ignore cases where the service worker calls\n // `skipWaiting()` in the install event, thus moving it directly in the\n // activating state. (Since all service workers *must* go through the\n // waiting phase, the only way to detect `skipWaiting()` called in the\n // install event is to observe that the time spent in the waiting phase\n // is very short.)\n // NOTE: we don't need separate timeouts for the own and external SWs\n // since they can't go through these phases at the same time.\n this._waitingTimeout = setTimeout(() => {\n // Ensure the SW is still waiting (it may now be redundant).\n if (state === 'installed' && this._registration.waiting === sw) {\n this.dispatchEvent(new WorkboxEvent(\n eventPrefix + 'waiting', eventProps));\n\n if (process.env.NODE_ENV !== 'production') {\n if (isExternal) {\n logger.warn('An external service worker has installed but is ' +\n 'waiting for this client to close before activating...');\n } else {\n logger.warn('The service worker has installed but is waiting ' +\n 'for existing clients to close before activating...');\n }\n }\n }\n }, WAITING_TIMEOUT_DURATION);\n } else if (state === 'activating') {\n clearTimeout(this._waitingTimeout);\n if (!isExternal) {\n this._activeDeferred.resolve(sw);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n switch (state) {\n case 'installed':\n if (isExternal) {\n logger.warn('An external service worker has installed. ' +\n 'You may want to suggest users reload this page.');\n } else {\n logger.log('Registered service worker installed.');\n }\n break;\n case 'activated':\n if (isExternal) {\n logger.warn('An external service worker has activated.');\n } else {\n logger.log('Registered service worker activated.');\n if (sw !== navigator.serviceWorker.controller) {\n logger.warn('The registered service worker is active but ' +\n 'not yet controlling the page. Reload or run ' +\n '`clients.claim()` in the service worker.');\n }\n }\n break;\n case 'redundant':\n if (sw === this._compatibleControllingSW) {\n logger.log('Previously controlling service worker now redundant!');\n } else if (!isExternal) {\n logger.log('Registered service worker now redundant!');\n }\n break;\n }\n }\n }\n\n /**\n * @private\n * @param {Event} originalEvent\n */\n _onControllerChange(originalEvent) {\n const sw = this._sw;\n if (sw === navigator.serviceWorker.controller) {\n this.dispatchEvent(new WorkboxEvent('controlling', {sw, originalEvent}));\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Registered service worker now controlling this page.');\n }\n this._controllingDeferred.resolve(sw);\n }\n }\n\n /**\n * @private\n * @param {Event} originalEvent\n */\n _onMessage(originalEvent) {\n const {data} = originalEvent;\n this.dispatchEvent(new WorkboxEvent('message', {data, originalEvent}));\n }\n}\n\n// The jsdoc comments below outline the events this instance may dispatch:\n// -----------------------------------------------------------------------\n\n/**\n * The `message` event is dispatched any time a `postMessage` (or a\n * `BroadcastChannel` message with the `workbox` channel name) is received.\n *\n * @event module:workbox-window.Workbox#message\n * @type {WorkboxEvent}\n * @property {*} data The `data` property from the original `message` event.\n * @property {Event} originalEvent The original [`message`]{@link https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent}\n * event.\n * @property {string} type `message`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `installed` event is dispatched if the state of a\n * [`Workbox`]{@link module:workbox-window.Workbox} instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}\n * changes to `installed`.\n *\n * Then can happen either the very first time a service worker is installed,\n * or after an update to the current service worker is found. In the case\n * of an update being found, the event's `isUpdate` property will be `true`.\n *\n * @event module:workbox-window.Workbox#installed\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this `Workbox` instance called `register()`.\n * @property {string} type `installed`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `waiting` event is dispatched if the state of a\n * [`Workbox`]{@link module:workbox-window.Workbox} instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}\n * changes to `installed` and then doesn't immediately change to `activating`.\n * It may also be dispatched if a service worker with the same\n * [`scriptURL`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/scriptURL}\n * was already waiting when the [`register()`]{@link module:workbox-window.Workbox#register}\n * method was called.\n *\n * @event module:workbox-window.Workbox#waiting\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The native `controllerchange` event\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this `Workbox` instance called `register()`.\n * @property {boolean|undefined} wasWaitingBeforeRegister True if a service worker with\n * a matching `scriptURL` was already waiting when this `Workbox`\n * instance called `register()`.\n * @property {string} type `waiting`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `controlling` event is dispatched if a\n * [`controllerchange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/oncontrollerchange}\n * fires on the service worker [container]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer}\n * and the [`scriptURL`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/scriptURL}\n * of the new [controller]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/controller}\n * matches the `scriptURL` of the `Workbox` instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}.\n *\n * @event module:workbox-window.Workbox#controlling\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`controllerchange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/oncontrollerchange}\n * event.\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this service worker was registered.\n * @property {string} type `controlling`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `activated` event is dispatched if the state of a\n * [`Workbox`]{@link module:workbox-window.Workbox} instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}\n * changes to `activated`.\n *\n * @event module:workbox-window.Workbox#activated\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this `Workbox` instance called `register()`.\n * @property {string} type `activated`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `redundant` event is dispatched if the state of a\n * [`Workbox`]{@link module:workbox-window.Workbox} instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}\n * changes to `redundant`.\n *\n * @event module:workbox-window.Workbox#redundant\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this `Workbox` instance called `register()`.\n * @property {string} type `redundant`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `externalinstalled` event is dispatched if the state of an\n * [external service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-external-sw}\n * changes to `installed`.\n *\n * @event module:workbox-window.Workbox#externalinstalled\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {string} type `externalinstalled`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `externalwaiting` event is dispatched if the state of an\n * [external service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-external-sw}\n * changes to `waiting`.\n *\n * @event module:workbox-window.Workbox#externalwaiting\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event|undefined} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {string} type `externalwaiting`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `externalactivated` event is dispatched if the state of an\n * [external service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-external-sw}\n * changes to `activated`.\n *\n * @event module:workbox-window.Workbox#externalactivated\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {string} type `externalactivated`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\nexport {Workbox};\n"],"names":["self","_","e","messageSW","sw","data","Promise","resolve","messageChannel","MessageChannel","port1","onmessage","evt","postMessage","port2","Deferred","constructor","promise","reject","EventTargetShim","_eventListenerRegistry","addEventListener","type","listener","_getEventListenersByType","add","removeEventListener","delete","dispatchEvent","event","target","this","forEach","Set","urlsMatch","url1","url2","URL","location","href","WorkboxEvent","props","Object","assign","WAITING_TIMEOUT_DURATION","REGISTRATION_TIMEOUT_DURATION","Workbox","scriptURL","registerOptions","_scriptURL","_registerOptions","_updateFoundCount","_swDeferred","_activeDeferred","_controllingDeferred","_onMessage","bind","_onStateChange","_onUpdateFound","_onControllerChange","immediate","document","readyState","res","_isUpdate","Boolean","navigator","serviceWorker","controller","_compatibleControllingSW","_getControllingSWIfCompatible","_registration","_registerScript","_sw","_reportWindowReady","once","waitingSW","waiting","then","wasWaitingBeforeRegister","_broadcastChannel","BroadcastChannel","getSW","reg","register","_registrationTime","performance","now","error","meta","installingSW","installing","_externalSW","originalEvent","state","isExternal","eventPrefix","eventProps","isUpdate","_waitingTimeout","setTimeout","clearTimeout"],"mappings":"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"} \ No newline at end of file diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.prod.umd.js b/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.prod.umd.js deleted file mode 100644 index 173c4b43f..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.prod.umd.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((n=n||self).workbox={})}(this,function(n){"use strict";try{self["workbox:window:4.3.1"]&&_()}catch(n){}var t=function(n,t){return new Promise(function(i){var e=new MessageChannel;e.port1.onmessage=function(n){return i(n.data)},n.postMessage(t,[e.port2])})};function i(n,t){for(var i=0;i0||!o(n.scriptURL,this.t)||performance.now()>this.C+6e4?(this.L=n,this.R.removeEventListener("updatefound",this.g)):(this._=n,this.u.resolve(n)),++this.o,n.addEventListener("statechange",this.l)},g.l=function(n){var t=this,i=n.target,e=i.state,r=i===this.L,o=r?"external":"",s={sw:i,originalEvent:n};!r&&this.p&&(s.isUpdate=!0),this.dispatchEvent(new u(o+e,s)),"installed"===e?this.W=setTimeout(function(){"installed"===e&&t.R.waiting===i&&t.dispatchEvent(new u(o+"waiting",s))},200):"activating"===e&&(clearTimeout(this.W),r||this.s.resolve(i))},g.m=function(n){var t=this._;t===navigator.serviceWorker.controller&&(this.dispatchEvent(new u("controlling",{sw:t,originalEvent:n})),this.h.resolve(t))},g.v=function(n){var t=n.data;this.dispatchEvent(new u("message",{data:t,originalEvent:n}))},l=v,(w=[{key:"active",get:function(){return this.s.promise}},{key:"controlling",get:function(){return this.h.promise}}])&&i(l.prototype,w),d&&i(l,d),v}(function(){function n(){this.D={}}var t=n.prototype;return t.addEventListener=function(n,t){this.M(n).add(t)},t.removeEventListener=function(n,t){this.M(n).delete(t)},t.dispatchEvent=function(n){n.target=this,this.M(n.type).forEach(function(t){return t(n)})},t.M=function(n){return this.D[n]=this.D[n]||new Set},n}());n.Workbox=f,n.messageSW=t,Object.defineProperty(n,"__esModule",{value:!0})}); -//# sourceMappingURL=workbox-window.prod.umd.js.map diff --git a/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.prod.umd.js.map b/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.prod.umd.js.map deleted file mode 100644 index 67eaa1d9c..000000000 --- a/pr-preview/pr-1029/workbox-v4.3.1/workbox-window.prod.umd.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-window.prod.umd.js","sources":["../_version.mjs","../messageSW.mjs","../../workbox-core/_version.mjs","../../workbox-core/_private/Deferred.mjs","../utils/urlsMatch.mjs","../utils/WorkboxEvent.mjs","../Workbox.mjs","../utils/EventTargetShim.mjs"],"sourcesContent":["try{self['workbox:window:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport './_version.mjs';\n\n\n/**\n * Sends a data object to a service worker via `postMessage` and resolves with\n * a response (if any).\n *\n * A response can be set in a message handler in the service worker by\n * calling `event.ports[0].postMessage(...)`, which will resolve the promise\n * returned by `messageSW()`. If no response is set, the promise will not\n * resolve.\n *\n * @param {ServiceWorker} sw The service worker to send the message to.\n * @param {Object} data An object to send to the service worker.\n * @return {Promise}\n *\n * @memberof module:workbox-window\n */\nconst messageSW = (sw, data) => {\n return new Promise((resolve) => {\n let messageChannel = new MessageChannel();\n messageChannel.port1.onmessage = (evt) => resolve(evt.data);\n sw.postMessage(data, [messageChannel.port2]);\n });\n};\n\nexport {messageSW};\n","try{self['workbox:core:4.3.1']&&_()}catch(e){}// eslint-disable-line","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\n/**\n * The Deferred class composes Promises in a way that allows for them to be\n * resolved or rejected from outside the constructor. In most cases promises\n * should be used directly, but Deferreds can be necessary when the logic to\n * resolve a promise must be separate.\n *\n * @private\n */\nexport class Deferred {\n /**\n * Creates a promise and exposes its resolve and reject functions as methods.\n */\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\n/**\n * Returns true if two URLs have the same `.href` property. The URLS can be\n * relative, and if they are the current location href is used to resolve URLs.\n *\n * @private\n * @param {string} url1\n * @param {string} url2\n * @return {boolean}\n */\nconst urlsMatch = (url1, url2) => {\n return new URL(url1, location).href === new URL(url2, location).href;\n};\n\nexport {urlsMatch};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n/**\n * A minimal `Event` subclass shim.\n * This doesn't *actually* subclass `Event` because not all browsers support\n * constructable `EventTarget`, and using a real `Event` will error.\n * @private\n */\nclass WorkboxEvent {\n /**\n * @param {string} type\n * @param {Object} props\n */\n constructor(type, props) {\n Object.assign(this, props, {type});\n }\n}\n\nexport {WorkboxEvent};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport {Deferred} from 'workbox-core/_private/Deferred.mjs';\nimport {logger} from 'workbox-core/_private/logger.mjs';\nimport {messageSW} from './messageSW.mjs';\nimport {EventTargetShim} from './utils/EventTargetShim.mjs';\nimport {urlsMatch} from './utils/urlsMatch.mjs';\nimport {WorkboxEvent} from './utils/WorkboxEvent.mjs';\nimport './_version.mjs';\n\n\n// The time a SW must be in the waiting phase before we can conclude\n// `skipWaiting()` wasn't called. This 200 amount wasn't scientifically\n// chosen, but it seems to avoid false positives in my testing.\nconst WAITING_TIMEOUT_DURATION = 200;\n\n// The amount of time after a registration that we can reasonably conclude\n// that the registration didn't trigger an update.\nconst REGISTRATION_TIMEOUT_DURATION = 60000;\n\n/**\n * A class to aid in handling service worker registration, updates, and\n * reacting to service worker lifecycle events.\n *\n * @fires [message]{@link module:workbox-window.Workbox#message}\n * @fires [installed]{@link module:workbox-window.Workbox#installed}\n * @fires [waiting]{@link module:workbox-window.Workbox#waiting}\n * @fires [controlling]{@link module:workbox-window.Workbox#controlling}\n * @fires [activated]{@link module:workbox-window.Workbox#activated}\n * @fires [redundant]{@link module:workbox-window.Workbox#redundant}\n * @fires [externalinstalled]{@link module:workbox-window.Workbox#externalinstalled}\n * @fires [externalwaiting]{@link module:workbox-window.Workbox#externalwaiting}\n * @fires [externalactivated]{@link module:workbox-window.Workbox#externalactivated}\n *\n * @memberof module:workbox-window\n */\nclass Workbox extends EventTargetShim {\n /**\n * Creates a new Workbox instance with a script URL and service worker\n * options. The script URL and options are the same as those used when\n * calling `navigator.serviceWorker.register(scriptURL, options)`. See:\n * https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/register\n *\n * @param {string} scriptURL The service worker script associated with this\n * instance.\n * @param {Object} [registerOptions] The service worker options associated\n * with this instance.\n */\n constructor(scriptURL, registerOptions = {}) {\n super();\n\n this._scriptURL = scriptURL;\n this._registerOptions = registerOptions;\n this._updateFoundCount = 0;\n\n // Deferreds we can resolve later.\n this._swDeferred = new Deferred();\n this._activeDeferred = new Deferred();\n this._controllingDeferred = new Deferred();\n\n // Bind event handler callbacks.\n this._onMessage = this._onMessage.bind(this);\n this._onStateChange = this._onStateChange.bind(this);\n this._onUpdateFound = this._onUpdateFound.bind(this);\n this._onControllerChange = this._onControllerChange.bind(this);\n }\n\n /**\n * Registers a service worker for this instances script URL and service\n * worker options. By default this method delays registration until after\n * the window has loaded.\n *\n * @param {Object} [options]\n * @param {Function} [options.immediate=false] Setting this to true will\n * register the service worker immediately, even if the window has\n * not loaded (not recommended).\n */\n async register({immediate = false} = {}) {\n if (process.env.NODE_ENV !== 'production') {\n if (this._registrationTime) {\n logger.error('Cannot re-register a Workbox instance after it has ' +\n 'been registered. Create a new instance instead.');\n return;\n }\n }\n\n if (!immediate && document.readyState !== 'complete') {\n await new Promise((res) => addEventListener('load', res));\n }\n\n // Set this flag to true if any service worker was controlling the page\n // at registration time.\n this._isUpdate = Boolean(navigator.serviceWorker.controller);\n\n // Before registering, attempt to determine if a SW is already controlling\n // the page, and if that SW script (and version, if specified) matches this\n // instance's script.\n this._compatibleControllingSW = this._getControllingSWIfCompatible();\n\n this._registration = await this._registerScript();\n\n // If we have a compatible controller, store the controller as the \"own\"\n // SW, resolve active/controlling deferreds and add necessary listeners.\n if (this._compatibleControllingSW) {\n this._sw = this._compatibleControllingSW;\n this._activeDeferred.resolve(this._compatibleControllingSW);\n this._controllingDeferred.resolve(this._compatibleControllingSW);\n\n this._reportWindowReady(this._compatibleControllingSW);\n this._compatibleControllingSW.addEventListener(\n 'statechange', this._onStateChange, {once: true});\n }\n\n // If there's a waiting service worker with a matching URL before the\n // `updatefound` event fires, it likely means that this site is open\n // in another tab, or the user refreshed the page (and thus the prevoius\n // page wasn't fully unloaded before this page started loading).\n // https://developers.google.com/web/fundamentals/primers/service-workers/lifecycle#waiting\n const waitingSW = this._registration.waiting;\n if (waitingSW && urlsMatch(waitingSW.scriptURL, this._scriptURL)) {\n // Store the waiting SW as the \"own\" Sw, even if it means overwriting\n // a compatible controller.\n this._sw = waitingSW;\n\n // Run this in the next microtask, so any code that adds an event\n // listener after awaiting `register()` will get this event.\n Promise.resolve().then(() => {\n this.dispatchEvent(new WorkboxEvent('waiting', {\n sw: waitingSW,\n wasWaitingBeforeRegister: true,\n }));\n if (process.env.NODE_ENV !== 'production') {\n logger.warn('A service worker was already waiting to activate ' +\n 'before this script was registered...');\n }\n });\n }\n\n // If an \"own\" SW is already set, resolve the deferred.\n if (this._sw) {\n this._swDeferred.resolve(this._sw);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Successfully registered service worker.', this._scriptURL);\n\n if (navigator.serviceWorker.controller) {\n if (this._compatibleControllingSW) {\n logger.debug('A service worker with the same script URL ' +\n 'is already controlling this page.');\n } else {\n logger.debug('A service worker with a different script URL is ' +\n 'currently controlling the page. The browser is now fetching ' +\n 'the new script now...');\n }\n }\n\n const currentPageIsOutOfScope = () => {\n const scopeURL = new URL(\n this._registerOptions.scope || this._scriptURL, document.baseURI);\n const scopeURLBasePath = new URL('./', scopeURL.href).pathname;\n return !location.pathname.startsWith(scopeURLBasePath);\n };\n if (currentPageIsOutOfScope()) {\n logger.warn('The current page is not in scope for the registered ' +\n 'service worker. Was this a mistake?');\n }\n }\n\n this._registration.addEventListener('updatefound', this._onUpdateFound);\n navigator.serviceWorker.addEventListener(\n 'controllerchange', this._onControllerChange, {once: true});\n\n // Add message listeners.\n if ('BroadcastChannel' in self) {\n this._broadcastChannel = new BroadcastChannel('workbox');\n this._broadcastChannel.addEventListener('message', this._onMessage);\n }\n navigator.serviceWorker.addEventListener('message', this._onMessage);\n\n return this._registration;\n }\n\n /**\n * Resolves to the service worker registered by this instance as soon as it\n * is active. If a service worker was already controlling at registration\n * time then it will resolve to that if the script URLs (and optionally\n * script versions) match, otherwise it will wait until an update is found\n * and activates.\n *\n * @return {Promise}\n */\n get active() {\n return this._activeDeferred.promise;\n }\n\n /**\n * Resolves to the service worker registered by this instance as soon as it\n * is controlling the page. If a service worker was already controlling at\n * registration time then it will resolve to that if the script URLs (and\n * optionally script versions) match, otherwise it will wait until an update\n * is found and starts controlling the page.\n * Note: the first time a service worker is installed it will active but\n * not start controlling the page unless `clients.claim()` is called in the\n * service worker.\n *\n * @return {Promise}\n */\n get controlling() {\n return this._controllingDeferred.promise;\n }\n\n /**\n * Resolves with a reference to a service worker that matches the script URL\n * of this instance, as soon as it's available.\n *\n * If, at registration time, there's already an active or waiting service\n * worker with a matching script URL, it will be used (with the waiting\n * service worker taking precedence over the active service worker if both\n * match, since the waiting service worker would have been registered more\n * recently).\n * If there's no matching active or waiting service worker at registration\n * time then the promise will not resolve until an update is found and starts\n * installing, at which point the installing service worker is used.\n *\n * @return {Promise}\n */\n async getSW() {\n // If `this._sw` is set, resolve with that as we want `getSW()` to\n // return the correct (new) service worker if an update is found.\n return this._sw || this._swDeferred.promise;\n }\n\n /**\n * Sends the passed data object to the service worker registered by this\n * instance (via [`getSW()`]{@link module:workbox-window.Workbox#getSW}) and resolves\n * with a response (if any).\n *\n * A response can be set in a message handler in the service worker by\n * calling `event.ports[0].postMessage(...)`, which will resolve the promise\n * returned by `messageSW()`. If no response is set, the promise will never\n * resolve.\n *\n * @param {Object} data An object to send to the service worker\n * @return {Promise}\n */\n async messageSW(data) {\n const sw = await this.getSW();\n return messageSW(sw, data);\n }\n\n /**\n * Checks for a service worker already controlling the page and returns\n * it if its script URL matchs.\n *\n * @private\n * @return {ServiceWorker|undefined}\n */\n _getControllingSWIfCompatible() {\n const controller = navigator.serviceWorker.controller;\n if (controller && urlsMatch(controller.scriptURL, this._scriptURL)) {\n return controller;\n }\n }\n\n /**\n * Registers a service worker for this instances script URL and register\n * options and tracks the time registration was complete.\n *\n * @private\n */\n async _registerScript() {\n try {\n const reg = await navigator.serviceWorker.register(\n this._scriptURL, this._registerOptions);\n\n // Keep track of when registration happened, so it can be used in the\n // `this._onUpdateFound` heuristic. Also use the presence of this\n // property as a way to see if `.register()` has been called.\n this._registrationTime = performance.now();\n\n return reg;\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(error);\n }\n // Re-throw the error.\n throw error;\n }\n }\n\n\n /**\n * Sends a message to the passed service worker that the window is ready.\n *\n * @param {ServiceWorker} sw\n * @private\n */\n _reportWindowReady(sw) {\n messageSW(sw, {\n type: 'WINDOW_READY',\n meta: 'workbox-window',\n });\n }\n\n /**\n * @private\n */\n _onUpdateFound() {\n const installingSW = this._registration.installing;\n\n // If the script URL passed to `navigator.serviceWorker.register()` is\n // different from the current controlling SW's script URL, we know any\n // successful registration calls will trigger an `updatefound` event.\n // But if the registered script URL is the same as the current controlling\n // SW's script URL, we'll only get an `updatefound` event if the file\n // changed since it was last registered. This can be a problem if the user\n // opens up the same page in a different tab, and that page registers\n // a SW that triggers an update. It's a problem because this page has no\n // good way of knowing whether the `updatefound` event came from the SW\n // script it registered or from a registration attempt made by a newer\n // version of the page running in another tab.\n // To minimize the possibility of a false positive, we use the logic here:\n let updateLikelyTriggeredExternally =\n // Since we enforce only calling `register()` once, and since we don't\n // add the `updatefound` event listener until the `register()` call, if\n // `_updateFoundCount` is > 0 then it means this method has already\n // been called, thus this SW must be external\n this._updateFoundCount > 0 ||\n // If the script URL of the installing SW is different from this\n // instance's script URL, we know it's definitely not from our\n // registration.\n !urlsMatch(installingSW.scriptURL, this._scriptURL) ||\n // If all of the above are false, then we use a time-based heuristic:\n // Any `updatefound` event that occurs long after our registration is\n // assumed to be external.\n (performance.now() >\n this._registrationTime + REGISTRATION_TIMEOUT_DURATION) ?\n // If any of the above are not true, we assume the update was\n // triggered by this instance.\n true : false;\n\n if (updateLikelyTriggeredExternally) {\n this._externalSW = installingSW;\n this._registration.removeEventListener(\n 'updatefound', this._onUpdateFound);\n } else {\n // If the update was not triggered externally we know the installing\n // SW is the one we registered, so we set it.\n this._sw = installingSW;\n this._swDeferred.resolve(installingSW);\n\n // The `installing` state isn't something we have a dedicated\n // callback for, but we do log messages for it in development.\n if (process.env.NODE_ENV !== 'production') {\n if (navigator.serviceWorker.controller) {\n logger.log('Updated service worker found. Installing now...');\n } else {\n logger.log('Service worker is installing...');\n }\n }\n }\n\n // Increment the `updatefound` count, so future invocations of this\n // method can be sure they were triggered externally.\n ++this._updateFoundCount;\n\n // Add a `statechange` listener regardless of whether this update was\n // triggered externally, since we have callbacks for both.\n installingSW.addEventListener('statechange', this._onStateChange);\n }\n\n /**\n * @private\n * @param {Event} originalEvent\n */\n _onStateChange(originalEvent) {\n const sw = originalEvent.target;\n const {state} = sw;\n const isExternal = sw === this._externalSW;\n const eventPrefix = isExternal ? 'external' : '';\n\n const eventProps = {sw, originalEvent};\n if (!isExternal && this._isUpdate) {\n eventProps.isUpdate = true;\n }\n\n this.dispatchEvent(new WorkboxEvent(\n eventPrefix + state, eventProps));\n\n if (state === 'installed') {\n // This timeout is used to ignore cases where the service worker calls\n // `skipWaiting()` in the install event, thus moving it directly in the\n // activating state. (Since all service workers *must* go through the\n // waiting phase, the only way to detect `skipWaiting()` called in the\n // install event is to observe that the time spent in the waiting phase\n // is very short.)\n // NOTE: we don't need separate timeouts for the own and external SWs\n // since they can't go through these phases at the same time.\n this._waitingTimeout = setTimeout(() => {\n // Ensure the SW is still waiting (it may now be redundant).\n if (state === 'installed' && this._registration.waiting === sw) {\n this.dispatchEvent(new WorkboxEvent(\n eventPrefix + 'waiting', eventProps));\n\n if (process.env.NODE_ENV !== 'production') {\n if (isExternal) {\n logger.warn('An external service worker has installed but is ' +\n 'waiting for this client to close before activating...');\n } else {\n logger.warn('The service worker has installed but is waiting ' +\n 'for existing clients to close before activating...');\n }\n }\n }\n }, WAITING_TIMEOUT_DURATION);\n } else if (state === 'activating') {\n clearTimeout(this._waitingTimeout);\n if (!isExternal) {\n this._activeDeferred.resolve(sw);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n switch (state) {\n case 'installed':\n if (isExternal) {\n logger.warn('An external service worker has installed. ' +\n 'You may want to suggest users reload this page.');\n } else {\n logger.log('Registered service worker installed.');\n }\n break;\n case 'activated':\n if (isExternal) {\n logger.warn('An external service worker has activated.');\n } else {\n logger.log('Registered service worker activated.');\n if (sw !== navigator.serviceWorker.controller) {\n logger.warn('The registered service worker is active but ' +\n 'not yet controlling the page. Reload or run ' +\n '`clients.claim()` in the service worker.');\n }\n }\n break;\n case 'redundant':\n if (sw === this._compatibleControllingSW) {\n logger.log('Previously controlling service worker now redundant!');\n } else if (!isExternal) {\n logger.log('Registered service worker now redundant!');\n }\n break;\n }\n }\n }\n\n /**\n * @private\n * @param {Event} originalEvent\n */\n _onControllerChange(originalEvent) {\n const sw = this._sw;\n if (sw === navigator.serviceWorker.controller) {\n this.dispatchEvent(new WorkboxEvent('controlling', {sw, originalEvent}));\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Registered service worker now controlling this page.');\n }\n this._controllingDeferred.resolve(sw);\n }\n }\n\n /**\n * @private\n * @param {Event} originalEvent\n */\n _onMessage(originalEvent) {\n const {data} = originalEvent;\n this.dispatchEvent(new WorkboxEvent('message', {data, originalEvent}));\n }\n}\n\n// The jsdoc comments below outline the events this instance may dispatch:\n// -----------------------------------------------------------------------\n\n/**\n * The `message` event is dispatched any time a `postMessage` (or a\n * `BroadcastChannel` message with the `workbox` channel name) is received.\n *\n * @event module:workbox-window.Workbox#message\n * @type {WorkboxEvent}\n * @property {*} data The `data` property from the original `message` event.\n * @property {Event} originalEvent The original [`message`]{@link https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent}\n * event.\n * @property {string} type `message`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `installed` event is dispatched if the state of a\n * [`Workbox`]{@link module:workbox-window.Workbox} instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}\n * changes to `installed`.\n *\n * Then can happen either the very first time a service worker is installed,\n * or after an update to the current service worker is found. In the case\n * of an update being found, the event's `isUpdate` property will be `true`.\n *\n * @event module:workbox-window.Workbox#installed\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this `Workbox` instance called `register()`.\n * @property {string} type `installed`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `waiting` event is dispatched if the state of a\n * [`Workbox`]{@link module:workbox-window.Workbox} instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}\n * changes to `installed` and then doesn't immediately change to `activating`.\n * It may also be dispatched if a service worker with the same\n * [`scriptURL`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/scriptURL}\n * was already waiting when the [`register()`]{@link module:workbox-window.Workbox#register}\n * method was called.\n *\n * @event module:workbox-window.Workbox#waiting\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The native `controllerchange` event\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this `Workbox` instance called `register()`.\n * @property {boolean|undefined} wasWaitingBeforeRegister True if a service worker with\n * a matching `scriptURL` was already waiting when this `Workbox`\n * instance called `register()`.\n * @property {string} type `waiting`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `controlling` event is dispatched if a\n * [`controllerchange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/oncontrollerchange}\n * fires on the service worker [container]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer}\n * and the [`scriptURL`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/scriptURL}\n * of the new [controller]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/controller}\n * matches the `scriptURL` of the `Workbox` instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}.\n *\n * @event module:workbox-window.Workbox#controlling\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`controllerchange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/oncontrollerchange}\n * event.\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this service worker was registered.\n * @property {string} type `controlling`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `activated` event is dispatched if the state of a\n * [`Workbox`]{@link module:workbox-window.Workbox} instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}\n * changes to `activated`.\n *\n * @event module:workbox-window.Workbox#activated\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this `Workbox` instance called `register()`.\n * @property {string} type `activated`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `redundant` event is dispatched if the state of a\n * [`Workbox`]{@link module:workbox-window.Workbox} instance's\n * [registered service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-registered-sw}\n * changes to `redundant`.\n *\n * @event module:workbox-window.Workbox#redundant\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {boolean|undefined} isUpdate True if a service worker was already\n * controlling when this `Workbox` instance called `register()`.\n * @property {string} type `redundant`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `externalinstalled` event is dispatched if the state of an\n * [external service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-external-sw}\n * changes to `installed`.\n *\n * @event module:workbox-window.Workbox#externalinstalled\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {string} type `externalinstalled`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `externalwaiting` event is dispatched if the state of an\n * [external service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-external-sw}\n * changes to `waiting`.\n *\n * @event module:workbox-window.Workbox#externalwaiting\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event|undefined} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {string} type `externalwaiting`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\n/**\n * The `externalactivated` event is dispatched if the state of an\n * [external service worker]{@link https://developers.google.com/web/tools/workbox/modules/workbox-precaching#def-external-sw}\n * changes to `activated`.\n *\n * @event module:workbox-window.Workbox#externalactivated\n * @type {WorkboxEvent}\n * @property {ServiceWorker} sw The service worker instance.\n * @property {Event} originalEvent The original [`statechange`]{@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/onstatechange}\n * event.\n * @property {string} type `externalactivated`.\n * @property {Workbox} target The `Workbox` instance.\n */\n\nexport {Workbox};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\n\nimport '../_version.mjs';\n\n\n/**\n * A minimal `EventTarget` shim.\n * This is necessary because not all browsers support constructable\n * `EventTarget`, so using a real `EventTarget` will error.\n * @private\n */\nclass EventTargetShim {\n /**\n * Creates an event listener registry\n *\n * @private\n */\n constructor() {\n // A registry of event types to listeners.\n this._eventListenerRegistry = {};\n }\n /**\n * @param {string} type\n * @param {Function} listener\n * @private\n */\n addEventListener(type, listener) {\n this._getEventListenersByType(type).add(listener);\n }\n\n /**\n * @param {string} type\n * @param {Function} listener\n * @private\n */\n removeEventListener(type, listener) {\n this._getEventListenersByType(type).delete(listener);\n }\n\n /**\n * @param {Event} event\n * @private\n */\n dispatchEvent(event) {\n event.target = this;\n this._getEventListenersByType(event.type).forEach(\n (listener) => listener(event));\n }\n\n /**\n * Returns a Set of listeners associated with the passed event type.\n * If no handlers have been registered, an empty Set is returned.\n *\n * @param {string} type The event type.\n * @return {Set} An array of handler functions.\n * @private\n */\n _getEventListenersByType(type) {\n return this._eventListenerRegistry[type] =\n (this._eventListenerRegistry[type] || new Set());\n }\n}\n\nexport {EventTargetShim};\n"],"names":["self","_","e","messageSW","sw","data","Promise","resolve","messageChannel","MessageChannel","port1","onmessage","evt","postMessage","port2","Deferred","promise","reject","_this","urlsMatch","url1","url2","URL","location","href","WorkboxEvent","type","props","Object","assign","this","f","args","i","arguments","length","apply","value","then","direct","Workbox","scriptURL","registerOptions","_scriptURL","_registerOptions","_updateFoundCount","_swDeferred","_activeDeferred","_controllingDeferred","_onMessage","bind","_onStateChange","_onUpdateFound","_onControllerChange","register","result","immediate","_isUpdate","Boolean","navigator","serviceWorker","controller","_compatibleControllingSW","_this2","_getControllingSWIfCompatible","_registerScript","_registration","_sw","_reportWindowReady","addEventListener","once","waitingSW","waiting","dispatchEvent","wasWaitingBeforeRegister","_broadcastChannel","BroadcastChannel","document","readyState","res","body","getSW","recover","_this5","reg","_registrationTime","performance","now","error","meta","installingSW","installing","_externalSW","removeEventListener","originalEvent","target","state","isExternal","eventPrefix","eventProps","isUpdate","_waitingTimeout","setTimeout","_this6","clearTimeout","_eventListenerRegistry","listener","_getEventListenersByType","add","delete","event","forEach","Set"],"mappings":"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"} \ No newline at end of file

    {`If you happen to have a local `}{`Go`}{` toolchain available, you can build from source using `}{`go install`}{`:`}